@cssxio/unplugin 0.4.3 → 0.4.4

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 CHANGED
@@ -69,16 +69,17 @@ const stylesheet = await compileCssxStylesheet([
69
69
 
70
70
  ## Options
71
71
 
72
- | Option | Default | What it does |
73
- | -------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
74
- | `importSource` | `@cssxio/cssx` | Module specifier that identifies source files to transform. A source file must contain this text and have a JavaScript or TypeScript extension. |
75
- | `cssFileName` | `cssx.css` | Relative CSS output path. It must be non-empty, end in `.css`, and stay within the bundler output directory. `[hash]` is replaced with a stable hash of the generated CSS. |
76
- | `sourceMap` | `true` | Whether to generate a separate CSS source map. Set it to `false` to omit both the `.css.map` file and source-map comment. |
77
- | `layer` | — | CSS layer name that wraps generated CSS. It must be a single valid layer identifier, such as `cssx`. |
78
- | `theme` | — | Inline CSSX `@theme` source used while transforming and compiling CSS. The theme is compiled into generated rules; it does not add a global stylesheet. |
79
- | `themeFile` | — | Path, relative to the current working directory, to a CSSX `@theme` file. It is reread when CSS is generated; Rollup-compatible adapters register it as a watched dependency. Do not use it with `theme`. |
80
- | `darkMode` | `media` | Activates `dark:` utilities with the system color-scheme media query (`media`), `[data-theme=dark]` (`selector`), or a `.dark` ancestor (`class`). Use the selector that matches your theme controller. |
81
- | `preflight` | `false` | Adds CSSX's opt-in browser baseline before utilities. It resets common element, link, form-control, button, and box-model defaults for utility-framework migrations. |
72
+ | Option | Default | What it does |
73
+ | ------------------ | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
74
+ | `importSource` | `@cssxio/cssx` | Module specifier that identifies source files to transform. A source file must contain this text and have a JavaScript or TypeScript extension. |
75
+ | `cssFileName` | `cssx.css` | Relative CSS output path. It must be non-empty, end in `.css`, and stay within the bundler output directory. `[hash]` is replaced with a stable hash of the generated CSS. |
76
+ | `stableClassNames` | `false` | Uses source-addressed composite selectors. Enable it for native multi-process builds, such as a Next.js App Router build that transforms server and client modules independently. |
77
+ | `sourceMap` | `true` | Whether to generate a separate CSS source map. Set it to `false` to omit both the `.css.map` file and source-map comment. |
78
+ | `layer` | — | CSS layer name that wraps generated CSS. It must be a single valid layer identifier, such as `cssx`. |
79
+ | `theme` | — | Inline CSSX `@theme` source used while transforming and compiling CSS. The theme is compiled into generated rules; it does not add a global stylesheet. |
80
+ | `themeFile` | — | Path, relative to the current working directory, to a CSSX `@theme` file. It is reread when CSS is generated; Rollup-compatible adapters register it as a watched dependency. Do not use it with `theme`. |
81
+ | `darkMode` | `media` | Activates `dark:` utilities with the system color-scheme media query (`media`), `[data-theme=dark]` (`selector`), or a `.dark` ancestor (`class`). Use the selector that matches your theme controller. |
82
+ | `preflight` | `false` | Adds CSSX's opt-in browser baseline before utilities. It resets common element, link, form-control, button, and box-model defaults for utility-framework migrations. |
82
83
 
83
84
  The universal adapter validates options when it is created. `theme` and `themeFile` cannot be used together. Invalid CSS paths and layer names fail the build before CSS is emitted.
84
85
 
@@ -90,6 +91,8 @@ already owns global element styles.
90
91
 
91
92
  Each production adapter collects CSS from the source files used by the final build. It does not create a CSS file when no used file has CSSX utilities. The default file is `cssx.css`. Set `cssFileName` to use another relative path. CSSX emits one composite class in markup for each static style composition while sharing declarations across composite selectors in the stylesheet.
92
93
 
94
+ When `stableClassNames: true` is used with webpack or Rspack, CSSX scans the project source tree before emitting its public stylesheet. This ensures one stylesheet includes server and client utility selectors even when the framework runs those transformations in separate processes.
95
+
93
96
  The Rollup-compatible adapters retain transformed module metadata until `generateBundle`, then emit CSS and its map as build assets. The webpack and Rspack adapters retain metadata on native modules and emit assets at the additions stage of `processAssets`. The direct esbuild adapter enables the metafile, removes data for source files absent from it, and generates CSS in `onEnd`.
94
97
 
95
98
  When `sourceMap` is enabled and source locations are available, generated CSS has a separate `.css.map` file and a source-map comment. Each mapping points to the source module location of the static utility string that created the rule. `transformCssxModule` can accept and return JavaScript source maps for build tools that provide a compatible input map.
@@ -0,0 +1,93 @@
1
+ import{createClassNameAllocator as te}from"@cssxio/compiler";import{createUnplugin as Ve}from"unplugin";import{Buffer as Xe}from"buffer";import{mkdir as We,unlink as ze,writeFile as Ge}from"fs/promises";import{basename as qe,dirname as Je,relative as Ke,resolve as U,sep as Ze}from"path";import{compileUtilities as ne,createSelectorAliases as re}from"@cssxio/compiler";import{basename as oe}from"path";var _='*,::before,::after,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}button,select{text-transform:none}button,input:where([type="button"],[type="reset"],[type="submit"]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit}textarea{resize:vertical}::placeholder{opacity:1}button,[role="button"]{cursor:pointer}:disabled{cursor:default}[hidden]:where(:not([hidden="until-found"])){display:none!important}';async function S(e,t,s,o=!0,n,a=!1){let m=Object.create(null),r=Object.create(null),g=new Set,u=!0,y=new Map;for(let c of[...e].sort((d,h)=>d.id.localeCompare(h.id))){for(let[d,h]of Object.entries(c.candidates))if(d in m||(m[d]=h),c.id&&!y.has(d)){let k=c.origins?.[d];y.set(d,{id:c.id,line:k?.line??0,column:k?.column??0})}for(let[d,h]of Object.entries(c.composites??{})){let k=r[d];if(k&&k.join(" ")!==h.join(" "))throw new Error(`CSSX composite class collision for "${d}".`);r[d]=h}c.atomicClasses===void 0&&(u=!1);for(let d of c.atomicClasses??[])g.add(d)}let x=Object.keys(m).sort(),l=a?_:"";if(x.length===0)return{css:l&&s?`@layer ${s}{${l}}`:l};let i=await ne(x,c=>m[c],t,re(r),u?g:void 0,{darkMode:n}),p=s?`@layer ${s}{`:"",C=`${p}${l}${i.css}${p?"}":""}`,f=o?ae(`${p}${l}${i.prefixCss}`,i.entries,y):void 0;return{css:C,...f?{map:f}:{}}}function M(e,t){return e.map?`${e.css}
2
+ /*# sourceMappingURL=${oe(t)}.map */`:e.css}function O(e,t){return JSON.stringify({...e,file:t})}function ae(e,t,s){let o=[...new Set(t.map(r=>s.get(r.candidate)?.id).filter(r=>!!r))].sort();if(o.length===0)return;let n=new Map(o.map((r,g)=>[r,g])),a=[],m=V({line:0,column:0},e);for(let r of t){let g=s.get(r.candidate);g&&a.push({...m,source:n.get(g.id),originalLine:g.line,originalColumn:g.column}),m=V(m,r.css)}return{version:3,sources:o,names:[],mappings:ie(a)}}function V(e,t){let s=t.split(`
3
+ `);return{line:e.line+s.length-1,column:s.at(-1).length+e.column*+(s.length===1)}}function ie(e){let t=Array.from({length:Math.max(0,...e.map(r=>r.line))+1},()=>[]),s=0,o=0,n=0,a=0,m=0;for(let r of e)m*=+(r.line===a),a=r.line,t[r.line]?.push(`${I(r.column-m)}${I(r.source-s)}${I(r.originalLine-o)}${I(r.originalColumn-n)}`),m=r.column,s=r.source,o=r.originalLine,n=r.originalColumn;return t.map(r=>r.join(",")).join(";")}var le="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function I(e){let t="",s=e<0?-e<<1|1:e<<1;do{let o=s&31;s>>>=5,s&&(o|=32),t+=le[o]}while(s);return t}import{readFile as de}from"fs/promises";import{dirname as ce,isAbsolute as ue,normalize as me,resolve as R,sep as X}from"path";async function N(e){return e.themeFile===void 0?e.theme:de(R(process.cwd(),e.themeFile),"utf8")}function F(e){if(e.theme!==void 0&&e.themeFile!==void 0)throw new Error("CSSX accepts either theme or themeFile, not both.");if(e.layer!==void 0&&!/^[A-Za-z_-][A-Za-z0-9_-]*$/.test(e.layer))throw new Error("CSSX layer must be a valid CSS layer identifier.");if(e.sourceMap!==void 0&&typeof e.sourceMap!="boolean")throw new Error("CSSX sourceMap must be a boolean.");if(e.darkMode!==void 0&&e.darkMode!=="media"&&e.darkMode!=="selector"&&e.darkMode!=="class")throw new Error('CSSX darkMode must be "media", "selector", or "class".');if(e.preflight!==void 0&&typeof e.preflight!="boolean")throw new Error("CSSX preflight must be a boolean.");if(e.reusabilityBudget!==void 0&&e.reusabilityBudget!=="auto"&&(!Number.isFinite(e.reusabilityBudget)||e.reusabilityBudget<0||e.reusabilityBudget>100))throw new Error('CSSX reusabilityBudget must be "auto" or a number from 0 through 100.');L(e.cssFileName??"cssx.css")}function E(e){let t=2166136261;for(let s=0;s<e.length;s++)t^=e.charCodeAt(s),t=Math.imul(t,16777619);return(t>>>0).toString(36)}function v(e,t){return L(e).replaceAll("[hash]",E(t))}function j(e,t){return`${e&&e!=="/"?`/${e.replace(/^\/+|\/+$/g,"")}`:""}/${L(t).replaceAll(X,"/")}`}function $(e,t,s){return t.outdir?R(e,t.outdir,s):t.outfile?R(ce(R(e,t.outfile)),s):R(e,s)}function b(e){return e.split("?",1).join("")}function L(e){if(!e||ue(e))throw new Error("cssFileName must be a non-empty relative path.");let t=me(e);if(t===".."||t.startsWith(`..${X}`))throw new Error("cssFileName must not escape the bundler output directory.");if(!t.endsWith(".css"))throw new Error("cssFileName must end in .css.");return t}function W(e,t,s){let o=e.getNativeBuildContext?.();if(!o||o.framework!=="webpack"&&o.framework!=="rspack")return;let n=o.loaderContext?._module;if(!n)return;let a=n.buildInfo??(n.buildInfo={});a[s]=t}function B(e,t,s,o,n,a,m,r,g=!1,u){let y=e.name??e.options?.name;y==="server"||y==="edge-server"||e.hooks.thisCompilation.tap("@cssxio/unplugin",x=>{x.hooks.processAssets.tapPromise({name:"@cssxio/unplugin",stage:e.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},async()=>{let l=u?await u():pe([...x.modules].map(C=>fe(C,a)).filter(C=>C!==void 0),m?.values()??[]),i=await S(l,await s(),o,n,r,g);if(!i.css)return;let p=v(t,i.css);if(x.getAsset?.(p))throw new Error(`CSSX CSS asset collision at "${p}".`);if(x.emitAsset(p,new e.webpack.sources.RawSource(M(i,p))),i.map){let C=`${p}.map`;if(x.getAsset?.(C))throw new Error(`CSSX CSS map asset collision at "${C}".`);x.emitAsset(C,new e.webpack.sources.RawSource(O(i.map,p)))}})})}function pe(e,t){let s=new Map,o=[];for(let n of t)n.id?s.set(n.id,n):o.push(n);for(let n of e)n.id?s.set(n.id,n):o.push(n);return[...s.values(),...o]}function fe(e,t){let s=e.buildInfo?.[t];if(!s||typeof s!="object")return;let{id:o,candidates:n,composites:a,atomicClasses:m,origins:r}=s;return{id:typeof o=="string"?o:"",candidates:n&&typeof n=="object"?n:{},composites:a&&typeof a=="object"?a:{},...Array.isArray(m)?{atomicClasses:m}:{},origins:r&&typeof r=="object"?r:{}}}import{readFile as Ne,readdir as Oe}from"fs/promises";import{join as Re,relative as Ae,sep as Pe}from"path";import{createClassNameAllocator as Ie}from"@cssxio/compiler";import{transformAsync as ge}from"@babel/core";import ye from"@cssxio/babel-plugin";import{compileUtilities as he,createClassNameAllocator as Ce,createSelectorAliases as xe}from"@cssxio/compiler";var be=new Set([".js",".jsx",".ts",".tsx",".cjs",".cjsx",".cts",".ctsx",".mjs",".mjsx",".mts",".mtsx",".astro"]);async function w(e,t,s={},o){F(s);let n=s.importSource??"@cssxio/cssx",a=t.split("?",1).join("");if(!be.has(a.slice(a.lastIndexOf(".")))||!e.includes(n))return null;if(a.endsWith(".astro"))return Se(e,t,s);let m=await N(s),r=await ge(e,{babelrc:!1,configFile:!1,filename:a,parserOpts:{plugins:["jsx","typescript"]},plugins:[[ye,{importSource:n,classNameAllocator:s.classNameAllocator,theme:m,reusabilityBudget:s.reusabilityBudget,stableClassNames:s.stableClassNames,stableClassNameFileName:s.stableClassNameFileName,darkMode:s.darkMode}]],sourceMaps:!0,...o?{inputSourceMap:o}:{}}),g=r.metadata,{candidates:u,origins:y,composites:x,atomicClasses:l,cssOnlySignature:i}=g.cssx,p=Object.keys(u),C=p.length===0?"":(await he(p,f=>u[f],m,xe(x),new Set(l),{darkMode:s.darkMode})).css;return{code:r.code,rules:C?[ve(Me(C,s.layer))]:[],candidates:u,composites:x,atomicClasses:l,origins:y,cssOnlySignature:i,map:r.map}}async function Se(e,t,s){let o=we(e);if(o.length===0)return null;let n=s.classNameAllocator??Ce(),a=s.importSource??"@cssxio/cssx",m={},r={},g=[],u=e;for(let y of[...o].reverse()){let x=await w(`import { sx } from ${JSON.stringify(a)};
4
+ const style = ${y.code};`,`${t}.ts`,{...s,classNameAllocator:n}),l=ke(x.code);u=`${u.slice(0,y.start)}${l}${u.slice(y.end)}`,Object.assign(m,x.candidates),Object.assign(r,x.composites),g.push(...x.rules)}return{code:u,rules:g,candidates:m,composites:r,atomicClasses:[],origins:{},cssOnlySignature:u}}function we(e){let t=[],s=/\bsx\s*\(/g;for(let o of e.matchAll(s)){let n=o.index,a=e.indexOf("(",n),m=0,r="";for(let g=a;g<e.length;g+=1){let u=e[g];if(r){u==="\\"?g+=1:u===r&&(r="");continue}if(u==='"'||u==="'"||u==="`")r=u;else if(u==="(")m+=1;else if(u===")"&&--m===0){t.push({start:n,end:g+1,code:e.slice(n,g+1)}),s.lastIndex=g+1;break}}}return t}function ke(e){let t="const style = ",s=e.indexOf(t)+t.length,o=e.indexOf(";",s);return e.slice(s,o)}function z(e,t){if(!e||typeof e!="object")return;let s=e.getCombinedSourcemap;if(typeof s!="function")return;let o=s.call(e);if(!o||typeof o!="object")return;let n=o;if(!(n.version!==3||!Array.isArray(n.sources)||typeof n.mappings!="string"))return{version:n.version,sources:[...n.sources],names:[...n.names??[]],mappings:n.mappings,file:n.file??t.split("?",1).join(""),...n.sourceRoot?{sourceRoot:n.sourceRoot}:{},...n.sourcesContent?{sourcesContent:[...n.sourcesContent]}:{}}}function ve(e){return{className:`cssx-${E(e)}`,css:e}}function Me(e,t){return e&&t?`@layer ${t}{${e}}`:e}var Fe=new Set([".js",".jsx",".ts",".tsx",".cjs",".cjsx",".cts",".ctsx",".mjs",".mjsx",".mts",".mtsx",".astro"]),je=new Set([".git",".next",".turbo","node_modules"]);async function D(e,t){let s=await $e(e),o=Ie(t.className),n=[];for(let a of s){let m=await Ne(a,"utf8"),r=await w(m,a,{...t,classNameAllocator:o,stableClassNames:!0,stableClassNameFileName:Ae(e,a).replaceAll(Pe,"/")});r&&n.push({id:a,candidates:r.candidates,composites:r.composites,atomicClasses:r.atomicClasses,origins:r.origins})}return n}async function $e(e){let t=[],s=[e];for(;s.length>0;){let o=s.pop();for(let n of await Oe(o,{withFileTypes:!0})){let a=Re(o,n.name);if(n.isDirectory()){je.has(n.name)||s.push(a);continue}n.isFile()&&Fe.has(a.slice(a.lastIndexOf(".")))&&t.push(a)}}return t.sort()}function T(e,t,s=Date.now()){e.ws.send({type:"update",updates:[{type:"css-update",path:t,acceptedPath:t,timestamp:s}]})}import{Buffer as G}from"buffer";import{mkdir as Ee,readFile as Le,realpath as Be,unlink as q,writeFile as J}from"fs/promises";import{basename as K,dirname as De,resolve as Q}from"path";import{createClassNameAllocator as Te}from"@cssxio/compiler";var Ue=/\.[cm]?[jt]sx?$/;function Y(e={}){let t=new Map,s=Te(),o,n;return{name:"@cssxio/unplugin",setup(a){let m=a.initialOptions.absWorkingDir??process.cwd();a.initialOptions.metafile=!0,a.onLoad({filter:Ue},async({path:r})=>{let g=await Le(r,"utf8"),u=await w(g,r,{...e,classNameAllocator:s});if(!u)return;let y=await Z(r);return t.set(y,{id:y,candidates:u.candidates,composites:u.composites,atomicClasses:u.atomicClasses,origins:u.origins}),{contents:u.code,loader:_e(r)}}),a.onEnd(async r=>{if(!r.metafile)return;let g=new Set(await Promise.all(Object.keys(r.metafile.inputs).map(p=>Z(Q(m,p)))));for(let p of t.keys())g.has(p)||t.delete(p);let u=await He([...t],e),y=$(m,a.initialOptions,v(e.cssFileName??"cssx.css",u.css));if(!u.css){o&&await q(o).catch(()=>{}),n&&await q(n).catch(()=>{}),o=void 0,n=void 0;return}let x=u.map?`${u.css}
5
+ /*# sourceMappingURL=${K(y)}.map */`:u.css,l=`${y}.map`,i=u.map?JSON.stringify({...u.map,file:K(y)}):void 0;if(a.initialOptions.write===!1){if(!r.outputFiles)return;if(r.outputFiles.some(p=>p.path===y))throw new Error(`CSSX CSS asset collision at "${y}".`);r.outputFiles.push({path:y,contents:G.from(x),hash:"",text:x}),i&&r.outputFiles.push({path:l,contents:G.from(i),hash:"",text:i});return}await Ee(De(y),{recursive:!0}),await J(y,x),i&&await J(l,i),o=y,n=i?l:void 0})}}}async function He(e,t){let s=await N(t);return S(e.map(([,o])=>o),s,t.layer,t.sourceMap??!0,t.darkMode,t.preflight)}function _e(e){return/\.tsx?$/.test(e)?"ts":"js"}async function Z(e){return Be(e).catch(()=>Q(e))}var A="@cssxio/unplugin/rules",Qe=/\.(?:[cm]?[jt]sx?|astro)(?:\?.*)?$/,ee=new Map;function Ye(e,t){return`${e}\0${JSON.stringify(t)}`}function H(e,t){let s=Ye(e,t),o=ee.get(s);return o||(o={classNameAllocator:te(),transformedDataById:new Map},ee.set(s,o)),o}function et(e){let t=e.getNativeBuildContext?.();return t&&(t.framework==="webpack"||t.framework==="rspack")?t.loaderContext?.rootContext??process.cwd():void 0}function tt(e,t,s){let o=new Set;for(let n of t)e.moduleGraph?.invalidateModule(n,o,s,!0);for(let n of o){if(!n.id)continue;let a=e.runner?.evaluatedModules?.getModuleById(n.id);a&&e.runner?.evaluatedModules?.invalidateModule(a)}}function st(e){return!e||typeof e!="object"?{id:"",rules:[],candidates:{},composites:{},origins:{},cssOnlySignature:""}:nt(e[A])}function nt(e){if(!e||typeof e!="object")return{id:"",rules:[],candidates:{},composites:{},origins:{},cssOnlySignature:""};let{id:t,rules:s,candidates:o,composites:n,atomicClasses:a,origins:m,cssOnlySignature:r}=e;return{id:typeof t=="string"?t:"",rules:Array.isArray(s)?s:[],candidates:o&&typeof o=="object"?o:{},composites:n&&typeof n=="object"?n:{},...Array.isArray(a)?{atomicClasses:a}:{},origins:m&&typeof m=="object"?m:{},cssOnlySignature:typeof r=="string"?r:""}}var rt=(e={},t)=>{F(e);let s=e.cssFileName??"cssx.css",o=e.sourceMap??!0,n=new Map,a=te(),m=new Map,r,g=process.cwd(),u,y=()=>N(e),x=async function(l,i){let p=new Set(Object.values(i).flatMap(d=>d.type==="chunk"?Object.keys(d.modules??{}):[]).map(b));if(t.framework!=="vite")for(let d of n.keys())p.has(d)||n.delete(d);let C=t.framework==="vite"?[...n.values()]:[...p].map(d=>{let h=st(this.getModuleInfo(d)?.meta);return Object.keys(h.candidates).length>0?h:n.get(d)??h}),f=await S(C,await y(),e.layer,o,e.darkMode,e.preflight);if(!f.css)return;let c=v(s,f.css);if(Object.hasOwn(i,c))throw new Error(`CSSX CSS asset collision at "${c}".`);if(this.emitFile({type:"asset",fileName:c,source:M(f,c)}),f.map){let d=`${c}.map`;if(Object.hasOwn(i,d))throw new Error(`CSSX CSS map asset collision at "${d}".`);this.emitFile({type:"asset",fileName:d,source:O(f.map,c)})}};return{name:"@cssxio/unplugin",enforce:"pre",transform:{filter:{id:Qe},async handler(l,i){e.themeFile&&this.addWatchFile?.(U(process.cwd(),e.themeFile));let p=et(this),C=p?H(p,e):void 0,f=await w(l,i,{...e,classNameAllocator:C?.classNameAllocator??a,...e.stableClassNames?{stableClassNameFileName:Ke(p??process.cwd(),b(i)).replaceAll(Ze,"/")}:{}},z(this,i)),c={id:b(i),rules:f?.rules??[],candidates:f?.candidates??{},composites:f?.composites??{},atomicClasses:f?.atomicClasses??[],origins:f?.origins??{},cssOnlySignature:f?.cssOnlySignature??""};W(this,c,A);let d=b(i);(f||d===i)&&(n.set(d,c),m.set(U(g,d),c),C?.transformedDataById.set(d,c)),t.framework==="vite"&&u&&T(u,j("/",s));let h=f?.code??l;return{code:(t.framework==="webpack"||t.framework==="rspack")&&f?`${h}
6
+ ${ot(s)}`:h,meta:{[A]:c},...f?.map?{map:f.map}:{}}}},watchChange(l,i){i.event==="delete"&&n.delete(b(l))},rollup:{generateBundle:x},vite:{generateBundle:x,configureServer(l){u=l;let i=j(l.config.base,s),p=j("/",s);l.watcher?.on("unlink",C=>{n.delete(b(C)),T(l,p)}),l.middlewares.use((C,f,c)=>{let d=C.url?.split("?",1)[0];if(d!==i&&(d!==`${i}.map`||!o))return c();y().then(h=>S([...n.values()],h,e.layer,o,e.darkMode,e.preflight)).then(h=>{if(d===`${i}.map`){f.setHeader("Content-Type","application/json; charset=utf-8"),f.setHeader("Cache-Control","no-store"),f.end(h.map?O(h.map,s):"");return}f.setHeader("Content-Type","text/css; charset=utf-8"),f.setHeader("Cache-Control","no-store"),f.end(M(h,s))}).catch(h=>{f.setHeader("Content-Type","text/plain; charset=utf-8"),f.end(h instanceof Error?h.message:"Unable to compile CSSX development stylesheet.")})})},hotUpdate:{order:"pre",async handler(l){let i=this.environment;if(!i||i.name==="client")return;let p=l.modules.filter(c=>{let d=n.get(b(c.id??""));return!!(d&&d.cssOnlySignature&&d.atomicClasses?.length===0)});if(p.length===0)return;let C=new Map(p.map(c=>[c,n.get(b(c.id)).cssOnlySignature]));for(let c of p)c.url&&await i.transformRequest(c.url);if(p.every(c=>{let d=n.get(b(c.id));return!!(d&&d.atomicClasses.length===0&&d.cssOnlySignature===C.get(c))}))return tt(i,p,l.timestamp),l.modules.filter(c=>!p.includes(c))}}},...t.framework==="webpack"?{webpack(l){let i=H(l.context,e);B(l,s,y,e.layer,o,A,i.transformedDataById,e.darkMode,e.preflight,e.stableClassNames?()=>D(l.context,e):void 0)}}:{},...t.framework==="rspack"?{rspack(l){let i=H(l.context,e);B(l,s,y,e.layer,o,A,i.transformedDataById,e.darkMode,e.preflight,e.stableClassNames?()=>D(l.context,e):void 0)}}:{},...t.framework==="esbuild"?{esbuild:{config(l){l.metafile=!0},setup(l){let i=l.initialOptions.absWorkingDir??process.cwd();g=i,l.onEnd(async p=>{if(!p.metafile)return;let C=new Set(Object.keys(p.metafile.inputs).map(h=>U(i,h)));for(let h of m.keys())C.has(h)||m.delete(h);let f=await S([...m.values()],await y(),e.layer,o,e.darkMode,e.preflight),c=$(i,l.initialOptions,v(s,f.css));if(!f.css){r&&await ze(r).catch(()=>{}),r=void 0;return}let d=M(f,qe(c));if(l.initialOptions.write===!1){let h=p.outputFiles;if(!h)return;let k={path:c,contents:Xe.from(d),hash:"",text:d};if(h.findIndex(se=>se.path===c)!==-1)throw new Error(`CSSX CSS asset collision at "${c}".`);h.push(k);return}await We(Je(c),{recursive:!0}),await Ge(c,d),r=c})}}}:{}}},P=Ve(rt);function ot(e){return`if (typeof document !== "undefined" && typeof module !== "undefined" && module.hot) {
7
+ const key = "__cssxStylesheetHmr";
8
+ const state = globalThis[key] || (globalThis[key] = { revision: 0, staged: [], replacements: [] });
9
+ const stylesheetLink = [...document.querySelectorAll('link[rel="stylesheet"]')].find((link) =>
10
+ new URL(link.href, document.baseURI).pathname.endsWith(${JSON.stringify(`/${e}`)}),
11
+ );
12
+ const nextLink = stylesheetLink && (() => {
13
+ const path = new URL(stylesheetLink.href, document.baseURI).pathname;
14
+ return path.includes("/_next/");
15
+ })();
16
+ if (!state.installed) {
17
+ state.installed = true;
18
+ state.stage = () => {
19
+ const revision = ++state.revision;
20
+ state.staged = [];
21
+ state.replacements = [];
22
+ const links = [...document.querySelectorAll('link[rel="stylesheet"]')].filter((link) =>
23
+ new URL(link.href, document.baseURI).pathname.endsWith(${JSON.stringify(`/${e}`)}),
24
+ );
25
+ return Promise.all(
26
+ links.map(
27
+ (link) =>
28
+ new Promise((resolve) => {
29
+ const replacement = link.cloneNode();
30
+ const url = new URL(link.href, document.baseURI);
31
+ url.searchParams.set("cssx", String(revision));
32
+ replacement.href = url.href;
33
+ const finish = (loaded) => {
34
+ replacement.removeEventListener("load", onLoad);
35
+ replacement.removeEventListener("error", onError);
36
+ if (loaded) {
37
+ state.staged.push(link);
38
+ if (state.removeOnLoad) link.remove();
39
+ }
40
+ else replacement.remove();
41
+ resolve();
42
+ };
43
+ const onLoad = () => finish(true);
44
+ const onError = () => finish(false);
45
+ replacement.addEventListener("load", onLoad);
46
+ replacement.addEventListener("error", onError);
47
+ state.replacements.push(replacement);
48
+ link.after(replacement);
49
+ }),
50
+ ),
51
+ );
52
+ };
53
+ module.hot.addStatusHandler((status) => {
54
+ if (status === "prepare" || status === "dispose") {
55
+ return state.stage();
56
+ }
57
+ if (status === "idle") {
58
+ for (const link of state.staged) link.remove();
59
+ state.staged = [];
60
+ state.replacements = [];
61
+ }
62
+ if (status === "abort" || status === "fail") {
63
+ for (const replacement of state.replacements) replacement.remove();
64
+ state.staged = [];
65
+ state.replacements = [];
66
+ }
67
+ });
68
+ if (nextLink) module.hot.accept(() => void state.stage());
69
+ for (const updateKey of Object.getOwnPropertyNames(globalThis).filter((name) => name.startsWith("webpackHotUpdate"))) {
70
+ const update = globalThis[updateKey];
71
+ if (typeof update !== "function") continue;
72
+ globalThis[updateKey] = function (...args) {
73
+ void state.stage();
74
+ return update.apply(this, args);
75
+ };
76
+ }
77
+ if (stylesheetLink) {
78
+ state.removeOnLoad = Boolean(nextLink);
79
+ const refresh = async () => {
80
+ try {
81
+ const url = new URL(stylesheetLink.href, document.baseURI);
82
+ url.searchParams.set("cssx-probe", String(Date.now()));
83
+ const css = await fetch(url.href, { cache: "no-store" }).then((response) => response.text());
84
+ if (state.css && state.css !== css) void state.stage();
85
+ state.css = css;
86
+ } catch {
87
+ }
88
+ };
89
+ void refresh();
90
+ state.poll = setInterval(() => void refresh(), 500);
91
+ }
92
+ }
93
+ }`}var Gt=P.vite,qt=P.rollup,Jt=P.webpack,Kt=P.rspack,Zt=P;export{S as a,w as b,rt as c,P as d,Gt as e,qt as f,Jt as g,Kt as h,Zt as i,Y as j};
package/dist/esbuild.cjs CHANGED
@@ -1,8 +1,8 @@
1
- "use strict";var ue=Object.create;var j=Object.defineProperty;var me=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var fe=Object.getPrototypeOf,ge=Object.prototype.hasOwnProperty;var ye=(e,t)=>{for(var n in t)j(e,n,{get:t[n],enumerable:!0})},J=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of pe(t))!ge.call(e,s)&&s!==n&&j(e,s,{get:()=>t[s],enumerable:!(r=me(t,s))||r.enumerable});return e};var he=(e,t,n)=>(n=e!=null?ue(fe(e)):{},J(t||!e||!e.__esModule?j(n,"default",{value:e,enumerable:!0}):n,e)),Ce=e=>J(j({},"__esModule",{value:!0}),e);var He={};ye(He,{default:()=>de});module.exports=Ce(He);var q=require("buffer"),w=require("fs/promises"),M=require("path"),le=require("@cssxio/compiler");var G=require("@cssxio/compiler"),oe=require("unplugin"),ae=require("buffer"),$=require("fs/promises"),v=require("path");var B=require("@cssxio/compiler"),Q=require("path");var K='*,::before,::after,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}button,select{text-transform:none}button,input:where([type="button"],[type="reset"],[type="submit"]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit}textarea{resize:vertical}::placeholder{opacity:1}button,[role="button"]{cursor:pointer}:disabled{cursor:default}[hidden]:where(:not([hidden="until-found"])){display:none!important}';async function S(e,t,n,r=!0,s,u=!1){let p=Object.create(null),o=Object.create(null),y=new Set,c=!0,g=new Map;for(let d of[...e].sort((l,h)=>l.id.localeCompare(h.id))){for(let[l,h]of Object.entries(d.candidates))if(l in p||(p[l]=h),d.id&&!g.has(l)){let R=d.origins?.[l];g.set(l,{id:d.id,line:R?.line??0,column:R?.column??0})}for(let[l,h]of Object.entries(d.composites??{})){let R=o[l];if(R&&R.join(" ")!==h.join(" "))throw new Error(`CSSX composite class collision for "${l}".`);o[l]=h}d.atomicClasses===void 0&&(c=!1);for(let l of d.atomicClasses??[])y.add(l)}let x=Object.keys(p).sort(),a=u?K:"";if(x.length===0)return{css:a&&n?`@layer ${n}{${a}}`:a};let i=await(0,B.compileUtilities)(x,d=>p[d],t,(0,B.createSelectorAliases)(o),c?y:void 0,{darkMode:s}),m=n?`@layer ${n}{`:"",C=`${m}${a}${i.css}${m?"}":""}`,f=r?xe(`${m}${a}${i.prefixCss}`,i.entries,g):void 0;return{css:C,...f?{map:f}:{}}}function N(e,t){return e.map?`${e.css}
2
- /*# sourceMappingURL=${(0,Q.basename)(t)}.map */`:e.css}function L(e,t){return JSON.stringify({...e,file:t})}function xe(e,t,n){let r=[...new Set(t.map(o=>n.get(o.candidate)?.id).filter(o=>!!o))].sort();if(r.length===0)return;let s=new Map(r.map((o,y)=>[o,y])),u=[],p=Z({line:0,column:0},e);for(let o of t){let y=n.get(o.candidate);y&&u.push({...p,source:s.get(y.id),originalLine:y.line,originalColumn:y.column}),p=Z(p,o.css)}return{version:3,sources:r,names:[],mappings:be(u)}}function Z(e,t){let n=t.split(`
3
- `);return{line:e.line+n.length-1,column:n.at(-1).length+e.column*+(n.length===1)}}function be(e){let t=Array.from({length:Math.max(0,...e.map(o=>o.line))+1},()=>[]),n=0,r=0,s=0,u=0,p=0;for(let o of e)p*=+(o.line===u),u=o.line,t[o.line]?.push(`${E(o.column-p)}${E(o.source-n)}${E(o.originalLine-r)}${E(o.originalColumn-s)}`),p=o.column,n=o.source,r=o.originalLine,s=o.originalColumn;return t.map(o=>o.join(",")).join(";")}var we="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function E(e){let t="",n=e<0?-e<<1|1:e<<1;do{let r=n&31;n>>>=5,n&&(r|=32),t+=we[r]}while(n);return t}var Y=require("fs/promises"),b=require("path");async function A(e){return e.themeFile===void 0?e.theme:(0,Y.readFile)((0,b.resolve)(process.cwd(),e.themeFile),"utf8")}function D(e){if(e.theme!==void 0&&e.themeFile!==void 0)throw new Error("CSSX accepts either theme or themeFile, not both.");if(e.layer!==void 0&&!/^[A-Za-z_-][A-Za-z0-9_-]*$/.test(e.layer))throw new Error("CSSX layer must be a valid CSS layer identifier.");if(e.sourceMap!==void 0&&typeof e.sourceMap!="boolean")throw new Error("CSSX sourceMap must be a boolean.");if(e.darkMode!==void 0&&e.darkMode!=="media"&&e.darkMode!=="selector"&&e.darkMode!=="class")throw new Error('CSSX darkMode must be "media", "selector", or "class".');if(e.preflight!==void 0&&typeof e.preflight!="boolean")throw new Error("CSSX preflight must be a boolean.");if(e.reusabilityBudget!==void 0&&e.reusabilityBudget!=="auto"&&(!Number.isFinite(e.reusabilityBudget)||e.reusabilityBudget<0||e.reusabilityBudget>100))throw new Error('CSSX reusabilityBudget must be "auto" or a number from 0 through 100.');_(e.cssFileName??"cssx.css")}function V(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)}function O(e,t){return _(e).replaceAll("[hash]",V(t))}function T(e,t){return`${e&&e!=="/"?`/${e.replace(/^\/+|\/+$/g,"")}`:""}/${_(t).replaceAll(b.sep,"/")}`}function U(e,t,n){return t.outdir?(0,b.resolve)(e,t.outdir,n):t.outfile?(0,b.resolve)((0,b.dirname)((0,b.resolve)(e,t.outfile)),n):(0,b.resolve)(e,n)}function k(e){return e.split("?",1).join("")}function _(e){if(!e||(0,b.isAbsolute)(e))throw new Error("cssFileName must be a non-empty relative path.");let t=(0,b.normalize)(e);if(t===".."||t.startsWith(`..${b.sep}`))throw new Error("cssFileName must not escape the bundler output directory.");if(!t.endsWith(".css"))throw new Error("cssFileName must end in .css.");return t}function ee(e,t,n){let r=e.getNativeBuildContext?.();if(!r||r.framework!=="webpack"&&r.framework!=="rspack")return;let s=r.loaderContext?._module;if(!s)return;let u=s.buildInfo??(s.buildInfo={});u[n]=t}function W(e,t,n,r,s,u,p,o,y=!1){let c=e.name??e.options?.name;c==="server"||c==="edge-server"||e.hooks.thisCompilation.tap("@cssxio/unplugin",g=>{g.hooks.processAssets.tapPromise({name:"@cssxio/unplugin",stage:e.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},async()=>{let x=[...g.modules].map(C=>ke(C,u)).filter(C=>C!==void 0),a=Se(x,p?.values()??[]),i=await S(a,await n(),r,s,o,y);if(!i.css)return;let m=O(t,i.css);if(g.getAsset?.(m))throw new Error(`CSSX CSS asset collision at "${m}".`);if(g.emitAsset(m,new e.webpack.sources.RawSource(N(i,m))),i.map){let C=`${m}.map`;if(g.getAsset?.(C))throw new Error(`CSSX CSS map asset collision at "${C}".`);g.emitAsset(C,new e.webpack.sources.RawSource(L(i.map,m)))}})})}function Se(e,t){let n=new Map,r=[];for(let s of t)s.id?n.set(s.id,s):r.push(s);for(let s of e)s.id?n.set(s.id,s):r.push(s);return[...n.values(),...r]}function ke(e,t){let n=e.buildInfo?.[t];if(!n||typeof n!="object")return;let{id:r,candidates:s,composites:u,atomicClasses:p,origins:o}=n;return{id:typeof r=="string"?r:"",candidates:s&&typeof s=="object"?s:{},composites:u&&typeof u=="object"?u:{},...Array.isArray(p)?{atomicClasses:p}:{},origins:o&&typeof o=="object"?o:{}}}var te=require("@babel/core"),ne=he(require("@cssxio/babel-plugin"),1),P=require("@cssxio/compiler");var ve=new Set([".js",".jsx",".ts",".tsx",".cjs",".cjsx",".cts",".ctsx",".mjs",".mjsx",".mts",".mtsx",".astro"]);async function I(e,t,n={},r){D(n);let s=n.importSource??"@cssxio/cssx",u=t.split("?",1).join("");if(!ve.has(u.slice(u.lastIndexOf(".")))||!e.includes(s))return null;if(u.endsWith(".astro"))return Me(e,t,n);let p=await A(n),o=await(0,te.transformAsync)(e,{babelrc:!1,configFile:!1,filename:u,parserOpts:{plugins:["jsx","typescript"]},plugins:[[ne.default,{importSource:s,classNameAllocator:n.classNameAllocator,theme:p,reusabilityBudget:n.reusabilityBudget,stableClassNames:n.stableClassNames,darkMode:n.darkMode}]],sourceMaps:!0,...r?{inputSourceMap:r}:{}}),y=o.metadata,{candidates:c,origins:g,composites:x,atomicClasses:a,cssOnlySignature:i}=y.cssx,m=Object.keys(c),C=m.length===0?"":(await(0,P.compileUtilities)(m,f=>c[f],p,(0,P.createSelectorAliases)(x),new Set(a),{darkMode:n.darkMode})).css;return{code:o.code,rules:C?[Ne(Ae(C,n.layer))]:[],candidates:c,composites:x,atomicClasses:a,origins:g,cssOnlySignature:i,map:o.map}}async function Me(e,t,n){let r=Re(e);if(r.length===0)return null;let s=n.classNameAllocator??(0,P.createClassNameAllocator)(),u=n.importSource??"@cssxio/cssx",p={},o={},y=[],c=e;for(let g of[...r].reverse()){let x=await I(`import { sx } from ${JSON.stringify(u)};
4
- const style = ${g.code};`,`${t}.ts`,{...n,classNameAllocator:s}),a=Oe(x.code);c=`${c.slice(0,g.start)}${a}${c.slice(g.end)}`,Object.assign(p,x.candidates),Object.assign(o,x.composites),y.push(...x.rules)}return{code:c,rules:y,candidates:p,composites:o,atomicClasses:[],origins:{},cssOnlySignature:c}}function Re(e){let t=[],n=/\bsx\s*\(/g;for(let r of e.matchAll(n)){let s=r.index,u=e.indexOf("(",s),p=0,o="";for(let y=u;y<e.length;y+=1){let c=e[y];if(o){c==="\\"?y+=1:c===o&&(o="");continue}if(c==='"'||c==="'"||c==="`")o=c;else if(c==="(")p+=1;else if(c===")"&&--p===0){t.push({start:s,end:y+1,code:e.slice(s,y+1)}),n.lastIndex=y+1;break}}}return t}function Oe(e){let t="const style = ",n=e.indexOf(t)+t.length,r=e.indexOf(";",n);return e.slice(n,r)}function se(e,t){if(!e||typeof e!="object")return;let n=e.getCombinedSourcemap;if(typeof n!="function")return;let r=n.call(e);if(!r||typeof r!="object")return;let s=r;if(!(s.version!==3||!Array.isArray(s.sources)||typeof s.mappings!="string"))return{version:s.version,sources:[...s.sources],names:[...s.names??[]],mappings:s.mappings,file:s.file??t.split("?",1).join(""),...s.sourceRoot?{sourceRoot:s.sourceRoot}:{},...s.sourcesContent?{sourcesContent:[...s.sourcesContent]}:{}}}function Ne(e){return{className:`cssx-${V(e)}`,css:e}}function Ae(e,t){return e&&t?`@layer ${t}{${e}}`:e}function X(e,t,n=Date.now()){e.ws.send({type:"update",updates:[{type:"css-update",path:t,acceptedPath:t,timestamp:n}]})}var F="@cssxio/unplugin/rules",Pe=/\.(?:[cm]?[jt]sx?|astro)(?:\?.*)?$/,re=new Map;function Ie(e,t){return`${e}\0${JSON.stringify(t)}`}function z(e,t){let n=Ie(e,t),r=re.get(n);return r||(r={classNameAllocator:(0,G.createClassNameAllocator)(),transformedDataById:new Map},re.set(n,r)),r}function $e(e){let t=e.getNativeBuildContext?.();return t&&(t.framework==="webpack"||t.framework==="rspack")?t.loaderContext?.rootContext??process.cwd():void 0}function Le(e,t,n){let r=new Set;for(let s of t)e.moduleGraph?.invalidateModule(s,r,n,!0);for(let s of r){if(!s.id)continue;let u=e.runner?.evaluatedModules?.getModuleById(s.id);u&&e.runner?.evaluatedModules?.invalidateModule(u)}}function Fe(e){return!e||typeof e!="object"?{id:"",rules:[],candidates:{},composites:{},origins:{},cssOnlySignature:""}:je(e[F])}function je(e){if(!e||typeof e!="object")return{id:"",rules:[],candidates:{},composites:{},origins:{},cssOnlySignature:""};let{id:t,rules:n,candidates:r,composites:s,atomicClasses:u,origins:p,cssOnlySignature:o}=e;return{id:typeof t=="string"?t:"",rules:Array.isArray(n)?n:[],candidates:r&&typeof r=="object"?r:{},composites:s&&typeof s=="object"?s:{},...Array.isArray(u)?{atomicClasses:u}:{},origins:p&&typeof p=="object"?p:{},cssOnlySignature:typeof o=="string"?o:""}}var Ee=(e={},t)=>{D(e);let n=e.cssFileName??"cssx.css",r=e.sourceMap??!0,s=new Map,u=(0,G.createClassNameAllocator)(),p=new Map,o,y=process.cwd(),c,g=()=>A(e),x=async function(a,i){let m=new Set(Object.values(i).flatMap(l=>l.type==="chunk"?Object.keys(l.modules??{}):[]).map(k));if(t.framework!=="vite")for(let l of s.keys())m.has(l)||s.delete(l);let C=t.framework==="vite"?[...s.values()]:[...m].map(l=>{let h=Fe(this.getModuleInfo(l)?.meta);return Object.keys(h.candidates).length>0?h:s.get(l)??h}),f=await S(C,await g(),e.layer,r,e.darkMode,e.preflight);if(!f.css)return;let d=O(n,f.css);if(Object.hasOwn(i,d))throw new Error(`CSSX CSS asset collision at "${d}".`);if(this.emitFile({type:"asset",fileName:d,source:N(f,d)}),f.map){let l=`${d}.map`;if(Object.hasOwn(i,l))throw new Error(`CSSX CSS map asset collision at "${l}".`);this.emitFile({type:"asset",fileName:l,source:L(f.map,d)})}};return{name:"@cssxio/unplugin",enforce:"pre",transform:{filter:{id:Pe},async handler(a,i){e.themeFile&&this.addWatchFile?.((0,v.resolve)(process.cwd(),e.themeFile));let m=$e(this),C=m?z(m,e):void 0,f=await I(a,i,{...e,classNameAllocator:C?.classNameAllocator??u},se(this,i)),d={id:k(i),rules:f?.rules??[],candidates:f?.candidates??{},composites:f?.composites??{},atomicClasses:f?.atomicClasses??[],origins:f?.origins??{},cssOnlySignature:f?.cssOnlySignature??""};ee(this,d,F);let l=k(i);(f||l===i)&&(s.set(l,d),p.set((0,v.resolve)(y,l),d),C?.transformedDataById.set(l,d)),t.framework==="vite"&&c&&X(c,T("/",n));let h=f?.code??a;return{code:(t.framework==="webpack"||t.framework==="rspack")&&f?`${h}
5
- ${Be(n)}`:h,meta:{[F]:d},...f?.map?{map:f.map}:{}}}},watchChange(a,i){i.event==="delete"&&s.delete(k(a))},rollup:{generateBundle:x},vite:{generateBundle:x,configureServer(a){c=a;let i=T(a.config.base,n),m=T("/",n);a.watcher?.on("unlink",C=>{s.delete(k(C)),X(a,m)}),a.middlewares.use((C,f,d)=>{let l=C.url?.split("?",1)[0];if(l!==i&&(l!==`${i}.map`||!r))return d();g().then(h=>S([...s.values()],h,e.layer,r,e.darkMode,e.preflight)).then(h=>{if(l===`${i}.map`){f.setHeader("Content-Type","application/json; charset=utf-8"),f.setHeader("Cache-Control","no-store"),f.end(h.map?L(h.map,n):"");return}f.setHeader("Content-Type","text/css; charset=utf-8"),f.setHeader("Cache-Control","no-store"),f.end(N(h,n))}).catch(h=>{f.setHeader("Content-Type","text/plain; charset=utf-8"),f.end(h instanceof Error?h.message:"Unable to compile CSSX development stylesheet.")})})},hotUpdate:{order:"pre",async handler(a){let i=this.environment;if(!i||i.name==="client")return;let m=a.modules.filter(d=>{let l=s.get(k(d.id??""));return!!(l&&l.cssOnlySignature&&l.atomicClasses?.length===0)});if(m.length===0)return;let C=new Map(m.map(d=>[d,s.get(k(d.id)).cssOnlySignature]));for(let d of m)d.url&&await i.transformRequest(d.url);if(m.every(d=>{let l=s.get(k(d.id));return!!(l&&l.atomicClasses.length===0&&l.cssOnlySignature===C.get(d))}))return Le(i,m,a.timestamp),a.modules.filter(d=>!m.includes(d))}}},...t.framework==="webpack"?{webpack(a){let i=z(a.context??a.options?.context??process.cwd(),e);W(a,n,g,e.layer,r,F,i.transformedDataById,e.darkMode,e.preflight)}}:{},...t.framework==="rspack"?{rspack(a){let i=z(a.context??a.options?.context??process.cwd(),e);W(a,n,g,e.layer,r,F,i.transformedDataById,e.darkMode,e.preflight)}}:{},...t.framework==="esbuild"?{esbuild:{config(a){a.metafile=!0},setup(a){let i=a.initialOptions.absWorkingDir??process.cwd();y=i,a.onEnd(async m=>{if(!m.metafile)return;let C=new Set(Object.keys(m.metafile.inputs).map(h=>(0,v.resolve)(i,h)));for(let h of p.keys())C.has(h)||p.delete(h);let f=await S([...p.values()],await g(),e.layer,r,e.darkMode,e.preflight),d=U(i,a.initialOptions,O(n,f.css));if(!f.css){o&&await(0,$.unlink)(o).catch(()=>{}),o=void 0;return}let l=N(f,(0,v.basename)(d));if(a.initialOptions.write===!1){let h=m.outputFiles;if(!h)return;let R={path:d,contents:ae.Buffer.from(l),hash:"",text:l};if(h.findIndex(ce=>ce.path===d)!==-1)throw new Error(`CSSX CSS asset collision at "${d}".`);h.push(R);return}await(0,$.mkdir)((0,v.dirname)(d),{recursive:!0}),await(0,$.writeFile)(d,l),o=d})}}}:{}}},H=(0,oe.createUnplugin)(Ee);function Be(e){return`if (typeof document !== "undefined" && typeof module !== "undefined" && module.hot) {
1
+ "use strict";var ge=Object.create;var L=Object.defineProperty;var ye=Object.getOwnPropertyDescriptor;var he=Object.getOwnPropertyNames;var Ce=Object.getPrototypeOf,xe=Object.prototype.hasOwnProperty;var be=(e,t)=>{for(var s in t)L(e,s,{get:t[s],enumerable:!0})},Q=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of he(t))!xe.call(e,n)&&n!==s&&L(e,n,{get:()=>t[n],enumerable:!(r=ye(t,n))||r.enumerable});return e};var Se=(e,t,s)=>(s=e!=null?ge(Ce(e)):{},Q(t||!e||!e.__esModule?L(s,"default",{value:e,enumerable:!0}):s,e)),we=e=>Q(L({},"__esModule",{value:!0}),e);var qe={};be(qe,{default:()=>pe});module.exports=we(qe);var Z=require("buffer"),w=require("fs/promises"),N=require("path"),me=require("@cssxio/compiler");var K=require("@cssxio/compiler"),de=require("unplugin"),ce=require("buffer"),j=require("fs/promises"),S=require("path");var D=require("@cssxio/compiler"),te=require("path");var Y='*,::before,::after,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}button,select{text-transform:none}button,input:where([type="button"],[type="reset"],[type="submit"]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit}textarea{resize:vertical}::placeholder{opacity:1}button,[role="button"]{cursor:pointer}:disabled{cursor:default}[hidden]:where(:not([hidden="until-found"])){display:none!important}';async function v(e,t,s,r=!0,n,a=!1){let m=Object.create(null),o=Object.create(null),g=new Set,u=!0,y=new Map;for(let c of[...e].sort((d,h)=>d.id.localeCompare(h.id))){for(let[d,h]of Object.entries(c.candidates))if(d in m||(m[d]=h),c.id&&!y.has(d)){let O=c.origins?.[d];y.set(d,{id:c.id,line:O?.line??0,column:O?.column??0})}for(let[d,h]of Object.entries(c.composites??{})){let O=o[d];if(O&&O.join(" ")!==h.join(" "))throw new Error(`CSSX composite class collision for "${d}".`);o[d]=h}c.atomicClasses===void 0&&(u=!1);for(let d of c.atomicClasses??[])g.add(d)}let x=Object.keys(m).sort(),l=a?Y:"";if(x.length===0)return{css:l&&s?`@layer ${s}{${l}}`:l};let i=await(0,D.compileUtilities)(x,c=>m[c],t,(0,D.createSelectorAliases)(o),u?g:void 0,{darkMode:n}),p=s?`@layer ${s}{`:"",C=`${p}${l}${i.css}${p?"}":""}`,f=r?ke(`${p}${l}${i.prefixCss}`,i.entries,y):void 0;return{css:C,...f?{map:f}:{}}}function A(e,t){return e.map?`${e.css}
2
+ /*# sourceMappingURL=${(0,te.basename)(t)}.map */`:e.css}function $(e,t){return JSON.stringify({...e,file:t})}function ke(e,t,s){let r=[...new Set(t.map(o=>s.get(o.candidate)?.id).filter(o=>!!o))].sort();if(r.length===0)return;let n=new Map(r.map((o,g)=>[o,g])),a=[],m=ee({line:0,column:0},e);for(let o of t){let g=s.get(o.candidate);g&&a.push({...m,source:n.get(g.id),originalLine:g.line,originalColumn:g.column}),m=ee(m,o.css)}return{version:3,sources:r,names:[],mappings:ve(a)}}function ee(e,t){let s=t.split(`
3
+ `);return{line:e.line+s.length-1,column:s.at(-1).length+e.column*+(s.length===1)}}function ve(e){let t=Array.from({length:Math.max(0,...e.map(o=>o.line))+1},()=>[]),s=0,r=0,n=0,a=0,m=0;for(let o of e)m*=+(o.line===a),a=o.line,t[o.line]?.push(`${B(o.column-m)}${B(o.source-s)}${B(o.originalLine-r)}${B(o.originalColumn-n)}`),m=o.column,s=o.source,r=o.originalLine,n=o.originalColumn;return t.map(o=>o.join(",")).join(";")}var Me="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function B(e){let t="",s=e<0?-e<<1|1:e<<1;do{let r=s&31;s>>>=5,s&&(r|=32),t+=Me[r]}while(s);return t}var se=require("fs/promises"),b=require("path");async function P(e){return e.themeFile===void 0?e.theme:(0,se.readFile)((0,b.resolve)(process.cwd(),e.themeFile),"utf8")}function T(e){if(e.theme!==void 0&&e.themeFile!==void 0)throw new Error("CSSX accepts either theme or themeFile, not both.");if(e.layer!==void 0&&!/^[A-Za-z_-][A-Za-z0-9_-]*$/.test(e.layer))throw new Error("CSSX layer must be a valid CSS layer identifier.");if(e.sourceMap!==void 0&&typeof e.sourceMap!="boolean")throw new Error("CSSX sourceMap must be a boolean.");if(e.darkMode!==void 0&&e.darkMode!=="media"&&e.darkMode!=="selector"&&e.darkMode!=="class")throw new Error('CSSX darkMode must be "media", "selector", or "class".');if(e.preflight!==void 0&&typeof e.preflight!="boolean")throw new Error("CSSX preflight must be a boolean.");if(e.reusabilityBudget!==void 0&&e.reusabilityBudget!=="auto"&&(!Number.isFinite(e.reusabilityBudget)||e.reusabilityBudget<0||e.reusabilityBudget>100))throw new Error('CSSX reusabilityBudget must be "auto" or a number from 0 through 100.');W(e.cssFileName??"cssx.css")}function X(e){let t=2166136261;for(let s=0;s<e.length;s++)t^=e.charCodeAt(s),t=Math.imul(t,16777619);return(t>>>0).toString(36)}function R(e,t){return W(e).replaceAll("[hash]",X(t))}function U(e,t){return`${e&&e!=="/"?`/${e.replace(/^\/+|\/+$/g,"")}`:""}/${W(t).replaceAll(b.sep,"/")}`}function H(e,t,s){return t.outdir?(0,b.resolve)(e,t.outdir,s):t.outfile?(0,b.resolve)((0,b.dirname)((0,b.resolve)(e,t.outfile)),s):(0,b.resolve)(e,s)}function k(e){return e.split("?",1).join("")}function W(e){if(!e||(0,b.isAbsolute)(e))throw new Error("cssFileName must be a non-empty relative path.");let t=(0,b.normalize)(e);if(t===".."||t.startsWith(`..${b.sep}`))throw new Error("cssFileName must not escape the bundler output directory.");if(!t.endsWith(".css"))throw new Error("cssFileName must end in .css.");return t}function ne(e,t,s){let r=e.getNativeBuildContext?.();if(!r||r.framework!=="webpack"&&r.framework!=="rspack")return;let n=r.loaderContext?._module;if(!n)return;let a=n.buildInfo??(n.buildInfo={});a[s]=t}function z(e,t,s,r,n,a,m,o,g=!1,u){let y=e.name??e.options?.name;y==="server"||y==="edge-server"||e.hooks.thisCompilation.tap("@cssxio/unplugin",x=>{x.hooks.processAssets.tapPromise({name:"@cssxio/unplugin",stage:e.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},async()=>{let l=u?await u():Ne([...x.modules].map(C=>Oe(C,a)).filter(C=>C!==void 0),m?.values()??[]),i=await v(l,await s(),r,n,o,g);if(!i.css)return;let p=R(t,i.css);if(x.getAsset?.(p))throw new Error(`CSSX CSS asset collision at "${p}".`);if(x.emitAsset(p,new e.webpack.sources.RawSource(A(i,p))),i.map){let C=`${p}.map`;if(x.getAsset?.(C))throw new Error(`CSSX CSS map asset collision at "${C}".`);x.emitAsset(C,new e.webpack.sources.RawSource($(i.map,p)))}})})}function Ne(e,t){let s=new Map,r=[];for(let n of t)n.id?s.set(n.id,n):r.push(n);for(let n of e)n.id?s.set(n.id,n):r.push(n);return[...s.values(),...r]}function Oe(e,t){let s=e.buildInfo?.[t];if(!s||typeof s!="object")return;let{id:r,candidates:n,composites:a,atomicClasses:m,origins:o}=s;return{id:typeof r=="string"?r:"",candidates:n&&typeof n=="object"?n:{},composites:a&&typeof a=="object"?a:{},...Array.isArray(m)?{atomicClasses:m}:{},origins:o&&typeof o=="object"?o:{}}}var _=require("fs/promises"),F=require("path"),ie=require("@cssxio/compiler");var re=require("@babel/core"),oe=Se(require("@cssxio/babel-plugin"),1),I=require("@cssxio/compiler");var Re=new Set([".js",".jsx",".ts",".tsx",".cjs",".cjsx",".cts",".ctsx",".mjs",".mjsx",".mts",".mtsx",".astro"]);async function M(e,t,s={},r){T(s);let n=s.importSource??"@cssxio/cssx",a=t.split("?",1).join("");if(!Re.has(a.slice(a.lastIndexOf(".")))||!e.includes(n))return null;if(a.endsWith(".astro"))return Ae(e,t,s);let m=await P(s),o=await(0,re.transformAsync)(e,{babelrc:!1,configFile:!1,filename:a,parserOpts:{plugins:["jsx","typescript"]},plugins:[[oe.default,{importSource:n,classNameAllocator:s.classNameAllocator,theme:m,reusabilityBudget:s.reusabilityBudget,stableClassNames:s.stableClassNames,stableClassNameFileName:s.stableClassNameFileName,darkMode:s.darkMode}]],sourceMaps:!0,...r?{inputSourceMap:r}:{}}),g=o.metadata,{candidates:u,origins:y,composites:x,atomicClasses:l,cssOnlySignature:i}=g.cssx,p=Object.keys(u),C=p.length===0?"":(await(0,I.compileUtilities)(p,f=>u[f],m,(0,I.createSelectorAliases)(x),new Set(l),{darkMode:s.darkMode})).css;return{code:o.code,rules:C?[Fe(je(C,s.layer))]:[],candidates:u,composites:x,atomicClasses:l,origins:y,cssOnlySignature:i,map:o.map}}async function Ae(e,t,s){let r=Pe(e);if(r.length===0)return null;let n=s.classNameAllocator??(0,I.createClassNameAllocator)(),a=s.importSource??"@cssxio/cssx",m={},o={},g=[],u=e;for(let y of[...r].reverse()){let x=await M(`import { sx } from ${JSON.stringify(a)};
4
+ const style = ${y.code};`,`${t}.ts`,{...s,classNameAllocator:n}),l=Ie(x.code);u=`${u.slice(0,y.start)}${l}${u.slice(y.end)}`,Object.assign(m,x.candidates),Object.assign(o,x.composites),g.push(...x.rules)}return{code:u,rules:g,candidates:m,composites:o,atomicClasses:[],origins:{},cssOnlySignature:u}}function Pe(e){let t=[],s=/\bsx\s*\(/g;for(let r of e.matchAll(s)){let n=r.index,a=e.indexOf("(",n),m=0,o="";for(let g=a;g<e.length;g+=1){let u=e[g];if(o){u==="\\"?g+=1:u===o&&(o="");continue}if(u==='"'||u==="'"||u==="`")o=u;else if(u==="(")m+=1;else if(u===")"&&--m===0){t.push({start:n,end:g+1,code:e.slice(n,g+1)}),s.lastIndex=g+1;break}}}return t}function Ie(e){let t="const style = ",s=e.indexOf(t)+t.length,r=e.indexOf(";",s);return e.slice(s,r)}function ae(e,t){if(!e||typeof e!="object")return;let s=e.getCombinedSourcemap;if(typeof s!="function")return;let r=s.call(e);if(!r||typeof r!="object")return;let n=r;if(!(n.version!==3||!Array.isArray(n.sources)||typeof n.mappings!="string"))return{version:n.version,sources:[...n.sources],names:[...n.names??[]],mappings:n.mappings,file:n.file??t.split("?",1).join(""),...n.sourceRoot?{sourceRoot:n.sourceRoot}:{},...n.sourcesContent?{sourcesContent:[...n.sourcesContent]}:{}}}function Fe(e){return{className:`cssx-${X(e)}`,css:e}}function je(e,t){return e&&t?`@layer ${t}{${e}}`:e}var $e=new Set([".js",".jsx",".ts",".tsx",".cjs",".cjsx",".cts",".ctsx",".mjs",".mjsx",".mts",".mtsx",".astro"]),Ee=new Set([".git",".next",".turbo","node_modules"]);async function G(e,t){let s=await Le(e),r=(0,ie.createClassNameAllocator)(t.className),n=[];for(let a of s){let m=await(0,_.readFile)(a,"utf8"),o=await M(m,a,{...t,classNameAllocator:r,stableClassNames:!0,stableClassNameFileName:(0,F.relative)(e,a).replaceAll(F.sep,"/")});o&&n.push({id:a,candidates:o.candidates,composites:o.composites,atomicClasses:o.atomicClasses,origins:o.origins})}return n}async function Le(e){let t=[],s=[e];for(;s.length>0;){let r=s.pop();for(let n of await(0,_.readdir)(r,{withFileTypes:!0})){let a=(0,F.join)(r,n.name);if(n.isDirectory()){Ee.has(n.name)||s.push(a);continue}n.isFile()&&$e.has(a.slice(a.lastIndexOf(".")))&&t.push(a)}}return t.sort()}function q(e,t,s=Date.now()){e.ws.send({type:"update",updates:[{type:"css-update",path:t,acceptedPath:t,timestamp:s}]})}var E="@cssxio/unplugin/rules",Be=/\.(?:[cm]?[jt]sx?|astro)(?:\?.*)?$/,le=new Map;function De(e,t){return`${e}\0${JSON.stringify(t)}`}function J(e,t){let s=De(e,t),r=le.get(s);return r||(r={classNameAllocator:(0,K.createClassNameAllocator)(),transformedDataById:new Map},le.set(s,r)),r}function Te(e){let t=e.getNativeBuildContext?.();return t&&(t.framework==="webpack"||t.framework==="rspack")?t.loaderContext?.rootContext??process.cwd():void 0}function Ue(e,t,s){let r=new Set;for(let n of t)e.moduleGraph?.invalidateModule(n,r,s,!0);for(let n of r){if(!n.id)continue;let a=e.runner?.evaluatedModules?.getModuleById(n.id);a&&e.runner?.evaluatedModules?.invalidateModule(a)}}function He(e){return!e||typeof e!="object"?{id:"",rules:[],candidates:{},composites:{},origins:{},cssOnlySignature:""}:_e(e[E])}function _e(e){if(!e||typeof e!="object")return{id:"",rules:[],candidates:{},composites:{},origins:{},cssOnlySignature:""};let{id:t,rules:s,candidates:r,composites:n,atomicClasses:a,origins:m,cssOnlySignature:o}=e;return{id:typeof t=="string"?t:"",rules:Array.isArray(s)?s:[],candidates:r&&typeof r=="object"?r:{},composites:n&&typeof n=="object"?n:{},...Array.isArray(a)?{atomicClasses:a}:{},origins:m&&typeof m=="object"?m:{},cssOnlySignature:typeof o=="string"?o:""}}var Ve=(e={},t)=>{T(e);let s=e.cssFileName??"cssx.css",r=e.sourceMap??!0,n=new Map,a=(0,K.createClassNameAllocator)(),m=new Map,o,g=process.cwd(),u,y=()=>P(e),x=async function(l,i){let p=new Set(Object.values(i).flatMap(d=>d.type==="chunk"?Object.keys(d.modules??{}):[]).map(k));if(t.framework!=="vite")for(let d of n.keys())p.has(d)||n.delete(d);let C=t.framework==="vite"?[...n.values()]:[...p].map(d=>{let h=He(this.getModuleInfo(d)?.meta);return Object.keys(h.candidates).length>0?h:n.get(d)??h}),f=await v(C,await y(),e.layer,r,e.darkMode,e.preflight);if(!f.css)return;let c=R(s,f.css);if(Object.hasOwn(i,c))throw new Error(`CSSX CSS asset collision at "${c}".`);if(this.emitFile({type:"asset",fileName:c,source:A(f,c)}),f.map){let d=`${c}.map`;if(Object.hasOwn(i,d))throw new Error(`CSSX CSS map asset collision at "${d}".`);this.emitFile({type:"asset",fileName:d,source:$(f.map,c)})}};return{name:"@cssxio/unplugin",enforce:"pre",transform:{filter:{id:Be},async handler(l,i){e.themeFile&&this.addWatchFile?.((0,S.resolve)(process.cwd(),e.themeFile));let p=Te(this),C=p?J(p,e):void 0,f=await M(l,i,{...e,classNameAllocator:C?.classNameAllocator??a,...e.stableClassNames?{stableClassNameFileName:(0,S.relative)(p??process.cwd(),k(i)).replaceAll(S.sep,"/")}:{}},ae(this,i)),c={id:k(i),rules:f?.rules??[],candidates:f?.candidates??{},composites:f?.composites??{},atomicClasses:f?.atomicClasses??[],origins:f?.origins??{},cssOnlySignature:f?.cssOnlySignature??""};ne(this,c,E);let d=k(i);(f||d===i)&&(n.set(d,c),m.set((0,S.resolve)(g,d),c),C?.transformedDataById.set(d,c)),t.framework==="vite"&&u&&q(u,U("/",s));let h=f?.code??l;return{code:(t.framework==="webpack"||t.framework==="rspack")&&f?`${h}
5
+ ${Xe(s)}`:h,meta:{[E]:c},...f?.map?{map:f.map}:{}}}},watchChange(l,i){i.event==="delete"&&n.delete(k(l))},rollup:{generateBundle:x},vite:{generateBundle:x,configureServer(l){u=l;let i=U(l.config.base,s),p=U("/",s);l.watcher?.on("unlink",C=>{n.delete(k(C)),q(l,p)}),l.middlewares.use((C,f,c)=>{let d=C.url?.split("?",1)[0];if(d!==i&&(d!==`${i}.map`||!r))return c();y().then(h=>v([...n.values()],h,e.layer,r,e.darkMode,e.preflight)).then(h=>{if(d===`${i}.map`){f.setHeader("Content-Type","application/json; charset=utf-8"),f.setHeader("Cache-Control","no-store"),f.end(h.map?$(h.map,s):"");return}f.setHeader("Content-Type","text/css; charset=utf-8"),f.setHeader("Cache-Control","no-store"),f.end(A(h,s))}).catch(h=>{f.setHeader("Content-Type","text/plain; charset=utf-8"),f.end(h instanceof Error?h.message:"Unable to compile CSSX development stylesheet.")})})},hotUpdate:{order:"pre",async handler(l){let i=this.environment;if(!i||i.name==="client")return;let p=l.modules.filter(c=>{let d=n.get(k(c.id??""));return!!(d&&d.cssOnlySignature&&d.atomicClasses?.length===0)});if(p.length===0)return;let C=new Map(p.map(c=>[c,n.get(k(c.id)).cssOnlySignature]));for(let c of p)c.url&&await i.transformRequest(c.url);if(p.every(c=>{let d=n.get(k(c.id));return!!(d&&d.atomicClasses.length===0&&d.cssOnlySignature===C.get(c))}))return Ue(i,p,l.timestamp),l.modules.filter(c=>!p.includes(c))}}},...t.framework==="webpack"?{webpack(l){let i=J(l.context,e);z(l,s,y,e.layer,r,E,i.transformedDataById,e.darkMode,e.preflight,e.stableClassNames?()=>G(l.context,e):void 0)}}:{},...t.framework==="rspack"?{rspack(l){let i=J(l.context,e);z(l,s,y,e.layer,r,E,i.transformedDataById,e.darkMode,e.preflight,e.stableClassNames?()=>G(l.context,e):void 0)}}:{},...t.framework==="esbuild"?{esbuild:{config(l){l.metafile=!0},setup(l){let i=l.initialOptions.absWorkingDir??process.cwd();g=i,l.onEnd(async p=>{if(!p.metafile)return;let C=new Set(Object.keys(p.metafile.inputs).map(h=>(0,S.resolve)(i,h)));for(let h of m.keys())C.has(h)||m.delete(h);let f=await v([...m.values()],await y(),e.layer,r,e.darkMode,e.preflight),c=H(i,l.initialOptions,R(s,f.css));if(!f.css){o&&await(0,j.unlink)(o).catch(()=>{}),o=void 0;return}let d=A(f,(0,S.basename)(c));if(l.initialOptions.write===!1){let h=p.outputFiles;if(!h)return;let O={path:c,contents:ce.Buffer.from(d),hash:"",text:d};if(h.findIndex(fe=>fe.path===c)!==-1)throw new Error(`CSSX CSS asset collision at "${c}".`);h.push(O);return}await(0,j.mkdir)((0,S.dirname)(c),{recursive:!0}),await(0,j.writeFile)(c,d),o=c})}}}:{}}},V=(0,de.createUnplugin)(Ve);function Xe(e){return`if (typeof document !== "undefined" && typeof module !== "undefined" && module.hot) {
6
6
  const key = "__cssxStylesheetHmr";
7
7
  const state = globalThis[key] || (globalThis[key] = { revision: 0, staged: [], replacements: [] });
8
8
  const stylesheetLink = [...document.querySelectorAll('link[rel="stylesheet"]')].find((link) =>
@@ -89,5 +89,5 @@ ${Be(n)}`:h,meta:{[F]:d},...f?.map?{map:f.map}:{}}}},watchChange(a,i){i.event===
89
89
  state.poll = setInterval(() => void refresh(), 500);
90
90
  }
91
91
  }
92
- }`}var ot=H.vite,at=H.rollup,it=H.webpack,lt=H.rspack;var De=/\.[cm]?[jt]sx?$/;function de(e={}){let t=new Map,n=(0,le.createClassNameAllocator)(),r,s;return{name:"@cssxio/unplugin",setup(u){let p=u.initialOptions.absWorkingDir??process.cwd();u.initialOptions.metafile=!0,u.onLoad({filter:De},async({path:o})=>{let y=await(0,w.readFile)(o,"utf8"),c=await I(y,o,{...e,classNameAllocator:n});if(!c)return;let g=await ie(o);return t.set(g,{id:g,candidates:c.candidates,composites:c.composites,atomicClasses:c.atomicClasses,origins:c.origins}),{contents:c.code,loader:Ue(o)}}),u.onEnd(async o=>{if(!o.metafile)return;let y=new Set(await Promise.all(Object.keys(o.metafile.inputs).map(m=>ie((0,M.resolve)(p,m)))));for(let m of t.keys())y.has(m)||t.delete(m);let c=await Te([...t],e),g=U(p,u.initialOptions,O(e.cssFileName??"cssx.css",c.css));if(!c.css){r&&await(0,w.unlink)(r).catch(()=>{}),s&&await(0,w.unlink)(s).catch(()=>{}),r=void 0,s=void 0;return}let x=c.map?`${c.css}
93
- /*# sourceMappingURL=${(0,M.basename)(g)}.map */`:c.css,a=`${g}.map`,i=c.map?JSON.stringify({...c.map,file:(0,M.basename)(g)}):void 0;if(u.initialOptions.write===!1){if(!o.outputFiles)return;if(o.outputFiles.some(m=>m.path===g))throw new Error(`CSSX CSS asset collision at "${g}".`);o.outputFiles.push({path:g,contents:q.Buffer.from(x),hash:"",text:x}),i&&o.outputFiles.push({path:a,contents:q.Buffer.from(i),hash:"",text:i});return}await(0,w.mkdir)((0,M.dirname)(g),{recursive:!0}),await(0,w.writeFile)(g,x),i&&await(0,w.writeFile)(a,i),r=g,s=i?a:void 0})}}}async function Te(e,t){let n=await A(t);return S(e.map(([,r])=>r),n,t.layer,t.sourceMap??!0,t.darkMode,t.preflight)}function Ue(e){return/\.tsx?$/.test(e)?"ts":"js"}async function ie(e){return(0,w.realpath)(e).catch(()=>(0,M.resolve)(e))}
92
+ }`}var gt=V.vite,yt=V.rollup,ht=V.webpack,Ct=V.rspack;var We=/\.[cm]?[jt]sx?$/;function pe(e={}){let t=new Map,s=(0,me.createClassNameAllocator)(),r,n;return{name:"@cssxio/unplugin",setup(a){let m=a.initialOptions.absWorkingDir??process.cwd();a.initialOptions.metafile=!0,a.onLoad({filter:We},async({path:o})=>{let g=await(0,w.readFile)(o,"utf8"),u=await M(g,o,{...e,classNameAllocator:s});if(!u)return;let y=await ue(o);return t.set(y,{id:y,candidates:u.candidates,composites:u.composites,atomicClasses:u.atomicClasses,origins:u.origins}),{contents:u.code,loader:Ge(o)}}),a.onEnd(async o=>{if(!o.metafile)return;let g=new Set(await Promise.all(Object.keys(o.metafile.inputs).map(p=>ue((0,N.resolve)(m,p)))));for(let p of t.keys())g.has(p)||t.delete(p);let u=await ze([...t],e),y=H(m,a.initialOptions,R(e.cssFileName??"cssx.css",u.css));if(!u.css){r&&await(0,w.unlink)(r).catch(()=>{}),n&&await(0,w.unlink)(n).catch(()=>{}),r=void 0,n=void 0;return}let x=u.map?`${u.css}
93
+ /*# sourceMappingURL=${(0,N.basename)(y)}.map */`:u.css,l=`${y}.map`,i=u.map?JSON.stringify({...u.map,file:(0,N.basename)(y)}):void 0;if(a.initialOptions.write===!1){if(!o.outputFiles)return;if(o.outputFiles.some(p=>p.path===y))throw new Error(`CSSX CSS asset collision at "${y}".`);o.outputFiles.push({path:y,contents:Z.Buffer.from(x),hash:"",text:x}),i&&o.outputFiles.push({path:l,contents:Z.Buffer.from(i),hash:"",text:i});return}await(0,w.mkdir)((0,N.dirname)(y),{recursive:!0}),await(0,w.writeFile)(y,x),i&&await(0,w.writeFile)(l,i),r=y,n=i?l:void 0})}}}async function ze(e,t){let s=await P(t);return v(e.map(([,r])=>r),s,t.layer,t.sourceMap??!0,t.darkMode,t.preflight)}function Ge(e){return/\.tsx?$/.test(e)?"ts":"js"}async function ue(e){return(0,w.realpath)(e).catch(()=>(0,N.resolve)(e))}
@@ -1,5 +1,5 @@
1
1
  import { Plugin } from 'esbuild';
2
- import { C as CssxPluginOptions } from './options-CzBQAUBO.cjs';
2
+ import { C as CssxPluginOptions } from './options-BOiVAsHI.cjs';
3
3
  import '@cssxio/compiler';
4
4
 
5
5
  /**
package/dist/esbuild.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Plugin } from 'esbuild';
2
- import { C as CssxPluginOptions } from './options-CzBQAUBO.js';
2
+ import { C as CssxPluginOptions } from './options-BOiVAsHI.js';
3
3
  import '@cssxio/compiler';
4
4
 
5
5
  /**
package/dist/esbuild.js CHANGED
@@ -1 +1 @@
1
- import{j as a}from"./chunk-ZGXUEAIG.js";export{a as default};
1
+ import{j as a}from"./chunk-S64RLZTF.js";export{a as default};
package/dist/index.cjs CHANGED
@@ -1,9 +1,9 @@
1
- "use strict";var me=Object.create;var E=Object.defineProperty;var pe=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var ge=Object.getPrototypeOf,ye=Object.prototype.hasOwnProperty;var he=(e,t)=>{for(var n in t)E(e,n,{get:t[n],enumerable:!0})},K=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of fe(t))!ye.call(e,s)&&s!==n&&E(e,s,{get:()=>t[s],enumerable:!(r=pe(t,s))||r.enumerable});return e};var Ce=(e,t,n)=>(n=e!=null?me(ge(e)):{},K(t||!e||!e.__esModule?E(n,"default",{value:e,enumerable:!0}):n,e)),xe=e=>K(E({},"__esModule",{value:!0}),e);var ze={};he(ze,{compileCssxStylesheet:()=>S,default:()=>Xe,esbuild:()=>G,rollup:()=>Ve,rspack:()=>We,transformCssxModule:()=>N,unplugin:()=>L,unpluginFactory:()=>ce,vite:()=>He,webpack:()=>_e});module.exports=xe(ze);var J=require("@cssxio/compiler"),le=require("unplugin"),de=require("buffer"),$=require("fs/promises"),M=require("path");var D=require("@cssxio/compiler"),Y=require("path");var Z='*,::before,::after,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}button,select{text-transform:none}button,input:where([type="button"],[type="reset"],[type="submit"]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit}textarea{resize:vertical}::placeholder{opacity:1}button,[role="button"]{cursor:pointer}:disabled{cursor:default}[hidden]:where(:not([hidden="until-found"])){display:none!important}';async function S(e,t,n,r=!0,s,u=!1){let p=Object.create(null),o=Object.create(null),y=new Set,c=!0,g=new Map;for(let d of[...e].sort((l,h)=>l.id.localeCompare(h.id))){for(let[l,h]of Object.entries(d.candidates))if(l in p||(p[l]=h),d.id&&!g.has(l)){let R=d.origins?.[l];g.set(l,{id:d.id,line:R?.line??0,column:R?.column??0})}for(let[l,h]of Object.entries(d.composites??{})){let R=o[l];if(R&&R.join(" ")!==h.join(" "))throw new Error(`CSSX composite class collision for "${l}".`);o[l]=h}d.atomicClasses===void 0&&(c=!1);for(let l of d.atomicClasses??[])y.add(l)}let x=Object.keys(p).sort(),a=u?Z:"";if(x.length===0)return{css:a&&n?`@layer ${n}{${a}}`:a};let i=await(0,D.compileUtilities)(x,d=>p[d],t,(0,D.createSelectorAliases)(o),c?y:void 0,{darkMode:s}),m=n?`@layer ${n}{`:"",C=`${m}${a}${i.css}${m?"}":""}`,f=r?be(`${m}${a}${i.prefixCss}`,i.entries,g):void 0;return{css:C,...f?{map:f}:{}}}function A(e,t){return e.map?`${e.css}
2
- /*# sourceMappingURL=${(0,Y.basename)(t)}.map */`:e.css}function F(e,t){return JSON.stringify({...e,file:t})}function be(e,t,n){let r=[...new Set(t.map(o=>n.get(o.candidate)?.id).filter(o=>!!o))].sort();if(r.length===0)return;let s=new Map(r.map((o,y)=>[o,y])),u=[],p=Q({line:0,column:0},e);for(let o of t){let y=n.get(o.candidate);y&&u.push({...p,source:s.get(y.id),originalLine:y.line,originalColumn:y.column}),p=Q(p,o.css)}return{version:3,sources:r,names:[],mappings:we(u)}}function Q(e,t){let n=t.split(`
3
- `);return{line:e.line+n.length-1,column:n.at(-1).length+e.column*+(n.length===1)}}function we(e){let t=Array.from({length:Math.max(0,...e.map(o=>o.line))+1},()=>[]),n=0,r=0,s=0,u=0,p=0;for(let o of e)p*=+(o.line===u),u=o.line,t[o.line]?.push(`${B(o.column-p)}${B(o.source-n)}${B(o.originalLine-r)}${B(o.originalColumn-s)}`),p=o.column,n=o.source,r=o.originalLine,s=o.originalColumn;return t.map(o=>o.join(",")).join(";")}var Se="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function B(e){let t="",n=e<0?-e<<1|1:e<<1;do{let r=n&31;n>>>=5,n&&(r|=32),t+=Se[r]}while(n);return t}var ee=require("fs/promises"),b=require("path");async function P(e){return e.themeFile===void 0?e.theme:(0,ee.readFile)((0,b.resolve)(process.cwd(),e.themeFile),"utf8")}function T(e){if(e.theme!==void 0&&e.themeFile!==void 0)throw new Error("CSSX accepts either theme or themeFile, not both.");if(e.layer!==void 0&&!/^[A-Za-z_-][A-Za-z0-9_-]*$/.test(e.layer))throw new Error("CSSX layer must be a valid CSS layer identifier.");if(e.sourceMap!==void 0&&typeof e.sourceMap!="boolean")throw new Error("CSSX sourceMap must be a boolean.");if(e.darkMode!==void 0&&e.darkMode!=="media"&&e.darkMode!=="selector"&&e.darkMode!=="class")throw new Error('CSSX darkMode must be "media", "selector", or "class".');if(e.preflight!==void 0&&typeof e.preflight!="boolean")throw new Error("CSSX preflight must be a boolean.");if(e.reusabilityBudget!==void 0&&e.reusabilityBudget!=="auto"&&(!Number.isFinite(e.reusabilityBudget)||e.reusabilityBudget<0||e.reusabilityBudget>100))throw new Error('CSSX reusabilityBudget must be "auto" or a number from 0 through 100.');_(e.cssFileName??"cssx.css")}function V(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)}function O(e,t){return _(e).replaceAll("[hash]",V(t))}function U(e,t){return`${e&&e!=="/"?`/${e.replace(/^\/+|\/+$/g,"")}`:""}/${_(t).replaceAll(b.sep,"/")}`}function H(e,t,n){return t.outdir?(0,b.resolve)(e,t.outdir,n):t.outfile?(0,b.resolve)((0,b.dirname)((0,b.resolve)(e,t.outfile)),n):(0,b.resolve)(e,n)}function k(e){return e.split("?",1).join("")}function _(e){if(!e||(0,b.isAbsolute)(e))throw new Error("cssFileName must be a non-empty relative path.");let t=(0,b.normalize)(e);if(t===".."||t.startsWith(`..${b.sep}`))throw new Error("cssFileName must not escape the bundler output directory.");if(!t.endsWith(".css"))throw new Error("cssFileName must end in .css.");return t}function te(e,t,n){let r=e.getNativeBuildContext?.();if(!r||r.framework!=="webpack"&&r.framework!=="rspack")return;let s=r.loaderContext?._module;if(!s)return;let u=s.buildInfo??(s.buildInfo={});u[n]=t}function W(e,t,n,r,s,u,p,o,y=!1){let c=e.name??e.options?.name;c==="server"||c==="edge-server"||e.hooks.thisCompilation.tap("@cssxio/unplugin",g=>{g.hooks.processAssets.tapPromise({name:"@cssxio/unplugin",stage:e.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},async()=>{let x=[...g.modules].map(C=>ve(C,u)).filter(C=>C!==void 0),a=ke(x,p?.values()??[]),i=await S(a,await n(),r,s,o,y);if(!i.css)return;let m=O(t,i.css);if(g.getAsset?.(m))throw new Error(`CSSX CSS asset collision at "${m}".`);if(g.emitAsset(m,new e.webpack.sources.RawSource(A(i,m))),i.map){let C=`${m}.map`;if(g.getAsset?.(C))throw new Error(`CSSX CSS map asset collision at "${C}".`);g.emitAsset(C,new e.webpack.sources.RawSource(F(i.map,m)))}})})}function ke(e,t){let n=new Map,r=[];for(let s of t)s.id?n.set(s.id,s):r.push(s);for(let s of e)s.id?n.set(s.id,s):r.push(s);return[...n.values(),...r]}function ve(e,t){let n=e.buildInfo?.[t];if(!n||typeof n!="object")return;let{id:r,candidates:s,composites:u,atomicClasses:p,origins:o}=n;return{id:typeof r=="string"?r:"",candidates:s&&typeof s=="object"?s:{},composites:u&&typeof u=="object"?u:{},...Array.isArray(p)?{atomicClasses:p}:{},origins:o&&typeof o=="object"?o:{}}}var ne=require("@babel/core"),se=Ce(require("@cssxio/babel-plugin"),1),I=require("@cssxio/compiler");var Me=new Set([".js",".jsx",".ts",".tsx",".cjs",".cjsx",".cts",".ctsx",".mjs",".mjsx",".mts",".mtsx",".astro"]);async function N(e,t,n={},r){T(n);let s=n.importSource??"@cssxio/cssx",u=t.split("?",1).join("");if(!Me.has(u.slice(u.lastIndexOf(".")))||!e.includes(s))return null;if(u.endsWith(".astro"))return Re(e,t,n);let p=await P(n),o=await(0,ne.transformAsync)(e,{babelrc:!1,configFile:!1,filename:u,parserOpts:{plugins:["jsx","typescript"]},plugins:[[se.default,{importSource:s,classNameAllocator:n.classNameAllocator,theme:p,reusabilityBudget:n.reusabilityBudget,stableClassNames:n.stableClassNames,darkMode:n.darkMode}]],sourceMaps:!0,...r?{inputSourceMap:r}:{}}),y=o.metadata,{candidates:c,origins:g,composites:x,atomicClasses:a,cssOnlySignature:i}=y.cssx,m=Object.keys(c),C=m.length===0?"":(await(0,I.compileUtilities)(m,f=>c[f],p,(0,I.createSelectorAliases)(x),new Set(a),{darkMode:n.darkMode})).css;return{code:o.code,rules:C?[Ae(Pe(C,n.layer))]:[],candidates:c,composites:x,atomicClasses:a,origins:g,cssOnlySignature:i,map:o.map}}async function Re(e,t,n){let r=Oe(e);if(r.length===0)return null;let s=n.classNameAllocator??(0,I.createClassNameAllocator)(),u=n.importSource??"@cssxio/cssx",p={},o={},y=[],c=e;for(let g of[...r].reverse()){let x=await N(`import { sx } from ${JSON.stringify(u)};
4
- const style = ${g.code};`,`${t}.ts`,{...n,classNameAllocator:s}),a=Ne(x.code);c=`${c.slice(0,g.start)}${a}${c.slice(g.end)}`,Object.assign(p,x.candidates),Object.assign(o,x.composites),y.push(...x.rules)}return{code:c,rules:y,candidates:p,composites:o,atomicClasses:[],origins:{},cssOnlySignature:c}}function Oe(e){let t=[],n=/\bsx\s*\(/g;for(let r of e.matchAll(n)){let s=r.index,u=e.indexOf("(",s),p=0,o="";for(let y=u;y<e.length;y+=1){let c=e[y];if(o){c==="\\"?y+=1:c===o&&(o="");continue}if(c==='"'||c==="'"||c==="`")o=c;else if(c==="(")p+=1;else if(c===")"&&--p===0){t.push({start:s,end:y+1,code:e.slice(s,y+1)}),n.lastIndex=y+1;break}}}return t}function Ne(e){let t="const style = ",n=e.indexOf(t)+t.length,r=e.indexOf(";",n);return e.slice(n,r)}function re(e,t){if(!e||typeof e!="object")return;let n=e.getCombinedSourcemap;if(typeof n!="function")return;let r=n.call(e);if(!r||typeof r!="object")return;let s=r;if(!(s.version!==3||!Array.isArray(s.sources)||typeof s.mappings!="string"))return{version:s.version,sources:[...s.sources],names:[...s.names??[]],mappings:s.mappings,file:s.file??t.split("?",1).join(""),...s.sourceRoot?{sourceRoot:s.sourceRoot}:{},...s.sourcesContent?{sourcesContent:[...s.sourcesContent]}:{}}}function Ae(e){return{className:`cssx-${V(e)}`,css:e}}function Pe(e,t){return e&&t?`@layer ${t}{${e}}`:e}function X(e,t,n=Date.now()){e.ws.send({type:"update",updates:[{type:"css-update",path:t,acceptedPath:t,timestamp:n}]})}var z=require("buffer"),w=require("fs/promises"),v=require("path"),ae=require("@cssxio/compiler");var Ie=/\.[cm]?[jt]sx?$/;function G(e={}){let t=new Map,n=(0,ae.createClassNameAllocator)(),r,s;return{name:"@cssxio/unplugin",setup(u){let p=u.initialOptions.absWorkingDir??process.cwd();u.initialOptions.metafile=!0,u.onLoad({filter:Ie},async({path:o})=>{let y=await(0,w.readFile)(o,"utf8"),c=await N(y,o,{...e,classNameAllocator:n});if(!c)return;let g=await oe(o);return t.set(g,{id:g,candidates:c.candidates,composites:c.composites,atomicClasses:c.atomicClasses,origins:c.origins}),{contents:c.code,loader:Le(o)}}),u.onEnd(async o=>{if(!o.metafile)return;let y=new Set(await Promise.all(Object.keys(o.metafile.inputs).map(m=>oe((0,v.resolve)(p,m)))));for(let m of t.keys())y.has(m)||t.delete(m);let c=await $e([...t],e),g=H(p,u.initialOptions,O(e.cssFileName??"cssx.css",c.css));if(!c.css){r&&await(0,w.unlink)(r).catch(()=>{}),s&&await(0,w.unlink)(s).catch(()=>{}),r=void 0,s=void 0;return}let x=c.map?`${c.css}
5
- /*# sourceMappingURL=${(0,v.basename)(g)}.map */`:c.css,a=`${g}.map`,i=c.map?JSON.stringify({...c.map,file:(0,v.basename)(g)}):void 0;if(u.initialOptions.write===!1){if(!o.outputFiles)return;if(o.outputFiles.some(m=>m.path===g))throw new Error(`CSSX CSS asset collision at "${g}".`);o.outputFiles.push({path:g,contents:z.Buffer.from(x),hash:"",text:x}),i&&o.outputFiles.push({path:a,contents:z.Buffer.from(i),hash:"",text:i});return}await(0,w.mkdir)((0,v.dirname)(g),{recursive:!0}),await(0,w.writeFile)(g,x),i&&await(0,w.writeFile)(a,i),r=g,s=i?a:void 0})}}}async function $e(e,t){let n=await P(t);return S(e.map(([,r])=>r),n,t.layer,t.sourceMap??!0,t.darkMode,t.preflight)}function Le(e){return/\.tsx?$/.test(e)?"ts":"js"}async function oe(e){return(0,w.realpath)(e).catch(()=>(0,v.resolve)(e))}var j="@cssxio/unplugin/rules",Fe=/\.(?:[cm]?[jt]sx?|astro)(?:\?.*)?$/,ie=new Map;function je(e,t){return`${e}\0${JSON.stringify(t)}`}function q(e,t){let n=je(e,t),r=ie.get(n);return r||(r={classNameAllocator:(0,J.createClassNameAllocator)(),transformedDataById:new Map},ie.set(n,r)),r}function Ee(e){let t=e.getNativeBuildContext?.();return t&&(t.framework==="webpack"||t.framework==="rspack")?t.loaderContext?.rootContext??process.cwd():void 0}function Be(e,t,n){let r=new Set;for(let s of t)e.moduleGraph?.invalidateModule(s,r,n,!0);for(let s of r){if(!s.id)continue;let u=e.runner?.evaluatedModules?.getModuleById(s.id);u&&e.runner?.evaluatedModules?.invalidateModule(u)}}function De(e){return!e||typeof e!="object"?{id:"",rules:[],candidates:{},composites:{},origins:{},cssOnlySignature:""}:Te(e[j])}function Te(e){if(!e||typeof e!="object")return{id:"",rules:[],candidates:{},composites:{},origins:{},cssOnlySignature:""};let{id:t,rules:n,candidates:r,composites:s,atomicClasses:u,origins:p,cssOnlySignature:o}=e;return{id:typeof t=="string"?t:"",rules:Array.isArray(n)?n:[],candidates:r&&typeof r=="object"?r:{},composites:s&&typeof s=="object"?s:{},...Array.isArray(u)?{atomicClasses:u}:{},origins:p&&typeof p=="object"?p:{},cssOnlySignature:typeof o=="string"?o:""}}var ce=(e={},t)=>{T(e);let n=e.cssFileName??"cssx.css",r=e.sourceMap??!0,s=new Map,u=(0,J.createClassNameAllocator)(),p=new Map,o,y=process.cwd(),c,g=()=>P(e),x=async function(a,i){let m=new Set(Object.values(i).flatMap(l=>l.type==="chunk"?Object.keys(l.modules??{}):[]).map(k));if(t.framework!=="vite")for(let l of s.keys())m.has(l)||s.delete(l);let C=t.framework==="vite"?[...s.values()]:[...m].map(l=>{let h=De(this.getModuleInfo(l)?.meta);return Object.keys(h.candidates).length>0?h:s.get(l)??h}),f=await S(C,await g(),e.layer,r,e.darkMode,e.preflight);if(!f.css)return;let d=O(n,f.css);if(Object.hasOwn(i,d))throw new Error(`CSSX CSS asset collision at "${d}".`);if(this.emitFile({type:"asset",fileName:d,source:A(f,d)}),f.map){let l=`${d}.map`;if(Object.hasOwn(i,l))throw new Error(`CSSX CSS map asset collision at "${l}".`);this.emitFile({type:"asset",fileName:l,source:F(f.map,d)})}};return{name:"@cssxio/unplugin",enforce:"pre",transform:{filter:{id:Fe},async handler(a,i){e.themeFile&&this.addWatchFile?.((0,M.resolve)(process.cwd(),e.themeFile));let m=Ee(this),C=m?q(m,e):void 0,f=await N(a,i,{...e,classNameAllocator:C?.classNameAllocator??u},re(this,i)),d={id:k(i),rules:f?.rules??[],candidates:f?.candidates??{},composites:f?.composites??{},atomicClasses:f?.atomicClasses??[],origins:f?.origins??{},cssOnlySignature:f?.cssOnlySignature??""};te(this,d,j);let l=k(i);(f||l===i)&&(s.set(l,d),p.set((0,M.resolve)(y,l),d),C?.transformedDataById.set(l,d)),t.framework==="vite"&&c&&X(c,U("/",n));let h=f?.code??a;return{code:(t.framework==="webpack"||t.framework==="rspack")&&f?`${h}
6
- ${Ue(n)}`:h,meta:{[j]:d},...f?.map?{map:f.map}:{}}}},watchChange(a,i){i.event==="delete"&&s.delete(k(a))},rollup:{generateBundle:x},vite:{generateBundle:x,configureServer(a){c=a;let i=U(a.config.base,n),m=U("/",n);a.watcher?.on("unlink",C=>{s.delete(k(C)),X(a,m)}),a.middlewares.use((C,f,d)=>{let l=C.url?.split("?",1)[0];if(l!==i&&(l!==`${i}.map`||!r))return d();g().then(h=>S([...s.values()],h,e.layer,r,e.darkMode,e.preflight)).then(h=>{if(l===`${i}.map`){f.setHeader("Content-Type","application/json; charset=utf-8"),f.setHeader("Cache-Control","no-store"),f.end(h.map?F(h.map,n):"");return}f.setHeader("Content-Type","text/css; charset=utf-8"),f.setHeader("Cache-Control","no-store"),f.end(A(h,n))}).catch(h=>{f.setHeader("Content-Type","text/plain; charset=utf-8"),f.end(h instanceof Error?h.message:"Unable to compile CSSX development stylesheet.")})})},hotUpdate:{order:"pre",async handler(a){let i=this.environment;if(!i||i.name==="client")return;let m=a.modules.filter(d=>{let l=s.get(k(d.id??""));return!!(l&&l.cssOnlySignature&&l.atomicClasses?.length===0)});if(m.length===0)return;let C=new Map(m.map(d=>[d,s.get(k(d.id)).cssOnlySignature]));for(let d of m)d.url&&await i.transformRequest(d.url);if(m.every(d=>{let l=s.get(k(d.id));return!!(l&&l.atomicClasses.length===0&&l.cssOnlySignature===C.get(d))}))return Be(i,m,a.timestamp),a.modules.filter(d=>!m.includes(d))}}},...t.framework==="webpack"?{webpack(a){let i=q(a.context??a.options?.context??process.cwd(),e);W(a,n,g,e.layer,r,j,i.transformedDataById,e.darkMode,e.preflight)}}:{},...t.framework==="rspack"?{rspack(a){let i=q(a.context??a.options?.context??process.cwd(),e);W(a,n,g,e.layer,r,j,i.transformedDataById,e.darkMode,e.preflight)}}:{},...t.framework==="esbuild"?{esbuild:{config(a){a.metafile=!0},setup(a){let i=a.initialOptions.absWorkingDir??process.cwd();y=i,a.onEnd(async m=>{if(!m.metafile)return;let C=new Set(Object.keys(m.metafile.inputs).map(h=>(0,M.resolve)(i,h)));for(let h of p.keys())C.has(h)||p.delete(h);let f=await S([...p.values()],await g(),e.layer,r,e.darkMode,e.preflight),d=H(i,a.initialOptions,O(n,f.css));if(!f.css){o&&await(0,$.unlink)(o).catch(()=>{}),o=void 0;return}let l=A(f,(0,M.basename)(d));if(a.initialOptions.write===!1){let h=m.outputFiles;if(!h)return;let R={path:d,contents:de.Buffer.from(l),hash:"",text:l};if(h.findIndex(ue=>ue.path===d)!==-1)throw new Error(`CSSX CSS asset collision at "${d}".`);h.push(R);return}await(0,$.mkdir)((0,M.dirname)(d),{recursive:!0}),await(0,$.writeFile)(d,l),o=d})}}}:{}}},L=(0,le.createUnplugin)(ce);function Ue(e){return`if (typeof document !== "undefined" && typeof module !== "undefined" && module.hot) {
1
+ "use strict";var ye=Object.create;var B=Object.defineProperty;var he=Object.getOwnPropertyDescriptor;var Ce=Object.getOwnPropertyNames;var xe=Object.getPrototypeOf,be=Object.prototype.hasOwnProperty;var Se=(e,t)=>{for(var s in t)B(e,s,{get:t[s],enumerable:!0})},Y=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ce(t))!be.call(e,n)&&n!==s&&B(e,n,{get:()=>t[n],enumerable:!(r=he(t,n))||r.enumerable});return e};var we=(e,t,s)=>(s=e!=null?ye(xe(e)):{},Y(t||!e||!e.__esModule?B(s,"default",{value:e,enumerable:!0}):s,e)),ke=e=>Y(B({},"__esModule",{value:!0}),e);var Ye={};Se(Ye,{compileCssxStylesheet:()=>k,default:()=>Qe,esbuild:()=>K,rollup:()=>Je,rspack:()=>Ze,transformCssxModule:()=>M,unplugin:()=>$,unpluginFactory:()=>fe,vite:()=>qe,webpack:()=>Ke});module.exports=ke(Ye);var Q=require("@cssxio/compiler"),me=require("unplugin"),pe=require("buffer"),j=require("fs/promises"),w=require("path");var T=require("@cssxio/compiler"),se=require("path");var ee='*,::before,::after,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}button,select{text-transform:none}button,input:where([type="button"],[type="reset"],[type="submit"]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit}textarea{resize:vertical}::placeholder{opacity:1}button,[role="button"]{cursor:pointer}:disabled{cursor:default}[hidden]:where(:not([hidden="until-found"])){display:none!important}';async function k(e,t,s,r=!0,n,a=!1){let m=Object.create(null),o=Object.create(null),g=new Set,u=!0,y=new Map;for(let c of[...e].sort((d,h)=>d.id.localeCompare(h.id))){for(let[d,h]of Object.entries(c.candidates))if(d in m||(m[d]=h),c.id&&!y.has(d)){let O=c.origins?.[d];y.set(d,{id:c.id,line:O?.line??0,column:O?.column??0})}for(let[d,h]of Object.entries(c.composites??{})){let O=o[d];if(O&&O.join(" ")!==h.join(" "))throw new Error(`CSSX composite class collision for "${d}".`);o[d]=h}c.atomicClasses===void 0&&(u=!1);for(let d of c.atomicClasses??[])g.add(d)}let x=Object.keys(m).sort(),l=a?ee:"";if(x.length===0)return{css:l&&s?`@layer ${s}{${l}}`:l};let i=await(0,T.compileUtilities)(x,c=>m[c],t,(0,T.createSelectorAliases)(o),u?g:void 0,{darkMode:n}),p=s?`@layer ${s}{`:"",C=`${p}${l}${i.css}${p?"}":""}`,f=r?ve(`${p}${l}${i.prefixCss}`,i.entries,y):void 0;return{css:C,...f?{map:f}:{}}}function A(e,t){return e.map?`${e.css}
2
+ /*# sourceMappingURL=${(0,se.basename)(t)}.map */`:e.css}function E(e,t){return JSON.stringify({...e,file:t})}function ve(e,t,s){let r=[...new Set(t.map(o=>s.get(o.candidate)?.id).filter(o=>!!o))].sort();if(r.length===0)return;let n=new Map(r.map((o,g)=>[o,g])),a=[],m=te({line:0,column:0},e);for(let o of t){let g=s.get(o.candidate);g&&a.push({...m,source:n.get(g.id),originalLine:g.line,originalColumn:g.column}),m=te(m,o.css)}return{version:3,sources:r,names:[],mappings:Me(a)}}function te(e,t){let s=t.split(`
3
+ `);return{line:e.line+s.length-1,column:s.at(-1).length+e.column*+(s.length===1)}}function Me(e){let t=Array.from({length:Math.max(0,...e.map(o=>o.line))+1},()=>[]),s=0,r=0,n=0,a=0,m=0;for(let o of e)m*=+(o.line===a),a=o.line,t[o.line]?.push(`${D(o.column-m)}${D(o.source-s)}${D(o.originalLine-r)}${D(o.originalColumn-n)}`),m=o.column,s=o.source,r=o.originalLine,n=o.originalColumn;return t.map(o=>o.join(",")).join(";")}var Ne="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function D(e){let t="",s=e<0?-e<<1|1:e<<1;do{let r=s&31;s>>>=5,s&&(r|=32),t+=Ne[r]}while(s);return t}var ne=require("fs/promises"),b=require("path");async function P(e){return e.themeFile===void 0?e.theme:(0,ne.readFile)((0,b.resolve)(process.cwd(),e.themeFile),"utf8")}function U(e){if(e.theme!==void 0&&e.themeFile!==void 0)throw new Error("CSSX accepts either theme or themeFile, not both.");if(e.layer!==void 0&&!/^[A-Za-z_-][A-Za-z0-9_-]*$/.test(e.layer))throw new Error("CSSX layer must be a valid CSS layer identifier.");if(e.sourceMap!==void 0&&typeof e.sourceMap!="boolean")throw new Error("CSSX sourceMap must be a boolean.");if(e.darkMode!==void 0&&e.darkMode!=="media"&&e.darkMode!=="selector"&&e.darkMode!=="class")throw new Error('CSSX darkMode must be "media", "selector", or "class".');if(e.preflight!==void 0&&typeof e.preflight!="boolean")throw new Error("CSSX preflight must be a boolean.");if(e.reusabilityBudget!==void 0&&e.reusabilityBudget!=="auto"&&(!Number.isFinite(e.reusabilityBudget)||e.reusabilityBudget<0||e.reusabilityBudget>100))throw new Error('CSSX reusabilityBudget must be "auto" or a number from 0 through 100.');W(e.cssFileName??"cssx.css")}function X(e){let t=2166136261;for(let s=0;s<e.length;s++)t^=e.charCodeAt(s),t=Math.imul(t,16777619);return(t>>>0).toString(36)}function R(e,t){return W(e).replaceAll("[hash]",X(t))}function H(e,t){return`${e&&e!=="/"?`/${e.replace(/^\/+|\/+$/g,"")}`:""}/${W(t).replaceAll(b.sep,"/")}`}function _(e,t,s){return t.outdir?(0,b.resolve)(e,t.outdir,s):t.outfile?(0,b.resolve)((0,b.dirname)((0,b.resolve)(e,t.outfile)),s):(0,b.resolve)(e,s)}function v(e){return e.split("?",1).join("")}function W(e){if(!e||(0,b.isAbsolute)(e))throw new Error("cssFileName must be a non-empty relative path.");let t=(0,b.normalize)(e);if(t===".."||t.startsWith(`..${b.sep}`))throw new Error("cssFileName must not escape the bundler output directory.");if(!t.endsWith(".css"))throw new Error("cssFileName must end in .css.");return t}function re(e,t,s){let r=e.getNativeBuildContext?.();if(!r||r.framework!=="webpack"&&r.framework!=="rspack")return;let n=r.loaderContext?._module;if(!n)return;let a=n.buildInfo??(n.buildInfo={});a[s]=t}function z(e,t,s,r,n,a,m,o,g=!1,u){let y=e.name??e.options?.name;y==="server"||y==="edge-server"||e.hooks.thisCompilation.tap("@cssxio/unplugin",x=>{x.hooks.processAssets.tapPromise({name:"@cssxio/unplugin",stage:e.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},async()=>{let l=u?await u():Oe([...x.modules].map(C=>Re(C,a)).filter(C=>C!==void 0),m?.values()??[]),i=await k(l,await s(),r,n,o,g);if(!i.css)return;let p=R(t,i.css);if(x.getAsset?.(p))throw new Error(`CSSX CSS asset collision at "${p}".`);if(x.emitAsset(p,new e.webpack.sources.RawSource(A(i,p))),i.map){let C=`${p}.map`;if(x.getAsset?.(C))throw new Error(`CSSX CSS map asset collision at "${C}".`);x.emitAsset(C,new e.webpack.sources.RawSource(E(i.map,p)))}})})}function Oe(e,t){let s=new Map,r=[];for(let n of t)n.id?s.set(n.id,n):r.push(n);for(let n of e)n.id?s.set(n.id,n):r.push(n);return[...s.values(),...r]}function Re(e,t){let s=e.buildInfo?.[t];if(!s||typeof s!="object")return;let{id:r,candidates:n,composites:a,atomicClasses:m,origins:o}=s;return{id:typeof r=="string"?r:"",candidates:n&&typeof n=="object"?n:{},composites:a&&typeof a=="object"?a:{},...Array.isArray(m)?{atomicClasses:m}:{},origins:o&&typeof o=="object"?o:{}}}var V=require("fs/promises"),F=require("path"),le=require("@cssxio/compiler");var oe=require("@babel/core"),ae=we(require("@cssxio/babel-plugin"),1),I=require("@cssxio/compiler");var Ae=new Set([".js",".jsx",".ts",".tsx",".cjs",".cjsx",".cts",".ctsx",".mjs",".mjsx",".mts",".mtsx",".astro"]);async function M(e,t,s={},r){U(s);let n=s.importSource??"@cssxio/cssx",a=t.split("?",1).join("");if(!Ae.has(a.slice(a.lastIndexOf(".")))||!e.includes(n))return null;if(a.endsWith(".astro"))return Pe(e,t,s);let m=await P(s),o=await(0,oe.transformAsync)(e,{babelrc:!1,configFile:!1,filename:a,parserOpts:{plugins:["jsx","typescript"]},plugins:[[ae.default,{importSource:n,classNameAllocator:s.classNameAllocator,theme:m,reusabilityBudget:s.reusabilityBudget,stableClassNames:s.stableClassNames,stableClassNameFileName:s.stableClassNameFileName,darkMode:s.darkMode}]],sourceMaps:!0,...r?{inputSourceMap:r}:{}}),g=o.metadata,{candidates:u,origins:y,composites:x,atomicClasses:l,cssOnlySignature:i}=g.cssx,p=Object.keys(u),C=p.length===0?"":(await(0,I.compileUtilities)(p,f=>u[f],m,(0,I.createSelectorAliases)(x),new Set(l),{darkMode:s.darkMode})).css;return{code:o.code,rules:C?[je($e(C,s.layer))]:[],candidates:u,composites:x,atomicClasses:l,origins:y,cssOnlySignature:i,map:o.map}}async function Pe(e,t,s){let r=Ie(e);if(r.length===0)return null;let n=s.classNameAllocator??(0,I.createClassNameAllocator)(),a=s.importSource??"@cssxio/cssx",m={},o={},g=[],u=e;for(let y of[...r].reverse()){let x=await M(`import { sx } from ${JSON.stringify(a)};
4
+ const style = ${y.code};`,`${t}.ts`,{...s,classNameAllocator:n}),l=Fe(x.code);u=`${u.slice(0,y.start)}${l}${u.slice(y.end)}`,Object.assign(m,x.candidates),Object.assign(o,x.composites),g.push(...x.rules)}return{code:u,rules:g,candidates:m,composites:o,atomicClasses:[],origins:{},cssOnlySignature:u}}function Ie(e){let t=[],s=/\bsx\s*\(/g;for(let r of e.matchAll(s)){let n=r.index,a=e.indexOf("(",n),m=0,o="";for(let g=a;g<e.length;g+=1){let u=e[g];if(o){u==="\\"?g+=1:u===o&&(o="");continue}if(u==='"'||u==="'"||u==="`")o=u;else if(u==="(")m+=1;else if(u===")"&&--m===0){t.push({start:n,end:g+1,code:e.slice(n,g+1)}),s.lastIndex=g+1;break}}}return t}function Fe(e){let t="const style = ",s=e.indexOf(t)+t.length,r=e.indexOf(";",s);return e.slice(s,r)}function ie(e,t){if(!e||typeof e!="object")return;let s=e.getCombinedSourcemap;if(typeof s!="function")return;let r=s.call(e);if(!r||typeof r!="object")return;let n=r;if(!(n.version!==3||!Array.isArray(n.sources)||typeof n.mappings!="string"))return{version:n.version,sources:[...n.sources],names:[...n.names??[]],mappings:n.mappings,file:n.file??t.split("?",1).join(""),...n.sourceRoot?{sourceRoot:n.sourceRoot}:{},...n.sourcesContent?{sourcesContent:[...n.sourcesContent]}:{}}}function je(e){return{className:`cssx-${X(e)}`,css:e}}function $e(e,t){return e&&t?`@layer ${t}{${e}}`:e}var Ee=new Set([".js",".jsx",".ts",".tsx",".cjs",".cjsx",".cts",".ctsx",".mjs",".mjsx",".mts",".mtsx",".astro"]),Le=new Set([".git",".next",".turbo","node_modules"]);async function G(e,t){let s=await Be(e),r=(0,le.createClassNameAllocator)(t.className),n=[];for(let a of s){let m=await(0,V.readFile)(a,"utf8"),o=await M(m,a,{...t,classNameAllocator:r,stableClassNames:!0,stableClassNameFileName:(0,F.relative)(e,a).replaceAll(F.sep,"/")});o&&n.push({id:a,candidates:o.candidates,composites:o.composites,atomicClasses:o.atomicClasses,origins:o.origins})}return n}async function Be(e){let t=[],s=[e];for(;s.length>0;){let r=s.pop();for(let n of await(0,V.readdir)(r,{withFileTypes:!0})){let a=(0,F.join)(r,n.name);if(n.isDirectory()){Le.has(n.name)||s.push(a);continue}n.isFile()&&Ee.has(a.slice(a.lastIndexOf(".")))&&t.push(a)}}return t.sort()}function q(e,t,s=Date.now()){e.ws.send({type:"update",updates:[{type:"css-update",path:t,acceptedPath:t,timestamp:s}]})}var J=require("buffer"),S=require("fs/promises"),N=require("path"),ce=require("@cssxio/compiler");var De=/\.[cm]?[jt]sx?$/;function K(e={}){let t=new Map,s=(0,ce.createClassNameAllocator)(),r,n;return{name:"@cssxio/unplugin",setup(a){let m=a.initialOptions.absWorkingDir??process.cwd();a.initialOptions.metafile=!0,a.onLoad({filter:De},async({path:o})=>{let g=await(0,S.readFile)(o,"utf8"),u=await M(g,o,{...e,classNameAllocator:s});if(!u)return;let y=await de(o);return t.set(y,{id:y,candidates:u.candidates,composites:u.composites,atomicClasses:u.atomicClasses,origins:u.origins}),{contents:u.code,loader:Ue(o)}}),a.onEnd(async o=>{if(!o.metafile)return;let g=new Set(await Promise.all(Object.keys(o.metafile.inputs).map(p=>de((0,N.resolve)(m,p)))));for(let p of t.keys())g.has(p)||t.delete(p);let u=await Te([...t],e),y=_(m,a.initialOptions,R(e.cssFileName??"cssx.css",u.css));if(!u.css){r&&await(0,S.unlink)(r).catch(()=>{}),n&&await(0,S.unlink)(n).catch(()=>{}),r=void 0,n=void 0;return}let x=u.map?`${u.css}
5
+ /*# sourceMappingURL=${(0,N.basename)(y)}.map */`:u.css,l=`${y}.map`,i=u.map?JSON.stringify({...u.map,file:(0,N.basename)(y)}):void 0;if(a.initialOptions.write===!1){if(!o.outputFiles)return;if(o.outputFiles.some(p=>p.path===y))throw new Error(`CSSX CSS asset collision at "${y}".`);o.outputFiles.push({path:y,contents:J.Buffer.from(x),hash:"",text:x}),i&&o.outputFiles.push({path:l,contents:J.Buffer.from(i),hash:"",text:i});return}await(0,S.mkdir)((0,N.dirname)(y),{recursive:!0}),await(0,S.writeFile)(y,x),i&&await(0,S.writeFile)(l,i),r=y,n=i?l:void 0})}}}async function Te(e,t){let s=await P(t);return k(e.map(([,r])=>r),s,t.layer,t.sourceMap??!0,t.darkMode,t.preflight)}function Ue(e){return/\.tsx?$/.test(e)?"ts":"js"}async function de(e){return(0,S.realpath)(e).catch(()=>(0,N.resolve)(e))}var L="@cssxio/unplugin/rules",He=/\.(?:[cm]?[jt]sx?|astro)(?:\?.*)?$/,ue=new Map;function _e(e,t){return`${e}\0${JSON.stringify(t)}`}function Z(e,t){let s=_e(e,t),r=ue.get(s);return r||(r={classNameAllocator:(0,Q.createClassNameAllocator)(),transformedDataById:new Map},ue.set(s,r)),r}function Ve(e){let t=e.getNativeBuildContext?.();return t&&(t.framework==="webpack"||t.framework==="rspack")?t.loaderContext?.rootContext??process.cwd():void 0}function Xe(e,t,s){let r=new Set;for(let n of t)e.moduleGraph?.invalidateModule(n,r,s,!0);for(let n of r){if(!n.id)continue;let a=e.runner?.evaluatedModules?.getModuleById(n.id);a&&e.runner?.evaluatedModules?.invalidateModule(a)}}function We(e){return!e||typeof e!="object"?{id:"",rules:[],candidates:{},composites:{},origins:{},cssOnlySignature:""}:ze(e[L])}function ze(e){if(!e||typeof e!="object")return{id:"",rules:[],candidates:{},composites:{},origins:{},cssOnlySignature:""};let{id:t,rules:s,candidates:r,composites:n,atomicClasses:a,origins:m,cssOnlySignature:o}=e;return{id:typeof t=="string"?t:"",rules:Array.isArray(s)?s:[],candidates:r&&typeof r=="object"?r:{},composites:n&&typeof n=="object"?n:{},...Array.isArray(a)?{atomicClasses:a}:{},origins:m&&typeof m=="object"?m:{},cssOnlySignature:typeof o=="string"?o:""}}var fe=(e={},t)=>{U(e);let s=e.cssFileName??"cssx.css",r=e.sourceMap??!0,n=new Map,a=(0,Q.createClassNameAllocator)(),m=new Map,o,g=process.cwd(),u,y=()=>P(e),x=async function(l,i){let p=new Set(Object.values(i).flatMap(d=>d.type==="chunk"?Object.keys(d.modules??{}):[]).map(v));if(t.framework!=="vite")for(let d of n.keys())p.has(d)||n.delete(d);let C=t.framework==="vite"?[...n.values()]:[...p].map(d=>{let h=We(this.getModuleInfo(d)?.meta);return Object.keys(h.candidates).length>0?h:n.get(d)??h}),f=await k(C,await y(),e.layer,r,e.darkMode,e.preflight);if(!f.css)return;let c=R(s,f.css);if(Object.hasOwn(i,c))throw new Error(`CSSX CSS asset collision at "${c}".`);if(this.emitFile({type:"asset",fileName:c,source:A(f,c)}),f.map){let d=`${c}.map`;if(Object.hasOwn(i,d))throw new Error(`CSSX CSS map asset collision at "${d}".`);this.emitFile({type:"asset",fileName:d,source:E(f.map,c)})}};return{name:"@cssxio/unplugin",enforce:"pre",transform:{filter:{id:He},async handler(l,i){e.themeFile&&this.addWatchFile?.((0,w.resolve)(process.cwd(),e.themeFile));let p=Ve(this),C=p?Z(p,e):void 0,f=await M(l,i,{...e,classNameAllocator:C?.classNameAllocator??a,...e.stableClassNames?{stableClassNameFileName:(0,w.relative)(p??process.cwd(),v(i)).replaceAll(w.sep,"/")}:{}},ie(this,i)),c={id:v(i),rules:f?.rules??[],candidates:f?.candidates??{},composites:f?.composites??{},atomicClasses:f?.atomicClasses??[],origins:f?.origins??{},cssOnlySignature:f?.cssOnlySignature??""};re(this,c,L);let d=v(i);(f||d===i)&&(n.set(d,c),m.set((0,w.resolve)(g,d),c),C?.transformedDataById.set(d,c)),t.framework==="vite"&&u&&q(u,H("/",s));let h=f?.code??l;return{code:(t.framework==="webpack"||t.framework==="rspack")&&f?`${h}
6
+ ${Ge(s)}`:h,meta:{[L]:c},...f?.map?{map:f.map}:{}}}},watchChange(l,i){i.event==="delete"&&n.delete(v(l))},rollup:{generateBundle:x},vite:{generateBundle:x,configureServer(l){u=l;let i=H(l.config.base,s),p=H("/",s);l.watcher?.on("unlink",C=>{n.delete(v(C)),q(l,p)}),l.middlewares.use((C,f,c)=>{let d=C.url?.split("?",1)[0];if(d!==i&&(d!==`${i}.map`||!r))return c();y().then(h=>k([...n.values()],h,e.layer,r,e.darkMode,e.preflight)).then(h=>{if(d===`${i}.map`){f.setHeader("Content-Type","application/json; charset=utf-8"),f.setHeader("Cache-Control","no-store"),f.end(h.map?E(h.map,s):"");return}f.setHeader("Content-Type","text/css; charset=utf-8"),f.setHeader("Cache-Control","no-store"),f.end(A(h,s))}).catch(h=>{f.setHeader("Content-Type","text/plain; charset=utf-8"),f.end(h instanceof Error?h.message:"Unable to compile CSSX development stylesheet.")})})},hotUpdate:{order:"pre",async handler(l){let i=this.environment;if(!i||i.name==="client")return;let p=l.modules.filter(c=>{let d=n.get(v(c.id??""));return!!(d&&d.cssOnlySignature&&d.atomicClasses?.length===0)});if(p.length===0)return;let C=new Map(p.map(c=>[c,n.get(v(c.id)).cssOnlySignature]));for(let c of p)c.url&&await i.transformRequest(c.url);if(p.every(c=>{let d=n.get(v(c.id));return!!(d&&d.atomicClasses.length===0&&d.cssOnlySignature===C.get(c))}))return Xe(i,p,l.timestamp),l.modules.filter(c=>!p.includes(c))}}},...t.framework==="webpack"?{webpack(l){let i=Z(l.context,e);z(l,s,y,e.layer,r,L,i.transformedDataById,e.darkMode,e.preflight,e.stableClassNames?()=>G(l.context,e):void 0)}}:{},...t.framework==="rspack"?{rspack(l){let i=Z(l.context,e);z(l,s,y,e.layer,r,L,i.transformedDataById,e.darkMode,e.preflight,e.stableClassNames?()=>G(l.context,e):void 0)}}:{},...t.framework==="esbuild"?{esbuild:{config(l){l.metafile=!0},setup(l){let i=l.initialOptions.absWorkingDir??process.cwd();g=i,l.onEnd(async p=>{if(!p.metafile)return;let C=new Set(Object.keys(p.metafile.inputs).map(h=>(0,w.resolve)(i,h)));for(let h of m.keys())C.has(h)||m.delete(h);let f=await k([...m.values()],await y(),e.layer,r,e.darkMode,e.preflight),c=_(i,l.initialOptions,R(s,f.css));if(!f.css){o&&await(0,j.unlink)(o).catch(()=>{}),o=void 0;return}let d=A(f,(0,w.basename)(c));if(l.initialOptions.write===!1){let h=p.outputFiles;if(!h)return;let O={path:c,contents:pe.Buffer.from(d),hash:"",text:d};if(h.findIndex(ge=>ge.path===c)!==-1)throw new Error(`CSSX CSS asset collision at "${c}".`);h.push(O);return}await(0,j.mkdir)((0,w.dirname)(c),{recursive:!0}),await(0,j.writeFile)(c,d),o=c})}}}:{}}},$=(0,me.createUnplugin)(fe);function Ge(e){return`if (typeof document !== "undefined" && typeof module !== "undefined" && module.hot) {
7
7
  const key = "__cssxStylesheetHmr";
8
8
  const state = globalThis[key] || (globalThis[key] = { revision: 0, staged: [], replacements: [] });
9
9
  const stylesheetLink = [...document.querySelectorAll('link[rel="stylesheet"]')].find((link) =>
@@ -90,4 +90,4 @@ ${Ue(n)}`:h,meta:{[j]:d},...f?.map?{map:f.map}:{}}}},watchChange(a,i){i.event===
90
90
  state.poll = setInterval(() => void refresh(), 500);
91
91
  }
92
92
  }
93
- }`}var He=L.vite,Ve=L.rollup,_e=L.webpack,We=L.rspack,Xe=L;0&&(module.exports={compileCssxStylesheet,esbuild,rollup,rspack,transformCssxModule,unplugin,unpluginFactory,vite,webpack});
93
+ }`}var qe=$.vite,Je=$.rollup,Ke=$.webpack,Ze=$.rspack,Qe=$;0&&(module.exports={compileCssxStylesheet,esbuild,rollup,rspack,transformCssxModule,unplugin,unpluginFactory,vite,webpack});
package/dist/index.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as _webpack from 'webpack';
2
2
  import * as _unplugin from 'unplugin';
3
3
  import { UnpluginFactory } from 'unplugin';
4
- import { C as CssxPluginOptions } from './options-CzBQAUBO.cjs';
4
+ import { C as CssxPluginOptions } from './options-BOiVAsHI.cjs';
5
5
  import { DarkMode, CssxRule, ClassNameAllocator } from '@cssxio/compiler';
6
6
  import { transformAsync } from '@babel/core';
7
7
  export { default as esbuild } from './esbuild.cjs';
@@ -106,6 +106,7 @@ interface IncomingSourceMap {
106
106
  declare function transformCssxModule(code: string, id: string, options?: CssxPluginOptions & {
107
107
  readonly classNameAllocator?: ClassNameAllocator;
108
108
  readonly stableClassNames?: boolean;
109
+ readonly stableClassNameFileName?: string;
109
110
  }, inputSourceMap?: IncomingSourceMap): Promise<TransformResult | null>;
110
111
 
111
112
  /**
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as _webpack from 'webpack';
2
2
  import * as _unplugin from 'unplugin';
3
3
  import { UnpluginFactory } from 'unplugin';
4
- import { C as CssxPluginOptions } from './options-CzBQAUBO.js';
4
+ import { C as CssxPluginOptions } from './options-BOiVAsHI.js';
5
5
  import { DarkMode, CssxRule, ClassNameAllocator } from '@cssxio/compiler';
6
6
  import { transformAsync } from '@babel/core';
7
7
  export { default as esbuild } from './esbuild.js';
@@ -106,6 +106,7 @@ interface IncomingSourceMap {
106
106
  declare function transformCssxModule(code: string, id: string, options?: CssxPluginOptions & {
107
107
  readonly classNameAllocator?: ClassNameAllocator;
108
108
  readonly stableClassNames?: boolean;
109
+ readonly stableClassNameFileName?: string;
109
110
  }, inputSourceMap?: IncomingSourceMap): Promise<TransformResult | null>;
110
111
 
111
112
  /**
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{a,b,c,d,e,f,g,h,i,j}from"./chunk-ZGXUEAIG.js";export{a as compileCssxStylesheet,i as default,j as esbuild,f as rollup,h as rspack,b as transformCssxModule,d as unplugin,c as unpluginFactory,e as vite,g as webpack};
1
+ import{a,b,c,d,e,f,g,h,i,j}from"./chunk-S64RLZTF.js";export{a as compileCssxStylesheet,i as default,j as esbuild,f as rollup,h as rspack,b as transformCssxModule,d as unplugin,c as unpluginFactory,e as vite,g as webpack};
@@ -1,4 +1,4 @@
1
- import { ReusabilityBudget, DarkMode } from '@cssxio/compiler';
1
+ import { ReusabilityBudget, ClassNameOptions, DarkMode } from '@cssxio/compiler';
2
2
 
3
3
  /** Options for a CSSX bundler adapter. */
4
4
  interface CssxPluginOptions {
@@ -16,6 +16,10 @@ interface CssxPluginOptions {
16
16
  readonly layer?: string;
17
17
  /** Controls how aggressively static styles share generated class fragments. */
18
18
  readonly reusabilityBudget?: ReusabilityBudget;
19
+ /** Options that control generated class names. */
20
+ readonly className?: ClassNameOptions;
21
+ /** Uses source-addressed composite class names across independent compiler processes. */
22
+ readonly stableClassNames?: boolean;
19
23
  /** Activates `dark` variants with a media query, `[data-theme=dark]`, or a `.dark` class. */
20
24
  readonly darkMode?: DarkMode;
21
25
  /** Adds CSSX's optional browser reset before generated utility rules. */
@@ -1,4 +1,4 @@
1
- import { ReusabilityBudget, DarkMode } from '@cssxio/compiler';
1
+ import { ReusabilityBudget, ClassNameOptions, DarkMode } from '@cssxio/compiler';
2
2
 
3
3
  /** Options for a CSSX bundler adapter. */
4
4
  interface CssxPluginOptions {
@@ -16,6 +16,10 @@ interface CssxPluginOptions {
16
16
  readonly layer?: string;
17
17
  /** Controls how aggressively static styles share generated class fragments. */
18
18
  readonly reusabilityBudget?: ReusabilityBudget;
19
+ /** Options that control generated class names. */
20
+ readonly className?: ClassNameOptions;
21
+ /** Uses source-addressed composite class names across independent compiler processes. */
22
+ readonly stableClassNames?: boolean;
19
23
  /** Activates `dark` variants with a media query, `[data-theme=dark]`, or a `.dark` class. */
20
24
  readonly darkMode?: DarkMode;
21
25
  /** Adds CSSX's optional browser reset before generated utility rules. */