@zleap-ai/icons 0.0.28
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 +155 -0
- package/dist/cjs/changelog-generator.js +300 -0
- package/dist/cjs/changelog-generator.js.map +1 -0
- package/dist/cjs/component-generator.js +434 -0
- package/dist/cjs/component-generator.js.map +1 -0
- package/dist/cjs/figma-client.js +260 -0
- package/dist/cjs/figma-client.js.map +1 -0
- package/dist/cjs/icon-filter.js +278 -0
- package/dist/cjs/icon-filter.js.map +1 -0
- package/dist/cjs/icon-search.js +43 -0
- package/dist/cjs/icon-search.js.map +1 -0
- package/dist/cjs/icon-validator.js +369 -0
- package/dist/cjs/icon-validator.js.map +1 -0
- package/dist/cjs/icons/IconArrowRight.js +17 -0
- package/dist/cjs/icons/IconArrowRight.js.map +1 -0
- package/dist/cjs/icons/IconBack.js +17 -0
- package/dist/cjs/icons/IconBack.js.map +1 -0
- package/dist/cjs/icons/IconBack1.js +17 -0
- package/dist/cjs/icons/IconBack1.js.map +1 -0
- package/dist/cjs/icons/IconBangZhuShuoMing.js +17 -0
- package/dist/cjs/icons/IconBangZhuShuoMing.js.map +1 -0
- package/dist/cjs/icons/IconBaoGaoZhuShou.js +20 -0
- package/dist/cjs/icons/IconBaoGaoZhuShou.js.map +1 -0
- package/dist/cjs/icons/IconCheck.js +17 -0
- package/dist/cjs/icons/IconCheck.js.map +1 -0
- package/dist/cjs/icons/IconCheck1.js +17 -0
- package/dist/cjs/icons/IconCheck1.js.map +1 -0
- package/dist/cjs/icons/IconChengYuanGuanLi.js +20 -0
- package/dist/cjs/icons/IconChengYuanGuanLi.js.map +1 -0
- package/dist/cjs/icons/IconChongXinFaSong.js +17 -0
- package/dist/cjs/icons/IconChongXinFaSong.js.map +1 -0
- package/dist/cjs/icons/IconCloseCircle.js +17 -0
- package/dist/cjs/icons/IconCloseCircle.js.map +1 -0
- package/dist/cjs/icons/IconCuoWu.js +17 -0
- package/dist/cjs/icons/IconCuoWu.js.map +1 -0
- package/dist/cjs/icons/IconDingDing.js +17 -0
- package/dist/cjs/icons/IconDingDing.js.map +1 -0
- package/dist/cjs/icons/IconEdit03.js +17 -0
- package/dist/cjs/icons/IconEdit03.js.map +1 -0
- package/dist/cjs/icons/IconFanHui.js +17 -0
- package/dist/cjs/icons/IconFanHui.js.map +1 -0
- package/dist/cjs/icons/IconFangDa.js +17 -0
- package/dist/cjs/icons/IconFangDa.js.map +1 -0
- package/dist/cjs/icons/IconFrame.js +17 -0
- package/dist/cjs/icons/IconFrame.js.map +1 -0
- package/dist/cjs/icons/IconFrame1261156242.js +17 -0
- package/dist/cjs/icons/IconFrame1261156242.js.map +1 -0
- package/dist/cjs/icons/IconGuanBi.js +17 -0
- package/dist/cjs/icons/IconGuanBi.js.map +1 -0
- package/dist/cjs/icons/IconGuanBi1.js +17 -0
- package/dist/cjs/icons/IconGuanBi1.js.map +1 -0
- package/dist/cjs/icons/IconGuanBiXiao.js +17 -0
- package/dist/cjs/icons/IconGuanBiXiao.js.map +1 -0
- package/dist/cjs/icons/IconGuanBiXiao1.js +17 -0
- package/dist/cjs/icons/IconGuanBiXiao1.js.map +1 -0
- package/dist/cjs/icons/IconLianJie.js +17 -0
- package/dist/cjs/icons/IconLianJie.js.map +1 -0
- package/dist/cjs/icons/IconLianJie1.js +17 -0
- package/dist/cjs/icons/IconLianJie1.js.map +1 -0
- package/dist/cjs/icons/IconQiWeiJiQiRen.js +17 -0
- package/dist/cjs/icons/IconQiWeiJiQiRen.js.map +1 -0
- package/dist/cjs/icons/IconQiYeBan.js +20 -0
- package/dist/cjs/icons/IconQiYeBan.js.map +1 -0
- package/dist/cjs/icons/IconRss.js +17 -0
- package/dist/cjs/icons/IconRss.js.map +1 -0
- package/dist/cjs/icons/IconSearch.js +17 -0
- package/dist/cjs/icons/IconSearch.js.map +1 -0
- package/dist/cjs/icons/IconSearch1.js +17 -0
- package/dist/cjs/icons/IconSearch1.js.map +1 -0
- package/dist/cjs/icons/IconSheZhi.js +17 -0
- package/dist/cjs/icons/IconSheZhi.js.map +1 -0
- package/dist/cjs/icons/IconShengCheng.js +17 -0
- package/dist/cjs/icons/IconShengCheng.js.map +1 -0
- package/dist/cjs/icons/IconShiBai.js +17 -0
- package/dist/cjs/icons/IconShiBai.js.map +1 -0
- package/dist/cjs/icons/IconShouQi.js +17 -0
- package/dist/cjs/icons/IconShouQi.js.map +1 -0
- package/dist/cjs/icons/IconSouSuoZhuShou.js +20 -0
- package/dist/cjs/icons/IconSouSuoZhuShou.js.map +1 -0
- package/dist/cjs/icons/IconSuoXiao.js +17 -0
- package/dist/cjs/icons/IconSuoXiao.js.map +1 -0
- package/dist/cjs/icons/IconTianJia.js +17 -0
- package/dist/cjs/icons/IconTianJia.js.map +1 -0
- package/dist/cjs/icons/IconTongZhi.js +17 -0
- package/dist/cjs/icons/IconTongZhi.js.map +1 -0
- package/dist/cjs/icons/IconTongZhi1.js +17 -0
- package/dist/cjs/icons/IconTongZhi1.js.map +1 -0
- package/dist/cjs/icons/IconTuiChu.js +17 -0
- package/dist/cjs/icons/IconTuiChu.js.map +1 -0
- package/dist/cjs/icons/IconWangLuoJianSuo.js +17 -0
- package/dist/cjs/icons/IconWangLuoJianSuo.js.map +1 -0
- package/dist/cjs/icons/IconWangYeXiaZai.js +17 -0
- package/dist/cjs/icons/IconWangYeXiaZai.js.map +1 -0
- package/dist/cjs/icons/IconWeiBiaoTi1HuaBan11.js +17 -0
- package/dist/cjs/icons/IconWeiBiaoTi1HuaBan11.js.map +1 -0
- package/dist/cjs/icons/IconWenDaZhuShou.js +20 -0
- package/dist/cjs/icons/IconWenDaZhuShou.js.map +1 -0
- package/dist/cjs/icons/IconWenDang.js +17 -0
- package/dist/cjs/icons/IconWenDang.js.map +1 -0
- package/dist/cjs/icons/IconWenDang1.js +17 -0
- package/dist/cjs/icons/IconWenDang1.js.map +1 -0
- package/dist/cjs/icons/IconWenJian.js +17 -0
- package/dist/cjs/icons/IconWenJian.js.map +1 -0
- package/dist/cjs/icons/IconXiTongPeiZhi.js +20 -0
- package/dist/cjs/icons/IconXiTongPeiZhi.js.map +1 -0
- package/dist/cjs/icons/IconXiaZai.js +17 -0
- package/dist/cjs/icons/IconXiaZai.js.map +1 -0
- package/dist/cjs/icons/IconXiaZaiZhuShou.js +20 -0
- package/dist/cjs/icons/IconXiaZaiZhuShou.js.map +1 -0
- package/dist/cjs/icons/IconXiaoXi.js +17 -0
- package/dist/cjs/icons/IconXiaoXi.js.map +1 -0
- package/dist/cjs/icons/IconXinXiGuanLi.js +20 -0
- package/dist/cjs/icons/IconXinXiGuanLi.js.map +1 -0
- package/dist/cjs/icons/IconXinZeng.js +17 -0
- package/dist/cjs/icons/IconXinZeng.js.map +1 -0
- package/dist/cjs/icons/IconYanZhengMa.js +17 -0
- package/dist/cjs/icons/IconYanZhengMa.js.map +1 -0
- package/dist/cjs/icons/IconYunYingGuanLi.js +20 -0
- package/dist/cjs/icons/IconYunYingGuanLi.js.map +1 -0
- package/dist/cjs/icons/IconZengJia.js +17 -0
- package/dist/cjs/icons/IconZengJia.js.map +1 -0
- package/dist/cjs/icons/IconZhanKai.js +17 -0
- package/dist/cjs/icons/IconZhanKai.js.map +1 -0
- package/dist/cjs/icons/IconZhanKai1.js +17 -0
- package/dist/cjs/icons/IconZhanKai1.js.map +1 -0
- package/dist/cjs/icons/IconZhengQue.js +17 -0
- package/dist/cjs/icons/IconZhengQue.js.map +1 -0
- package/dist/cjs/icons/IconZhiShiKu.js +17 -0
- package/dist/cjs/icons/IconZhiShiKu.js.map +1 -0
- package/dist/cjs/icons/IconZhiShiKu1.js +17 -0
- package/dist/cjs/icons/IconZhiShiKu1.js.map +1 -0
- package/dist/cjs/index.js +95 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/manifest-generator.js +281 -0
- package/dist/cjs/manifest-generator.js.map +1 -0
- package/dist/cjs/multi-format-output.js +233 -0
- package/dist/cjs/multi-format-output.js.map +1 -0
- package/dist/cjs/svg-exporter.js +283 -0
- package/dist/cjs/svg-exporter.js.map +1 -0
- package/dist/cjs/svg-transformer.js +327 -0
- package/dist/cjs/svg-transformer.js.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/version-manager.js +175 -0
- package/dist/cjs/version-manager.js.map +1 -0
- package/dist/esm/changelog-generator.js +288 -0
- package/dist/esm/changelog-generator.js.map +1 -0
- package/dist/esm/component-generator.js +426 -0
- package/dist/esm/component-generator.js.map +1 -0
- package/dist/esm/figma-client.js +254 -0
- package/dist/esm/figma-client.js.map +1 -0
- package/dist/esm/icon-filter.js +268 -0
- package/dist/esm/icon-filter.js.map +1 -0
- package/dist/esm/icon-search.js +39 -0
- package/dist/esm/icon-search.js.map +1 -0
- package/dist/esm/icon-validator.js +358 -0
- package/dist/esm/icon-validator.js.map +1 -0
- package/dist/esm/icons/IconArrowRight.js +14 -0
- package/dist/esm/icons/IconArrowRight.js.map +1 -0
- package/dist/esm/icons/IconBack.js +14 -0
- package/dist/esm/icons/IconBack.js.map +1 -0
- package/dist/esm/icons/IconBack1.js +14 -0
- package/dist/esm/icons/IconBack1.js.map +1 -0
- package/dist/esm/icons/IconBangZhuShuoMing.js +14 -0
- package/dist/esm/icons/IconBangZhuShuoMing.js.map +1 -0
- package/dist/esm/icons/IconBaoGaoZhuShou.js +17 -0
- package/dist/esm/icons/IconBaoGaoZhuShou.js.map +1 -0
- package/dist/esm/icons/IconCheck.js +14 -0
- package/dist/esm/icons/IconCheck.js.map +1 -0
- package/dist/esm/icons/IconCheck1.js +14 -0
- package/dist/esm/icons/IconCheck1.js.map +1 -0
- package/dist/esm/icons/IconChengYuanGuanLi.js +17 -0
- package/dist/esm/icons/IconChengYuanGuanLi.js.map +1 -0
- package/dist/esm/icons/IconChongXinFaSong.js +14 -0
- package/dist/esm/icons/IconChongXinFaSong.js.map +1 -0
- package/dist/esm/icons/IconCloseCircle.js +14 -0
- package/dist/esm/icons/IconCloseCircle.js.map +1 -0
- package/dist/esm/icons/IconCuoWu.js +14 -0
- package/dist/esm/icons/IconCuoWu.js.map +1 -0
- package/dist/esm/icons/IconDingDing.js +14 -0
- package/dist/esm/icons/IconDingDing.js.map +1 -0
- package/dist/esm/icons/IconEdit03.js +14 -0
- package/dist/esm/icons/IconEdit03.js.map +1 -0
- package/dist/esm/icons/IconFanHui.js +14 -0
- package/dist/esm/icons/IconFanHui.js.map +1 -0
- package/dist/esm/icons/IconFangDa.js +14 -0
- package/dist/esm/icons/IconFangDa.js.map +1 -0
- package/dist/esm/icons/IconFrame.js +14 -0
- package/dist/esm/icons/IconFrame.js.map +1 -0
- package/dist/esm/icons/IconFrame1261156242.js +14 -0
- package/dist/esm/icons/IconFrame1261156242.js.map +1 -0
- package/dist/esm/icons/IconGuanBi.js +14 -0
- package/dist/esm/icons/IconGuanBi.js.map +1 -0
- package/dist/esm/icons/IconGuanBi1.js +14 -0
- package/dist/esm/icons/IconGuanBi1.js.map +1 -0
- package/dist/esm/icons/IconGuanBiXiao.js +14 -0
- package/dist/esm/icons/IconGuanBiXiao.js.map +1 -0
- package/dist/esm/icons/IconGuanBiXiao1.js +14 -0
- package/dist/esm/icons/IconGuanBiXiao1.js.map +1 -0
- package/dist/esm/icons/IconLianJie.js +14 -0
- package/dist/esm/icons/IconLianJie.js.map +1 -0
- package/dist/esm/icons/IconLianJie1.js +14 -0
- package/dist/esm/icons/IconLianJie1.js.map +1 -0
- package/dist/esm/icons/IconQiWeiJiQiRen.js +14 -0
- package/dist/esm/icons/IconQiWeiJiQiRen.js.map +1 -0
- package/dist/esm/icons/IconQiYeBan.js +17 -0
- package/dist/esm/icons/IconQiYeBan.js.map +1 -0
- package/dist/esm/icons/IconRss.js +14 -0
- package/dist/esm/icons/IconRss.js.map +1 -0
- package/dist/esm/icons/IconSearch.js +14 -0
- package/dist/esm/icons/IconSearch.js.map +1 -0
- package/dist/esm/icons/IconSearch1.js +14 -0
- package/dist/esm/icons/IconSearch1.js.map +1 -0
- package/dist/esm/icons/IconSheZhi.js +14 -0
- package/dist/esm/icons/IconSheZhi.js.map +1 -0
- package/dist/esm/icons/IconShengCheng.js +14 -0
- package/dist/esm/icons/IconShengCheng.js.map +1 -0
- package/dist/esm/icons/IconShiBai.js +14 -0
- package/dist/esm/icons/IconShiBai.js.map +1 -0
- package/dist/esm/icons/IconShouQi.js +14 -0
- package/dist/esm/icons/IconShouQi.js.map +1 -0
- package/dist/esm/icons/IconSouSuoZhuShou.js +17 -0
- package/dist/esm/icons/IconSouSuoZhuShou.js.map +1 -0
- package/dist/esm/icons/IconSuoXiao.js +14 -0
- package/dist/esm/icons/IconSuoXiao.js.map +1 -0
- package/dist/esm/icons/IconTianJia.js +14 -0
- package/dist/esm/icons/IconTianJia.js.map +1 -0
- package/dist/esm/icons/IconTongZhi.js +14 -0
- package/dist/esm/icons/IconTongZhi.js.map +1 -0
- package/dist/esm/icons/IconTongZhi1.js +14 -0
- package/dist/esm/icons/IconTongZhi1.js.map +1 -0
- package/dist/esm/icons/IconTuiChu.js +14 -0
- package/dist/esm/icons/IconTuiChu.js.map +1 -0
- package/dist/esm/icons/IconWangLuoJianSuo.js +14 -0
- package/dist/esm/icons/IconWangLuoJianSuo.js.map +1 -0
- package/dist/esm/icons/IconWangYeXiaZai.js +14 -0
- package/dist/esm/icons/IconWangYeXiaZai.js.map +1 -0
- package/dist/esm/icons/IconWeiBiaoTi1HuaBan11.js +14 -0
- package/dist/esm/icons/IconWeiBiaoTi1HuaBan11.js.map +1 -0
- package/dist/esm/icons/IconWenDaZhuShou.js +17 -0
- package/dist/esm/icons/IconWenDaZhuShou.js.map +1 -0
- package/dist/esm/icons/IconWenDang.js +14 -0
- package/dist/esm/icons/IconWenDang.js.map +1 -0
- package/dist/esm/icons/IconWenDang1.js +14 -0
- package/dist/esm/icons/IconWenDang1.js.map +1 -0
- package/dist/esm/icons/IconWenJian.js +14 -0
- package/dist/esm/icons/IconWenJian.js.map +1 -0
- package/dist/esm/icons/IconXiTongPeiZhi.js +17 -0
- package/dist/esm/icons/IconXiTongPeiZhi.js.map +1 -0
- package/dist/esm/icons/IconXiaZai.js +14 -0
- package/dist/esm/icons/IconXiaZai.js.map +1 -0
- package/dist/esm/icons/IconXiaZaiZhuShou.js +17 -0
- package/dist/esm/icons/IconXiaZaiZhuShou.js.map +1 -0
- package/dist/esm/icons/IconXiaoXi.js +14 -0
- package/dist/esm/icons/IconXiaoXi.js.map +1 -0
- package/dist/esm/icons/IconXinXiGuanLi.js +17 -0
- package/dist/esm/icons/IconXinXiGuanLi.js.map +1 -0
- package/dist/esm/icons/IconXinZeng.js +14 -0
- package/dist/esm/icons/IconXinZeng.js.map +1 -0
- package/dist/esm/icons/IconYanZhengMa.js +14 -0
- package/dist/esm/icons/IconYanZhengMa.js.map +1 -0
- package/dist/esm/icons/IconYunYingGuanLi.js +17 -0
- package/dist/esm/icons/IconYunYingGuanLi.js.map +1 -0
- package/dist/esm/icons/IconZengJia.js +14 -0
- package/dist/esm/icons/IconZengJia.js.map +1 -0
- package/dist/esm/icons/IconZhanKai.js +14 -0
- package/dist/esm/icons/IconZhanKai.js.map +1 -0
- package/dist/esm/icons/IconZhanKai1.js +14 -0
- package/dist/esm/icons/IconZhanKai1.js.map +1 -0
- package/dist/esm/icons/IconZhengQue.js +14 -0
- package/dist/esm/icons/IconZhengQue.js.map +1 -0
- package/dist/esm/icons/IconZhiShiKu.js +14 -0
- package/dist/esm/icons/IconZhiShiKu.js.map +1 -0
- package/dist/esm/icons/IconZhiShiKu1.js +14 -0
- package/dist/esm/icons/IconZhiShiKu1.js.map +1 -0
- package/dist/esm/index.js +72 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/manifest-generator.js +267 -0
- package/dist/esm/manifest-generator.js.map +1 -0
- package/dist/esm/multi-format-output.js +221 -0
- package/dist/esm/multi-format-output.js.map +1 -0
- package/dist/esm/svg-exporter.js +244 -0
- package/dist/esm/svg-exporter.js.map +1 -0
- package/dist/esm/svg-transformer.js +314 -0
- package/dist/esm/svg-transformer.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/version-manager.js +167 -0
- package/dist/esm/version-manager.js.map +1 -0
- package/dist/types/changelog-generator.d.ts +112 -0
- package/dist/types/changelog-generator.d.ts.map +1 -0
- package/dist/types/component-generator.d.ts +88 -0
- package/dist/types/component-generator.d.ts.map +1 -0
- package/dist/types/figma-client.d.ts +107 -0
- package/dist/types/figma-client.d.ts.map +1 -0
- package/dist/types/icon-filter.d.ts +126 -0
- package/dist/types/icon-filter.d.ts.map +1 -0
- package/dist/types/icon-search.d.ts +31 -0
- package/dist/types/icon-search.d.ts.map +1 -0
- package/dist/types/icon-validator.d.ts +110 -0
- package/dist/types/icon-validator.d.ts.map +1 -0
- package/dist/types/icons/IconArrowRight.d.ts +17 -0
- package/dist/types/icons/IconArrowRight.d.ts.map +1 -0
- package/dist/types/icons/IconBack.d.ts +17 -0
- package/dist/types/icons/IconBack.d.ts.map +1 -0
- package/dist/types/icons/IconBack1.d.ts +17 -0
- package/dist/types/icons/IconBack1.d.ts.map +1 -0
- package/dist/types/icons/IconBangZhuShuoMing.d.ts +17 -0
- package/dist/types/icons/IconBangZhuShuoMing.d.ts.map +1 -0
- package/dist/types/icons/IconBaoGaoZhuShou.d.ts +17 -0
- package/dist/types/icons/IconBaoGaoZhuShou.d.ts.map +1 -0
- package/dist/types/icons/IconCheck.d.ts +17 -0
- package/dist/types/icons/IconCheck.d.ts.map +1 -0
- package/dist/types/icons/IconCheck1.d.ts +17 -0
- package/dist/types/icons/IconCheck1.d.ts.map +1 -0
- package/dist/types/icons/IconChengYuanGuanLi.d.ts +17 -0
- package/dist/types/icons/IconChengYuanGuanLi.d.ts.map +1 -0
- package/dist/types/icons/IconChongXinFaSong.d.ts +17 -0
- package/dist/types/icons/IconChongXinFaSong.d.ts.map +1 -0
- package/dist/types/icons/IconCloseCircle.d.ts +17 -0
- package/dist/types/icons/IconCloseCircle.d.ts.map +1 -0
- package/dist/types/icons/IconCuoWu.d.ts +17 -0
- package/dist/types/icons/IconCuoWu.d.ts.map +1 -0
- package/dist/types/icons/IconDingDing.d.ts +17 -0
- package/dist/types/icons/IconDingDing.d.ts.map +1 -0
- package/dist/types/icons/IconEdit03.d.ts +17 -0
- package/dist/types/icons/IconEdit03.d.ts.map +1 -0
- package/dist/types/icons/IconFanHui.d.ts +17 -0
- package/dist/types/icons/IconFanHui.d.ts.map +1 -0
- package/dist/types/icons/IconFangDa.d.ts +17 -0
- package/dist/types/icons/IconFangDa.d.ts.map +1 -0
- package/dist/types/icons/IconFrame.d.ts +17 -0
- package/dist/types/icons/IconFrame.d.ts.map +1 -0
- package/dist/types/icons/IconFrame1261156242.d.ts +17 -0
- package/dist/types/icons/IconFrame1261156242.d.ts.map +1 -0
- package/dist/types/icons/IconGuanBi.d.ts +17 -0
- package/dist/types/icons/IconGuanBi.d.ts.map +1 -0
- package/dist/types/icons/IconGuanBi1.d.ts +17 -0
- package/dist/types/icons/IconGuanBi1.d.ts.map +1 -0
- package/dist/types/icons/IconGuanBiXiao.d.ts +17 -0
- package/dist/types/icons/IconGuanBiXiao.d.ts.map +1 -0
- package/dist/types/icons/IconGuanBiXiao1.d.ts +17 -0
- package/dist/types/icons/IconGuanBiXiao1.d.ts.map +1 -0
- package/dist/types/icons/IconLianJie.d.ts +17 -0
- package/dist/types/icons/IconLianJie.d.ts.map +1 -0
- package/dist/types/icons/IconLianJie1.d.ts +17 -0
- package/dist/types/icons/IconLianJie1.d.ts.map +1 -0
- package/dist/types/icons/IconQiWeiJiQiRen.d.ts +17 -0
- package/dist/types/icons/IconQiWeiJiQiRen.d.ts.map +1 -0
- package/dist/types/icons/IconQiYeBan.d.ts +17 -0
- package/dist/types/icons/IconQiYeBan.d.ts.map +1 -0
- package/dist/types/icons/IconRss.d.ts +17 -0
- package/dist/types/icons/IconRss.d.ts.map +1 -0
- package/dist/types/icons/IconSearch.d.ts +17 -0
- package/dist/types/icons/IconSearch.d.ts.map +1 -0
- package/dist/types/icons/IconSearch1.d.ts +17 -0
- package/dist/types/icons/IconSearch1.d.ts.map +1 -0
- package/dist/types/icons/IconSheZhi.d.ts +17 -0
- package/dist/types/icons/IconSheZhi.d.ts.map +1 -0
- package/dist/types/icons/IconShengCheng.d.ts +17 -0
- package/dist/types/icons/IconShengCheng.d.ts.map +1 -0
- package/dist/types/icons/IconShiBai.d.ts +17 -0
- package/dist/types/icons/IconShiBai.d.ts.map +1 -0
- package/dist/types/icons/IconShouQi.d.ts +17 -0
- package/dist/types/icons/IconShouQi.d.ts.map +1 -0
- package/dist/types/icons/IconSouSuoZhuShou.d.ts +17 -0
- package/dist/types/icons/IconSouSuoZhuShou.d.ts.map +1 -0
- package/dist/types/icons/IconSuoXiao.d.ts +17 -0
- package/dist/types/icons/IconSuoXiao.d.ts.map +1 -0
- package/dist/types/icons/IconTianJia.d.ts +17 -0
- package/dist/types/icons/IconTianJia.d.ts.map +1 -0
- package/dist/types/icons/IconTongZhi.d.ts +17 -0
- package/dist/types/icons/IconTongZhi.d.ts.map +1 -0
- package/dist/types/icons/IconTongZhi1.d.ts +17 -0
- package/dist/types/icons/IconTongZhi1.d.ts.map +1 -0
- package/dist/types/icons/IconTuiChu.d.ts +17 -0
- package/dist/types/icons/IconTuiChu.d.ts.map +1 -0
- package/dist/types/icons/IconWangLuoJianSuo.d.ts +17 -0
- package/dist/types/icons/IconWangLuoJianSuo.d.ts.map +1 -0
- package/dist/types/icons/IconWangYeXiaZai.d.ts +17 -0
- package/dist/types/icons/IconWangYeXiaZai.d.ts.map +1 -0
- package/dist/types/icons/IconWeiBiaoTi1HuaBan11.d.ts +17 -0
- package/dist/types/icons/IconWeiBiaoTi1HuaBan11.d.ts.map +1 -0
- package/dist/types/icons/IconWenDaZhuShou.d.ts +17 -0
- package/dist/types/icons/IconWenDaZhuShou.d.ts.map +1 -0
- package/dist/types/icons/IconWenDang.d.ts +17 -0
- package/dist/types/icons/IconWenDang.d.ts.map +1 -0
- package/dist/types/icons/IconWenDang1.d.ts +17 -0
- package/dist/types/icons/IconWenDang1.d.ts.map +1 -0
- package/dist/types/icons/IconWenJian.d.ts +17 -0
- package/dist/types/icons/IconWenJian.d.ts.map +1 -0
- package/dist/types/icons/IconXiTongPeiZhi.d.ts +17 -0
- package/dist/types/icons/IconXiTongPeiZhi.d.ts.map +1 -0
- package/dist/types/icons/IconXiaZai.d.ts +17 -0
- package/dist/types/icons/IconXiaZai.d.ts.map +1 -0
- package/dist/types/icons/IconXiaZaiZhuShou.d.ts +17 -0
- package/dist/types/icons/IconXiaZaiZhuShou.d.ts.map +1 -0
- package/dist/types/icons/IconXiaoXi.d.ts +17 -0
- package/dist/types/icons/IconXiaoXi.d.ts.map +1 -0
- package/dist/types/icons/IconXinXiGuanLi.d.ts +17 -0
- package/dist/types/icons/IconXinXiGuanLi.d.ts.map +1 -0
- package/dist/types/icons/IconXinZeng.d.ts +17 -0
- package/dist/types/icons/IconXinZeng.d.ts.map +1 -0
- package/dist/types/icons/IconYanZhengMa.d.ts +17 -0
- package/dist/types/icons/IconYanZhengMa.d.ts.map +1 -0
- package/dist/types/icons/IconYunYingGuanLi.d.ts +17 -0
- package/dist/types/icons/IconYunYingGuanLi.d.ts.map +1 -0
- package/dist/types/icons/IconZengJia.d.ts +17 -0
- package/dist/types/icons/IconZengJia.d.ts.map +1 -0
- package/dist/types/icons/IconZhanKai.d.ts +17 -0
- package/dist/types/icons/IconZhanKai.d.ts.map +1 -0
- package/dist/types/icons/IconZhanKai1.d.ts +17 -0
- package/dist/types/icons/IconZhanKai1.d.ts.map +1 -0
- package/dist/types/icons/IconZhengQue.d.ts +17 -0
- package/dist/types/icons/IconZhengQue.d.ts.map +1 -0
- package/dist/types/icons/IconZhiShiKu.d.ts +17 -0
- package/dist/types/icons/IconZhiShiKu.d.ts.map +1 -0
- package/dist/types/icons/IconZhiShiKu1.d.ts +17 -0
- package/dist/types/icons/IconZhiShiKu1.d.ts.map +1 -0
- package/dist/types/index.d.ts +56 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/manifest-generator.d.ts +113 -0
- package/dist/types/manifest-generator.d.ts.map +1 -0
- package/dist/types/multi-format-output.d.ts +151 -0
- package/dist/types/multi-format-output.d.ts.map +1 -0
- package/dist/types/svg-exporter.d.ts +103 -0
- package/dist/types/svg-exporter.d.ts.map +1 -0
- package/dist/types/svg-transformer.d.ts +103 -0
- package/dist/types/svg-transformer.d.ts.map +1 -0
- package/dist/types/types.d.ts +346 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/version-manager.d.ts +82 -0
- package/dist/types/version-manager.d.ts.map +1 -0
- package/icons.json +227 -0
- package/package.json +66 -0
- package/svg/back.svg +1 -0
- package/svg/back1.svg +1 -0
- package/svg/check.svg +1 -0
- package/svg/check1.svg +1 -0
- package/svg/search.svg +1 -0
- package/svg/search1.svg +1 -0
- package/svg//345/205/263/351/227/255-/345/260/217.svg +1 -0
- package/svg//345/205/263/351/227/255-/345/260/2171.svg +1 -0
- package/svg//345/205/263/351/227/255.svg +1 -0
- package/svg//345/205/263/351/227/2551.svg +1 -0
- package/svg//345/261/225/345/274/200.svg +1 -0
- package/svg//345/261/225/345/274/2001.svg +1 -0
- package/svg//346/226/207/346/241/243.svg +1 -0
- package/svg//346/226/207/346/241/2431.svg +1 -0
- package/svg//347/237/245/350/257/206/345/272/223.svg +1 -0
- package/svg//347/237/245/350/257/206/345/272/2231.svg +1 -0
- package/svg//351/200/232/347/237/245.svg +1 -0
- package/svg//351/200/232/347/237/2451.svg +1 -0
- package/svg//351/223/276/346/216/245.svg +1 -0
- package/svg//351/223/276/346/216/2451.svg +1 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Multi-Format Output Module
|
|
4
|
+
*
|
|
5
|
+
* Generates multiple output formats from icon metadata:
|
|
6
|
+
* - SVG Sprite file with symbol elements
|
|
7
|
+
* - JSON metadata file
|
|
8
|
+
*
|
|
9
|
+
* Requirements: 11.2, 11.3, 11.5
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.toSymbolId = toSymbolId;
|
|
13
|
+
exports.createSpriteSymbol = createSpriteSymbol;
|
|
14
|
+
exports.generateSprite = generateSprite;
|
|
15
|
+
exports.generateSpriteFromManifest = generateSpriteFromManifest;
|
|
16
|
+
exports.createIconJsonEntry = createIconJsonEntry;
|
|
17
|
+
exports.generateJsonMetadata = generateJsonMetadata;
|
|
18
|
+
exports.generateJsonMetadataFromManifest = generateJsonMetadataFromManifest;
|
|
19
|
+
exports.serializeJsonMetadata = serializeJsonMetadata;
|
|
20
|
+
exports.validateSpriteCompleteness = validateSpriteCompleteness;
|
|
21
|
+
exports.validateJsonMetadataCompleteness = validateJsonMetadataCompleteness;
|
|
22
|
+
const svg_transformer_1 = require("./svg-transformer");
|
|
23
|
+
/**
|
|
24
|
+
* Default sprite generator options
|
|
25
|
+
*/
|
|
26
|
+
const DEFAULT_SPRITE_OPTIONS = {
|
|
27
|
+
defaultViewBox: '0 0 24 24',
|
|
28
|
+
includeComments: false,
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Converts an icon name to a valid symbol ID
|
|
32
|
+
* Uses lowercase kebab-case format
|
|
33
|
+
*
|
|
34
|
+
* @param name - Icon name (can be PascalCase, camelCase, etc.)
|
|
35
|
+
* @returns Lowercase kebab-case ID
|
|
36
|
+
*/
|
|
37
|
+
function toSymbolId(name) {
|
|
38
|
+
if (!name || name.trim().length === 0) {
|
|
39
|
+
return 'icon';
|
|
40
|
+
}
|
|
41
|
+
// Remove "Icon" prefix if present
|
|
42
|
+
let cleanName = name;
|
|
43
|
+
if (cleanName.startsWith('Icon') && cleanName.length > 4) {
|
|
44
|
+
cleanName = cleanName.slice(4);
|
|
45
|
+
}
|
|
46
|
+
// Convert PascalCase/camelCase to kebab-case
|
|
47
|
+
return cleanName
|
|
48
|
+
.replace(/([a-z])([A-Z])/g, '$1-$2')
|
|
49
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')
|
|
50
|
+
.replace(/[\s_]+/g, '-')
|
|
51
|
+
.toLowerCase();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Creates a sprite symbol from icon metadata
|
|
55
|
+
*
|
|
56
|
+
* @param icon - Icon metadata with SVG content
|
|
57
|
+
* @param options - Sprite generator options
|
|
58
|
+
* @returns SpriteSymbol object or null if no SVG content
|
|
59
|
+
*/
|
|
60
|
+
function createSpriteSymbol(icon, options = DEFAULT_SPRITE_OPTIONS) {
|
|
61
|
+
if (!icon.svgContent) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const id = toSymbolId(icon.normalizedName);
|
|
65
|
+
const viewBox = (0, svg_transformer_1.extractViewBox)(icon.svgContent) || options.defaultViewBox || '0 0 24 24';
|
|
66
|
+
const content = (0, svg_transformer_1.extractSvgInnerContent)(icon.svgContent);
|
|
67
|
+
return {
|
|
68
|
+
id,
|
|
69
|
+
viewBox,
|
|
70
|
+
content,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Generates an SVG sprite from a list of icons
|
|
75
|
+
*
|
|
76
|
+
* @param icons - Array of icon metadata with SVG content
|
|
77
|
+
* @param options - Sprite generator options
|
|
78
|
+
* @returns SvgSprite object with full sprite content and symbols
|
|
79
|
+
*
|
|
80
|
+
* Requirements: 11.2
|
|
81
|
+
*/
|
|
82
|
+
function generateSprite(icons, options = {}) {
|
|
83
|
+
const opts = { ...DEFAULT_SPRITE_OPTIONS, ...options };
|
|
84
|
+
// Create symbols from icons that have SVG content
|
|
85
|
+
const symbols = [];
|
|
86
|
+
for (const icon of icons) {
|
|
87
|
+
const symbol = createSpriteSymbol(icon, opts);
|
|
88
|
+
if (symbol) {
|
|
89
|
+
symbols.push(symbol);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Sort symbols alphabetically by ID for consistent output
|
|
93
|
+
symbols.sort((a, b) => a.id.localeCompare(b.id));
|
|
94
|
+
// Generate sprite content
|
|
95
|
+
const symbolsContent = symbols
|
|
96
|
+
.map((s) => ` <symbol id="${s.id}" viewBox="${s.viewBox}">
|
|
97
|
+
${s.content}
|
|
98
|
+
</symbol>`)
|
|
99
|
+
.join('\n');
|
|
100
|
+
const content = `<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
|
101
|
+
${symbolsContent}
|
|
102
|
+
</svg>`;
|
|
103
|
+
return {
|
|
104
|
+
content,
|
|
105
|
+
symbols,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Generates an SVG sprite from an IconManifest
|
|
110
|
+
*
|
|
111
|
+
* @param manifest - Icon manifest with icons
|
|
112
|
+
* @param options - Sprite generator options
|
|
113
|
+
* @returns SvgSprite object
|
|
114
|
+
*
|
|
115
|
+
* Requirements: 11.2
|
|
116
|
+
*/
|
|
117
|
+
function generateSpriteFromManifest(manifest, options = {}) {
|
|
118
|
+
return generateSprite(manifest.icons, options);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Default JSON metadata options
|
|
122
|
+
*/
|
|
123
|
+
const DEFAULT_JSON_OPTIONS = {
|
|
124
|
+
svgBasePath: 'svg',
|
|
125
|
+
componentBasePath: 'src/icons',
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Creates a JSON entry for an icon
|
|
129
|
+
*
|
|
130
|
+
* @param icon - Icon metadata
|
|
131
|
+
* @param options - JSON metadata options
|
|
132
|
+
* @returns IconJsonEntry object
|
|
133
|
+
*/
|
|
134
|
+
function createIconJsonEntry(icon, options = DEFAULT_JSON_OPTIONS) {
|
|
135
|
+
// Use originalName for SVG file (preserves Chinese characters)
|
|
136
|
+
const svgFileName = icon.originalName + '.svg';
|
|
137
|
+
const componentFileName = icon.normalizedName + '.tsx';
|
|
138
|
+
return {
|
|
139
|
+
name: icon.normalizedName,
|
|
140
|
+
originalName: icon.originalName,
|
|
141
|
+
svgPath: `${options.svgBasePath}/${svgFileName}`,
|
|
142
|
+
componentPath: `${options.componentBasePath}/${componentFileName}`,
|
|
143
|
+
size: {
|
|
144
|
+
width: icon.width,
|
|
145
|
+
height: icon.height,
|
|
146
|
+
},
|
|
147
|
+
createdAt: icon.createdAt,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Generates JSON metadata from a list of icons
|
|
152
|
+
*
|
|
153
|
+
* @param icons - Array of icon metadata
|
|
154
|
+
* @param version - Version string
|
|
155
|
+
* @param options - JSON metadata options
|
|
156
|
+
* @returns IconsJsonMetadata object
|
|
157
|
+
*
|
|
158
|
+
* Requirements: 11.3, 11.5
|
|
159
|
+
*/
|
|
160
|
+
function generateJsonMetadata(icons, version, options = {}) {
|
|
161
|
+
const opts = { ...DEFAULT_JSON_OPTIONS, ...options };
|
|
162
|
+
const iconEntries = icons.map((icon) => createIconJsonEntry(icon, opts));
|
|
163
|
+
// Sort entries alphabetically by name for consistent output
|
|
164
|
+
// Removed internal sorting to respect the order passed from generate-outputs.ts (which sorts by date)
|
|
165
|
+
// iconEntries.sort((a, b) => a.name.localeCompare(b.name))
|
|
166
|
+
return {
|
|
167
|
+
version,
|
|
168
|
+
generatedAt: new Date().toISOString(),
|
|
169
|
+
totalCount: iconEntries.length,
|
|
170
|
+
icons: iconEntries,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Generates JSON metadata from an IconManifest
|
|
175
|
+
*
|
|
176
|
+
* @param manifest - Icon manifest
|
|
177
|
+
* @param options - JSON metadata options
|
|
178
|
+
* @returns IconsJsonMetadata object
|
|
179
|
+
*
|
|
180
|
+
* Requirements: 11.3, 11.5
|
|
181
|
+
*/
|
|
182
|
+
function generateJsonMetadataFromManifest(manifest, options = {}) {
|
|
183
|
+
return generateJsonMetadata(manifest.icons, manifest.version, options);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Serializes JSON metadata to a formatted string
|
|
187
|
+
*
|
|
188
|
+
* @param metadata - JSON metadata object
|
|
189
|
+
* @param pretty - Whether to format with indentation
|
|
190
|
+
* @returns JSON string
|
|
191
|
+
*/
|
|
192
|
+
function serializeJsonMetadata(metadata, pretty = true) {
|
|
193
|
+
return JSON.stringify(metadata, null, pretty ? 2 : undefined);
|
|
194
|
+
}
|
|
195
|
+
// ============================================
|
|
196
|
+
// Validation Helpers
|
|
197
|
+
// ============================================
|
|
198
|
+
/**
|
|
199
|
+
* Validates that a sprite has all expected symbols
|
|
200
|
+
*
|
|
201
|
+
* @param sprite - Generated sprite
|
|
202
|
+
* @param expectedIconNames - Expected icon names
|
|
203
|
+
* @returns Array of missing icon names
|
|
204
|
+
*/
|
|
205
|
+
function validateSpriteCompleteness(sprite, expectedIconNames) {
|
|
206
|
+
const symbolIds = new Set(sprite.symbols.map((s) => s.id));
|
|
207
|
+
const missing = [];
|
|
208
|
+
for (const name of expectedIconNames) {
|
|
209
|
+
const expectedId = toSymbolId(name);
|
|
210
|
+
if (!symbolIds.has(expectedId)) {
|
|
211
|
+
missing.push(name);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return missing;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Validates that JSON metadata has all expected icons
|
|
218
|
+
*
|
|
219
|
+
* @param metadata - Generated JSON metadata
|
|
220
|
+
* @param expectedIconNames - Expected icon names
|
|
221
|
+
* @returns Array of missing icon names
|
|
222
|
+
*/
|
|
223
|
+
function validateJsonMetadataCompleteness(metadata, expectedIconNames) {
|
|
224
|
+
const metadataNames = new Set(metadata.icons.map((i) => i.name));
|
|
225
|
+
const missing = [];
|
|
226
|
+
for (const name of expectedIconNames) {
|
|
227
|
+
if (!metadataNames.has(name)) {
|
|
228
|
+
missing.push(name);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return missing;
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=multi-format-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-format-output.js","sourceRoot":"","sources":["../../src/multi-format-output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SVG Batch Export Module
|
|
4
|
+
*
|
|
5
|
+
* Provides functions to batch export SVG files from Figma and save them to disk.
|
|
6
|
+
* Handles concurrent downloads with rate limiting and error handling.
|
|
7
|
+
*
|
|
8
|
+
* Requirements: 2.3, 2.4
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.sanitizeFilename = sanitizeFilename;
|
|
45
|
+
exports.batchExportSvg = batchExportSvg;
|
|
46
|
+
exports.exportSingleSvg = exportSingleSvg;
|
|
47
|
+
exports.readSvgDirectory = readSvgDirectory;
|
|
48
|
+
const fs = __importStar(require("fs/promises"));
|
|
49
|
+
const path = __importStar(require("path"));
|
|
50
|
+
/**
|
|
51
|
+
* Default export options
|
|
52
|
+
* 降低并发数以减少限速风险
|
|
53
|
+
*/
|
|
54
|
+
const DEFAULT_EXPORT_OPTIONS = {
|
|
55
|
+
outputDir: './svg',
|
|
56
|
+
concurrency: 3, // 降低并发数,减少限速风险
|
|
57
|
+
simplifyStroke: true,
|
|
58
|
+
includeId: false,
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Ensures the output directory exists
|
|
62
|
+
*
|
|
63
|
+
* @param dir - Directory path to create
|
|
64
|
+
*/
|
|
65
|
+
async function ensureDirectory(dir) {
|
|
66
|
+
try {
|
|
67
|
+
await fs.mkdir(dir, { recursive: true });
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
// Directory might already exist, which is fine
|
|
71
|
+
if (error.code !== 'EEXIST') {
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Sanitizes a filename to be safe for the filesystem
|
|
78
|
+
*
|
|
79
|
+
* @param name - Original name
|
|
80
|
+
* @returns Sanitized filename
|
|
81
|
+
*/
|
|
82
|
+
function sanitizeFilename(name) {
|
|
83
|
+
return name
|
|
84
|
+
.toLowerCase()
|
|
85
|
+
.replace(/[^a-z0-9-]/g, '-')
|
|
86
|
+
.replace(/-+/g, '-')
|
|
87
|
+
.replace(/^-|-$/g, '');
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Saves SVG content to a file
|
|
91
|
+
*
|
|
92
|
+
* @param content - SVG content
|
|
93
|
+
* @param filePath - Path to save the file
|
|
94
|
+
*/
|
|
95
|
+
async function saveSvgFile(content, filePath) {
|
|
96
|
+
await fs.writeFile(filePath, content, 'utf-8');
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Processes a batch of icons concurrently
|
|
100
|
+
*
|
|
101
|
+
* @param items - Items to process
|
|
102
|
+
* @param processor - Processing function
|
|
103
|
+
* @param concurrency - Maximum concurrent operations
|
|
104
|
+
*/
|
|
105
|
+
async function processBatch(items, processor, concurrency) {
|
|
106
|
+
const results = [];
|
|
107
|
+
const executing = [];
|
|
108
|
+
for (const item of items) {
|
|
109
|
+
const promise = processor(item).then((result) => {
|
|
110
|
+
results.push(result);
|
|
111
|
+
});
|
|
112
|
+
executing.push(promise);
|
|
113
|
+
if (executing.length >= concurrency) {
|
|
114
|
+
await Promise.race(executing);
|
|
115
|
+
// Remove completed promises
|
|
116
|
+
const completed = executing.filter((p) => p.then(() => false).catch(() => false));
|
|
117
|
+
executing.length = 0;
|
|
118
|
+
executing.push(...completed);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
await Promise.all(executing);
|
|
122
|
+
return results;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Exports SVG files for a list of icon components from Figma
|
|
126
|
+
*
|
|
127
|
+
* @param client - Figma API client
|
|
128
|
+
* @param fileKey - Figma file key
|
|
129
|
+
* @param icons - List of icon components to export
|
|
130
|
+
* @param options - Export options
|
|
131
|
+
* @returns Batch export result
|
|
132
|
+
*/
|
|
133
|
+
async function batchExportSvg(client, fileKey, icons, options) {
|
|
134
|
+
const opts = { ...DEFAULT_EXPORT_OPTIONS, ...options };
|
|
135
|
+
const successful = [];
|
|
136
|
+
const failed = [];
|
|
137
|
+
// Ensure output directory exists
|
|
138
|
+
await ensureDirectory(opts.outputDir);
|
|
139
|
+
// Get image URLs from Figma API
|
|
140
|
+
const iconIds = icons.map((icon) => icon.id);
|
|
141
|
+
let imageUrls;
|
|
142
|
+
try {
|
|
143
|
+
imageUrls = await client.getImages(fileKey, iconIds, {
|
|
144
|
+
format: 'svg',
|
|
145
|
+
svgSimplifyStroke: opts.simplifyStroke,
|
|
146
|
+
svgIncludeId: opts.includeId,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
// If we can't get image URLs, all icons fail
|
|
151
|
+
for (const icon of icons) {
|
|
152
|
+
failed.push({
|
|
153
|
+
id: icon.id,
|
|
154
|
+
name: icon.name,
|
|
155
|
+
success: false,
|
|
156
|
+
error: error instanceof Error
|
|
157
|
+
? error.message
|
|
158
|
+
: 'Failed to get image URLs from Figma',
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
successful,
|
|
163
|
+
failed,
|
|
164
|
+
totalProcessed: icons.length,
|
|
165
|
+
outputDir: opts.outputDir,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
// Track progress
|
|
169
|
+
let completed = 0;
|
|
170
|
+
const total = icons.length;
|
|
171
|
+
// Process each icon
|
|
172
|
+
const processIcon = async (icon) => {
|
|
173
|
+
const imageUrl = imageUrls[icon.id];
|
|
174
|
+
if (!imageUrl) {
|
|
175
|
+
return {
|
|
176
|
+
id: icon.id,
|
|
177
|
+
name: icon.name,
|
|
178
|
+
success: false,
|
|
179
|
+
error: 'No image URL returned from Figma API',
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
// Download SVG content
|
|
184
|
+
const svgContent = await client.downloadSvg(imageUrl);
|
|
185
|
+
// Generate filename and save
|
|
186
|
+
const filename = `${sanitizeFilename(icon.name)}.svg`;
|
|
187
|
+
const filePath = path.join(opts.outputDir, filename);
|
|
188
|
+
await saveSvgFile(svgContent, filePath);
|
|
189
|
+
completed++;
|
|
190
|
+
opts.onProgress?.({
|
|
191
|
+
total,
|
|
192
|
+
completed,
|
|
193
|
+
failed: failed.length,
|
|
194
|
+
current: icon.name,
|
|
195
|
+
});
|
|
196
|
+
return {
|
|
197
|
+
id: icon.id,
|
|
198
|
+
name: icon.name,
|
|
199
|
+
success: true,
|
|
200
|
+
filePath,
|
|
201
|
+
svgContent,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
completed++;
|
|
206
|
+
opts.onProgress?.({
|
|
207
|
+
total,
|
|
208
|
+
completed,
|
|
209
|
+
failed: failed.length + 1,
|
|
210
|
+
current: icon.name,
|
|
211
|
+
});
|
|
212
|
+
return {
|
|
213
|
+
id: icon.id,
|
|
214
|
+
name: icon.name,
|
|
215
|
+
success: false,
|
|
216
|
+
error: error instanceof Error
|
|
217
|
+
? error.message
|
|
218
|
+
: 'Unknown error during export',
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
// Process icons with concurrency limit
|
|
223
|
+
const results = await Promise.all(icons.map((icon) => processIcon(icon)));
|
|
224
|
+
// Separate successful and failed results
|
|
225
|
+
for (const result of results) {
|
|
226
|
+
if (result.success) {
|
|
227
|
+
successful.push(result);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
failed.push(result);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return {
|
|
234
|
+
successful,
|
|
235
|
+
failed,
|
|
236
|
+
totalProcessed: icons.length,
|
|
237
|
+
outputDir: opts.outputDir,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Exports a single SVG from Figma
|
|
242
|
+
*
|
|
243
|
+
* @param client - Figma API client
|
|
244
|
+
* @param fileKey - Figma file key
|
|
245
|
+
* @param icon - Icon component to export
|
|
246
|
+
* @param outputDir - Output directory
|
|
247
|
+
* @returns Export result
|
|
248
|
+
*/
|
|
249
|
+
async function exportSingleSvg(client, fileKey, icon, outputDir) {
|
|
250
|
+
const result = await batchExportSvg(client, fileKey, [icon], { outputDir });
|
|
251
|
+
if (result.successful.length > 0) {
|
|
252
|
+
return result.successful[0];
|
|
253
|
+
}
|
|
254
|
+
return result.failed[0];
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Reads all SVG files from a directory
|
|
258
|
+
*
|
|
259
|
+
* @param dir - Directory to read from
|
|
260
|
+
* @returns Map of filename to SVG content
|
|
261
|
+
*/
|
|
262
|
+
async function readSvgDirectory(dir) {
|
|
263
|
+
const svgMap = new Map();
|
|
264
|
+
try {
|
|
265
|
+
const files = await fs.readdir(dir);
|
|
266
|
+
for (const file of files) {
|
|
267
|
+
if (file.endsWith('.svg')) {
|
|
268
|
+
const filePath = path.join(dir, file);
|
|
269
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
270
|
+
const name = file.replace('.svg', '');
|
|
271
|
+
svgMap.set(name, content);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
// Directory might not exist
|
|
277
|
+
if (error.code !== 'ENOENT') {
|
|
278
|
+
throw error;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return svgMap;
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=svg-exporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg-exporter.js","sourceRoot":"","sources":["../../src/svg-exporter.ts"],"names":[],"mappings":"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"}
|