@elgap/edukaai 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +15 -0
- package/.output/public/_nuxt/BHDzAs85.js +1 -0
- package/.output/public/_nuxt/BJzbfdL_.js +1 -0
- package/.output/public/_nuxt/BKGLlKXk.js +6 -0
- package/.output/public/_nuxt/BLuXzJk3.js +1 -0
- package/.output/public/_nuxt/BNOzzLI3.js +1 -0
- package/.output/public/_nuxt/BO5GMwXh.js +1 -0
- package/.output/public/_nuxt/BQRbsFGy.js +1 -0
- package/.output/public/_nuxt/Be4MVdOg.js +1 -0
- package/.output/public/_nuxt/Bu4d3Z1T.js +1 -0
- package/.output/public/_nuxt/BwpBBNv4.js +1 -0
- package/.output/public/_nuxt/C1Og9-6n.js +97 -0
- package/.output/public/_nuxt/C3CjAhtj.js +1 -0
- package/.output/public/_nuxt/C6E3Ty3z.js +1 -0
- package/.output/public/_nuxt/COct4B42.js +1 -0
- package/.output/public/_nuxt/CQ6g2dtj.js +1 -0
- package/.output/public/_nuxt/CURSW5TV.js +246 -0
- package/.output/public/_nuxt/CW57JW4s.js +1 -0
- package/.output/public/_nuxt/Cg2fM61o.js +18 -0
- package/.output/public/_nuxt/CgGOeWta.js +1 -0
- package/.output/public/_nuxt/CoyYbT7u.js +1 -0
- package/.output/public/_nuxt/D11MHbGc.js +133 -0
- package/.output/public/_nuxt/D24dz0S8.js +1 -0
- package/.output/public/_nuxt/D3EFPr8x.js +1 -0
- package/.output/public/_nuxt/Dvt4ZHil.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -0
- package/.output/public/_nuxt/builds/meta/ab87ba0e-6d0d-4466-8b12-00d44f8fb9d3.json +1 -0
- package/.output/public/_nuxt/default.C1K1-g4D.css +1 -0
- package/.output/public/_nuxt/entry.CH8k-Mga.css +1 -0
- package/.output/public/_nuxt/error-404.C-Ezrlz-.css +1 -0
- package/.output/public/_nuxt/error-500.DBWf9FGj.css +1 -0
- package/.output/public/_nuxt/first-training.wFDD65zm.css +1 -0
- package/.output/public/_nuxt/import.cUKYdCrq.css +1 -0
- package/.output/public/_nuxt/index.D-2VHyHA.css +1 -0
- package/.output/public/_nuxt/index.D4J_vHmL.css +1 -0
- package/.output/public/_nuxt/mPJeLIz7.js +1 -0
- package/.output/server/chunks/_/error-500.mjs +19 -0
- package/.output/server/chunks/_/error-500.mjs.map +1 -0
- package/.output/server/chunks/build/ExampleCard-styles.BUOJhEg0.mjs +8 -0
- package/.output/server/chunks/build/ExampleCard-styles.BUOJhEg0.mjs.map +1 -0
- package/.output/server/chunks/build/ExampleForm-Bcpl0CfL.mjs +238 -0
- package/.output/server/chunks/build/ExampleForm-Bcpl0CfL.mjs.map +1 -0
- package/.output/server/chunks/build/ImportPreview-styles.CFmMl5Ok.mjs +8 -0
- package/.output/server/chunks/build/ImportPreview-styles.CFmMl5Ok.mjs.map +1 -0
- package/.output/server/chunks/build/_id_-BUSGcL-H.mjs +113 -0
- package/.output/server/chunks/build/_id_-BUSGcL-H.mjs.map +1 -0
- package/.output/server/chunks/build/axolotl-C-EXGgM8.mjs +112 -0
- package/.output/server/chunks/build/axolotl-C-EXGgM8.mjs.map +1 -0
- package/.output/server/chunks/build/best-practices-DsadorHb.mjs +38 -0
- package/.output/server/chunks/build/best-practices-DsadorHb.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +4 -0
- package/.output/server/chunks/build/client.precomputed.mjs.map +1 -0
- package/.output/server/chunks/build/default-DPkqqHOE.mjs +354 -0
- package/.output/server/chunks/build/default-DPkqqHOE.mjs.map +1 -0
- package/.output/server/chunks/build/default-styles.DsqVVS7k.mjs +8 -0
- package/.output/server/chunks/build/default-styles.DsqVVS7k.mjs.map +1 -0
- package/.output/server/chunks/build/error-404-K4UfZNck.mjs +97 -0
- package/.output/server/chunks/build/error-404-K4UfZNck.mjs.map +1 -0
- package/.output/server/chunks/build/error-404-styles.DuDrf-v0.mjs +8 -0
- package/.output/server/chunks/build/error-404-styles.DuDrf-v0.mjs.map +1 -0
- package/.output/server/chunks/build/error-500-CA7TEPNg.mjs +79 -0
- package/.output/server/chunks/build/error-500-CA7TEPNg.mjs.map +1 -0
- package/.output/server/chunks/build/error-500-styles.8IYEHzz6.mjs +8 -0
- package/.output/server/chunks/build/error-500-styles.8IYEHzz6.mjs.map +1 -0
- package/.output/server/chunks/build/examples-BHK8MDrs.mjs +134 -0
- package/.output/server/chunks/build/examples-BHK8MDrs.mjs.map +1 -0
- package/.output/server/chunks/build/export-BzxFqqfP.mjs +233 -0
- package/.output/server/chunks/build/export-BzxFqqfP.mjs.map +1 -0
- package/.output/server/chunks/build/faq-DKch73dS.mjs +112 -0
- package/.output/server/chunks/build/faq-DKch73dS.mjs.map +1 -0
- package/.output/server/chunks/build/field-guide-qbukT8F0.mjs +38 -0
- package/.output/server/chunks/build/field-guide-qbukT8F0.mjs.map +1 -0
- package/.output/server/chunks/build/first-training-BbEOBcEW.mjs +343 -0
- package/.output/server/chunks/build/first-training-BbEOBcEW.mjs.map +1 -0
- package/.output/server/chunks/build/first-training-styles.BzOa_KRD.mjs +8 -0
- package/.output/server/chunks/build/first-training-styles.BzOa_KRD.mjs.map +1 -0
- package/.output/server/chunks/build/glossary-CxSGCJoH.mjs +397 -0
- package/.output/server/chunks/build/glossary-CxSGCJoH.mjs.map +1 -0
- package/.output/server/chunks/build/huggingface-TSmyUzZU.mjs +128 -0
- package/.output/server/chunks/build/huggingface-TSmyUzZU.mjs.map +1 -0
- package/.output/server/chunks/build/import-C0kYhRv9.mjs +247 -0
- package/.output/server/chunks/build/import-C0kYhRv9.mjs.map +1 -0
- package/.output/server/chunks/build/index-C1ntBEWd.mjs +235 -0
- package/.output/server/chunks/build/index-C1ntBEWd.mjs.map +1 -0
- package/.output/server/chunks/build/index-D3CxihcX.mjs +320 -0
- package/.output/server/chunks/build/index-D3CxihcX.mjs.map +1 -0
- package/.output/server/chunks/build/index-DgKa1cy0.mjs +360 -0
- package/.output/server/chunks/build/index-DgKa1cy0.mjs.map +1 -0
- package/.output/server/chunks/build/index-cG54gaKX.mjs +513 -0
- package/.output/server/chunks/build/index-cG54gaKX.mjs.map +1 -0
- package/.output/server/chunks/build/index-styles.BX2SZiiS.mjs +8 -0
- package/.output/server/chunks/build/index-styles.BX2SZiiS.mjs.map +1 -0
- package/.output/server/chunks/build/llm-training-DIqc0eiM.mjs +91 -0
- package/.output/server/chunks/build/llm-training-DIqc0eiM.mjs.map +1 -0
- package/.output/server/chunks/build/new-b3338aLF.mjs +92 -0
- package/.output/server/chunks/build/new-b3338aLF.mjs.map +1 -0
- package/.output/server/chunks/build/nuxt-link-Ceyd90PQ.mjs +290 -0
- package/.output/server/chunks/build/nuxt-link-Ceyd90PQ.mjs.map +1 -0
- package/.output/server/chunks/build/sample-datasets-CVLWMQUA.mjs +45 -0
- package/.output/server/chunks/build/sample-datasets-CVLWMQUA.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +1979 -0
- package/.output/server/chunks/build/server.mjs.map +1 -0
- package/.output/server/chunks/build/styles.mjs +20 -0
- package/.output/server/chunks/build/styles.mjs.map +1 -0
- package/.output/server/chunks/build/test-router-BYM6Cpst.mjs +105 -0
- package/.output/server/chunks/build/test-router-BYM6Cpst.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +5800 -0
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -0
- package/.output/server/chunks/routes/renderer.mjs +481 -0
- package/.output/server/chunks/routes/renderer.mjs.map +1 -0
- package/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
- package/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
- package/.output/server/index.mjs +12 -0
- package/.output/server/index.mjs.map +1 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/api.js +2 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/app.js +2 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/component.js +2 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/context.js +2 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/hooks.js +2 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/index.js +22 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/util.js +2 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/const.js +5 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/env.js +17 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/index.js +45 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/plugin.js +2 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/proxy.js +111 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/time.js +28 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/package.json +37 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@7.7.9/dist/index.cjs +42 -0
- package/.output/server/node_modules/.nitro/@vue/devtools-api@7.7.9/package.json +32 -0
- package/.output/server/node_modules/.nitro/hookable@5.5.3/dist/index.cjs +299 -0
- package/.output/server/node_modules/.nitro/hookable@5.5.3/package.json +49 -0
- package/.output/server/node_modules/.nitro/hookable@6.0.1/dist/index.mjs +266 -0
- package/.output/server/node_modules/.nitro/hookable@6.0.1/package.json +52 -0
- package/.output/server/node_modules/.nitro/perfect-debounce@1.0.0/dist/index.cjs +59 -0
- package/.output/server/node_modules/.nitro/perfect-debounce@1.0.0/package.json +44 -0
- package/.output/server/node_modules/.nitro/perfect-debounce@2.1.0/dist/index.mjs +89 -0
- package/.output/server/node_modules/.nitro/perfect-debounce@2.1.0/package.json +41 -0
- package/.output/server/node_modules/@babel/parser/lib/index.js +14582 -0
- package/.output/server/node_modules/@babel/parser/package.json +50 -0
- package/.output/server/node_modules/@iconify/utils/lib/colors/index.js +292 -0
- package/.output/server/node_modules/@iconify/utils/lib/colors/keywords.js +702 -0
- package/.output/server/node_modules/@iconify/utils/lib/css/common.js +76 -0
- package/.output/server/node_modules/@iconify/utils/lib/css/format.js +40 -0
- package/.output/server/node_modules/@iconify/utils/lib/css/icon.js +52 -0
- package/.output/server/node_modules/@iconify/utils/lib/css/icons.js +133 -0
- package/.output/server/node_modules/@iconify/utils/lib/customisations/bool.js +20 -0
- package/.output/server/node_modules/@iconify/utils/lib/customisations/defaults.js +15 -0
- package/.output/server/node_modules/@iconify/utils/lib/customisations/flip.js +18 -0
- package/.output/server/node_modules/@iconify/utils/lib/customisations/merge.js +18 -0
- package/.output/server/node_modules/@iconify/utils/lib/customisations/rotate.js +31 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/cleanup.js +80 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/convert.js +102 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/data.js +29 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/format.js +60 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/parse.js +50 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/base.js +204 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/create.js +35 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/numbers.js +134 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/similar.js +167 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/tree.js +81 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/replace/find.js +94 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/replace/replace.js +28 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/test/components.js +78 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/test/missing.js +68 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/test/name.js +47 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/test/parse.js +105 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/test/similar.js +38 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/test/tree.js +94 -0
- package/.output/server/node_modules/@iconify/utils/lib/emoji/test/variations.js +64 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon/defaults.js +26 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon/merge.js +18 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon/name.js +58 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon/square.js +34 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon/transformations.js +13 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/convert-info.js +126 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/expand.js +21 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icon.js +27 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icons.js +38 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/minify.js +93 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/parse.js +48 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/tree.js +24 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/validate-basic.js +44 -0
- package/.output/server/node_modules/@iconify/utils/lib/icon-set/validate.js +125 -0
- package/.output/server/node_modules/@iconify/utils/lib/index.js +53 -0
- package/.output/server/node_modules/@iconify/utils/lib/loader/custom.js +32 -0
- package/.output/server/node_modules/@iconify/utils/lib/loader/loader.js +28 -0
- package/.output/server/node_modules/@iconify/utils/lib/loader/modern.js +42 -0
- package/.output/server/node_modules/@iconify/utils/lib/loader/utils.js +63 -0
- package/.output/server/node_modules/@iconify/utils/lib/misc/objects.js +27 -0
- package/.output/server/node_modules/@iconify/utils/lib/misc/strings.js +27 -0
- package/.output/server/node_modules/@iconify/utils/lib/misc/title.js +10 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/build.js +115 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/defs.js +32 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.js +15 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/html.js +10 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/id.js +42 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/inner-html.js +23 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/parse.js +69 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/pretty.js +55 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/size.js +28 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/trim.js +8 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/url.js +23 -0
- package/.output/server/node_modules/@iconify/utils/lib/svg/viewbox.js +9 -0
- package/.output/server/node_modules/@iconify/utils/package.json +118 -0
- package/.output/server/node_modules/@iconify/vue/dist/iconify.mjs +1893 -0
- package/.output/server/node_modules/@iconify/vue/package.json +64 -0
- package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6763 -0
- package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
- package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
- package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
- package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
- package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
- package/.output/server/node_modules/@vue/devtools-kit/dist/index.cjs +6850 -0
- package/.output/server/node_modules/@vue/devtools-kit/package.json +44 -0
- package/.output/server/node_modules/@vue/devtools-shared/dist/index.cjs +378 -0
- package/.output/server/node_modules/@vue/devtools-shared/package.json +34 -0
- package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1870 -0
- package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
- package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6810 -0
- package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
- package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1750 -0
- package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
- package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +883 -0
- package/.output/server/node_modules/@vue/server-renderer/package.json +55 -0
- package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +604 -0
- package/.output/server/node_modules/@vue/shared/package.json +47 -0
- package/.output/server/node_modules/birpc/dist/index.cjs +296 -0
- package/.output/server/node_modules/birpc/package.json +57 -0
- package/.output/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
- package/.output/server/node_modules/consola/dist/core.mjs +512 -0
- package/.output/server/node_modules/consola/dist/index.mjs +651 -0
- package/.output/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
- package/.output/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
- package/.output/server/node_modules/consola/package.json +136 -0
- package/.output/server/node_modules/devalue/index.js +4 -0
- package/.output/server/node_modules/devalue/package.json +37 -0
- package/.output/server/node_modules/devalue/src/base64.js +110 -0
- package/.output/server/node_modules/devalue/src/constants.js +7 -0
- package/.output/server/node_modules/devalue/src/parse.js +246 -0
- package/.output/server/node_modules/devalue/src/stringify.js +350 -0
- package/.output/server/node_modules/devalue/src/uneval.js +490 -0
- package/.output/server/node_modules/devalue/src/utils.js +148 -0
- package/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
- package/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
- package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
- package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
- package/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
- package/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
- package/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
- package/.output/server/node_modules/entities/package.json +120 -0
- package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
- package/.output/server/node_modules/estree-walker/package.json +37 -0
- package/.output/server/node_modules/pinia/dist/pinia.prod.cjs +719 -0
- package/.output/server/node_modules/pinia/package.json +94 -0
- package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
- package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
- package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
- package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
- package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
- package/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
- package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
- package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
- package/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
- package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
- package/.output/server/node_modules/source-map-js/package.json +71 -0
- package/.output/server/node_modules/source-map-js/source-map.js +8 -0
- package/.output/server/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs +1 -0
- package/.output/server/node_modules/tailwindcss/dist/colors.mjs +1 -0
- package/.output/server/node_modules/tailwindcss/package.json +89 -0
- package/.output/server/node_modules/ufo/dist/index.mjs +645 -0
- package/.output/server/node_modules/ufo/package.json +48 -0
- package/.output/server/node_modules/unhead/dist/index.mjs +9 -0
- package/.output/server/node_modules/unhead/dist/parser.mjs +508 -0
- package/.output/server/node_modules/unhead/dist/plugins.mjs +101 -0
- package/.output/server/node_modules/unhead/dist/scripts.mjs +30 -0
- package/.output/server/node_modules/unhead/dist/server.mjs +180 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.BPM0-cfG.mjs +44 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.BnoAbrHA.mjs +269 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +148 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +71 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.D_nrZZPH.mjs +182 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.ckV6dpEQ.mjs +166 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.fVVqDC1O.mjs +203 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
- package/.output/server/node_modules/unhead/dist/utils.mjs +5 -0
- package/.output/server/node_modules/unhead/package.json +105 -0
- package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
- package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
- package/.output/server/node_modules/vue/index.js +7 -0
- package/.output/server/node_modules/vue/index.mjs +1 -0
- package/.output/server/node_modules/vue/package.json +112 -0
- package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
- package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +301 -0
- package/.output/server/node_modules/vue-bundle-renderer/package.json +55 -0
- package/.output/server/node_modules/vue-router/dist/devtools-EWN81iOl.mjs +1220 -0
- package/.output/server/node_modules/vue-router/dist/vue-router.mjs +1557 -0
- package/.output/server/node_modules/vue-router/package.json +153 -0
- package/.output/server/node_modules/vue-router/vue-router.node.mjs +2 -0
- package/.output/server/package.json +37 -0
- package/LICENSE +21 -0
- package/README.md +132 -0
- package/bin/cli.js +75 -0
- package/package.json +71 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { defaultExtendedIconProps, defaultIconDimensions, defaultIconProps, defaultIconTransformations } from "./icon/defaults.js";
|
|
2
|
+
import { defaultIconCustomisations, defaultIconSizeCustomisations } from "./customisations/defaults.js";
|
|
3
|
+
import { mergeCustomisations } from "./customisations/merge.js";
|
|
4
|
+
import { toBoolean } from "./customisations/bool.js";
|
|
5
|
+
import { flipFromString } from "./customisations/flip.js";
|
|
6
|
+
import { rotateFromString } from "./customisations/rotate.js";
|
|
7
|
+
import { matchIconName, stringToIcon, validateIconName } from "./icon/name.js";
|
|
8
|
+
import { mergeIconTransformations } from "./icon/transformations.js";
|
|
9
|
+
import { mergeIconData } from "./icon/merge.js";
|
|
10
|
+
import { makeIconSquare } from "./icon/square.js";
|
|
11
|
+
import { getIconsTree } from "./icon-set/tree.js";
|
|
12
|
+
import { getIconData } from "./icon-set/get-icon.js";
|
|
13
|
+
import { parseIconSet, parseIconSetAsync } from "./icon-set/parse.js";
|
|
14
|
+
import { validateIconSet } from "./icon-set/validate.js";
|
|
15
|
+
import { quicklyValidateIconSet } from "./icon-set/validate-basic.js";
|
|
16
|
+
import { expandIconSet } from "./icon-set/expand.js";
|
|
17
|
+
import { minifyIconSet } from "./icon-set/minify.js";
|
|
18
|
+
import { getIcons } from "./icon-set/get-icons.js";
|
|
19
|
+
import { convertIconSetInfo } from "./icon-set/convert-info.js";
|
|
20
|
+
import { calculateSize } from "./svg/size.js";
|
|
21
|
+
import { mergeDefsAndContent, splitSVGDefs, wrapSVGContent } from "./svg/defs.js";
|
|
22
|
+
import { iconToSVG } from "./svg/build.js";
|
|
23
|
+
import { clearIDCache, replaceIDs } from "./svg/id.js";
|
|
24
|
+
import { svgToData, svgToURL } from "./svg/url.js";
|
|
25
|
+
import { encodeSvgForCss } from "./svg/encode-svg-for-css.js";
|
|
26
|
+
import { trimSVG } from "./svg/trim.js";
|
|
27
|
+
import { prettifySVG } from "./svg/pretty.js";
|
|
28
|
+
import { iconToHTML } from "./svg/html.js";
|
|
29
|
+
import { cleanUpInnerHTML } from "./svg/inner-html.js";
|
|
30
|
+
import { getSVGViewBox } from "./svg/viewbox.js";
|
|
31
|
+
import { buildParsedSVG, convertParsedSVG, parseSVGContent } from "./svg/parse.js";
|
|
32
|
+
import { colorKeywords } from "./colors/keywords.js";
|
|
33
|
+
import { colorToString, compareColors, stringToColor } from "./colors/index.js";
|
|
34
|
+
import { getIconCSS, getIconContentCSS } from "./css/icon.js";
|
|
35
|
+
import { getIconsCSS, getIconsContentCSS } from "./css/icons.js";
|
|
36
|
+
import { mergeIconProps } from "./loader/utils.js";
|
|
37
|
+
import { getCustomIcon } from "./loader/custom.js";
|
|
38
|
+
import { searchForIcon } from "./loader/modern.js";
|
|
39
|
+
import { loadIcon } from "./loader/loader.js";
|
|
40
|
+
import { convertEmojiSequenceToUTF16, convertEmojiSequenceToUTF32, getEmojiCodePoint, getEmojiUnicode, isUTF32SplitNumber, mergeUTF32Numbers, splitUTF32Number } from "./emoji/convert.js";
|
|
41
|
+
import { getEmojiSequenceFromString, getUnqualifiedEmojiSequence } from "./emoji/cleanup.js";
|
|
42
|
+
import { getEmojiSequenceKeyword, getEmojiSequenceString, getEmojiUnicodeString } from "./emoji/format.js";
|
|
43
|
+
import { parseEmojiTestFile } from "./emoji/test/parse.js";
|
|
44
|
+
import { getQualifiedEmojiVariations } from "./emoji/test/variations.js";
|
|
45
|
+
import { findMissingEmojis } from "./emoji/test/missing.js";
|
|
46
|
+
import { createOptimisedRegex, createOptimisedRegexForEmojiSequences } from "./emoji/regex/create.js";
|
|
47
|
+
import { prepareEmojiForIconSet, prepareEmojiForIconsList } from "./emoji/parse.js";
|
|
48
|
+
import { findAndReplaceEmojisInText } from "./emoji/replace/replace.js";
|
|
49
|
+
import { camelToKebab, camelize, pascalize, snakelize } from "./misc/strings.js";
|
|
50
|
+
import { commonObjectProps, compareObjects, unmergeObjects } from "./misc/objects.js";
|
|
51
|
+
import { sanitiseTitleAttribute } from "./misc/title.js";
|
|
52
|
+
|
|
53
|
+
export { buildParsedSVG, calculateSize, camelToKebab, camelize, cleanUpInnerHTML, clearIDCache, colorKeywords, colorToString, commonObjectProps, compareColors, compareObjects, convertEmojiSequenceToUTF16, convertEmojiSequenceToUTF32, convertIconSetInfo, convertParsedSVG, createOptimisedRegex, createOptimisedRegexForEmojiSequences, defaultExtendedIconProps, defaultIconCustomisations, defaultIconDimensions, defaultIconProps, defaultIconSizeCustomisations, defaultIconTransformations, encodeSvgForCss, expandIconSet, findAndReplaceEmojisInText, findMissingEmojis, flipFromString, getCustomIcon, getEmojiCodePoint, getEmojiSequenceFromString, getEmojiSequenceKeyword, getEmojiSequenceString, getEmojiUnicode, getEmojiUnicodeString, getIconCSS, getIconContentCSS, getIconData, getIcons, getIconsCSS, getIconsContentCSS, getIconsTree, getQualifiedEmojiVariations, getSVGViewBox, getUnqualifiedEmojiSequence, iconToHTML, iconToSVG, isUTF32SplitNumber, loadIcon, makeIconSquare, matchIconName, mergeCustomisations, mergeDefsAndContent, mergeIconData, mergeIconProps, mergeIconTransformations, mergeUTF32Numbers, minifyIconSet, parseEmojiTestFile, parseIconSet, parseIconSetAsync, parseSVGContent, pascalize, prepareEmojiForIconSet, prepareEmojiForIconsList, prettifySVG, quicklyValidateIconSet, replaceIDs, rotateFromString, sanitiseTitleAttribute, searchForIcon, snakelize, splitSVGDefs, splitUTF32Number, stringToColor, stringToIcon, svgToData, svgToURL, toBoolean, trimSVG, unmergeObjects, validateIconName, validateIconSet, wrapSVGContent };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { trimSVG } from "../svg/trim.js";
|
|
2
|
+
import { mergeIconProps } from "./utils.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Get custom icon from inline collection or using loader
|
|
6
|
+
*/
|
|
7
|
+
async function getCustomIcon(custom, collection, icon, options) {
|
|
8
|
+
let result;
|
|
9
|
+
try {
|
|
10
|
+
if (typeof custom === "function") result = await custom(icon);
|
|
11
|
+
else {
|
|
12
|
+
const inline = custom[icon];
|
|
13
|
+
result = typeof inline === "function" ? await inline() : inline;
|
|
14
|
+
}
|
|
15
|
+
} catch (err) {
|
|
16
|
+
console.warn(`Failed to load custom icon "${icon}" in "${collection}":`, err);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (result) {
|
|
20
|
+
const cleanupIdx = result.indexOf("<svg");
|
|
21
|
+
if (cleanupIdx > 0) result = result.slice(cleanupIdx);
|
|
22
|
+
const { transform } = options?.customizations ?? {};
|
|
23
|
+
result = typeof transform === "function" ? await transform(result, collection, icon) : result;
|
|
24
|
+
if (!result.startsWith("<svg")) {
|
|
25
|
+
console.warn(`Custom icon "${icon}" in "${collection}" is not a valid SVG`);
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
return await mergeIconProps(options?.customizations?.trimCustomSvg === true ? trimSVG(result) : result, collection, icon, options, void 0);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { getCustomIcon };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { getCustomIcon } from "./custom.js";
|
|
2
|
+
import { searchForIcon } from "./modern.js";
|
|
3
|
+
|
|
4
|
+
const loadIcon = async (collection, icon, options) => {
|
|
5
|
+
const custom = options?.customCollections?.[collection];
|
|
6
|
+
if (custom) if (typeof custom === "function") {
|
|
7
|
+
let result;
|
|
8
|
+
try {
|
|
9
|
+
result = await custom(icon);
|
|
10
|
+
} catch (err) {
|
|
11
|
+
console.warn(`Failed to load custom icon "${icon}" in "${collection}":`, err);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (result) {
|
|
15
|
+
if (typeof result === "string") return await getCustomIcon(() => result, collection, icon, options);
|
|
16
|
+
if ("icons" in result) {
|
|
17
|
+
const ids = [
|
|
18
|
+
icon,
|
|
19
|
+
icon.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(),
|
|
20
|
+
icon.replace(/([a-z])(\d+)/g, "$1-$2")
|
|
21
|
+
];
|
|
22
|
+
return await searchForIcon(result, collection, ids, options);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
} else return await getCustomIcon(custom, collection, icon, options);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export { loadIcon };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { defaultIconCustomisations } from "../customisations/defaults.js";
|
|
2
|
+
import { getIconData } from "../icon-set/get-icon.js";
|
|
3
|
+
import { calculateSize } from "../svg/size.js";
|
|
4
|
+
import { iconToSVG, isUnsetKeyword } from "../svg/build.js";
|
|
5
|
+
import { mergeIconProps } from "./utils.js";
|
|
6
|
+
|
|
7
|
+
async function searchForIcon(iconSet, collection, ids, options) {
|
|
8
|
+
let iconData;
|
|
9
|
+
const { customize } = options?.customizations ?? {};
|
|
10
|
+
for (const id of ids) {
|
|
11
|
+
iconData = getIconData(iconSet, id);
|
|
12
|
+
if (iconData) {
|
|
13
|
+
let defaultCustomizations = { ...defaultIconCustomisations };
|
|
14
|
+
if (typeof customize === "function") {
|
|
15
|
+
iconData = Object.assign({}, iconData);
|
|
16
|
+
defaultCustomizations = customize(defaultCustomizations, iconData, `${collection}:${id}`) ?? defaultCustomizations;
|
|
17
|
+
}
|
|
18
|
+
const { attributes: { width, height, ...restAttributes }, body } = iconToSVG(iconData, defaultCustomizations);
|
|
19
|
+
const scale = options?.scale;
|
|
20
|
+
return await mergeIconProps(`<svg >${body}</svg>`, collection, id, options, () => {
|
|
21
|
+
return { ...restAttributes };
|
|
22
|
+
}, (props) => {
|
|
23
|
+
const check = (prop, defaultValue) => {
|
|
24
|
+
const propValue = props[prop];
|
|
25
|
+
let value;
|
|
26
|
+
if (!isUnsetKeyword(propValue)) {
|
|
27
|
+
if (propValue) return;
|
|
28
|
+
if (typeof scale === "number") {
|
|
29
|
+
if (scale) value = calculateSize(defaultValue ?? "1em", scale);
|
|
30
|
+
} else value = defaultValue;
|
|
31
|
+
}
|
|
32
|
+
if (!value) delete props[prop];
|
|
33
|
+
else props[prop] = value;
|
|
34
|
+
};
|
|
35
|
+
check("width", width);
|
|
36
|
+
check("height", height);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { searchForIcon };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { calculateSize } from "../svg/size.js";
|
|
2
|
+
import { isUnsetKeyword } from "../svg/build.js";
|
|
3
|
+
|
|
4
|
+
const svgWidthRegex = /\swidth\s*=\s*["']([\w.]+)["']/;
|
|
5
|
+
const svgHeightRegex = /\sheight\s*=\s*["']([\w.]+)["']/;
|
|
6
|
+
const svgTagRegex = /<svg\s+/;
|
|
7
|
+
function configureSvgSize(svg, props, scale) {
|
|
8
|
+
const svgNode = svg.slice(0, svg.indexOf(">"));
|
|
9
|
+
const check = (prop, regex) => {
|
|
10
|
+
const result = regex.exec(svgNode);
|
|
11
|
+
const isSet = result != null;
|
|
12
|
+
const propValue = props[prop];
|
|
13
|
+
if (!propValue && !isUnsetKeyword(propValue)) {
|
|
14
|
+
if (typeof scale === "number") {
|
|
15
|
+
if (scale > 0) props[prop] = calculateSize(result?.[1] ?? "1em", scale);
|
|
16
|
+
} else if (result) props[prop] = result[1];
|
|
17
|
+
}
|
|
18
|
+
return isSet;
|
|
19
|
+
};
|
|
20
|
+
return [check("width", svgWidthRegex), check("height", svgHeightRegex)];
|
|
21
|
+
}
|
|
22
|
+
async function mergeIconProps(svg, collection, icon, options, propsProvider, afterCustomizations) {
|
|
23
|
+
const { scale, addXmlNs = false } = options ?? {};
|
|
24
|
+
const { additionalProps = {}, iconCustomizer } = options?.customizations ?? {};
|
|
25
|
+
const props = await propsProvider?.() ?? {};
|
|
26
|
+
await iconCustomizer?.(collection, icon, props);
|
|
27
|
+
Object.keys(additionalProps).forEach((p) => {
|
|
28
|
+
const v = additionalProps[p];
|
|
29
|
+
if (v !== void 0 && v !== null) props[p] = v;
|
|
30
|
+
});
|
|
31
|
+
afterCustomizations?.(props);
|
|
32
|
+
const [widthOnSvg, heightOnSvg] = configureSvgSize(svg, props, scale);
|
|
33
|
+
if (addXmlNs) {
|
|
34
|
+
if (!svg.includes("xmlns=") && !props["xmlns"]) props["xmlns"] = "http://www.w3.org/2000/svg";
|
|
35
|
+
if (!svg.includes("xmlns:xlink=") && svg.includes("xlink:") && !props["xmlns:xlink"]) props["xmlns:xlink"] = "http://www.w3.org/1999/xlink";
|
|
36
|
+
}
|
|
37
|
+
const propsToAdd = Object.keys(props).map((p) => p === "width" && widthOnSvg || p === "height" && heightOnSvg ? null : `${p}="${props[p]}"`).filter((p) => p != null);
|
|
38
|
+
if (propsToAdd.length) svg = svg.replace(svgTagRegex, `<svg ${propsToAdd.join(" ")} `);
|
|
39
|
+
if (options) {
|
|
40
|
+
const { defaultStyle, defaultClass } = options;
|
|
41
|
+
if (defaultClass && !svg.includes("class=")) svg = svg.replace(svgTagRegex, `<svg class="${defaultClass}" `);
|
|
42
|
+
if (defaultStyle && !svg.includes("style=")) svg = svg.replace(svgTagRegex, `<svg style="${defaultStyle}" `);
|
|
43
|
+
}
|
|
44
|
+
const usedProps = options?.usedProps;
|
|
45
|
+
if (usedProps) {
|
|
46
|
+
Object.keys(additionalProps).forEach((p) => {
|
|
47
|
+
const v = props[p];
|
|
48
|
+
if (v !== void 0 && v !== null) usedProps[p] = v;
|
|
49
|
+
});
|
|
50
|
+
if (typeof props.width !== "undefined" && props.width !== null) usedProps.width = props.width;
|
|
51
|
+
if (typeof props.height !== "undefined" && props.height !== null) usedProps.height = props.height;
|
|
52
|
+
}
|
|
53
|
+
return svg;
|
|
54
|
+
}
|
|
55
|
+
function getPossibleIconNames(icon) {
|
|
56
|
+
return [
|
|
57
|
+
icon,
|
|
58
|
+
icon.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(),
|
|
59
|
+
icon.replace(/([a-z])(\d+)/g, "$1-$2")
|
|
60
|
+
];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export { getPossibleIconNames, mergeIconProps };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compares two objects, returns true if identical
|
|
3
|
+
*
|
|
4
|
+
* Reference object contains keys
|
|
5
|
+
*/
|
|
6
|
+
function compareObjects(obj1, obj2, ref = obj1) {
|
|
7
|
+
for (const key in ref) if (obj1[key] !== obj2[key]) return false;
|
|
8
|
+
return Object.keys(obj1).length === Object.keys(obj2).length;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Unmerge objects, removing items that match in both objects
|
|
12
|
+
*/
|
|
13
|
+
function unmergeObjects(obj1, obj2) {
|
|
14
|
+
const result = { ...obj1 };
|
|
15
|
+
for (const key in obj2) if (result[key] === obj2[key]) delete result[key];
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get common properties in 2 objects
|
|
20
|
+
*/
|
|
21
|
+
function commonObjectProps(item, reference) {
|
|
22
|
+
const result = Object.create(null);
|
|
23
|
+
for (const key in reference) if (key in item) result[key] = item[key];
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { commonObjectProps, compareObjects, unmergeObjects };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert string to camelCase
|
|
3
|
+
*/
|
|
4
|
+
function camelize(str) {
|
|
5
|
+
return str.replace(/-([a-z0-9])/g, (g) => g[1].toUpperCase());
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Convert string to PascaleCase
|
|
9
|
+
*/
|
|
10
|
+
function pascalize(str) {
|
|
11
|
+
const camel = camelize(str);
|
|
12
|
+
return camel.slice(0, 1).toUpperCase() + camel.slice(1);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Convert camelCase string to kebab-case
|
|
16
|
+
*/
|
|
17
|
+
function camelToKebab(key) {
|
|
18
|
+
return key.replace(/:/g, "-").replace(/([A-Z])/g, " $1").trim().split(/\s+/g).join("-").toLowerCase();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Convert camelCase string to snake-case
|
|
22
|
+
*/
|
|
23
|
+
function snakelize(str) {
|
|
24
|
+
return camelToKebab(str).replace(/-/g, "_");
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { camelToKebab, camelize, pascalize, snakelize };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sanitises title, removing any unwanted characters that might break XML.
|
|
3
|
+
*
|
|
4
|
+
* This is a very basic funciton, not full parser.
|
|
5
|
+
*/
|
|
6
|
+
function sanitiseTitleAttribute(content) {
|
|
7
|
+
return content.replace(/[<>&]+/g, "");
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { sanitiseTitleAttribute };
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { defaultIconProps } from "../icon/defaults.js";
|
|
2
|
+
import { defaultIconCustomisations } from "../customisations/defaults.js";
|
|
3
|
+
import { calculateSize } from "./size.js";
|
|
4
|
+
import { wrapSVGContent } from "./defs.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Check if value should be unset. Allows multiple keywords
|
|
8
|
+
*/
|
|
9
|
+
const isUnsetKeyword = (value) => value === "unset" || value === "undefined" || value === "none";
|
|
10
|
+
/**
|
|
11
|
+
* Get SVG attributes and content from icon + customisations
|
|
12
|
+
*
|
|
13
|
+
* Does not generate style to make it compatible with frameworks that use objects for style, such as React.
|
|
14
|
+
* Instead, it generates 'inline' value. If true, rendering engine should add verticalAlign: -0.125em to icon.
|
|
15
|
+
*
|
|
16
|
+
* Customisations should be normalised by platform specific parser.
|
|
17
|
+
* Result should be converted to <svg> by platform specific parser.
|
|
18
|
+
* Use replaceIDs to generate unique IDs for body.
|
|
19
|
+
*/
|
|
20
|
+
function iconToSVG(icon, customisations) {
|
|
21
|
+
const fullIcon = {
|
|
22
|
+
...defaultIconProps,
|
|
23
|
+
...icon
|
|
24
|
+
};
|
|
25
|
+
const fullCustomisations = {
|
|
26
|
+
...defaultIconCustomisations,
|
|
27
|
+
...customisations
|
|
28
|
+
};
|
|
29
|
+
const box = {
|
|
30
|
+
left: fullIcon.left,
|
|
31
|
+
top: fullIcon.top,
|
|
32
|
+
width: fullIcon.width,
|
|
33
|
+
height: fullIcon.height
|
|
34
|
+
};
|
|
35
|
+
let body = fullIcon.body;
|
|
36
|
+
[fullIcon, fullCustomisations].forEach((props) => {
|
|
37
|
+
const transformations = [];
|
|
38
|
+
const hFlip = props.hFlip;
|
|
39
|
+
const vFlip = props.vFlip;
|
|
40
|
+
let rotation = props.rotate;
|
|
41
|
+
if (hFlip) if (vFlip) rotation += 2;
|
|
42
|
+
else {
|
|
43
|
+
transformations.push("translate(" + (box.width + box.left).toString() + " " + (0 - box.top).toString() + ")");
|
|
44
|
+
transformations.push("scale(-1 1)");
|
|
45
|
+
box.top = box.left = 0;
|
|
46
|
+
}
|
|
47
|
+
else if (vFlip) {
|
|
48
|
+
transformations.push("translate(" + (0 - box.left).toString() + " " + (box.height + box.top).toString() + ")");
|
|
49
|
+
transformations.push("scale(1 -1)");
|
|
50
|
+
box.top = box.left = 0;
|
|
51
|
+
}
|
|
52
|
+
let tempValue;
|
|
53
|
+
if (rotation < 0) rotation -= Math.floor(rotation / 4) * 4;
|
|
54
|
+
rotation = rotation % 4;
|
|
55
|
+
switch (rotation) {
|
|
56
|
+
case 1:
|
|
57
|
+
tempValue = box.height / 2 + box.top;
|
|
58
|
+
transformations.unshift("rotate(90 " + tempValue.toString() + " " + tempValue.toString() + ")");
|
|
59
|
+
break;
|
|
60
|
+
case 2:
|
|
61
|
+
transformations.unshift("rotate(180 " + (box.width / 2 + box.left).toString() + " " + (box.height / 2 + box.top).toString() + ")");
|
|
62
|
+
break;
|
|
63
|
+
case 3:
|
|
64
|
+
tempValue = box.width / 2 + box.left;
|
|
65
|
+
transformations.unshift("rotate(-90 " + tempValue.toString() + " " + tempValue.toString() + ")");
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
if (rotation % 2 === 1) {
|
|
69
|
+
if (box.left !== box.top) {
|
|
70
|
+
tempValue = box.left;
|
|
71
|
+
box.left = box.top;
|
|
72
|
+
box.top = tempValue;
|
|
73
|
+
}
|
|
74
|
+
if (box.width !== box.height) {
|
|
75
|
+
tempValue = box.width;
|
|
76
|
+
box.width = box.height;
|
|
77
|
+
box.height = tempValue;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (transformations.length) body = wrapSVGContent(body, "<g transform=\"" + transformations.join(" ") + "\">", "</g>");
|
|
81
|
+
});
|
|
82
|
+
const customisationsWidth = fullCustomisations.width;
|
|
83
|
+
const customisationsHeight = fullCustomisations.height;
|
|
84
|
+
const boxWidth = box.width;
|
|
85
|
+
const boxHeight = box.height;
|
|
86
|
+
let width;
|
|
87
|
+
let height;
|
|
88
|
+
if (customisationsWidth === null) {
|
|
89
|
+
height = customisationsHeight === null ? "1em" : customisationsHeight === "auto" ? boxHeight : customisationsHeight;
|
|
90
|
+
width = calculateSize(height, boxWidth / boxHeight);
|
|
91
|
+
} else {
|
|
92
|
+
width = customisationsWidth === "auto" ? boxWidth : customisationsWidth;
|
|
93
|
+
height = customisationsHeight === null ? calculateSize(width, boxHeight / boxWidth) : customisationsHeight === "auto" ? boxHeight : customisationsHeight;
|
|
94
|
+
}
|
|
95
|
+
const attributes = {};
|
|
96
|
+
const setAttr = (prop, value) => {
|
|
97
|
+
if (!isUnsetKeyword(value)) attributes[prop] = value.toString();
|
|
98
|
+
};
|
|
99
|
+
setAttr("width", width);
|
|
100
|
+
setAttr("height", height);
|
|
101
|
+
const viewBox = [
|
|
102
|
+
box.left,
|
|
103
|
+
box.top,
|
|
104
|
+
boxWidth,
|
|
105
|
+
boxHeight
|
|
106
|
+
];
|
|
107
|
+
attributes.viewBox = viewBox.join(" ");
|
|
108
|
+
return {
|
|
109
|
+
attributes,
|
|
110
|
+
viewBox,
|
|
111
|
+
body
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export { iconToSVG, isUnsetKeyword };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
function splitSVGDefs(content, tag = "defs") {
|
|
2
|
+
let defs = "";
|
|
3
|
+
const index = content.indexOf("<" + tag);
|
|
4
|
+
while (index >= 0) {
|
|
5
|
+
const start = content.indexOf(">", index);
|
|
6
|
+
const end = content.indexOf("</" + tag);
|
|
7
|
+
if (start === -1 || end === -1) break;
|
|
8
|
+
const endEnd = content.indexOf(">", end);
|
|
9
|
+
if (endEnd === -1) break;
|
|
10
|
+
defs += content.slice(start + 1, end).trim();
|
|
11
|
+
content = content.slice(0, index).trim() + content.slice(endEnd + 1);
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
defs,
|
|
15
|
+
content
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Merge defs and content
|
|
20
|
+
*/
|
|
21
|
+
function mergeDefsAndContent(defs, content) {
|
|
22
|
+
return defs ? "<defs>" + defs + "</defs>" + content : content;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Wrap SVG content, without wrapping definitions
|
|
26
|
+
*/
|
|
27
|
+
function wrapSVGContent(body, start, end) {
|
|
28
|
+
const split = splitSVGDefs(body);
|
|
29
|
+
return mergeDefsAndContent(split.defs, start + split.content + end);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { mergeDefsAndContent, splitSVGDefs, wrapSVGContent };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { encodeSVGforURL } from "./url.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Encode the `SVG` to be used on `CSS`: https://bl.ocks.org/jennyknuth/222825e315d45a738ed9d6e04c7a88d0.
|
|
5
|
+
*
|
|
6
|
+
* @param svg The `SVG` source.
|
|
7
|
+
*/
|
|
8
|
+
function encodeSvgForCss(svg) {
|
|
9
|
+
let useSvg = svg.startsWith("<svg>") ? svg.replace("<svg>", "<svg >") : svg;
|
|
10
|
+
if (!useSvg.includes(" xmlns:xlink=") && useSvg.includes(" xlink:")) useSvg = useSvg.replace("<svg ", "<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" ");
|
|
11
|
+
if (!useSvg.includes(" xmlns=")) useSvg = useSvg.replace("<svg ", "<svg xmlns=\"http://www.w3.org/2000/svg\" ");
|
|
12
|
+
return encodeSVGforURL(useSvg);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { encodeSvgForCss };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate <svg>
|
|
3
|
+
*/
|
|
4
|
+
function iconToHTML(body, attributes) {
|
|
5
|
+
let renderAttribsHTML = body.indexOf("xlink:") === -1 ? "" : " xmlns:xlink=\"http://www.w3.org/1999/xlink\"";
|
|
6
|
+
for (const attr in attributes) renderAttribsHTML += " " + attr + "=\"" + attributes[attr] + "\"";
|
|
7
|
+
return "<svg xmlns=\"http://www.w3.org/2000/svg\"" + renderAttribsHTML + ">" + body + "</svg>";
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { iconToHTML };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regular expression for finding ids
|
|
3
|
+
*/
|
|
4
|
+
const regex = /\sid="(\S+)"/g;
|
|
5
|
+
/**
|
|
6
|
+
* Counters
|
|
7
|
+
*/
|
|
8
|
+
const counters = /* @__PURE__ */ new Map();
|
|
9
|
+
/**
|
|
10
|
+
* Get unique new ID
|
|
11
|
+
*/
|
|
12
|
+
function nextID(id) {
|
|
13
|
+
id = id.replace(/[0-9]+$/, "") || "a";
|
|
14
|
+
const count = counters.get(id) || 0;
|
|
15
|
+
counters.set(id, count + 1);
|
|
16
|
+
return count ? `${id}${count}` : id;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Replace IDs in SVG output with unique IDs
|
|
20
|
+
*/
|
|
21
|
+
function replaceIDs(body) {
|
|
22
|
+
const ids = [];
|
|
23
|
+
let match;
|
|
24
|
+
while (match = regex.exec(body)) ids.push(match[1]);
|
|
25
|
+
if (!ids.length) return body;
|
|
26
|
+
const suffix = "suffix" + (Math.random() * 16777216 | Date.now()).toString(16);
|
|
27
|
+
ids.forEach((id) => {
|
|
28
|
+
const newID = nextID(id);
|
|
29
|
+
const escapedID = id.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
30
|
+
body = body.replace(new RegExp("([#;\"])(" + escapedID + ")([\")]|\\.[a-z])", "g"), "$1" + newID + suffix + "$3");
|
|
31
|
+
});
|
|
32
|
+
body = body.replace(new RegExp(suffix, "g"), "");
|
|
33
|
+
return body;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Clear ID cache
|
|
37
|
+
*/
|
|
38
|
+
function clearIDCache() {
|
|
39
|
+
counters.clear();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { clearIDCache, replaceIDs };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
let policy;
|
|
2
|
+
/**
|
|
3
|
+
* Attempt to create policy
|
|
4
|
+
*/
|
|
5
|
+
function createPolicy() {
|
|
6
|
+
try {
|
|
7
|
+
policy = window.trustedTypes.createPolicy("iconify", { createHTML: (s) => s });
|
|
8
|
+
} catch (err) {
|
|
9
|
+
policy = null;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Clean up value for innerHTML assignment
|
|
14
|
+
*
|
|
15
|
+
* This code doesn't actually clean up anything.
|
|
16
|
+
* It is intended be used with Iconify icon data, which has already been validated
|
|
17
|
+
*/
|
|
18
|
+
function cleanUpInnerHTML(html) {
|
|
19
|
+
if (policy === void 0) createPolicy();
|
|
20
|
+
return policy ? policy.createHTML(html) : html;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { cleanUpInnerHTML };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { wrapSVGContent } from "./defs.js";
|
|
2
|
+
import { getSVGViewBox } from "./viewbox.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Extract attributes and content from SVG
|
|
6
|
+
*/
|
|
7
|
+
function parseSVGContent(content) {
|
|
8
|
+
const match = content.trim().match(/(?:<(?:\?xml|!DOCTYPE)[^>]+>\s*)*<svg([^>]+)>([\s\S]+)<\/svg[^>]*>/);
|
|
9
|
+
if (!match) return;
|
|
10
|
+
const body = match[2].trim();
|
|
11
|
+
const attribsList = match[1].match(/[\w:-]+="[^"]*"/g);
|
|
12
|
+
const attribs = Object.create(null);
|
|
13
|
+
attribsList?.forEach((row) => {
|
|
14
|
+
const match$1 = row.match(/([\w:-]+)="([^"]*)"/);
|
|
15
|
+
if (match$1) attribs[match$1[1]] = match$1[2];
|
|
16
|
+
});
|
|
17
|
+
return {
|
|
18
|
+
attribs,
|
|
19
|
+
body
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function build(data) {
|
|
23
|
+
const attribs = data.attribs;
|
|
24
|
+
const viewBox = getSVGViewBox(attribs["viewBox"] ?? "");
|
|
25
|
+
if (!viewBox) return;
|
|
26
|
+
const groupAttributes = [];
|
|
27
|
+
for (const key in attribs) if (key === "style" || key.startsWith("fill") || key.startsWith("stroke")) groupAttributes.push(`${key}="${attribs[key]}"`);
|
|
28
|
+
let body = data.body;
|
|
29
|
+
if (groupAttributes.length) body = wrapSVGContent(body, "<g " + groupAttributes.join(" ") + ">", "</g>");
|
|
30
|
+
return {
|
|
31
|
+
width: attribs.width,
|
|
32
|
+
height: attribs.height,
|
|
33
|
+
viewBox,
|
|
34
|
+
body
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Convert parsed SVG to IconifyIconBuildResult
|
|
39
|
+
*/
|
|
40
|
+
function buildParsedSVG(data) {
|
|
41
|
+
const result = build(data);
|
|
42
|
+
if (result) return {
|
|
43
|
+
attributes: {
|
|
44
|
+
width: result.width,
|
|
45
|
+
height: result.height,
|
|
46
|
+
viewBox: result.viewBox.join(" ")
|
|
47
|
+
},
|
|
48
|
+
viewBox: result.viewBox,
|
|
49
|
+
body: result.body
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Convert parsed SVG to IconifyIcon
|
|
54
|
+
*/
|
|
55
|
+
function convertParsedSVG(data) {
|
|
56
|
+
const result = build(data);
|
|
57
|
+
if (result) {
|
|
58
|
+
const viewBox = result.viewBox;
|
|
59
|
+
return {
|
|
60
|
+
left: viewBox[0],
|
|
61
|
+
top: viewBox[1],
|
|
62
|
+
width: viewBox[2],
|
|
63
|
+
height: viewBox[3],
|
|
64
|
+
body: result.body
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export { buildParsedSVG, convertParsedSVG, parseSVGContent };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tags to skip
|
|
3
|
+
*/
|
|
4
|
+
const skipTags = ["script", "style"];
|
|
5
|
+
/**
|
|
6
|
+
* Prettify SVG
|
|
7
|
+
*/
|
|
8
|
+
function prettifySVG(content, tab = " ", depth = 0) {
|
|
9
|
+
let result = "";
|
|
10
|
+
let level = 0;
|
|
11
|
+
content = content.replace(/(\s)*\/>/g, " />");
|
|
12
|
+
while (content.length > 0) {
|
|
13
|
+
const openIndex = content.indexOf("<");
|
|
14
|
+
let closeIndex = content.indexOf(">");
|
|
15
|
+
if (openIndex === -1 && closeIndex === -1) return result;
|
|
16
|
+
if (openIndex === -1 || closeIndex === -1 || closeIndex < openIndex) return null;
|
|
17
|
+
const text = content.slice(0, openIndex);
|
|
18
|
+
const trimmedText = text.trim();
|
|
19
|
+
if (trimmedText.length) if (text.trimStart() !== text && text.trimEnd() !== text) result += trimmedText + "\n" + tab.repeat(level + depth);
|
|
20
|
+
else result = result.trim() + text;
|
|
21
|
+
content = content.slice(openIndex);
|
|
22
|
+
closeIndex -= openIndex;
|
|
23
|
+
const lastChar = content.slice(closeIndex - 1, closeIndex);
|
|
24
|
+
const isClosing = content.slice(0, 2) === "</";
|
|
25
|
+
let isSelfClosing = lastChar === "/" || lastChar === "?";
|
|
26
|
+
if (isClosing && isSelfClosing) return null;
|
|
27
|
+
const tagName = content.slice(isClosing ? 2 : 1).split(/[\s>]/).shift();
|
|
28
|
+
const ignoreTagContent = !isSelfClosing && !isClosing && skipTags.includes(tagName);
|
|
29
|
+
if (!ignoreTagContent) {
|
|
30
|
+
const nextOpenIndex = content.indexOf("<", 1);
|
|
31
|
+
if (nextOpenIndex !== -1 && nextOpenIndex < closeIndex) return null;
|
|
32
|
+
}
|
|
33
|
+
if (isClosing && tab.length) {
|
|
34
|
+
if (result.slice(0 - tab.length) === tab) result = result.slice(0, result.length - tab.length);
|
|
35
|
+
}
|
|
36
|
+
result += content.slice(0, closeIndex + 1);
|
|
37
|
+
content = content.slice(closeIndex + 1);
|
|
38
|
+
if (ignoreTagContent) {
|
|
39
|
+
const closingIndex = content.indexOf("</" + tagName);
|
|
40
|
+
const closingEnd = content.indexOf(">", closingIndex);
|
|
41
|
+
if (closingIndex < 0 || closingEnd < 0) return null;
|
|
42
|
+
result += content.slice(0, closingEnd + 1);
|
|
43
|
+
content = content.slice(closingEnd + 1);
|
|
44
|
+
isSelfClosing = true;
|
|
45
|
+
}
|
|
46
|
+
if (isClosing) {
|
|
47
|
+
level--;
|
|
48
|
+
if (level < 0) return null;
|
|
49
|
+
} else if (!isSelfClosing) level++;
|
|
50
|
+
result += "\n" + tab.repeat(level + depth);
|
|
51
|
+
}
|
|
52
|
+
return level === 0 ? result : null;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export { prettifySVG };
|