react-native-nano-icons 0.0.0 → 0.1.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 (159) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +174 -0
  3. package/app.plugin.js +1 -0
  4. package/lib/commonjs/cli/build.d.ts +28 -0
  5. package/lib/commonjs/cli/build.js +83 -0
  6. package/lib/commonjs/cli/config.d.ts +9 -0
  7. package/lib/commonjs/cli/config.js +25 -0
  8. package/lib/commonjs/cli/index.d.ts +4 -0
  9. package/lib/commonjs/cli/index.js +13 -0
  10. package/lib/commonjs/cli/link.d.ts +11 -0
  11. package/lib/commonjs/cli/link.js +135 -0
  12. package/lib/commonjs/cli/logger.d.ts +27 -0
  13. package/lib/commonjs/cli/logger.js +83 -0
  14. package/lib/commonjs/index.node.js +8 -0
  15. package/lib/commonjs/plugin/src/buildFonts.d.ts +7 -0
  16. package/lib/commonjs/plugin/src/buildFonts.js +23 -0
  17. package/lib/commonjs/plugin/src/index.d.ts +5 -0
  18. package/lib/commonjs/plugin/src/index.js +43 -0
  19. package/lib/commonjs/plugin/src/types.d.ts +31 -0
  20. package/lib/commonjs/plugin/src/types.js +2 -0
  21. package/lib/commonjs/plugin/src/withNanoIconsFontLinking.d.ts +14 -0
  22. package/lib/commonjs/plugin/src/withNanoIconsFontLinking.js +92 -0
  23. package/lib/commonjs/scripts/cli.js +28 -0
  24. package/lib/commonjs/src/const/colors.d.ts +1 -0
  25. package/lib/commonjs/src/const/colors.js +153 -0
  26. package/lib/commonjs/src/core/font/compile.d.ts +9 -0
  27. package/lib/commonjs/src/core/font/compile.js +68 -0
  28. package/lib/commonjs/src/core/font/metrics.d.ts +1 -0
  29. package/lib/commonjs/src/core/font/metrics.js +33 -0
  30. package/lib/commonjs/src/core/pipeline/config.d.ts +14 -0
  31. package/lib/commonjs/src/core/pipeline/config.js +17 -0
  32. package/lib/commonjs/src/core/pipeline/index.d.ts +3 -0
  33. package/lib/commonjs/src/core/pipeline/index.js +7 -0
  34. package/lib/commonjs/src/core/pipeline/managers.d.ts +11 -0
  35. package/lib/commonjs/src/core/pipeline/managers.js +89 -0
  36. package/lib/commonjs/src/core/pipeline/run.d.ts +14 -0
  37. package/lib/commonjs/src/core/pipeline/run.js +99 -0
  38. package/lib/commonjs/src/core/svg/layers.d.ts +24 -0
  39. package/lib/commonjs/src/core/svg/layers.js +42 -0
  40. package/lib/commonjs/src/core/svg/svg_dom.d.ts +22 -0
  41. package/lib/commonjs/src/core/svg/svg_dom.js +84 -0
  42. package/lib/commonjs/src/core/svg/svg_pathops.d.ts +21 -0
  43. package/lib/commonjs/src/core/svg/svg_pathops.js +611 -0
  44. package/lib/commonjs/src/core/types.d.ts +120 -0
  45. package/lib/commonjs/src/core/types.js +2 -0
  46. package/lib/commonjs/src/utils/fingerPrint.d.ts +1 -0
  47. package/lib/commonjs/src/utils/fingerPrint.js +20 -0
  48. package/lib/commonjs/src/utils/parse.d.ts +2 -0
  49. package/lib/commonjs/src/utils/parse.js +64 -0
  50. package/lib/module/const/colors.js +153 -0
  51. package/lib/module/const/colors.js.map +1 -0
  52. package/lib/module/core/font/compile.js +70 -0
  53. package/lib/module/core/font/compile.js.map +1 -0
  54. package/lib/module/core/font/metrics.js +37 -0
  55. package/lib/module/core/font/metrics.js.map +1 -0
  56. package/lib/module/core/pipeline/config.js +20 -0
  57. package/lib/module/core/pipeline/config.js.map +1 -0
  58. package/lib/module/core/pipeline/index.js +5 -0
  59. package/lib/module/core/pipeline/index.js.map +1 -0
  60. package/lib/module/core/pipeline/managers.js +80 -0
  61. package/lib/module/core/pipeline/managers.js.map +1 -0
  62. package/lib/module/core/pipeline/run.js +114 -0
  63. package/lib/module/core/pipeline/run.js.map +1 -0
  64. package/lib/module/core/shims/pathops.py +181 -0
  65. package/lib/module/core/svg/layers.js +51 -0
  66. package/lib/module/core/svg/layers.js.map +1 -0
  67. package/lib/module/core/svg/svg_dom.js +83 -0
  68. package/lib/module/core/svg/svg_dom.js.map +1 -0
  69. package/lib/module/core/svg/svg_pathops.js +566 -0
  70. package/lib/module/core/svg/svg_pathops.js.map +1 -0
  71. package/lib/module/core/tsconfig.json +32 -0
  72. package/lib/module/core/types.js +2 -0
  73. package/lib/module/core/types.js.map +1 -0
  74. package/lib/module/createNanoIconsSet.js +84 -0
  75. package/lib/module/createNanoIconsSet.js.map +1 -0
  76. package/lib/module/index.js +5 -0
  77. package/lib/module/index.js.map +1 -0
  78. package/lib/module/index.node.js +13 -0
  79. package/lib/module/index.node.js.map +1 -0
  80. package/lib/module/package.json +1 -0
  81. package/lib/module/utils/fingerPrint.js +17 -0
  82. package/lib/module/utils/fingerPrint.js.map +1 -0
  83. package/lib/module/utils/parse.js +53 -0
  84. package/lib/module/utils/parse.js.map +1 -0
  85. package/lib/typescript/__tests__/build.unit.test.d.ts +3 -0
  86. package/lib/typescript/__tests__/build.unit.test.d.ts.map +1 -0
  87. package/lib/typescript/__tests__/clippath.e2e.test.d.ts +3 -0
  88. package/lib/typescript/__tests__/clippath.e2e.test.d.ts.map +1 -0
  89. package/lib/typescript/__tests__/fingerprint.unit.test.d.ts +3 -0
  90. package/lib/typescript/__tests__/fingerprint.unit.test.d.ts.map +1 -0
  91. package/lib/typescript/__tests__/pipeline.e2e.test.d.ts +3 -0
  92. package/lib/typescript/__tests__/pipeline.e2e.test.d.ts.map +1 -0
  93. package/lib/typescript/__tests__/placement.unit.test.d.ts +3 -0
  94. package/lib/typescript/__tests__/placement.unit.test.d.ts.map +1 -0
  95. package/lib/typescript/__tests__/svg_dom.unit.test.d.ts +3 -0
  96. package/lib/typescript/__tests__/svg_dom.unit.test.d.ts.map +1 -0
  97. package/lib/typescript/cli/build.d.ts +29 -0
  98. package/lib/typescript/cli/build.d.ts.map +1 -0
  99. package/lib/typescript/cli/logger.d.ts +28 -0
  100. package/lib/typescript/cli/logger.d.ts.map +1 -0
  101. package/lib/typescript/package.json +1 -0
  102. package/lib/typescript/src/const/colors.d.ts +2 -0
  103. package/lib/typescript/src/const/colors.d.ts.map +1 -0
  104. package/lib/typescript/src/core/font/compile.d.ts +10 -0
  105. package/lib/typescript/src/core/font/compile.d.ts.map +1 -0
  106. package/lib/typescript/src/core/font/metrics.d.ts +2 -0
  107. package/lib/typescript/src/core/font/metrics.d.ts.map +1 -0
  108. package/lib/typescript/src/core/pipeline/config.d.ts +15 -0
  109. package/lib/typescript/src/core/pipeline/config.d.ts.map +1 -0
  110. package/lib/typescript/src/core/pipeline/index.d.ts +4 -0
  111. package/lib/typescript/src/core/pipeline/index.d.ts.map +1 -0
  112. package/lib/typescript/src/core/pipeline/managers.d.ts +12 -0
  113. package/lib/typescript/src/core/pipeline/managers.d.ts.map +1 -0
  114. package/lib/typescript/src/core/pipeline/run.d.ts +15 -0
  115. package/lib/typescript/src/core/pipeline/run.d.ts.map +1 -0
  116. package/lib/typescript/src/core/svg/layers.d.ts +25 -0
  117. package/lib/typescript/src/core/svg/layers.d.ts.map +1 -0
  118. package/lib/typescript/src/core/svg/svg_dom.d.ts +23 -0
  119. package/lib/typescript/src/core/svg/svg_dom.d.ts.map +1 -0
  120. package/lib/typescript/src/core/svg/svg_pathops.d.ts +22 -0
  121. package/lib/typescript/src/core/svg/svg_pathops.d.ts.map +1 -0
  122. package/lib/typescript/src/core/types.d.ts +121 -0
  123. package/lib/typescript/src/core/types.d.ts.map +1 -0
  124. package/lib/typescript/src/createNanoIconsSet.d.ts +19 -0
  125. package/lib/typescript/src/createNanoIconsSet.d.ts.map +1 -0
  126. package/lib/typescript/src/index.d.ts +3 -0
  127. package/lib/typescript/src/index.d.ts.map +1 -0
  128. package/lib/typescript/src/index.node.d.ts +2 -0
  129. package/lib/typescript/src/index.node.d.ts.map +1 -0
  130. package/lib/typescript/src/utils/fingerPrint.d.ts +2 -0
  131. package/lib/typescript/src/utils/fingerPrint.d.ts.map +1 -0
  132. package/lib/typescript/src/utils/parse.d.ts +3 -0
  133. package/lib/typescript/src/utils/parse.d.ts.map +1 -0
  134. package/package.json +160 -1
  135. package/plugin/src/buildFonts.ts +29 -0
  136. package/plugin/src/index.ts +68 -0
  137. package/plugin/src/types.ts +33 -0
  138. package/plugin/src/withNanoIconsFontLinking.ts +119 -0
  139. package/plugin/tsconfig.json +9 -0
  140. package/scripts/cli.ts +34 -0
  141. package/scripts/tsconfig.json +25 -0
  142. package/src/const/colors.ts +150 -0
  143. package/src/core/font/compile.ts +96 -0
  144. package/src/core/font/metrics.ts +44 -0
  145. package/src/core/pipeline/config.ts +24 -0
  146. package/src/core/pipeline/index.ts +3 -0
  147. package/src/core/pipeline/managers.ts +114 -0
  148. package/src/core/pipeline/run.ts +151 -0
  149. package/src/core/shims/pathops.py +181 -0
  150. package/src/core/svg/layers.ts +66 -0
  151. package/src/core/svg/svg_dom.ts +99 -0
  152. package/src/core/svg/svg_pathops.ts +796 -0
  153. package/src/core/tsconfig.json +32 -0
  154. package/src/core/types.ts +138 -0
  155. package/src/createNanoIconsSet.tsx +131 -0
  156. package/src/index.node.ts +14 -0
  157. package/src/index.ts +7 -0
  158. package/src/utils/fingerPrint.ts +20 -0
  159. package/src/utils/parse.ts +67 -0
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ import { forwardRef } from 'react';
4
+ import { Platform, Text, View, useWindowDimensions } from 'react-native';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ const DEFAULT_ICON_SIZE = 12;
7
+ export function createIconSet(glyphMap) {
8
+ const fontBasename = glyphMap.meta.fontFamily;
9
+ const fontReference = Platform.select({
10
+ windows: `/Assets/${fontBasename}`,
11
+ android: fontBasename,
12
+ default: fontBasename
13
+ });
14
+ const styleOverrides = {
15
+ fontFamily: fontReference,
16
+ fontWeight: 'normal',
17
+ fontStyle: 'normal',
18
+ position: 'absolute',
19
+ includeFontPadding: false,
20
+ bottom: 0
21
+ };
22
+ const resolveEntry = name => {
23
+ return glyphMap.icons[name] ?? {
24
+ adv: glyphMap.meta.upm,
25
+ layers: [{
26
+ codepoint: 63,
27
+ color: 'black'
28
+ }] // "?"
29
+ };
30
+ };
31
+ const Icon = ({
32
+ name,
33
+ size = DEFAULT_ICON_SIZE,
34
+ colorPalette,
35
+ style,
36
+ allowFontScaling = true,
37
+ innerRef,
38
+ ...props
39
+ }) => {
40
+ const {
41
+ fontScale
42
+ } = useWindowDimensions();
43
+ const entry = resolveEntry(name);
44
+ const layers = entry.layers ?? [];
45
+ const scaledSize = allowFontScaling ? size * fontScale : size;
46
+ const width = entry.adv / glyphMap.meta.upm * scaledSize;
47
+ const containerProps = {
48
+ style: {
49
+ height: scaledSize,
50
+ width,
51
+ bottom: 0
52
+ }
53
+ };
54
+ const lastPaletteColor = colorPalette?.length ? colorPalette[colorPalette.length - 1] : undefined;
55
+ return /*#__PURE__*/_jsx(View, {
56
+ nativeID: `nano-icon-container-${String(name)}`,
57
+ ref: innerRef,
58
+ ...containerProps,
59
+ children: layers.map(({
60
+ codepoint,
61
+ color: srcColor
62
+ }, i) => {
63
+ const layerColor = colorPalette?.[i] ?? lastPaletteColor ?? srcColor ?? 'black';
64
+ return /*#__PURE__*/_jsx(Text, {
65
+ selectable: false,
66
+ ...props,
67
+ allowFontScaling: allowFontScaling,
68
+ style: [style, styleOverrides, {
69
+ fontSize: size,
70
+ color: layerColor
71
+ }],
72
+ children: String.fromCodePoint(codepoint)
73
+ }, `${codepoint}-${i}`);
74
+ })
75
+ });
76
+ };
77
+ const WrappedIcon = /*#__PURE__*/forwardRef((props, ref) => /*#__PURE__*/_jsx(Icon, {
78
+ innerRef: ref,
79
+ ...props
80
+ }));
81
+ WrappedIcon.displayName = `NanoIcon(${fontBasename})`;
82
+ return WrappedIcon;
83
+ }
84
+ //# sourceMappingURL=createNanoIconsSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","Platform","Text","View","useWindowDimensions","jsx","_jsx","DEFAULT_ICON_SIZE","createIconSet","glyphMap","fontBasename","meta","fontFamily","fontReference","select","windows","android","default","styleOverrides","fontWeight","fontStyle","position","includeFontPadding","bottom","resolveEntry","name","icons","adv","upm","layers","codepoint","color","Icon","size","colorPalette","style","allowFontScaling","innerRef","props","fontScale","entry","scaledSize","width","containerProps","height","lastPaletteColor","length","undefined","nativeID","String","ref","children","map","srcColor","i","layerColor","selectable","fontSize","fromCodePoint","WrappedIcon","displayName"],"sourceRoot":"../../src","sources":["createNanoIconsSet.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ // Extension-less so Metro can resolve when example uses path alias to ../src
4
+ export { createIconSet as createNanoIconSet } from "./createNanoIconsSet.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createIconSet","createNanoIconSet"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,SACEA,aAAa,IAAIC,iBAAiB,QAG7B,yBAAsB","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ const createNanoIconSet = (...args) => {
4
+ const {
5
+ createIconSet
6
+ } = require('./createNanoIconsSet');
7
+ return createIconSet(...args);
8
+ };
9
+ const plugin = require('./plugin/src/index').default;
10
+ module.exports = Object.assign(plugin, {
11
+ createNanoIconSet
12
+ });
13
+ //# sourceMappingURL=index.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createNanoIconSet","args","createIconSet","require","plugin","default","module","exports","Object","assign"],"sourceRoot":"../../src","sources":["index.node.ts"],"mappings":";;AAGA,MAAMA,iBAAiB,GAAGA,CAAC,GAAGC,IAAe,KAAK;EAChD,MAAM;IAAEC;EAAc,CAAC,GAAGC,OAAO,CAAC,sBAAsB,CAEvD;EACD,OAAOD,aAAa,CAAC,GAAGD,IAAI,CAAC;AAC/B,CAAC;AAED,MAAMG,MAAM,GAAID,OAAO,CAAC,oBAAoB,CAAC,CAC1CE,OAAO;AAEVC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,MAAM,EAAE;EAAEJ;AAAkB,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ const crypto = require('crypto');
4
+ const fs = require('fs');
5
+ const path = require('path');
6
+ export function getFingerprintSync(dir) {
7
+ const files = fs.readdirSync(dir).filter(f => f.endsWith('.svg')).sort();
8
+ const hash = crypto.createHash('sha256');
9
+ for (const file of files) {
10
+ const filePath = path.join(dir, file);
11
+ // Hash both path and content
12
+ hash.update(file);
13
+ hash.update(fs.readFileSync(filePath));
14
+ }
15
+ return hash.digest('hex');
16
+ }
17
+ //# sourceMappingURL=fingerPrint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["crypto","require","fs","path","getFingerprintSync","dir","files","readdirSync","filter","f","endsWith","sort","hash","createHash","file","filePath","join","update","readFileSync","digest"],"sourceRoot":"../../../src","sources":["utils/fingerPrint.ts"],"mappings":";;AAAA,MAAMA,MAAM,GAAGC,OAAO,CAAC,QAAQ,CAAC;AAChC,MAAMC,EAAE,GAAGD,OAAO,CAAC,IAAI,CAAC;AACxB,MAAME,IAAI,GAAGF,OAAO,CAAC,MAAM,CAAC;AAE5B,OAAO,SAASG,kBAAkBA,CAACC,GAAW,EAAU;EACtD,MAAMC,KAAK,GAAGJ,EAAE,CACbK,WAAW,CAACF,GAAG,CAAC,CAChBG,MAAM,CAAEC,CAAS,IAAKA,CAAC,CAACC,QAAQ,CAAC,MAAM,CAAC,CAAC,CACzCC,IAAI,CAAC,CAAC;EACT,MAAMC,IAAI,GAAGZ,MAAM,CAACa,UAAU,CAAC,QAAQ,CAAC;EAExC,KAAK,MAAMC,IAAI,IAAIR,KAAK,EAAE;IACxB,MAAMS,QAAQ,GAAGZ,IAAI,CAACa,IAAI,CAACX,GAAG,EAAES,IAAI,CAAC;IACrC;IACAF,IAAI,CAACK,MAAM,CAACH,IAAI,CAAC;IACjBF,IAAI,CAACK,MAAM,CAACf,EAAE,CAACgB,YAAY,CAACH,QAAQ,CAAC,CAAC;EACxC;EAEA,OAAOH,IAAI,CAACO,MAAM,CAAC,KAAK,CAAC;AAC3B","ignoreList":[]}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ import { CSS_NAMED_COLORS } from "../const/colors.js";
4
+
5
+ // e.g. u0041.svg -> 65
6
+ export function parseCodepointFromFilename(filename) {
7
+ const m = /^u([0-9a-fA-F]+)\.svg$/.exec(filename);
8
+ if (!m) throw new Error(`Unexpected glyph filename: ${filename}`);
9
+ return parseInt(m[1], 16);
10
+ }
11
+
12
+ // e.g. #ff0000 -> [255, 0, 0, 1], rgba(255, 0, 0, 0.5) -> [255, 0, 0, 0.5], rgb(255, 0, 0) -> [255, 0, 0, 1], blue -> [0, 0, 255, 1] etc.
13
+ export function parseColor(color) {
14
+ const c = color.trim();
15
+
16
+ // rgba(r,g,b,a)
17
+ if (c.indexOf('rgba(') === 0) {
18
+ const inner = c.slice(5, c.indexOf(')'));
19
+ const p = inner.split(',');
20
+ return [+(p[0] ?? '0'), +(p[1] ?? '0'), +(p[2] ?? '0'), +(p[3] ?? '1')];
21
+ }
22
+
23
+ // rgb(r,g,b)
24
+ if (c.indexOf('rgb(') === 0) {
25
+ const inner = c.slice(4, c.indexOf(')'));
26
+ const p = inner.split(',');
27
+ return [+(p[0] ?? '0'), +(p[1] ?? '0'), +(p[2] ?? '0'), 1];
28
+ }
29
+
30
+ // hex — first char is '#' (charCode 35)
31
+ if (c.charCodeAt(0) === 35) {
32
+ if (c.length === 9) {
33
+ // #rrggbbaa
34
+ return [parseInt(c.slice(1, 3), 16), parseInt(c.slice(3, 5), 16), parseInt(c.slice(5, 7), 16), parseInt(c.slice(7, 9), 16) / 255];
35
+ }
36
+ if (c.length === 7) {
37
+ // #rrggbb
38
+ return [parseInt(c.slice(1, 3), 16), parseInt(c.slice(3, 5), 16), parseInt(c.slice(5, 7), 16), 1];
39
+ }
40
+ if (c.length === 4) {
41
+ // #rgb — expand each nibble × 17
42
+ return [parseInt(c.slice(1, 2), 16) * 17, parseInt(c.slice(2, 3), 16) * 17, parseInt(c.slice(3, 4), 16) * 17, 1];
43
+ }
44
+ }
45
+
46
+ // named color lookup (O(1))
47
+ const named = CSS_NAMED_COLORS[c.toLowerCase()];
48
+ if (named !== undefined) return [named[0], named[1], named[2], 1];
49
+
50
+ // unknown — SVG default is opaque black
51
+ return [0, 0, 0, 1];
52
+ }
53
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CSS_NAMED_COLORS","parseCodepointFromFilename","filename","m","exec","Error","parseInt","parseColor","color","c","trim","indexOf","inner","slice","p","split","charCodeAt","length","named","toLowerCase","undefined"],"sourceRoot":"../../../src","sources":["utils/parse.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ /** @jest-environment node */
2
+ export {};
3
+ //# sourceMappingURL=build.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.unit.test.d.ts","sourceRoot":"","sources":["../../../__tests__/build.unit.test.ts"],"names":[],"mappings":"AAAA,6BAA6B"}
@@ -0,0 +1,3 @@
1
+ /** @jest-environment node */
2
+ export {};
3
+ //# sourceMappingURL=clippath.e2e.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clippath.e2e.test.d.ts","sourceRoot":"","sources":["../../../__tests__/clippath.e2e.test.ts"],"names":[],"mappings":"AAAA,6BAA6B"}
@@ -0,0 +1,3 @@
1
+ /** @jest-environment node */
2
+ export {};
3
+ //# sourceMappingURL=fingerprint.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fingerprint.unit.test.d.ts","sourceRoot":"","sources":["../../../__tests__/fingerprint.unit.test.ts"],"names":[],"mappings":"AAAA,6BAA6B"}
@@ -0,0 +1,3 @@
1
+ /** @jest-environment node */
2
+ export {};
3
+ //# sourceMappingURL=pipeline.e2e.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.e2e.test.d.ts","sourceRoot":"","sources":["../../../__tests__/pipeline.e2e.test.ts"],"names":[],"mappings":"AAAA,6BAA6B"}
@@ -0,0 +1,3 @@
1
+ /** @jest-environment node */
2
+ export {};
3
+ //# sourceMappingURL=placement.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placement.unit.test.d.ts","sourceRoot":"","sources":["../../../__tests__/placement.unit.test.ts"],"names":[],"mappings":"AAAA,6BAA6B"}
@@ -0,0 +1,3 @@
1
+ /** @jest-environment node */
2
+ export {};
3
+ //# sourceMappingURL=svg_dom.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg_dom.unit.test.d.ts","sourceRoot":"","sources":["../../../__tests__/svg_dom.unit.test.ts"],"names":[],"mappings":"AAAA,6BAA6B"}
@@ -0,0 +1,29 @@
1
+ import type { NanoLogger } from './logger.js';
2
+ export type IconSetConfig = {
3
+ /** Path to folder of SVG files (relative to project root). */
4
+ inputDir: string;
5
+ /** Font family name (used for TTF and glyphmap filenames). */
6
+ fontFamily: string;
7
+ /** Path where .ttf and .glyphmap.json will be saved. Defaults to a sibling nanoicons folder relative to inputDir. */
8
+ outputDir?: string;
9
+ /** Units per em (default 1024). */
10
+ upm?: number;
11
+ /** Safe zone inside UPM for glyphs (default 1020). */
12
+ safeZone?: number;
13
+ /** First Unicode codepoint for glyphs (default 0xe900). Hex string or number. */
14
+ startUnicode?: number | string;
15
+ };
16
+ export type BuiltFont = {
17
+ fontFamily: string;
18
+ ttfPath: string;
19
+ glyphmapPath: string;
20
+ };
21
+ /**
22
+ * Build TTF + glyphmap for all icon sets using a single Pyodide/PathKit instance.
23
+ * Output is placed in a "nanoicons" folder next to each input dir (sibling to inputDir).
24
+ * Skips generation for a set if that output folder already contains the expected .ttf and .glyphmap.json.
25
+ */
26
+ export declare function buildAllFonts(iconSets: IconSetConfig[], projectRoot: string, options?: {
27
+ logger?: NanoLogger;
28
+ }): Promise<BuiltFont[]>;
29
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../cli/build.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,MAAM,aAAa,GAAG;IAC1B,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,qHAAqH;IACrH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAkCF;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,aAAa,EAAE,EACzB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,GAChC,OAAO,CAAC,SAAS,EAAE,CAAC,CAqEtB"}
@@ -0,0 +1,28 @@
1
+ export type LogLevel = 'normal' | 'verbose';
2
+ export type NanoLogger = {
3
+ start: (msg: string) => void;
4
+ update: (msg: string) => void;
5
+ succeed: (msg: string) => void;
6
+ fail: (msg: string) => void;
7
+ /** Only printed when level is 'verbose'. */
8
+ info: (msg: string) => void;
9
+ warn: (msg: string) => void;
10
+ };
11
+ /**
12
+ * Create an ora spinner-backed logger.
13
+ * ora and chalk are ESM-only so they are loaded via dynamic import;
14
+ * this factory must be awaited once before use.
15
+ */
16
+ export declare function createOraLogger(level: LogLevel): Promise<NanoLogger>;
17
+ /**
18
+ * Create a plain-text logger suitable for Expo prebuild context.
19
+ * No ora spinner — only success/error lines are printed to avoid
20
+ * disrupting Expo's own output.
21
+ */
22
+ export declare function createQuietLogger(level: LogLevel): Promise<NanoLogger>;
23
+ /**
24
+ * Infer log level from the Expo CLI environment.
25
+ * Expo uses EXPO_DEBUG=1 for verbose/debug output.
26
+ */
27
+ export declare function detectExpoLogLevel(): LogLevel;
28
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../cli/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,4CAA4C;IAC5C,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B,CAAC;AAIF;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAgC1E;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CA2B5E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,QAAQ,CAE7C"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,2 @@
1
+ export declare const CSS_NAMED_COLORS: Record<string, [number, number, number]>;
2
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../../src/const/colors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAqJrE,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare function compileTtfFromGlyphSVGs(opts: {
2
+ glyphDir: string;
3
+ outTtfPath: string;
4
+ fontName: string;
5
+ upm: number;
6
+ ascent: number;
7
+ descent: number;
8
+ lineGap?: number;
9
+ }): Promise<void>;
10
+ //# sourceMappingURL=compile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../../../src/core/font/compile.ts"],"names":[],"mappings":"AAiCA,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDhB"}
@@ -0,0 +1,2 @@
1
+ export declare function forceTtfMetrics(ttfBuffer: Buffer, upm: number, ascent: number, descent: number, lineGap: number): Buffer;
2
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../../src/core/font/metrics.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,MAAM,CAmCR"}
@@ -0,0 +1,15 @@
1
+ export type PipelineConfig = {
2
+ fontFamily: string;
3
+ upm: number;
4
+ safeZone: number;
5
+ startUnicode: number;
6
+ };
7
+ export type PipelinePaths = {
8
+ inputDir: string;
9
+ outputDir: string;
10
+ tempDir: string;
11
+ };
12
+ export declare function ensureEmptyDir(dir: string): void;
13
+ /** Create directory if it does not exist; do not remove existing contents (for shared output dirs). */
14
+ export declare function ensureDir(dir: string): void;
15
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/core/pipeline/config.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAGhD;AAED,uGAAuG;AACvG,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C"}
@@ -0,0 +1,4 @@
1
+ export { runPipeline, type PipelineResult } from './run.js';
2
+ export type { PipelineConfig, PipelinePaths } from './config.js';
3
+ export { ensureEmptyDir } from './config.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/pipeline/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAC5D,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { PathKitModule, PyodideModule } from '../types.js';
2
+ export declare class PathKitManager {
3
+ private static instance;
4
+ static getInstance(): Promise<PathKitModule>;
5
+ }
6
+ export declare class PyodideManager {
7
+ private static instance;
8
+ static getInstance(): Promise<PyodideModule>;
9
+ static picoFromFile(hostFilePath: string, content?: string): Promise<string>;
10
+ }
11
+ export declare function picoFromFile(hostFilePath: string, content?: string): Promise<string>;
12
+ //# sourceMappingURL=managers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managers.d.ts","sourceRoot":"","sources":["../../../../../src/core/pipeline/managers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAYhE,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA8B;WAExC,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC;CAyBnD;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA8B;WAExC,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC;WA2CrC,YAAY,CACvB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;CAYnB;AAED,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAEjB"}
@@ -0,0 +1,15 @@
1
+ import { type PipelineConfig, type PipelinePaths } from './config.js';
2
+ import type { NanoLogger } from '../types.js';
3
+ export type PipelineResult = {
4
+ ttfPath: string;
5
+ glyphmapPath: string;
6
+ };
7
+ /**
8
+ * Run the font pipeline with given config and paths.
9
+ * Uses the singleton Pyodide/PathKit instance (initialized on first call).
10
+ */
11
+ export declare function runPipeline(config: PipelineConfig, paths: PipelinePaths, options?: {
12
+ logger?: NanoLogger;
13
+ inputHash?: string;
14
+ }): Promise<PipelineResult>;
15
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../../../src/core/pipeline/run.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AASrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD,OAAO,CAAC,cAAc,CAAC,CAkHzB"}
@@ -0,0 +1,25 @@
1
+ export declare function computePlacement(opts: {
2
+ upm: number;
3
+ safeZone: number;
4
+ viewBox: [number, number, number, number];
5
+ }): {
6
+ vx: number;
7
+ vy: number;
8
+ scale: number;
9
+ xOff: number;
10
+ yOff: number;
11
+ adv: number;
12
+ };
13
+ export declare function writeLayerSvg(opts: {
14
+ tempDir: string;
15
+ upm: number;
16
+ adv: number;
17
+ vx: number;
18
+ vy: number;
19
+ scale: number;
20
+ xOff: number;
21
+ yOff: number;
22
+ d: string;
23
+ codepoint: number;
24
+ }): Promise<void>;
25
+ //# sourceMappingURL=layers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../../../../../src/core/svg/layers.ts"],"names":[],"mappings":"AAOA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;;;;;;;EAyBA;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhB"}
@@ -0,0 +1,23 @@
1
+ export type ParsedFlatSvg = {
2
+ viewBox: [number, number, number, number];
3
+ paths: Array<{
4
+ d: string;
5
+ fill: string | null;
6
+ }>;
7
+ };
8
+ export declare function calculateOpColor(fill: string | null, opacity: number, el: Element): `rgba(${number},${number},${number},${number})`;
9
+ export declare const parsePath: (p: Element) => {
10
+ d: string;
11
+ fill: string | null;
12
+ };
13
+ export declare function parseFlattenedSvg(flattenedSvg: string): ParsedFlatSvg;
14
+ export declare function shouldSkipPath(d: string, fill: string | null): boolean;
15
+ export type SvgValidation = {
16
+ valid: true;
17
+ } | {
18
+ valid: false;
19
+ reason: string;
20
+ };
21
+ export declare function validateSvg(content: string): SvgValidation;
22
+ export declare function preprocessSvg(content: string): string;
23
+ //# sourceMappingURL=svg_dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg_dom.d.ts","sourceRoot":"","sources":["../../../../../src/core/svg/svg_dom.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,KAAK,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CAClD,CAAC;AAcF,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,OAAO,GACV,QAAQ,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,GAAG,CAKjD;AAED,eAAO,MAAM,SAAS,GAAI,GAAG,OAAO,KAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAqBtE,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAoBrE;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAItE;AAED,MAAM,MAAM,aAAa,GAAG;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAQ1D;AAGD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGrD"}
@@ -0,0 +1,22 @@
1
+ import type { PathKitModule, WrappedPath, Point } from '../types.js';
2
+ export declare function buildPathopsBackend(PathKit: PathKitModule): {
3
+ create_path(fillTypeInt: number): WrappedPath;
4
+ clone_path(h: WrappedPath): WrappedPath;
5
+ delete_path(h: WrappedPath): void;
6
+ get_fill_type(h: WrappedPath): number;
7
+ set_fill_type(h: WrappedPath, fillTypeInt: number): true;
8
+ move_to(h: WrappedPath, x: number, y: number): void;
9
+ line_to(h: WrappedPath, x: number, y: number): void;
10
+ quad_to(h: WrappedPath, x1: number, y1: number, x2: number, y2: number): void;
11
+ cubic_to(h: WrappedPath, x1: number, y1: number, x2: number, y2: number, x3: number, y3: number): void;
12
+ close(h: WrappedPath): void;
13
+ simplify(h: WrappedPath, fixWinding?: boolean): boolean;
14
+ stroke(h: WrappedPath, width: number, capInt: number, joinInt: number, miterLimit: number, dashArray: unknown, dashOffset: number): WrappedPath;
15
+ convert_conics_to_quads(_h: WrappedPath, _tol: number): void;
16
+ transform(h: WrappedPath, a: number, b: number, c: number, d: number, e: number, f: number): WrappedPath;
17
+ op(aHandle: WrappedPath, bHandle: WrappedPath, opInt: number): WrappedPath | null;
18
+ bounds(h: WrappedPath): [number, number, number, number];
19
+ area(h: WrappedPath): number;
20
+ iter_segments(h: WrappedPath): Array<[number, Point[]]>;
21
+ };
22
+ //# sourceMappingURL=svg_pathops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg_pathops.d.ts","sourceRoot":"","sources":["../../../../../src/core/svg/svg_pathops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EAEb,WAAW,EACX,KAAK,EACN,MAAM,aAAa,CAAC;AAscrB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa;6BAgH7B,MAAM,GAAG,WAAW;kBAM/B,WAAW,GAAG,WAAW;mBAIxB,WAAW,GAAG,IAAI;qBAIhB,WAAW,GAAG,MAAM;qBAKpB,WAAW,eAAe,MAAM,GAAG,IAAI;eAK7C,WAAW,KAAK,MAAM,KAAK,MAAM,GAAG,IAAI;eAKxC,WAAW,KAAK,MAAM,KAAK,MAAM,GAAG,IAAI;eAK9C,WAAW,MACV,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACT,IAAI;gBAKF,WAAW,MACV,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACT,IAAI;aAIE,WAAW,GAAG,IAAI;gBAIf,WAAW,yBAAuB,OAAO;cAsBhD,WAAW,SACP,MAAM,UACL,MAAM,WACL,MAAM,cACH,MAAM,aACP,OAAO,cACN,MAAM,GACjB,WAAW;gCAqDc,WAAW,QAAQ,MAAM,GAAG,IAAI;iBAKvD,WAAW,KACX,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACR,WAAW;gBAYH,WAAW,WACX,WAAW,SACb,MAAM,GACZ,WAAW,GAAG,IAAI;cAwBX,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAKhD,WAAW,GAAG,MAAM;qBAeX,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;EAW1D"}