@symbiote-native/symbols 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +52 -0
  3. package/build/angular/index.d.ts +2 -0
  4. package/build/angular/index.js +3 -0
  5. package/build/angular/symbol-view.d.ts +22 -0
  6. package/build/angular/symbol-view.js +147 -0
  7. package/build/core/android/index.d.ts +11 -0
  8. package/build/core/android/index.js +10 -0
  9. package/build/core/android/symbols.json +4057 -0
  10. package/build/core/android/weights/bold/index.d.ts +3 -0
  11. package/build/core/android/weights/bold/index.js +6 -0
  12. package/build/core/android/weights/extraLight/index.d.ts +3 -0
  13. package/build/core/android/weights/extraLight/index.js +6 -0
  14. package/build/core/android/weights/light/index.d.ts +3 -0
  15. package/build/core/android/weights/light/index.js +6 -0
  16. package/build/core/android/weights/medium/index.d.ts +3 -0
  17. package/build/core/android/weights/medium/index.js +6 -0
  18. package/build/core/android/weights/regular/index.d.ts +3 -0
  19. package/build/core/android/weights/regular/index.js +6 -0
  20. package/build/core/android/weights/semiBold/index.d.ts +3 -0
  21. package/build/core/android/weights/semiBold/index.js +6 -0
  22. package/build/core/android/weights/thin/index.d.ts +3 -0
  23. package/build/core/android/weights/thin/index.js +6 -0
  24. package/build/core/index.d.ts +5 -0
  25. package/build/core/index.js +2 -0
  26. package/build/core/symbol-types.d.ts +95 -0
  27. package/build/core/symbol-types.js +1 -0
  28. package/build/core/symbols.d.ts +29 -0
  29. package/build/core/symbols.js +153 -0
  30. package/build/react/index.d.ts +3 -0
  31. package/build/react/index.js +3 -0
  32. package/build/react/symbol-view.d.ts +10 -0
  33. package/build/react/symbol-view.js +14 -0
  34. package/build/solid/index.d.ts +3 -0
  35. package/build/solid/index.js +3 -0
  36. package/build/solid/symbol-view.d.ts +11 -0
  37. package/build/solid/symbol-view.js +28 -0
  38. package/build/svelte/index.d.ts +3 -0
  39. package/build/svelte/index.js +3 -0
  40. package/build/svelte/symbol-props.d.ts +7 -0
  41. package/build/svelte/symbol-props.js +1 -0
  42. package/build/svelte/symbol-view.svelte +26 -0
  43. package/build/svelte/symbol-view.svelte.d.ts +4 -0
  44. package/build/vue/index.d.ts +3 -0
  45. package/build/vue/index.js +3 -0
  46. package/build/vue/symbol-view.d.ts +6 -0
  47. package/build/vue/symbol-view.js +26 -0
  48. package/build-ngc/angular/index.d.ts +2 -0
  49. package/build-ngc/angular/index.js +4 -0
  50. package/build-ngc/angular/index.js.map +1 -0
  51. package/build-ngc/angular/symbol-view.d.ts +25 -0
  52. package/build-ngc/angular/symbol-view.js +82 -0
  53. package/build-ngc/angular/symbol-view.js.map +1 -0
  54. package/build-ngc/core/android/index.d.ts +11 -0
  55. package/build-ngc/core/android/index.js +11 -0
  56. package/build-ngc/core/android/index.js.map +1 -0
  57. package/build-ngc/core/android/symbols.json +4057 -0
  58. package/build-ngc/core/android/weights/bold/index.d.ts +3 -0
  59. package/build-ngc/core/android/weights/bold/index.js +7 -0
  60. package/build-ngc/core/android/weights/bold/index.js.map +1 -0
  61. package/build-ngc/core/android/weights/extraLight/index.d.ts +3 -0
  62. package/build-ngc/core/android/weights/extraLight/index.js +7 -0
  63. package/build-ngc/core/android/weights/extraLight/index.js.map +1 -0
  64. package/build-ngc/core/android/weights/light/index.d.ts +3 -0
  65. package/build-ngc/core/android/weights/light/index.js +7 -0
  66. package/build-ngc/core/android/weights/light/index.js.map +1 -0
  67. package/build-ngc/core/android/weights/medium/index.d.ts +3 -0
  68. package/build-ngc/core/android/weights/medium/index.js +7 -0
  69. package/build-ngc/core/android/weights/medium/index.js.map +1 -0
  70. package/build-ngc/core/android/weights/regular/index.d.ts +3 -0
  71. package/build-ngc/core/android/weights/regular/index.js +7 -0
  72. package/build-ngc/core/android/weights/regular/index.js.map +1 -0
  73. package/build-ngc/core/android/weights/semiBold/index.d.ts +3 -0
  74. package/build-ngc/core/android/weights/semiBold/index.js +7 -0
  75. package/build-ngc/core/android/weights/semiBold/index.js.map +1 -0
  76. package/build-ngc/core/android/weights/thin/index.d.ts +3 -0
  77. package/build-ngc/core/android/weights/thin/index.js +7 -0
  78. package/build-ngc/core/android/weights/thin/index.js.map +1 -0
  79. package/build-ngc/core/index.d.ts +5 -0
  80. package/build-ngc/core/index.js +3 -0
  81. package/build-ngc/core/index.js.map +1 -0
  82. package/build-ngc/core/symbol-types.d.ts +95 -0
  83. package/build-ngc/core/symbol-types.js +2 -0
  84. package/build-ngc/core/symbol-types.js.map +1 -0
  85. package/build-ngc/core/symbols.d.ts +29 -0
  86. package/build-ngc/core/symbols.js +154 -0
  87. package/build-ngc/core/symbols.js.map +1 -0
  88. package/native-link.json +5 -0
  89. package/package.json +155 -0
  90. package/src/angular/index.ts +18 -0
  91. package/src/angular/symbol-view.ts +71 -0
  92. package/src/core/android/index.ts +15 -0
  93. package/src/core/android/symbols.json +4057 -0
  94. package/src/core/android/weights/bold/index.ts +8 -0
  95. package/src/core/android/weights/extraLight/index.ts +8 -0
  96. package/src/core/android/weights/light/index.ts +8 -0
  97. package/src/core/android/weights/medium/index.ts +8 -0
  98. package/src/core/android/weights/regular/index.ts +8 -0
  99. package/src/core/android/weights/semiBold/index.ts +8 -0
  100. package/src/core/android/weights/thin/index.ts +8 -0
  101. package/src/core/index.ts +25 -0
  102. package/src/core/symbol-types.ts +147 -0
  103. package/src/core/symbols.ts +192 -0
  104. package/src/react/index.ts +18 -0
  105. package/src/react/symbol-view.ts +33 -0
  106. package/src/solid/index.ts +18 -0
  107. package/src/solid/symbol-view.ts +53 -0
  108. package/src/svelte/index.ts +18 -0
  109. package/src/svelte/svelte-ambient.d.ts +6 -0
  110. package/src/svelte/svelte-compile.test-helper.ts +6 -0
  111. package/src/svelte/symbol-props.ts +10 -0
  112. package/src/svelte/symbol-view.svelte +26 -0
  113. package/src/vue/index.ts +18 -0
  114. package/src/vue/symbol-view.ts +45 -0
@@ -0,0 +1,3 @@
1
+ import type { IAndroidSymbolWeight } from '../..';
2
+ declare const weight: IAndroidSymbolWeight;
3
+ export default weight;
@@ -0,0 +1,7 @@
1
+ import { MaterialSymbols_700Bold } from '@expo-google-fonts/material-symbols/700Bold';
2
+ const weight = {
3
+ name: 'MaterialSymbols_700Bold',
4
+ font: MaterialSymbols_700Bold,
5
+ };
6
+ export default weight;
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/android/weights/bold/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAGtF,MAAM,MAAM,GAAyB;IACnC,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,uBAAuB;CAC9B,CAAC;AACF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IAndroidSymbolWeight } from '../..';
2
+ declare const weight: IAndroidSymbolWeight;
3
+ export default weight;
@@ -0,0 +1,7 @@
1
+ import { MaterialSymbols_200ExtraLight } from '@expo-google-fonts/material-symbols/200ExtraLight';
2
+ const weight = {
3
+ name: 'MaterialSymbols_200ExtraLight',
4
+ font: MaterialSymbols_200ExtraLight,
5
+ };
6
+ export default weight;
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/android/weights/extraLight/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAGlG,MAAM,MAAM,GAAyB;IACnC,IAAI,EAAE,+BAA+B;IACrC,IAAI,EAAE,6BAA6B;CACpC,CAAC;AACF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IAndroidSymbolWeight } from '../..';
2
+ declare const weight: IAndroidSymbolWeight;
3
+ export default weight;
@@ -0,0 +1,7 @@
1
+ import { MaterialSymbols_300Light } from '@expo-google-fonts/material-symbols/300Light';
2
+ const weight = {
3
+ name: 'MaterialSymbols_300Light',
4
+ font: MaterialSymbols_300Light,
5
+ };
6
+ export default weight;
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/android/weights/light/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AAGxF,MAAM,MAAM,GAAyB;IACnC,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE,wBAAwB;CAC/B,CAAC;AACF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IAndroidSymbolWeight } from '../..';
2
+ declare const weight: IAndroidSymbolWeight;
3
+ export default weight;
@@ -0,0 +1,7 @@
1
+ import { MaterialSymbols_500Medium } from '@expo-google-fonts/material-symbols/500Medium';
2
+ const weight = {
3
+ name: 'MaterialSymbols_500Medium',
4
+ font: MaterialSymbols_500Medium,
5
+ };
6
+ export default weight;
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/android/weights/medium/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAG1F,MAAM,MAAM,GAAyB;IACnC,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE,yBAAyB;CAChC,CAAC;AACF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IAndroidSymbolWeight } from '../..';
2
+ declare const weight: IAndroidSymbolWeight;
3
+ export default weight;
@@ -0,0 +1,7 @@
1
+ import { MaterialSymbols_400Regular } from '@expo-google-fonts/material-symbols/400Regular';
2
+ const weight = {
3
+ name: 'MaterialSymbols_400Regular',
4
+ font: MaterialSymbols_400Regular,
5
+ };
6
+ export default weight;
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/android/weights/regular/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAG5F,MAAM,MAAM,GAAyB;IACnC,IAAI,EAAE,4BAA4B;IAClC,IAAI,EAAE,0BAA0B;CACjC,CAAC;AACF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IAndroidSymbolWeight } from '../..';
2
+ declare const weight: IAndroidSymbolWeight;
3
+ export default weight;
@@ -0,0 +1,7 @@
1
+ import { MaterialSymbols_600SemiBold } from '@expo-google-fonts/material-symbols/600SemiBold';
2
+ const weight = {
3
+ name: 'MaterialSymbols_600SemiBold',
4
+ font: MaterialSymbols_600SemiBold,
5
+ };
6
+ export default weight;
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/android/weights/semiBold/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,iDAAiD,CAAC;AAG9F,MAAM,MAAM,GAAyB;IACnC,IAAI,EAAE,6BAA6B;IACnC,IAAI,EAAE,2BAA2B;CAClC,CAAC;AACF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { IAndroidSymbolWeight } from '../..';
2
+ declare const weight: IAndroidSymbolWeight;
3
+ export default weight;
@@ -0,0 +1,7 @@
1
+ import { MaterialSymbols_100Thin } from '@expo-google-fonts/material-symbols/100Thin';
2
+ const weight = {
3
+ name: 'MaterialSymbols_100Thin',
4
+ font: MaterialSymbols_100Thin,
5
+ };
6
+ export default weight;
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/android/weights/thin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAGtF,MAAM,MAAM,GAAyB;IACnC,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,uBAAuB;CAC9B,CAAC;AACF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { SYMBOL_MODULE_NAME, ensureSymbolRegistered, loadSymbolFont, renderSymbolView, symbolFontOf, symbolViewName, unstable_getMaterialSymbolSourceAsync, watchSymbolFont, } from './symbols';
2
+ export { androidSymbolToString } from './android';
3
+ export type { IAndroidSymbol, IAndroidSymbolWeight } from './android';
4
+ export type { IAnimationEffect, IAnimationSpec, IAnimationType, IContentMode, ISymbolName, ISymbolScale, ISymbolType, ISymbolViewProps, ISymbolWeight, IVariableAnimationSpec, } from './symbol-types';
5
+ export type { SFSymbol } from 'sf-symbols-typescript';
@@ -0,0 +1,3 @@
1
+ export { SYMBOL_MODULE_NAME, ensureSymbolRegistered, loadSymbolFont, renderSymbolView, symbolFontOf, symbolViewName, unstable_getMaterialSymbolSourceAsync, watchSymbolFont, } from './symbols';
2
+ export { androidSymbolToString } from './android';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,qCAAqC,EACrC,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,95 @@
1
+ import type { SFSymbol } from 'sf-symbols-typescript';
2
+ import type { IAccessibilityProps, IAriaProps, IResponderProps } from '@symbiote-native/components';
3
+ import type { IColorValue, IStyleProp, ISymbioteEvent, IViewStyle } from '@symbiote-native/engine';
4
+ import type { IAndroidSymbol, IAndroidSymbolWeight } from './android';
5
+ export type ISymbolWeight = 'unspecified' | 'ultraLight' | 'thin' | 'light' | 'regular' | 'medium' | 'semibold' | 'bold' | 'heavy' | 'black';
6
+ export type ISymbolScale = 'default' | 'unspecified' | 'small' | 'medium' | 'large';
7
+ /** How the image is resized to fit its container */
8
+ export type IContentMode = 'scaleToFill' | 'scaleAspectFit' | 'scaleAspectFill' | 'redraw' | 'center' | 'top' | 'bottom' | 'left' | 'right' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';
9
+ /** The symbol variant, `palette` takes its colors from `colors` */
10
+ export type ISymbolType = 'monochrome' | 'hierarchical' | 'palette' | 'multicolor';
11
+ export type IAnimationType = 'bounce' | 'pulse' | 'scale';
12
+ export type IAnimationEffect = {
13
+ type: IAnimationType;
14
+ /**
15
+ * Whether the entire symbol animates or just the individual layers
16
+ * @default false
17
+ */
18
+ wholeSymbol?: boolean;
19
+ direction?: 'up' | 'down';
20
+ };
21
+ export type IVariableAnimationSpec = {
22
+ /** An effect that reverses each time it repeats */
23
+ reversing?: boolean;
24
+ /** An effect that does not reverse each time it repeats */
25
+ nonReversing?: boolean;
26
+ /** Each successive layer stays enabled until the end of the cycle, cancels `iterative` */
27
+ cumulative?: boolean;
28
+ /** Momentarily enables each layer of a symbol in sequence */
29
+ iterative?: boolean;
30
+ /** Hides inactive layers completely instead of drawing them with reduced opacity */
31
+ hideInactiveLayers?: boolean;
32
+ /** Draws inactive layers with reduced, but nonzero, opacity */
33
+ dimInactiveLayers?: boolean;
34
+ };
35
+ export type IAnimationSpec = {
36
+ effect?: IAnimationEffect;
37
+ /** If the animation repeats */
38
+ repeating?: boolean;
39
+ /** The number of times the animation repeats */
40
+ repeatCount?: number;
41
+ /** The duration of the animation in seconds */
42
+ speed?: number;
43
+ variableAnimationSpec?: IVariableAnimationSpec;
44
+ };
45
+ type IViewSurface = IAccessibilityProps & IAriaProps & IResponderProps & {
46
+ style?: IStyleProp<IViewStyle>;
47
+ testID?: string;
48
+ nativeID?: string;
49
+ onLayout?: (event: ISymbioteEvent) => void;
50
+ };
51
+ export type ISymbolName = SFSymbol | {
52
+ ios?: SFSymbol;
53
+ android?: IAndroidSymbol;
54
+ web?: IAndroidSymbol;
55
+ };
56
+ export type ISymbolViewProps = IViewSurface & {
57
+ /** SF Symbols names are listed in the Apple SF Symbols app */
58
+ name: ISymbolName;
59
+ /**
60
+ * @default 'monochrome'
61
+ * @platform ios
62
+ */
63
+ type?: ISymbolType;
64
+ /**
65
+ * @default 'unspecified'
66
+ * @platform ios
67
+ */
68
+ scale?: ISymbolScale;
69
+ /**
70
+ * On Android import the weight from `androidWeights/{weight}`
71
+ * @default 'unspecified'
72
+ */
73
+ weight?: ISymbolWeight | {
74
+ ios: ISymbolWeight;
75
+ android: IAndroidSymbolWeight;
76
+ };
77
+ /**
78
+ * Colors of a `palette` symbol
79
+ * @platform ios
80
+ */
81
+ colors?: IColorValue | IColorValue[];
82
+ /**
83
+ * @default 24
84
+ */
85
+ size?: number;
86
+ tintColor?: IColorValue;
87
+ /**
88
+ * @default 'scaleAspectFit'
89
+ * @platform ios
90
+ */
91
+ resizeMode?: IContentMode;
92
+ /** @platform ios */
93
+ animationSpec?: IAnimationSpec;
94
+ };
95
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=symbol-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-types.js","sourceRoot":"","sources":["../../src/core/symbol-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import type { IDescriptor } from '@symbiote-native/components';
2
+ import type { IAndroidSymbol, IAndroidSymbolWeight } from './android';
3
+ export declare const SYMBOL_MODULE_NAME = "SymbolModule";
4
+ export declare const symbolViewName: () => string;
5
+ export declare const ensureSymbolRegistered: () => boolean;
6
+ /** The font of the Android weight, the regular one when none is given */
7
+ export declare function symbolFontOf(weight: unknown): IAndroidSymbolWeight;
8
+ /**
9
+ * The symbol as a descriptor, `null` means the caller renders its own `fallback`
10
+ * `isFontLoaded` only matters off iOS, where the glyph needs the loaded font
11
+ */
12
+ export declare function renderSymbolView(props: object, isFontLoaded: boolean): IDescriptor | null;
13
+ /** Loads the Material Symbols font, false when it fails and the symbol stays an empty View */
14
+ export declare function loadSymbolFont(props: object): Promise<boolean>;
15
+ /**
16
+ * Loads the font once and reports the result, the returned function drops a late report
17
+ * Every adapter calls it from its own mount hook, so the lifecycle logic is written once
18
+ */
19
+ export declare function watchSymbolFont(props: object, onLoaded: (isLoaded: boolean) => void): () => void;
20
+ /**
21
+ * Renders a Material Symbol to an image source, for APIs that take an image such as tab bar icons
22
+ * @platform android
23
+ */
24
+ export declare function unstable_getMaterialSymbolSourceAsync(symbol: IAndroidSymbol | null, size: number, color: string): Promise<{
25
+ uri: string;
26
+ width: number;
27
+ height: number;
28
+ scale: number;
29
+ } | null>;
@@ -0,0 +1,154 @@
1
+ // Ядро `SymbolView`, порт expo-symbols: нативный view на iOS, шрифт Material Symbols на Android
2
+ import { Platform, requireNativeViewManager } from 'expo-modules-core';
3
+ import { el, txt } from '@symbiote-native/components';
4
+ import { PlatformColor, defineExpoNativeView, isRecord, processColor, } from '@symbiote-native/engine';
5
+ import { loadAsync, renderToImageAsync } from '@symbiote-native/font';
6
+ import { androidSymbolToString } from './android';
7
+ import symbols from './android/symbols.json';
8
+ import regular from './android/weights/regular';
9
+ export const SYMBOL_MODULE_NAME = 'SymbolModule';
10
+ // Регистрация идёт при рендере: побочный эффект барреля теряется в release
11
+ const symbolView = defineExpoNativeView(requireNativeViewManager, SYMBOL_MODULE_NAME);
12
+ export const symbolViewName = symbolView.name;
13
+ export const ensureSymbolRegistered = symbolView.ensureRegistered;
14
+ const DEFAULT_SIZE = 24;
15
+ const WEB_DEFAULT_COLOR = '#7d9bd4';
16
+ const ANDROID_DEFAULT_COLOR = '@android:color/system_primary_dark';
17
+ function runsOnIos() {
18
+ return Platform.select({ ios: true, default: false });
19
+ }
20
+ function defaultSymbolColor() {
21
+ return Platform.select({ android: true, default: false })
22
+ ? PlatformColor(ANDROID_DEFAULT_COLOR)
23
+ : WEB_DEFAULT_COLOR;
24
+ }
25
+ function isAndroidSymbol(value) {
26
+ return typeof value === 'string' && Object.hasOwn(symbols, value);
27
+ }
28
+ function isAndroidWeight(value) {
29
+ return (isRecord(value) &&
30
+ typeof value['name'] === 'string' &&
31
+ typeof value['font'] === 'number');
32
+ }
33
+ // Значение `name` или `weight` для iOS: строка как есть, у объекта берётся запись `ios`
34
+ function iosEntryOf(value) {
35
+ return isRecord(value) ? value['ios'] : value;
36
+ }
37
+ function glyphNameOf(props) {
38
+ const name = Reflect.get(props, 'name');
39
+ const key = Platform.select({ android: 'android', default: 'web' });
40
+ const entry = isRecord(name) ? name[key] : null;
41
+ return isAndroidSymbol(entry) ? entry : null;
42
+ }
43
+ /** The font of the Android weight, the regular one when none is given */
44
+ export function symbolFontOf(weight) {
45
+ const platformWeight = isRecord(weight) ? weight['android'] : null;
46
+ return isAndroidWeight(platformWeight) ? platformWeight : regular;
47
+ }
48
+ function sizedStyle(props, size) {
49
+ return [{ width: size, height: size }, Reflect.get(props, 'style')];
50
+ }
51
+ function sizeOf(props) {
52
+ const size = Reflect.get(props, 'size');
53
+ return typeof size === 'number' && size !== 0 ? size : DEFAULT_SIZE;
54
+ }
55
+ function renderNative(props) {
56
+ if (!ensureSymbolRegistered())
57
+ return null;
58
+ const name = iosEntryOf(Reflect.get(props, 'name'));
59
+ if (!name)
60
+ return null;
61
+ const colors = Reflect.get(props, 'colors');
62
+ const colorList = Array.isArray(colors) ? colors : colors ? [colors] : [];
63
+ const size = sizeOf(props);
64
+ const style = Reflect.get(props, 'style');
65
+ return el(symbolViewName(), {
66
+ ...Object.fromEntries(Object.entries(props).filter(([key]) => key !== 'tintColor')),
67
+ name,
68
+ style: style ? sizedStyle(props, size) : { width: size, height: size },
69
+ colors: colorList.map(color => processColor(color)),
70
+ tint: processColor(Reflect.get(props, 'tintColor')),
71
+ weight: iosEntryOf(Reflect.get(props, 'weight')),
72
+ animated: !!Reflect.get(props, 'animationSpec'),
73
+ type: Reflect.get(props, 'type') ?? 'monochrome',
74
+ });
75
+ }
76
+ function renderGlyph(props, isFontLoaded) {
77
+ const name = glyphNameOf(props);
78
+ if (!name)
79
+ return null;
80
+ const size = sizeOf(props);
81
+ const style = sizedStyle(props, size);
82
+ if (!isFontLoaded)
83
+ return el('view', { style });
84
+ const tint = Reflect.get(props, 'tintColor');
85
+ const glyph = txt({
86
+ style: {
87
+ fontFamily: symbolFontOf(Reflect.get(props, 'weight')).name,
88
+ color: tint ?? defaultSymbolColor(),
89
+ fontSize: size,
90
+ lineHeight: size,
91
+ },
92
+ }, [androidSymbolToString(name) ?? '']);
93
+ return el('view', { style }, [glyph]);
94
+ }
95
+ /**
96
+ * The symbol as a descriptor, `null` means the caller renders its own `fallback`
97
+ * `isFontLoaded` only matters off iOS, where the glyph needs the loaded font
98
+ */
99
+ export function renderSymbolView(props, isFontLoaded) {
100
+ return runsOnIos() ? renderNative(props) : renderGlyph(props, isFontLoaded);
101
+ }
102
+ /** Loads the Material Symbols font, false when it fails and the symbol stays an empty View */
103
+ export async function loadSymbolFont(props) {
104
+ if (runsOnIos())
105
+ return true;
106
+ const font = symbolFontOf(Reflect.get(props, 'weight'));
107
+ const name = glyphNameOf(props);
108
+ try {
109
+ await loadAsync({
110
+ [font.name]: {
111
+ uri: font.font,
112
+ testString: name ? (androidSymbolToString(name) ?? undefined) : undefined,
113
+ },
114
+ });
115
+ return true;
116
+ }
117
+ catch {
118
+ return false;
119
+ }
120
+ }
121
+ /**
122
+ * Loads the font once and reports the result, the returned function drops a late report
123
+ * Every adapter calls it from its own mount hook, so the lifecycle logic is written once
124
+ */
125
+ export function watchSymbolFont(props, onLoaded) {
126
+ let isActive = true;
127
+ void loadSymbolFont(props).then(isLoaded => {
128
+ if (isActive)
129
+ onLoaded(isLoaded);
130
+ });
131
+ return () => {
132
+ isActive = false;
133
+ };
134
+ }
135
+ /**
136
+ * Renders a Material Symbol to an image source, for APIs that take an image such as tab bar icons
137
+ * @platform android
138
+ */
139
+ export async function unstable_getMaterialSymbolSourceAsync(symbol, size, color) {
140
+ if (runsOnIos() || !symbol)
141
+ return null;
142
+ const glyph = androidSymbolToString(symbol);
143
+ if (!glyph)
144
+ return null;
145
+ const font = regular;
146
+ await loadAsync({ [font.name]: font.font });
147
+ return renderToImageAsync(glyph, {
148
+ fontFamily: font.name,
149
+ size,
150
+ color,
151
+ lineHeight: size,
152
+ });
153
+ }
154
+ //# sourceMappingURL=symbols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../src/core/symbols.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ {
2
+ "ios": {
3
+ "upstreamPackage": "expo-symbols"
4
+ }
5
+ }
package/package.json ADDED
@@ -0,0 +1,155 @@
1
+ {
2
+ "name": "@symbiote-native/symbols",
3
+ "version": "0.0.0",
4
+ "description": "expo-symbols wrapped for SymbioteNative — one framework-agnostic core, built once and reachable from the React, Vue, Svelte, Solid, and Angular adapters. SF Symbols on iOS and Material Symbols on Android.",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/OneEyed1366/symbiote-native.git",
9
+ "directory": "packages/symbols"
10
+ },
11
+ "homepage": "https://github.com/OneEyed1366/symbiote-native/tree/master/packages/symbols#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/OneEyed1366/symbiote-native/issues"
14
+ },
15
+ "author": "Andrey Prokopenko <psevdoproger@gmail.com>",
16
+ "keywords": [
17
+ "react-native",
18
+ "symbiote-native",
19
+ "expo-symbols",
20
+ "react",
21
+ "vue",
22
+ "svelte",
23
+ "solid",
24
+ "angular",
25
+ "sf-symbols",
26
+ "material-symbols"
27
+ ],
28
+ "type": "module",
29
+ "main": "./build/core/index.js",
30
+ "module": "./build/core/index.js",
31
+ "types": "./build/core/index.d.ts",
32
+ "exports": {
33
+ ".": {
34
+ "types": "./build/core/index.d.ts",
35
+ "default": "./build/core/index.js"
36
+ },
37
+ "./androidWeights/*": {
38
+ "types": "./build/core/android/weights/*/index.d.ts",
39
+ "default": "./build/core/android/weights/*/index.js"
40
+ },
41
+ "./vue": {
42
+ "types": "./build/vue/index.d.ts",
43
+ "default": "./build/vue/index.js"
44
+ },
45
+ "./react": {
46
+ "types": "./build/react/index.d.ts",
47
+ "default": "./build/react/index.js"
48
+ },
49
+ "./svelte": "./src/svelte/index.ts",
50
+ "./solid": {
51
+ "types": "./build/solid/index.d.ts",
52
+ "default": "./build/solid/index.js"
53
+ },
54
+ "./angular": {
55
+ "types": "./build-ngc/angular/index.d.ts",
56
+ "react-native": "./build-ngc/angular/index.js",
57
+ "default": "./src/angular/index.ts"
58
+ }
59
+ },
60
+ "files": [
61
+ "src",
62
+ "build",
63
+ "build-ngc",
64
+ "native-link.json",
65
+ "!src/**/*.test.*",
66
+ "!src/**/*.spec.*",
67
+ "!src/**/*.detox.*"
68
+ ],
69
+ "publishConfig": {
70
+ "access": "public"
71
+ },
72
+ "dependencies": {
73
+ "@expo-google-fonts/material-symbols": "^0.4.1",
74
+ "expo-symbols": "57.0.3",
75
+ "expo-modules-core": "57.0.20",
76
+ "sf-symbols-typescript": "^2.0.0",
77
+ "@symbiote-native/components": "3.1.4",
78
+ "@symbiote-native/font": "0.1.1"
79
+ },
80
+ "peerDependencies": {
81
+ "@angular/core": ">=20",
82
+ "@vue/runtime-core": "^3.5.13",
83
+ "react": ">=19.0.0",
84
+ "react-native": ">=0.86",
85
+ "solid-js": ">=1.9.0",
86
+ "svelte": ">=5.56.0",
87
+ "vue": ">=3.5.0",
88
+ "@symbiote-native/angular": "^3.2.0",
89
+ "@symbiote-native/react": "^3.2.0",
90
+ "@symbiote-native/solid": "^3.1.0",
91
+ "@symbiote-native/vue": "^3.2.0",
92
+ "@symbiote-native/engine": "^1.5.0",
93
+ "@symbiote-native/svelte": "^3.1.0"
94
+ },
95
+ "peerDependenciesMeta": {
96
+ "@symbiote-native/angular": {
97
+ "optional": true
98
+ },
99
+ "@symbiote-native/react": {
100
+ "optional": true
101
+ },
102
+ "@symbiote-native/solid": {
103
+ "optional": true
104
+ },
105
+ "@symbiote-native/svelte": {
106
+ "optional": true
107
+ },
108
+ "@symbiote-native/vue": {
109
+ "optional": true
110
+ },
111
+ "@angular/core": {
112
+ "optional": true
113
+ },
114
+ "@vue/runtime-core": {
115
+ "optional": true
116
+ },
117
+ "react": {
118
+ "optional": true
119
+ },
120
+ "solid-js": {
121
+ "optional": true
122
+ },
123
+ "svelte": {
124
+ "optional": true
125
+ },
126
+ "vue": {
127
+ "optional": true
128
+ }
129
+ },
130
+ "devDependencies": {
131
+ "@angular/compiler": "~22.0.8",
132
+ "@angular/compiler-cli": "~22.0.8",
133
+ "@angular/core": "~22.0.8",
134
+ "@types/node": "^26.0.0",
135
+ "@types/react": "^19.2.0",
136
+ "@vue/runtime-core": "^3.5.13",
137
+ "react": "19.2.3",
138
+ "solid-js": "^1.9.14",
139
+ "svelte": "^5.56.0",
140
+ "typescript": "~6.0.0",
141
+ "@symbiote-native/angular": "3.2.0",
142
+ "@symbiote-native/engine": "1.5.0",
143
+ "@symbiote-native/react": "3.2.0",
144
+ "@symbiote-native/svelte": "3.1.0",
145
+ "@symbiote-native/solid": "3.1.0",
146
+ "@symbiote-native/vue": "3.2.0",
147
+ "@symbiote-native/test-utils": "0.4.6"
148
+ },
149
+ "scripts": {
150
+ "typecheck": "tsc --build",
151
+ "clean": "rm -rf build-ngc",
152
+ "ng:build": "pnpm run clean && ngc -p tsconfig.angular.json",
153
+ "format": "prettier --write \"src/**/*.{ts,tsx}\""
154
+ }
155
+ }
@@ -0,0 +1,18 @@
1
+ // @symbiote-native/symbols/angular: компонент `SymbolView` поверх общего ядра
2
+
3
+ export { SymbolView } from './symbol-view';
4
+ export {
5
+ SYMBOL_MODULE_NAME,
6
+ androidSymbolToString,
7
+ symbolViewName,
8
+ unstable_getMaterialSymbolSourceAsync,
9
+ type IAndroidSymbol,
10
+ type IAnimationSpec,
11
+ type IContentMode,
12
+ type ISymbolName,
13
+ type ISymbolScale,
14
+ type ISymbolType,
15
+ type ISymbolViewProps,
16
+ type ISymbolWeight,
17
+ type SFSymbol,
18
+ } from '../core';