@coreframe/vite 0.1.17 → 0.1.19

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.
@@ -0,0 +1,25 @@
1
+ import{readFile as e}from"node:fs/promises";import{isAbsolute as t,relative as n,resolve as r}from"node:path";import{createHash as i}from"node:crypto";import{buildParsedSVG as a,parseSVGContent as o}from"@iconify/utils";import{loadNodeIcon as s}from"@iconify/utils/lib/loader/node-loader";import{createUnplugin as c}from"unplugin";import{camelize as l}from"@iconify/utils/lib/misc/strings";import u from"node:process";import{createDebug as d}from"obug";const f=(e=>`---
2
+ interface Props extends astroHTML.JSX.SVGAttributes {};
3
+ const props = Astro.props;
4
+ ---
5
+ ${e.replace(`<svg`,`<svg {...props}`)}`),p=(e=>{let t=e.replace(`<svg`,`<svg ...attributes`);return`import { template } from "@ember/template-compiler";
6
+
7
+ const Icon = template(${JSON.stringify(t)})
8
+ export default Icon;`}),m=(async(e,t,n,r)=>{let i=await import(`@svgr/core`),a=await(i.transform||(i.default?i.default.transform??i.default:i.default)||i)(e,{plugins:[`@svgr/plugin-jsx`],ref:r.jsx===`react`,titleProp:r.jsx===`react`},{componentName:l(`${t}-${n}`)});return r.jsx!==`react`&&(a=a.replace(`import * as React from "react";`,``)),a}),h=(e=>{let t=e.indexOf(`>`,e.indexOf(`<svg `)),n=e.lastIndexOf(`</svg`);return`${`${e.slice(0,t)} ...input>`}${`$!{\`${g(e.slice(t+1,n))}\`}`}${e.slice(n)}`});function g(e){return e.replace(/\\.|[$`]/g,e=>{switch(e){case`$`:return`&#36`;case"`":return`&#96;`;default:return e}})}const _=(e=>e),ee=(async(e,t,n,r)=>{let i={importSource:`@builder.io/qwik`,runtime:`automatic`,componentName:l(`${t}-${n}`)},a=Object.assign({},i,r),o=(await importModule(`@svgx/core`)).toJsxComponent;return o(e,{...a,defaultExport:!0})}),v=(e=>`export default ${JSON.stringify(e)}`),y=(e=>`export default (props = {}) => ${e.replace(/([{}])/g,`{'$1'}`).replace(/(?<=<svg[\s\S]*?)(>)/i,`{...props}>`)}`);let b;const x=(async e=>{if(b==null)try{let{VERSION:e}=await import(`svelte/compiler`);b=Number(e.split(`.`)[0])>=5}catch{b=!1}let t=e.indexOf(`>`,e.indexOf(`<svg `)),n=e.lastIndexOf(`</svg`),r=`${e.slice(0,t)} {...${b?`p`:`$$props`}}>`;return b?r+=e.slice(t+1,n):r+=`{@html \`${S(e.slice(t+1,n))}\`}`,r+=e.slice(n),b?`<script>const{...p}=$props()<\/script>${r}`:r});function S(e){return e.replace(/\{/g,`&#123;`).replace(/\}/g,`&#125;`).replace(/`/g,`&#96;`).replace(/\\([trn])/g,` `)}function C(e){let t=/="url\(#/.test(e),n={},r=``;return t&&(e=e.replace(/\b([\w-]+)="url\(#(.+?)\)"/g,(e,t,r)=>(n[r]=`'${r}':'uicons-'+__randId()`,`:${t}="'url(#'+idMap['${r}']+')'"`)).replace(/\bid="(.+?)"/g,(e,t)=>n[t]?`:id="idMap['${t}']"`:e),r=`const __randId = () => Math.random().toString(36).substr(2, 10);const idMap = {${Object.values(n).join(`,`)}};`),{hasID:t,svg:e,injectScripts:r}}const w={astro:f,ember:p,jsx:m,marko:h,none:_,raw:v,solid:y,svelte:x,vue3:(async(e,t,n)=>{let{compileTemplate:r}=await importModule(`@vue/compiler-sfc`),{injectScripts:i,svg:a}=C(e),{code:o}=r({source:a,id:`${t}:${n}`,filename:`${t}-${n}.vue`});return o=`import { markRaw } from 'vue'\n${o}`,o=o.replace(/^export /gm,``),o+=`\n\nexport default markRaw({ name: '${t}-${n}', render${i?`, setup() {${i};return { idMap }}`:``} })`,o+=`
9
+ /* vite-plugin-components disabled */`,o}),"web-components":((e,t,n,{webComponents:r})=>{let i=`${t}-${n}`;r.iconPrefix&&(i=`${r.iconPrefix}-${i}`);let a=l(i),o=`export default class ${a} extends HTMLElement {`;return r.shadow?o+=`constructor() {
10
+ super()
11
+ this.attachShadow({ mode: 'open' }).innerHTML = ${JSON.stringify(e)}
12
+ }`:o+=`connectedCallback() { this.innerHTML = ${JSON.stringify(e)} }`,o+=`}`,r.autoDefine&&(o+=`\ncustomElements.define('${i}', ${a})`),o}),qwik:ee},T=[`/~icons/`,`~icons/`,`virtual:icons/`,`virtual/icons/`],E=RegExp(`${T.map(e=>`^${e}`).join(`|`)}`);function D(e){return E.test(e)}function O(e){return e.replace(E,T[0])}function k(e){if(!D(e))return null;e=e.replace(E,``);let t={},n=e.indexOf(`?`);if(n!==-1){let r=e.slice(n+1);e=e.slice(0,n),new URLSearchParams(r).forEach((e,n)=>{n===`raw`?t.raw=e===``||e===`true`?`true`:`false`:t[n]=e})}e=e.replace(/\.\w+$/,``);let[r,i]=e.split(`/`);return{collection:r,icon:i,query:t}}async function A({collection:e,icon:t,query:n},r){let i=`${e}/${t}`,{scale:a,defaultStyle:o,defaultClass:c,customCollections:l,iconCustomizer:u,transform:d,autoInstall:f=!1,collectionsNodeResolvePath:p}=r,m=await s(e,t,{addXmlNs:!1,scale:a,customCollections:l,autoInstall:f,defaultClass:c,defaultStyle:o,cwd:p,warn:void 0,customizations:{transform:d,async iconCustomizer(e,t,r){await u?.(e,t,r),Object.keys(n).forEach(e=>{let t=n[e];e!==`raw`&&t!=null&&(r[e]=t)})}}});if(!m)throw Error(`Icon \`${i}\` not found`);let h=n.raw===`true`?`raw`:r.compiler;if(h){let n=typeof h==`string`?w[h]:await h.compiler;if(n)return n(m,e,t,r)}throw Error(`Unknown compiler: ${h}`)}async function j(e,t){let n=k(e);return n?A(n,t):null}const M=d(`unplugin-icons:options`);async function N(e){let{scale:t=1.2,defaultStyle:n=``,defaultClass:r=``,compiler:i=await P(),jsx:a=F(),customCollections:o={},iconCustomizer:s=()=>{},transform:c,autoInstall:l=!1,collectionsNodeResolvePath:d=u.cwd()}=e,f=Object.assign({autoDefine:!1,iconPrefix:`icon`},e.webComponents);return M(`compiler`,i),{scale:t,defaultStyle:n,defaultClass:r,customCollections:o,iconCustomizer:s,compiler:i,jsx:a,webComponents:f,transform:c,autoInstall:l,collectionsNodeResolvePath:d}}async function P(){return`jsx`}function F(){return`react`}var I=c((e={})=>{let t=N(e);return{name:`unplugin-icons`,enforce:`pre`,resolveId(t){if(D(t)){let n=O(t),r=n.indexOf(`?`),i=`${(r>-1?n.slice(0,r):n).replace(/\.\w+$/,``).replace(/^\//,``)}${r>-1?`?${n.slice(r+1)}`:``}`,a=k(i)?.query?.raw===`true`?`raw`:e.compiler;if(a&&typeof a!=`string`){let e=a.extension;if(e)return`${i}.${e.startsWith(`.`)?e.slice(1):e}`}else switch(a){case`astro`:return`${i}.astro`;case`jsx`:return`${i}.jsx`;case`qwik`:return`${i}.jsx`;case`marko`:return`${i}.marko`;case`svelte`:return`${i}.svelte`;case`solid`:return`${i}.tsx`}return i}return null},loadInclude(e){return D(e)},async load(e){let n=await j(e,await t)||null;if(n)return{code:n,map:{version:3,mappings:``,sources:[]}}},rollup:{api:{config:e}}}}).vite;const L=`src/assets/icons`,R=`\0coreframe:sprite-icon:`,z=`__COREFRAME_SPRITE_URL__`,B=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;function V(t={}){let n=r(t.appIconsDirectory??L);async function i(t){if(B.test(t))try{let i=await e(r(n,`${t}.svg`),`utf8`);X(i,`app/${t}`);let s=o(i);if(!s||!a(s))throw Error(`Icon \`app/${t}\` must contain a valid viewBox`);return i}catch(e){if(re(e)&&e.code===`ENOENT`)return;throw e}}return[H({options:t,loadAppIcon:i,setAppIconsDirectory(e){n=e}}),I({compiler:`jsx`,jsx:`react`,customCollections:{app:i}})]}function H({options:e,loadAppIcon:t,setAppIconsDirectory:n}){let i=new Map,a=``,o,c;return{name:`coreframe:icons`,enforce:`pre`,configResolved(t){o=t,a=Q(t.root,e.appIconsDirectory??L),n(a)},resolveId(e){let t=W(e);return t?`${R}${encodeURIComponent(JSON.stringify(t))}.js`:null},async load(e){let n=U(e);if(!n)return null;n.collection===`app`&&this.addWatchFile(r(a,`${n.icon}.svg`));let c=n.collection===`app`?await t(n.icon):await s(n.collection,n.icon,{addXmlNs:!1,autoInstall:!1,cwd:o.root,scale:1.2});if(!c)throw Error(`Icon \`${n.collection}/${n.icon}\` not found`);let l=G(c,n.collection,n.icon);return i.set(l.id,l),K(l,n.props,o.command===`serve`)},renderStart(){o.command!==`build`||i.size===0||(c=this.emitFile({type:`asset`,name:`coreframe-icons.svg`,source:q(i.values())}))},renderChunk(e){if(!e.includes(z))return null;if(!c)throw Error(`Coreframe sprite asset was not emitted before chunk rendering`);let t=J(o.base,this.getFileName(c));return e.replaceAll(z,t)},handleHotUpdate(e){if(te(a,e.file)){for(let t of e.server.moduleGraph.idToModuleMap.values())(t.id?.includes(`~icons/app/`)||t.id?.startsWith(R))&&e.server.moduleGraph.invalidateModule(t);return e.server.ws.send({type:`full-reload`}),[]}}}}function U(e){if(!e.startsWith(R)||!e.endsWith(`.js`))return null;let t=e.slice(23,-3);return JSON.parse(decodeURIComponent(t))}function W(e){let t=e.indexOf(`?`);if(t===-1)return null;let n=new URLSearchParams(e.slice(t+1));if(!n.has(`sprite`))return null;n.delete(`sprite`);let r=e.slice(0,t).replace(/^\/?(?:~icons|virtual:icons|virtual\/icons)\//,``).replace(/\.\w+$/,``).split(`/`);if(r.length!==2||r.some(e=>!B.test(e)))throw Error(`Invalid sprite icon import: ${e}`);let i=Object.create(null);return n.forEach((e,t)=>{if(t===`raw`)throw Error(`An icon import cannot use both ?sprite and ?raw`);if(t===`style`)throw Error(`Pass sprite icon styles through the component style prop`);i[Z(t)]=e}),{collection:r[0],icon:r[1],props:i}}function G(e,t,n){X(e,`${t}/${n}`);let r=o(e),s=r&&a(r);if(!r||!s)throw Error(`Icon \`${t}/${n}\` must contain a valid viewBox`);let c=`coreframe-icon-${t}-${n}-${i(`sha256`).update(`${t}/${n}\0${s.attributes.viewBox}\0${s.body}`).digest(`hex`).slice(0,12)}`,l=Y(s.body,c),u=r.attribs.preserveAspectRatio?` preserveAspectRatio="${$(r.attribs.preserveAspectRatio)}"`:``;return{id:c,markup:`<symbol id="${c}" viewBox="${$(s.attributes.viewBox)}"${u}>${l}</symbol>`,viewBox:s.attributes.viewBox,width:s.attributes.width,height:s.attributes.height}}function K(e,t,n){let r={...e.width?{width:e.width}:{},...e.height?{height:e.height}:{},...t},i=n?`\nregisterSpriteSymbol(${JSON.stringify({id:e.id,markup:e.markup})})\n`:``,a=n?`import { registerSpriteSymbol, SpriteIcon } from "@coreframe/lib/sprite-icon"`:`import { SpriteIcon } from "@coreframe/lib/sprite-icon"`,o=n?`#${e.id}`:`${z}#${e.id}`;return`${a}
13
+ import { createElement } from "react"
14
+ ${i}
15
+ const defaultProps = ${JSON.stringify(r)}
16
+
17
+ export default function CoreframeSpriteIcon(props) {
18
+ return createElement(SpriteIcon, {
19
+ ...defaultProps,
20
+ ...props,
21
+ href: "${o}",
22
+ viewBox: "${e.viewBox}",
23
+ })
24
+ }
25
+ `}function q(e){return`<svg xmlns="http://www.w3.org/2000/svg" id="coreframe-icon-sprite">${Array.from(e,e=>e.markup).join(``)}</svg>`}function J(e,t){return`${e.endsWith(`/`)?e:`${e}/`}${t}`}function Y(e,t){let n=Array.from(e.matchAll(/\bid=(['"])(.*?)\1/g),e=>e[2]),r=e;for(let[e,i]of n.entries()){let n=ne(i),a=`${t}-${e+1}`;r=r.replace(RegExp(`\\bid=(['"])${n}\\1`,`g`),`id="${a}"`).replace(RegExp(`(["#;])${n}(?=[)"']|\\.[a-z])`,`g`),`$1${a}`)}return r}function X(e,t){if(/<(?:script|foreignObject)\b/i.test(e)||/\son[a-z]+\s*=/i.test(e))throw Error(`Icon \`${t}\` contains executable SVG content`);if(/\b(?:href|xlink:href)\s*=\s*['"](?!#)/i.test(e))throw Error(`Icon \`${t}\` contains an external SVG reference`)}function Z(e){return e===`class`?`className`:e.startsWith(`aria-`)||e.startsWith(`data-`)?e:e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}function Q(e,n){return t(n)?n:r(e,n)}function te(e,r){let i=n(e,r);return i!==``&&!i.startsWith(`..`)&&!t(i)}function $(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`"`,`&quot;`)}function ne(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function re(e){return e instanceof Error&&`code`in e}export{V as t};
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from "react";
2
2
 
3
- //#region managed-dev-overlay.d.ts
3
+ //#region overlay/managed-dev-overlay.d.ts
4
4
  type ManagedDevOverlayIndicatorProps = {
5
5
  color?: string;
6
6
  paused?: boolean;
@@ -1,6 +1,6 @@
1
1
  import { Plugin } from "vite";
2
2
 
3
- //#region assets.d.ts
3
+ //#region plugins/assets.d.ts
4
4
  type CoreframeAssetsPluginOptions = {
5
5
  devMaterialize?: boolean;
6
6
  cwd?: string;
@@ -1,4 +1,4 @@
1
- //#region cloudflare.d.ts
1
+ //#region plugins/cloudflare.d.ts
2
2
  type JsonValue = string | number | boolean | null | JsonValue[] | {
3
3
  [key: string]: JsonValue;
4
4
  };
@@ -1,6 +1,6 @@
1
1
  import { Plugin } from "vite";
2
2
 
3
- //#region dashboard.d.ts
3
+ //#region plugins/dashboard.d.ts
4
4
  type CoreframeDashboardPluginOptions = {
5
5
  clientDist?: string;
6
6
  env?: NodeJS.ProcessEnv;
@@ -1,6 +1,6 @@
1
1
  import { Plugin } from "vite";
2
2
 
3
- //#region icons.d.ts
3
+ //#region plugins/icons.d.ts
4
4
  type CoreframeIconsPluginOptions = {
5
5
  /** Directory containing the flat, kebab-case `app` SVG icon collection. */appIconsDirectory?: string;
6
6
  };
@@ -0,0 +1 @@
1
+ import{t as e}from"../icons-Dn2tl9hg.js";export{e as coreframeIconsPlugin};
@@ -1,6 +1,6 @@
1
1
  import { ConfigEnv, PluginOption } from "vite";
2
2
 
3
- //#region index.d.ts
3
+ //#region plugins/index.d.ts
4
4
  type CoreframeRunner = "tauri" | "vitest" | "react-router-ssg" | null;
5
5
  type CoreframeConfigEnv = ConfigEnv & {
6
6
  runner: CoreframeRunner;
@@ -1,7 +1,7 @@
1
1
  import { startManagedDevSession } from "@coreframe/scripts/managed-dev";
2
2
  import { Plugin } from "vite";
3
3
 
4
- //#region managed-dev.d.ts
4
+ //#region plugins/managed-dev.d.ts
5
5
  type CoreframeManagedDevPluginOptions = {
6
6
  env?: NodeJS.ProcessEnv;
7
7
  startSession?: typeof startManagedDevSession;
@@ -1,6 +1,6 @@
1
1
  import { Plugin } from "vite";
2
2
 
3
- //#region markdown-frontmatter.d.ts
3
+ //#region plugins/markdown-frontmatter.d.ts
4
4
  type MarkdownFrontmatterPluginOptions = {
5
5
  contentDirectory: string;
6
6
  };
@@ -1,6 +1,6 @@
1
1
  import { Plugin } from "vite";
2
2
 
3
- //#region preset.d.ts
3
+ //#region plugins/preset.d.ts
4
4
  declare function coreframeVitePreset(): Plugin[];
5
5
  //#endregion
6
6
  export { coreframeVitePreset };
@@ -0,0 +1 @@
1
+ import{coreframeAssetsPlugin as e}from"./assets.js";import{coreframeDashboardPlugin as t}from"./dashboard.js";import{t as n}from"../icons-Dn2tl9hg.js";import{coreframeManagedDevPlugin as r}from"./managed-dev.js";function i(){return[e(),...n(),r(),t()]}export{i as coreframeVitePreset};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coreframe/vite",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/airlock-labs/coreframe.git",
@@ -12,52 +12,28 @@
12
12
  "type": "module",
13
13
  "exports": {
14
14
  ".": {
15
- "types": "./dist/index.d.ts",
16
- "default": "./dist/index.js"
17
- },
18
- "./assets": {
19
- "types": "./dist/assets.d.ts",
20
- "default": "./dist/assets.js"
21
- },
22
- "./cloudflare": {
23
- "types": "./dist/cloudflare.d.ts",
24
- "default": "./dist/cloudflare.js"
25
- },
26
- "./dashboard": {
27
- "types": "./dist/dashboard.d.ts",
28
- "default": "./dist/dashboard.js"
29
- },
30
- "./icons": {
31
- "types": "./dist/icons.d.ts",
32
- "default": "./dist/icons.js"
33
- },
34
- "./markdown-frontmatter": {
35
- "types": "./dist/markdown-frontmatter.d.ts",
36
- "default": "./dist/markdown-frontmatter.js"
37
- },
38
- "./managed-dev": {
39
- "types": "./dist/managed-dev.d.ts",
40
- "default": "./dist/managed-dev.js"
15
+ "types": "./dist/plugins/index.d.ts",
16
+ "default": "./dist/plugins/index.js"
41
17
  },
42
18
  "./managed-dev-overlay": {
43
- "types": "./dist/managed-dev-overlay.d.ts",
44
- "default": "./dist/managed-dev-overlay.js"
19
+ "types": "./dist/overlay/managed-dev-overlay.d.ts",
20
+ "default": "./dist/overlay/managed-dev-overlay.js"
45
21
  },
46
- "./preset": {
47
- "types": "./dist/preset.d.ts",
48
- "default": "./dist/preset.js"
22
+ "./*": {
23
+ "types": "./dist/plugins/*.d.ts",
24
+ "default": "./dist/plugins/*.js"
49
25
  }
50
26
  },
51
27
  "dependencies": {
52
28
  "@iconify/utils": "^3.1.4",
53
29
  "@svgr/core": "^8.1.0",
54
30
  "@svgr/plugin-jsx": "^8.1.0",
55
- "local-pkg": "^1.2.1",
56
31
  "lucide-react": "^1.24.0",
57
- "unplugin-icons": "^23.0.1",
58
- "@coreframe/dashboard": "^0.2.7",
59
- "@coreframe/lib": "^0.1.9",
60
- "@coreframe/scripts": "^0.1.29"
32
+ "obug": "^2.1.3",
33
+ "unplugin": "^2.3.11",
34
+ "@coreframe/scripts": "^0.1.31",
35
+ "@coreframe/dashboard": "^0.2.9",
36
+ "@coreframe/lib": "^0.1.11"
61
37
  },
62
38
  "devDependencies": {
63
39
  "@tsdown/css": "0.22.3",
@@ -69,6 +45,7 @@
69
45
  "react-dom": "^19.2.7",
70
46
  "tsdown": "0.22.3",
71
47
  "typescript": "6.0.3",
48
+ "unplugin-icons": "^23.0.1",
72
49
  "vite": "^8.1.0",
73
50
  "vitest": "^4.1.9"
74
51
  },
@@ -78,7 +55,7 @@
78
55
  "vite": "^8.0.0"
79
56
  },
80
57
  "scripts": {
81
- "build": "tsdown && tsdown --config tsdown.overlay.config.ts",
58
+ "build": "tsdown",
82
59
  "test": "vitest run",
83
60
  "typecheck": "tsc --noEmit -p tsconfig.json",
84
61
  "format": "oxfmt",
package/dist/icons.js DELETED
@@ -1,14 +0,0 @@
1
- import{readFile as e}from"node:fs/promises";import{isAbsolute as t,relative as n,resolve as r}from"node:path";import{createHash as i}from"node:crypto";import{buildParsedSVG as a,parseSVGContent as o}from"@iconify/utils";import{loadNodeIcon as s}from"@iconify/utils/lib/loader/node-loader";import c from"unplugin-icons/vite";const l=`src/assets/icons`,u=`\0coreframe:sprite-icon:`,d=`__COREFRAME_SPRITE_URL__`,f=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;function p(t={}){let n=r(t.appIconsDirectory??l);async function i(t){if(f.test(t))try{let i=await e(r(n,`${t}.svg`),`utf8`);S(i,`app/${t}`);let s=o(i);if(!s||!a(s))throw Error(`Icon \`app/${t}\` must contain a valid viewBox`);return i}catch(e){if(O(e)&&e.code===`ENOENT`)return;throw e}}return[m({options:t,loadAppIcon:i,setAppIconsDirectory(e){n=e}}),c({compiler:`jsx`,jsx:`react`,customCollections:{app:i}})]}function m({options:e,loadAppIcon:t,setAppIconsDirectory:n}){let i=new Map,a=``,o,c;return{name:`coreframe:icons`,enforce:`pre`,configResolved(t){o=t,a=w(t.root,e.appIconsDirectory??l),n(a)},resolveId(e){let t=g(e);return t?`${u}${encodeURIComponent(JSON.stringify(t))}.js`:null},async load(e){let n=h(e);if(!n)return null;n.collection===`app`&&this.addWatchFile(r(a,`${n.icon}.svg`));let c=n.collection===`app`?await t(n.icon):await s(n.collection,n.icon,{addXmlNs:!1,autoInstall:!1,cwd:o.root,scale:1.2});if(!c)throw Error(`Icon \`${n.collection}/${n.icon}\` not found`);let l=_(c,n.collection,n.icon);return i.set(l.id,l),v(l,n.props,o.command===`serve`)},renderStart(){o.command!==`build`||i.size===0||(c=this.emitFile({type:`asset`,name:`coreframe-icons.svg`,source:y(i.values())}))},renderChunk(e){if(!e.includes(d))return null;if(!c)throw Error(`Coreframe sprite asset was not emitted before chunk rendering`);let t=b(o.base,this.getFileName(c));return e.replaceAll(d,t)},handleHotUpdate(e){if(T(a,e.file)){for(let t of e.server.moduleGraph.idToModuleMap.values())(t.id?.includes(`~icons/app/`)||t.id?.startsWith(u))&&e.server.moduleGraph.invalidateModule(t);return e.server.ws.send({type:`full-reload`}),[]}}}}function h(e){if(!e.startsWith(u)||!e.endsWith(`.js`))return null;let t=e.slice(23,-3);return JSON.parse(decodeURIComponent(t))}function g(e){let t=e.indexOf(`?`);if(t===-1)return null;let n=new URLSearchParams(e.slice(t+1));if(!n.has(`sprite`))return null;n.delete(`sprite`);let r=e.slice(0,t).replace(/^\/?(?:~icons|virtual:icons|virtual\/icons)\//,``).replace(/\.\w+$/,``).split(`/`);if(r.length!==2||r.some(e=>!f.test(e)))throw Error(`Invalid sprite icon import: ${e}`);let i=Object.create(null);return n.forEach((e,t)=>{if(t===`raw`)throw Error(`An icon import cannot use both ?sprite and ?raw`);if(t===`style`)throw Error(`Pass sprite icon styles through the component style prop`);i[C(t)]=e}),{collection:r[0],icon:r[1],props:i}}function _(e,t,n){S(e,`${t}/${n}`);let r=o(e),s=r&&a(r);if(!r||!s)throw Error(`Icon \`${t}/${n}\` must contain a valid viewBox`);let c=`coreframe-icon-${t}-${n}-${i(`sha256`).update(`${t}/${n}\0${s.attributes.viewBox}\0${s.body}`).digest(`hex`).slice(0,12)}`,l=x(s.body,c),u=r.attribs.preserveAspectRatio?` preserveAspectRatio="${E(r.attribs.preserveAspectRatio)}"`:``;return{id:c,markup:`<symbol id="${c}" viewBox="${E(s.attributes.viewBox)}"${u}>${l}</symbol>`,viewBox:s.attributes.viewBox,width:s.attributes.width,height:s.attributes.height}}function v(e,t,n){let r={...e.width?{width:e.width}:{},...e.height?{height:e.height}:{},...t},i=n?`\nregisterSpriteSymbol(${JSON.stringify({id:e.id,markup:e.markup})})\n`:``,a=n?`import { registerSpriteSymbol, SpriteIcon } from "@coreframe/lib/sprite-icon"`:`import { SpriteIcon } from "@coreframe/lib/sprite-icon"`,o=n?`#${e.id}`:`${d}#${e.id}`;return`${a}
2
- import { createElement } from "react"
3
- ${i}
4
- const defaultProps = ${JSON.stringify(r)}
5
-
6
- export default function CoreframeSpriteIcon(props) {
7
- return createElement(SpriteIcon, {
8
- ...defaultProps,
9
- ...props,
10
- href: "${o}",
11
- viewBox: "${e.viewBox}",
12
- })
13
- }
14
- `}function y(e){return`<svg xmlns="http://www.w3.org/2000/svg" id="coreframe-icon-sprite">${Array.from(e,e=>e.markup).join(``)}</svg>`}function b(e,t){return`${e.endsWith(`/`)?e:`${e}/`}${t}`}function x(e,t){let n=Array.from(e.matchAll(/\bid=(['"])(.*?)\1/g),e=>e[2]),r=e;for(let[e,i]of n.entries()){let n=D(i),a=`${t}-${e+1}`;r=r.replace(RegExp(`\\bid=(['"])${n}\\1`,`g`),`id="${a}"`).replace(RegExp(`(["#;])${n}(?=[)"']|\\.[a-z])`,`g`),`$1${a}`)}return r}function S(e,t){if(/<(?:script|foreignObject)\b/i.test(e)||/\son[a-z]+\s*=/i.test(e))throw Error(`Icon \`${t}\` contains executable SVG content`);if(/\b(?:href|xlink:href)\s*=\s*['"](?!#)/i.test(e))throw Error(`Icon \`${t}\` contains an external SVG reference`)}function C(e){return e===`class`?`className`:e.startsWith(`aria-`)||e.startsWith(`data-`)?e:e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}function w(e,n){return t(n)?n:r(e,n)}function T(e,r){let i=n(e,r);return i!==``&&!i.startsWith(`..`)&&!t(i)}function E(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`"`,`&quot;`)}function D(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function O(e){return e instanceof Error&&`code`in e}export{p as coreframeIconsPlugin};
package/dist/preset.js DELETED
@@ -1 +0,0 @@
1
- import{coreframeAssetsPlugin as e}from"./assets.js";import{coreframeDashboardPlugin as t}from"./dashboard.js";import{coreframeIconsPlugin as n}from"./icons.js";import{coreframeManagedDevPlugin as r}from"./managed-dev.js";function i(){return[e(),...n(),r(),t()]}export{i as coreframeVitePreset};
File without changes
File without changes
File without changes
File without changes
File without changes