@react-native-vector-icons/common 0.0.1-alpha.2 → 0.0.1-alpha.20
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 +410 -0
- package/android/build.gradle +4 -4
- package/ios/VectorIcons.mm +83 -69
- package/lib/commonjs/NativeVectorIcons.js.map +1 -1
- package/lib/commonjs/NativeVectorIcons.web.js.map +1 -1
- package/lib/commonjs/create-icon-set.js +7 -19
- package/lib/commonjs/create-icon-set.js.map +1 -1
- package/lib/commonjs/create-icon-source-cache.js.map +1 -1
- package/lib/commonjs/ensure-native-module-available.js +1 -1
- package/lib/commonjs/ensure-native-module-available.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/scripts/common.js +49 -0
- package/lib/commonjs/scripts/common.js.map +1 -0
- package/lib/commonjs/scripts/getFonts.js +6 -40
- package/lib/commonjs/scripts/getFonts.js.map +1 -1
- package/lib/commonjs/scripts/updatePlist.js +54 -0
- package/lib/commonjs/scripts/updatePlist.js.map +1 -0
- package/lib/module/NativeVectorIcons.js.map +1 -1
- package/lib/module/NativeVectorIcons.web.js.map +1 -1
- package/lib/module/create-icon-set.js +6 -18
- package/lib/module/create-icon-set.js.map +1 -1
- package/lib/module/create-icon-source-cache.js.map +1 -1
- package/lib/module/ensure-native-module-available.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/scripts/common.js +41 -0
- package/lib/module/scripts/common.js.map +1 -0
- package/lib/module/scripts/getFonts.js +6 -39
- package/lib/module/scripts/getFonts.js.map +1 -1
- package/lib/module/scripts/updatePlist.js +49 -0
- package/lib/module/scripts/updatePlist.js.map +1 -0
- package/lib/typescript/src/NativeVectorIcons.d.ts.map +1 -1
- package/lib/typescript/src/create-icon-set.d.ts.map +1 -1
- package/lib/typescript/src/create-icon-source-cache.d.ts.map +1 -1
- package/lib/typescript/src/scripts/common.d.ts +2 -0
- package/lib/typescript/src/scripts/common.d.ts.map +1 -0
- package/lib/typescript/src/scripts/updatePlist.d.ts +3 -0
- package/lib/typescript/src/scripts/updatePlist.d.ts.map +1 -0
- package/package.json +20 -51
- package/react-native-vector-icons.podspec +54 -10
- package/src/NativeVectorIcons.ts +2 -12
- package/src/create-icon-set.tsx +19 -43
- package/src/create-icon-source-cache.ts +3 -7
- package/src/ensure-native-module-available.ts +1 -1
- package/src/scripts/common.ts +52 -0
- package/src/scripts/getFonts.ts +6 -47
- package/src/scripts/updatePlist.ts +58 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","forwardRef","
|
|
1
|
+
{"version":3,"names":["React","forwardRef","PixelRatio","Platform","Text","processColor","NativeIconAPI","createIconSourceCache","ensureNativeModuleAvailable","DEFAULT_ICON_SIZE","DEFAULT_ICON_COLOR","createIconSet","glyphMap","fontFamily","fontFile","fontStyle","fontBasename","replace","fontReference","select","windows","android","web","default","resolveGlyph","name","glyph","String","fromCodePoint","Icon","size","color","style","children","allowFontScaling","innerRef","props","styleDefaults","fontSize","styleOverrides","fontWeight","newProps","createElement","_extends","ref","selectable","WrappedIcon","displayName","imageSourceCache","getImageSourceSync","processedColor","cacheKey","has","get","imagePath","getImageForFontSync","value","uri","scale","setValue","error","setError","getImageSource","getImageForFont","IconNamespace","Object","assign"],"sourceRoot":"../../src","sources":["create-icon-set.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TYPE_VALUE","TYPE_ERROR","createIconSourceCache","cache","Map","setValue","key","value","set","type","data","setError","error","has","get","undefined"],"sourceRoot":"../../src","sources":["create-icon-source-cache.ts"],"mappings":"AAAA,MAAMA,UAAU,GAAG,OAAO;AAC1B,MAAMC,UAAU,GAAG,OAAO;
|
|
1
|
+
{"version":3,"names":["TYPE_VALUE","TYPE_ERROR","createIconSourceCache","cache","Map","setValue","key","value","set","type","data","setError","error","has","get","undefined"],"sourceRoot":"../../src","sources":["create-icon-source-cache.ts"],"mappings":"AAAA,MAAMA,UAAU,GAAG,OAAO;AAC1B,MAAMC,UAAU,GAAG,OAAO;AAM1B,eAAe,SAASC,qBAAqBA,CAAA,EAAG;EAC9C,MAAMC,KAAK,GAAG,IAAIC,GAAG,CAAgB,CAAC;EAEtC,MAAMC,QAAQ,GAAGA,CAACC,GAAW,EAAEC,KAAgB,KAAKJ,KAAK,CAACK,GAAG,CAACF,GAAG,EAAE;IAAEG,IAAI,EAAET,UAAU;IAAEU,IAAI,EAAEH;EAAM,CAAC,CAAC;EAErG,MAAMI,QAAQ,GAAGA,CAACL,GAAW,EAAEM,KAAY,KAAKT,KAAK,CAACK,GAAG,CAACF,GAAG,EAAE;IAAEG,IAAI,EAAER,UAAU;IAAES,IAAI,EAAEE;EAAM,CAAC,CAAC;EAEjG,MAAMC,GAAG,GAAIP,GAAW,IAAKH,KAAK,CAACU,GAAG,CAACP,GAAG,CAAC;EAE3C,MAAMQ,GAAG,GAAIR,GAAW,IAAK;IAC3B,MAAMC,KAAK,GAAGJ,KAAK,CAACW,GAAG,CAACR,GAAG,CAAC;IAC5B,IAAI,CAACC,KAAK,EAAE;MACV,OAAOQ,SAAS;IAClB;IAEA,MAAM;MAAEN,IAAI;MAAEC;IAAK,CAAC,GAAGH,KAAK;IAC5B,IAAIE,IAAI,KAAKR,UAAU,EAAE;MACvB,MAAMS,IAAI;IACZ;IACA,OAAOA,IAAI;EACb,CAAC;EAED,OAAO;IAAEL,QAAQ;IAAEM,QAAQ;IAAEE,GAAG;IAAEC;EAAI,CAAC;AACzC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeIconAPI","ensureNativeModuleAvailable","Error"],"sourceRoot":"../../src","sources":["ensure-native-module-available.ts"],"mappings":"AAAA,OAAOA,aAAa,MAAM,qBAAqB;AAE/C,eAAe,SAASC,2BAA2BA,CAAA,EAAG;EACpD,IAAI,CAACD,aAAa,EAAE;IAClB,MAAM,IAAIE,KAAK,CACb,2IACF,CAAC;EACH;AACF"}
|
|
1
|
+
{"version":3,"names":["NativeIconAPI","ensureNativeModuleAvailable","Error"],"sourceRoot":"../../src","sources":["ensure-native-module-available.ts"],"mappings":"AAAA,OAAOA,aAAa,MAAM,qBAAqB;AAE/C,eAAe,SAASC,2BAA2BA,CAAA,EAAG;EACpD,IAAI,CAACD,aAAa,EAAE;IAClB,MAAM,IAAIE,KAAK,CACb,2IACF,CAAC;EACH;AACF","ignoreList":[]}
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createIconSet","DEFAULT_ICON_SIZE","DEFAULT_ICON_COLOR"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,aAAa,EAAEC,iBAAiB,EAAEC,kBAAkB,QAAQ,mBAAmB"}
|
|
1
|
+
{"version":3,"names":["createIconSet","DEFAULT_ICON_SIZE","DEFAULT_ICON_COLOR"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,aAAa,EAAEC,iBAAiB,EAAEC,kBAAkB,QAAQ,mBAAmB","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { resolveNodeModuleDir } from '@react-native-community/cli-tools';
|
|
4
|
+
const getPackageJson = filename => {
|
|
5
|
+
const packageData = fs.readFileSync(filename, 'utf-8');
|
|
6
|
+
const packageJson = JSON.parse(packageData);
|
|
7
|
+
return packageJson;
|
|
8
|
+
};
|
|
9
|
+
const getPackageFontDirectories = packageJsonFilename => {
|
|
10
|
+
const rootPackageJson = getPackageJson(packageJsonFilename);
|
|
11
|
+
const dependencies = Object.keys(rootPackageJson.dependencies || {});
|
|
12
|
+
const packageDirs = [];
|
|
13
|
+
dependencies.forEach(dependency => {
|
|
14
|
+
const dir = resolveNodeModuleDir(packageJsonFilename, dependency);
|
|
15
|
+
const packageJson = getPackageJson(`${dir}/package.json`);
|
|
16
|
+
if (packageJson.keywords?.includes?.('react-native-vector-icons-icon')) {
|
|
17
|
+
packageDirs.push(`${dir}/fonts`);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
return packageDirs;
|
|
21
|
+
};
|
|
22
|
+
const getLocalFontsDir = packageJsonFilename => {
|
|
23
|
+
const rootPackageJson = getPackageJson(packageJsonFilename);
|
|
24
|
+
const config = rootPackageJson.reactNativeVectorIcons || {};
|
|
25
|
+
return `${path.dirname(packageJsonFilename)}/${config.fontDir || 'rnvi-fonts'}`;
|
|
26
|
+
};
|
|
27
|
+
const getFonts = fontDir => {
|
|
28
|
+
if (!fs.existsSync(fontDir)) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
const fonts = fs.readdirSync(fontDir);
|
|
32
|
+
const fontPaths = fonts.map(font => `${fontDir}/${font}`);
|
|
33
|
+
return fontPaths;
|
|
34
|
+
};
|
|
35
|
+
export const getFontPaths = packageJsonFilename => {
|
|
36
|
+
const packageDirs = getPackageFontDirectories(packageJsonFilename);
|
|
37
|
+
packageDirs.push(getLocalFontsDir(packageJsonFilename));
|
|
38
|
+
const fonts = packageDirs.map(getFonts);
|
|
39
|
+
return fonts.flat();
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["fs","path","resolveNodeModuleDir","getPackageJson","filename","packageData","readFileSync","packageJson","JSON","parse","getPackageFontDirectories","packageJsonFilename","rootPackageJson","dependencies","Object","keys","packageDirs","forEach","dependency","dir","keywords","includes","push","getLocalFontsDir","config","reactNativeVectorIcons","dirname","fontDir","getFonts","existsSync","fonts","readdirSync","fontPaths","map","font","getFontPaths","flat"],"sourceRoot":"../../../src","sources":["scripts/common.ts"],"mappings":"AAAA,OAAOA,EAAE,MAAM,SAAS;AACxB,OAAOC,IAAI,MAAM,WAAW;AAC5B,SAASC,oBAAoB,QAAQ,mCAAmC;AAExE,MAAMC,cAAc,GAAIC,QAAgB,IAAK;EAC3C,MAAMC,WAAW,GAAGL,EAAE,CAACM,YAAY,CAACF,QAAQ,EAAE,OAAO,CAAC;EACtD,MAAMG,WAAW,GAAGC,IAAI,CAACC,KAAK,CAACJ,WAAW,CAAC;EAE3C,OAAOE,WAAW;AACpB,CAAC;AAED,MAAMG,yBAAyB,GAAIC,mBAA2B,IAAK;EACjE,MAAMC,eAAe,GAAGT,cAAc,CAACQ,mBAAmB,CAAC;EAC3D,MAAME,YAAY,GAAGC,MAAM,CAACC,IAAI,CAACH,eAAe,CAACC,YAAY,IAAI,CAAC,CAAC,CAAC;EAEpE,MAAMG,WAAqB,GAAG,EAAE;EAChCH,YAAY,CAACI,OAAO,CAAEC,UAAU,IAAK;IACnC,MAAMC,GAAG,GAAGjB,oBAAoB,CAACS,mBAAmB,EAAEO,UAAU,CAAC;IACjE,MAAMX,WAAW,GAAGJ,cAAc,CAAC,GAAGgB,GAAG,eAAe,CAAC;IACzD,IAAIZ,WAAW,CAACa,QAAQ,EAAEC,QAAQ,GAAG,gCAAgC,CAAC,EAAE;MACtEL,WAAW,CAACM,IAAI,CAAC,GAAGH,GAAG,QAAQ,CAAC;IAClC;EACF,CAAC,CAAC;EAEF,OAAOH,WAAW;AACpB,CAAC;AAED,MAAMO,gBAAgB,GAAIZ,mBAA2B,IAAK;EACxD,MAAMC,eAAe,GAAGT,cAAc,CAACQ,mBAAmB,CAAC;EAC3D,MAAMa,MAAM,GAAGZ,eAAe,CAACa,sBAAsB,IAAI,CAAC,CAAC;EAE3D,OAAO,GAAGxB,IAAI,CAACyB,OAAO,CAACf,mBAAmB,CAAC,IAAIa,MAAM,CAACG,OAAO,IAAI,YAAY,EAAE;AACjF,CAAC;AAED,MAAMC,QAAQ,GAAID,OAAe,IAAK;EACpC,IAAI,CAAC3B,EAAE,CAAC6B,UAAU,CAACF,OAAO,CAAC,EAAE;IAC3B,OAAO,EAAE;EACX;EAEA,MAAMG,KAAK,GAAG9B,EAAE,CAAC+B,WAAW,CAACJ,OAAO,CAAC;EACrC,MAAMK,SAAS,GAAGF,KAAK,CAACG,GAAG,CAAEC,IAAI,IAAK,GAAGP,OAAO,IAAIO,IAAI,EAAE,CAAC;EAE3D,OAAOF,SAAS;AAClB,CAAC;AAED,OAAO,MAAMG,YAAY,GAAIxB,mBAA2B,IAAK;EAC3D,MAAMK,WAAW,GAAGN,yBAAyB,CAACC,mBAAmB,CAAC;EAClEK,WAAW,CAACM,IAAI,CAACC,gBAAgB,CAACZ,mBAAmB,CAAC,CAAC;EACvD,MAAMmB,KAAK,GAAGd,WAAW,CAACiB,GAAG,CAACL,QAAQ,CAAC;EAEvC,OAAOE,KAAK,CAACM,IAAI,CAAC,CAAC;AACrB,CAAC","ignoreList":[]}
|
|
@@ -1,42 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
if (!rootDir) {
|
|
7
|
-
throw new Error('Need rootDir as first argument');
|
|
2
|
+
import { getFontPaths } from "./common";
|
|
3
|
+
const packageJsonFilename = process.argv[2];
|
|
4
|
+
if (!packageJsonFilename) {
|
|
5
|
+
throw new Error('Need the path to the roo package.json as the first argument');
|
|
8
6
|
}
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
const packageJson = JSON.parse(packageData);
|
|
12
|
-
return packageJson;
|
|
13
|
-
};
|
|
14
|
-
const getPackages = () => {
|
|
15
|
-
const rootPackageJson = getPackageJson(rootDir);
|
|
16
|
-
const dependencies = Object.keys(rootPackageJson.dependencies || {});
|
|
17
|
-
const packageDirs = [];
|
|
18
|
-
dependencies.forEach(dependency => {
|
|
19
|
-
const dir = resolveNodeModuleDir(rootDir, dependency);
|
|
20
|
-
const packageJson = getPackageJson(dir);
|
|
21
|
-
if (packageJson.keywords?.includes?.('react-native-vector-icons-icon')) {
|
|
22
|
-
packageDirs.push(dir);
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
return packageDirs;
|
|
26
|
-
};
|
|
27
|
-
const getFonts = dir => {
|
|
28
|
-
const fontDirs = [`${dir}/fonts`];
|
|
29
|
-
const rootPackageJson = getPackageJson(rootDir);
|
|
30
|
-
const config = rootPackageJson.reactNativeVectorIcons || {};
|
|
31
|
-
fontDirs.push(`${rootDir}/${config.fontDir || 'rnvi-fonts'}`);
|
|
32
|
-
fontDirs.forEach(fontDir => {
|
|
33
|
-
if (!fs.existsSync(fontDir)) {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
const fonts = fs.readdirSync(fontDir);
|
|
37
|
-
fonts.forEach(font => console.log(`${fontDir}/${font}`));
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
const packageDirs = getPackages();
|
|
41
|
-
packageDirs.forEach(dir => getFonts(dir));
|
|
7
|
+
const fonts = getFontPaths(packageJsonFilename);
|
|
8
|
+
fonts.map(font => console.log(font)); // eslint-disable-line no-console
|
|
42
9
|
//# sourceMappingURL=getFonts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["getFontPaths","packageJsonFilename","process","argv","Error","fonts","map","font","console","log"],"sourceRoot":"../../../src","sources":["scripts/getFonts.ts"],"mappings":"AAAA;AAEA,SAASA,YAAY,QAAQ,UAAU;AAEvC,MAAMC,mBAAmB,GAAGC,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;AAC3C,IAAI,CAACF,mBAAmB,EAAE;EACxB,MAAM,IAAIG,KAAK,CAAC,6DAA6D,CAAC;AAChF;AAEA,MAAMC,KAAK,GAAGL,YAAY,CAACC,mBAAmB,CAAC;AAC/CI,KAAK,CAACC,GAAG,CAAEC,IAAI,IAAKC,OAAO,CAACC,GAAG,CAACF,IAAI,CAAC,CAAC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/* eslint-disable no-console */
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
import pc from 'picocolors';
|
|
6
|
+
import * as plist from 'plist';
|
|
7
|
+
import { getFontPaths } from './common';
|
|
8
|
+
const getFontName = fontPath => path.basename(fontPath);
|
|
9
|
+
const packageJsonFilename = process.argv[2];
|
|
10
|
+
if (!packageJsonFilename) {
|
|
11
|
+
throw new Error('Need the path to the root package.json as the first argument');
|
|
12
|
+
}
|
|
13
|
+
const infoPlistFilename = process.argv[3];
|
|
14
|
+
if (!infoPlistFilename) {
|
|
15
|
+
throw new Error('Need the path to the Info.plist as the second argument');
|
|
16
|
+
}
|
|
17
|
+
const fonts = getFontPaths(packageJsonFilename);
|
|
18
|
+
console.log(`Found ${fonts.length} fonts`);
|
|
19
|
+
const infoPlistContent = fs.readFileSync(infoPlistFilename, 'utf8');
|
|
20
|
+
const infoPlist = plist.parse(infoPlistContent);
|
|
21
|
+
const plistFonts = new Set(infoPlist.UIAppFonts || []);
|
|
22
|
+
const providedFonts = new Set(fonts.map(getFontName));
|
|
23
|
+
let hasChanges = false;
|
|
24
|
+
|
|
25
|
+
// Check for missing fonts and add them
|
|
26
|
+
providedFonts.forEach(font => {
|
|
27
|
+
if (!plistFonts.has(font)) {
|
|
28
|
+
plistFonts.add(font);
|
|
29
|
+
console.log(pc.green(`Added ${font}`));
|
|
30
|
+
hasChanges = true;
|
|
31
|
+
} else {
|
|
32
|
+
console.log(`Existing ${font}`);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// Check for extra fonts in Info.plist
|
|
37
|
+
plistFonts.forEach(font => {
|
|
38
|
+
if (!providedFonts.has(font)) {
|
|
39
|
+
console.log(pc.red(`Extra ${font} (Please remove manually if not needed)`));
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// Update Info.plist if there were changes
|
|
44
|
+
if (hasChanges) {
|
|
45
|
+
infoPlist.UIAppFonts = Array.from(plistFonts);
|
|
46
|
+
const updatedInfoPlistContent = plist.build(infoPlist).replace(/^ {2}/gm, '').replace(/ {2}/gm, '\t');
|
|
47
|
+
fs.writeFileSync(infoPlistFilename, updatedInfoPlistContent, 'utf8');
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=updatePlist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["fs","path","pc","plist","getFontPaths","getFontName","fontPath","basename","packageJsonFilename","process","argv","Error","infoPlistFilename","fonts","console","log","length","infoPlistContent","readFileSync","infoPlist","parse","plistFonts","Set","UIAppFonts","providedFonts","map","hasChanges","forEach","font","has","add","green","red","Array","from","updatedInfoPlistContent","build","replace","writeFileSync"],"sourceRoot":"../../../src","sources":["scripts/updatePlist.ts"],"mappings":"AAAA;AACA;AAEA,OAAOA,EAAE,MAAM,SAAS;AACxB,OAAO,KAAKC,IAAI,MAAM,WAAW;AACjC,OAAOC,EAAE,MAAM,YAAY;AAC3B,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,SAASC,YAAY,QAAQ,UAAU;AAEvC,MAAMC,WAAW,GAAIC,QAAgB,IAAKL,IAAI,CAACM,QAAQ,CAACD,QAAQ,CAAC;AAEjE,MAAME,mBAAmB,GAAGC,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;AAC3C,IAAI,CAACF,mBAAmB,EAAE;EACxB,MAAM,IAAIG,KAAK,CAAC,8DAA8D,CAAC;AACjF;AAEA,MAAMC,iBAAiB,GAAGH,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;AACzC,IAAI,CAACE,iBAAiB,EAAE;EACtB,MAAM,IAAID,KAAK,CAAC,wDAAwD,CAAC;AAC3E;AAEA,MAAME,KAAK,GAAGT,YAAY,CAACI,mBAAmB,CAAC;AAC/CM,OAAO,CAACC,GAAG,CAAC,SAASF,KAAK,CAACG,MAAM,QAAQ,CAAC;AAE1C,MAAMC,gBAAgB,GAAGjB,EAAE,CAACkB,YAAY,CAACN,iBAAiB,EAAE,MAAM,CAAC;AACnE,MAAMO,SAAS,GAAGhB,KAAK,CAACiB,KAAK,CAACH,gBAAgB,CAA6B;AAE3E,MAAMI,UAAU,GAAG,IAAIC,GAAG,CAACH,SAAS,CAACI,UAAU,IAAI,EAAE,CAAC;AACtD,MAAMC,aAAa,GAAG,IAAIF,GAAG,CAACT,KAAK,CAACY,GAAG,CAACpB,WAAW,CAAC,CAAC;AAErD,IAAIqB,UAAU,GAAG,KAAK;;AAEtB;AACAF,aAAa,CAACG,OAAO,CAAEC,IAAI,IAAK;EAC9B,IAAI,CAACP,UAAU,CAACQ,GAAG,CAACD,IAAI,CAAC,EAAE;IACzBP,UAAU,CAACS,GAAG,CAACF,IAAI,CAAC;IACpBd,OAAO,CAACC,GAAG,CAACb,EAAE,CAAC6B,KAAK,CAAC,SAASH,IAAI,EAAE,CAAC,CAAC;IACtCF,UAAU,GAAG,IAAI;EACnB,CAAC,MAAM;IACLZ,OAAO,CAACC,GAAG,CAAC,YAAYa,IAAI,EAAE,CAAC;EACjC;AACF,CAAC,CAAC;;AAEF;AACAP,UAAU,CAACM,OAAO,CAAEC,IAAI,IAAK;EAC3B,IAAI,CAACJ,aAAa,CAACK,GAAG,CAACD,IAAI,CAAC,EAAE;IAC5Bd,OAAO,CAACC,GAAG,CAACb,EAAE,CAAC8B,GAAG,CAAC,SAASJ,IAAI,yCAAyC,CAAC,CAAC;EAC7E;AACF,CAAC,CAAC;;AAEF;AACA,IAAIF,UAAU,EAAE;EACdP,SAAS,CAACI,UAAU,GAAGU,KAAK,CAACC,IAAI,CAACb,UAAU,CAAC;EAC7C,MAAMc,uBAAuB,GAAGhC,KAAK,CAACiC,KAAK,CAACjB,SAAS,CAAC,CAACkB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;EAErGrC,EAAE,CAACsC,aAAa,CAAC1B,iBAAiB,EAAEuB,uBAAuB,EAAE,MAAM,CAAC;AACtE","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeVectorIcons.d.ts","sourceRoot":"","sources":["../../../src/NativeVectorIcons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,eAAe,
|
|
1
|
+
{"version":3,"file":"NativeVectorIcons.d.ts","sourceRoot":"","sources":["../../../src/NativeVectorIcons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAE9F,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrG;;AAED,wBAAqE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-icon-set.d.ts","sourceRoot":"","sources":["../../../src/create-icon-set.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAc,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,
|
|
1
|
+
{"version":3,"file":"create-icon-set.d.ts","sourceRoot":"","sources":["../../../src/create-icon-set.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAc,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAwB,IAAI,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAgB,MAAM,cAAc,CAAC;AAMxG,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,SAAS,GAAG;IACrC,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,aAAa,gDACd,EAAE,cACA,MAAM,YACR,MAAM,cACJ,SAAS,CAAC,OAAO,CAAC;;;YARtB,SAAS,CAAC,OAAO,CAAC;;;2BA2GlB,MAAM,EAAE,yBAEP,SAAS,CAAC,OAAO,CAAC;;;;+BAlCnB,MAAM,EAAE,yBAEP,SAAS,CAAC,OAAO,CAAC;;;;CAmE5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-icon-source-cache.d.ts","sourceRoot":"","sources":["../../../src/create-icon-source-cache.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,UAAU,UAAU,CAAC;AAC3B,QAAA,MAAM,UAAU,UAAU,CAAC;AAE3B,KAAK,SAAS,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhD,KAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"create-icon-source-cache.d.ts","sourceRoot":"","sources":["../../../src/create-icon-source-cache.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,UAAU,UAAU,CAAC;AAC3B,QAAA,MAAM,UAAU,UAAU,CAAC;AAE3B,KAAK,SAAS,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhD,KAAK,KAAK,GAAG;IAAE,IAAI,EAAE,OAAO,UAAU,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,UAAU,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC;AAErG,MAAM,CAAC,OAAO,UAAU,qBAAqB;oBAGpB,MAAM,SAAS,SAAS;oBAExB,MAAM,SAAS,KAAK;eAEzB,MAAM;eAEN,MAAM;EAczB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/scripts/common.ts"],"names":[],"mappings":"AA6CA,eAAO,MAAM,YAAY,wBAAyB,MAAM,aAMvD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updatePlist.d.ts","sourceRoot":"","sources":["../../../../src/scripts/updatePlist.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-native-vector-icons/common",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.20",
|
|
4
4
|
"description": "Customizable Icons for React Native with support for image source and full styling.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -28,10 +28,13 @@
|
|
|
28
28
|
"scripts": {
|
|
29
29
|
"clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
|
|
30
30
|
"prepare": "bob build",
|
|
31
|
-
"
|
|
32
|
-
"
|
|
31
|
+
"prepack": "cp ../../README.md .",
|
|
32
|
+
"postpack": "rm README.md",
|
|
33
33
|
"watch": "onchange 'src/**' --initial -- yarn run prepare"
|
|
34
34
|
},
|
|
35
|
+
"bin": {
|
|
36
|
+
"rnvi-update-plist": "lib/commonjs/scripts/updatePlist.js"
|
|
37
|
+
},
|
|
35
38
|
"keywords": [
|
|
36
39
|
"react-native",
|
|
37
40
|
"ios",
|
|
@@ -68,41 +71,30 @@
|
|
|
68
71
|
"registry": "https://registry.npmjs.org/"
|
|
69
72
|
},
|
|
70
73
|
"dependencies": {
|
|
74
|
+
"@react-native-community/cli-tools": "^13.6.9",
|
|
75
|
+
"picocolors": "^1.0.1",
|
|
76
|
+
"plist": "^3.1.0",
|
|
71
77
|
"prop-types": "^15.8.1",
|
|
72
78
|
"yargs": "^17.7.2"
|
|
73
79
|
},
|
|
74
80
|
"devDependencies": {
|
|
75
|
-
"@
|
|
76
|
-
"@
|
|
77
|
-
"@react
|
|
78
|
-
"@release-it/conventional-changelog": "^8.0.1",
|
|
79
|
-
"@types/jest": "^29.5.11",
|
|
80
|
-
"@types/react": "~18.2.46",
|
|
81
|
-
"@types/react-native": "0.73.0",
|
|
82
|
-
"commitlint": "^18.4.3",
|
|
81
|
+
"@types/jest": "^29.5.12",
|
|
82
|
+
"@types/plist": "^3.0.5",
|
|
83
|
+
"@types/react": "~18.3.3",
|
|
83
84
|
"css-social-buttons": "^1.1.1",
|
|
84
85
|
"del-cli": "^5.1.0",
|
|
85
|
-
"eslint": "^8.56.0",
|
|
86
|
-
"eslint-config-airbnb": "^19.0.4",
|
|
87
|
-
"eslint-config-prettier": "^9.1.0",
|
|
88
|
-
"eslint-plugin-import": "^2.29.1",
|
|
89
|
-
"eslint-plugin-jsx-a11y": "^6.8.0",
|
|
90
|
-
"eslint-plugin-prettier": "^5.1.2",
|
|
91
|
-
"eslint-plugin-react": "^7.33.2",
|
|
92
|
-
"eslint-plugin-react-hooks": "^4.6.0",
|
|
93
86
|
"jest": "^29.7.0",
|
|
94
87
|
"onchange": "^7.1.0",
|
|
95
|
-
"oslllo-svg-fixer": "^
|
|
96
|
-
"pod-install": "^0.
|
|
97
|
-
"prettier": "^3.
|
|
98
|
-
"react": "18.
|
|
99
|
-
"react-native": "0.73.
|
|
88
|
+
"oslllo-svg-fixer": "^4.0.1",
|
|
89
|
+
"pod-install": "^0.2.2",
|
|
90
|
+
"prettier": "^3.3.2",
|
|
91
|
+
"react": "18.3.1",
|
|
92
|
+
"react-native": "0.73.8",
|
|
100
93
|
"react-native-builder-bob": "^0.23.2",
|
|
101
|
-
"release-it": "^17.0
|
|
94
|
+
"release-it": "^17.4.0",
|
|
102
95
|
"svg2ttf": "^6.0.3",
|
|
103
96
|
"svgicons2svgfont": "^12.0.0",
|
|
104
|
-
"
|
|
105
|
-
"typescript": "^5.3.3"
|
|
97
|
+
"typescript": "^5.4.2"
|
|
106
98
|
},
|
|
107
99
|
"peerDependencies": {
|
|
108
100
|
"react": "*",
|
|
@@ -121,28 +113,6 @@
|
|
|
121
113
|
"<rootDir>/lib/"
|
|
122
114
|
]
|
|
123
115
|
},
|
|
124
|
-
"commitlint": {
|
|
125
|
-
"extends": [
|
|
126
|
-
"@commitlint/config-conventional"
|
|
127
|
-
]
|
|
128
|
-
},
|
|
129
|
-
"release-it": {
|
|
130
|
-
"git": {
|
|
131
|
-
"commitMessage": "chore: release ${version}",
|
|
132
|
-
"tagName": "v${version}"
|
|
133
|
-
},
|
|
134
|
-
"npm": {
|
|
135
|
-
"publish": true
|
|
136
|
-
},
|
|
137
|
-
"github": {
|
|
138
|
-
"release": true
|
|
139
|
-
},
|
|
140
|
-
"plugins": {
|
|
141
|
-
"@release-it/conventional-changelog": {
|
|
142
|
-
"preset": "angular"
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
},
|
|
146
116
|
"react-native-builder-bob": {
|
|
147
117
|
"source": "src",
|
|
148
118
|
"output": "lib",
|
|
@@ -165,6 +135,5 @@
|
|
|
165
135
|
"javaPackageName": "com.reactnativevectoricons.common"
|
|
166
136
|
}
|
|
167
137
|
},
|
|
168
|
-
"
|
|
169
|
-
"gitHead": "d3df16c8ea56afc562da15ee8c78d7ec7749385a"
|
|
138
|
+
"gitHead": "575e56e62b50dfc61e9ce46f460b2ec3ec2af087"
|
|
170
139
|
}
|
|
@@ -19,16 +19,60 @@ Pod::Spec.new do |s|
|
|
|
19
19
|
s.script_phase = {
|
|
20
20
|
:name => 'Copy Fonts',
|
|
21
21
|
:script => "
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
set -e
|
|
23
|
+
|
|
24
|
+
# This script borrows from the standard resource copy script https://gist.github.com/vonovak/d8f1a37804438f05bae22be1e8cd53c1
|
|
25
|
+
# We need two key bits of information
|
|
26
|
+
# Project Root - Where the package.json for the RN app lives
|
|
27
|
+
# Xcode Build Dir to copy the fonts into - We look for the directory that ends in .app
|
|
28
|
+
|
|
29
|
+
echo \"(RNVI) START_COPY_FONTS\"
|
|
30
|
+
|
|
31
|
+
echo \"(RNVI) PWD: $(pwd)\"
|
|
32
|
+
|
|
33
|
+
#############
|
|
34
|
+
# Find the fonts we need to copy
|
|
35
|
+
#############
|
|
36
|
+
|
|
37
|
+
# Assume the project root is always two directories above the POD_ROOT
|
|
38
|
+
echo \"(RNVI) PODS_ROOT: $PODS_ROOT\"
|
|
39
|
+
PROJECT_ROOT=\"${PODS_ROOT}/../..\"
|
|
40
|
+
echo \"(RNVI) PROJECT_ROOT: $PROJECT_ROOT\"
|
|
41
|
+
|
|
42
|
+
# Items we need to copy for rsync
|
|
43
|
+
RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
|
|
44
|
+
|
|
45
|
+
node \"${PODS_TARGET_SRCROOT}/lib/commonjs/scripts/getFonts.js\" \"$PROJECT_ROOT\"/package.json > \"$RESOURCES_TO_COPY\"
|
|
46
|
+
|
|
47
|
+
#############
|
|
48
|
+
# Find the destination we copy to
|
|
49
|
+
#############
|
|
50
|
+
|
|
51
|
+
echo \"(RNVI) PODS_CONFIGURATION_BUILD_DIR: $PODS_CONFIGURATION_BUILD_DIR\"
|
|
52
|
+
XCODE_DIR=$(ls -d \"$PODS_CONFIGURATION_BUILD_DIR\"/*.app)
|
|
53
|
+
echo \"(RNVI) XCODE_DIR: $XCODE_DIR\"
|
|
54
|
+
DEST_DIR=\"${XCODE_DIR}\"
|
|
55
|
+
echo \"(RNVI) DEST_DIR: $DEST_DIR\"
|
|
56
|
+
echo I $INSTALL_DIR
|
|
57
|
+
mkdir -p \"$DEST_DIR\"
|
|
58
|
+
|
|
59
|
+
#############
|
|
60
|
+
# Copy the fonts
|
|
61
|
+
#############
|
|
62
|
+
echo \"(RNVI) Copying the following files to $DEST_DIR\"
|
|
63
|
+
cat \"$RESOURCES_TO_COPY\" | sed 's/^/(RNVI) /'
|
|
64
|
+
|
|
65
|
+
# NOTE: Should we add --delete and remove old fonts automagically? NOt doing it yet as it feels risky
|
|
66
|
+
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from=\"$RESOURCES_TO_COPY\" / \"$DEST_DIR\"
|
|
67
|
+
# TODO: How do we test this is right?
|
|
68
|
+
if [[ \"${ACTION}\" == \"install\" ]] && [[ \"${SKIP_INSTALL}\" == \"NO\" ]]; then
|
|
69
|
+
mkdir -p \"${INSTALL_DIR}/react-native-vector-icons\"
|
|
70
|
+
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from=\"$RESOURCES_TO_COPY\" / \"${INSTALL_DIR}/react-native-vector-icons\"
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
rm -f \"$RESOURCES_TO_COPY\"
|
|
74
|
+
|
|
75
|
+
echo \"(RNVI) END:RNVI_COPY_FONTS\"
|
|
32
76
|
",
|
|
33
77
|
}
|
|
34
78
|
|
package/src/NativeVectorIcons.ts
CHANGED
|
@@ -2,19 +2,9 @@ import type { TurboModule } from 'react-native';
|
|
|
2
2
|
import { TurboModuleRegistry } from 'react-native';
|
|
3
3
|
|
|
4
4
|
export interface Spec extends TurboModule {
|
|
5
|
-
getImageForFont(
|
|
6
|
-
fontName: string,
|
|
7
|
-
glyph: string,
|
|
8
|
-
fontSize: number,
|
|
9
|
-
color: number
|
|
10
|
-
): Promise<string>;
|
|
5
|
+
getImageForFont(fontName: string, glyph: string, fontSize: number, color: number): Promise<string>;
|
|
11
6
|
|
|
12
|
-
getImageForFontSync(
|
|
13
|
-
fontName: string,
|
|
14
|
-
glyph: string,
|
|
15
|
-
fontSize: number,
|
|
16
|
-
color: number
|
|
17
|
-
): string;
|
|
7
|
+
getImageForFontSync(fontName: string, glyph: string, fontSize: number, color: number): string;
|
|
18
8
|
|
|
19
9
|
loadFontWithFileName(fontFileName: string, extension: string, subdirectory?: string): Promise<void>;
|
|
20
10
|
}
|
package/src/create-icon-set.tsx
CHANGED
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
import React, { forwardRef, type Ref } from 'react';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
Platform,
|
|
5
|
-
PixelRatio,
|
|
6
|
-
processColor,
|
|
7
|
-
Text,
|
|
8
|
-
type TextProps,
|
|
9
|
-
type TextStyle,
|
|
10
|
-
} from 'react-native';
|
|
3
|
+
import { PixelRatio, Platform, Text, type TextProps, type TextStyle, processColor } from 'react-native';
|
|
11
4
|
|
|
12
|
-
import ensureNativeModuleAvailable from './ensure-native-module-available';
|
|
13
|
-
import createIconSourceCache from './create-icon-source-cache';
|
|
14
5
|
import NativeIconAPI from './NativeVectorIcons';
|
|
6
|
+
import createIconSourceCache from './create-icon-source-cache';
|
|
7
|
+
import ensureNativeModuleAvailable from './ensure-native-module-available';
|
|
15
8
|
|
|
16
9
|
export const DEFAULT_ICON_SIZE = 12;
|
|
17
10
|
export const DEFAULT_ICON_COLOR = 'black';
|
|
@@ -27,12 +20,10 @@ export const createIconSet = <GM extends Record<string, number>>(
|
|
|
27
20
|
glyphMap: GM,
|
|
28
21
|
fontFamily: string,
|
|
29
22
|
fontFile: string,
|
|
30
|
-
fontStyle?: TextProps['style']
|
|
23
|
+
fontStyle?: TextProps['style'],
|
|
31
24
|
) => {
|
|
32
25
|
// Android doesn't care about actual fontFamily name, it will only look in fonts folder.
|
|
33
|
-
const fontBasename = fontFile
|
|
34
|
-
? fontFile.replace(/\.(otf|ttf)$/, '')
|
|
35
|
-
: fontFamily;
|
|
26
|
+
const fontBasename = fontFile ? fontFile.replace(/\.(otf|ttf)$/, '') : fontFamily;
|
|
36
27
|
|
|
37
28
|
const fontReference = Platform.select({
|
|
38
29
|
windows: `/Assets/${fontFile}#${fontFamily}`,
|
|
@@ -88,7 +79,9 @@ export const createIconSet = <GM extends Record<string, number>>(
|
|
|
88
79
|
);
|
|
89
80
|
};
|
|
90
81
|
|
|
91
|
-
const WrappedIcon = forwardRef<Text, IconProps<keyof typeof glyphMap>>((props, ref) =>
|
|
82
|
+
const WrappedIcon = forwardRef<Text, IconProps<keyof typeof glyphMap>>((props, ref) => (
|
|
83
|
+
<Icon innerRef={ref} {...props} />
|
|
84
|
+
));
|
|
92
85
|
WrappedIcon.displayName = 'Icon';
|
|
93
86
|
|
|
94
87
|
const imageSourceCache = createIconSourceCache();
|
|
@@ -96,7 +89,7 @@ export const createIconSet = <GM extends Record<string, number>>(
|
|
|
96
89
|
const getImageSourceSync = (
|
|
97
90
|
name: keyof GM,
|
|
98
91
|
size = DEFAULT_ICON_SIZE,
|
|
99
|
-
color: TextStyle['color'] = DEFAULT_ICON_COLOR
|
|
92
|
+
color: TextStyle['color'] = DEFAULT_ICON_COLOR,
|
|
100
93
|
) => {
|
|
101
94
|
ensureNativeModuleAvailable();
|
|
102
95
|
|
|
@@ -110,13 +103,12 @@ export const createIconSet = <GM extends Record<string, number>>(
|
|
|
110
103
|
}
|
|
111
104
|
|
|
112
105
|
try {
|
|
113
|
-
const imagePath =
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
);
|
|
106
|
+
const imagePath = NativeIconAPI.getImageForFontSync(
|
|
107
|
+
fontReference,
|
|
108
|
+
glyph,
|
|
109
|
+
size,
|
|
110
|
+
processedColor as number, // FIXME what if a non existant colour was passed in?
|
|
111
|
+
);
|
|
120
112
|
const value = { uri: imagePath, scale: PixelRatio.get() };
|
|
121
113
|
imageSourceCache.setValue(cacheKey, value);
|
|
122
114
|
return value;
|
|
@@ -129,7 +121,7 @@ export const createIconSet = <GM extends Record<string, number>>(
|
|
|
129
121
|
const getImageSource = async (
|
|
130
122
|
name: keyof GM,
|
|
131
123
|
size = DEFAULT_ICON_SIZE,
|
|
132
|
-
color: TextStyle['color'] = DEFAULT_ICON_COLOR
|
|
124
|
+
color: TextStyle['color'] = DEFAULT_ICON_COLOR,
|
|
133
125
|
) => {
|
|
134
126
|
ensureNativeModuleAvailable();
|
|
135
127
|
|
|
@@ -147,7 +139,7 @@ export const createIconSet = <GM extends Record<string, number>>(
|
|
|
147
139
|
fontReference,
|
|
148
140
|
glyph,
|
|
149
141
|
size,
|
|
150
|
-
processedColor as number // FIXME what if a non existant colour was passed in?
|
|
142
|
+
processedColor as number, // FIXME what if a non existant colour was passed in?
|
|
151
143
|
);
|
|
152
144
|
const value = { uri: imagePath, scale: PixelRatio.get() };
|
|
153
145
|
imageSourceCache.setValue(cacheKey, value);
|
|
@@ -158,25 +150,9 @@ export const createIconSet = <GM extends Record<string, number>>(
|
|
|
158
150
|
}
|
|
159
151
|
};
|
|
160
152
|
|
|
161
|
-
const loadFont = async () => {
|
|
162
|
-
if (Platform.OS !== 'ios') {
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
ensureNativeModuleAvailable();
|
|
166
|
-
|
|
167
|
-
const [filename, extension] = fontFile.split('.'); // FIXME: what if filename has two dots?
|
|
168
|
-
if (!extension) {
|
|
169
|
-
throw new Error('Font needs a filename extensison.');
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
await NativeIconAPI.loadFontWithFileName(filename!, extension, 'react-native-vector-icons');
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
loadFont();
|
|
176
|
-
|
|
177
153
|
const IconNamespace = Object.assign(WrappedIcon, {
|
|
178
|
-
getImageSource
|
|
179
|
-
getImageSourceSync
|
|
154
|
+
getImageSource,
|
|
155
|
+
getImageSourceSync,
|
|
180
156
|
});
|
|
181
157
|
|
|
182
158
|
return IconNamespace;
|
|
@@ -3,18 +3,14 @@ const TYPE_ERROR = 'error';
|
|
|
3
3
|
|
|
4
4
|
type ValueData = { uri: string; scale: number };
|
|
5
5
|
|
|
6
|
-
type Value =
|
|
7
|
-
| { type: typeof TYPE_VALUE; data: ValueData }
|
|
8
|
-
| { type: typeof TYPE_ERROR; data: Error };
|
|
6
|
+
type Value = { type: typeof TYPE_VALUE; data: ValueData } | { type: typeof TYPE_ERROR; data: Error };
|
|
9
7
|
|
|
10
8
|
export default function createIconSourceCache() {
|
|
11
9
|
const cache = new Map<string, Value>();
|
|
12
10
|
|
|
13
|
-
const setValue = (key: string, value: ValueData) =>
|
|
14
|
-
cache.set(key, { type: TYPE_VALUE, data: value });
|
|
11
|
+
const setValue = (key: string, value: ValueData) => cache.set(key, { type: TYPE_VALUE, data: value });
|
|
15
12
|
|
|
16
|
-
const setError = (key: string, error: Error) =>
|
|
17
|
-
cache.set(key, { type: TYPE_ERROR, data: error });
|
|
13
|
+
const setError = (key: string, error: Error) => cache.set(key, { type: TYPE_ERROR, data: error });
|
|
18
14
|
|
|
19
15
|
const has = (key: string) => cache.has(key);
|
|
20
16
|
|
|
@@ -3,7 +3,7 @@ import NativeIconAPI from './NativeVectorIcons';
|
|
|
3
3
|
export default function ensureNativeModuleAvailable() {
|
|
4
4
|
if (!NativeIconAPI) {
|
|
5
5
|
throw new Error(
|
|
6
|
-
'The native RNVectorIcons API is not available, did you properly integrate the module? Please verify your autolinking setup and recompile.'
|
|
6
|
+
'The native RNVectorIcons API is not available, did you properly integrate the module? Please verify your autolinking setup and recompile.',
|
|
7
7
|
);
|
|
8
8
|
}
|
|
9
9
|
}
|