react-native-nano-icons 0.1.8 → 0.2.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.
- package/README.md +64 -2
- package/android/src/main/java/com/nanoicons/NanoIconsFontLoaderModule.kt +58 -0
- package/android/src/main/java/com/nanoicons/NanoIconsPackage.kt +19 -2
- package/ios/NanoIconView.h +5 -0
- package/ios/NanoIconView.mm +35 -9
- package/ios/NanoIconsFontLoader.h +11 -0
- package/ios/NanoIconsFontLoader.mm +110 -0
- package/lib/commonjs/cli/build.d.ts +3 -0
- package/lib/commonjs/cli/build.js +8 -4
- package/lib/commonjs/cli/config.d.ts +1 -0
- package/lib/commonjs/cli/config.js +10 -0
- package/lib/commonjs/cli/expoConfig.d.ts +8 -0
- package/lib/commonjs/cli/expoConfig.js +34 -0
- package/lib/commonjs/cli/index.d.ts +2 -1
- package/lib/commonjs/cli/index.js +4 -1
- package/lib/commonjs/cli/link.js +32 -22
- package/lib/commonjs/plugin/src/types.d.ts +9 -0
- package/lib/commonjs/plugin/src/withNanoIconsFontLinking.d.ts +5 -0
- package/lib/commonjs/plugin/src/withNanoIconsFontLinking.js +24 -10
- package/lib/commonjs/scripts/cli.js +23 -11
- package/lib/commonjs/src/core/pipeline/config.d.ts +1 -0
- package/lib/commonjs/src/core/pipeline/managers.js +1 -2
- package/lib/commonjs/src/core/pipeline/run.js +1 -0
- package/lib/commonjs/src/core/svg/svg_dom.d.ts +1 -0
- package/lib/commonjs/src/core/svg/svg_dom.js +22 -17
- package/lib/commonjs/src/core/svg/svg_pathops.js +30 -16
- package/lib/commonjs/src/core/types.d.ts +3 -0
- package/lib/module/const/codegenPrimitives.js +2 -0
- package/lib/module/const/codegenPrimitives.js.map +1 -0
- package/lib/module/core/font/compile.js.map +1 -1
- package/lib/module/core/pipeline/config.js.map +1 -1
- package/lib/module/core/pipeline/managers.js.map +1 -1
- package/lib/module/core/pipeline/run.js +4 -1
- package/lib/module/core/pipeline/run.js.map +1 -1
- package/lib/module/core/svg/layers.js.map +1 -1
- package/lib/module/core/svg/svg_dom.js +19 -19
- package/lib/module/core/svg/svg_dom.js.map +1 -1
- package/lib/module/core/svg/svg_pathops.js.map +1 -1
- package/lib/module/createNanoIconsSet.js +2 -2
- package/lib/module/createNanoIconsSet.js.map +1 -1
- package/lib/module/createNanoIconsSet.native.js +43 -16
- package/lib/module/createNanoIconsSet.native.js.map +1 -1
- package/lib/module/createNanoIconsSet.shared.js +49 -20
- package/lib/module/createNanoIconsSet.shared.js.map +1 -1
- package/lib/module/createNanoIconsSet.web.js +78 -0
- package/lib/module/createNanoIconsSet.web.js.map +1 -0
- package/lib/module/loadDynamicFont.js +118 -0
- package/lib/module/loadDynamicFont.js.map +1 -0
- package/lib/module/specs/NanoIconViewNativeComponent.ts +9 -8
- package/lib/module/specs/NativeNanoIconsFontLoader.js +7 -0
- package/lib/module/specs/NativeNanoIconsFontLoader.js.map +1 -0
- package/lib/module/utils/glyphRuntime.js +37 -0
- package/lib/module/utils/glyphRuntime.js.map +1 -0
- package/lib/typescript/__tests__/glyphRuntime.unit.test.d.ts +2 -0
- package/lib/typescript/__tests__/glyphRuntime.unit.test.d.ts.map +1 -0
- package/lib/typescript/__tests__/link.unit.test.d.ts +3 -0
- package/lib/typescript/__tests__/link.unit.test.d.ts.map +1 -0
- package/lib/typescript/__tests__/loadDynamicFont.unit.test.d.ts +2 -0
- package/lib/typescript/__tests__/loadDynamicFont.unit.test.d.ts.map +1 -0
- package/lib/typescript/cli/build.d.ts +3 -0
- package/lib/typescript/cli/build.d.ts.map +1 -1
- package/lib/typescript/cli/link.d.ts +12 -0
- package/lib/typescript/cli/link.d.ts.map +1 -0
- package/lib/typescript/src/const/codegenPrimitives.d.ts +3 -0
- package/lib/typescript/src/const/codegenPrimitives.d.ts.map +1 -0
- package/lib/typescript/src/core/font/compile.d.ts.map +1 -1
- package/lib/typescript/src/core/pipeline/config.d.ts +1 -0
- package/lib/typescript/src/core/pipeline/config.d.ts.map +1 -1
- package/lib/typescript/src/core/pipeline/managers.d.ts.map +1 -1
- package/lib/typescript/src/core/pipeline/run.d.ts.map +1 -1
- package/lib/typescript/src/core/svg/svg_dom.d.ts +1 -0
- package/lib/typescript/src/core/svg/svg_dom.d.ts.map +1 -1
- package/lib/typescript/src/core/svg/svg_pathops.d.ts.map +1 -1
- package/lib/typescript/src/core/types.d.ts +3 -0
- package/lib/typescript/src/core/types.d.ts.map +1 -1
- package/lib/typescript/src/createNanoIconsSet.d.ts +1 -0
- package/lib/typescript/src/createNanoIconsSet.d.ts.map +1 -1
- package/lib/typescript/src/createNanoIconsSet.native.d.ts +1 -0
- package/lib/typescript/src/createNanoIconsSet.native.d.ts.map +1 -1
- package/lib/typescript/src/createNanoIconsSet.shared.d.ts +11 -0
- package/lib/typescript/src/createNanoIconsSet.shared.d.ts.map +1 -1
- package/lib/typescript/src/createNanoIconsSet.web.d.ts +7 -0
- package/lib/typescript/src/createNanoIconsSet.web.d.ts.map +1 -0
- package/lib/typescript/src/loadDynamicFont.d.ts +28 -0
- package/lib/typescript/src/loadDynamicFont.d.ts.map +1 -0
- package/lib/typescript/src/specs/NanoIconViewNativeComponent.d.ts +9 -8
- package/lib/typescript/src/specs/NanoIconViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/specs/NativeNanoIconsFontLoader.d.ts +8 -0
- package/lib/typescript/src/specs/NativeNanoIconsFontLoader.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +7 -1
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/utils/glyphRuntime.d.ts +18 -0
- package/lib/typescript/src/utils/glyphRuntime.d.ts.map +1 -0
- package/package.json +8 -5
- package/plugin/src/types.ts +9 -0
- package/plugin/src/withNanoIconsFontLinking.ts +29 -10
- package/react-native-nano-icons.podspec +1 -1
- package/scripts/cli.ts +31 -11
- package/src/const/codegenPrimitives.ts +14 -0
- package/src/core/font/compile.ts +1 -2
- package/src/core/pipeline/config.ts +1 -0
- package/src/core/pipeline/managers.ts +5 -10
- package/src/core/pipeline/run.ts +11 -6
- package/src/core/svg/layers.ts +4 -4
- package/src/core/svg/svg_dom.ts +26 -23
- package/src/core/svg/svg_pathops.ts +50 -24
- package/src/core/types.ts +10 -2
- package/src/createNanoIconsSet.native.tsx +78 -26
- package/src/createNanoIconsSet.shared.tsx +93 -40
- package/src/createNanoIconsSet.tsx +9 -1
- package/src/createNanoIconsSet.web.tsx +109 -0
- package/src/loadDynamicFont.ts +162 -0
- package/src/specs/NanoIconViewNativeComponent.ts +9 -8
- package/src/specs/NativeNanoIconsFontLoader.ts +11 -0
- package/src/types.ts +5 -1
- package/src/utils/glyphRuntime.ts +46 -0
package/lib/commonjs/cli/link.js
CHANGED
|
@@ -53,11 +53,14 @@ async function linkAndroid(projectRoot, builtFonts) {
|
|
|
53
53
|
}
|
|
54
54
|
async function linkIos(projectRoot, builtFonts) {
|
|
55
55
|
const iosDir = node_path_1.default.join(projectRoot, 'ios');
|
|
56
|
-
const
|
|
56
|
+
const xcodeprojDir = node_fs_1.default
|
|
57
57
|
.readdirSync(iosDir, { withFileTypes: true })
|
|
58
|
-
.
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
.find((d) => d.name.endsWith('.xcodeproj'));
|
|
59
|
+
if (!xcodeprojDir)
|
|
60
|
+
return;
|
|
61
|
+
const appName = xcodeprojDir.name.replace(/\.xcodeproj$/, '');
|
|
62
|
+
const infoPlistPath = node_path_1.default.join(iosDir, appName, 'Info.plist');
|
|
63
|
+
if (!node_fs_1.default.existsSync(infoPlistPath))
|
|
61
64
|
return;
|
|
62
65
|
const fontNames = [];
|
|
63
66
|
const iosFontsStaging = node_path_1.default.join(iosDir, IOS_NANOICONS_FONTS_DIR);
|
|
@@ -67,7 +70,6 @@ async function linkIos(projectRoot, builtFonts) {
|
|
|
67
70
|
fontNames.push(name);
|
|
68
71
|
node_fs_1.default.copyFileSync(b.ttfPath, node_path_1.default.join(iosFontsStaging, name));
|
|
69
72
|
}
|
|
70
|
-
const infoPlistPath = node_path_1.default.join(iosDir, appDir.name, 'Info.plist');
|
|
71
73
|
const plistContent = node_fs_1.default.readFileSync(infoPlistPath, 'utf8');
|
|
72
74
|
const obj = plist.parse(plistContent);
|
|
73
75
|
const existing = Array.isArray(obj['UIAppFonts'])
|
|
@@ -79,25 +81,20 @@ async function linkIos(projectRoot, builtFonts) {
|
|
|
79
81
|
UIAppFonts: merged,
|
|
80
82
|
};
|
|
81
83
|
node_fs_1.default.writeFileSync(infoPlistPath, plist.build(updated), 'utf8');
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const
|
|
89
|
-
project.parseSync();
|
|
90
|
-
const hasPhase = Object.entries(project.hash.project.objects['PBXShellScriptBuildPhase'] ?? {}).some(([, v]) => typeof v === 'object' && v?.name?.includes(IOS_RUN_SCRIPT_PHASE_NAME));
|
|
91
|
-
if (!hasPhase) {
|
|
92
|
-
const script = `
|
|
84
|
+
const pbxprojPath = node_path_1.default.join(iosDir, xcodeprojDir.name, 'project.pbxproj');
|
|
85
|
+
const xcode = require('xcode');
|
|
86
|
+
const project = xcode.project(pbxprojPath);
|
|
87
|
+
project.parseSync();
|
|
88
|
+
const hasPhase = Object.entries(project.hash.project.objects['PBXShellScriptBuildPhase'] ?? {}).some(([, v]) => typeof v === 'object' && v?.name?.includes(IOS_RUN_SCRIPT_PHASE_NAME));
|
|
89
|
+
if (!hasPhase) {
|
|
90
|
+
const script = `
|
|
93
91
|
NANOICONS_DIR="\\\${PROJECT_DIR}/${IOS_NANOICONS_FONTS_DIR}"
|
|
94
92
|
if [ -d "$NANOICONS_DIR" ]; then
|
|
95
93
|
cp "$NANOICONS_DIR"/*.ttf "\\\${BUILT_PRODUCTS_DIR}/\\\${UNLOCALIZED_RESOURCES_FOLDER_PATH}/" 2>/dev/null || true
|
|
96
94
|
fi
|
|
97
95
|
`;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
96
|
+
project.addBuildPhase([], 'PBXShellScriptBuildPhase', IOS_RUN_SCRIPT_PHASE_NAME, project.getFirstTarget().uuid, { shellPath: '/bin/sh', shellScript: script });
|
|
97
|
+
node_fs_1.default.writeFileSync(pbxprojPath, project.writeSync(), 'utf8');
|
|
101
98
|
}
|
|
102
99
|
}
|
|
103
100
|
/**
|
|
@@ -111,6 +108,12 @@ async function linkIos(projectRoot, builtFonts) {
|
|
|
111
108
|
async function linkBare(projectRoot, builtFonts, logger) {
|
|
112
109
|
if (!builtFonts.length)
|
|
113
110
|
return;
|
|
111
|
+
const staticFonts = builtFonts.filter((b) => b.linking === 'static');
|
|
112
|
+
const dynamicFonts = builtFonts.filter((b) => b.linking === 'dynamic');
|
|
113
|
+
for (const b of dynamicFonts) {
|
|
114
|
+
const rel = node_path_1.default.relative(projectRoot, b.ttfPath);
|
|
115
|
+
logger.info(`${b.fontFamily}: dynamic linking — skipping native bundle. TTF available at ${rel}`);
|
|
116
|
+
}
|
|
114
117
|
const hasAndroid = node_fs_1.default.existsSync(node_path_1.default.join(projectRoot, 'android'));
|
|
115
118
|
const hasIos = node_fs_1.default.existsSync(node_path_1.default.join(projectRoot, 'ios'));
|
|
116
119
|
if (!hasAndroid && !hasIos) {
|
|
@@ -122,14 +125,21 @@ async function linkBare(projectRoot, builtFonts, logger) {
|
|
|
122
125
|
logger.info(`No native directories found — fonts saved to ${rel}/ (no native dirs, skipping link)`);
|
|
123
126
|
return;
|
|
124
127
|
}
|
|
128
|
+
if (!staticFonts.length) {
|
|
129
|
+
logger.succeed(`All ${dynamicFonts.length} font(s) use dynamic linking — nothing to bundle natively.`);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
125
132
|
const linkedPlatforms = [];
|
|
126
133
|
if (hasAndroid) {
|
|
127
|
-
await linkAndroid(projectRoot,
|
|
134
|
+
await linkAndroid(projectRoot, staticFonts);
|
|
128
135
|
linkedPlatforms.push('android');
|
|
129
136
|
}
|
|
130
137
|
if (hasIos) {
|
|
131
|
-
await linkIos(projectRoot,
|
|
138
|
+
await linkIos(projectRoot, staticFonts);
|
|
132
139
|
linkedPlatforms.push('ios');
|
|
133
140
|
}
|
|
134
|
-
|
|
141
|
+
const dynamicSuffix = dynamicFonts.length
|
|
142
|
+
? ` (${dynamicFonts.length} dynamic font${dynamicFonts.length === 1 ? '' : 's'} skipped)`
|
|
143
|
+
: '';
|
|
144
|
+
logger.succeed(`Linked fonts → ${linkedPlatforms.join(', ')}${dynamicSuffix}`);
|
|
135
145
|
}
|
|
@@ -14,6 +14,14 @@ export interface IconSetConfig {
|
|
|
14
14
|
safeZone?: number;
|
|
15
15
|
/** First Unicode codepoint for glyphs (default 0xe900). Hex string or number. */
|
|
16
16
|
startUnicode?: number | string;
|
|
17
|
+
/**
|
|
18
|
+
* Delivery mode for the generated TTF. Defaults to `'static'`.
|
|
19
|
+
*
|
|
20
|
+
* - `'static'`: TTF is bundled into the native app.
|
|
21
|
+
* - `'dynamic'`: TTF is excluded from native bundling - the host app is responsible for
|
|
22
|
+
* delivering it (e.g. via OTA) and registering it under the same font family name.
|
|
23
|
+
*/
|
|
24
|
+
linking?: 'static' | 'dynamic';
|
|
17
25
|
}
|
|
18
26
|
/**
|
|
19
27
|
* plugins: [ [ "react-native-nano-icons", { iconSets: [...] } ] ]
|
|
@@ -28,4 +36,5 @@ export interface BuiltFont {
|
|
|
28
36
|
fontFamily: string;
|
|
29
37
|
ttfPath: string;
|
|
30
38
|
glyphmapPath: string;
|
|
39
|
+
linking: 'static' | 'dynamic';
|
|
31
40
|
}
|
|
@@ -2,6 +2,11 @@ import { withXcodeProject, withDangerousMod } from '@expo/config-plugins';
|
|
|
2
2
|
import type { IconSetConfig } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Add TTFs to the iOS project (Resources group + UIAppFonts in Info.plist).
|
|
5
|
+
*
|
|
6
|
+
* Copies each .ttf into ios/<projectName>/Resources/ on every prebuild so that
|
|
7
|
+
* Xcode's incremental build reliably picks up updated glyph data. Referencing
|
|
8
|
+
* the .ttf via a relative path outside ios/ leaves stale fonts in the .app
|
|
9
|
+
* bundle when only the file contents change.
|
|
5
10
|
*/
|
|
6
11
|
export declare function withNanoIconsIos(config: Parameters<typeof withXcodeProject>[0], iconSets: IconSetConfig[]): ReturnType<typeof withXcodeProject>;
|
|
7
12
|
/**
|
|
@@ -11,23 +11,35 @@ const promises_1 = __importDefault(require("fs/promises"));
|
|
|
11
11
|
const path_1 = __importDefault(require("path"));
|
|
12
12
|
const buildFonts_js_1 = require("./buildFonts.js");
|
|
13
13
|
const ANDROID_ASSETS_FONTS_DIR = 'app/src/main/assets/fonts';
|
|
14
|
+
const IOS_FONTS_GROUP = 'Resources';
|
|
14
15
|
/**
|
|
15
16
|
* Add TTFs to the iOS project (Resources group + UIAppFonts in Info.plist).
|
|
17
|
+
*
|
|
18
|
+
* Copies each .ttf into ios/<projectName>/Resources/ on every prebuild so that
|
|
19
|
+
* Xcode's incremental build reliably picks up updated glyph data. Referencing
|
|
20
|
+
* the .ttf via a relative path outside ios/ leaves stale fonts in the .app
|
|
21
|
+
* bundle when only the file contents change.
|
|
16
22
|
*/
|
|
17
23
|
function withNanoIconsIos(config, iconSets) {
|
|
18
24
|
config = (0, config_plugins_1.withXcodeProject)(config, async (config) => {
|
|
19
25
|
const built = await (0, buildFonts_js_1.getOrBuildFonts)(config.modRequest.projectRoot, iconSets);
|
|
20
|
-
|
|
26
|
+
const bundled = built?.filter((b) => b.linking !== 'dynamic') ?? [];
|
|
27
|
+
if (!bundled.length)
|
|
21
28
|
return config;
|
|
22
|
-
const ttfPaths = built.map((b) => b.ttfPath);
|
|
23
29
|
const project = config.modResults;
|
|
24
30
|
const platformProjectRoot = config.modRequest.platformProjectRoot;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
const projectName = config.modRequest.projectName ??
|
|
32
|
+
config_plugins_1.IOSConfig.XcodeUtils.getProjectName(config.modRequest.projectRoot);
|
|
33
|
+
const fontsDir = path_1.default.join(platformProjectRoot, projectName, IOS_FONTS_GROUP);
|
|
34
|
+
await promises_1.default.mkdir(fontsDir, { recursive: true });
|
|
35
|
+
config_plugins_1.IOSConfig.XcodeUtils.ensureGroupRecursively(project, IOS_FONTS_GROUP);
|
|
36
|
+
for (const { ttfPath } of bundled) {
|
|
37
|
+
const dest = path_1.default.join(fontsDir, path_1.default.basename(ttfPath));
|
|
38
|
+
await promises_1.default.copyFile(ttfPath, dest);
|
|
39
|
+
const relativePath = path_1.default.relative(platformProjectRoot, dest);
|
|
28
40
|
config_plugins_1.IOSConfig.XcodeUtils.addResourceFileToGroup({
|
|
29
41
|
filepath: relativePath,
|
|
30
|
-
groupName:
|
|
42
|
+
groupName: IOS_FONTS_GROUP,
|
|
31
43
|
project,
|
|
32
44
|
isBuildFile: true,
|
|
33
45
|
verbose: true,
|
|
@@ -37,9 +49,10 @@ function withNanoIconsIos(config, iconSets) {
|
|
|
37
49
|
});
|
|
38
50
|
config = (0, config_plugins_1.withInfoPlist)(config, async (config) => {
|
|
39
51
|
const built = await (0, buildFonts_js_1.getOrBuildFonts)(config.modRequest.projectRoot, iconSets);
|
|
40
|
-
|
|
52
|
+
const bundled = built?.filter((b) => b.linking !== 'dynamic') ?? [];
|
|
53
|
+
if (!bundled.length)
|
|
41
54
|
return config;
|
|
42
|
-
const ttfPaths =
|
|
55
|
+
const ttfPaths = bundled.map((b) => b.ttfPath);
|
|
43
56
|
const existingFonts = getUIAppFonts(config.modResults);
|
|
44
57
|
const fontList = ttfPaths.map((f) => path_1.default.basename(f));
|
|
45
58
|
const allFonts = [...existingFonts, ...fontList];
|
|
@@ -65,11 +78,12 @@ function withNanoIconsAndroid(config, iconSets) {
|
|
|
65
78
|
'android',
|
|
66
79
|
async (config) => {
|
|
67
80
|
const built = await (0, buildFonts_js_1.getOrBuildFonts)(config.modRequest.projectRoot, iconSets);
|
|
68
|
-
|
|
81
|
+
const bundled = built?.filter((b) => b.linking !== 'dynamic') ?? [];
|
|
82
|
+
if (!bundled.length)
|
|
69
83
|
return config;
|
|
70
84
|
const fontsDir = path_1.default.join(config.modRequest.platformProjectRoot, ANDROID_ASSETS_FONTS_DIR);
|
|
71
85
|
await promises_1.default.mkdir(fontsDir, { recursive: true });
|
|
72
|
-
for (const b of
|
|
86
|
+
for (const b of bundled) {
|
|
73
87
|
const filename = path_1.default.basename(b.ttfPath);
|
|
74
88
|
const dest = path_1.default.join(fontsDir, filename);
|
|
75
89
|
await promises_1.default.copyFile(b.ttfPath, dest);
|
|
@@ -5,21 +5,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* Run from your app root: npx react-native-nano-icons [--verbose] [--path <dir>]
|
|
11
|
-
*
|
|
12
|
-
* Reads .nanoicons.json (same shape as Expo plugin options) so Expo and bare apps
|
|
13
|
-
* share one config format.
|
|
8
|
+
* Run from your app root: npx react-native-nano-icons [--verbose] [--path <dir>] [--dynamic] [--app-config]
|
|
14
9
|
*
|
|
15
10
|
* Flags:
|
|
16
|
-
* --verbose
|
|
17
|
-
* --path <dir>
|
|
11
|
+
* --verbose Show per-SVG processing details and pipeline timing
|
|
12
|
+
* --path <dir> Directory containing .nanoicons.json (default: cwd)
|
|
13
|
+
* --dynamic Rebuild only icon sets with linking: 'dynamic'. Skips native linking —
|
|
14
|
+
* use this for OTA font regeneration without running expo prebuild.
|
|
15
|
+
* --app-config Read config from Expo app config (app.json / app.config.js / app.config.ts)
|
|
16
|
+
* instead of .nanoicons.json. Must be combined with --dynamic.
|
|
18
17
|
*/
|
|
19
18
|
const node_path_1 = __importDefault(require("node:path"));
|
|
20
19
|
const index_js_1 = require("../cli/index.js");
|
|
21
20
|
async function main() {
|
|
22
21
|
const verbose = process.argv.includes('--verbose');
|
|
22
|
+
const dynamic = process.argv.includes('--dynamic');
|
|
23
|
+
const appConfig = process.argv.includes('--app-config');
|
|
23
24
|
const level = verbose ? 'verbose' : 'normal';
|
|
24
25
|
const pathIdx = process.argv.indexOf('--path');
|
|
25
26
|
const projectRoot = process.cwd();
|
|
@@ -27,9 +28,20 @@ async function main() {
|
|
|
27
28
|
? node_path_1.default.resolve(projectRoot, process.argv[pathIdx + 1])
|
|
28
29
|
: projectRoot;
|
|
29
30
|
const logger = await (0, index_js_1.createOraLogger)(level);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
if (dynamic) {
|
|
32
|
+
const source = appConfig ? 'Expo app config' : '.nanoicons.json';
|
|
33
|
+
logger.start(`Reading dynamic icon sets from ${source}...`);
|
|
34
|
+
const dynamicIconSets = appConfig
|
|
35
|
+
? (0, index_js_1.loadDynamicSetsFromAppConfig)(projectRoot)
|
|
36
|
+
: (0, index_js_1.loadDynamicIconSets)(configRoot);
|
|
37
|
+
logger.succeed(`Found ${dynamicIconSets.length} dynamic icon set(s) — skipping native linking.`);
|
|
38
|
+
await (0, index_js_1.buildAllFonts)(dynamicIconSets, projectRoot, { logger });
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
const config = (0, index_js_1.loadNanoIconsConfig)(configRoot);
|
|
42
|
+
const built = await (0, index_js_1.buildAllFonts)(config.iconSets, projectRoot, { logger });
|
|
43
|
+
await (0, index_js_1.linkBare)(projectRoot, built, logger);
|
|
44
|
+
}
|
|
33
45
|
}
|
|
34
46
|
main().catch((err) => {
|
|
35
47
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -58,8 +58,7 @@ class PyodideManager {
|
|
|
58
58
|
await py.loadPackage(['micropip', 'lxml'], { messageCallback: () => { } });
|
|
59
59
|
// Resolve local picosvg wheel path for offline-first installation.
|
|
60
60
|
const picosvgWhlDir = node_path_1.default.join(getPackageRoot(), 'src', 'core', 'shims');
|
|
61
|
-
const picosvgWhl = (await promises_1.default.readdir(picosvgWhlDir))
|
|
62
|
-
.find((f) => f.startsWith('picosvg-') && f.endsWith('.whl'));
|
|
61
|
+
const picosvgWhl = (await promises_1.default.readdir(picosvgWhlDir)).find((f) => f.startsWith('picosvg-') && f.endsWith('.whl'));
|
|
63
62
|
const localWhlUrl = picosvgWhl
|
|
64
63
|
? `file://${node_path_1.default.join(picosvgWhlDir, picosvgWhl)}`
|
|
65
64
|
: null;
|
|
@@ -9,7 +9,7 @@ exports.validateSvg = validateSvg;
|
|
|
9
9
|
exports.extractOriginalEvenoddDs = extractOriginalEvenoddDs;
|
|
10
10
|
exports.restoreOriginalEvenoddDs = restoreOriginalEvenoddDs;
|
|
11
11
|
exports.preprocessSvg = preprocessSvg;
|
|
12
|
-
const
|
|
12
|
+
const xmldom_1 = require("@xmldom/xmldom");
|
|
13
13
|
const parse_1 = require("../../utils/parse");
|
|
14
14
|
// if the fill is implicit, walk ancestors for the first explicit fill value
|
|
15
15
|
function resolveInheritedFill(el) {
|
|
@@ -77,25 +77,23 @@ const parsePath = (p) => {
|
|
|
77
77
|
};
|
|
78
78
|
exports.parsePath = parsePath;
|
|
79
79
|
function parseFlattenedSvg(flattenedSvg, options) {
|
|
80
|
-
const
|
|
81
|
-
const
|
|
82
|
-
const svgEl = doc.querySelector('svg');
|
|
80
|
+
const doc = new xmldom_1.DOMParser().parseFromString(flattenedSvg, 'image/svg+xml');
|
|
81
|
+
const svgEl = doc.documentElement;
|
|
83
82
|
const viewBoxRaw = svgEl
|
|
84
83
|
?.getAttribute('viewBox')
|
|
85
84
|
?.split(/\s+/)
|
|
86
85
|
.map(Number) ?? [0, 0, 100, 100];
|
|
87
|
-
const viewBox = viewBoxRaw.length === 4 && viewBoxRaw.every(
|
|
86
|
+
const viewBox = viewBoxRaw.length === 4 && viewBoxRaw.every(Number.isFinite)
|
|
88
87
|
? [viewBoxRaw[0], viewBoxRaw[1], viewBoxRaw[2], viewBoxRaw[3]]
|
|
89
88
|
: [0, 0, 100, 100];
|
|
90
|
-
const pathEls = Array.from(
|
|
89
|
+
const pathEls = svgEl ? Array.from(svgEl.getElementsByTagName('path')) : [];
|
|
91
90
|
const paths = pathEls
|
|
92
91
|
.map(exports.parsePath)
|
|
93
92
|
.filter((p) => p.d.trim() !== '')
|
|
94
93
|
.map((p) => {
|
|
95
94
|
const { d, sanitized } = sanitizePathData(p.d);
|
|
96
|
-
if (sanitized)
|
|
95
|
+
if (sanitized)
|
|
97
96
|
options?.onSanitize?.(p.d);
|
|
98
|
-
}
|
|
99
97
|
return { ...p, d };
|
|
100
98
|
});
|
|
101
99
|
return { viewBox, paths };
|
|
@@ -113,6 +111,12 @@ function validateSvg(content) {
|
|
|
113
111
|
if (/<filter[\s>]/i.test(content)) {
|
|
114
112
|
return { valid: false, reason: '<filter> is not supported yet' };
|
|
115
113
|
}
|
|
114
|
+
if (/<image[\s>]/i.test(content)) {
|
|
115
|
+
return {
|
|
116
|
+
valid: false,
|
|
117
|
+
reason: 'embedded raster <image> is not supported yet',
|
|
118
|
+
};
|
|
119
|
+
}
|
|
116
120
|
return { valid: true };
|
|
117
121
|
}
|
|
118
122
|
/**
|
|
@@ -127,16 +131,17 @@ function extractOriginalEvenoddDs(svgContent) {
|
|
|
127
131
|
if (!/<[^>]*fill-rule\s*=\s*["']evenodd/i.test(svgContent)) {
|
|
128
132
|
return [];
|
|
129
133
|
}
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
134
|
+
const doc = new xmldom_1.DOMParser().parseFromString(svgContent, 'image/svg+xml');
|
|
135
|
+
return Array.from(doc.getElementsByTagName('path')).reduce((acc, el) => {
|
|
136
|
+
const isEvenOdd = el.getAttribute('fill-rule') === 'evenodd' ||
|
|
137
|
+
el.getAttribute('clip-rule') === 'evenodd';
|
|
138
|
+
if (!isEvenOdd)
|
|
139
|
+
return acc;
|
|
135
140
|
const d = el.getAttribute('d');
|
|
136
|
-
if (d)
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
141
|
+
if (d !== null && d !== '')
|
|
142
|
+
acc.push(d);
|
|
143
|
+
return acc;
|
|
144
|
+
}, []);
|
|
140
145
|
}
|
|
141
146
|
/**
|
|
142
147
|
* Replace picosvg's (potentially damaged) evenodd path data with the
|
|
@@ -424,7 +424,10 @@ function contourToPolyline(contourCmds, V, steps = 8) {
|
|
|
424
424
|
for (let i = 1; i <= steps; i++) {
|
|
425
425
|
const t = i / steps;
|
|
426
426
|
const mt = 1 - t;
|
|
427
|
-
pts.push([
|
|
427
|
+
pts.push([
|
|
428
|
+
mt * mt * x0 + 2 * mt * t * x1 + t * t * x2,
|
|
429
|
+
mt * mt * y0 + 2 * mt * t * y1 + t * t * y2,
|
|
430
|
+
]);
|
|
428
431
|
}
|
|
429
432
|
cx = x2;
|
|
430
433
|
cy = y2;
|
|
@@ -438,8 +441,14 @@ function contourToPolyline(contourCmds, V, steps = 8) {
|
|
|
438
441
|
const t = i / steps;
|
|
439
442
|
const mt = 1 - t;
|
|
440
443
|
pts.push([
|
|
441
|
-
mt * mt * mt * x0 +
|
|
442
|
-
|
|
444
|
+
mt * mt * mt * x0 +
|
|
445
|
+
3 * mt * mt * t * x1 +
|
|
446
|
+
3 * mt * t * t * x2 +
|
|
447
|
+
t * t * t * x3,
|
|
448
|
+
mt * mt * mt * y0 +
|
|
449
|
+
3 * mt * mt * t * y1 +
|
|
450
|
+
3 * mt * t * t * y2 +
|
|
451
|
+
t * t * t * y3,
|
|
443
452
|
]);
|
|
444
453
|
}
|
|
445
454
|
cx = x3;
|
|
@@ -462,8 +471,7 @@ function pointInPolygon(px, py, poly) {
|
|
|
462
471
|
for (let i = 0, j = poly.length - 1; i < poly.length; j = i++) {
|
|
463
472
|
const [xi, yi] = poly[i];
|
|
464
473
|
const [xj, yj] = poly[j];
|
|
465
|
-
if (yi > py !== yj > py &&
|
|
466
|
-
px < ((xj - xi) * (py - yi)) / (yj - yi) + xi) {
|
|
474
|
+
if (yi > py !== yj > py && px < ((xj - xi) * (py - yi)) / (yj - yi) + xi) {
|
|
467
475
|
inside = !inside;
|
|
468
476
|
}
|
|
469
477
|
}
|
|
@@ -493,8 +501,14 @@ function getContourSamplePoint(contourCmds, V) {
|
|
|
493
501
|
else if (v === V.CUBIC) {
|
|
494
502
|
const t = 0.5, mt = 0.5;
|
|
495
503
|
return [
|
|
496
|
-
mt ** 3 * cx +
|
|
497
|
-
|
|
504
|
+
mt ** 3 * cx +
|
|
505
|
+
3 * mt ** 2 * t * cmd[1] +
|
|
506
|
+
3 * mt * t ** 2 * cmd[3] +
|
|
507
|
+
t ** 3 * cmd[5],
|
|
508
|
+
mt ** 3 * cy +
|
|
509
|
+
3 * mt ** 2 * t * cmd[2] +
|
|
510
|
+
3 * mt * t ** 2 * cmd[4] +
|
|
511
|
+
t ** 3 * cmd[6],
|
|
498
512
|
];
|
|
499
513
|
}
|
|
500
514
|
}
|
|
@@ -707,15 +721,15 @@ function buildPathopsBackend(PathKit) {
|
|
|
707
721
|
const Caps = PathKit.StrokeCap ?? {};
|
|
708
722
|
const Joins = PathKit.StrokeJoin ?? {};
|
|
709
723
|
const cap = capInt === 1
|
|
710
|
-
? Caps.ROUND ?? 1
|
|
724
|
+
? (Caps.ROUND ?? 1)
|
|
711
725
|
: capInt === 2
|
|
712
|
-
? Caps.SQUARE ?? 2
|
|
713
|
-
: Caps.BUTT ?? 0;
|
|
726
|
+
? (Caps.SQUARE ?? 2)
|
|
727
|
+
: (Caps.BUTT ?? 0);
|
|
714
728
|
const join = joinInt === 1
|
|
715
|
-
? Joins.ROUND ?? 1
|
|
729
|
+
? (Joins.ROUND ?? 1)
|
|
716
730
|
: joinInt === 2
|
|
717
|
-
? Joins.BEVEL ?? 2
|
|
718
|
-
: Joins.MITER ?? 0;
|
|
731
|
+
? (Joins.BEVEL ?? 2)
|
|
732
|
+
: (Joins.MITER ?? 0);
|
|
719
733
|
const work = PathKit.NewPath(h.p);
|
|
720
734
|
try {
|
|
721
735
|
if (Array.isArray(dashArray) &&
|
|
@@ -757,10 +771,10 @@ function buildPathopsBackend(PathKit) {
|
|
|
757
771
|
try {
|
|
758
772
|
const Ops = PathKit.PathOp ?? {};
|
|
759
773
|
const op = opInt === 1
|
|
760
|
-
? Ops.INTERSECT ?? 1
|
|
774
|
+
? (Ops.INTERSECT ?? 1)
|
|
761
775
|
: opInt === 2
|
|
762
|
-
? Ops.DIFFERENCE ?? 2
|
|
763
|
-
: Ops.UNION ?? 0;
|
|
776
|
+
? (Ops.DIFFERENCE ?? 2)
|
|
777
|
+
: (Ops.UNION ?? 0);
|
|
764
778
|
const out = PathKit.MakeFromOp(aHandle.p, bHandle.p, op);
|
|
765
779
|
if (!out)
|
|
766
780
|
return null;
|
|
@@ -109,6 +109,7 @@ export type IconsMap = Record<string, GlyphEntry>;
|
|
|
109
109
|
* z - safe zone,
|
|
110
110
|
* s - start unicode,
|
|
111
111
|
* h - hash,
|
|
112
|
+
* l - linking mode: 's' (static, bundled — default when absent) or 'd' (dynamic, OTA-delivered),
|
|
112
113
|
* i - icons,
|
|
113
114
|
* adv - advance width,
|
|
114
115
|
*/
|
|
@@ -119,6 +120,7 @@ export type NanoGlyphMap = {
|
|
|
119
120
|
z: number;
|
|
120
121
|
s: number;
|
|
121
122
|
h?: string;
|
|
123
|
+
l?: 's' | 'd';
|
|
122
124
|
};
|
|
123
125
|
i: IconsMap;
|
|
124
126
|
};
|
|
@@ -130,6 +132,7 @@ export type NanoGlyphMapInput = {
|
|
|
130
132
|
z: number;
|
|
131
133
|
s: number;
|
|
132
134
|
h?: string;
|
|
135
|
+
l?: 's' | 'd' | (string & {});
|
|
133
136
|
};
|
|
134
137
|
i: Record<string, readonly unknown[]>;
|
|
135
138
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["const/codegenPrimitives.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fs","path","forceTtfMetrics","svg2ttf","escapeXml","s","replace","buildSvgFontXml","opts","fontName","glyphs","upm","ascent","descent","glyphLines","map","g","hex","codepoint","toString","name","padStart","advanceWidth","d","Math","abs","join","parseCompileTtfFromGlyphsError","err","codepointToIcon","msg","Error","message","String","cpMatch","match","cp","parseInt","iconName","get","detail","compileTtfFromGlyphs","outTtfPath","lineGap","length","svgFontString","ttfRaw","rawBuf","Buffer","from","buffer","fixedBuf","mkdirSync","dirname","recursive","writeFileSync"],"sourceRoot":"../../../../src","sources":["core/font/compile.ts"],"mappings":";;AAAA,OAAOA,EAAE,MAAM,SAAS;AACxB,OAAOC,IAAI,MAAM,WAAW;AAE5B,SAASC,eAAe,QAAQ,cAAc;AAC9C,OAAOC,OAAO,MAAM,SAAS;AAS7B,SAASC,SAASA,CAACC,CAAS,EAAU;EACpC,OAAOA,CAAC,CAACC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;AACzD;;AAEA;AACA;AACA;AACA,SAASC,eAAeA,CAACC,IAMxB,EAAU;EACT,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,GAAG;IAAEC,MAAM;IAAEC;EAAQ,CAAC,GAAGL,IAAI;EAEvD,MAAMM,UAAU,GAAGJ,MAAM,CAACK,GAAG,CAAEC,CAAC,IAAK;IACnC,MAAMC,GAAG,GAAGD,CAAC,CAACE,SAAS,CAACC,QAAQ,CAAC,EAAE,CAAC;IACpC,MAAMC,IAAI,GAAG,IAAIH,GAAG,CAACI,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;IACvC,OAAO,sBAAsBD,IAAI,iBAAiBH,GAAG,mBAAmBD,CAAC,CAACM,YAAY,QAAQlB,SAAS,CAACY,CAAC,CAACO,CAAC,CAAC,KAAK;EACnH,CAAC,CAAC;EAEF,OAAO;AACT;AACA;AACA;AACA,YAAYnB,SAAS,CAACK,QAAQ,CAAC,kBAAkBE,GAAG;AACpD,0BAA0BP,SAAS,CAACK,QAAQ,CAAC,mBAAmBE,GAAG,aAAaC,MAAM,cAAc,CAACY,IAAI,CAACC,GAAG,CAACZ,OAAO,CAAC;AACtH;AACA,EAAEC,UAAU,CAACY,IAAI,CAAC,IAAI,CAAC;AACvB;AACA;AACA,OAAO;AACP;AAEA,OAAO,SAASC,8BAA8BA,CAC5CC,GAAY,EACZC,eAAoC,EACpC;EACA,MAAMC,GAAG,GAAGF,GAAG,YAAYG,KAAK,GAAGH,GAAG,CAACI,OAAO,GAAGC,MAAM,CAACL,GAAG,CAAC;EAC5D,MAAMM,OAAO,GAAGJ,GAAG,CAACK,KAAK,CAAC,2BAA2B,CAAC;EACtD,IAAID,OAAO,EAAE;IACX,MAAME,EAAE,GAAGC,QAAQ,CAACH,OAAO,CAAC,CAAC,CAAC,EAAG,EAAE,CAAC;IACpC,MAAMI,QAAQ,GAAGT,eAAe,CAACU,GAAG,CAACH,EAAE,CAAC;IACxC,MAAMI,MAAM,GAAGF,QAAQ,GACnB,SAASA,QAAQ,iBAAiBJ,OAAO,CAAC,CAAC,CAAC,GAAG,GAC/C,cAAcA,OAAO,CAAC,CAAC,CAAC,EAAE;IAC9B,MAAM,IAAIH,KAAK,CAAC,+BAA+BS,MAAM,KAAKV,GAAG,EAAE,CAAC;EAClE;EACA,MAAMF,GAAG;AACX;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAea,oBAAoBA,CAACjC,IAQ1C,EAAiB;EAChB,MAAM;IAAEE,MAAM;IAAEgC,UAAU;IAAEjC,QAAQ;IAAEE,GAAG;IAAEC,MAAM;IAAEC;EAAQ,CAAC,GAAGL,IAAI;EACnE,MAAMmC,OAAO,GAAGnC,IAAI,CAACmC,OAAO,IAAI,CAAC;EAEjC,IAAIjC,MAAM,CAACkC,MAAM,KAAK,CAAC,
|
|
1
|
+
{"version":3,"names":["fs","path","forceTtfMetrics","svg2ttf","escapeXml","s","replace","buildSvgFontXml","opts","fontName","glyphs","upm","ascent","descent","glyphLines","map","g","hex","codepoint","toString","name","padStart","advanceWidth","d","Math","abs","join","parseCompileTtfFromGlyphsError","err","codepointToIcon","msg","Error","message","String","cpMatch","match","cp","parseInt","iconName","get","detail","compileTtfFromGlyphs","outTtfPath","lineGap","length","svgFontString","ttfRaw","rawBuf","Buffer","from","buffer","fixedBuf","mkdirSync","dirname","recursive","writeFileSync"],"sourceRoot":"../../../../src","sources":["core/font/compile.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fs","ensureEmptyDir","dir","existsSync","rmSync","recursive","force","mkdirSync","ensureDir"],"sourceRoot":"../../../../src","sources":["core/pipeline/config.ts"],"mappings":";;AAAA,OAAOA,EAAE,MAAM,SAAS;
|
|
1
|
+
{"version":3,"names":["fs","ensureEmptyDir","dir","existsSync","rmSync","recursive","force","mkdirSync","ensureDir"],"sourceRoot":"../../../../src","sources":["core/pipeline/config.ts"],"mappings":";;AAAA,OAAOA,EAAE,MAAM,SAAS;AAgBxB,OAAO,SAASC,cAAcA,CAACC,GAAW,EAAQ;EAChD,IAAIF,EAAE,CAACG,UAAU,CAACD,GAAG,CAAC,EAAEF,EAAE,CAACI,MAAM,CAACF,GAAG,EAAE;IAAEG,SAAS,EAAE,IAAI;IAAEC,KAAK,EAAE;EAAK,CAAC,CAAC;EACxEN,EAAE,CAACO,SAAS,CAACL,GAAG,EAAE;IAAEG,SAAS,EAAE;EAAK,CAAC,CAAC;AACxC;;AAEA;AACA,OAAO,SAASG,SAASA,CAACN,GAAW,EAAQ;EAC3CF,EAAE,CAACO,SAAS,CAACL,GAAG,EAAE;IAAEG,SAAS,EAAE;EAAK,CAAC,CAAC;AACxC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["loadPyodide","path","fs","buildPathopsBackend","getPackageRoot","__dirname","includes","sep","resolve","PathKitManager","instance","getInstance","PathKitInit","require","pathkitJsPath","pathkitBinDir","dirname","pathkitWasmPath","join","wasmBinary","readFile","pkInit","locateFile","file","PathKit","ready","PyodideManager","pyodideAsmPath","pyodideDir","py","indexURL","mountNodeFS","process","cwd","registerJsModule","pathopsPyPath","pathopsPy","FS","writeFile","loadPackage","messageCallback","picosvgWhlDir","picosvgWhl","readdir","find","f","startsWith","endsWith","localWhlUrl","globals","set","runPythonAsync","picoFromFile","hostFilePath","content","svgContent","out","runPython"],"sourceRoot":"../../../../src","sources":["core/pipeline/managers.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,SAAS;AACrC,OAAOC,IAAI,MAAM,WAAW;AAC5B,OAAOC,EAAE,MAAM,kBAAkB;AAEjC,SAASC,mBAAmB,QAAQ,uBAAuB;;AAE3D;AACA,SAASC,cAAcA,CAAA,EAAW;EAChC;EACA;EACA,OAAOC,SAAS,CAACC,QAAQ,CAAC,GAAGL,IAAI,CAACM,GAAG,MAAMN,IAAI,CAACM,GAAG,EAAE,CAAC,GAClDN,IAAI,CAACO,OAAO,CAACH,SAAS,EAAE,gBAAgB,CAAC,GACzCJ,IAAI,CAACO,OAAO,CAACH,SAAS,EAAE,UAAU,CAAC;AACzC;AAEA,OAAO,MAAMI,cAAc,CAAC;EAC1B,OAAeC,QAAQ,GAAyB,IAAI;EAEpD,aAAaC,WAAWA,CAAA,EAA2B;IACjD,IAAI,IAAI,CAACD,QAAQ,EAAE,OAAO,IAAI,CAACA,QAAQ;IAEvC,MAAME,WAAW,GAAGC,OAAO,CAAC,6BAA6B,CAEjD;IACR,MAAMC,aAAa,
|
|
1
|
+
{"version":3,"names":["loadPyodide","path","fs","buildPathopsBackend","getPackageRoot","__dirname","includes","sep","resolve","PathKitManager","instance","getInstance","PathKitInit","require","pathkitJsPath","pathkitBinDir","dirname","pathkitWasmPath","join","wasmBinary","readFile","pkInit","locateFile","file","PathKit","ready","PyodideManager","pyodideAsmPath","pyodideDir","py","indexURL","mountNodeFS","process","cwd","registerJsModule","pathopsPyPath","pathopsPy","FS","writeFile","loadPackage","messageCallback","picosvgWhlDir","picosvgWhl","readdir","find","f","startsWith","endsWith","localWhlUrl","globals","set","runPythonAsync","picoFromFile","hostFilePath","content","svgContent","out","runPython"],"sourceRoot":"../../../../src","sources":["core/pipeline/managers.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -85,7 +85,10 @@ export async function runPipeline(config, paths, options) {
|
|
|
85
85
|
f: config.fontFamily,
|
|
86
86
|
u: config.upm,
|
|
87
87
|
z: config.safeZone,
|
|
88
|
-
s: config.startUnicode
|
|
88
|
+
s: config.startUnicode,
|
|
89
|
+
...(config.linking === 'dynamic' ? {
|
|
90
|
+
l: 'd'
|
|
91
|
+
} : {})
|
|
89
92
|
},
|
|
90
93
|
i: {}
|
|
91
94
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fsp","path","compileTtfFromGlyphs","parseCompileTtfFromGlyphsError","picoFromFile","PathKitManager","ensureDir","parseFlattenedSvg","preprocessSvg","shouldSkipPath","validateSvg","extractOriginalEvenoddDs","restoreOriginalEvenoddDs","computePlacement","transformPathForFont","convertEvenoddToWinding","concatPathDs","ds","length","join","mergeSameColorPaths","paths","logger","result","i","fill","j","noMerge","push","group","slice","merged","map","p","d","info","runPipeline","config","options","startTime","Date","now","update","fontFamily","outputDir","files","readdir","inputDir","filter","f","toLowerCase","endsWith","glyphMap","m","u","upm","z","safeZone","s","startUnicode","currentUnicode","codepointToIcon","Map","allGlyphs","PathKit","getInstance","file","iconName","parse","name","filePath","rawContent","readFile","validation","valid","warn","reason","preprocessed","originalEvenoddDs","flattenedSvg","parsed","onSanitize","original","fillRule","mergedPaths","vx","vy","scale","xOff","yOff","adv","viewBox","layers","cp","set","fontD","codepoint","advanceWidth","glyphmapPath","inputHash","h","writeFile","JSON","stringify","ttfPath","glyphs","outTtfPath","fontName","ascent","descent","err","iconCount","Object","keys","elapsed","succeed"],"sourceRoot":"../../../../src","sources":["core/pipeline/run.ts"],"mappings":";;AAAA,OAAOA,GAAG,MAAM,kBAAkB;AAClC,OAAOC,IAAI,MAAM,WAAW;AAE5B,SACEC,oBAAoB,EACpBC,8BAA8B,QAEzB,oBAAoB;AAC3B,SAASC,YAAY,EAAEC,cAAc,QAAQ,eAAe;AAE5D,SACEC,SAAS,QAGJ,aAAa;AACpB,SACEC,iBAAiB,EACjBC,aAAa,EACbC,cAAc,EACdC,WAAW,EACXC,wBAAwB,EACxBC,wBAAwB,QACnB,mBAAmB;AAC1B,SAASC,gBAAgB,EAAEC,oBAAoB,QAAQ,kBAAkB;AACzE,SAASC,uBAAuB,QAAQ,uBAAuB;;
|
|
1
|
+
{"version":3,"names":["fsp","path","compileTtfFromGlyphs","parseCompileTtfFromGlyphsError","picoFromFile","PathKitManager","ensureDir","parseFlattenedSvg","preprocessSvg","shouldSkipPath","validateSvg","extractOriginalEvenoddDs","restoreOriginalEvenoddDs","computePlacement","transformPathForFont","convertEvenoddToWinding","concatPathDs","ds","length","join","mergeSameColorPaths","paths","logger","result","i","fill","j","noMerge","push","group","slice","merged","map","p","d","info","runPipeline","config","options","startTime","Date","now","update","fontFamily","outputDir","files","readdir","inputDir","filter","f","toLowerCase","endsWith","glyphMap","m","u","upm","z","safeZone","s","startUnicode","linking","l","currentUnicode","codepointToIcon","Map","allGlyphs","PathKit","getInstance","file","iconName","parse","name","filePath","rawContent","readFile","validation","valid","warn","reason","preprocessed","originalEvenoddDs","flattenedSvg","parsed","onSanitize","original","fillRule","mergedPaths","vx","vy","scale","xOff","yOff","adv","viewBox","layers","cp","set","fontD","codepoint","advanceWidth","glyphmapPath","inputHash","h","writeFile","JSON","stringify","ttfPath","glyphs","outTtfPath","fontName","ascent","descent","err","iconCount","Object","keys","elapsed","succeed"],"sourceRoot":"../../../../src","sources":["core/pipeline/run.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fsp","path","roundInt","n","Math","round","computePlacement","opts","vx","vy","vw","vh","viewBox","safeVh","scale","safeZone","totalPadding","upm","scaledW","scaledH","adv","max","xOff","yOff","writeLayerSvg","hex","codepoint","toString","padStart","layerSvg","d","trim","writeFile","join","tempDir","transformPathForFont","PathKit","p","FromSVGString","scaleX","scaleY","transX","transY","transform","result","toSVGString","delete"],"sourceRoot":"../../../../src","sources":["core/svg/layers.ts"],"mappings":";;AAAA,OAAOA,GAAG,MAAM,kBAAkB;AAClC,OAAOC,IAAI,MAAM,WAAW;AAI5B,SAASC,QAAQA,CAACC,CAAS,EAAU;EACnC,OAAOC,IAAI,CAACC,KAAK,CAACF,CAAC,CAAC;AACtB;AAEA,OAAO,SAASG,gBAAgBA,CAACC,IAIhC,EAAE;EACD,MAAM,CAACC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAGJ,IAAI,CAACK,OAAO;;EAErC;EACA,MAAMC,MAAM,GAAGF,EAAE,KAAK,CAAC,GAAG,CAAC,GAAGA,EAAE;;EAEhC;EACA,MAAMG,KAAK,GAAGP,IAAI,CAACQ,QAAQ,GAAGF,MAAM;EAEpC,MAAMG,YAAY,GAAG,CAACT,IAAI,CAACU,GAAG,GAAGV,IAAI,CAACQ,QAAQ,IAAI,CAAC;;EAEnD;EACA,MAAMG,OAAO,GAAGR,EAAE,GAAGI,KAAK;EAC1B,MAAMK,OAAO,GAAGR,EAAE,GAAGG,KAAK,CAAC,CAAC;;EAE5B;EACA;EACA,MAAMM,GAAG,GAAGhB,IAAI,CAACiB,GAAG,CAAC,CAAC,EAAEnB,QAAQ,CAACgB,OAAO,GAAGF,YAAY,GAAG,CAAC,CAAC,CAAC;;EAE7D;EACA;EACA,MAAMM,IAAI,GAAG,CAACF,GAAG,GAAGF,OAAO,IAAI,CAAC;EAChC,MAAMK,IAAI,GAAG,CAAChB,IAAI,CAACU,GAAG,GAAGE,OAAO,IAAI,CAAC,CAAC,CAAC;;EAEvC,OAAO;IAAEX,EAAE;IAAEC,EAAE;IAAEK,KAAK;IAAEQ,IAAI;IAAEC,IAAI;IAAEH;EAAI,CAAC;AAC3C;AAEA,OAAO,eAAeI,aAAaA,CAACjB,IAWnC,EAAiB;EAChB,MAAMkB,GAAG,GAAGlB,IAAI,CAACmB,SAAS,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAExD,MAAMC,QAAQ,GAAG;AACnB,wBAAwBtB,IAAI,CAACa,GAAG,
|
|
1
|
+
{"version":3,"names":["fsp","path","roundInt","n","Math","round","computePlacement","opts","vx","vy","vw","vh","viewBox","safeVh","scale","safeZone","totalPadding","upm","scaledW","scaledH","adv","max","xOff","yOff","writeLayerSvg","hex","codepoint","toString","padStart","layerSvg","d","trim","writeFile","join","tempDir","transformPathForFont","PathKit","p","FromSVGString","scaleX","scaleY","transX","transY","transform","result","toSVGString","delete"],"sourceRoot":"../../../../src","sources":["core/svg/layers.ts"],"mappings":"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","ignoreList":[]}
|