@esri/calcite-ui-icons 3.29.0 → 3.30.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/LICENSE.md +4 -5
- package/README.md +36 -41
- package/docs/icons.json +1 -1
- package/docs/keywords.json +8531 -14811
- package/index.d.ts +3479 -3479
- package/index.js +3479 -3479
- package/lib/spriter/cli.js +7 -8
- package/lib/spriter/index.js +37 -40
- package/package.json +45 -37
- package/.github/workflows/npm-release.yml +0 -20
- package/CONTRIBUTE.md +0 -29
- package/bin/build.js +0 -24
- package/bin/cli.js +0 -6
- package/bin/convert-mobile.js +0 -218
- package/bin/optimize.js +0 -68
- package/bin/path-data.js +0 -136
- package/bin/server.js +0 -41
- package/bin/templates/imageset.json +0 -29
- package/bin/templates/xcassets.json +0 -6
- package/bower.json +0 -27
- package/docs/app.js +0 -118
- package/docs/index.html +0 -132
- package/docs/resources/calcite-web.min.css +0 -8
- package/docs/resources/calcite-web.min.js +0 -7
- package/js/ai16.d.ts +0 -1
- package/js/ai16.js +0 -1
- package/js/ai16.json +0 -1
- package/js/ai24.d.ts +0 -1
- package/js/ai24.js +0 -1
- package/js/ai24.json +0 -1
- package/js/ai32.d.ts +0 -1
- package/js/ai32.js +0 -1
- package/js/ai32.json +0 -1
- package/js/arrowCircleDownF16.d.ts +0 -1
- package/js/arrowCircleDownF16.js +0 -1
- package/js/arrowCircleDownF16.json +0 -1
- package/js/arrowCircleDownF24.d.ts +0 -1
- package/js/arrowCircleDownF24.js +0 -1
- package/js/arrowCircleDownF24.json +0 -1
- package/js/arrowCircleDownF32.d.ts +0 -1
- package/js/arrowCircleDownF32.js +0 -1
- package/js/arrowCircleDownF32.json +0 -1
- package/js/bookmarkF16.d.ts +0 -1
- package/js/bookmarkF16.js +0 -1
- package/js/bookmarkF16.json +0 -1
- package/js/bookmarkF24.d.ts +0 -1
- package/js/bookmarkF24.js +0 -1
- package/js/bookmarkF24.json +0 -1
- package/js/bookmarkF32.d.ts +0 -1
- package/js/bookmarkF32.js +0 -1
- package/js/bookmarkF32.json +0 -1
- package/js/codeBrand16.d.ts +0 -1
- package/js/codeBrand16.js +0 -1
- package/js/codeBrand16.json +0 -1
- package/js/codeBrand24.d.ts +0 -1
- package/js/codeBrand24.js +0 -1
- package/js/codeBrand24.json +0 -1
- package/js/codeBrand32.d.ts +0 -1
- package/js/codeBrand32.js +0 -1
- package/js/codeBrand32.json +0 -1
- package/js/codeBrandEdit16.d.ts +0 -1
- package/js/codeBrandEdit16.js +0 -1
- package/js/codeBrandEdit16.json +0 -1
- package/js/codeBrandEdit24.d.ts +0 -1
- package/js/codeBrandEdit24.js +0 -1
- package/js/codeBrandEdit24.json +0 -1
- package/js/codeBrandEdit32.d.ts +0 -1
- package/js/codeBrandEdit32.js +0 -1
- package/js/codeBrandEdit32.json +0 -1
- package/js/esriCommunity16.d.ts +0 -1
- package/js/esriCommunity16.js +0 -1
- package/js/esriCommunity16.json +0 -1
- package/js/esriCommunity24.d.ts +0 -1
- package/js/esriCommunity24.js +0 -1
- package/js/esriCommunity24.json +0 -1
- package/js/esriCommunity32.d.ts +0 -1
- package/js/esriCommunity32.js +0 -1
- package/js/esriCommunity32.json +0 -1
- package/js/esriCommunityGlyph16.d.ts +0 -1
- package/js/esriCommunityGlyph16.js +0 -1
- package/js/esriCommunityGlyph16.json +0 -1
- package/js/esriCommunityGlyph24.d.ts +0 -1
- package/js/esriCommunityGlyph24.js +0 -1
- package/js/esriCommunityGlyph24.json +0 -1
- package/js/esriCommunityGlyph32.d.ts +0 -1
- package/js/esriCommunityGlyph32.js +0 -1
- package/js/esriCommunityGlyph32.json +0 -1
- package/js/featureDisplayOrder16.d.ts +0 -1
- package/js/featureDisplayOrder16.js +0 -1
- package/js/featureDisplayOrder16.json +0 -1
- package/js/featureDisplayOrder24.d.ts +0 -1
- package/js/featureDisplayOrder24.js +0 -1
- package/js/featureDisplayOrder24.json +0 -1
- package/js/featureDisplayOrder32.d.ts +0 -1
- package/js/featureDisplayOrder32.js +0 -1
- package/js/featureDisplayOrder32.json +0 -1
- package/js/folderFill16F.d.ts +0 -1
- package/js/folderFill16F.js +0 -1
- package/js/folderFill16F.json +0 -1
- package/js/folderFill24F.d.ts +0 -1
- package/js/folderFill24F.js +0 -1
- package/js/folderFill24F.json +0 -1
- package/js/folderFill32F.d.ts +0 -1
- package/js/folderFill32F.js +0 -1
- package/js/folderFill32F.json +0 -1
- package/js/full1Column16.d.ts +0 -1
- package/js/full1Column16.js +0 -1
- package/js/full1Column16.json +0 -1
- package/js/full1Column24.d.ts +0 -1
- package/js/full1Column24.js +0 -1
- package/js/full1Column24.json +0 -1
- package/js/full1Column32.d.ts +0 -1
- package/js/full1Column32.js +0 -1
- package/js/full1Column32.json +0 -1
- package/js/fullMedium1Column16.d.ts +0 -1
- package/js/fullMedium1Column16.js +0 -1
- package/js/fullMedium1Column16.json +0 -1
- package/js/fullMedium1Column24.d.ts +0 -1
- package/js/fullMedium1Column24.js +0 -1
- package/js/fullMedium1Column24.json +0 -1
- package/js/fullMedium1Column32.d.ts +0 -1
- package/js/fullMedium1Column32.js +0 -1
- package/js/fullMedium1Column32.json +0 -1
- package/js/fullSmall1Column16.d.ts +0 -1
- package/js/fullSmall1Column16.js +0 -1
- package/js/fullSmall1Column16.json +0 -1
- package/js/fullSmall1Column24.d.ts +0 -1
- package/js/fullSmall1Column24.js +0 -1
- package/js/fullSmall1Column24.json +0 -1
- package/js/fullSmall1Column32.d.ts +0 -1
- package/js/fullSmall1Column32.js +0 -1
- package/js/fullSmall1Column32.json +0 -1
- package/js/i12XPlaybackSpeed16.d.ts +0 -1
- package/js/i12XPlaybackSpeed16.js +0 -1
- package/js/i12XPlaybackSpeed16.json +0 -1
- package/js/i12XPlaybackSpeed24.d.ts +0 -1
- package/js/i12XPlaybackSpeed24.js +0 -1
- package/js/i12XPlaybackSpeed24.json +0 -1
- package/js/i12XPlaybackSpeed32.d.ts +0 -1
- package/js/i12XPlaybackSpeed32.js +0 -1
- package/js/i12XPlaybackSpeed32.json +0 -1
- package/js/i14XPlaybackSpeed16.d.ts +0 -1
- package/js/i14XPlaybackSpeed16.js +0 -1
- package/js/i14XPlaybackSpeed16.json +0 -1
- package/js/i14XPlaybackSpeed24.d.ts +0 -1
- package/js/i14XPlaybackSpeed24.js +0 -1
- package/js/i14XPlaybackSpeed24.json +0 -1
- package/js/i14XPlaybackSpeed32.d.ts +0 -1
- package/js/i14XPlaybackSpeed32.js +0 -1
- package/js/i14XPlaybackSpeed32.json +0 -1
- package/js/i18XPlaybackSpeed16.d.ts +0 -1
- package/js/i18XPlaybackSpeed16.js +0 -1
- package/js/i18XPlaybackSpeed16.json +0 -1
- package/js/i18XPlaybackSpeed24.d.ts +0 -1
- package/js/i18XPlaybackSpeed24.js +0 -1
- package/js/i18XPlaybackSpeed24.json +0 -1
- package/js/i18XPlaybackSpeed32.d.ts +0 -1
- package/js/i18XPlaybackSpeed32.js +0 -1
- package/js/i18XPlaybackSpeed32.json +0 -1
- package/js/i1XPlaybackSpeed16.d.ts +0 -1
- package/js/i1XPlaybackSpeed16.js +0 -1
- package/js/i1XPlaybackSpeed16.json +0 -1
- package/js/i1XPlaybackSpeed24.d.ts +0 -1
- package/js/i1XPlaybackSpeed24.js +0 -1
- package/js/i1XPlaybackSpeed24.json +0 -1
- package/js/i1XPlaybackSpeed32.d.ts +0 -1
- package/js/i1XPlaybackSpeed32.js +0 -1
- package/js/i1XPlaybackSpeed32.json +0 -1
- package/js/i2XPlaybackSpeed16.d.ts +0 -1
- package/js/i2XPlaybackSpeed16.js +0 -1
- package/js/i2XPlaybackSpeed16.json +0 -1
- package/js/i2XPlaybackSpeed24.d.ts +0 -1
- package/js/i2XPlaybackSpeed24.js +0 -1
- package/js/i2XPlaybackSpeed24.json +0 -1
- package/js/i2XPlaybackSpeed32.d.ts +0 -1
- package/js/i2XPlaybackSpeed32.js +0 -1
- package/js/i2XPlaybackSpeed32.json +0 -1
- package/js/i4XPlaybackSpeed16.d.ts +0 -1
- package/js/i4XPlaybackSpeed16.js +0 -1
- package/js/i4XPlaybackSpeed16.json +0 -1
- package/js/i4XPlaybackSpeed24.d.ts +0 -1
- package/js/i4XPlaybackSpeed24.js +0 -1
- package/js/i4XPlaybackSpeed24.json +0 -1
- package/js/i4XPlaybackSpeed32.d.ts +0 -1
- package/js/i4XPlaybackSpeed32.js +0 -1
- package/js/i4XPlaybackSpeed32.json +0 -1
- package/js/i8XPlaybackSpeed16.d.ts +0 -1
- package/js/i8XPlaybackSpeed16.js +0 -1
- package/js/i8XPlaybackSpeed16.json +0 -1
- package/js/i8XPlaybackSpeed24.d.ts +0 -1
- package/js/i8XPlaybackSpeed24.js +0 -1
- package/js/i8XPlaybackSpeed24.json +0 -1
- package/js/i8XPlaybackSpeed32.d.ts +0 -1
- package/js/i8XPlaybackSpeed32.js +0 -1
- package/js/i8XPlaybackSpeed32.json +0 -1
- package/js/large2Column16.d.ts +0 -1
- package/js/large2Column16.js +0 -1
- package/js/large2Column16.json +0 -1
- package/js/large2Column24.d.ts +0 -1
- package/js/large2Column24.js +0 -1
- package/js/large2Column24.json +0 -1
- package/js/large2Column32.d.ts +0 -1
- package/js/large2Column32.js +0 -1
- package/js/large2Column32.json +0 -1
- package/js/locationSharingDisabled16.d.ts +0 -1
- package/js/locationSharingDisabled16.js +0 -1
- package/js/locationSharingDisabled16.json +0 -1
- package/js/locationSharingDisabled24.d.ts +0 -1
- package/js/locationSharingDisabled24.js +0 -1
- package/js/locationSharingDisabled24.json +0 -1
- package/js/locationSharingDisabled32.d.ts +0 -1
- package/js/locationSharingDisabled32.js +0 -1
- package/js/locationSharingDisabled32.json +0 -1
- package/js/locationSharingEnabled16.d.ts +0 -1
- package/js/locationSharingEnabled16.js +0 -1
- package/js/locationSharingEnabled16.json +0 -1
- package/js/locationSharingEnabled24.d.ts +0 -1
- package/js/locationSharingEnabled24.js +0 -1
- package/js/locationSharingEnabled24.json +0 -1
- package/js/locationSharingEnabled32.d.ts +0 -1
- package/js/locationSharingEnabled32.js +0 -1
- package/js/locationSharingEnabled32.json +0 -1
- package/js/locationSharingFilled16.d.ts +0 -1
- package/js/locationSharingFilled16.js +0 -1
- package/js/locationSharingFilled16.json +0 -1
- package/js/locationSharingFilled24.d.ts +0 -1
- package/js/locationSharingFilled24.js +0 -1
- package/js/locationSharingFilled24.json +0 -1
- package/js/locationSharingFilled32.d.ts +0 -1
- package/js/locationSharingFilled32.js +0 -1
- package/js/locationSharingFilled32.json +0 -1
- package/js/medium2Column16.d.ts +0 -1
- package/js/medium2Column16.js +0 -1
- package/js/medium2Column16.json +0 -1
- package/js/medium2Column24.d.ts +0 -1
- package/js/medium2Column24.js +0 -1
- package/js/medium2Column24.json +0 -1
- package/js/medium2Column32.d.ts +0 -1
- package/js/medium2Column32.js +0 -1
- package/js/medium2Column32.json +0 -1
- package/js/numberCircle1F16.d.ts +0 -1
- package/js/numberCircle1F16.js +0 -1
- package/js/numberCircle1F16.json +0 -1
- package/js/numberCircle1F24.d.ts +0 -1
- package/js/numberCircle1F24.js +0 -1
- package/js/numberCircle1F24.json +0 -1
- package/js/numberCircle1F32.d.ts +0 -1
- package/js/numberCircle1F32.js +0 -1
- package/js/numberCircle1F32.json +0 -1
- package/js/numberCircle2F16.d.ts +0 -1
- package/js/numberCircle2F16.js +0 -1
- package/js/numberCircle2F16.json +0 -1
- package/js/numberCircle2F24.d.ts +0 -1
- package/js/numberCircle2F24.js +0 -1
- package/js/numberCircle2F24.json +0 -1
- package/js/numberCircle2F32.d.ts +0 -1
- package/js/numberCircle2F32.js +0 -1
- package/js/numberCircle2F32.json +0 -1
- package/js/numberCircle3F16.d.ts +0 -1
- package/js/numberCircle3F16.js +0 -1
- package/js/numberCircle3F16.json +0 -1
- package/js/numberCircle3F24.d.ts +0 -1
- package/js/numberCircle3F24.js +0 -1
- package/js/numberCircle3F24.json +0 -1
- package/js/numberCircle3F32.d.ts +0 -1
- package/js/numberCircle3F32.js +0 -1
- package/js/numberCircle3F32.json +0 -1
- package/js/numberCircle4F16.d.ts +0 -1
- package/js/numberCircle4F16.js +0 -1
- package/js/numberCircle4F16.json +0 -1
- package/js/numberCircle4F24.d.ts +0 -1
- package/js/numberCircle4F24.js +0 -1
- package/js/numberCircle4F24.json +0 -1
- package/js/numberCircle4F32.d.ts +0 -1
- package/js/numberCircle4F32.js +0 -1
- package/js/numberCircle4F32.json +0 -1
- package/js/numberCircle5F16.d.ts +0 -1
- package/js/numberCircle5F16.js +0 -1
- package/js/numberCircle5F16.json +0 -1
- package/js/numberCircle5F24.d.ts +0 -1
- package/js/numberCircle5F24.js +0 -1
- package/js/numberCircle5F24.json +0 -1
- package/js/numberCircle5F32.d.ts +0 -1
- package/js/numberCircle5F32.js +0 -1
- package/js/numberCircle5F32.json +0 -1
- package/js/numberCircle6F16.d.ts +0 -1
- package/js/numberCircle6F16.js +0 -1
- package/js/numberCircle6F16.json +0 -1
- package/js/numberCircle6F24.d.ts +0 -1
- package/js/numberCircle6F24.js +0 -1
- package/js/numberCircle6F24.json +0 -1
- package/js/numberCircle6F32.d.ts +0 -1
- package/js/numberCircle6F32.js +0 -1
- package/js/numberCircle6F32.json +0 -1
- package/js/numberCircle7F16.d.ts +0 -1
- package/js/numberCircle7F16.js +0 -1
- package/js/numberCircle7F16.json +0 -1
- package/js/numberCircle7F24.d.ts +0 -1
- package/js/numberCircle7F24.js +0 -1
- package/js/numberCircle7F24.json +0 -1
- package/js/numberCircle7F32.d.ts +0 -1
- package/js/numberCircle7F32.js +0 -1
- package/js/numberCircle7F32.json +0 -1
- package/js/numberCircle8F16.d.ts +0 -1
- package/js/numberCircle8F16.js +0 -1
- package/js/numberCircle8F16.json +0 -1
- package/js/numberCircle8F24.d.ts +0 -1
- package/js/numberCircle8F24.js +0 -1
- package/js/numberCircle8F24.json +0 -1
- package/js/numberCircle8F32.d.ts +0 -1
- package/js/numberCircle8F32.js +0 -1
- package/js/numberCircle8F32.json +0 -1
- package/js/numberCircle9F16.d.ts +0 -1
- package/js/numberCircle9F16.js +0 -1
- package/js/numberCircle9F16.json +0 -1
- package/js/numberCircle9F24.d.ts +0 -1
- package/js/numberCircle9F24.js +0 -1
- package/js/numberCircle9F24.json +0 -1
- package/js/numberCircle9F32.d.ts +0 -1
- package/js/numberCircle9F32.js +0 -1
- package/js/numberCircle9F32.json +0 -1
- package/js/partlyCloud16.d.ts +0 -1
- package/js/partlyCloud16.js +0 -1
- package/js/partlyCloud16.json +0 -1
- package/js/partlyCloud24.d.ts +0 -1
- package/js/partlyCloud24.js +0 -1
- package/js/partlyCloud24.json +0 -1
- package/js/partlyCloud32.d.ts +0 -1
- package/js/partlyCloud32.js +0 -1
- package/js/partlyCloud32.json +0 -1
- package/js/pinTearF16.d.ts +0 -1
- package/js/pinTearF16.js +0 -1
- package/js/pinTearF16.json +0 -1
- package/js/pinTearF24.d.ts +0 -1
- package/js/pinTearF24.js +0 -1
- package/js/pinTearF24.json +0 -1
- package/js/pinTearF32.d.ts +0 -1
- package/js/pinTearF32.js +0 -1
- package/js/pinTearF32.json +0 -1
- package/js/popUpBlankF16.d.ts +0 -1
- package/js/popUpBlankF16.js +0 -1
- package/js/popUpBlankF16.json +0 -1
- package/js/popUpBlankF24.d.ts +0 -1
- package/js/popUpBlankF24.js +0 -1
- package/js/popUpBlankF24.json +0 -1
- package/js/popUpBlankF32.d.ts +0 -1
- package/js/popUpBlankF32.js +0 -1
- package/js/popUpBlankF32.json +0 -1
- package/js/radialTreeLinkChartYayout16.d.ts +0 -1
- package/js/radialTreeLinkChartYayout16.js +0 -1
- package/js/radialTreeLinkChartYayout16.json +0 -1
- package/js/radialTreeLinkChartYayout24.d.ts +0 -1
- package/js/radialTreeLinkChartYayout24.js +0 -1
- package/js/radialTreeLinkChartYayout24.json +0 -1
- package/js/radialTreeLinkChartYayout32.d.ts +0 -1
- package/js/radialTreeLinkChartYayout32.js +0 -1
- package/js/radialTreeLinkChartYayout32.json +0 -1
- package/js/satellite0F16.d.ts +0 -1
- package/js/satellite0F16.js +0 -1
- package/js/satellite0F16.json +0 -1
- package/js/satellite0F24.d.ts +0 -1
- package/js/satellite0F24.js +0 -1
- package/js/satellite0F24.json +0 -1
- package/js/satellite0F32.d.ts +0 -1
- package/js/satellite0F32.js +0 -1
- package/js/satellite0F32.json +0 -1
- package/js/satellite1F16.d.ts +0 -1
- package/js/satellite1F16.js +0 -1
- package/js/satellite1F16.json +0 -1
- package/js/satellite1F24.d.ts +0 -1
- package/js/satellite1F24.js +0 -1
- package/js/satellite1F24.json +0 -1
- package/js/satellite1F32.d.ts +0 -1
- package/js/satellite1F32.js +0 -1
- package/js/satellite1F32.json +0 -1
- package/js/satellite2F16.d.ts +0 -1
- package/js/satellite2F16.js +0 -1
- package/js/satellite2F16.json +0 -1
- package/js/satellite2F24.d.ts +0 -1
- package/js/satellite2F24.js +0 -1
- package/js/satellite2F24.json +0 -1
- package/js/satellite2F32.d.ts +0 -1
- package/js/satellite2F32.js +0 -1
- package/js/satellite2F32.json +0 -1
- package/js/satellite3F16.d.ts +0 -1
- package/js/satellite3F16.js +0 -1
- package/js/satellite3F16.json +0 -1
- package/js/satellite3F24.d.ts +0 -1
- package/js/satellite3F24.js +0 -1
- package/js/satellite3F24.json +0 -1
- package/js/satellite3F32.d.ts +0 -1
- package/js/satellite3F32.js +0 -1
- package/js/satellite3F32.json +0 -1
- package/js/sensor21.d.ts +0 -1
- package/js/sensor21.js +0 -1
- package/js/sensor21.json +0 -1
- package/js/sensor48.d.ts +0 -1
- package/js/sensor48.js +0 -1
- package/js/sensor48.json +0 -1
- package/js/sensor64.d.ts +0 -1
- package/js/sensor64.js +0 -1
- package/js/sensor64.json +0 -1
- package/js/sheildCoin16.d.ts +0 -1
- package/js/sheildCoin16.js +0 -1
- package/js/sheildCoin16.json +0 -1
- package/js/sheildCoin24.d.ts +0 -1
- package/js/sheildCoin24.js +0 -1
- package/js/sheildCoin24.json +0 -1
- package/js/sheildCoin32.d.ts +0 -1
- package/js/sheildCoin32.js +0 -1
- package/js/sheildCoin32.json +0 -1
- package/js/small2Column16.d.ts +0 -1
- package/js/small2Column16.js +0 -1
- package/js/small2Column16.json +0 -1
- package/js/small2Column24.d.ts +0 -1
- package/js/small2Column24.js +0 -1
- package/js/small2Column24.json +0 -1
- package/js/small2Column32.d.ts +0 -1
- package/js/small2Column32.js +0 -1
- package/js/small2Column32.json +0 -1
- package/launch-calcite.command +0 -1
- package/launch-meridian.command +0 -1
package/lib/spriter/cli.js
CHANGED
|
@@ -33,8 +33,7 @@ function getConfig() {
|
|
|
33
33
|
try {
|
|
34
34
|
const configFileContents = fs.readFileSync(input);
|
|
35
35
|
input = JSON.parse(configFileContents).input;
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
36
|
+
} catch (error) {
|
|
38
37
|
process.stderr.write(`config - could not read input: ${error}`);
|
|
39
38
|
process.exit(1);
|
|
40
39
|
}
|
|
@@ -46,22 +45,22 @@ function getConfig() {
|
|
|
46
45
|
}
|
|
47
46
|
|
|
48
47
|
spriter(getConfig())
|
|
49
|
-
.then(summary => {
|
|
48
|
+
.then((summary) => {
|
|
50
49
|
const { ellapsed, spritesheets } = summary;
|
|
51
50
|
|
|
52
51
|
process.stdout.write(
|
|
53
|
-
|
|
52
|
+
`Success!
|
|
54
53
|
|
|
55
54
|
Generated ${spritesheets.length} spritesheets in ${ellapsed} ms:
|
|
56
55
|
|
|
57
|
-
${spritesheets.map(spritesheet => `* ${spritesheet.output} (${spritesheet.icons.length} icons)`).join("\n")}
|
|
56
|
+
${spritesheets.map((spritesheet) => `* ${spritesheet.output} (${spritesheet.icons.length} icons)`).join("\n")}
|
|
58
57
|
|
|
59
|
-
|
|
58
|
+
`,
|
|
59
|
+
);
|
|
60
60
|
|
|
61
61
|
process.exit(0);
|
|
62
62
|
})
|
|
63
|
-
.catch(err => {
|
|
63
|
+
.catch((err) => {
|
|
64
64
|
process.stderr.write(`Fail! ${err}`);
|
|
65
65
|
process.exit(1);
|
|
66
66
|
});
|
|
67
|
-
|
package/lib/spriter/index.js
CHANGED
|
@@ -17,8 +17,8 @@ const SIZES = [16, 24, 32];
|
|
|
17
17
|
const OUTLINE = "outline";
|
|
18
18
|
const FILL = "fill";
|
|
19
19
|
|
|
20
|
-
const isDir = file => fs.lstatSync(`${ICONS}/${file}`).isDirectory();
|
|
21
|
-
const readSVG = icon => readFile(`${ICONS}/${icon.fileName}`, { encoding: "utf-8" });
|
|
20
|
+
const isDir = (file) => fs.lstatSync(`${ICONS}/${file}`).isDirectory();
|
|
21
|
+
const readSVG = (icon) => readFile(`${ICONS}/${icon.fileName}`, { encoding: "utf-8" });
|
|
22
22
|
const has = (haystack, needle) => haystack.indexOf(needle) > -1;
|
|
23
23
|
|
|
24
24
|
/**
|
|
@@ -97,14 +97,13 @@ const has = (haystack, needle) => haystack.indexOf(needle) > -1;
|
|
|
97
97
|
* @return {ThenPromise<T>} - Promise that resolves when directory creation is ensured.
|
|
98
98
|
*/
|
|
99
99
|
function ensureDir(dir) {
|
|
100
|
-
return mkDir(dir)
|
|
101
|
-
.
|
|
102
|
-
const triedToCreateExisting = error.code === "EEXIST";
|
|
100
|
+
return mkDir(dir).catch((error) => {
|
|
101
|
+
const triedToCreateExisting = error.code === "EEXIST";
|
|
103
102
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
103
|
+
if (!triedToCreateExisting) {
|
|
104
|
+
throw error;
|
|
105
|
+
}
|
|
106
|
+
});
|
|
108
107
|
}
|
|
109
108
|
|
|
110
109
|
/**
|
|
@@ -117,13 +116,14 @@ function ensureDir(dir) {
|
|
|
117
116
|
function getRequestedIcons(input) {
|
|
118
117
|
const iconsPerSize = {};
|
|
119
118
|
|
|
120
|
-
SIZES.forEach(size => iconsPerSize[size] = []);
|
|
119
|
+
SIZES.forEach((size) => (iconsPerSize[size] = []));
|
|
121
120
|
|
|
122
|
-
input.forEach(icon => {
|
|
121
|
+
input.forEach((icon) => {
|
|
123
122
|
const { name, sizes = SIZES[0], style = OUTLINE } = icon;
|
|
124
123
|
|
|
125
|
-
sizes
|
|
126
|
-
.
|
|
124
|
+
sizes
|
|
125
|
+
.filter((size) => has(SIZES, size))
|
|
126
|
+
.forEach((size) => {
|
|
127
127
|
const fillPart = style === FILL ? "-f" : "";
|
|
128
128
|
const fileName = `${name}-${size}${fillPart}.svg`;
|
|
129
129
|
|
|
@@ -142,10 +142,9 @@ function getRequestedIcons(input) {
|
|
|
142
142
|
* @return {ThenPromise<ExportInfo>} - Promise that resolves with export info.
|
|
143
143
|
*/
|
|
144
144
|
function generateExportInfo(requested) {
|
|
145
|
-
|
|
146
145
|
const processRequested = (icons) => {
|
|
147
|
-
SIZES.forEach(size => {
|
|
148
|
-
requested[size].forEach(icon => {
|
|
146
|
+
SIZES.forEach((size) => {
|
|
147
|
+
requested[size].forEach((icon) => {
|
|
149
148
|
if (!has(icons, icon.fileName)) {
|
|
150
149
|
return;
|
|
151
150
|
}
|
|
@@ -154,15 +153,15 @@ function generateExportInfo(requested) {
|
|
|
154
153
|
name: icon.name,
|
|
155
154
|
style: icon.style,
|
|
156
155
|
size,
|
|
157
|
-
fileName: icon.fileName
|
|
156
|
+
fileName: icon.fileName,
|
|
158
157
|
});
|
|
159
158
|
});
|
|
160
159
|
});
|
|
161
160
|
};
|
|
162
161
|
|
|
163
162
|
const processAll = (icons) => {
|
|
164
|
-
icons.forEach(icon => {
|
|
165
|
-
SIZES.forEach(size => {
|
|
163
|
+
icons.forEach((icon) => {
|
|
164
|
+
SIZES.forEach((size) => {
|
|
166
165
|
const fileMatchesSize = icon.indexOf(`-${size}`) > -1;
|
|
167
166
|
|
|
168
167
|
if (!fileMatchesSize) {
|
|
@@ -176,19 +175,19 @@ function generateExportInfo(requested) {
|
|
|
176
175
|
name,
|
|
177
176
|
style: filled ? FILL : OUTLINE,
|
|
178
177
|
size,
|
|
179
|
-
fileName: icon
|
|
178
|
+
fileName: icon,
|
|
180
179
|
});
|
|
181
180
|
});
|
|
182
181
|
});
|
|
183
182
|
};
|
|
184
183
|
|
|
185
|
-
const includeAll = SIZES.every(size => requested[size].length === 0);
|
|
184
|
+
const includeAll = SIZES.every((size) => requested[size].length === 0);
|
|
186
185
|
|
|
187
186
|
const exportInfo = {};
|
|
188
|
-
SIZES.forEach(size => exportInfo[size] = []);
|
|
187
|
+
SIZES.forEach((size) => (exportInfo[size] = []));
|
|
189
188
|
|
|
190
189
|
return readDir(ICONS)
|
|
191
|
-
.then(icons => {
|
|
190
|
+
.then((icons) => {
|
|
192
191
|
if (includeAll) {
|
|
193
192
|
processAll(icons);
|
|
194
193
|
return;
|
|
@@ -207,14 +206,13 @@ function generateExportInfo(requested) {
|
|
|
207
206
|
* @return {ThenPromise<string>} - Promise that resolves with symbol element text content.
|
|
208
207
|
*/
|
|
209
208
|
function svgToSymbol(icon) {
|
|
210
|
-
return readSVG(icon)
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
const { size } = icon;
|
|
209
|
+
return readSVG(icon).then((svgContent) => {
|
|
210
|
+
const svgContentCapturingPattern = /^\s*\<svg[^>]*>(.+)\<\/svg>\s*$/;
|
|
211
|
+
const [, innerContent] = svgContentCapturingPattern.exec(svgContent);
|
|
212
|
+
const { size } = icon;
|
|
215
213
|
|
|
216
|
-
|
|
217
|
-
|
|
214
|
+
return `<symbol id="${icon.name}-${size}" viewbox="0 0 ${size} ${size}">${innerContent}</symbol>`;
|
|
215
|
+
});
|
|
218
216
|
}
|
|
219
217
|
|
|
220
218
|
/**
|
|
@@ -229,8 +227,8 @@ function svgToSymbol(icon) {
|
|
|
229
227
|
*/
|
|
230
228
|
function createSpritesheet({ icons, output, size }) {
|
|
231
229
|
return Promise.all(icons.map(svgToSymbol))
|
|
232
|
-
.then(symbols => `<svg xmlns="http://www.w3.org/2000/svg">${symbols.join("")}</svg>`)
|
|
233
|
-
.then(content => writeFile(`${output}/${`${NAME}-${size}.svg`}`, content));
|
|
230
|
+
.then((symbols) => `<svg xmlns="http://www.w3.org/2000/svg">${symbols.join("")}</svg>`)
|
|
231
|
+
.then((content) => writeFile(`${output}/${`${NAME}-${size}.svg`}`, content));
|
|
234
232
|
}
|
|
235
233
|
|
|
236
234
|
/**
|
|
@@ -241,7 +239,6 @@ function createSpritesheet({ icons, output, size }) {
|
|
|
241
239
|
* @return {ThenPromise<ExportSummary>} - Promise that resolves with export summary.
|
|
242
240
|
*/
|
|
243
241
|
function spriter(config) {
|
|
244
|
-
|
|
245
242
|
const startTime = process.hrtime();
|
|
246
243
|
const { input = [], output = "./output" } = config;
|
|
247
244
|
|
|
@@ -249,7 +246,7 @@ function spriter(config) {
|
|
|
249
246
|
.then(() => generateExportInfo(getRequestedIcons(input)))
|
|
250
247
|
.then((exportInfo) =>
|
|
251
248
|
Promise.all(
|
|
252
|
-
SIZES.map(size => {
|
|
249
|
+
SIZES.map((size) => {
|
|
253
250
|
const icons = exportInfo[size];
|
|
254
251
|
|
|
255
252
|
if (icons.length === 0) {
|
|
@@ -257,19 +254,19 @@ function spriter(config) {
|
|
|
257
254
|
}
|
|
258
255
|
|
|
259
256
|
return createSpritesheet({ icons, output, size });
|
|
260
|
-
})
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
.then(exportInfo => {
|
|
257
|
+
}),
|
|
258
|
+
).then(() => exportInfo),
|
|
259
|
+
)
|
|
260
|
+
.then((exportInfo) => {
|
|
264
261
|
const endTime = process.hrtime(startTime);
|
|
265
262
|
|
|
266
263
|
const nanoToMillis = 1000000;
|
|
267
264
|
const ellapsed = endTime[1] / nanoToMillis;
|
|
268
265
|
|
|
269
|
-
const spritesheets = Object.keys(exportInfo).map(size => {
|
|
266
|
+
const spritesheets = Object.keys(exportInfo).map((size) => {
|
|
270
267
|
return {
|
|
271
268
|
output: `${output}/${NAME}-${size}.svg`,
|
|
272
|
-
icons: exportInfo[size]
|
|
269
|
+
icons: exportInfo[size],
|
|
273
270
|
};
|
|
274
271
|
});
|
|
275
272
|
|
package/package.json
CHANGED
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"bin": {
|
|
3
|
-
"spriter": "bin/spriter.js"
|
|
4
|
-
},
|
|
5
2
|
"name": "@esri/calcite-ui-icons",
|
|
6
|
-
"version": "3.
|
|
3
|
+
"version": "3.30.0",
|
|
7
4
|
"private": false,
|
|
8
5
|
"description": "A collection of UI SVG icons created by Esri for applications.",
|
|
9
|
-
"repository": {
|
|
10
|
-
"type": "git",
|
|
11
|
-
"url": "git+https://github.com/Esri/calcite-ui-icons.git"
|
|
12
|
-
},
|
|
13
|
-
"main": "index.js",
|
|
14
|
-
"js-next:main": "index.js",
|
|
15
|
-
"module": "index.js",
|
|
16
6
|
"keywords": [
|
|
17
7
|
"esri",
|
|
18
8
|
"arcgis",
|
|
@@ -20,47 +10,65 @@
|
|
|
20
10
|
"icons",
|
|
21
11
|
"svg"
|
|
22
12
|
],
|
|
23
|
-
"
|
|
24
|
-
{
|
|
25
|
-
"name": "Paul Pederson",
|
|
26
|
-
"email": "<ppederson@esri.com>"
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"name": "Skye Seitz",
|
|
30
|
-
"email": "<sseitz@esri.com>"
|
|
31
|
-
}
|
|
32
|
-
],
|
|
33
|
-
"license": "SEE LICENSE IN README.md",
|
|
13
|
+
"homepage": "https://developers.arcgis.com/calcite-design-system/",
|
|
34
14
|
"bugs": {
|
|
35
|
-
"url": "https://github.com/Esri/calcite-
|
|
15
|
+
"url": "https://github.com/Esri/calcite-design-system/issues"
|
|
16
|
+
},
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/Esri/calcite-design-system.git",
|
|
20
|
+
"directory": "packages/calcite-ui-icons"
|
|
21
|
+
},
|
|
22
|
+
"license": "SEE LICENSE.md",
|
|
23
|
+
"main": "index.js",
|
|
24
|
+
"module": "index.js",
|
|
25
|
+
"bin": {
|
|
26
|
+
"spriter": "bin/spriter.js"
|
|
36
27
|
},
|
|
37
|
-
"
|
|
28
|
+
"files": [
|
|
29
|
+
"icons/",
|
|
30
|
+
"js/",
|
|
31
|
+
"lib/",
|
|
32
|
+
"bin/sprinter.js",
|
|
33
|
+
"docs/icons.json",
|
|
34
|
+
"docs/keywords.json",
|
|
35
|
+
"index.d.ts",
|
|
36
|
+
"index.js",
|
|
37
|
+
"sprite-16.svg",
|
|
38
|
+
"sprite-24.svg",
|
|
39
|
+
"sprite-32.svg"
|
|
40
|
+
],
|
|
38
41
|
"scripts": {
|
|
39
|
-
"
|
|
42
|
+
"build": "npm run copy-assets && npm run buildsprite-16 && npm run buildsprite-24 && npm run buildsprite-32 && npm run optimize",
|
|
40
43
|
"buildsprite-16": "svgstore -o sprite-16.svg icons/*-16*.svg",
|
|
41
44
|
"buildsprite-24": "svgstore -o sprite-24.svg icons/*-24*.svg",
|
|
42
45
|
"buildsprite-32": "svgstore -o sprite-32.svg icons/*-32*.svg",
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"server": "node bin/server.js",
|
|
46
|
+
"convert-all-desktop-multi": "node bin/convert-mobile.js -o \"../desktop-output\" -i \"16\" -s 16 && node bin/convert-mobile.js -o \"../desktop-output\" -s 24 && node bin/convert-mobile.js -o \"../desktop-output\" -s 32 && node bin/convert-mobile.js -o \"../desktop-output\" -s 64",
|
|
47
|
+
"convert-all-desktop:size": "node bin/convert-mobile.js -o \"../desktop-output\" -i \"16\" -s",
|
|
46
48
|
"convert-all-ios": "node bin/convert-mobile.js -o \"../mobile-output\" -p \"ios\" -i \"24\"",
|
|
47
49
|
"convert-all-ios:size": "node bin/convert-mobile.js -o \"../mobile-output\" -p \"ios\" -s",
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
+
"copy-assets": "cpy \"../../node_modules/calcite-web/dist/js/calcite-web.min.js\" \"../../node_modules/calcite-web/dist/css/calcite-web.min.css\" \"./docs/resources\" --flat",
|
|
51
|
+
"optimize": "node bin/cli.js",
|
|
52
|
+
"spriter": "node bin/spriter.js",
|
|
53
|
+
"start": "npm run copy-assets && node bin/server.js"
|
|
50
54
|
},
|
|
51
55
|
"devDependencies": {
|
|
52
56
|
"browser-sync": "^2.24.7",
|
|
57
|
+
"calcite-web": "github:esri/calcite-web#v1.1.0",
|
|
53
58
|
"camelcase": "^5.3.1",
|
|
54
|
-
"cli-progress": "^3.
|
|
55
|
-
"debounce": "^1.
|
|
59
|
+
"cli-progress": "^3.12.0",
|
|
60
|
+
"debounce": "^2.1.0",
|
|
56
61
|
"fs-extra": "^7.0.0",
|
|
57
|
-
"glob": "^
|
|
58
|
-
"glob-promise": "^3.4.0",
|
|
62
|
+
"glob": "^11.0.0",
|
|
59
63
|
"promise": "~8.0.1",
|
|
64
|
+
"svg2img": "1.0.0-beta.2",
|
|
60
65
|
"svgo": "^1.3.0",
|
|
61
66
|
"svgson": "^2.1.1",
|
|
62
67
|
"svgstore-cli": "^1.3.1",
|
|
63
|
-
"
|
|
64
|
-
|
|
65
|
-
|
|
68
|
+
"yargs": "^17.7.2"
|
|
69
|
+
},
|
|
70
|
+
"volta": {
|
|
71
|
+
"extends": "../../package.json"
|
|
72
|
+
},
|
|
73
|
+
"gitHead": "1768b960533de6c7d06d3ede80d126badccf0596"
|
|
66
74
|
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
name: NPM Release
|
|
2
|
-
on:
|
|
3
|
-
release:
|
|
4
|
-
types: [published]
|
|
5
|
-
jobs:
|
|
6
|
-
release:
|
|
7
|
-
runs-on: ubuntu-latest
|
|
8
|
-
steps:
|
|
9
|
-
- uses: actions/checkout@v3
|
|
10
|
-
with:
|
|
11
|
-
ref: master
|
|
12
|
-
- uses: actions/setup-node@v3
|
|
13
|
-
with:
|
|
14
|
-
node-version: lts/*
|
|
15
|
-
registry-url: "https://registry.npmjs.org"
|
|
16
|
-
- run: npm i
|
|
17
|
-
- run: npm start
|
|
18
|
-
- run: npm publish
|
|
19
|
-
env:
|
|
20
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
package/CONTRIBUTE.md
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Contributing to calcite-ui-icons
|
|
2
|
-
|
|
3
|
-
The creative lab is the main contributor as they provide the various icons used by the different apps.
|
|
4
|
-
|
|
5
|
-
#### Bugs
|
|
6
|
-
|
|
7
|
-
Create an issue that describes clearly the issue and the reproducible steps.
|
|
8
|
-
|
|
9
|
-
#### Pull Requests
|
|
10
|
-
|
|
11
|
-
If you feel the urge to contribute, submit your updates with pull request.
|
|
12
|
-
|
|
13
|
-
## Running the Doc Site
|
|
14
|
-
|
|
15
|
-
First install all dependencies:
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
npm install
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
Next, run the server:
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
npm run server
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
This will optimize the icons, create a JSON file with all the icon path data, and start up a development server with live reload capabilities.
|
|
28
|
-
|
|
29
|
-
This task also watches for changes and rebuilds the JSON file whenever icons are added or edited, automatically reloading your browser to display changes as they come in.
|
package/bin/build.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
const optimize = require('./optimize');
|
|
2
|
-
const generatePathFile = require('./path-data');
|
|
3
|
-
|
|
4
|
-
module.exports = function () {
|
|
5
|
-
return optimize('*.svg')
|
|
6
|
-
.then(() => optimize('icons/*.svg', true))
|
|
7
|
-
.catch((error) => {
|
|
8
|
-
console.error('🚨 Error while optimizing icons');
|
|
9
|
-
throw error;
|
|
10
|
-
})
|
|
11
|
-
.then(() => {
|
|
12
|
-
console.log('✨ icons optimized successfully');
|
|
13
|
-
return generatePathFile();
|
|
14
|
-
})
|
|
15
|
-
.catch((error) => {
|
|
16
|
-
console.error('🚨 Error while generating icons.json');
|
|
17
|
-
console.error(error);
|
|
18
|
-
throw error;
|
|
19
|
-
})
|
|
20
|
-
.then((files) => {
|
|
21
|
-
console.log('✨ path file generated at ./docs/icons.json');
|
|
22
|
-
return files;
|
|
23
|
-
});
|
|
24
|
-
}
|
package/bin/cli.js
DELETED
package/bin/convert-mobile.js
DELETED
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const fs = require('fs');
|
|
4
|
-
const svg2img = require('svg2img');
|
|
5
|
-
const path = require('path');
|
|
6
|
-
const yargs = require('yargs');
|
|
7
|
-
|
|
8
|
-
const options = yargs
|
|
9
|
-
.usage('Usage: -n <name of icon, omit if doing bulk>, \n-s <output size, defaults to 24>, \n-o <output path (defaults to ./output)>, \n-p <target platform (e.g. ios) \n-i <16, 24, 32, omit for 16>')
|
|
10
|
-
.option('n', { alias: 'name', describe: 'name of icon, without -32.svg; omit to convert all icons', type: 'string', demandOption: false })
|
|
11
|
-
.option('o', { alias: 'outputDir', describe: 'output path, relative to this script', type: 'string', demandOption: false })
|
|
12
|
-
.option('p', { alias: 'outputPlatform', describe: 'target platform, valid options are: ios', type: 'string', demandOption: false })
|
|
13
|
-
.option('i', { alias: 'inSize', describe: 'source svg variant, defaults to 16', type: 'string', demandOption: false })
|
|
14
|
-
.option('s', { alias: 'outSize', describe: 'size of output image', type: 'string', demandOption: false})
|
|
15
|
-
.argv;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Converts a single svg to png, with given width & height values. The function will automatically append '.png'
|
|
19
|
-
* @param {string} svgFilePath - filepath to icon .svg
|
|
20
|
-
* @param {int} width - width of output file
|
|
21
|
-
* @param {int} height - height of output file
|
|
22
|
-
* @param {string} outputBasePath - base directory in which to store output
|
|
23
|
-
* @param {string} outputName - name of output png image, excluding '.png'
|
|
24
|
-
* @param {string} outputSuffix - suffix appended to output file name (ex, '@2x')
|
|
25
|
-
*/
|
|
26
|
-
function convertSingleIconToPng(svgFilePath, width, height, outputBasePath, outputName, outputSuffix=null) {
|
|
27
|
-
// make sure output base path exists
|
|
28
|
-
if (!fs.existsSync(outputBasePath)) {
|
|
29
|
-
fs.mkdirSync(outputBasePath, {
|
|
30
|
-
recursive: true
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
// concatenate real output path
|
|
34
|
-
let real_output_path = path.join(outputBasePath, outputName);
|
|
35
|
-
if (outputSuffix) {
|
|
36
|
-
real_output_path += outputSuffix
|
|
37
|
-
}
|
|
38
|
-
real_output_path += '.png'
|
|
39
|
-
// convert and save the image
|
|
40
|
-
svg2img(svgFilePath, { 'width': width, 'height': height }, function (error, buffer) {
|
|
41
|
-
if (error){
|
|
42
|
-
console.log(error);
|
|
43
|
-
process.exit(1);
|
|
44
|
-
}
|
|
45
|
-
fs.writeFileSync(real_output_path, buffer);
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Creates an ImageSet (including Contents.json file) for an icon
|
|
51
|
-
* @param {string} svgFilePath - filepath to icon .svg
|
|
52
|
-
* @param {int} width - width of output file @1x
|
|
53
|
-
* @param {int} height - height of output file @1x
|
|
54
|
-
* @param {string} outputBasePath - base directory in which to store output
|
|
55
|
-
* @param {string} outputName - name of output png image, excluding '.png'
|
|
56
|
-
*/
|
|
57
|
-
function convertIconToXcodeImageSet(svgFilePath, width, height, outputBasePath, outputName) {
|
|
58
|
-
const outputImagesetPath = path.join(outputBasePath, outputName + '.imageset');
|
|
59
|
-
|
|
60
|
-
// Create images at 3 sizes
|
|
61
|
-
convertSingleIconToPng(svgFilePath, width, height, outputImagesetPath, outputName, '@1x');
|
|
62
|
-
convertSingleIconToPng(svgFilePath, width * 2, height * 2, outputImagesetPath, outputName, '@2x');
|
|
63
|
-
convertSingleIconToPng(svgFilePath, width * 3, height * 3, outputImagesetPath, outputName, '@3x');
|
|
64
|
-
|
|
65
|
-
// read template
|
|
66
|
-
const imagesetTemplatePath = path.join(__dirname, 'templates', 'imageset.json');
|
|
67
|
-
// create Contents.json for asset catalog asset
|
|
68
|
-
fs.readFile(imagesetTemplatePath, 'utf8', function (error, buffer) {
|
|
69
|
-
if (error) {
|
|
70
|
-
console.log(error);
|
|
71
|
-
process.exit(1);
|
|
72
|
-
}
|
|
73
|
-
const contentsJsonBuffer = buffer.replace(/\$\{NAME\}/g, outputName);
|
|
74
|
-
const contentsJsonOutputPath = path.join(outputImagesetPath, 'Contents.json');
|
|
75
|
-
fs.writeFileSync(contentsJsonOutputPath, contentsJsonBuffer)
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Indexes all calcite icons contained in directory at path
|
|
81
|
-
* @param {string} baseIconPath - path to calcite .svg icons directory
|
|
82
|
-
*/
|
|
83
|
-
async function indexCalciteIcons(baseIconPath) {
|
|
84
|
-
return new Promise(resolve => {
|
|
85
|
-
var iconIndex = {};
|
|
86
|
-
fs.readdir(baseIconPath, function (error, files) {
|
|
87
|
-
if (error) {
|
|
88
|
-
console.log(error);
|
|
89
|
-
process.exit(1);
|
|
90
|
-
}
|
|
91
|
-
files.forEach(function (file) {
|
|
92
|
-
// strip all files of file size information, catalog in an index
|
|
93
|
-
var base_name = path.basename(file);
|
|
94
|
-
base_name = base_name.replace('.svg', '');
|
|
95
|
-
var size = undefined;
|
|
96
|
-
if (base_name.includes('-16')) {
|
|
97
|
-
base_name = base_name.replace('-16', '');
|
|
98
|
-
size = 16;
|
|
99
|
-
}
|
|
100
|
-
else if (base_name.includes('-24')) {
|
|
101
|
-
base_name = base_name.replace('-24', '');
|
|
102
|
-
size = 24;
|
|
103
|
-
}
|
|
104
|
-
else if (base_name.includes('-32')) {
|
|
105
|
-
base_name = base_name.replace('-32', '');
|
|
106
|
-
size = 32;
|
|
107
|
-
}
|
|
108
|
-
if (!iconIndex[base_name]) {
|
|
109
|
-
iconIndex[base_name] = {}
|
|
110
|
-
}
|
|
111
|
-
iconIndex[base_name][size] = path.join(baseIconPath, file);
|
|
112
|
-
});
|
|
113
|
-
resolve(iconIndex);
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Indexes all calcite icons contained in directory at path
|
|
120
|
-
* @param {string} xcAssetsBaseDirectory - path where to derive calcite.xcassets
|
|
121
|
-
*/
|
|
122
|
-
async function createCalciteXCAssets(xcAssetsBaseDirectory) {
|
|
123
|
-
return new Promise(resolve => {
|
|
124
|
-
// Put in .xcassets folder
|
|
125
|
-
var directory = path.join(xcAssetsBaseDirectory, 'calcite.xcassets');
|
|
126
|
-
// Make sure dir exists
|
|
127
|
-
if (!fs.existsSync(directory)) {
|
|
128
|
-
fs.mkdirSync(directory, {
|
|
129
|
-
recursive: true
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
// read contents.json template
|
|
133
|
-
let template_path = path.join(__dirname, 'templates', 'xcassets.json');
|
|
134
|
-
// write out file
|
|
135
|
-
fs.readFile(template_path, 'utf8', function (error, buffer) {
|
|
136
|
-
if (error) {
|
|
137
|
-
console.log(error);
|
|
138
|
-
process.exit(1);
|
|
139
|
-
}
|
|
140
|
-
const contents_output_path = path.join(directory, 'Contents.json');
|
|
141
|
-
fs.writeFile(contents_output_path, buffer, function (error) {
|
|
142
|
-
resolve(directory);
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
async function main() {
|
|
149
|
-
// index all calcite icons
|
|
150
|
-
let iconIndex = await indexCalciteIcons('./icons/');
|
|
151
|
-
// establish output root path
|
|
152
|
-
var outputRoot = path.join(__dirname, 'output')
|
|
153
|
-
if (options.outputDir) {
|
|
154
|
-
outputRoot = path.join(__dirname, options.outputDir);
|
|
155
|
-
}
|
|
156
|
-
// establish input size
|
|
157
|
-
var inputSize = 24;
|
|
158
|
-
if (options.inSize === '16'){
|
|
159
|
-
inputSize = 16;
|
|
160
|
-
} else if (options.inSize === '24'){
|
|
161
|
-
inputSize = 24;
|
|
162
|
-
} else if (options.inSize === '32'){
|
|
163
|
-
inputSize = 32;
|
|
164
|
-
} else if (options.outSize) {
|
|
165
|
-
let size = parseInt(options.outSize);
|
|
166
|
-
if (size < 24) {
|
|
167
|
-
inputSize = 16;
|
|
168
|
-
} else if (size < 32) {
|
|
169
|
-
inputSize = 24;
|
|
170
|
-
} else if (size >= 32) {
|
|
171
|
-
inputSize = 32;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
// establish output size (in pixels)
|
|
175
|
-
var outputSize = 24;
|
|
176
|
-
if (options.outSize) {
|
|
177
|
-
let size = parseInt(options.outSize);
|
|
178
|
-
if (size) {
|
|
179
|
-
outputSize = size;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
// ensure icon name is valid, checking index
|
|
183
|
-
if (options.name) {
|
|
184
|
-
if (!(options.name in iconIndex)) {
|
|
185
|
-
console.log("Invalid icon name " + options.name);
|
|
186
|
-
process.exit(1);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
// build xcassets if output for iOS
|
|
190
|
-
if (options.outputPlatform === 'ios') {
|
|
191
|
-
let xcAssetsDirectory = await createCalciteXCAssets(outputRoot);
|
|
192
|
-
if (options.name) {
|
|
193
|
-
let name = options.name;
|
|
194
|
-
let file = iconIndex[name][inputSize];
|
|
195
|
-
convertIconToXcodeImageSet(file, outputSize, outputSize, xcAssetsDirectory, name);
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
for (let key in iconIndex) {
|
|
199
|
-
let file = iconIndex[key][inputSize];
|
|
200
|
-
convertIconToXcodeImageSet(file, outputSize, outputSize, xcAssetsDirectory, key)
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
} else { // platform is not ios, render plain png
|
|
204
|
-
if (options.name) {
|
|
205
|
-
let name = options.name;
|
|
206
|
-
let file = iconIndex[name][inputSize];
|
|
207
|
-
convertSingleIconToPng(file, outputSize, outputSize, outputRoot, name, undefined);
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
for (let key in iconIndex) {
|
|
211
|
-
let file = iconIndex[key][inputSize];
|
|
212
|
-
convertSingleIconToPng(file, outputSize, outputSize, outputRoot, key, undefined);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
main();
|