first commit

This commit is contained in:
2026-03-10 16:18:05 +00:00
commit 11f9c069b5
31635 changed files with 3187747 additions and 0 deletions

2
node_modules/expo-symbols/.eslintrc.js generated vendored Normal file
View File

@@ -0,0 +1,2 @@
// @generated by expo-module-scripts
module.exports = require('expo-module-scripts/eslintrc.base.js');

167
node_modules/expo-symbols/CHANGELOG.md generated vendored Normal file
View File

@@ -0,0 +1,167 @@
# Changelog
## Unpublished
### 🛠 Breaking changes
### 🎉 New features
### 🐛 Bug fixes
### 💡 Others
## 55.0.5 — 2026-03-05
### 💡 Others
- Add explicit type re-export and return type annotations ([#43562](https://github.com/expo/expo/pull/43562) by [@kitten](https://github.com/kitten))
## 55.0.4 — 2026-02-16
_This version does not introduce any user-facing changes._
## 55.0.3 — 2026-01-27
_This version does not introduce any user-facing changes._
## 55.0.2 — 2026-01-26
_This version does not introduce any user-facing changes._
## 55.0.1 — 2026-01-22
_This version does not introduce any user-facing changes._
## 55.0.0 — 2026-01-21
### 🎉 New features
- [Android] Add support for MaterialSymbol symbols on Android and Web. ([#39516](https://github.com/expo/expo/pull/39516) by [@aleqsio](https://github.com/aleqsio))
- [Android] add unstable_getMaterialSymbolSourceAsync ([#41064](https://github.com/expo/expo/pull/41064) by [@Ubax](https://github.com/Ubax))
### 🐛 Bug fixes
- [Android] Add lineHeight to ensure symbols occupy correct square space. ([#41091](https://github.com/expo/expo/pull/41091) by [@aleqsio](https://github.com/aleqsio))
## 1.0.8 - 2025-12-05
_This version does not introduce any user-facing changes._
## 1.0.7 — 2025-09-11
_This version does not introduce any user-facing changes._
## 1.0.6 — 2025-09-02
_This version does not introduce any user-facing changes._
## 1.0.5 — 2025-08-31
_This version does not introduce any user-facing changes._
## 1.0.4 — 2025-08-27
_This version does not introduce any user-facing changes._
## 1.0.3 — 2025-08-25
_This version does not introduce any user-facing changes._
## 1.0.2 — 2025-08-16
_This version does not introduce any user-facing changes._
## 1.0.1 — 2025-08-15
_This version does not introduce any user-facing changes._
## 1.0.0 — 2025-08-13
### 🐛 Bug fixes
- Suppress `the native view manager isn't exported` warning on Android. ([#38504](https://github.com/expo/expo/pull/38504) by [@lukmccall](https://github.com/lukmccall))
## 0.4.5 - 2025-06-04
### 🐛 Bug fixes
- Use `processColor` to accept all valid color strings. ([#36914](https://github.com/expo/expo/pull/36914) by [@alanjhughes](https://github.com/alanjhughes))
## 0.4.4 — 2025-04-30
_This version does not introduce any user-facing changes._
## 0.4.3 — 2025-04-25
_This version does not introduce any user-facing changes._
## 0.4.2 — 2025-04-14
_This version does not introduce any user-facing changes._
## 0.4.1 — 2025-04-09
_This version does not introduce any user-facing changes._
## 0.4.0 — 2025-04-08
_This version does not introduce any user-facing changes._
## 0.3.0 — 2025-04-04
### 🐛 Bug fixes
- [Android] Fix platform misconfiguration in the `expo-modules.config`. ([#35849](https://github.com/expo/expo/pull/35849) by [@lukmccall](https://github.com/lukmccall))
### 💡 Others
- [apple] Migrate remaining `expo-module.config.json` to unified platform syntax. ([#34445](https://github.com/expo/expo/pull/34445) by [@reichhartd](https://github.com/reichhartd))
- Add PlatformColor to types ([#34890](https://github.com/expo/expo/pull/34890) by [@jakex7](https://github.com/jakex7))
## 0.2.2 - 2025-01-31
### 🐛 Bug fixes
- [iOS] Fix tvOS compilation. ([#34556](https://github.com/expo/expo/pull/34556) by [@douglowder](https://github.com/douglowder))
## 0.2.1 - 2025-01-10
_This version does not introduce any user-facing changes._
## 0.2.0 — 2024-10-22
### 🛠 Breaking changes
- Bumped iOS and tvOS deployment target to 15.1. ([#30840](https://github.com/expo/expo/pull/30840), [#30865](https://github.com/expo/expo/pull/30865) by [@tsapeta](https://github.com/tsapeta))
## 0.1.5 - 2024-08-24
### 🐛 Bug fixes
- Fix import error when using symbols on web. ([#30249](https://github.com/expo/expo/pull/30249) by [@alanjhughes](https://github.com/alanjhughes))
## 0.1.4 — 2024-04-29
### 🎉 New features
- Add `size` prop to match api of similar packages. ([#28497](https://github.com/expo/expo/pull/28497) by [@alanjhughes](https://github.com/alanjhughes))
### 🐛 Bug fixes
- Fix vscode quick help link. ([#28493](https://github.com/expo/expo/pull/28493) by [@alanjhughes](https://github.com/alanjhughes))
## 0.1.3 — 2024-04-24
_This version does not introduce any user-facing changes._
## 0.1.2 — 2024-04-23
_This version does not introduce any user-facing changes._
## 0.1.1 — 2024-04-22
_This version does not introduce any user-facing changes._
## 0.1.0 — 2024-04-18
_This version does not introduce any user-facing changes._

37
node_modules/expo-symbols/README.md generated vendored Normal file
View File

@@ -0,0 +1,37 @@
<p>
<a href="https://docs.expo.dev/versions/latest/sdk/symbols/">
<img
src="../../.github/resources/expo-symbols.svg"
alt="expo-symbols"
height="64" />
</a>
</p>
Provides access to the SF Symbols library on iOS for React Native and Expo apps.
# API documentation
- [Documentation for the latest stable release](https://docs.expo.dev/versions/latest/sdk/symbols/)
- [Documentation for the main branch](https://docs.expo.dev/versions/unversioned/sdk/symbols/)
# Installation in managed Expo projects
For [managed](https://docs.expo.dev/archive/managed-vs-bare/) Expo projects, please follow the installation instructions in the [API documentation for the latest stable release](https://docs.expo.dev/versions/latest/sdk/symbols/).
# Installation in bare React Native projects
For bare React Native projects, you must ensure that you have [installed and configured the `expo` package](https://docs.expo.dev/bare/installing-expo-modules/) before continuing.
### Add the package to your npm dependencies
```
npx expo install expo-symbols
```
### Configure for iOS
Run `npx pod-install` after installing the npm package.
# Contributing
Contributions are very welcome! Please refer to guidelines described in the [contributing guide](https://github.com/expo/expo#contributing).

3
node_modules/expo-symbols/build/SymbolModule.d.ts generated vendored Normal file
View File

@@ -0,0 +1,3 @@
declare const _default: any;
export default _default;
//# sourceMappingURL=SymbolModule.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"SymbolModule.d.ts","sourceRoot":"","sources":["../src/SymbolModule.ts"],"names":[],"mappings":";AACA,wBAAmD"}

3
node_modules/expo-symbols/build/SymbolModule.js generated vendored Normal file
View File

@@ -0,0 +1,3 @@
import { requireNativeModule } from 'expo-modules-core';
export default requireNativeModule('SymbolModule');
//# sourceMappingURL=SymbolModule.js.map

1
node_modules/expo-symbols/build/SymbolModule.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"SymbolModule.js","sourceRoot":"","sources":["../src/SymbolModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,eAAe,mBAAmB,CAAC,cAAc,CAAC,CAAC","sourcesContent":["import { requireNativeModule } from 'expo-modules-core';\nexport default requireNativeModule('SymbolModule');\n"]}

181
node_modules/expo-symbols/build/SymbolModule.types.d.ts generated vendored Normal file
View File

@@ -0,0 +1,181 @@
import type { ColorValue, ProcessedColorValue, ViewProps } from 'react-native';
import type { SFSymbol } from 'sf-symbols-typescript';
import type { AndroidSymbol, AndroidSymbolWeight } from './android/index.js';
export type SymbolViewProps = {
/**
* The name of the symbol. iOS Symbols can be viewed in the [Apple SF Symbols app](https://developer.apple.com/sf-symbols/).
*/
name: SFSymbol | {
ios?: SFSymbol;
android?: AndroidSymbol;
web?: AndroidSymbol;
};
/**
* Fallback to render when a symbol for the given platform is not defined.
*/
fallback?: React.ReactNode;
/**
* Determines the symbol variant to use.
* @default 'monochrome'
* @platform ios
*/
type?: SymbolType;
/**
* The scale of the symbol to render.
* @default 'unspecified'
* @platform ios
*/
scale?: SymbolScale;
/**
* The weight of the symbol to render. On Android and web import from `expo-symbols/androidWeights/{weight}`.
* @default 'unspecified'
*/
weight?: SymbolWeight | {
ios: SymbolWeight;
android: AndroidSymbolWeight;
};
/**
* An array of colors to use when the {@link SymbolType} is `palette`.
* @platform ios
*/
colors?: ColorValue | ColorValue[];
/**
* The size of the symbol.
* @default 24
*/
size?: number;
/**
* The tint color to apply to the symbol.
*/
tintColor?: ColorValue;
/**
* Determines how the image should be resized to fit its container.
* @default 'scaleAspectFit'
* @platform ios
*/
resizeMode?: ContentMode;
/**
* The animation configuration to apply to the symbol.
* @platform ios
*/
animationSpec?: AnimationSpec;
} & ViewProps;
/**
* It narrows down some props to types expected by the native/web side.
* @hidden
*/
export interface NativeSymbolViewProps extends ViewProps {
name?: string;
type: SymbolType;
scale?: SymbolScale;
weight?: SymbolWeight;
animated: boolean;
colors: (ProcessedColorValue | null | undefined)[];
tint: ProcessedColorValue | null | undefined;
resizeMode?: ContentMode;
animationSpec?: AnimationSpec;
}
/**
* The weight of the symbol to render.
*/
export type SymbolWeight = 'unspecified' | 'ultraLight' | 'thin' | 'light' | 'regular' | 'medium' | 'semibold' | 'bold' | 'heavy' | 'black';
/**
* The scale of the symbol to render.
*/
export type SymbolScale = 'default' | 'unspecified' | 'small' | 'medium' | 'large';
/**
* Determines how the image should be resized to fit its container.
*/
export type ContentMode = 'scaleToFill' | 'scaleAspectFit' | 'scaleAspectFill' | 'redraw' | 'center' | 'top' | 'bottom' | 'left' | 'right' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';
/**
* The animation configuration to apply to the symbol.
*/
export type AnimationSpec = {
/**
* The effect to apply to the symbol.
*/
effect?: AnimationEffect;
/**
* If the animation should repeat.
*/
repeating?: boolean;
/**
* The number of times the animation should repeat.
*/
repeatCount?: number;
/**
* The duration of the animation in seconds.
*/
speed?: number;
/**
* An object that specifies how the symbols layers should animate.
*/
variableAnimationSpec?: VariableAnimationSpec;
};
export type AnimationEffect = {
/**
* The type of animation to apply to the symbol.
*/
type: AnimationType;
/**
* Whether the entire symbol should animate or just the individual layers.
* @default false
*/
wholeSymbol?: boolean;
/**
* The direction of the animation.
*/
direction?: 'up' | 'down';
};
/**
* The type of animation to apply to the symbol.
*/
export type AnimationType = 'bounce' | 'pulse' | 'scale';
/**
* A variable color animation draws attention to a symbol by changing the opacity of the symbols layers.
* You can choose to apply the effect to layers either cumulatively or iteratively.
* For cumulative animations, each layers opacity remains changed until the end of the animation cycle.
* For iterative animations, each layers opacity changes briefly before returning to its original state.
* These effects are compounding, each value set to `true` will add an additional effect.
*/
export type VariableAnimationSpec = {
/**
* An effect that reverses each time it repeats.
*/
reversing?: boolean;
/**
* An effect that doesnt reverse each time it repeats.
*/
nonReversing?: boolean;
/**
* This effect enables each successive variable layer, and the layer remains enabled until the end of the animation cycle. This effect cancels the iterative variant.
*/
cumulative?: boolean;
/**
* An effect that momentarily enables each layer of a symbol in sequence.
*/
iterative?: boolean;
/**
* An effect that hides inactive layers of a symbol.
* This effect hides inactive layers completely, rather than drawing them with reduced, but nonzero, opacity.
*/
hideInactiveLayers?: boolean;
/**
* An effect that dims inactive layers of a symbol.
* This effect draws inactive layers with reduced, but nonzero, opacity.
*/
dimInactiveLayers?: boolean;
};
/**
* Determines the symbol variant to use.
*
* - `'monochrome'` - Creates a color configuration that specifies that the symbol image uses its monochrome variant.
*
* - `'hierarchical'` - Creates a color configuration with a color scheme that originates from one color.
*
* - `'palette'` - Creates a color configuration with a color scheme from a palette of multiple colors.
*
* - `'multicolor'` - Creates a color configuration that specifies that the symbol image uses its multicolor variant, if one exists.
*/
export type SymbolType = 'monochrome' | 'hierarchical' | 'palette' | 'multicolor';
//# sourceMappingURL=SymbolModule.types.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"SymbolModule.types.d.ts","sourceRoot":"","sources":["../src/SymbolModule.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,IAAI,EAAE,QAAQ,GAAG;QAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;QAAC,OAAO,CAAC,EAAE,aAAa,CAAC;QAAC,GAAG,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC;IAClF;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,GAAG;QAAE,GAAG,EAAE,YAAY,CAAC;QAAC,OAAO,EAAE,mBAAmB,CAAA;KAAE,CAAC;IAC5E;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;IACnC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,SAAS,CAAC;AAEd;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,CAAC,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC;IACnD,IAAI,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,YAAY,GACZ,MAAM,GACN,OAAO,GACP,SAAS,GACT,QAAQ,GACR,UAAU,GACV,MAAM,GACN,OAAO,GACP,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnF;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,gBAAgB,GAChB,iBAAiB,GACjB,QAAQ,GACR,QAAQ,GACR,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,SAAS,GACT,UAAU,GACV,YAAY,GACZ,aAAa,CAAC;AAElB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;OAEG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,GAAG,YAAY,CAAC"}

View File

@@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=SymbolModule.types.js.map

File diff suppressed because one or more lines are too long

4
node_modules/expo-symbols/build/SymbolView.d.ts generated vendored Normal file
View File

@@ -0,0 +1,4 @@
import { type JSX } from 'react';
import { SymbolViewProps } from './SymbolModule.types';
export declare function SymbolView(props: SymbolViewProps): JSX.Element;
//# sourceMappingURL=SymbolView.d.ts.map

1
node_modules/expo-symbols/build/SymbolView.d.ts.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"SymbolView.d.ts","sourceRoot":"","sources":["../src/SymbolView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAQvD,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CA+B9D"}

4
node_modules/expo-symbols/build/SymbolView.ios.d.ts generated vendored Normal file
View File

@@ -0,0 +1,4 @@
import type { JSX } from 'react';
import { SymbolViewProps } from './SymbolModule.types';
export declare function SymbolView(props: SymbolViewProps): JSX.Element;
//# sourceMappingURL=SymbolView.ios.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"SymbolView.ios.d.ts","sourceRoot":"","sources":["../src/SymbolView.ios.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAK9E,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAW9D"}

35
node_modules/expo-symbols/build/SymbolView.ios.js generated vendored Normal file
View File

@@ -0,0 +1,35 @@
import { requireNativeViewManager } from 'expo-modules-core';
import { processColor } from 'react-native';
const NativeView = requireNativeViewManager('SymbolModule');
export function SymbolView(props) {
if (!NativeView) {
return <>{props.fallback}</>;
}
const nativeProps = getNativeProps(props);
if (!nativeProps.name) {
return <>{props.fallback}</>;
}
return <NativeView {...nativeProps}/>;
}
function getNativeProps(props) {
const colors = Array.isArray(props.colors) ? props.colors : props.colors ? [props.colors] : [];
const animated = !!props.animationSpec || false;
const type = props.type || 'monochrome';
const size = props.size || 24;
const style = props.style
? [{ width: size, height: size }, props.style]
: { width: size, height: size };
const name = typeof props.name === 'object' ? props.name.ios : props.name;
const weight = typeof props.weight === 'object' ? props.weight.ios : props.weight;
return {
...props,
name,
style,
colors: colors.map((c) => processColor(c)),
tint: processColor(props.tintColor),
weight,
animated,
type,
};
}
//# sourceMappingURL=SymbolView.ios.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"SymbolView.ios.js","sourceRoot":"","sources":["../src/SymbolView.ios.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C,MAAM,UAAU,GACd,wBAAwB,CAAC,cAAc,CAAC,CAAC;AAE3C,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC/B,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,EAAG,CAAC;AACzC,CAAC;AAED,SAAS,cAAc,CAAC,KAAsB;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,YAAY,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;QACvB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;QAC9C,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IAC1E,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IAElF,OAAO;QACL,GAAG,KAAK;QACR,IAAI;QACJ,KAAK;QACL,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC;QACnC,MAAM;QACN,QAAQ;QACR,IAAI;KACL,CAAC;AACJ,CAAC","sourcesContent":["import { requireNativeViewManager } from 'expo-modules-core';\nimport type { JSX } from 'react';\nimport { processColor } from 'react-native';\n\nimport { NativeSymbolViewProps, SymbolViewProps } from './SymbolModule.types';\n\nconst NativeView: React.ComponentType<NativeSymbolViewProps> =\n requireNativeViewManager('SymbolModule');\n\nexport function SymbolView(props: SymbolViewProps): JSX.Element {\n if (!NativeView) {\n return <>{props.fallback}</>;\n }\n\n const nativeProps = getNativeProps(props);\n if (!nativeProps.name) {\n return <>{props.fallback}</>;\n }\n\n return <NativeView {...nativeProps} />;\n}\n\nfunction getNativeProps(props: SymbolViewProps): NativeSymbolViewProps {\n const colors = Array.isArray(props.colors) ? props.colors : props.colors ? [props.colors] : [];\n const animated = !!props.animationSpec || false;\n const type = props.type || 'monochrome';\n const size = props.size || 24;\n const style = props.style\n ? [{ width: size, height: size }, props.style]\n : { width: size, height: size };\n const name = typeof props.name === 'object' ? props.name.ios : props.name;\n const weight = typeof props.weight === 'object' ? props.weight.ios : props.weight;\n\n return {\n ...props,\n name,\n style,\n colors: colors.map((c) => processColor(c)),\n tint: processColor(props.tintColor),\n weight,\n animated,\n type,\n };\n}\n"]}

36
node_modules/expo-symbols/build/SymbolView.js generated vendored Normal file
View File

@@ -0,0 +1,36 @@
import { useFonts } from '@expo-google-fonts/material-symbols';
import { useMemo } from 'react';
import { Platform, PlatformColor, Text, View } from 'react-native';
import { androidSymbolToString } from './android';
import { getFont } from './utils';
// trying to mirror iOS implementation
const DEFAULT_SYMBOL_COLOR = Platform.OS === 'android' ? PlatformColor('@android:color/system_primary_dark') : '#7d9bd4';
export function SymbolView(props) {
const font = useMemo(() => getFont(props.weight), [props.weight]);
const name = typeof props.name === 'object'
? props.name[Platform.OS === 'android' ? 'android' : 'web']
: null;
const [loaded] = useFonts({
[font.name]: {
uri: font.font,
testString: name ? androidSymbolToString(name) : null,
},
});
if (!name) {
return <>{props.fallback}</>;
}
if (!loaded) {
return <View style={{ width: props.size ?? 24, height: props.size ?? 24 }}/>;
}
return (<View style={{ width: props.size ?? 24, height: props.size ?? 24 }}>
<Text style={{
fontFamily: font.name,
color: props.tintColor ?? DEFAULT_SYMBOL_COLOR,
fontSize: props.size ?? 24,
lineHeight: props.size ?? 24,
}}>
{androidSymbolToString(name)}
</Text>
</View>);
}
//# sourceMappingURL=SymbolView.js.map

1
node_modules/expo-symbols/build/SymbolView.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"SymbolView.js","sourceRoot":"","sources":["../src/SymbolView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAY,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,sCAAsC;AACtC,MAAM,oBAAoB,GACxB,QAAQ,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAE9F,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GACR,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC5B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3D,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;QACxB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACX,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;SACtD;KACF,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,EAAG,CAAC;IAChF,CAAC;IACD,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CACjE;MAAA,CAAC,IAAI,CACH,KAAK,CAAC,CAAC;YACL,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,KAAK,EAAE,KAAK,CAAC,SAAS,IAAI,oBAAoB;YAC9C,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;YAC1B,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;SAC7B,CAAC,CACF;QAAA,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAC9B;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC","sourcesContent":["import { useFonts } from '@expo-google-fonts/material-symbols';\nimport { useMemo, type JSX } from 'react';\nimport { Platform, PlatformColor, Text, View } from 'react-native';\n\nimport { SymbolViewProps } from './SymbolModule.types';\nimport { androidSymbolToString } from './android';\nimport { getFont } from './utils';\n\n// trying to mirror iOS implementation\nconst DEFAULT_SYMBOL_COLOR =\n Platform.OS === 'android' ? PlatformColor('@android:color/system_primary_dark') : '#7d9bd4';\n\nexport function SymbolView(props: SymbolViewProps): JSX.Element {\n const font = useMemo(() => getFont(props.weight), [props.weight]);\n const name =\n typeof props.name === 'object'\n ? props.name[Platform.OS === 'android' ? 'android' : 'web']\n : null;\n const [loaded] = useFonts({\n [font.name]: {\n uri: font.font,\n testString: name ? androidSymbolToString(name) : null,\n },\n });\n if (!name) {\n return <>{props.fallback}</>;\n }\n if (!loaded) {\n return <View style={{ width: props.size ?? 24, height: props.size ?? 24 }} />;\n }\n return (\n <View style={{ width: props.size ?? 24, height: props.size ?? 24 }}>\n <Text\n style={{\n fontFamily: font.name,\n color: props.tintColor ?? DEFAULT_SYMBOL_COLOR,\n fontSize: props.size ?? 24,\n lineHeight: props.size ?? 24,\n }}>\n {androidSymbolToString(name)}\n </Text>\n </View>\n );\n}\n"]}

12
node_modules/expo-symbols/build/android/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,12 @@
/**
* Regenerate this file using a request captured from https://fonts.google.com/icons and this script:
* https://gist.github.com/aleqsio/63a2f378286c727780ef6056d66d8e43
*/
import symbols from './symbols.json';
export type AndroidSymbol = keyof typeof symbols;
export type AndroidSymbolWeight = {
name: string;
font: number;
};
export declare function androidSymbolToString(symbol: AndroidSymbol | null): string | null;
//# sourceMappingURL=index.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/android/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,OAAO,CAAC;AACjD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,iBAGjE"}

11
node_modules/expo-symbols/build/android/index.js generated vendored Normal file
View File

@@ -0,0 +1,11 @@
/**
* Regenerate this file using a request captured from https://fonts.google.com/icons and this script:
* https://gist.github.com/aleqsio/63a2f378286c727780ef6056d66d8e43
*/
import symbols from './symbols.json';
export function androidSymbolToString(symbol) {
if (!symbol)
return null;
return String.fromCharCode(symbols[symbol]);
}
//# sourceMappingURL=index.js.map

1
node_modules/expo-symbols/build/android/index.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/android/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,OAAO,MAAM,gBAAgB,CAAC;AAOrC,MAAM,UAAU,qBAAqB,CAAC,MAA4B;IAChE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,CAAC","sourcesContent":["/**\n * Regenerate this file using a request captured from https://fonts.google.com/icons and this script:\n * https://gist.github.com/aleqsio/63a2f378286c727780ef6056d66d8e43\n */\nimport symbols from './symbols.json';\nexport type AndroidSymbol = keyof typeof symbols;\nexport type AndroidSymbolWeight = {\n name: string;\n font: number;\n};\n\nexport function androidSymbolToString(symbol: AndroidSymbol | null) {\n if (!symbol) return null;\n return String.fromCharCode(symbols[symbol]);\n}\n"]}

4057
node_modules/expo-symbols/build/android/symbols.json generated vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,4 @@
import { AndroidSymbolWeight } from '../..';
declare const weight: AndroidSymbolWeight;
export default weight;
//# sourceMappingURL=index.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/android/weights/bold/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAC5C,QAAA,MAAM,MAAM,EAAE,mBAGb,CAAC;AACF,eAAe,MAAM,CAAC"}

View File

@@ -0,0 +1,7 @@
import { MaterialSymbols_700Bold } from '@expo-google-fonts/material-symbols/700Bold';
const weight = {
name: 'MaterialSymbols_700Bold',
font: MaterialSymbols_700Bold,
};
export default weight;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/android/weights/bold/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAGtF,MAAM,MAAM,GAAwB;IAClC,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,uBAAuB;CAC9B,CAAC;AACF,eAAe,MAAM,CAAC","sourcesContent":["import { MaterialSymbols_700Bold } from '@expo-google-fonts/material-symbols/700Bold';\n\nimport { AndroidSymbolWeight } from '../..';\nconst weight: AndroidSymbolWeight = {\n name: 'MaterialSymbols_700Bold',\n font: MaterialSymbols_700Bold,\n};\nexport default weight;\n"]}

View File

@@ -0,0 +1,4 @@
import { AndroidSymbolWeight } from '../..';
declare const weight: AndroidSymbolWeight;
export default weight;
//# sourceMappingURL=index.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/android/weights/extraLight/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAC5C,QAAA,MAAM,MAAM,EAAE,mBAGb,CAAC;AACF,eAAe,MAAM,CAAC"}

View File

@@ -0,0 +1,7 @@
import { MaterialSymbols_200ExtraLight } from '@expo-google-fonts/material-symbols/200ExtraLight';
const weight = {
name: 'MaterialSymbols_200ExtraLight',
font: MaterialSymbols_200ExtraLight,
};
export default weight;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/android/weights/extraLight/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAGlG,MAAM,MAAM,GAAwB;IAClC,IAAI,EAAE,+BAA+B;IACrC,IAAI,EAAE,6BAA6B;CACpC,CAAC;AACF,eAAe,MAAM,CAAC","sourcesContent":["import { MaterialSymbols_200ExtraLight } from '@expo-google-fonts/material-symbols/200ExtraLight';\n\nimport { AndroidSymbolWeight } from '../..';\nconst weight: AndroidSymbolWeight = {\n name: 'MaterialSymbols_200ExtraLight',\n font: MaterialSymbols_200ExtraLight,\n};\nexport default weight;\n"]}

View File

@@ -0,0 +1,4 @@
import { AndroidSymbolWeight } from '../..';
declare const weight: AndroidSymbolWeight;
export default weight;
//# sourceMappingURL=index.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/android/weights/light/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAC5C,QAAA,MAAM,MAAM,EAAE,mBAGb,CAAC;AACF,eAAe,MAAM,CAAC"}

View File

@@ -0,0 +1,7 @@
import { MaterialSymbols_300Light } from '@expo-google-fonts/material-symbols/300Light';
const weight = {
name: 'MaterialSymbols_300Light',
font: MaterialSymbols_300Light,
};
export default weight;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/android/weights/light/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AAGxF,MAAM,MAAM,GAAwB;IAClC,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE,wBAAwB;CAC/B,CAAC;AACF,eAAe,MAAM,CAAC","sourcesContent":["import { MaterialSymbols_300Light } from '@expo-google-fonts/material-symbols/300Light';\n\nimport { AndroidSymbolWeight } from '../..';\nconst weight: AndroidSymbolWeight = {\n name: 'MaterialSymbols_300Light',\n font: MaterialSymbols_300Light,\n};\nexport default weight;\n"]}

View File

@@ -0,0 +1,4 @@
import { AndroidSymbolWeight } from '../..';
declare const weight: AndroidSymbolWeight;
export default weight;
//# sourceMappingURL=index.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/android/weights/medium/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAC5C,QAAA,MAAM,MAAM,EAAE,mBAGb,CAAC;AACF,eAAe,MAAM,CAAC"}

View File

@@ -0,0 +1,7 @@
import { MaterialSymbols_500Medium } from '@expo-google-fonts/material-symbols/500Medium';
const weight = {
name: 'MaterialSymbols_500Medium',
font: MaterialSymbols_500Medium,
};
export default weight;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/android/weights/medium/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAG1F,MAAM,MAAM,GAAwB;IAClC,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE,yBAAyB;CAChC,CAAC;AACF,eAAe,MAAM,CAAC","sourcesContent":["import { MaterialSymbols_500Medium } from '@expo-google-fonts/material-symbols/500Medium';\n\nimport { AndroidSymbolWeight } from '../..';\nconst weight: AndroidSymbolWeight = {\n name: 'MaterialSymbols_500Medium',\n font: MaterialSymbols_500Medium,\n};\nexport default weight;\n"]}

View File

@@ -0,0 +1,4 @@
import { AndroidSymbolWeight } from '../..';
declare const weight: AndroidSymbolWeight;
export default weight;
//# sourceMappingURL=index.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/android/weights/regular/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAC5C,QAAA,MAAM,MAAM,EAAE,mBAGb,CAAC;AACF,eAAe,MAAM,CAAC"}

View File

@@ -0,0 +1,7 @@
import { MaterialSymbols_400Regular } from '@expo-google-fonts/material-symbols/400Regular';
const weight = {
name: 'MaterialSymbols_400Regular',
font: MaterialSymbols_400Regular,
};
export default weight;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/android/weights/regular/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAG5F,MAAM,MAAM,GAAwB;IAClC,IAAI,EAAE,4BAA4B;IAClC,IAAI,EAAE,0BAA0B;CACjC,CAAC;AACF,eAAe,MAAM,CAAC","sourcesContent":["import { MaterialSymbols_400Regular } from '@expo-google-fonts/material-symbols/400Regular';\n\nimport { AndroidSymbolWeight } from '../..';\nconst weight: AndroidSymbolWeight = {\n name: 'MaterialSymbols_400Regular',\n font: MaterialSymbols_400Regular,\n};\nexport default weight;\n"]}

View File

@@ -0,0 +1,4 @@
import { AndroidSymbolWeight } from '../..';
declare const weight: AndroidSymbolWeight;
export default weight;
//# sourceMappingURL=index.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/android/weights/semiBold/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAC5C,QAAA,MAAM,MAAM,EAAE,mBAGb,CAAC;AACF,eAAe,MAAM,CAAC"}

View File

@@ -0,0 +1,7 @@
import { MaterialSymbols_600SemiBold } from '@expo-google-fonts/material-symbols/600SemiBold';
const weight = {
name: 'MaterialSymbols_600SemiBold',
font: MaterialSymbols_600SemiBold,
};
export default weight;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/android/weights/semiBold/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,iDAAiD,CAAC;AAG9F,MAAM,MAAM,GAAwB;IAClC,IAAI,EAAE,6BAA6B;IACnC,IAAI,EAAE,2BAA2B;CAClC,CAAC;AACF,eAAe,MAAM,CAAC","sourcesContent":["import { MaterialSymbols_600SemiBold } from '@expo-google-fonts/material-symbols/600SemiBold';\n\nimport { AndroidSymbolWeight } from '../..';\nconst weight: AndroidSymbolWeight = {\n name: 'MaterialSymbols_600SemiBold',\n font: MaterialSymbols_600SemiBold,\n};\nexport default weight;\n"]}

View File

@@ -0,0 +1,4 @@
import { AndroidSymbolWeight } from '../..';
declare const weight: AndroidSymbolWeight;
export default weight;
//# sourceMappingURL=index.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/android/weights/thin/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAC5C,QAAA,MAAM,MAAM,EAAE,mBAGb,CAAC;AACF,eAAe,MAAM,CAAC"}

View File

@@ -0,0 +1,7 @@
import { MaterialSymbols_100Thin } from '@expo-google-fonts/material-symbols/100Thin';
const weight = {
name: 'MaterialSymbols_100Thin',
font: MaterialSymbols_100Thin,
};
export default weight;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/android/weights/thin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAGtF,MAAM,MAAM,GAAwB;IAClC,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,uBAAuB;CAC9B,CAAC;AACF,eAAe,MAAM,CAAC","sourcesContent":["import { MaterialSymbols_100Thin } from '@expo-google-fonts/material-symbols/100Thin';\n\nimport { AndroidSymbolWeight } from '../..';\nconst weight: AndroidSymbolWeight = {\n name: 'MaterialSymbols_100Thin',\n font: MaterialSymbols_100Thin,\n};\nexport default weight;\n"]}

6
node_modules/expo-symbols/build/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,6 @@
export type { SFSymbol } from 'sf-symbols-typescript';
export type { AndroidSymbol } from './android';
export { unstable_getMaterialSymbolSourceAsync } from './materialImageSource';
export type * from './SymbolModule.types';
export { SymbolView } from './SymbolView';
//# sourceMappingURL=index.d.ts.map

1
node_modules/expo-symbols/build/index.d.ts.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,qCAAqC,EAAE,MAAM,uBAAuB,CAAC;AAC9E,mBAAmB,sBAAsB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}

3
node_modules/expo-symbols/build/index.js generated vendored Normal file
View File

@@ -0,0 +1,3 @@
export { unstable_getMaterialSymbolSourceAsync } from './materialImageSource';
export { SymbolView } from './SymbolView';
//# sourceMappingURL=index.js.map

1
node_modules/expo-symbols/build/index.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qCAAqC,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC","sourcesContent":["export type { SFSymbol } from 'sf-symbols-typescript';\nexport type { AndroidSymbol } from './android';\n\nexport { unstable_getMaterialSymbolSourceAsync } from './materialImageSource';\nexport type * from './SymbolModule.types';\nexport { SymbolView } from './SymbolView';\n"]}

View File

@@ -0,0 +1,9 @@
import type { ImageSourcePropType } from 'react-native';
import { type AndroidSymbol } from './android';
/**
* Renders a Material Symbol to an image source.
*
* @platform android
*/
export declare function unstable_getMaterialSymbolSourceAsync(symbol: AndroidSymbol | null, size: number, color: string): Promise<ImageSourcePropType | null>;
//# sourceMappingURL=materialImageSource.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"materialImageSource.d.ts","sourceRoot":"","sources":["../src/materialImageSource.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAGtE;;;;GAIG;AACH,wBAAsB,qCAAqC,CACzD,MAAM,EAAE,aAAa,GAAG,IAAI,EAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAmBrC"}

View File

@@ -0,0 +1,4 @@
import type { ImageSourcePropType } from 'react-native';
import { type AndroidSymbol } from './android';
export declare function unstable_getMaterialSymbolSourceAsync(symbol: AndroidSymbol | null): Promise<ImageSourcePropType | null>;
//# sourceMappingURL=materialImageSource.ios.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"materialImageSource.ios.d.ts","sourceRoot":"","sources":["../src/materialImageSource.ios.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C,wBAAsB,qCAAqC,CACzD,MAAM,EAAE,aAAa,GAAG,IAAI,GAC3B,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAErC"}

View File

@@ -0,0 +1,5 @@
// A noop for iOS, to improve tree shaking.
export async function unstable_getMaterialSymbolSourceAsync(symbol) {
return null;
}
//# sourceMappingURL=materialImageSource.ios.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"materialImageSource.ios.js","sourceRoot":"","sources":["../src/materialImageSource.ios.ts"],"names":[],"mappings":"AAIA,2CAA2C;AAC3C,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,MAA4B;IAE5B,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import type { ImageSourcePropType } from 'react-native';\n\nimport { type AndroidSymbol } from './android';\n\n// A noop for iOS, to improve tree shaking.\nexport async function unstable_getMaterialSymbolSourceAsync(\n symbol: AndroidSymbol | null\n): Promise<ImageSourcePropType | null> {\n return null;\n}\n"]}

31
node_modules/expo-symbols/build/materialImageSource.js generated vendored Normal file
View File

@@ -0,0 +1,31 @@
import { renderToImageAsync, loadAsync } from 'expo-font';
import { androidSymbolToString } from './android';
import { getFont } from './utils';
/**
* Renders a Material Symbol to an image source.
*
* @platform android
*/
export async function unstable_getMaterialSymbolSourceAsync(symbol, size, color) {
if (!symbol)
return null;
if (typeof renderToImageAsync !== 'function') {
console.warn(`Font.renderToImageAsync is not available. Please update expo-font.`);
return null;
}
const fontChar = androidSymbolToString(symbol);
if (!fontChar)
return null;
const font = getFont('regular');
await loadAsync({
[font.name]: font.font,
});
const image = await renderToImageAsync(fontChar, {
fontFamily: font.name,
size,
color,
lineHeight: size,
});
return image;
}
//# sourceMappingURL=materialImageSource.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"materialImageSource.js","sourceRoot":"","sources":["../src/materialImageSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG1D,OAAO,EAAE,qBAAqB,EAAsB,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,MAA4B,EAC5B,IAAY,EACZ,KAAa;IAEb,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,OAAO,kBAAkB,KAAK,UAAU,EAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,SAAS,CAAC;QACd,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;KACvB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE;QAC/C,UAAU,EAAE,IAAI,CAAC,IAAI;QACrB,IAAI;QACJ,KAAK;QACL,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { renderToImageAsync, loadAsync } from 'expo-font';\nimport type { ImageSourcePropType } from 'react-native';\n\nimport { androidSymbolToString, type AndroidSymbol } from './android';\nimport { getFont } from './utils';\n\n/**\n * Renders a Material Symbol to an image source.\n *\n * @platform android\n */\nexport async function unstable_getMaterialSymbolSourceAsync(\n symbol: AndroidSymbol | null,\n size: number,\n color: string\n): Promise<ImageSourcePropType | null> {\n if (!symbol) return null;\n if (typeof renderToImageAsync !== 'function') {\n console.warn(`Font.renderToImageAsync is not available. Please update expo-font.`);\n return null;\n }\n const fontChar = androidSymbolToString(symbol);\n if (!fontChar) return null;\n const font = getFont('regular');\n await loadAsync({\n [font.name]: font.font,\n });\n const image = await renderToImageAsync(fontChar, {\n fontFamily: font.name,\n size,\n color,\n lineHeight: size,\n });\n return image;\n}\n"]}

3
node_modules/expo-symbols/build/utils.d.ts generated vendored Normal file
View File

@@ -0,0 +1,3 @@
import type { SymbolViewProps } from './SymbolModule.types';
export declare function getFont(weight: SymbolViewProps['weight']): import("./android").AndroidSymbolWeight;
//# sourceMappingURL=utils.d.ts.map

1
node_modules/expo-symbols/build/utils.d.ts.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D,wBAAgB,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,2CAKxD"}

3
node_modules/expo-symbols/build/utils.ios.d.ts generated vendored Normal file
View File

@@ -0,0 +1,3 @@
import type { SymbolViewProps } from './SymbolModule.types';
export declare function getFont(weight: SymbolViewProps['weight']): null;
//# sourceMappingURL=utils.ios.d.ts.map

1
node_modules/expo-symbols/build/utils.ios.d.ts.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"utils.ios.d.ts","sourceRoot":"","sources":["../src/utils.ios.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,wBAAgB,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,QAGxD"}

5
node_modules/expo-symbols/build/utils.ios.js generated vendored Normal file
View File

@@ -0,0 +1,5 @@
export function getFont(weight) {
// A noop for iOS, to improve tree shaking.
return null;
}
//# sourceMappingURL=utils.ios.js.map

1
node_modules/expo-symbols/build/utils.ios.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"utils.ios.js","sourceRoot":"","sources":["../src/utils.ios.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,OAAO,CAAC,MAAiC;IACvD,2CAA2C;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import type { SymbolViewProps } from './SymbolModule.types';\n\nexport function getFont(weight: SymbolViewProps['weight']) {\n // A noop for iOS, to improve tree shaking.\n return null;\n}\n"]}

8
node_modules/expo-symbols/build/utils.js generated vendored Normal file
View File

@@ -0,0 +1,8 @@
import regular from './android/weights/regular';
export function getFont(weight) {
const platformWeight = typeof weight === 'object' ? weight.android : null;
if (!platformWeight)
return regular;
return platformWeight;
}
//# sourceMappingURL=utils.js.map

1
node_modules/expo-symbols/build/utils.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,2BAA2B,CAAC;AAEhD,MAAM,UAAU,OAAO,CAAC,MAAiC;IACvD,MAAM,cAAc,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,IAAI,CAAC,cAAc;QAAE,OAAO,OAAO,CAAC;IAEpC,OAAO,cAAc,CAAC;AACxB,CAAC","sourcesContent":["import type { SymbolViewProps } from './SymbolModule.types';\nimport regular from './android/weights/regular';\n\nexport function getFont(weight: SymbolViewProps['weight']) {\n const platformWeight = typeof weight === 'object' ? weight.android : null;\n if (!platformWeight) return regular;\n\n return platformWeight;\n}\n"]}

6
node_modules/expo-symbols/expo-module.config.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"platforms": ["apple"],
"apple": {
"modules": ["SymbolModule"]
}
}

29
node_modules/expo-symbols/ios/ExpoSymbols.podspec generated vendored Normal file
View File

@@ -0,0 +1,29 @@
require 'json'
package = JSON.parse(File.read(File.join(__dir__, '..', 'package.json')))
Pod::Spec.new do |s|
s.name = 'ExpoSymbols'
s.version = package['version']
s.summary = package['description']
s.description = package['description']
s.license = package['license']
s.author = package['author']
s.homepage = package['homepage']
s.platforms = {
:ios => '15.1',
:tvos => '15.1'
}
s.swift_version = '5.9'
s.source = { git: 'https://github.com/expo/expo.git' }
s.static_framework = true
s.dependency 'ExpoModulesCore'
# Swift/Objective-C compatibility
s.pod_target_xcconfig = {
'DEFINES_MODULE' => 'YES',
}
s.source_files = "**/*.{h,m,swift}"
end

58
node_modules/expo-symbols/ios/SymbolEffects.swift generated vendored Normal file
View File

@@ -0,0 +1,58 @@
@available(iOS 17.0, tvOS 17.0, *)
internal protocol EffectAdding {
func add(to view: UIImageView, with options: SymbolEffectOptions)
}
@available(iOS 17.0, tvOS 17.0, *)
internal struct BounceEffect: EffectAdding {
private let effect: BounceSymbolEffect = .bounce
let wholeSymbol: Bool?
let direction: AnimationDirection?
func add(to view: UIImageView, with options: SymbolEffectOptions) {
var finalEffect = effect
if wholeSymbol ?? false {
finalEffect = finalEffect.wholeSymbol
}
if let direction {
finalEffect = direction == .up ? finalEffect.up : finalEffect.down
}
view.addSymbolEffect(finalEffect, options: options, animated: true)
}
}
@available(iOS 17.0, tvOS 17.0, *)
internal struct PulseEffect: EffectAdding {
private let effect: PulseSymbolEffect = .pulse
let wholeSymbol: Bool?
func add(to view: UIImageView, with options: SymbolEffectOptions) {
var finalEffect = effect
if wholeSymbol ?? false {
finalEffect = finalEffect.wholeSymbol
}
view.addSymbolEffect(finalEffect, options: options, animated: true)
}
}
@available(iOS 17.0, tvOS 17.0, *)
internal struct ScaleEffect: EffectAdding {
private let effect: ScaleSymbolEffect = .scale
let wholeSymbol: Bool?
let direction: AnimationDirection?
func add(to view: UIImageView, with options: SymbolEffectOptions) {
var finalEffect = effect
if wholeSymbol ?? false {
finalEffect = finalEffect.wholeSymbol
}
if let direction {
finalEffect = direction == .up ? finalEffect.up : finalEffect.down
}
view.addSymbolEffect(finalEffect, options: options, animated: true)
}
}

49
node_modules/expo-symbols/ios/SymbolModule.swift generated vendored Normal file
View File

@@ -0,0 +1,49 @@
import ExpoModulesCore
public class SymbolModule: Module {
public func definition() -> ModuleDefinition {
Name("SymbolModule")
View(SymbolView.self) {
Prop("name") { (view, name: String) in
view.name = name
}
Prop("type") { (view, type: SymbolType?) in
view.symbolType = type ?? .monochrome
}
Prop("scale") { (view, scale: SymbolScale?) in
view.scale = scale?.imageSymbolScale() ?? .unspecified
}
Prop("tintColor") { (view, color: UIColor?) in
view.tint = color
}
Prop("animated") { (view, animated: Bool?) in
view.animated = animated ?? false
}
Prop("weight") { (view, weight: SymbolWeight?) in
view.weight = weight?.imageSymbolWeight() ?? .regular
}
Prop("colors") { (view, color: [UIColor]?) in
view.palette = color ?? []
}
Prop("resizeMode") { (view, resizeMode: SymbolContentMode?) in
view.imageContentMode = resizeMode?.toContentMode() ?? .scaleAspectFit
}
Prop("animationSpec") { (view, spec: AnimationSpec?) in
view.animationSpec = spec
}
OnViewDidUpdateProps { view in
view.reloadSymbol()
}
}
}
}

193
node_modules/expo-symbols/ios/SymbolRecords.swift generated vendored Normal file
View File

@@ -0,0 +1,193 @@
import ExpoModulesCore
enum SymbolScale: String, Enumerable {
case `default`
case unspecified
case small
case medium
case large
func imageSymbolScale() -> UIImage.SymbolScale {
switch self {
case .default:
return .default
case .small:
return .small
case .medium:
return .medium
case .large:
return .large
case .unspecified:
return .unspecified
}
}
}
enum SymbolWeight: String, Enumerable {
case unspecified
case ultraLight
case thin
case light
case regular
case medium
case semibold
case bold
case heavy
case black
func imageSymbolWeight() -> UIImage.SymbolWeight {
switch self {
case .unspecified:
return .unspecified
case .ultraLight:
return .ultraLight
case .thin:
return .thin
case .light:
return .light
case .regular:
return .regular
case .medium:
return .medium
case .semibold:
return .semibold
case .bold:
return .bold
case .heavy:
return .heavy
case .black:
return .black
}
}
}
enum SymbolContentMode: String, Enumerable {
case scaleToFill
case scaleAspectFit
case scaleAspectFill
case redraw
case center
case top
case bottom
case left
case right
case topLeft
case topRight
case bottomLeft
case bottomRight
func toContentMode() -> UIView.ContentMode {
switch self {
case .scaleToFill:
return .scaleToFill
case .scaleAspectFit:
return .scaleAspectFit
case .scaleAspectFill:
return .scaleAspectFill
case .redraw:
return .redraw
case .center:
return .center
case .top:
return .top
case .bottom:
return .bottom
case .left:
return .left
case .right:
return .right
case .topLeft:
return .topLeft
case .topRight:
return .topRight
case .bottomLeft:
return .bottomLeft
case .bottomRight:
return .bottomRight
}
}
}
enum SymbolType: String, Enumerable {
case monochrome
case hierarchical
case palette
case multicolor
}
enum AnimationDirection: String, Enumerable {
case up
case down
}
enum AnimationType: String, Enumerable {
case bounce
case pulse
case scale
}
internal struct AnimationSpec: Record {
@Field var effect: AnimationEffect?
@Field var repeating: Bool?
@Field var repeatCount: Int?
@Field var speed: Double?
@Field var variableAnimationSpec: VariableColorSpec?
}
internal struct AnimationEffect: Record {
@Field var type: AnimationType = .bounce
@Field var wholeSymbol: Bool?
@Field var direction: AnimationDirection?
@available(iOS 17.0, tvOS 17.0, *)
func toEffect() -> EffectAdding {
switch type {
case .bounce:
return BounceEffect(wholeSymbol: wholeSymbol, direction: direction)
case .pulse:
return PulseEffect(wholeSymbol: wholeSymbol)
case .scale:
return ScaleEffect(wholeSymbol: wholeSymbol, direction: direction)
}
}
}
internal struct VariableColorSpec: Record {
@Field var reversing: Bool?
@Field var nonReversing: Bool?
@Field var cumulative: Bool?
@Field var iterative: Bool?
@Field var hideInactiveLayers: Bool?
@Field var dimInactiveLayers: Bool?
@available(iOS 17.0, tvOS 17.0, *)
func toVariableEffect() -> VariableColorSymbolEffect {
var effect: VariableColorSymbolEffect = .variableColor
if cumulative != nil {
effect = effect.cumulative
}
if iterative != nil {
effect = effect.iterative
}
if hideInactiveLayers != nil {
effect = effect.hideInactiveLayers
}
if dimInactiveLayers != nil {
effect = effect.dimInactiveLayers
}
if reversing != nil {
effect = effect.reversing
}
if nonReversing != nil {
effect = effect.nonReversing
}
return effect
}
}

98
node_modules/expo-symbols/ios/SymbolView.swift generated vendored Normal file
View File

@@ -0,0 +1,98 @@
import ExpoModulesCore
class SymbolView: ExpoView {
let imageView = UIImageView()
// MARK: Properties
var name: String = ""
var weight: UIImage.SymbolWeight = .unspecified
var scale: UIImage.SymbolScale = .default
var imageContentMode: UIView.ContentMode = .scaleToFill
var symbolType: SymbolType = .monochrome
var tint: UIColor?
var animationSpec: AnimationSpec?
var palette = [UIColor]()
var animated = false
required init(appContext: AppContext? = nil) {
super.init(appContext: appContext)
addSubview(imageView)
}
override func layoutSubviews() {
imageView.frame = bounds
}
func reloadSymbol() {
guard let image = UIImage(systemName: name) else {
return
}
imageView.image = image
imageView.contentMode = imageContentMode
imageView.preferredSymbolConfiguration = getSymbolConfig()
if let tint {
if symbolType != .hierarchical {
imageView.image = image.withTintColor(tint, renderingMode: .alwaysOriginal)
}
}
// Effects need to be added last
if #available(iOS 17.0, tvOS 17.0, *) {
imageView.removeAllSymbolEffects()
if animated {
addSymbolEffects()
}
}
}
@available(iOS 17.0, tvOS 17.0, *)
private func addSymbolEffects() {
if let animationSpec {
let repeating = animationSpec.repeating ?? false
var options: SymbolEffectOptions = repeating ? .repeating : .nonRepeating
if let repeatCount = animationSpec.repeatCount {
options = options.repeat(abs(repeatCount))
}
if let speed = animationSpec.speed {
options = options.speed(speed)
}
if let variableAnimationSpec = animationSpec.variableAnimationSpec {
imageView.addSymbolEffect(variableAnimationSpec.toVariableEffect())
return
}
if let animation = animationSpec.effect {
animation.toEffect().add(to: imageView, with: options)
}
}
}
private func getSymbolConfig() -> UIImage.SymbolConfiguration {
#if os(tvOS)
var config = UIImage.SymbolConfiguration(pointSize: 18.0, weight: weight, scale: scale)
#else
var config = UIImage.SymbolConfiguration(pointSize: UIFont.systemFontSize, weight: weight, scale: scale)
#endif
switch symbolType {
case .monochrome:
if #available(iOS 16.0, tvOS 16.0, *) {
config = config.applying(UIImage.SymbolConfiguration.preferringMonochrome())
}
case .hierarchical:
config = config.applying(UIImage.SymbolConfiguration(hierarchicalColor: tint ?? .systemBlue))
case .palette:
if palette.count > 1 {
config = config.applying(UIImage.SymbolConfiguration(paletteColors: palette))
}
case .multicolor:
config = config.applying(UIImage.SymbolConfiguration.preferringMulticolor())
}
return config
}
}

54
node_modules/expo-symbols/package.json generated vendored Normal file
View File

@@ -0,0 +1,54 @@
{
"name": "expo-symbols",
"version": "55.0.5",
"description": "Provides access to the SF Symbols library on iOS for React Native and Expo apps.",
"main": "build/index.js",
"types": "build/index.d.ts",
"scripts": {
"build": "expo-module build",
"clean": "expo-module clean",
"lint": "expo-module lint",
"test": "expo-module test",
"prepare": "expo-module prepare",
"prepublishOnly": "expo-module prepublishOnly",
"expo-module": "expo-module"
},
"exports": {
".": "./build/index.js",
"./androidWeights/*": "./build/android/weights/*/index.js"
},
"keywords": [
"react-native",
"expo",
"expo-symbols",
"symbols",
"sfsymbols",
"ios"
],
"repository": {
"type": "git",
"url": "https://github.com/expo/expo.git",
"directory": "packages/expo-symbols"
},
"bugs": {
"url": "https://github.com/expo/expo/issues"
},
"author": "650 Industries, Inc.",
"license": "MIT",
"homepage": "https://docs.expo.dev/versions/latest/sdk/symbols/",
"dependencies": {
"sf-symbols-typescript": "^2.0.0",
"@expo-google-fonts/material-symbols": "^0.4.1"
},
"devDependencies": {
"expo-module-scripts": "^55.0.2",
"expo-font": "^55.0.4"
},
"peerDependencies": {
"expo": "*",
"react": "*",
"react-native": "*",
"expo-font": "*"
},
"gitHead": "756404b0eb18d441b54c7136b4142349193f554b"
}

2
node_modules/expo-symbols/src/SymbolModule.ts generated vendored Normal file
View File

@@ -0,0 +1,2 @@
import { requireNativeModule } from 'expo-modules-core';
export default requireNativeModule('SymbolModule');

207
node_modules/expo-symbols/src/SymbolModule.types.ts generated vendored Normal file
View File

@@ -0,0 +1,207 @@
import type { ColorValue, ProcessedColorValue, ViewProps } from 'react-native';
import type { SFSymbol } from 'sf-symbols-typescript';
import type { AndroidSymbol, AndroidSymbolWeight } from './android/index.js';
export type SymbolViewProps = {
/**
* The name of the symbol. iOS Symbols can be viewed in the [Apple SF Symbols app](https://developer.apple.com/sf-symbols/).
*/
name: SFSymbol | { ios?: SFSymbol; android?: AndroidSymbol; web?: AndroidSymbol };
/**
* Fallback to render when a symbol for the given platform is not defined.
*/
fallback?: React.ReactNode;
/**
* Determines the symbol variant to use.
* @default 'monochrome'
* @platform ios
*/
type?: SymbolType;
/**
* The scale of the symbol to render.
* @default 'unspecified'
* @platform ios
*/
scale?: SymbolScale;
/**
* The weight of the symbol to render. On Android and web import from `expo-symbols/androidWeights/{weight}`.
* @default 'unspecified'
*/
weight?: SymbolWeight | { ios: SymbolWeight; android: AndroidSymbolWeight };
/**
* An array of colors to use when the {@link SymbolType} is `palette`.
* @platform ios
*/
colors?: ColorValue | ColorValue[];
/**
* The size of the symbol.
* @default 24
*/
size?: number;
/**
* The tint color to apply to the symbol.
*/
tintColor?: ColorValue;
/**
* Determines how the image should be resized to fit its container.
* @default 'scaleAspectFit'
* @platform ios
*/
resizeMode?: ContentMode;
/**
* The animation configuration to apply to the symbol.
* @platform ios
*/
animationSpec?: AnimationSpec;
} & ViewProps;
/**
* It narrows down some props to types expected by the native/web side.
* @hidden
*/
export interface NativeSymbolViewProps extends ViewProps {
name?: string;
type: SymbolType;
scale?: SymbolScale;
weight?: SymbolWeight;
animated: boolean;
colors: (ProcessedColorValue | null | undefined)[];
tint: ProcessedColorValue | null | undefined;
resizeMode?: ContentMode;
animationSpec?: AnimationSpec;
}
/**
* The weight of the symbol to render.
*/
export type SymbolWeight =
| 'unspecified'
| 'ultraLight'
| 'thin'
| 'light'
| 'regular'
| 'medium'
| 'semibold'
| 'bold'
| 'heavy'
| 'black';
/**
* The scale of the symbol to render.
*/
export type SymbolScale = 'default' | 'unspecified' | 'small' | 'medium' | 'large';
/**
* Determines how the image should be resized to fit its container.
*/
export type ContentMode =
| 'scaleToFill'
| 'scaleAspectFit'
| 'scaleAspectFill'
| 'redraw'
| 'center'
| 'top'
| 'bottom'
| 'left'
| 'right'
| 'topLeft'
| 'topRight'
| 'bottomLeft'
| 'bottomRight';
/**
* The animation configuration to apply to the symbol.
*/
export type AnimationSpec = {
/**
* The effect to apply to the symbol.
*/
effect?: AnimationEffect;
/**
* If the animation should repeat.
*/
repeating?: boolean;
/**
* The number of times the animation should repeat.
*/
repeatCount?: number;
/**
* The duration of the animation in seconds.
*/
speed?: number;
/**
* An object that specifies how the symbols layers should animate.
*/
variableAnimationSpec?: VariableAnimationSpec;
};
export type AnimationEffect = {
/**
* The type of animation to apply to the symbol.
*/
type: AnimationType;
/**
* Whether the entire symbol should animate or just the individual layers.
* @default false
*/
wholeSymbol?: boolean;
/**
* The direction of the animation.
*/
direction?: 'up' | 'down';
};
/**
* The type of animation to apply to the symbol.
*/
export type AnimationType = 'bounce' | 'pulse' | 'scale';
/**
* A variable color animation draws attention to a symbol by changing the opacity of the symbols layers.
* You can choose to apply the effect to layers either cumulatively or iteratively.
* For cumulative animations, each layers opacity remains changed until the end of the animation cycle.
* For iterative animations, each layers opacity changes briefly before returning to its original state.
* These effects are compounding, each value set to `true` will add an additional effect.
*/
export type VariableAnimationSpec = {
/**
* An effect that reverses each time it repeats.
*/
reversing?: boolean;
/**
* An effect that doesnt reverse each time it repeats.
*/
nonReversing?: boolean;
/**
* This effect enables each successive variable layer, and the layer remains enabled until the end of the animation cycle. This effect cancels the iterative variant.
*/
cumulative?: boolean;
/**
* An effect that momentarily enables each layer of a symbol in sequence.
*/
iterative?: boolean;
/**
* An effect that hides inactive layers of a symbol.
* This effect hides inactive layers completely, rather than drawing them with reduced, but nonzero, opacity.
*/
hideInactiveLayers?: boolean;
/**
* An effect that dims inactive layers of a symbol.
* This effect draws inactive layers with reduced, but nonzero, opacity.
*/
dimInactiveLayers?: boolean;
};
/**
* Determines the symbol variant to use.
*
* - `'monochrome'` - Creates a color configuration that specifies that the symbol image uses its monochrome variant.
*
* - `'hierarchical'` - Creates a color configuration with a color scheme that originates from one color.
*
* - `'palette'` - Creates a color configuration with a color scheme from a palette of multiple colors.
*
* - `'multicolor'` - Creates a color configuration that specifies that the symbol image uses its multicolor variant, if one exists.
*/
export type SymbolType = 'monochrome' | 'hierarchical' | 'palette' | 'multicolor';

44
node_modules/expo-symbols/src/SymbolView.ios.tsx generated vendored Normal file
View File

@@ -0,0 +1,44 @@
import { requireNativeViewManager } from 'expo-modules-core';
import type { JSX } from 'react';
import { processColor } from 'react-native';
import { NativeSymbolViewProps, SymbolViewProps } from './SymbolModule.types';
const NativeView: React.ComponentType<NativeSymbolViewProps> =
requireNativeViewManager('SymbolModule');
export function SymbolView(props: SymbolViewProps): JSX.Element {
if (!NativeView) {
return <>{props.fallback}</>;
}
const nativeProps = getNativeProps(props);
if (!nativeProps.name) {
return <>{props.fallback}</>;
}
return <NativeView {...nativeProps} />;
}
function getNativeProps(props: SymbolViewProps): NativeSymbolViewProps {
const colors = Array.isArray(props.colors) ? props.colors : props.colors ? [props.colors] : [];
const animated = !!props.animationSpec || false;
const type = props.type || 'monochrome';
const size = props.size || 24;
const style = props.style
? [{ width: size, height: size }, props.style]
: { width: size, height: size };
const name = typeof props.name === 'object' ? props.name.ios : props.name;
const weight = typeof props.weight === 'object' ? props.weight.ios : props.weight;
return {
...props,
name,
style,
colors: colors.map((c) => processColor(c)),
tint: processColor(props.tintColor),
weight,
animated,
type,
};
}

44
node_modules/expo-symbols/src/SymbolView.tsx generated vendored Normal file
View File

@@ -0,0 +1,44 @@
import { useFonts } from '@expo-google-fonts/material-symbols';
import { useMemo, type JSX } from 'react';
import { Platform, PlatformColor, Text, View } from 'react-native';
import { SymbolViewProps } from './SymbolModule.types';
import { androidSymbolToString } from './android';
import { getFont } from './utils';
// trying to mirror iOS implementation
const DEFAULT_SYMBOL_COLOR =
Platform.OS === 'android' ? PlatformColor('@android:color/system_primary_dark') : '#7d9bd4';
export function SymbolView(props: SymbolViewProps): JSX.Element {
const font = useMemo(() => getFont(props.weight), [props.weight]);
const name =
typeof props.name === 'object'
? props.name[Platform.OS === 'android' ? 'android' : 'web']
: null;
const [loaded] = useFonts({
[font.name]: {
uri: font.font,
testString: name ? androidSymbolToString(name) : null,
},
});
if (!name) {
return <>{props.fallback}</>;
}
if (!loaded) {
return <View style={{ width: props.size ?? 24, height: props.size ?? 24 }} />;
}
return (
<View style={{ width: props.size ?? 24, height: props.size ?? 24 }}>
<Text
style={{
fontFamily: font.name,
color: props.tintColor ?? DEFAULT_SYMBOL_COLOR,
fontSize: props.size ?? 24,
lineHeight: props.size ?? 24,
}}>
{androidSymbolToString(name)}
</Text>
</View>
);
}

15
node_modules/expo-symbols/src/android/index.ts generated vendored Normal file
View File

@@ -0,0 +1,15 @@
/**
* Regenerate this file using a request captured from https://fonts.google.com/icons and this script:
* https://gist.github.com/aleqsio/63a2f378286c727780ef6056d66d8e43
*/
import symbols from './symbols.json';
export type AndroidSymbol = keyof typeof symbols;
export type AndroidSymbolWeight = {
name: string;
font: number;
};
export function androidSymbolToString(symbol: AndroidSymbol | null) {
if (!symbol) return null;
return String.fromCharCode(symbols[symbol]);
}

4057
node_modules/expo-symbols/src/android/symbols.json generated vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
import { MaterialSymbols_700Bold } from '@expo-google-fonts/material-symbols/700Bold';
import { AndroidSymbolWeight } from '../..';
const weight: AndroidSymbolWeight = {
name: 'MaterialSymbols_700Bold',
font: MaterialSymbols_700Bold,
};
export default weight;

View File

@@ -0,0 +1,8 @@
import { MaterialSymbols_200ExtraLight } from '@expo-google-fonts/material-symbols/200ExtraLight';
import { AndroidSymbolWeight } from '../..';
const weight: AndroidSymbolWeight = {
name: 'MaterialSymbols_200ExtraLight',
font: MaterialSymbols_200ExtraLight,
};
export default weight;

View File

@@ -0,0 +1,8 @@
import { MaterialSymbols_300Light } from '@expo-google-fonts/material-symbols/300Light';
import { AndroidSymbolWeight } from '../..';
const weight: AndroidSymbolWeight = {
name: 'MaterialSymbols_300Light',
font: MaterialSymbols_300Light,
};
export default weight;

View File

@@ -0,0 +1,8 @@
import { MaterialSymbols_500Medium } from '@expo-google-fonts/material-symbols/500Medium';
import { AndroidSymbolWeight } from '../..';
const weight: AndroidSymbolWeight = {
name: 'MaterialSymbols_500Medium',
font: MaterialSymbols_500Medium,
};
export default weight;

View File

@@ -0,0 +1,8 @@
import { MaterialSymbols_400Regular } from '@expo-google-fonts/material-symbols/400Regular';
import { AndroidSymbolWeight } from '../..';
const weight: AndroidSymbolWeight = {
name: 'MaterialSymbols_400Regular',
font: MaterialSymbols_400Regular,
};
export default weight;

View File

@@ -0,0 +1,8 @@
import { MaterialSymbols_600SemiBold } from '@expo-google-fonts/material-symbols/600SemiBold';
import { AndroidSymbolWeight } from '../..';
const weight: AndroidSymbolWeight = {
name: 'MaterialSymbols_600SemiBold',
font: MaterialSymbols_600SemiBold,
};
export default weight;

View File

@@ -0,0 +1,8 @@
import { MaterialSymbols_100Thin } from '@expo-google-fonts/material-symbols/100Thin';
import { AndroidSymbolWeight } from '../..';
const weight: AndroidSymbolWeight = {
name: 'MaterialSymbols_100Thin',
font: MaterialSymbols_100Thin,
};
export default weight;

6
node_modules/expo-symbols/src/index.ts generated vendored Normal file
View File

@@ -0,0 +1,6 @@
export type { SFSymbol } from 'sf-symbols-typescript';
export type { AndroidSymbol } from './android';
export { unstable_getMaterialSymbolSourceAsync } from './materialImageSource';
export type * from './SymbolModule.types';
export { SymbolView } from './SymbolView';

View File

@@ -0,0 +1,10 @@
import type { ImageSourcePropType } from 'react-native';
import { type AndroidSymbol } from './android';
// A noop for iOS, to improve tree shaking.
export async function unstable_getMaterialSymbolSourceAsync(
symbol: AndroidSymbol | null
): Promise<ImageSourcePropType | null> {
return null;
}

35
node_modules/expo-symbols/src/materialImageSource.ts generated vendored Normal file
View File

@@ -0,0 +1,35 @@
import { renderToImageAsync, loadAsync } from 'expo-font';
import type { ImageSourcePropType } from 'react-native';
import { androidSymbolToString, type AndroidSymbol } from './android';
import { getFont } from './utils';
/**
* Renders a Material Symbol to an image source.
*
* @platform android
*/
export async function unstable_getMaterialSymbolSourceAsync(
symbol: AndroidSymbol | null,
size: number,
color: string
): Promise<ImageSourcePropType | null> {
if (!symbol) return null;
if (typeof renderToImageAsync !== 'function') {
console.warn(`Font.renderToImageAsync is not available. Please update expo-font.`);
return null;
}
const fontChar = androidSymbolToString(symbol);
if (!fontChar) return null;
const font = getFont('regular');
await loadAsync({
[font.name]: font.font,
});
const image = await renderToImageAsync(fontChar, {
fontFamily: font.name,
size,
color,
lineHeight: size,
});
return image;
}

6
node_modules/expo-symbols/src/utils.ios.ts generated vendored Normal file
View File

@@ -0,0 +1,6 @@
import type { SymbolViewProps } from './SymbolModule.types';
export function getFont(weight: SymbolViewProps['weight']) {
// A noop for iOS, to improve tree shaking.
return null;
}

9
node_modules/expo-symbols/src/utils.ts generated vendored Normal file
View File

@@ -0,0 +1,9 @@
import type { SymbolViewProps } from './SymbolModule.types';
import regular from './android/weights/regular';
export function getFont(weight: SymbolViewProps['weight']) {
const platformWeight = typeof weight === 'object' ? weight.android : null;
if (!platformWeight) return regular;
return platformWeight;
}

9
node_modules/expo-symbols/tsconfig.json generated vendored Normal file
View File

@@ -0,0 +1,9 @@
// @generated by expo-module-scripts
{
"extends": "expo-module-scripts/tsconfig.base",
"compilerOptions": {
"outDir": "./build"
},
"include": ["./src"],
"exclude": ["**/__mocks__/*", "**/__tests__/*", "**/__rsc_tests__/*"]
}