dsh-generative-ui 0.0.0 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +90 -0
- package/cordis.patch.yml +6 -0
- package/lib/client.js +18568 -0
- package/lib/client.js.map +62 -0
- package/lib/index.js +1597 -0
- package/lib/types/client/canvas/CanvasLauncher.d.ts +6 -0
- package/lib/types/client/canvas/CanvasPanel.d.ts +88 -0
- package/lib/types/client/canvas/collect.d.ts +45 -0
- package/lib/types/client/canvas/index.d.ts +43 -0
- package/lib/types/client/canvas/mount.d.ts +30 -0
- package/lib/types/client/canvas/panel-css.d.ts +1 -0
- package/lib/types/client/canvas/read.d.ts +12 -0
- package/lib/types/client/canvas/subpages.d.ts +20 -0
- package/lib/types/client/canvas/useDismissable.d.ts +15 -0
- package/lib/types/client/index.d.ts +20 -0
- package/lib/types/client/runtime/GenUISurface.d.ts +159 -0
- package/lib/types/client/runtime/bindings.d.ts +143 -0
- package/lib/types/client/runtime/compiler.d.ts +35 -0
- package/lib/types/client/runtime/inline-fence.d.ts +23 -0
- package/lib/types/client/runtime/observe.d.ts +30 -0
- package/lib/types/client/runtime/register.d.ts +2 -0
- package/lib/types/client/runtime/registry.d.ts +7 -0
- package/lib/types/client/runtime/report-error.d.ts +17 -0
- package/lib/types/client/runtime/segments.d.ts +18 -0
- package/lib/types/client/runtime/state.d.ts +18 -0
- package/lib/types/client/runtime/uno-config.d.ts +16 -0
- package/lib/types/client/runtime/uno.d.ts +50 -0
- package/lib/types/client/session.d.ts +26 -0
- package/lib/types/contract-assets.d.ts +41 -0
- package/lib/types/contract.d.ts +56 -0
- package/lib/types/index.d.ts +255 -0
- package/lib/types/prompt.d.ts +13 -0
- package/lib/types/skill.d.ts +27 -0
- package/package.json +135 -9
- package/src/client/canvas/CanvasLauncher.tsx +52 -0
- package/src/client/canvas/CanvasPanel.tsx +238 -0
- package/src/client/canvas/collect.ts +188 -0
- package/src/client/canvas/index.ts +255 -0
- package/src/client/canvas/mount.ts +91 -0
- package/src/client/canvas/panel-css.ts +2 -0
- package/src/client/canvas/panel.css +242 -0
- package/src/client/canvas/read.ts +55 -0
- package/src/client/canvas/subpages.ts +109 -0
- package/src/client/canvas/useDismissable.ts +37 -0
- package/src/client/index.ts +217 -0
- package/src/client/runtime/GenUISurface.tsx +359 -0
- package/src/client/runtime/bindings.ts +292 -0
- package/src/client/runtime/compiler.ts +80 -0
- package/src/client/runtime/inline-fence.ts +222 -0
- package/src/client/runtime/observe.ts +65 -0
- package/src/client/runtime/register.ts +57 -0
- package/src/client/runtime/registry.ts +65 -0
- package/src/client/runtime/report-error.ts +79 -0
- package/src/client/runtime/segments.ts +116 -0
- package/src/client/runtime/state.ts +47 -0
- package/src/client/runtime/uno-config.ts +71 -0
- package/src/client/runtime/uno.ts +124 -0
- package/src/client/session.ts +46 -0
- package/src/contract-assets.ts +46 -0
- package/src/contract.ts +111 -0
- package/src/index.ts +583 -0
- package/src/prompt.ts +377 -0
- package/src/skill.ts +931 -0
- package/types/README.md +34 -0
- package/types/ai.d.ts +14 -0
- package/types/chat.d.ts +14 -0
- package/types/check.ts +39 -0
- package/types/exec.d.ts +17 -0
- package/types/fs.d.ts +17 -0
- package/types/importmap.json +10 -0
- package/types/standalone/ai.js +7 -0
- package/types/standalone/chat.js +6 -0
- package/types/standalone/exec.js +7 -0
- package/types/standalone/fs.js +18 -0
- package/types/standalone/importmap.json +10 -0
- package/types/standalone/state.js +24 -0
- package/types/standalone/web.js +7 -0
- package/types/state.d.ts +25 -0
- package/types/web.d.ts +31 -0
- package/index.js +0 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js", "../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js", "../node_modules/react-dom/server.browser.js", "../src/client/index.ts", "../src/client/runtime/GenUISurface.tsx", "../node_modules/partial-react/src/runtime.ts", "../node_modules/partial-react/src/state.ts", "../node_modules/partial-react/src/importMap.ts", "../node_modules/partial-react/src/importProbe.ts", "../node_modules/@esm.sh/tsx/pkg/tsx.js", "../node_modules/@esm.sh/tsx/index.mjs", "../node_modules/partial-tsx/src/partial.ts", "../node_modules/partial-react/src/compiler.ts", "../node_modules/partial-react/src/renderContext.ts", "../node_modules/partial-react/src/hookSignature.ts", "../src/contract-assets.ts", "../src/client/runtime/compiler.ts", "../src/client/runtime/registry.ts", "../src/contract.ts", "../src/client/runtime/register.ts", "../src/client/runtime/state.ts", "../src/client/runtime/bindings.ts", "../node_modules/@unocss/core/dist/index.mjs", "../node_modules/@unocss/preset-wind4/dist/postprocess.mjs", "../node_modules/@unocss/preset-wind4/dist/rolldown-runtime-BBjsoOtd.mjs", "../node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs", "../node_modules/magic-string/dist/index.mjs", "../node_modules/@unocss/rule-utils/dist/index.mjs", "../node_modules/@unocss/preset-wind4/dist/utils-q7HDXEs0.mjs", "../node_modules/@unocss/preset-wind4/dist/container-Be9Fugl0.mjs", "../node_modules/@unocss/preset-wind4/dist/rules.mjs", "../node_modules/@unocss/preset-wind4/dist/shortcuts.mjs", "../node_modules/@unocss/preset-wind4/dist/colors-LrxJAP6O.mjs", "../node_modules/@unocss/preset-wind4/dist/theme.mjs", "../node_modules/@unocss/preset-wind4/dist/variants-DqGWM6pS.mjs", "../node_modules/@unocss/extractor-arbitrary-variants/dist/index.mjs", "../node_modules/@unocss/preset-wind4/dist/index.mjs", "../src/client/runtime/uno-config.ts", "../src/client/runtime/uno.ts", "../src/client/runtime/report-error.ts", "../src/client/runtime/inline-fence.ts", "../src/client/runtime/observe.ts", "../src/client/runtime/segments.ts", "../src/client/session.ts", "../src/client/canvas/index.ts", "../src/client/canvas/CanvasPanel.tsx", "../src/client/canvas/read.ts", "../src/client/canvas/subpages.ts", "../src/client/canvas/useDismissable.ts", "../src/client/canvas/CanvasLauncher.tsx", "../src/client/canvas/panel-css.ts", "../src/client/canvas/collect.ts", "../src/client/canvas/mount.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * @license React\n * react-dom-server-legacy.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var aa=require(\"react\");function l(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar p=Object.prototype.hasOwnProperty,fa=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ha={},ia={};\nfunction ja(a){if(p.call(ia,a))return!0;if(p.call(ha,a))return!1;if(fa.test(a))return ia[a]=!0;ha[a]=!0;return!1}function r(a,b,c,d,f,e,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=f;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=e;this.removeEmptyString=g}var t={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){t[a]=new r(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];t[b]=new r(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){t[a]=new r(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){t[a]=new r(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){t[a]=new r(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){t[a]=new r(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){t[a]=new r(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){t[a]=new r(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){t[a]=new r(a,5,!1,a.toLowerCase(),null,!1,!1)});var ka=/[\\-:]([a-z])/g;function la(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ka,\nla);t[b]=new r(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ka,la);t[b]=new r(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ka,la);t[b]=new r(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){t[a]=new r(a,1,!1,a.toLowerCase(),null,!1,!1)});\nt.xlinkHref=new r(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){t[a]=new r(a,1,!1,a.toLowerCase(),null,!0,!0)});\nvar u={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,\nfillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ma=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(u).forEach(function(a){ma.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);u[b]=u[a]})});var na=/[\"'&<>]/;\nfunction v(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=na.exec(a);if(b){var c=\"\",d,f=0;for(d=b.index;d<a.length;d++){switch(a.charCodeAt(d)){case 34:b=\""\";break;case 38:b=\"&\";break;case 39:b=\"'\";break;case 60:b=\"<\";break;case 62:b=\">\";break;default:continue}f!==d&&(c+=a.substring(f,d));f=d+1;c+=b}a=f!==d?c+a.substring(f,d):c}return a}var oa=/([A-Z])/g,pa=/^ms-/,qa=Array.isArray;function w(a,b){return{insertionMode:a,selectedValue:b}}\nfunction ra(a,b,c){switch(b){case \"select\":return w(1,null!=c.value?c.value:c.defaultValue);case \"svg\":return w(2,null);case \"math\":return w(3,null);case \"foreignObject\":return w(1,null);case \"table\":return w(4,null);case \"thead\":case \"tbody\":case \"tfoot\":return w(5,null);case \"colgroup\":return w(7,null);case \"tr\":return w(6,null)}return 4<=a.insertionMode||0===a.insertionMode?w(1,null):a}var sa=new Map;\nfunction ta(a,b,c){if(\"object\"!==typeof c)throw Error(l(62));b=!0;for(var d in c)if(p.call(c,d)){var f=c[d];if(null!=f&&\"boolean\"!==typeof f&&\"\"!==f){if(0===d.indexOf(\"--\")){var e=v(d);f=v((\"\"+f).trim())}else{e=d;var g=sa.get(e);void 0!==g?e=g:(g=v(e.replace(oa,\"-$1\").toLowerCase().replace(pa,\"-ms-\")),sa.set(e,g),e=g);f=\"number\"===typeof f?0===f||p.call(u,d)?\"\"+f:f+\"px\":v((\"\"+f).trim())}b?(b=!1,a.push(' style=\"',e,\":\",f)):a.push(\";\",e,\":\",f)}}b||a.push('\"')}\nfunction x(a,b,c,d){switch(c){case \"style\":ta(a,b,d);return;case \"defaultValue\":case \"defaultChecked\":case \"innerHTML\":case \"suppressContentEditableWarning\":case \"suppressHydrationWarning\":return}if(!(2<c.length)||\"o\"!==c[0]&&\"O\"!==c[0]||\"n\"!==c[1]&&\"N\"!==c[1])if(b=t.hasOwnProperty(c)?t[c]:null,null!==b){switch(typeof d){case \"function\":case \"symbol\":return;case \"boolean\":if(!b.acceptsBooleans)return}c=b.attributeName;switch(b.type){case 3:d&&a.push(\" \",c,'=\"\"');break;case 4:!0===d?a.push(\" \",c,'=\"\"'):\n!1!==d&&a.push(\" \",c,'=\"',v(d),'\"');break;case 5:isNaN(d)||a.push(\" \",c,'=\"',v(d),'\"');break;case 6:!isNaN(d)&&1<=d&&a.push(\" \",c,'=\"',v(d),'\"');break;default:b.sanitizeURL&&(d=\"\"+d),a.push(\" \",c,'=\"',v(d),'\"')}}else if(ja(c)){switch(typeof d){case \"function\":case \"symbol\":return;case \"boolean\":if(b=c.toLowerCase().slice(0,5),\"data-\"!==b&&\"aria-\"!==b)return}a.push(\" \",c,'=\"',v(d),'\"')}}\nfunction y(a,b,c){if(null!=b){if(null!=c)throw Error(l(60));if(\"object\"!==typeof b||!(\"__html\"in b))throw Error(l(61));b=b.__html;null!==b&&void 0!==b&&a.push(\"\"+b)}}function ua(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}\nfunction va(a,b,c,d){a.push(A(c));var f=c=null,e;for(e in b)if(p.call(b,e)){var g=b[e];if(null!=g)switch(e){case \"children\":c=g;break;case \"dangerouslySetInnerHTML\":f=g;break;default:x(a,d,e,g)}}a.push(\">\");y(a,f,c);return\"string\"===typeof c?(a.push(v(c)),null):c}var wa=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,xa=new Map;function A(a){var b=xa.get(a);if(void 0===b){if(!wa.test(a))throw Error(l(65,a));b=\"<\"+a;xa.set(a,b)}return b}\nfunction ya(a,b,c,d,f){switch(b){case \"select\":a.push(A(\"select\"));var e=null,g=null;for(n in c)if(p.call(c,n)){var h=c[n];if(null!=h)switch(n){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;case \"defaultValue\":case \"value\":break;default:x(a,d,n,h)}}a.push(\">\");y(a,g,e);return e;case \"option\":g=f.selectedValue;a.push(A(\"option\"));var k=h=null,m=null;var n=null;for(e in c)if(p.call(c,e)){var q=c[e];if(null!=q)switch(e){case \"children\":h=q;break;case \"selected\":m=q;break;case \"dangerouslySetInnerHTML\":n=\nq;break;case \"value\":k=q;default:x(a,d,e,q)}}if(null!=g)if(c=null!==k?\"\"+k:ua(h),qa(g))for(d=0;d<g.length;d++){if(\"\"+g[d]===c){a.push(' selected=\"\"');break}}else\"\"+g===c&&a.push(' selected=\"\"');else m&&a.push(' selected=\"\"');a.push(\">\");y(a,n,h);return h;case \"textarea\":a.push(A(\"textarea\"));n=g=e=null;for(h in c)if(p.call(c,h)&&(k=c[h],null!=k))switch(h){case \"children\":n=k;break;case \"value\":e=k;break;case \"defaultValue\":g=k;break;case \"dangerouslySetInnerHTML\":throw Error(l(91));default:x(a,d,\nh,k)}null===e&&null!==g&&(e=g);a.push(\">\");if(null!=n){if(null!=e)throw Error(l(92));if(qa(n)&&1<n.length)throw Error(l(93));e=\"\"+n}\"string\"===typeof e&&\"\\n\"===e[0]&&a.push(\"\\n\");null!==e&&a.push(v(\"\"+e));return null;case \"input\":a.push(A(\"input\"));k=n=h=e=null;for(g in c)if(p.call(c,g)&&(m=c[g],null!=m))switch(g){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(l(399,\"input\"));case \"defaultChecked\":k=m;break;case \"defaultValue\":h=m;break;case \"checked\":n=m;break;case \"value\":e=m;break;\ndefault:x(a,d,g,m)}null!==n?x(a,d,\"checked\",n):null!==k&&x(a,d,\"checked\",k);null!==e?x(a,d,\"value\",e):null!==h&&x(a,d,\"value\",h);a.push(\"/>\");return null;case \"menuitem\":a.push(A(\"menuitem\"));for(var C in c)if(p.call(c,C)&&(e=c[C],null!=e))switch(C){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(l(400));default:x(a,d,C,e)}a.push(\">\");return null;case \"title\":a.push(A(\"title\"));e=null;for(q in c)if(p.call(c,q)&&(g=c[q],null!=g))switch(q){case \"children\":e=g;break;case \"dangerouslySetInnerHTML\":throw Error(l(434));\ndefault:x(a,d,q,g)}a.push(\">\");return e;case \"listing\":case \"pre\":a.push(A(b));g=e=null;for(k in c)if(p.call(c,k)&&(h=c[k],null!=h))switch(k){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;default:x(a,d,k,h)}a.push(\">\");if(null!=g){if(null!=e)throw Error(l(60));if(\"object\"!==typeof g||!(\"__html\"in g))throw Error(l(61));c=g.__html;null!==c&&void 0!==c&&(\"string\"===typeof c&&0<c.length&&\"\\n\"===c[0]?a.push(\"\\n\",c):a.push(\"\"+c))}\"string\"===typeof e&&\"\\n\"===e[0]&&a.push(\"\\n\");return e;\ncase \"area\":case \"base\":case \"br\":case \"col\":case \"embed\":case \"hr\":case \"img\":case \"keygen\":case \"link\":case \"meta\":case \"param\":case \"source\":case \"track\":case \"wbr\":a.push(A(b));for(var D in c)if(p.call(c,D)&&(e=c[D],null!=e))switch(D){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(l(399,b));default:x(a,d,D,e)}a.push(\"/>\");return null;case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return va(a,\nc,b,d);case \"html\":return 0===f.insertionMode&&a.push(\"<!DOCTYPE html>\"),va(a,c,b,d);default:if(-1===b.indexOf(\"-\")&&\"string\"!==typeof c.is)return va(a,c,b,d);a.push(A(b));g=e=null;for(m in c)if(p.call(c,m)&&(h=c[m],null!=h))switch(m){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;case \"style\":ta(a,d,h);break;case \"suppressContentEditableWarning\":case \"suppressHydrationWarning\":break;default:ja(m)&&\"function\"!==typeof h&&\"symbol\"!==typeof h&&a.push(\" \",m,'=\"',v(h),'\"')}a.push(\">\");\ny(a,g,e);return e}}function za(a,b,c){a.push('\\x3c!--$?--\\x3e<template id=\"');if(null===c)throw Error(l(395));a.push(c);return a.push('\"></template>')}\nfunction Aa(a,b,c,d){switch(c.insertionMode){case 0:case 1:return a.push('<div hidden id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 2:return a.push('<svg aria-hidden=\"true\" style=\"display:none\" id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 3:return a.push('<math aria-hidden=\"true\" style=\"display:none\" id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 4:return a.push('<table hidden id=\"'),a.push(b.segmentPrefix),\nb=d.toString(16),a.push(b),a.push('\">');case 5:return a.push('<table hidden><tbody id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 6:return a.push('<table hidden><tr id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');case 7:return a.push('<table hidden><colgroup id=\"'),a.push(b.segmentPrefix),b=d.toString(16),a.push(b),a.push('\">');default:throw Error(l(397));}}\nfunction Ba(a,b){switch(b.insertionMode){case 0:case 1:return a.push(\"</div>\");case 2:return a.push(\"</svg>\");case 3:return a.push(\"</math>\");case 4:return a.push(\"</table>\");case 5:return a.push(\"</tbody></table>\");case 6:return a.push(\"</tr></table>\");case 7:return a.push(\"</colgroup></table>\");default:throw Error(l(397));}}var Ca=/[<\\u2028\\u2029]/g;\nfunction Da(a){return JSON.stringify(a).replace(Ca,function(a){switch(a){case \"<\":return\"\\\\u003c\";case \"\\u2028\":return\"\\\\u2028\";case \"\\u2029\":return\"\\\\u2029\";default:throw Error(\"escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\");}})}\nfunction Ea(a,b){b=void 0===b?\"\":b;return{bootstrapChunks:[],startInlineScript:\"<script>\",placeholderPrefix:b+\"P:\",segmentPrefix:b+\"S:\",boundaryPrefix:b+\"B:\",idPrefix:b,nextSuspenseID:0,sentCompleteSegmentFunction:!1,sentCompleteBoundaryFunction:!1,sentClientRenderFunction:!1,generateStaticMarkup:a}}function Fa(a,b,c,d){if(c.generateStaticMarkup)return a.push(v(b)),!1;\"\"===b?a=d:(d&&a.push(\"\\x3c!-- --\\x3e\"),a.push(v(b)),a=!0);return a}\nvar B=Object.assign,Ga=Symbol.for(\"react.element\"),Ha=Symbol.for(\"react.portal\"),Ia=Symbol.for(\"react.fragment\"),Ja=Symbol.for(\"react.strict_mode\"),Ka=Symbol.for(\"react.profiler\"),La=Symbol.for(\"react.provider\"),Ma=Symbol.for(\"react.context\"),Na=Symbol.for(\"react.forward_ref\"),Oa=Symbol.for(\"react.suspense\"),Pa=Symbol.for(\"react.suspense_list\"),Qa=Symbol.for(\"react.memo\"),Ra=Symbol.for(\"react.lazy\"),Sa=Symbol.for(\"react.scope\"),Ta=Symbol.for(\"react.debug_trace_mode\"),Ua=Symbol.for(\"react.legacy_hidden\"),\nVa=Symbol.for(\"react.default_value\"),Wa=Symbol.iterator;\nfunction Xa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case Ia:return\"Fragment\";case Ha:return\"Portal\";case Ka:return\"Profiler\";case Ja:return\"StrictMode\";case Oa:return\"Suspense\";case Pa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ma:return(a.displayName||\"Context\")+\".Consumer\";case La:return(a._context.displayName||\"Context\")+\".Provider\";case Na:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Qa:return b=a.displayName||null,null!==b?b:Xa(a.type)||\"Memo\";case Ra:b=a._payload;a=a._init;try{return Xa(a(b))}catch(c){}}return null}var Ya={};function Za(a,b){a=a.contextTypes;if(!a)return Ya;var c={},d;for(d in a)c[d]=b[d];return c}var E=null;\nfunction F(a,b){if(a!==b){a.context._currentValue2=a.parentValue;a=a.parent;var c=b.parent;if(null===a){if(null!==c)throw Error(l(401));}else{if(null===c)throw Error(l(401));F(a,c)}b.context._currentValue2=b.value}}function $a(a){a.context._currentValue2=a.parentValue;a=a.parent;null!==a&&$a(a)}function ab(a){var b=a.parent;null!==b&&ab(b);a.context._currentValue2=a.value}\nfunction bb(a,b){a.context._currentValue2=a.parentValue;a=a.parent;if(null===a)throw Error(l(402));a.depth===b.depth?F(a,b):bb(a,b)}function cb(a,b){var c=b.parent;if(null===c)throw Error(l(402));a.depth===c.depth?F(a,c):cb(a,c);b.context._currentValue2=b.value}function G(a){var b=E;b!==a&&(null===b?ab(a):null===a?$a(b):b.depth===a.depth?F(b,a):b.depth>a.depth?bb(b,a):cb(b,a),E=a)}\nvar db={isMounted:function(){return!1},enqueueSetState:function(a,b){a=a._reactInternals;null!==a.queue&&a.queue.push(b)},enqueueReplaceState:function(a,b){a=a._reactInternals;a.replace=!0;a.queue=[b]},enqueueForceUpdate:function(){}};\nfunction eb(a,b,c,d){var f=void 0!==a.state?a.state:null;a.updater=db;a.props=c;a.state=f;var e={queue:[],replace:!1};a._reactInternals=e;var g=b.contextType;a.context=\"object\"===typeof g&&null!==g?g._currentValue2:d;g=b.getDerivedStateFromProps;\"function\"===typeof g&&(g=g(c,f),f=null===g||void 0===g?f:B({},f,g),a.state=f);if(\"function\"!==typeof b.getDerivedStateFromProps&&\"function\"!==typeof a.getSnapshotBeforeUpdate&&(\"function\"===typeof a.UNSAFE_componentWillMount||\"function\"===typeof a.componentWillMount))if(b=\na.state,\"function\"===typeof a.componentWillMount&&a.componentWillMount(),\"function\"===typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),b!==a.state&&db.enqueueReplaceState(a,a.state,null),null!==e.queue&&0<e.queue.length)if(b=e.queue,g=e.replace,e.queue=null,e.replace=!1,g&&1===b.length)a.state=b[0];else{e=g?b[0]:a.state;f=!0;for(g=g?1:0;g<b.length;g++){var h=b[g];h=\"function\"===typeof h?h.call(a,e,c,d):h;null!=h&&(f?(f=!1,e=B({},e,h)):B(e,h))}a.state=e}else e.queue=null}\nvar fb={id:1,overflow:\"\"};function gb(a,b,c){var d=a.id;a=a.overflow;var f=32-H(d)-1;d&=~(1<<f);c+=1;var e=32-H(b)+f;if(30<e){var g=f-f%5;e=(d&(1<<g)-1).toString(32);d>>=g;f-=g;return{id:1<<32-H(b)+f|c<<f|d,overflow:e+a}}return{id:1<<e|c<<f|d,overflow:a}}var H=Math.clz32?Math.clz32:hb,ib=Math.log,jb=Math.LN2;function hb(a){a>>>=0;return 0===a?32:31-(ib(a)/jb|0)|0}function kb(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}\nvar lb=\"function\"===typeof Object.is?Object.is:kb,I=null,ob=null,J=null,K=null,L=!1,M=!1,N=0,O=null,P=0;function Q(){if(null===I)throw Error(l(321));return I}function pb(){if(0<P)throw Error(l(312));return{memoizedState:null,queue:null,next:null}}function qb(){null===K?null===J?(L=!1,J=K=pb()):(L=!0,K=J):null===K.next?(L=!1,K=K.next=pb()):(L=!0,K=K.next);return K}function rb(){ob=I=null;M=!1;J=null;P=0;K=O=null}function sb(a,b){return\"function\"===typeof b?b(a):b}\nfunction tb(a,b,c){I=Q();K=qb();if(L){var d=K.queue;b=d.dispatch;if(null!==O&&(c=O.get(d),void 0!==c)){O.delete(d);d=K.memoizedState;do d=a(d,c.action),c=c.next;while(null!==c);K.memoizedState=d;return[d,b]}return[K.memoizedState,b]}a=a===sb?\"function\"===typeof b?b():b:void 0!==c?c(b):b;K.memoizedState=a;a=K.queue={last:null,dispatch:null};a=a.dispatch=ub.bind(null,I,a);return[K.memoizedState,a]}\nfunction vb(a,b){I=Q();K=qb();b=void 0===b?null:b;if(null!==K){var c=K.memoizedState;if(null!==c&&null!==b){var d=c[1];a:if(null===d)d=!1;else{for(var f=0;f<d.length&&f<b.length;f++)if(!lb(b[f],d[f])){d=!1;break a}d=!0}if(d)return c[0]}}a=a();K.memoizedState=[a,b];return a}function ub(a,b,c){if(25<=P)throw Error(l(301));if(a===I)if(M=!0,a={action:c,next:null},null===O&&(O=new Map),c=O.get(b),void 0===c)O.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}}function wb(){throw Error(l(394));}\nfunction R(){}\nvar xb={readContext:function(a){return a._currentValue2},useContext:function(a){Q();return a._currentValue2},useMemo:vb,useReducer:tb,useRef:function(a){I=Q();K=qb();var b=K.memoizedState;return null===b?(a={current:a},K.memoizedState=a):b},useState:function(a){return tb(sb,a)},useInsertionEffect:R,useLayoutEffect:function(){},useCallback:function(a,b){return vb(function(){return a},b)},useImperativeHandle:R,useEffect:R,useDebugValue:R,useDeferredValue:function(a){Q();return a},useTransition:function(){Q();return[!1,\nwb]},useId:function(){var a=ob.treeContext;var b=a.overflow;a=a.id;a=(a&~(1<<32-H(a)-1)).toString(32)+b;var c=S;if(null===c)throw Error(l(404));b=N++;a=\":\"+c.idPrefix+\"R\"+a;0<b&&(a+=\"H\"+b.toString(32));return a+\":\"},useMutableSource:function(a,b){Q();return b(a._source)},useSyncExternalStore:function(a,b,c){if(void 0===c)throw Error(l(407));return c()}},S=null,yb=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function zb(a){console.error(a);return null}\nfunction T(){}\nfunction Ab(a,b,c,d,f,e,g,h,k){var m=[],n=new Set;b={destination:null,responseState:b,progressiveChunkSize:void 0===d?12800:d,status:0,fatalError:null,nextSegmentId:0,allPendingTasks:0,pendingRootTasks:0,completedRootSegment:null,abortableTasks:n,pingedTasks:m,clientRenderedBoundaries:[],completedBoundaries:[],partialBoundaries:[],onError:void 0===f?zb:f,onAllReady:void 0===e?T:e,onShellReady:void 0===g?T:g,onShellError:void 0===h?T:h,onFatalError:void 0===k?T:k};c=U(b,0,null,c,!1,!1);c.parentFlushed=\n!0;a=Bb(b,a,null,c,n,Ya,null,fb);m.push(a);return b}function Bb(a,b,c,d,f,e,g,h){a.allPendingTasks++;null===c?a.pendingRootTasks++:c.pendingTasks++;var k={node:b,ping:function(){var b=a.pingedTasks;b.push(k);1===b.length&&Cb(a)},blockedBoundary:c,blockedSegment:d,abortSet:f,legacyContext:e,context:g,treeContext:h};f.add(k);return k}function U(a,b,c,d,f,e){return{status:0,id:-1,index:b,parentFlushed:!1,chunks:[],children:[],formatContext:d,boundary:c,lastPushedText:f,textEmbedded:e}}\nfunction V(a,b){a=a.onError(b);if(null!=a&&\"string\"!==typeof a)throw Error('onError returned something with a type other than \"string\". onError should return a string and may return null or undefined but must not return anything else. It received something of type \"'+typeof a+'\" instead');return a}function W(a,b){var c=a.onShellError;c(b);c=a.onFatalError;c(b);null!==a.destination?(a.status=2,a.destination.destroy(b)):(a.status=1,a.fatalError=b)}\nfunction Db(a,b,c,d,f){I={};ob=b;N=0;for(a=c(d,f);M;)M=!1,N=0,P+=1,K=null,a=c(d,f);rb();return a}function Eb(a,b,c,d){var f=c.render(),e=d.childContextTypes;if(null!==e&&void 0!==e){var g=b.legacyContext;if(\"function\"!==typeof c.getChildContext)d=g;else{c=c.getChildContext();for(var h in c)if(!(h in e))throw Error(l(108,Xa(d)||\"Unknown\",h));d=B({},g,c)}b.legacyContext=d;X(a,b,f);b.legacyContext=g}else X(a,b,f)}\nfunction Fb(a,b){if(a&&a.defaultProps){b=B({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}\nfunction Gb(a,b,c,d,f){if(\"function\"===typeof c)if(c.prototype&&c.prototype.isReactComponent){f=Za(c,b.legacyContext);var e=c.contextType;e=new c(d,\"object\"===typeof e&&null!==e?e._currentValue2:f);eb(e,c,d,f);Eb(a,b,e,c)}else{e=Za(c,b.legacyContext);f=Db(a,b,c,d,e);var g=0!==N;if(\"object\"===typeof f&&null!==f&&\"function\"===typeof f.render&&void 0===f.$$typeof)eb(f,c,d,e),Eb(a,b,f,c);else if(g){d=b.treeContext;b.treeContext=gb(d,1,0);try{X(a,b,f)}finally{b.treeContext=d}}else X(a,b,f)}else if(\"string\"===\ntypeof c){f=b.blockedSegment;e=ya(f.chunks,c,d,a.responseState,f.formatContext);f.lastPushedText=!1;g=f.formatContext;f.formatContext=ra(g,c,d);Hb(a,b,e);f.formatContext=g;switch(c){case \"area\":case \"base\":case \"br\":case \"col\":case \"embed\":case \"hr\":case \"img\":case \"input\":case \"keygen\":case \"link\":case \"meta\":case \"param\":case \"source\":case \"track\":case \"wbr\":break;default:f.chunks.push(\"</\",c,\">\")}f.lastPushedText=!1}else{switch(c){case Ua:case Ta:case Ja:case Ka:case Ia:X(a,b,d.children);return;\ncase Pa:X(a,b,d.children);return;case Sa:throw Error(l(343));case Oa:a:{c=b.blockedBoundary;f=b.blockedSegment;e=d.fallback;d=d.children;g=new Set;var h={id:null,rootSegmentID:-1,parentFlushed:!1,pendingTasks:0,forceClientRender:!1,completedSegments:[],byteSize:0,fallbackAbortableTasks:g,errorDigest:null},k=U(a,f.chunks.length,h,f.formatContext,!1,!1);f.children.push(k);f.lastPushedText=!1;var m=U(a,0,null,f.formatContext,!1,!1);m.parentFlushed=!0;b.blockedBoundary=h;b.blockedSegment=m;try{if(Hb(a,\nb,d),a.responseState.generateStaticMarkup||m.lastPushedText&&m.textEmbedded&&m.chunks.push(\"\\x3c!-- --\\x3e\"),m.status=1,Y(h,m),0===h.pendingTasks)break a}catch(n){m.status=4,h.forceClientRender=!0,h.errorDigest=V(a,n)}finally{b.blockedBoundary=c,b.blockedSegment=f}b=Bb(a,e,c,k,g,b.legacyContext,b.context,b.treeContext);a.pingedTasks.push(b)}return}if(\"object\"===typeof c&&null!==c)switch(c.$$typeof){case Na:d=Db(a,b,c.render,d,f);if(0!==N){c=b.treeContext;b.treeContext=gb(c,1,0);try{X(a,b,d)}finally{b.treeContext=\nc}}else X(a,b,d);return;case Qa:c=c.type;d=Fb(c,d);Gb(a,b,c,d,f);return;case La:f=d.children;c=c._context;d=d.value;e=c._currentValue2;c._currentValue2=d;g=E;E=d={parent:g,depth:null===g?0:g.depth+1,context:c,parentValue:e,value:d};b.context=d;X(a,b,f);a=E;if(null===a)throw Error(l(403));d=a.parentValue;a.context._currentValue2=d===Va?a.context._defaultValue:d;a=E=a.parent;b.context=a;return;case Ma:d=d.children;d=d(c._currentValue2);X(a,b,d);return;case Ra:f=c._init;c=f(c._payload);d=Fb(c,d);Gb(a,\nb,c,d,void 0);return}throw Error(l(130,null==c?c:typeof c,\"\"));}}\nfunction X(a,b,c){b.node=c;if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Ga:Gb(a,b,c.type,c.props,c.ref);return;case Ha:throw Error(l(257));case Ra:var d=c._init;c=d(c._payload);X(a,b,c);return}if(qa(c)){Ib(a,b,c);return}null===c||\"object\"!==typeof c?d=null:(d=Wa&&c[Wa]||c[\"@@iterator\"],d=\"function\"===typeof d?d:null);if(d&&(d=d.call(c))){c=d.next();if(!c.done){var f=[];do f.push(c.value),c=d.next();while(!c.done);Ib(a,b,f)}return}a=Object.prototype.toString.call(c);throw Error(l(31,\"[object Object]\"===\na?\"object with keys {\"+Object.keys(c).join(\", \")+\"}\":a));}\"string\"===typeof c?(d=b.blockedSegment,d.lastPushedText=Fa(b.blockedSegment.chunks,c,a.responseState,d.lastPushedText)):\"number\"===typeof c&&(d=b.blockedSegment,d.lastPushedText=Fa(b.blockedSegment.chunks,\"\"+c,a.responseState,d.lastPushedText))}function Ib(a,b,c){for(var d=c.length,f=0;f<d;f++){var e=b.treeContext;b.treeContext=gb(e,d,f);try{Hb(a,b,c[f])}finally{b.treeContext=e}}}\nfunction Hb(a,b,c){var d=b.blockedSegment.formatContext,f=b.legacyContext,e=b.context;try{return X(a,b,c)}catch(k){if(rb(),\"object\"===typeof k&&null!==k&&\"function\"===typeof k.then){c=k;var g=b.blockedSegment,h=U(a,g.chunks.length,null,g.formatContext,g.lastPushedText,!0);g.children.push(h);g.lastPushedText=!1;a=Bb(a,b.node,b.blockedBoundary,h,b.abortSet,b.legacyContext,b.context,b.treeContext).ping;c.then(a,a);b.blockedSegment.formatContext=d;b.legacyContext=f;b.context=e;G(e)}else throw b.blockedSegment.formatContext=\nd,b.legacyContext=f,b.context=e,G(e),k;}}function Jb(a){var b=a.blockedBoundary;a=a.blockedSegment;a.status=3;Kb(this,b,a)}\nfunction Lb(a,b,c){var d=a.blockedBoundary;a.blockedSegment.status=3;null===d?(b.allPendingTasks--,2!==b.status&&(b.status=2,null!==b.destination&&b.destination.push(null))):(d.pendingTasks--,d.forceClientRender||(d.forceClientRender=!0,a=void 0===c?Error(l(432)):c,d.errorDigest=b.onError(a),d.parentFlushed&&b.clientRenderedBoundaries.push(d)),d.fallbackAbortableTasks.forEach(function(a){return Lb(a,b,c)}),d.fallbackAbortableTasks.clear(),b.allPendingTasks--,0===b.allPendingTasks&&(d=b.onAllReady,\nd()))}function Y(a,b){if(0===b.chunks.length&&1===b.children.length&&null===b.children[0].boundary){var c=b.children[0];c.id=b.id;c.parentFlushed=!0;1===c.status&&Y(a,c)}else a.completedSegments.push(b)}\nfunction Kb(a,b,c){if(null===b){if(c.parentFlushed){if(null!==a.completedRootSegment)throw Error(l(389));a.completedRootSegment=c}a.pendingRootTasks--;0===a.pendingRootTasks&&(a.onShellError=T,b=a.onShellReady,b())}else b.pendingTasks--,b.forceClientRender||(0===b.pendingTasks?(c.parentFlushed&&1===c.status&&Y(b,c),b.parentFlushed&&a.completedBoundaries.push(b),b.fallbackAbortableTasks.forEach(Jb,a),b.fallbackAbortableTasks.clear()):c.parentFlushed&&1===c.status&&(Y(b,c),1===b.completedSegments.length&&\nb.parentFlushed&&a.partialBoundaries.push(b)));a.allPendingTasks--;0===a.allPendingTasks&&(a=a.onAllReady,a())}\nfunction Cb(a){if(2!==a.status){var b=E,c=yb.current;yb.current=xb;var d=S;S=a.responseState;try{var f=a.pingedTasks,e;for(e=0;e<f.length;e++){var g=f[e];var h=a,k=g.blockedSegment;if(0===k.status){G(g.context);try{X(h,g,g.node),h.responseState.generateStaticMarkup||k.lastPushedText&&k.textEmbedded&&k.chunks.push(\"\\x3c!-- --\\x3e\"),g.abortSet.delete(g),k.status=1,Kb(h,g.blockedBoundary,k)}catch(z){if(rb(),\"object\"===typeof z&&null!==z&&\"function\"===typeof z.then){var m=g.ping;z.then(m,m)}else{g.abortSet.delete(g);\nk.status=4;var n=g.blockedBoundary,q=z,C=V(h,q);null===n?W(h,q):(n.pendingTasks--,n.forceClientRender||(n.forceClientRender=!0,n.errorDigest=C,n.parentFlushed&&h.clientRenderedBoundaries.push(n)));h.allPendingTasks--;if(0===h.allPendingTasks){var D=h.onAllReady;D()}}}finally{}}}f.splice(0,e);null!==a.destination&&Mb(a,a.destination)}catch(z){V(a,z),W(a,z)}finally{S=d,yb.current=c,c===xb&&G(b)}}}\nfunction Z(a,b,c){c.parentFlushed=!0;switch(c.status){case 0:var d=c.id=a.nextSegmentId++;c.lastPushedText=!1;c.textEmbedded=!1;a=a.responseState;b.push('<template id=\"');b.push(a.placeholderPrefix);a=d.toString(16);b.push(a);return b.push('\"></template>');case 1:c.status=2;var f=!0;d=c.chunks;var e=0;c=c.children;for(var g=0;g<c.length;g++){for(f=c[g];e<f.index;e++)b.push(d[e]);f=Nb(a,b,f)}for(;e<d.length-1;e++)b.push(d[e]);e<d.length&&(f=b.push(d[e]));return f;default:throw Error(l(390));}}\nfunction Nb(a,b,c){var d=c.boundary;if(null===d)return Z(a,b,c);d.parentFlushed=!0;if(d.forceClientRender)return a.responseState.generateStaticMarkup||(d=d.errorDigest,b.push(\"\\x3c!--$!--\\x3e\"),b.push(\"<template\"),d&&(b.push(' data-dgst=\"'),d=v(d),b.push(d),b.push('\"')),b.push(\"></template>\")),Z(a,b,c),a=a.responseState.generateStaticMarkup?!0:b.push(\"\\x3c!--/$--\\x3e\"),a;if(0<d.pendingTasks){d.rootSegmentID=a.nextSegmentId++;0<d.completedSegments.length&&a.partialBoundaries.push(d);var f=a.responseState;\nvar e=f.nextSuspenseID++;f=f.boundaryPrefix+e.toString(16);d=d.id=f;za(b,a.responseState,d);Z(a,b,c);return b.push(\"\\x3c!--/$--\\x3e\")}if(d.byteSize>a.progressiveChunkSize)return d.rootSegmentID=a.nextSegmentId++,a.completedBoundaries.push(d),za(b,a.responseState,d.id),Z(a,b,c),b.push(\"\\x3c!--/$--\\x3e\");a.responseState.generateStaticMarkup||b.push(\"\\x3c!--$--\\x3e\");c=d.completedSegments;if(1!==c.length)throw Error(l(391));Nb(a,b,c[0]);a=a.responseState.generateStaticMarkup?!0:b.push(\"\\x3c!--/$--\\x3e\");\nreturn a}function Ob(a,b,c){Aa(b,a.responseState,c.formatContext,c.id);Nb(a,b,c);return Ba(b,c.formatContext)}\nfunction Pb(a,b,c){for(var d=c.completedSegments,f=0;f<d.length;f++)Qb(a,b,c,d[f]);d.length=0;a=a.responseState;d=c.id;c=c.rootSegmentID;b.push(a.startInlineScript);a.sentCompleteBoundaryFunction?b.push('$RC(\"'):(a.sentCompleteBoundaryFunction=!0,b.push('function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if(\"/$\"===d)if(0===e)break;else e--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data=\"$\";a._reactRetry&&a._reactRetry()}};$RC(\"'));if(null===\nd)throw Error(l(395));c=c.toString(16);b.push(d);b.push('\",\"');b.push(a.segmentPrefix);b.push(c);return b.push('\")\\x3c/script>')}\nfunction Qb(a,b,c,d){if(2===d.status)return!0;var f=d.id;if(-1===f){if(-1===(d.id=c.rootSegmentID))throw Error(l(392));return Ob(a,b,d)}Ob(a,b,d);a=a.responseState;b.push(a.startInlineScript);a.sentCompleteSegmentFunction?b.push('$RS(\"'):(a.sentCompleteSegmentFunction=!0,b.push('function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS(\"'));b.push(a.segmentPrefix);\nf=f.toString(16);b.push(f);b.push('\",\"');b.push(a.placeholderPrefix);b.push(f);return b.push('\")\\x3c/script>')}\nfunction Mb(a,b){try{var c=a.completedRootSegment;if(null!==c&&0===a.pendingRootTasks){Nb(a,b,c);a.completedRootSegment=null;var d=a.responseState.bootstrapChunks;for(c=0;c<d.length-1;c++)b.push(d[c]);c<d.length&&b.push(d[c])}var f=a.clientRenderedBoundaries,e;for(e=0;e<f.length;e++){var g=f[e];d=b;var h=a.responseState,k=g.id,m=g.errorDigest,n=g.errorMessage,q=g.errorComponentStack;d.push(h.startInlineScript);h.sentClientRenderFunction?d.push('$RX(\"'):(h.sentClientRenderFunction=!0,d.push('function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data=\"$!\",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())};$RX(\"'));\nif(null===k)throw Error(l(395));d.push(k);d.push('\"');if(m||n||q){d.push(\",\");var C=Da(m||\"\");d.push(C)}if(n||q){d.push(\",\");var D=Da(n||\"\");d.push(D)}if(q){d.push(\",\");var z=Da(q);d.push(z)}if(!d.push(\")\\x3c/script>\")){a.destination=null;e++;f.splice(0,e);return}}f.splice(0,e);var ba=a.completedBoundaries;for(e=0;e<ba.length;e++)if(!Pb(a,b,ba[e])){a.destination=null;e++;ba.splice(0,e);return}ba.splice(0,e);var ca=a.partialBoundaries;for(e=0;e<ca.length;e++){var mb=ca[e];a:{f=a;g=b;var da=mb.completedSegments;\nfor(h=0;h<da.length;h++)if(!Qb(f,g,mb,da[h])){h++;da.splice(0,h);var nb=!1;break a}da.splice(0,h);nb=!0}if(!nb){a.destination=null;e++;ca.splice(0,e);return}}ca.splice(0,e);var ea=a.completedBoundaries;for(e=0;e<ea.length;e++)if(!Pb(a,b,ea[e])){a.destination=null;e++;ea.splice(0,e);return}ea.splice(0,e)}finally{0===a.allPendingTasks&&0===a.pingedTasks.length&&0===a.clientRenderedBoundaries.length&&0===a.completedBoundaries.length&&b.push(null)}}\nfunction Rb(a,b){try{var c=a.abortableTasks;c.forEach(function(c){return Lb(c,a,b)});c.clear();null!==a.destination&&Mb(a,a.destination)}catch(d){V(a,d),W(a,d)}}function Sb(){}\nfunction Tb(a,b,c,d){var f=!1,e=null,g=\"\",h={push:function(a){null!==a&&(g+=a);return!0},destroy:function(a){f=!0;e=a}},k=!1;a=Ab(a,Ea(c,b?b.identifierPrefix:void 0),{insertionMode:1,selectedValue:null},Infinity,Sb,void 0,function(){k=!0},void 0,void 0);Cb(a);Rb(a,d);if(1===a.status)a.status=2,h.destroy(a.fatalError);else if(2!==a.status&&null===a.destination){a.destination=h;try{Mb(a,h)}catch(m){V(a,m),W(a,m)}}if(f)throw e;if(!k)throw Error(l(426));return g}\nexports.renderToNodeStream=function(){throw Error(l(207));};exports.renderToStaticMarkup=function(a,b){return Tb(a,b,!0,'The server used \"renderToStaticMarkup\" which does not support Suspense. If you intended to have the server wait for the suspended component please switch to \"renderToReadableStream\" which supports Suspense on the server')};exports.renderToStaticNodeStream=function(){throw Error(l(208));};exports.renderToString=function(a,b){return Tb(a,b,!1,'The server used \"renderToString\" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to \"renderToReadableStream\" which supports Suspense on the server')};\nexports.version=\"18.3.1\";\n",
|
|
6
|
+
"/**\n * @license React\n * react-dom-server.browser.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var aa=require(\"react\");function k(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var l=null,n=0;\nfunction p(a,b){if(0!==b.length)if(512<b.length)0<n&&(a.enqueue(new Uint8Array(l.buffer,0,n)),l=new Uint8Array(512),n=0),a.enqueue(b);else{var c=l.length-n;c<b.length&&(0===c?a.enqueue(l):(l.set(b.subarray(0,c),n),a.enqueue(l),b=b.subarray(c)),l=new Uint8Array(512),n=0);l.set(b,n);n+=b.length}}function t(a,b){p(a,b);return!0}function ba(a){l&&0<n&&(a.enqueue(new Uint8Array(l.buffer,0,n)),l=null,n=0)}var ca=new TextEncoder;function u(a){return ca.encode(a)}function w(a){return ca.encode(a)}\nfunction da(a,b){\"function\"===typeof a.error?a.error(b):a.close()}var x=Object.prototype.hasOwnProperty,ea=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,fa={},ha={};\nfunction ia(a){if(x.call(ha,a))return!0;if(x.call(fa,a))return!1;if(ea.test(a))return ha[a]=!0;fa[a]=!0;return!1}function y(a,b,c,d,f,e,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=f;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=e;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new y(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new y(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new y(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new y(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new y(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new y(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new y(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new y(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new y(a,5,!1,a.toLowerCase(),null,!1,!1)});var ja=/[\\-:]([a-z])/g;function ka(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ja,\nka);z[b]=new y(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ja,ka);z[b]=new y(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ja,ka);z[b]=new y(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new y(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new y(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new y(a,1,!1,a.toLowerCase(),null,!0,!0)});\nvar B={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,\nfillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},la=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(B).forEach(function(a){la.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);B[b]=B[a]})});var oa=/[\"'&<>]/;\nfunction C(a){if(\"boolean\"===typeof a||\"number\"===typeof a)return\"\"+a;a=\"\"+a;var b=oa.exec(a);if(b){var c=\"\",d,f=0;for(d=b.index;d<a.length;d++){switch(a.charCodeAt(d)){case 34:b=\""\";break;case 38:b=\"&\";break;case 39:b=\"'\";break;case 60:b=\"<\";break;case 62:b=\">\";break;default:continue}f!==d&&(c+=a.substring(f,d));f=d+1;c+=b}a=f!==d?c+a.substring(f,d):c}return a}\nvar pa=/([A-Z])/g,qa=/^ms-/,ra=Array.isArray,sa=w(\"<script>\"),ta=w(\"\\x3c/script>\"),ua=w('<script src=\"'),va=w('<script type=\"module\" src=\"'),wa=w('\" async=\"\">\\x3c/script>'),xa=/(<\\/|<)(s)(cript)/gi;function ya(a,b,c,d){return\"\"+b+(\"s\"===c?\"\\\\u0073\":\"\\\\u0053\")+d}\nfunction za(a,b,c,d,f){a=void 0===a?\"\":a;b=void 0===b?sa:w('<script nonce=\"'+C(b)+'\">');var e=[];void 0!==c&&e.push(b,u((\"\"+c).replace(xa,ya)),ta);if(void 0!==d)for(c=0;c<d.length;c++)e.push(ua,u(C(d[c])),wa);if(void 0!==f)for(d=0;d<f.length;d++)e.push(va,u(C(f[d])),wa);return{bootstrapChunks:e,startInlineScript:b,placeholderPrefix:w(a+\"P:\"),segmentPrefix:w(a+\"S:\"),boundaryPrefix:a+\"B:\",idPrefix:a,nextSuspenseID:0,sentCompleteSegmentFunction:!1,sentCompleteBoundaryFunction:!1,sentClientRenderFunction:!1}}\nfunction D(a,b){return{insertionMode:a,selectedValue:b}}function Aa(a){return D(\"http://www.w3.org/2000/svg\"===a?2:\"http://www.w3.org/1998/Math/MathML\"===a?3:0,null)}\nfunction Ba(a,b,c){switch(b){case \"select\":return D(1,null!=c.value?c.value:c.defaultValue);case \"svg\":return D(2,null);case \"math\":return D(3,null);case \"foreignObject\":return D(1,null);case \"table\":return D(4,null);case \"thead\":case \"tbody\":case \"tfoot\":return D(5,null);case \"colgroup\":return D(7,null);case \"tr\":return D(6,null)}return 4<=a.insertionMode||0===a.insertionMode?D(1,null):a}var Ca=w(\"\\x3c!-- --\\x3e\");function Da(a,b,c,d){if(\"\"===b)return d;d&&a.push(Ca);a.push(u(C(b)));return!0}\nvar Ea=new Map,Fa=w(' style=\"'),Ga=w(\":\"),Ha=w(\";\");\nfunction Ia(a,b,c){if(\"object\"!==typeof c)throw Error(k(62));b=!0;for(var d in c)if(x.call(c,d)){var f=c[d];if(null!=f&&\"boolean\"!==typeof f&&\"\"!==f){if(0===d.indexOf(\"--\")){var e=u(C(d));f=u(C((\"\"+f).trim()))}else{e=d;var g=Ea.get(e);void 0!==g?e=g:(g=w(C(e.replace(pa,\"-$1\").toLowerCase().replace(qa,\"-ms-\"))),Ea.set(e,g),e=g);f=\"number\"===typeof f?0===f||x.call(B,d)?u(\"\"+f):u(f+\"px\"):u(C((\"\"+f).trim()))}b?(b=!1,a.push(Fa,e,Ga,f)):a.push(Ha,e,Ga,f)}}b||a.push(E)}\nvar H=w(\" \"),I=w('=\"'),E=w('\"'),Ja=w('=\"\"');\nfunction J(a,b,c,d){switch(c){case \"style\":Ia(a,b,d);return;case \"defaultValue\":case \"defaultChecked\":case \"innerHTML\":case \"suppressContentEditableWarning\":case \"suppressHydrationWarning\":return}if(!(2<c.length)||\"o\"!==c[0]&&\"O\"!==c[0]||\"n\"!==c[1]&&\"N\"!==c[1])if(b=z.hasOwnProperty(c)?z[c]:null,null!==b){switch(typeof d){case \"function\":case \"symbol\":return;case \"boolean\":if(!b.acceptsBooleans)return}c=u(b.attributeName);switch(b.type){case 3:d&&a.push(H,c,Ja);break;case 4:!0===d?a.push(H,c,Ja):!1!==\nd&&a.push(H,c,I,u(C(d)),E);break;case 5:isNaN(d)||a.push(H,c,I,u(C(d)),E);break;case 6:!isNaN(d)&&1<=d&&a.push(H,c,I,u(C(d)),E);break;default:b.sanitizeURL&&(d=\"\"+d),a.push(H,c,I,u(C(d)),E)}}else if(ia(c)){switch(typeof d){case \"function\":case \"symbol\":return;case \"boolean\":if(b=c.toLowerCase().slice(0,5),\"data-\"!==b&&\"aria-\"!==b)return}a.push(H,u(c),I,u(C(d)),E)}}var K=w(\">\"),Ka=w(\"/>\");\nfunction L(a,b,c){if(null!=b){if(null!=c)throw Error(k(60));if(\"object\"!==typeof b||!(\"__html\"in b))throw Error(k(61));b=b.__html;null!==b&&void 0!==b&&a.push(u(\"\"+b))}}function La(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}var Ma=w(' selected=\"\"');\nfunction Na(a,b,c,d){a.push(M(c));var f=c=null,e;for(e in b)if(x.call(b,e)){var g=b[e];if(null!=g)switch(e){case \"children\":c=g;break;case \"dangerouslySetInnerHTML\":f=g;break;default:J(a,d,e,g)}}a.push(K);L(a,f,c);return\"string\"===typeof c?(a.push(u(C(c))),null):c}var Oa=w(\"\\n\"),Pa=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,Qa=new Map;function M(a){var b=Qa.get(a);if(void 0===b){if(!Pa.test(a))throw Error(k(65,a));b=w(\"<\"+a);Qa.set(a,b)}return b}var Ra=w(\"<!DOCTYPE html>\");\nfunction Sa(a,b,c,d,f){switch(b){case \"select\":a.push(M(\"select\"));var e=null,g=null;for(r in c)if(x.call(c,r)){var h=c[r];if(null!=h)switch(r){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;case \"defaultValue\":case \"value\":break;default:J(a,d,r,h)}}a.push(K);L(a,g,e);return e;case \"option\":g=f.selectedValue;a.push(M(\"option\"));var m=h=null,q=null;var r=null;for(e in c)if(x.call(c,e)){var v=c[e];if(null!=v)switch(e){case \"children\":h=v;break;case \"selected\":q=v;break;case \"dangerouslySetInnerHTML\":r=\nv;break;case \"value\":m=v;default:J(a,d,e,v)}}if(null!=g)if(c=null!==m?\"\"+m:La(h),ra(g))for(d=0;d<g.length;d++){if(\"\"+g[d]===c){a.push(Ma);break}}else\"\"+g===c&&a.push(Ma);else q&&a.push(Ma);a.push(K);L(a,r,h);return h;case \"textarea\":a.push(M(\"textarea\"));r=g=e=null;for(h in c)if(x.call(c,h)&&(m=c[h],null!=m))switch(h){case \"children\":r=m;break;case \"value\":e=m;break;case \"defaultValue\":g=m;break;case \"dangerouslySetInnerHTML\":throw Error(k(91));default:J(a,d,h,m)}null===e&&null!==g&&(e=g);a.push(K);\nif(null!=r){if(null!=e)throw Error(k(92));if(ra(r)&&1<r.length)throw Error(k(93));e=\"\"+r}\"string\"===typeof e&&\"\\n\"===e[0]&&a.push(Oa);null!==e&&a.push(u(C(\"\"+e)));return null;case \"input\":a.push(M(\"input\"));m=r=h=e=null;for(g in c)if(x.call(c,g)&&(q=c[g],null!=q))switch(g){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(k(399,\"input\"));case \"defaultChecked\":m=q;break;case \"defaultValue\":h=q;break;case \"checked\":r=q;break;case \"value\":e=q;break;default:J(a,d,g,q)}null!==r?J(a,d,\"checked\",\nr):null!==m&&J(a,d,\"checked\",m);null!==e?J(a,d,\"value\",e):null!==h&&J(a,d,\"value\",h);a.push(Ka);return null;case \"menuitem\":a.push(M(\"menuitem\"));for(var A in c)if(x.call(c,A)&&(e=c[A],null!=e))switch(A){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(k(400));default:J(a,d,A,e)}a.push(K);return null;case \"title\":a.push(M(\"title\"));e=null;for(v in c)if(x.call(c,v)&&(g=c[v],null!=g))switch(v){case \"children\":e=g;break;case \"dangerouslySetInnerHTML\":throw Error(k(434));default:J(a,d,v,g)}a.push(K);\nreturn e;case \"listing\":case \"pre\":a.push(M(b));g=e=null;for(m in c)if(x.call(c,m)&&(h=c[m],null!=h))switch(m){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;default:J(a,d,m,h)}a.push(K);if(null!=g){if(null!=e)throw Error(k(60));if(\"object\"!==typeof g||!(\"__html\"in g))throw Error(k(61));c=g.__html;null!==c&&void 0!==c&&(\"string\"===typeof c&&0<c.length&&\"\\n\"===c[0]?a.push(Oa,u(c)):a.push(u(\"\"+c)))}\"string\"===typeof e&&\"\\n\"===e[0]&&a.push(Oa);return e;case \"area\":case \"base\":case \"br\":case \"col\":case \"embed\":case \"hr\":case \"img\":case \"keygen\":case \"link\":case \"meta\":case \"param\":case \"source\":case \"track\":case \"wbr\":a.push(M(b));\nfor(var F in c)if(x.call(c,F)&&(e=c[F],null!=e))switch(F){case \"children\":case \"dangerouslySetInnerHTML\":throw Error(k(399,b));default:J(a,d,F,e)}a.push(Ka);return null;case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return Na(a,c,b,d);case \"html\":return 0===f.insertionMode&&a.push(Ra),Na(a,c,b,d);default:if(-1===b.indexOf(\"-\")&&\"string\"!==typeof c.is)return Na(a,c,b,d);a.push(M(b));\ng=e=null;for(q in c)if(x.call(c,q)&&(h=c[q],null!=h))switch(q){case \"children\":e=h;break;case \"dangerouslySetInnerHTML\":g=h;break;case \"style\":Ia(a,d,h);break;case \"suppressContentEditableWarning\":case \"suppressHydrationWarning\":break;default:ia(q)&&\"function\"!==typeof h&&\"symbol\"!==typeof h&&a.push(H,u(q),I,u(C(h)),E)}a.push(K);L(a,g,e);return e}}\nvar Ta=w(\"</\"),Ua=w(\">\"),Va=w('<template id=\"'),Wa=w('\"></template>'),Xa=w(\"\\x3c!--$--\\x3e\"),Ya=w('\\x3c!--$?--\\x3e<template id=\"'),Za=w('\"></template>'),$a=w(\"\\x3c!--$!--\\x3e\"),ab=w(\"\\x3c!--/$--\\x3e\"),bb=w(\"<template\"),cb=w('\"'),db=w(' data-dgst=\"');w(' data-msg=\"');w(' data-stck=\"');var eb=w(\"></template>\");function fb(a,b,c){p(a,Ya);if(null===c)throw Error(k(395));p(a,c);return t(a,Za)}\nvar gb=w('<div hidden id=\"'),hb=w('\">'),ib=w(\"</div>\"),jb=w('<svg aria-hidden=\"true\" style=\"display:none\" id=\"'),kb=w('\">'),lb=w(\"</svg>\"),mb=w('<math aria-hidden=\"true\" style=\"display:none\" id=\"'),nb=w('\">'),ob=w(\"</math>\"),pb=w('<table hidden id=\"'),qb=w('\">'),rb=w(\"</table>\"),sb=w('<table hidden><tbody id=\"'),tb=w('\">'),ub=w(\"</tbody></table>\"),vb=w('<table hidden><tr id=\"'),wb=w('\">'),xb=w(\"</tr></table>\"),yb=w('<table hidden><colgroup id=\"'),zb=w('\">'),Ab=w(\"</colgroup></table>\");\nfunction Bb(a,b,c,d){switch(c.insertionMode){case 0:case 1:return p(a,gb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,hb);case 2:return p(a,jb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,kb);case 3:return p(a,mb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,nb);case 4:return p(a,pb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,qb);case 5:return p(a,sb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,tb);case 6:return p(a,vb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,wb);case 7:return p(a,\nyb),p(a,b.segmentPrefix),p(a,u(d.toString(16))),t(a,zb);default:throw Error(k(397));}}function Cb(a,b){switch(b.insertionMode){case 0:case 1:return t(a,ib);case 2:return t(a,lb);case 3:return t(a,ob);case 4:return t(a,rb);case 5:return t(a,ub);case 6:return t(a,xb);case 7:return t(a,Ab);default:throw Error(k(397));}}\nvar Db=w('function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS(\"'),Eb=w('$RS(\"'),Gb=w('\",\"'),Hb=w('\")\\x3c/script>'),Ib=w('function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if(\"/$\"===d)if(0===e)break;else e--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data=\"$\";a._reactRetry&&a._reactRetry()}};$RC(\"'),\nJb=w('$RC(\"'),Kb=w('\",\"'),Lb=w('\")\\x3c/script>'),Mb=w('function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data=\"$!\",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())};$RX(\"'),Nb=w('$RX(\"'),Ob=w('\"'),Pb=w(\")\\x3c/script>\"),Qb=w(\",\"),Rb=/[<\\u2028\\u2029]/g;\nfunction Sb(a){return JSON.stringify(a).replace(Rb,function(a){switch(a){case \"<\":return\"\\\\u003c\";case \"\\u2028\":return\"\\\\u2028\";case \"\\u2029\":return\"\\\\u2029\";default:throw Error(\"escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\");}})}\nvar N=Object.assign,Tb=Symbol.for(\"react.element\"),Ub=Symbol.for(\"react.portal\"),Vb=Symbol.for(\"react.fragment\"),Wb=Symbol.for(\"react.strict_mode\"),Xb=Symbol.for(\"react.profiler\"),Yb=Symbol.for(\"react.provider\"),Zb=Symbol.for(\"react.context\"),$b=Symbol.for(\"react.forward_ref\"),ac=Symbol.for(\"react.suspense\"),bc=Symbol.for(\"react.suspense_list\"),cc=Symbol.for(\"react.memo\"),dc=Symbol.for(\"react.lazy\"),ec=Symbol.for(\"react.scope\"),fc=Symbol.for(\"react.debug_trace_mode\"),gc=Symbol.for(\"react.legacy_hidden\"),\nhc=Symbol.for(\"react.default_value\"),ic=Symbol.iterator;\nfunction jc(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case Vb:return\"Fragment\";case Ub:return\"Portal\";case Xb:return\"Profiler\";case Wb:return\"StrictMode\";case ac:return\"Suspense\";case bc:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Zb:return(a.displayName||\"Context\")+\".Consumer\";case Yb:return(a._context.displayName||\"Context\")+\".Provider\";case $b:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case cc:return b=a.displayName||null,null!==b?b:jc(a.type)||\"Memo\";case dc:b=a._payload;a=a._init;try{return jc(a(b))}catch(c){}}return null}var kc={};function lc(a,b){a=a.contextTypes;if(!a)return kc;var c={},d;for(d in a)c[d]=b[d];return c}var O=null;\nfunction P(a,b){if(a!==b){a.context._currentValue=a.parentValue;a=a.parent;var c=b.parent;if(null===a){if(null!==c)throw Error(k(401));}else{if(null===c)throw Error(k(401));P(a,c)}b.context._currentValue=b.value}}function mc(a){a.context._currentValue=a.parentValue;a=a.parent;null!==a&&mc(a)}function nc(a){var b=a.parent;null!==b&&nc(b);a.context._currentValue=a.value}\nfunction oc(a,b){a.context._currentValue=a.parentValue;a=a.parent;if(null===a)throw Error(k(402));a.depth===b.depth?P(a,b):oc(a,b)}function pc(a,b){var c=b.parent;if(null===c)throw Error(k(402));a.depth===c.depth?P(a,c):pc(a,c);b.context._currentValue=b.value}function Q(a){var b=O;b!==a&&(null===b?nc(a):null===a?mc(b):b.depth===a.depth?P(b,a):b.depth>a.depth?oc(b,a):pc(b,a),O=a)}\nvar qc={isMounted:function(){return!1},enqueueSetState:function(a,b){a=a._reactInternals;null!==a.queue&&a.queue.push(b)},enqueueReplaceState:function(a,b){a=a._reactInternals;a.replace=!0;a.queue=[b]},enqueueForceUpdate:function(){}};\nfunction rc(a,b,c,d){var f=void 0!==a.state?a.state:null;a.updater=qc;a.props=c;a.state=f;var e={queue:[],replace:!1};a._reactInternals=e;var g=b.contextType;a.context=\"object\"===typeof g&&null!==g?g._currentValue:d;g=b.getDerivedStateFromProps;\"function\"===typeof g&&(g=g(c,f),f=null===g||void 0===g?f:N({},f,g),a.state=f);if(\"function\"!==typeof b.getDerivedStateFromProps&&\"function\"!==typeof a.getSnapshotBeforeUpdate&&(\"function\"===typeof a.UNSAFE_componentWillMount||\"function\"===typeof a.componentWillMount))if(b=\na.state,\"function\"===typeof a.componentWillMount&&a.componentWillMount(),\"function\"===typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),b!==a.state&&qc.enqueueReplaceState(a,a.state,null),null!==e.queue&&0<e.queue.length)if(b=e.queue,g=e.replace,e.queue=null,e.replace=!1,g&&1===b.length)a.state=b[0];else{e=g?b[0]:a.state;f=!0;for(g=g?1:0;g<b.length;g++){var h=b[g];h=\"function\"===typeof h?h.call(a,e,c,d):h;null!=h&&(f?(f=!1,e=N({},e,h)):N(e,h))}a.state=e}else e.queue=null}\nvar sc={id:1,overflow:\"\"};function tc(a,b,c){var d=a.id;a=a.overflow;var f=32-uc(d)-1;d&=~(1<<f);c+=1;var e=32-uc(b)+f;if(30<e){var g=f-f%5;e=(d&(1<<g)-1).toString(32);d>>=g;f-=g;return{id:1<<32-uc(b)+f|c<<f|d,overflow:e+a}}return{id:1<<e|c<<f|d,overflow:a}}var uc=Math.clz32?Math.clz32:vc,wc=Math.log,xc=Math.LN2;function vc(a){a>>>=0;return 0===a?32:31-(wc(a)/xc|0)|0}function yc(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}\nvar zc=\"function\"===typeof Object.is?Object.is:yc,R=null,Ac=null,Bc=null,S=null,T=!1,Cc=!1,U=0,V=null,Dc=0;function W(){if(null===R)throw Error(k(321));return R}function Ec(){if(0<Dc)throw Error(k(312));return{memoizedState:null,queue:null,next:null}}function Fc(){null===S?null===Bc?(T=!1,Bc=S=Ec()):(T=!0,S=Bc):null===S.next?(T=!1,S=S.next=Ec()):(T=!0,S=S.next);return S}function Gc(){Ac=R=null;Cc=!1;Bc=null;Dc=0;S=V=null}function Hc(a,b){return\"function\"===typeof b?b(a):b}\nfunction Ic(a,b,c){R=W();S=Fc();if(T){var d=S.queue;b=d.dispatch;if(null!==V&&(c=V.get(d),void 0!==c)){V.delete(d);d=S.memoizedState;do d=a(d,c.action),c=c.next;while(null!==c);S.memoizedState=d;return[d,b]}return[S.memoizedState,b]}a=a===Hc?\"function\"===typeof b?b():b:void 0!==c?c(b):b;S.memoizedState=a;a=S.queue={last:null,dispatch:null};a=a.dispatch=Jc.bind(null,R,a);return[S.memoizedState,a]}\nfunction Kc(a,b){R=W();S=Fc();b=void 0===b?null:b;if(null!==S){var c=S.memoizedState;if(null!==c&&null!==b){var d=c[1];a:if(null===d)d=!1;else{for(var f=0;f<d.length&&f<b.length;f++)if(!zc(b[f],d[f])){d=!1;break a}d=!0}if(d)return c[0]}}a=a();S.memoizedState=[a,b];return a}function Jc(a,b,c){if(25<=Dc)throw Error(k(301));if(a===R)if(Cc=!0,a={action:c,next:null},null===V&&(V=new Map),c=V.get(b),void 0===c)V.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}}\nfunction Lc(){throw Error(k(394));}function Mc(){}\nvar Oc={readContext:function(a){return a._currentValue},useContext:function(a){W();return a._currentValue},useMemo:Kc,useReducer:Ic,useRef:function(a){R=W();S=Fc();var b=S.memoizedState;return null===b?(a={current:a},S.memoizedState=a):b},useState:function(a){return Ic(Hc,a)},useInsertionEffect:Mc,useLayoutEffect:function(){},useCallback:function(a,b){return Kc(function(){return a},b)},useImperativeHandle:Mc,useEffect:Mc,useDebugValue:Mc,useDeferredValue:function(a){W();return a},useTransition:function(){W();\nreturn[!1,Lc]},useId:function(){var a=Ac.treeContext;var b=a.overflow;a=a.id;a=(a&~(1<<32-uc(a)-1)).toString(32)+b;var c=Nc;if(null===c)throw Error(k(404));b=U++;a=\":\"+c.idPrefix+\"R\"+a;0<b&&(a+=\"H\"+b.toString(32));return a+\":\"},useMutableSource:function(a,b){W();return b(a._source)},useSyncExternalStore:function(a,b,c){if(void 0===c)throw Error(k(407));return c()}},Nc=null,Pc=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function Qc(a){console.error(a);return null}\nfunction X(){}\nfunction Rc(a,b,c,d,f,e,g,h,m){var q=[],r=new Set;b={destination:null,responseState:b,progressiveChunkSize:void 0===d?12800:d,status:0,fatalError:null,nextSegmentId:0,allPendingTasks:0,pendingRootTasks:0,completedRootSegment:null,abortableTasks:r,pingedTasks:q,clientRenderedBoundaries:[],completedBoundaries:[],partialBoundaries:[],onError:void 0===f?Qc:f,onAllReady:void 0===e?X:e,onShellReady:void 0===g?X:g,onShellError:void 0===h?X:h,onFatalError:void 0===m?X:m};c=Sc(b,0,null,c,!1,!1);c.parentFlushed=\n!0;a=Tc(b,a,null,c,r,kc,null,sc);q.push(a);return b}function Tc(a,b,c,d,f,e,g,h){a.allPendingTasks++;null===c?a.pendingRootTasks++:c.pendingTasks++;var m={node:b,ping:function(){var b=a.pingedTasks;b.push(m);1===b.length&&Uc(a)},blockedBoundary:c,blockedSegment:d,abortSet:f,legacyContext:e,context:g,treeContext:h};f.add(m);return m}function Sc(a,b,c,d,f,e){return{status:0,id:-1,index:b,parentFlushed:!1,chunks:[],children:[],formatContext:d,boundary:c,lastPushedText:f,textEmbedded:e}}\nfunction Y(a,b){a=a.onError(b);if(null!=a&&\"string\"!==typeof a)throw Error('onError returned something with a type other than \"string\". onError should return a string and may return null or undefined but must not return anything else. It received something of type \"'+typeof a+'\" instead');return a}function Vc(a,b){var c=a.onShellError;c(b);c=a.onFatalError;c(b);null!==a.destination?(a.status=2,da(a.destination,b)):(a.status=1,a.fatalError=b)}\nfunction Wc(a,b,c,d,f){R={};Ac=b;U=0;for(a=c(d,f);Cc;)Cc=!1,U=0,Dc+=1,S=null,a=c(d,f);Gc();return a}function Xc(a,b,c,d){var f=c.render(),e=d.childContextTypes;if(null!==e&&void 0!==e){var g=b.legacyContext;if(\"function\"!==typeof c.getChildContext)d=g;else{c=c.getChildContext();for(var h in c)if(!(h in e))throw Error(k(108,jc(d)||\"Unknown\",h));d=N({},g,c)}b.legacyContext=d;Z(a,b,f);b.legacyContext=g}else Z(a,b,f)}\nfunction Yc(a,b){if(a&&a.defaultProps){b=N({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}\nfunction Zc(a,b,c,d,f){if(\"function\"===typeof c)if(c.prototype&&c.prototype.isReactComponent){f=lc(c,b.legacyContext);var e=c.contextType;e=new c(d,\"object\"===typeof e&&null!==e?e._currentValue:f);rc(e,c,d,f);Xc(a,b,e,c)}else{e=lc(c,b.legacyContext);f=Wc(a,b,c,d,e);var g=0!==U;if(\"object\"===typeof f&&null!==f&&\"function\"===typeof f.render&&void 0===f.$$typeof)rc(f,c,d,e),Xc(a,b,f,c);else if(g){d=b.treeContext;b.treeContext=tc(d,1,0);try{Z(a,b,f)}finally{b.treeContext=d}}else Z(a,b,f)}else if(\"string\"===\ntypeof c){f=b.blockedSegment;e=Sa(f.chunks,c,d,a.responseState,f.formatContext);f.lastPushedText=!1;g=f.formatContext;f.formatContext=Ba(g,c,d);$c(a,b,e);f.formatContext=g;switch(c){case \"area\":case \"base\":case \"br\":case \"col\":case \"embed\":case \"hr\":case \"img\":case \"input\":case \"keygen\":case \"link\":case \"meta\":case \"param\":case \"source\":case \"track\":case \"wbr\":break;default:f.chunks.push(Ta,u(c),Ua)}f.lastPushedText=!1}else{switch(c){case gc:case fc:case Wb:case Xb:case Vb:Z(a,b,d.children);return;\ncase bc:Z(a,b,d.children);return;case ec:throw Error(k(343));case ac:a:{c=b.blockedBoundary;f=b.blockedSegment;e=d.fallback;d=d.children;g=new Set;var h={id:null,rootSegmentID:-1,parentFlushed:!1,pendingTasks:0,forceClientRender:!1,completedSegments:[],byteSize:0,fallbackAbortableTasks:g,errorDigest:null},m=Sc(a,f.chunks.length,h,f.formatContext,!1,!1);f.children.push(m);f.lastPushedText=!1;var q=Sc(a,0,null,f.formatContext,!1,!1);q.parentFlushed=!0;b.blockedBoundary=h;b.blockedSegment=q;try{if($c(a,\nb,d),q.lastPushedText&&q.textEmbedded&&q.chunks.push(Ca),q.status=1,ad(h,q),0===h.pendingTasks)break a}catch(r){q.status=4,h.forceClientRender=!0,h.errorDigest=Y(a,r)}finally{b.blockedBoundary=c,b.blockedSegment=f}b=Tc(a,e,c,m,g,b.legacyContext,b.context,b.treeContext);a.pingedTasks.push(b)}return}if(\"object\"===typeof c&&null!==c)switch(c.$$typeof){case $b:d=Wc(a,b,c.render,d,f);if(0!==U){c=b.treeContext;b.treeContext=tc(c,1,0);try{Z(a,b,d)}finally{b.treeContext=c}}else Z(a,b,d);return;case cc:c=\nc.type;d=Yc(c,d);Zc(a,b,c,d,f);return;case Yb:f=d.children;c=c._context;d=d.value;e=c._currentValue;c._currentValue=d;g=O;O=d={parent:g,depth:null===g?0:g.depth+1,context:c,parentValue:e,value:d};b.context=d;Z(a,b,f);a=O;if(null===a)throw Error(k(403));d=a.parentValue;a.context._currentValue=d===hc?a.context._defaultValue:d;a=O=a.parent;b.context=a;return;case Zb:d=d.children;d=d(c._currentValue);Z(a,b,d);return;case dc:f=c._init;c=f(c._payload);d=Yc(c,d);Zc(a,b,c,d,void 0);return}throw Error(k(130,\nnull==c?c:typeof c,\"\"));}}\nfunction Z(a,b,c){b.node=c;if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Tb:Zc(a,b,c.type,c.props,c.ref);return;case Ub:throw Error(k(257));case dc:var d=c._init;c=d(c._payload);Z(a,b,c);return}if(ra(c)){bd(a,b,c);return}null===c||\"object\"!==typeof c?d=null:(d=ic&&c[ic]||c[\"@@iterator\"],d=\"function\"===typeof d?d:null);if(d&&(d=d.call(c))){c=d.next();if(!c.done){var f=[];do f.push(c.value),c=d.next();while(!c.done);bd(a,b,f)}return}a=Object.prototype.toString.call(c);throw Error(k(31,\"[object Object]\"===\na?\"object with keys {\"+Object.keys(c).join(\", \")+\"}\":a));}\"string\"===typeof c?(d=b.blockedSegment,d.lastPushedText=Da(b.blockedSegment.chunks,c,a.responseState,d.lastPushedText)):\"number\"===typeof c&&(d=b.blockedSegment,d.lastPushedText=Da(b.blockedSegment.chunks,\"\"+c,a.responseState,d.lastPushedText))}function bd(a,b,c){for(var d=c.length,f=0;f<d;f++){var e=b.treeContext;b.treeContext=tc(e,d,f);try{$c(a,b,c[f])}finally{b.treeContext=e}}}\nfunction $c(a,b,c){var d=b.blockedSegment.formatContext,f=b.legacyContext,e=b.context;try{return Z(a,b,c)}catch(m){if(Gc(),\"object\"===typeof m&&null!==m&&\"function\"===typeof m.then){c=m;var g=b.blockedSegment,h=Sc(a,g.chunks.length,null,g.formatContext,g.lastPushedText,!0);g.children.push(h);g.lastPushedText=!1;a=Tc(a,b.node,b.blockedBoundary,h,b.abortSet,b.legacyContext,b.context,b.treeContext).ping;c.then(a,a);b.blockedSegment.formatContext=d;b.legacyContext=f;b.context=e;Q(e)}else throw b.blockedSegment.formatContext=\nd,b.legacyContext=f,b.context=e,Q(e),m;}}function cd(a){var b=a.blockedBoundary;a=a.blockedSegment;a.status=3;dd(this,b,a)}\nfunction ed(a,b,c){var d=a.blockedBoundary;a.blockedSegment.status=3;null===d?(b.allPendingTasks--,2!==b.status&&(b.status=2,null!==b.destination&&b.destination.close())):(d.pendingTasks--,d.forceClientRender||(d.forceClientRender=!0,a=void 0===c?Error(k(432)):c,d.errorDigest=b.onError(a),d.parentFlushed&&b.clientRenderedBoundaries.push(d)),d.fallbackAbortableTasks.forEach(function(a){return ed(a,b,c)}),d.fallbackAbortableTasks.clear(),b.allPendingTasks--,0===b.allPendingTasks&&(d=b.onAllReady,d()))}\nfunction ad(a,b){if(0===b.chunks.length&&1===b.children.length&&null===b.children[0].boundary){var c=b.children[0];c.id=b.id;c.parentFlushed=!0;1===c.status&&ad(a,c)}else a.completedSegments.push(b)}\nfunction dd(a,b,c){if(null===b){if(c.parentFlushed){if(null!==a.completedRootSegment)throw Error(k(389));a.completedRootSegment=c}a.pendingRootTasks--;0===a.pendingRootTasks&&(a.onShellError=X,b=a.onShellReady,b())}else b.pendingTasks--,b.forceClientRender||(0===b.pendingTasks?(c.parentFlushed&&1===c.status&&ad(b,c),b.parentFlushed&&a.completedBoundaries.push(b),b.fallbackAbortableTasks.forEach(cd,a),b.fallbackAbortableTasks.clear()):c.parentFlushed&&1===c.status&&(ad(b,c),1===b.completedSegments.length&&\nb.parentFlushed&&a.partialBoundaries.push(b)));a.allPendingTasks--;0===a.allPendingTasks&&(a=a.onAllReady,a())}\nfunction Uc(a){if(2!==a.status){var b=O,c=Pc.current;Pc.current=Oc;var d=Nc;Nc=a.responseState;try{var f=a.pingedTasks,e;for(e=0;e<f.length;e++){var g=f[e];var h=a,m=g.blockedSegment;if(0===m.status){Q(g.context);try{Z(h,g,g.node),m.lastPushedText&&m.textEmbedded&&m.chunks.push(Ca),g.abortSet.delete(g),m.status=1,dd(h,g.blockedBoundary,m)}catch(G){if(Gc(),\"object\"===typeof G&&null!==G&&\"function\"===typeof G.then){var q=g.ping;G.then(q,q)}else{g.abortSet.delete(g);m.status=4;var r=g.blockedBoundary,\nv=G,A=Y(h,v);null===r?Vc(h,v):(r.pendingTasks--,r.forceClientRender||(r.forceClientRender=!0,r.errorDigest=A,r.parentFlushed&&h.clientRenderedBoundaries.push(r)));h.allPendingTasks--;if(0===h.allPendingTasks){var F=h.onAllReady;F()}}}finally{}}}f.splice(0,e);null!==a.destination&&fd(a,a.destination)}catch(G){Y(a,G),Vc(a,G)}finally{Nc=d,Pc.current=c,c===Oc&&Q(b)}}}\nfunction gd(a,b,c){c.parentFlushed=!0;switch(c.status){case 0:var d=c.id=a.nextSegmentId++;c.lastPushedText=!1;c.textEmbedded=!1;a=a.responseState;p(b,Va);p(b,a.placeholderPrefix);a=u(d.toString(16));p(b,a);return t(b,Wa);case 1:c.status=2;var f=!0;d=c.chunks;var e=0;c=c.children;for(var g=0;g<c.length;g++){for(f=c[g];e<f.index;e++)p(b,d[e]);f=hd(a,b,f)}for(;e<d.length-1;e++)p(b,d[e]);e<d.length&&(f=t(b,d[e]));return f;default:throw Error(k(390));}}\nfunction hd(a,b,c){var d=c.boundary;if(null===d)return gd(a,b,c);d.parentFlushed=!0;if(d.forceClientRender)d=d.errorDigest,t(b,$a),p(b,bb),d&&(p(b,db),p(b,u(C(d))),p(b,cb)),t(b,eb),gd(a,b,c);else if(0<d.pendingTasks){d.rootSegmentID=a.nextSegmentId++;0<d.completedSegments.length&&a.partialBoundaries.push(d);var f=a.responseState;var e=f.nextSuspenseID++;f=w(f.boundaryPrefix+e.toString(16));d=d.id=f;fb(b,a.responseState,d);gd(a,b,c)}else if(d.byteSize>a.progressiveChunkSize)d.rootSegmentID=a.nextSegmentId++,\na.completedBoundaries.push(d),fb(b,a.responseState,d.id),gd(a,b,c);else{t(b,Xa);c=d.completedSegments;if(1!==c.length)throw Error(k(391));hd(a,b,c[0])}return t(b,ab)}function id(a,b,c){Bb(b,a.responseState,c.formatContext,c.id);hd(a,b,c);return Cb(b,c.formatContext)}\nfunction jd(a,b,c){for(var d=c.completedSegments,f=0;f<d.length;f++)kd(a,b,c,d[f]);d.length=0;a=a.responseState;d=c.id;c=c.rootSegmentID;p(b,a.startInlineScript);a.sentCompleteBoundaryFunction?p(b,Jb):(a.sentCompleteBoundaryFunction=!0,p(b,Ib));if(null===d)throw Error(k(395));c=u(c.toString(16));p(b,d);p(b,Kb);p(b,a.segmentPrefix);p(b,c);return t(b,Lb)}\nfunction kd(a,b,c,d){if(2===d.status)return!0;var f=d.id;if(-1===f){if(-1===(d.id=c.rootSegmentID))throw Error(k(392));return id(a,b,d)}id(a,b,d);a=a.responseState;p(b,a.startInlineScript);a.sentCompleteSegmentFunction?p(b,Eb):(a.sentCompleteSegmentFunction=!0,p(b,Db));p(b,a.segmentPrefix);f=u(f.toString(16));p(b,f);p(b,Gb);p(b,a.placeholderPrefix);p(b,f);return t(b,Hb)}\nfunction fd(a,b){l=new Uint8Array(512);n=0;try{var c=a.completedRootSegment;if(null!==c&&0===a.pendingRootTasks){hd(a,b,c);a.completedRootSegment=null;var d=a.responseState.bootstrapChunks;for(c=0;c<d.length-1;c++)p(b,d[c]);c<d.length&&t(b,d[c])}var f=a.clientRenderedBoundaries,e;for(e=0;e<f.length;e++){var g=f[e];d=b;var h=a.responseState,m=g.id,q=g.errorDigest,r=g.errorMessage,v=g.errorComponentStack;p(d,h.startInlineScript);h.sentClientRenderFunction?p(d,Nb):(h.sentClientRenderFunction=!0,p(d,\nMb));if(null===m)throw Error(k(395));p(d,m);p(d,Ob);if(q||r||v)p(d,Qb),p(d,u(Sb(q||\"\")));if(r||v)p(d,Qb),p(d,u(Sb(r||\"\")));v&&(p(d,Qb),p(d,u(Sb(v))));if(!t(d,Pb)){a.destination=null;e++;f.splice(0,e);return}}f.splice(0,e);var A=a.completedBoundaries;for(e=0;e<A.length;e++)if(!jd(a,b,A[e])){a.destination=null;e++;A.splice(0,e);return}A.splice(0,e);ba(b);l=new Uint8Array(512);n=0;var F=a.partialBoundaries;for(e=0;e<F.length;e++){var G=F[e];a:{f=a;g=b;var ma=G.completedSegments;for(h=0;h<ma.length;h++)if(!kd(f,\ng,G,ma[h])){h++;ma.splice(0,h);var Fb=!1;break a}ma.splice(0,h);Fb=!0}if(!Fb){a.destination=null;e++;F.splice(0,e);return}}F.splice(0,e);var na=a.completedBoundaries;for(e=0;e<na.length;e++)if(!jd(a,b,na[e])){a.destination=null;e++;na.splice(0,e);return}na.splice(0,e)}finally{ba(b),0===a.allPendingTasks&&0===a.pingedTasks.length&&0===a.clientRenderedBoundaries.length&&0===a.completedBoundaries.length&&b.close()}}\nfunction ld(a,b){try{var c=a.abortableTasks;c.forEach(function(c){return ed(c,a,b)});c.clear();null!==a.destination&&fd(a,a.destination)}catch(d){Y(a,d),Vc(a,d)}}\nexports.renderToReadableStream=function(a,b){return new Promise(function(c,d){var f,e,g=new Promise(function(a,b){e=a;f=b}),h=Rc(a,za(b?b.identifierPrefix:void 0,b?b.nonce:void 0,b?b.bootstrapScriptContent:void 0,b?b.bootstrapScripts:void 0,b?b.bootstrapModules:void 0),Aa(b?b.namespaceURI:void 0),b?b.progressiveChunkSize:void 0,b?b.onError:void 0,e,function(){var a=new ReadableStream({type:\"bytes\",pull:function(a){if(1===h.status)h.status=2,da(a,h.fatalError);else if(2!==h.status&&null===h.destination){h.destination=\na;try{fd(h,a)}catch(A){Y(h,A),Vc(h,A)}}},cancel:function(){ld(h)}},{highWaterMark:0});a.allReady=g;c(a)},function(a){g.catch(function(){});d(a)},f);if(b&&b.signal){var m=b.signal,q=function(){ld(h,m.reason);m.removeEventListener(\"abort\",q)};m.addEventListener(\"abort\",q)}Uc(h)})};exports.version=\"18.3.1\";\n",
|
|
7
|
+
"'use strict';\n\nvar l, s;\nif (process.env.NODE_ENV === 'production') {\n l = require('./cjs/react-dom-server-legacy.browser.production.min.js');\n s = require('./cjs/react-dom-server.browser.production.min.js');\n} else {\n l = require('./cjs/react-dom-server-legacy.browser.development.js');\n s = require('./cjs/react-dom-server.browser.development.js');\n}\n\nexports.version = l.version;\nexports.renderToString = l.renderToString;\nexports.renderToStaticMarkup = l.renderToStaticMarkup;\nexports.renderToNodeStream = l.renderToNodeStream;\nexports.renderToStaticNodeStream = l.renderToStaticNodeStream;\nexports.renderToReadableStream = s.renderToReadableStream;\n",
|
|
8
|
+
"/**\n * Browser half: renders ui4a TSX the model writes, inline in the transcript and in a\n * canvas panel beside it.\n * @module dsh-generative-ui/client\n */\nimport { createElement } from \"react\";\nimport type { ClientContext } from \"@deepseek-ai/dsh-client-runtime/client\";\nimport type {} from \"@deepseek-ai/dsh-client-ui-layout/client\";\nimport type {} from \"@deepseek-ai/dsh-client-ui-conversation/client\";\nimport { GenUISurface } from \"./runtime/GenUISurface.tsx\";\nimport { cardRendered, reportCardError } from \"./runtime/report-error.ts\";\nimport { disposeCompiler } from \"./runtime/compiler.ts\";\nimport { dropSharedCompiler } from \"./runtime/GenUISurface.tsx\";\nimport { disposeRegistry } from \"./runtime/registry.ts\";\nimport { registerUi4aHost, releaseBindings, localImports } from \"./runtime/bindings.ts\";\nimport { claimInlineFences } from \"./runtime/inline-fence.ts\";\nimport { parseUi4aSegments, type Ui4aSegment } from \"./runtime/segments.ts\";\nimport { warmCompiler } from \"./runtime/compiler.ts\";\nimport { chatNodes, perNode, type ChatNodeView } from \"./session.ts\";\nimport { mountCanvasHost } from \"./canvas/index.ts\";\nimport { toolCallsOf, type CallBlock, type ToolCallView } from \"./canvas/collect.ts\";\nimport { canvasIdOf } from \"../contract.ts\";\n\nexport const inject = [\"sessions\"];\n\n/** Re-exported so `bun run smoke` can build the synthesized blob modules and parse them. */\nexport { localImports };\n\n/** Assistant text blocks, whose fences are the inline sources. */\ntype AssistantNodeData = { blocks?: readonly { kind: string; text?: string }[] };\n\nexport function apply(ctx: ClientContext): void {\n // Compiling anything pays a ~400 ms wasm init. Doing it now means the first fence the\n // user actually sees does not, and an idle tab is the cheapest possible moment for it.\n void warmCompiler();\n\n /**\n * Every ui4a fence in the current session's assistant prose, straight from the log.\n *\n * The host's markdown renderer withholds a fence's info string until the closing fence\n * arrives, so the DOM cannot identify a half-written ui4a block. The raw text has the\n * opening fence from its first token, which is what makes inline rendering streamable.\n */\n const segmentsOf = perNode(\n (node) => `${node.anchorSeq}:${textOf(node).length}`,\n (node) => parseUi4aSegments(textOf(node)),\n );\n const segments = (): readonly Ui4aSegment[] => segmentsOf(chatNodes(ctx)).flat();\n\n /**\n * Every tool call in the current session, in log order — the canvas source.\n *\n * `tool-call` nodes carry a lifecycle `root` (not the assistant's block list), and the\n * root's `call.argsRaw` grows while the call streams, which is what makes a canvas\n * render as it is written.\n */\n const callsOf = perNode(\n (node) => `${node.anchorSeq}:${callsKeyOf(node)}`,\n (node) => (node.kind === \"tool-call\" ? toolCallsOf(node.data) : []),\n );\n const calls = (): readonly ToolCallView[] => {\n const nodes = chatNodes(ctx);\n // Node iteration order is unspecified; log order decides which write wins.\n return callsOf(nodes)\n .map((calls, index) => ({ calls, seq: nodes[index]?.anchorSeq ?? 0 }))\n .toSorted((a, b) => a.seq - b.seq)\n .flatMap((entry) => entry.calls);\n };\n\n /** The current session's workspace, which canvas file reads resolve against. */\n const cwd = (): string | undefined => {\n const list = ctx.sessions.list.getSnapshot();\n return list.current === undefined ? undefined : list.byId[list.current]?.cwd;\n };\n\n /**\n * Identity of the open session, so a dismissed canvas stays dismissed only there.\n * Returns the branded `SessionId` rather than a plain string: `sessions.scope()` needs it.\n */\n const currentSession = () => ctx.sessions.list.getSnapshot().current;\n const sessionId = (): string => currentSession() ?? \"\";\n\n // Revoking on teardown is safe: a blob module that was already imported keeps working after\n // its URL is revoked (the module graph holds it), so this only reclaims URLs nothing can\n // reach any more. Without it every HMR round leaks one per registered specifier.\n ctx.effect(() => disposeRegistry, \"dsh-generative-ui: blob module URLs\");\n // The wasm half of the same problem: ~16MB per instance, one per HMR round, and upstream\n // offers no dispose — dropping the reference is all there is (see `disposeCompiler`).\n ctx.effect(\n () => () => {\n disposeCompiler();\n dropSharedCompiler();\n },\n \"dsh-generative-ui: tsx wasm instance\",\n );\n // What `$dsh/chat` calls into. A nested fiber, not a static inject: every name in\n // `inject` is a hard dependency, and a profile without `conversation` would otherwise\n // take the whole plugin down rather than just this one capability.\n ctx.inject([\"conversation\"], (scoped) => {\n scoped.effect(() => {\n // `conversation` is scope-addressed: reading it off the plugin's own context sends\n // into no session and rejects. The scope has to come from `sessions.scope(id)`, and\n // resolved per call rather than once — the reader switches sessions under us.\n //\n // `send` rejects on business failures and the caller is a generated card that cannot\n // handle it, so surface it rather than dropping it: a click that goes nowhere looks\n // exactly like a click that was never wired up.\n const release = registerUi4aHost({\n cwd,\n sessionId,\n send: (text) => {\n const id = currentSession();\n const session = id === undefined ? undefined : scoped.sessions.scope(id);\n if (session === undefined) return void console.error(\"[dsh-generative-ui] $dsh/chat: no session to send into\");\n // The scoped context is minted by the host and carries its own inject set, so our\n // outer declaration does not reach it — reading `conversation` off it directly\n // throws `cannot get property \"conversation\" without inject`. One more inject on\n // that context is what makes the property readable.\n session.inject([\"conversation\"], (addressed) => {\n void addressed.conversation.send(text).catch((error: unknown) => console.error(\"[dsh-generative-ui] $dsh/chat send failed\", error));\n });\n },\n });\n return () => {\n release();\n releaseBindings();\n };\n }, \"dsh-generative-ui: $dsh host\");\n });\n // A card that fails to compile used to be a red panel the reader saw and the model never did.\n // `onError` fires only for a failure that survived settling and retries, so this is the real\n // ones — see `report-error.ts` for why it is once per message and why it says it is automatic.\n const sendToModel = (text: string) => {\n const id = currentSession();\n const session = id === undefined ? undefined : ctx.sessions.scope(id);\n if (session === undefined) return;\n session.inject([\"conversation\"], (addressed) => {\n void addressed.conversation.send(text).catch((error: unknown) => console.error(\"[dsh-generative-ui] card error report failed\", error));\n });\n };\n\n // Mounted inside the effect, not beside it: `mountCanvasHost` reaches for MutationObserver\n // straight away, and doing that during registration is exactly what smoke rejects.\n let showCanvas: ((id: string) => void) | null = null;\n ctx.effect(() => {\n const host = mountCanvasHost({ calls, cwd, sessionId, onCardError: (message, phase) => reportCardError(sendToModel, message, phase), onCardRendered: cardRendered });\n showCanvas = host.show;\n return () => {\n showCanvas = null;\n host.dispose();\n };\n }, \"dsh-generative-ui: canvas column\");\n\n // The transcript's file links and the \"产物\" chips call `workspaces.openPath`, which hands\n // the path to the OS — so clicking a canvas the model just wrote opened it in an editor\n // rather than in the panel three inches to the right. Wrapping the method routes canvases\n // to the panel and forwards everything else untouched.\n ctx.inject([\"workspaces\"], (scoped) => {\n scoped.effect(() => {\n const workspaces = scoped.workspaces as { openPath?: (path: string) => Promise<void> };\n // Wrapping someone else's method is a bet on its shape. Losing that bet here would\n // throw during registration and take the whole plugin down, so a host without it\n // simply keeps its own behaviour.\n if (typeof workspaces.openPath !== \"function\") return () => {};\n const original = workspaces.openPath.bind(workspaces);\n workspaces.openPath = async (path: string) => {\n const id = canvasIdOf(path);\n // No panel mounted (headless, or torn down): the OS opener is still the right answer.\n if (id === null || showCanvas === null) return original(path);\n showCanvas(id);\n };\n // Restore rather than delete: another plugin may have wrapped it after us, and\n // deleting the own-property would expose theirs — or the prototype's — instead.\n return () => {\n workspaces.openPath = original;\n };\n }, \"dsh-generative-ui: canvas links open the panel\");\n });\n ctx.effect(\n () =>\n claimInlineFences({\n segments,\n render: ({ code, streaming }) => createElement(GenUISurface, { code, streaming, onError: (error, phase) => reportCardError(sendToModel, error.message, phase), onRendered: cardRendered }),\n }),\n \"dsh-generative-ui: inline fences\",\n );\n}\n\n/** All assistant prose in one node, concatenated; empty for every other node kind. */\nexport function textOf(node: ChatNodeView): string {\n const blocks = (node.data as AssistantNodeData | undefined)?.blocks;\n if (blocks === undefined) return \"\";\n let text = \"\";\n for (const block of blocks) if (block.kind === \"text\" && block.text !== undefined) text += block.text;\n return text;\n}\n\n/**\n * Cache key for a `tool-call` node: how far its arguments have streamed, plus which calls\n * have settled. Read straight off the node rather than through `toolCallsOf`, so computing\n * the key does not repeat the work the cache exists to avoid.\n *\n * The settled flags are part of the key, not a detail: a call's `argsRaw` is already\n * complete when `tool-result` arrives, so a length-only key would never invalidate and the\n * cached view would claim `streaming` forever — a canvas that never stops pulsing and an\n * `edit` that never marks it stale.\n */\nexport function callsKeyOf(node: ChatNodeView): string {\n const parts: string[] = [];\n const walk = (block: CallBlock | undefined): void => {\n if (block === undefined) return;\n parts.push(`${(block.call?.argsRaw ?? block.argsRaw)?.length ?? 0}${block.kind === \"tool-result\" ? \"!\" : \"\"}`);\n for (const child of block.subCalls ?? []) walk(child);\n };\n walk((node.data as { root?: CallBlock } | undefined)?.root);\n return parts.join(\",\");\n}\n",
|
|
9
|
+
"/**\n * One mounted GenUIRenderer. Owns the imperative renderer's lifecycle and nothing\n * else — what to render and where it comes from is the caller's business, which is\n * what lets the same surface back both the inline chat card and the canvas view.\n */\nimport { useEffect, useRef, useState } from \"react\";\nimport { GenUIRenderer } from \"partial-react\";\nimport { createBrowserTsxCompiler } from \"./compiler.ts\";\nimport { mergeFallbackImports } from \"partial-react/import-map\";\nimport { localImports } from \"./bindings.ts\";\nimport { UI4A_ROOT_CLASS, ensureUnoStyles } from \"./uno.ts\";\n\nexport type GenUISurfaceProps = {\n /** Full source when settled; the growing prefix while streaming. */\n code: string;\n /** True while `code` is still a prefix, so partial frames get normalized before compiling. */\n streaming?: boolean;\n /**\n * Keep React state across recompiles. Right for a growing stream, where each frame is\n * the previous one plus more text. Wrong for a whole-file replacement: the renderer\n * decides reuse from the hook signature, so a rewrite that keeps the same hooks — an\n * edited canvas usually does — is silently dropped rather than rendered.\n */\n preserveState?: boolean;\n /** Real compile diagnostics. Transient streaming frames are filtered out — see TRANSIENT below. */\n onError?: (error: Error, phase: \"transform\" | \"compile\" | \"render\") => void;\n /** Fires whenever a frame actually painted. Use it to clear a previously shown error. */\n onRendered?: () => void;\n className?: string;\n};\n\n/**\n * A ref that always holds the latest value, updated after commit rather than during render.\n *\n * Assigning `ref.current` in the render body is a side effect React may discard or replay.\n * Every reader here is a renderer callback that fires well after commit, so a plain effect\n * is early enough.\n */\nfunction useLatest<T>(value: T) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref;\n}\n\n/** The compiler owns a single wasm instance; one per document is both enough and what we can afford. */\nlet sharedCompiler: ReturnType<typeof createBrowserTsxCompiler> | null = null;\n/** Paired with `disposeCompiler`: the shared instance must go with the wasm behind it. */\nexport const dropSharedCompiler = () => {\n sharedCompiler = null;\n};\n\nexport const compiler = () => {\n if (sharedCompiler === null) {\n sharedCompiler = createBrowserTsxCompiler();\n }\n return sharedCompiler;\n};\n\n/**\n * Mid-stream frames legitimately fail: a prefix that has not reached `export default`\n * yet, or a half-written expression. partial-react treats these as transient and keeps\n * the last good frame, so surfacing them would just make the UI flash errors while the\n * model types. Only a failure that survives settling is the caller's business.\n */\n/** Exported for `test/transient.test.ts`: this decides whether the reader sees an error. */\nexport const TRANSIENT = /No default export found|Unexpected (end of|eof)/i;\n\n/**\n * A dependency that failed to arrive, not code that is wrong. esm.sh cold-starts and the\n * network drops, and the symptom is identical to a broken component — a blank surface — so\n * it is worth a few retries before anyone concludes the model wrote something wrong.\n */\n/** Exported for `test/transient.test.ts`. */\nexport const TRANSIENT_LOAD = /failed to fetch|failed to load|networkerror|load failed/i;\nconst MAX_RETRIES = 3;\n\n/**\n * Whether a reported error is worth another attempt.\n *\n * Extracted because it is the whole of the decision and none of the React: three conditions,\n * each of which sends the reader somewhere different when it is wrong. Exported for\n * `test/retry.test.ts`.\n */\n/**\n * Whether a mid-stream error is the stream not being finished yet.\n *\n * Both patterns come from the parse stages — `No default export found` is thrown inside\n * `importCompiledComponent` (compile), and an unexpected EOF is the transform rejecting a\n * prefix. A card whose own render throws a message that happens to match is a real error, so\n * the phase is part of the question rather than the message alone.\n */\nexport const isUnfinishedFrame = (message: string, phase: string, streaming: boolean) => streaming && phase !== \"render\" && TRANSIENT.test(message);\n\nexport const shouldRetry = (message: string, phase: string, streaming: boolean, attempts: number) => phase === \"compile\" && !streaming && TRANSIENT_LOAD.test(message) && attempts < MAX_RETRIES;\n/**\n * What to do with a frame, given what the surface already holds.\n *\n * `pushCode` APPENDS but a session event carries the whole prefix so far, so the difference\n * between these four answers is the difference between a correct surface and one whose buffer\n * doubles on every frame. Pure, because the decision is, and because a state machine that only\n * runs inside an effect with three refs is one nothing ever checks.\n *\n * - `nothing` the frame adds no text, or a settled frame re-delivers what is already painted\n * - `replace` settled: render the whole thing outright\n * - `append` streaming and the buffer is a prefix of this frame: push only the delta\n * - `restart` the prefix was rewritten (a re-delivered history page, or an edit)\n */\nexport type Delivery = { do: \"nothing\" } | { do: \"replace\"; code: string } | { do: \"append\"; delta: string } | { do: \"restart\"; code: string };\n\nexport const deliveryFor = (code: string, delivered: string, streaming: boolean): Delivery => {\n // Trailing whitespace only: the SETTLED frame is the streamed one plus the newline that sat\n // in front of the closing fence (`parseUi4aSegments` slices to `closeIndex`, the streaming\n // branch slices to the end of the buffer). Byte-comparing those two says \"changed\", and the\n // `replace` that follows tears the card down and rebuilds it — every card remounted once, at\n // the very moment the reader started using it, losing scroll position, focus and any state\n // held in a component. Nothing a reader can see is different, so nothing should be delivered.\n if (!streaming) return code.trimEnd() === delivered.trimEnd() ? { do: \"nothing\" } : { do: \"replace\", code };\n if (!code.startsWith(delivered)) return { do: \"restart\", code };\n const delta = code.slice(delivered.length);\n return delta === \"\" ? { do: \"nothing\" } : { do: \"append\", delta };\n};\n\n/**\n * Route a `Delivery` to the renderer. Returns whether anything was delivered, which is what tells\n * the caller to advance its `delivered` marker.\n *\n * Split from the effect so the three calls can be constrained: `render` replaces the buffer,\n * `pushCode` appends to it, and `clear({ preserveVisualState: true })` starts over WITHOUT\n * blanking what is on screen. Getting `render` and `pushCode` the wrong way round doubles the\n * buffer on every streamed frame, and the difference is one word inside an effect.\n */\nexport const deliver = (renderer: RendererCalls, delivery: Delivery): boolean => {\n if (delivery.do === \"nothing\") return false;\n if (delivery.do === \"replace\") renderer.render(delivery.code);\n else if (delivery.do === \"append\") renderer.pushCode(delivery.delta);\n else {\n // Keep the painted frame so the surface does not blink while it starts over.\n renderer.clear({ preserveVisualState: true });\n renderer.pushCode(delivery.code);\n }\n return true;\n};\n\n/**\n * What the card imports, as one string — the key the import-map probe is cached against.\n *\n * Compared by value rather than by set, so re-ordering the same imports re-probes. That is\n * deliberate: the probe is cheap and cached downstream, and a set comparison here would be more\n * code to get wrong than the re-probe costs.\n */\nexport const importSignature = (code: string) => [...code.matchAll(/from\\s+[\"']([^\"']+)[\"']/g)].map((match) => match[1]).join(\" \");\n\n/** Only what `deliver` touches — the real renderer has far more. */\nexport type RendererCalls = {\n render: (code: string) => void;\n pushCode: (delta: string) => void;\n clear: (options: { preserveVisualState: boolean }) => void;\n};\n\n/**\n * What to do about an error the renderer reported.\n *\n * - `ignore` the stream is not finished; the next frame supersedes this\n * - `retry` a dependency failed to arrive, and busting the import URLs is the fix\n * - `report` tell the reader\n *\n * Only a SETTLED surface retries: while streaming, the next frame re-delivers on its own, and a\n * retry there would replace the growing buffer with a stale prefix. Compile phase only — a failed\n * dependency import is reported there (`importCompiledComponent` runs inside the compile `catch`,\n * `partial-react/src/runtime.ts:338`), whereas the same message from the RENDER phase is the\n * card's own `fetch` throwing inside its body, where re-importing changes nothing and costs three\n * retries and 2.4 seconds of blank surface before the reader is told anything.\n */\nexport const errorAction = (message: string, phase: string, streaming: boolean, attempts: number): \"ignore\" | \"retry\" | \"report\" => {\n if (isUnfinishedFrame(message, phase, streaming)) return \"ignore\";\n return shouldRetry(message, phase, streaming, attempts) ? \"retry\" : \"report\";\n};\n\n/** 0.4s / 0.8s / 1.2s covers an esm.sh cold start; past that the package itself is the problem. */\nconst RETRY_BACKOFF_MS = 400;\n\n/**\n * What `onError` DOES with the three outcomes, separated from where they come from. The decision\n * was already a pure function; the dispatch was not, and the mutation audit could not constrain\n * it — swapping `ignore` for `retry` survived every test, because the only caller lives inside a\n * `GenUIRenderer.create` callback that needs a DOM to reach.\n *\n * Each branch is one line and each is load-bearing: `ignore` must not touch the counter (a\n * streaming frame is not a failed attempt), `retry` must increment BEFORE scheduling (the delay\n * is a function of the count), and `report` must not increment at all.\n */\n/**\n * What to do when an import probe settles. Three outcomes and every one is a bug if wrong:\n *\n * - **stale** — a later frame's probe won the race. Applying this one reverts the map to an\n * older import set, and the newer frame's packages go missing.\n * - **redeliver** — a settled surface has no next frame. `setImportMap` only stores; it\n * schedules nothing, so without a re-render the card stays blank for good.\n * - **store** — while streaming, the very next frame applies the map. Re-delivering here instead\n * would replace the buffer with whatever prefix was current when the probe fired, truncating\n * the stream mid-flight.\n *\n * The `delivered !== \"\"` part is not defensive: re-rendering an empty buffer clears the surface.\n */\nexport const probeOutcome = (signature: string, current: string, streaming: boolean, delivered: string): \"stale\" | \"redeliver\" | \"store\" => {\n if (signature !== current) return \"stale\";\n return !streaming && delivered !== \"\" ? \"redeliver\" : \"store\";\n};\n\nexport const dispatchError = (action: \"ignore\" | \"retry\" | \"report\", effects: { attempts: () => number; setAttempts: (n: number) => void; schedule: (ms: number) => void; report: () => void }) => {\n if (action === \"ignore\") return;\n if (action === \"retry\") {\n const next = effects.attempts() + 1;\n effects.setAttempts(next);\n effects.schedule(RETRY_BACKOFF_MS * next);\n return;\n }\n effects.report();\n};\n\n/**\n * The same import map with a fresh query on every fetched entry.\n *\n * Only `https://esm.sh/` URLs are touched. Local blob URLs are minted per render and already\n * fresh, and appending a query to a `blob:` URL makes it unresolvable — which would break every\n * card rather than fixing one.\n */\nexport const bustFetchedImports = (imports: Record<string, string>, attempt: number): Record<string, string> => Object.fromEntries(Object.entries(imports).map(([key, url]) => [key, url.startsWith(\"https://esm.sh/\") ? `${url}${url.includes(\"?\") ? \"&\" : \"?\"}ui4a-retry=${attempt}` : url]));\n\nexport function GenUISurface({ code, streaming = false, preserveState = true, onError, onRendered, className }: GenUISurfaceProps) {\n const hostRef = useRef<HTMLDivElement>(null);\n // State, not a ref: `create` is async, so readiness must be able to trigger the\n // render effect. With a ref, the first pass sees null and nothing ever re-runs it.\n const [renderer, setRenderer] = useState<GenUIRenderer | null>(null);\n // The renderer outlives any one render and calls back into props, so those are read\n // through refs rather than captured — a new handler identity must not re-attach it.\n const onErrorRef = useLatest(onError);\n const onRenderedRef = useLatest(onRendered);\n const streamingRef = useLatest(streaming);\n // Read once at attach: the renderer takes it as a construction option.\n const preserveStateRef = useRef(preserveState);\n /** Retries spent on the current code. Reset by a successful paint and by every new frame. */\n const retriesRef = useRef(0);\n /**\n * Re-deliver the current code after a dependency failed to fetch.\n *\n * `clear` is not enough on its own, though it is necessary — the renderer skips an unchanged\n * compile result. The part that makes this a real retry is **changing the dependency URL**.\n * Measured 2026-08-23: a second `import()` of a URL that already rejected makes **zero**\n * network requests, because the module registry caches the rejection for the page's lifetime.\n * `mergeFallbackImports` maps each bare specifier to a deterministic `https://esm.sh/<pkg>?…`,\n * so re-rendering imports the exact URL that failed and nothing is re-fetched. Every retry\n * before this was a no-op that burned 0.4/0.8/1.2s and reported the same failure.\n */\n const retryRef = useLatest(() => {\n if (renderer === null || code === \"\") return;\n const attempt = retriesRef.current;\n void mergeFallbackImports(localImports(), code).then((imports) => {\n // Only the fetched esm.sh entries need busting; the local blob URLs are already fresh.\n renderer.setImportMap({ imports: bustFetchedImports(imports, attempt) });\n renderer.clear({ preserveVisualState: true });\n renderer.render(code);\n });\n });\n\n useEffect(() => {\n const host = hostRef.current;\n if (host === null) return;\n let disposed = false;\n let attached: GenUIRenderer | null = null;\n void GenUIRenderer.create(host, {\n compiler: compiler(),\n importmap: { imports: localImports() },\n preserveStateOnUpdate: preserveStateRef.current,\n callbacks: {\n onError: (error, phase) => {\n dispatchError(errorAction(error.message, phase, streamingRef.current, retriesRef.current), {\n attempts: () => retriesRef.current,\n setAttempts: (n) => {\n retriesRef.current = n;\n },\n schedule: (ms) => setTimeout(() => retryRef.current(), ms),\n report: () => onErrorRef.current?.(error, phase),\n });\n },\n onRendered: () => {\n retriesRef.current = 0;\n onRenderedRef.current?.();\n },\n },\n }).then((created) => {\n // A fast unmount can land before `create` settles; detaching there would leak the root.\n if (disposed) return void created.detach();\n attached = created;\n setRenderer(created);\n });\n return () => {\n disposed = true;\n // Detach from the local handle, not from a state updater: React skips the updater\n // for an unmounted fiber whenever the queue is not empty, and a renderer that is\n // never detached keeps its React root and its module URL alive for the tab's life.\n attached?.detach();\n attached = null;\n setRenderer(null);\n };\n // Attach exactly once. The refs above are how later prop values reach the renderer\n // without tearing it down, so they deliberately do not belong in these deps.\n // oxlint-disable-next-line react/exhaustive-effect-dependencies -- see above\n }, []);\n\n // The set of bare specifiers the current code imports. Recomputing the fallback map costs a\n // network probe per package, so it is keyed on this rather than run per streamed frame.\n const importedRef = useRef(\"\");\n\n // Last code handed to the renderer. A ref, not state: it only ever feeds the next\n // diff, and re-rendering on it would be a render per streamed frame for nothing.\n const deliveredRef = useRef(\"\");\n\n useEffect(() => {\n if (renderer === null) return;\n // Anything the model imports beyond the registered react family (recharts, motion, …) has no\n // entry in the import map, and an unresolvable bare specifier fails the whole module import —\n // the surface just stays blank. `mergeFallbackImports` probes esm.sh and fills those in.\n const signature = importSignature(code);\n if (signature !== importedRef.current) {\n importedRef.current = signature;\n // A later frame's probe can settle first; without this the map reverts to an older import set.\n void mergeFallbackImports(localImports(), code).then((imports) => {\n const settle = probeOutcome(signature, importedRef.current, streamingRef.current, deliveredRef.current);\n if (settle === \"stale\") return;\n renderer.setImportMap({ imports });\n if (settle === \"redeliver\") renderer.render(deliveredRef.current);\n });\n }\n retriesRef.current = 0;\n // Generated classes exist only in the code that just arrived, so their CSS is produced here\n // rather than at build time. Not awaited: the sheet is appended to `<head>` and applies to\n // whatever is already mounted, so a card paints unstyled for at most a frame instead of\n // holding up every delivery behind a generator that has to boot on the first call.\n void ensureUnoStyles(code, streaming);\n if (!deliver(renderer, deliveryFor(code, deliveredRef.current, streaming))) return;\n // `deliveredRef` must follow every delivery, or a later streaming frame diffs against a\n // prefix this render already superseded.\n deliveredRef.current = code;\n // The refs this reads (`importedRef`, `deliveredRef`, `streamingRef`) are how the effect\n // carries state between frames; listing them would re-run it on values it just wrote.\n // oxlint-disable-next-line react/exhaustive-effect-dependencies\n }, [renderer, code, streaming]);\n\n // A query container, so generated code can size itself against the space it was given.\n // The same card lands in a chat column and in a panel the reader drags between 320 and\n // 720px, and the viewport tells it nothing about either — `100vw` is the whole window in\n // both. Without `container-type` here a `@container` rule is inert rather than wrong\n // (measured: the guarded declaration simply never applies), which is the kind of failure\n // that reads as the model writing something bad.\n return <div ref={hostRef} className={[UI4A_ROOT_CLASS, className].filter(Boolean).join(\" \")} style={{ containerType: \"inline-size\" }} />;\n}\n",
|
|
10
|
+
"import { Component, createElement, useEffect, type ComponentType, type ReactNode } from \"react\";\nimport { createRoot, type Root } from \"react-dom/client\";\nimport { renderToString } from \"react-dom/server\";\nimport { createGeneratedComponentSlot, type GeneratedComponent, type GeneratedComponentSlot } from \"./state\";\nexport type { GeneratedComponent } from \"./state\";\nimport { enrichModuleImportError } from \"./importProbe\";\nexport { GenUIImportError, type GenUIImportDiagnostic } from \"./importProbe\";\nimport { createTsxCompiler, type TsxCompiler, type CompileResult } from \"./compiler\";\nimport { GenUIRenderContext, getGenUIRenderContextValue } from \"./renderContext\";\nimport { getGenUIHookSignature } from \"./hookSignature\";\nimport type { RendererImportMap } from \"./importMap\";\n\nexport type GenUIRenderPhase = \"transform\" | \"compile\" | \"render\";\nexport type GenUIRendererCallbacks = { onReady?: (component: GeneratedComponent, url?: string, code?: string) => void; onRendered?: (component: GeneratedComponent, code: string, serial?: number) => void; onError?: (error: Error, phase: GenUIRenderPhase) => void };\nexport type GenUIRendererClearOptions = { preserveVisualState?: boolean };\nexport type GenUIRendererFlushMode = \"microtask\" | \"immediate\";\n// `filename` is the base @esm.sh/tsx resolves relative specifiers against. Hosts that render a file from disk pass its\n// path so `./data` stays `./data`; without one the default `_.tsx` turns it into the unresolvable `_.tsx/data` (#1601).\nexport type GenUIRendererOptions = { importmap?: RendererImportMap; callbacks?: GenUIRendererCallbacks; compiler?: TsxCompiler; preserveStateOnUpdate?: boolean; flushMode?: GenUIRendererFlushMode; filename?: string };\nexport type GenUIRendererUpdateMode = \"push\" | \"render\";\n\nconst attachedRenderer = Symbol.for(\"@macaron/genui-runtime:attached-renderer\");\ntype AttachableHost = HTMLElement & { [attachedRenderer]?: GenUIRenderer };\nconst normalizeError = (error: unknown) => (error instanceof Error ? error : new Error(String(error)));\nconst COMPILED_COMPONENT_CACHE_LIMIT = 256;\nlet rendererScopeSerial = 0;\nconst createRendererScope = () => `renderer:${(rendererScopeSerial += 1).toString(36)}`;\nconst compiledComponentCache = new Map<string, GeneratedComponent>();\nconst getPreserveBoundaryKey = (epoch: number) => (epoch === 0 ? \"boundary\" : `boundary:${epoch}`);\nconst rememberCompiledComponent = (code: string, component: GeneratedComponent) => {\n if (compiledComponentCache.has(code)) compiledComponentCache.delete(code);\n compiledComponentCache.set(code, component);\n if (compiledComponentCache.size > COMPILED_COMPONENT_CACHE_LIMIT) {\n const oldestKey = compiledComponentCache.keys().next().value;\n if (oldestKey !== undefined) compiledComponentCache.delete(oldestKey);\n }\n};\n\ntype RuntimeErrorBoundaryState = { hasError: boolean; message?: string; lastResetKey?: number };\n\nclass RuntimeErrorBoundary extends Component<{ resetKey?: number; onError?: (error: Error) => void; children?: ReactNode }, RuntimeErrorBoundaryState> {\n state: RuntimeErrorBoundaryState = { hasError: false };\n // React forwards whatever was thrown, including primitives and null; normalize before reading `.message`.\n static getDerivedStateFromError(error: unknown) {\n return { hasError: true, message: normalizeError(error).message };\n }\n static getDerivedStateFromProps(props: { resetKey?: number }, state: RuntimeErrorBoundaryState) {\n // Streaming errors bump resetKey to clear the caught state in place; recreating the boundary via `key`\n // would unmount the entire subtree below and produce visible flicker on every retry.\n if (props.resetKey !== state.lastResetKey) return { hasError: false, message: undefined, lastResetKey: props.resetKey };\n return null;\n }\n componentDidCatch(error: unknown) {\n this.props.onError?.(normalizeError(error));\n }\n render() {\n // Hosts that pass onError paint their own error UI over this; hosts that don't (few-shots, batch) used to be\n // left with a bare \"ERROR\" and nothing to diagnose from.\n if (this.state.hasError) return this.state.message ? `ERROR: ${this.state.message}` : \"ERROR\";\n return this.props.children;\n }\n}\n\nconst RenderNotify = ({ onCommit, onReady }: { onCommit?: () => void; onReady?: () => void }) => {\n useEffect(() => {\n onCommit?.();\n if (typeof document !== \"undefined\" && document.hidden) {\n onReady?.();\n return;\n }\n const frameId = requestAnimationFrame(() => onReady?.());\n return () => cancelAnimationFrame(frameId);\n }, [onCommit, onReady]);\n return null;\n};\n\nexport class GenUIRenderer {\n private callbacks: GenUIRendererCallbacks;\n private compiler: TsxCompiler;\n private compileSerial = 0;\n private currentBuffer = \"\";\n private compileScheduled = false;\n private compileScheduleToken = 0;\n private compileRunning = false;\n private compilePending: { partial: boolean; serial?: number } | null = null;\n private scheduledPartial = false;\n private scheduledSerial?: number;\n private errorEpoch = 0;\n private finished = false;\n private flushMode: GenUIRendererFlushMode;\n private importmap?: RendererImportMap;\n private filename?: string;\n private lastCompiledCode = \"\";\n private lastGoodHookSignature = \"\";\n private lastHookSignature: string | null = null;\n private moduleUrl: string | null = null;\n private preserveBoundaryEpoch = 0;\n private preserveStateOnUpdate: boolean;\n private renderRound = 0;\n private rendererScope: string;\n private root: Root | null = null;\n private slot: GeneratedComponentSlot;\n private target: HTMLElement | null = null;\n private updateMode: GenUIRendererUpdateMode = \"render\";\n\n private constructor(target: HTMLElement | null | undefined, options: GenUIRendererOptions) {\n this.callbacks = options.callbacks ?? {};\n this.compiler = options.compiler ?? createTsxCompiler();\n this.flushMode = options.flushMode ?? \"microtask\";\n this.importmap = options.importmap;\n this.filename = options.filename;\n this.preserveStateOnUpdate = options.preserveStateOnUpdate ?? true;\n this.rendererScope = createRendererScope();\n this.slot = createGeneratedComponentSlot();\n if (target) this.attach(target);\n }\n\n static async create(target?: HTMLElement | null, options: GenUIRendererOptions = {}) {\n return new GenUIRenderer(target, options);\n }\n\n attach(target: HTMLElement) {\n const element = target as AttachableHost;\n if (element[attachedRenderer] && element[attachedRenderer] !== this) element[attachedRenderer].detach();\n if (this.target === target && this.root) {\n element[attachedRenderer] = this;\n return this;\n }\n const previous = this.target as AttachableHost | null;\n if (previous && previous[attachedRenderer] === this) delete previous[attachedRenderer];\n this.root?.unmount();\n this.target = target;\n this.root = createRoot(target);\n element[attachedRenderer] = this;\n this.renderComponent();\n return this;\n }\n\n detach() {\n // Bump compileSerial so any in-flight compile resolves into a no-op instead of adopting onto a dead renderer.\n // Drop the queued follow-up too: it would start a fresh chain (self-consistent serial) that the bump can't invalidate.\n this.compileSerial += 1;\n this.compilePending = null;\n const previous = this.target as AttachableHost | null;\n if (previous && previous[attachedRenderer] === this) delete previous[attachedRenderer];\n this.root?.unmount();\n this.root = null;\n this.target = null;\n this.rendererScope = createRendererScope();\n this.revokeModuleUrl();\n return this;\n }\n\n setPreserveStateOnUpdate(value: boolean) {\n this.preserveStateOnUpdate = value;\n return this;\n }\n\n setFlushMode(value: GenUIRendererFlushMode) {\n this.flushMode = value;\n return this;\n }\n\n setImportMap(importmap: RendererImportMap) {\n this.importmap = importmap;\n return this;\n }\n\n render(code: string, serial?: number) {\n this.finished = true;\n this.currentBuffer = code;\n this.updateMode = \"render\";\n this.scheduleCompile(false, serial);\n }\n\n pushCode(code: string, serial?: number) {\n this.finished = false;\n this.currentBuffer += code;\n this.updateMode = \"push\";\n this.scheduleCompile(true, serial);\n }\n\n finish(code?: string, serial?: number) {\n this.finished = true;\n if (code !== undefined) this.currentBuffer = code;\n this.scheduleCompile(false, serial);\n }\n\n getCurrentBuffer() {\n return this.currentBuffer;\n }\n\n getUpdateMode() {\n return this.updateMode;\n }\n\n restoreLastGood() {\n if (!this.slot.restoreLastGood()) return false;\n this.errorEpoch += 1;\n this.renderComponent(this.slot.current(), this.currentBuffer, undefined, this.currentBuffer, this.lastGoodHookSignature);\n return true;\n }\n\n private buildStreamingRenderContext(streamingPartialFrame: boolean) {\n let streamingRenderKeyIndex = 0;\n return getGenUIRenderContextValue(streamingPartialFrame, this.rendererScope, () => `chart-${streamingRenderKeyIndex++}`);\n }\n\n private canRenderComponent(component: unknown, streamingPartialFrame: boolean) {\n const renderContext = this.buildStreamingRenderContext(streamingPartialFrame);\n const previousConsoleError = console.error;\n let firstConsoleError: string | undefined;\n let caughtError: unknown;\n try {\n // Preflight intentionally renders bad partial frames; keep React's development console noise off the debug page.\n console.error = (...args) => {\n firstConsoleError ??= args.map(String).join(\" \");\n };\n renderToString(createElement(GenUIRenderContext.Provider, { value: renderContext }, createElement(component as ComponentType<Record<string, unknown>>)));\n } catch (error) {\n caughtError = error;\n } finally {\n console.error = previousConsoleError;\n }\n if (caughtError === undefined && firstConsoleError !== undefined) caughtError = new Error(firstConsoleError);\n if (caughtError === undefined) return true;\n this.callbacks.onError?.(normalizeError(caughtError), \"render\");\n return false;\n }\n\n clear(options: GenUIRendererClearOptions = {}) {\n this.compileSerial += 1;\n this.currentBuffer = \"\";\n // `clear` terminates the current stream; the next `pushCode`/`render` selects partial vs full mode again.\n this.finished = true;\n this.compileScheduled = false;\n this.scheduledPartial = false;\n this.scheduledSerial = undefined;\n this.compileScheduleToken += 1;\n this.compilePending = null;\n this.lastCompiledCode = \"\";\n if (options.preserveVisualState) return this;\n this.lastGoodHookSignature = \"\";\n this.lastHookSignature = null;\n this.preserveBoundaryEpoch = 0;\n this.rendererScope = createRendererScope();\n this.slot.clear();\n this.revokeModuleUrl();\n this.root?.render(null);\n return this;\n }\n\n private scheduleCompile(partial: boolean, serial?: number) {\n if (this.flushMode === \"immediate\") {\n this.compileScheduled = false;\n this.scheduledPartial = false;\n this.scheduledSerial = undefined;\n this.compileScheduleToken += 1;\n void this.compile(partial, serial);\n return;\n }\n this.scheduledPartial = partial;\n this.scheduledSerial = serial;\n if (this.compileScheduled) return;\n this.compileScheduled = true;\n const scheduleToken = (this.compileScheduleToken += 1);\n queueMicrotask(() => {\n if (scheduleToken !== this.compileScheduleToken) return;\n const nextPartial = this.scheduledPartial;\n const nextSerial = this.scheduledSerial;\n this.compileScheduled = false;\n this.scheduledPartial = false;\n this.scheduledSerial = undefined;\n void this.compile(nextPartial, nextSerial);\n });\n }\n\n private async compile(partial: boolean, renderSerial?: number) {\n // A compile chain (transform + blob import) spans multiple event-loop turns, so under per-frame pushes starting a\n // new chain per push keeps bumping compileSerial and every in-flight result resolves superseded — nothing commits\n // until the pushes stop (the storyboard's per-rAF typewriter froze previews this way). Run chains single-flight:\n // remember only the latest request and start it once the current chain settles; compileOnce reads currentBuffer\n // fresh at start, so all pushes queued behind a chain coalesce into one follow-up compile.\n if (this.compileRunning) {\n this.compilePending = { partial, serial: renderSerial };\n return;\n }\n this.compileRunning = true;\n try {\n await this.compileOnce(partial, renderSerial);\n } finally {\n this.compileRunning = false;\n const pending = this.compilePending;\n this.compilePending = null;\n if (pending) void this.compile(pending.partial, pending.serial);\n }\n }\n\n private async compileOnce(partial: boolean, renderSerial?: number) {\n const serial = (this.compileSerial += 1);\n const code = this.currentBuffer;\n let result: CompileResult;\n try {\n result = await this.compiler.compile(code, { importMap: this.importmap, partial: partial && !this.finished, previousCode: this.lastCompiledCode, filename: this.filename });\n } catch (error) {\n // A queued follow-up means this frame is already superseded; its error is stale noise (pre-single-flight, the\n // newer compile's serial bump suppressed it the same way).\n if (serial !== this.compileSerial || this.compilePending) return;\n this.callbacks.onError?.(normalizeError(error), \"transform\");\n return;\n }\n if (serial !== this.compileSerial) return;\n if (!result.changed) {\n const component = this.slot.current();\n // The final full compile can equal the last partial frame; re-render once with finished=true so the chart render\n // context settles from streaming to complete (charts key off streamingPartialFrame and would otherwise stay streaming).\n if (component && this.preserveStateOnUpdate && this.updateMode === \"push\" && this.finished) {\n this.renderComponent(component, code, renderSerial, result.source);\n return;\n }\n if (component) this.scheduleRenderedCallback(component, code, renderSerial, serial);\n return;\n }\n try {\n const { component, moduleUrl } = await this.importCompiledComponent(result.code);\n if (serial !== this.compileSerial) {\n if (moduleUrl) URL.revokeObjectURL(moduleUrl);\n return;\n }\n this.lastCompiledCode = result.code;\n if (moduleUrl) this.adoptModuleUrl(moduleUrl);\n else this.revokeModuleUrl();\n this.callbacks.onReady?.(component, moduleUrl, code);\n this.slot.setCurrent(component);\n this.renderComponent(component, code, renderSerial, result.source);\n } catch (error) {\n if (serial !== this.compileSerial || this.compilePending) return;\n this.callbacks.onError?.(normalizeError(error), \"compile\");\n }\n }\n\n private async importCompiledComponent(code: string): Promise<{ component: GeneratedComponent; moduleUrl?: string }> {\n const cached = compiledComponentCache.get(code);\n if (cached) return { component: cached };\n const moduleUrl = URL.createObjectURL(new Blob([code], { type: \"text/javascript\" }));\n try {\n let module: { default?: GeneratedComponent };\n try {\n // The specifier is a runtime-built blob URL, so every bundler must leave it alone: @vite-ignore for Vite,\n // webpackIgnore for webpack/Rspack, turbopackIgnore for Turbopack. Dropping any of them makes the host bundler\n // resolve it at build time and the renderer dies with `Cannot find module 'unknown'`. #1688\n module = (await import(/* @vite-ignore */ /* webpackIgnore: true */ /* turbopackIgnore: true */ moduleUrl)) as { default?: GeneratedComponent };\n } catch (error) {\n // The browser reports a failed blob module as one opaque \"Failed to fetch dynamically imported module\" without\n // naming the entry that broke; re-probe each dependency to raise an actionable, heal-ready error instead. #1371\n throw await enrichModuleImportError(error, code, this.importmap?.imports);\n }\n // A missing default is a transient \"stream not finished yet\" frame, not a dependency failure: the blob import\n // resolved, so every dependency already linked, and probing would re-scan cached modules to no effect.\n if (!module.default) throw new Error(\"No default export found in compiled module.\");\n rememberCompiledComponent(code, module.default);\n return { component: module.default, moduleUrl };\n } catch (error) {\n URL.revokeObjectURL(moduleUrl);\n throw error;\n }\n }\n\n private adoptModuleUrl(moduleUrl: string) {\n if (this.moduleUrl && this.moduleUrl !== moduleUrl) URL.revokeObjectURL(this.moduleUrl);\n this.moduleUrl = moduleUrl;\n }\n\n private revokeModuleUrl() {\n if (!this.moduleUrl) return;\n URL.revokeObjectURL(this.moduleUrl);\n this.moduleUrl = null;\n }\n\n private scheduleRenderedCallback(component: GeneratedComponent, code: string, renderSerial: number | undefined, compileSerial: number) {\n const notify = () => {\n if (compileSerial === this.compileSerial) this.callbacks.onRendered?.(component, code, renderSerial);\n };\n if (typeof document !== \"undefined\" && document.hidden) {\n notify();\n return;\n }\n if (typeof requestAnimationFrame === \"function\") requestAnimationFrame(notify);\n else queueMicrotask(notify);\n }\n\n private renderComponent(component = this.slot.current(), renderedCode = this.currentBuffer, renderSerial?: number, sourceCode = renderedCode, hookSignature = getGenUIHookSignature(sourceCode)) {\n if (!this.root || !component) return;\n this.renderRound += 1;\n const renderedComponent = component;\n // streamingPartialFrame only drives the chart render context below (chart keys remount per partial frame). Preserve\n // stays on throughout streaming: each partial frame can have a different hook count, so the hook-signature diff in\n // the preserve branch remounts the stable wrapper whenever the layout changes, which is what would otherwise reuse\n // the wrong hook cells and violate the Rules of Hooks (React #310).\n const streamingPartialFrame = this.updateMode === \"push\" && !this.finished;\n const preserve = this.preserveStateOnUpdate;\n const renderedHookSignature = hookSignature;\n const lastGood = this.slot.lastGood();\n if (preserve && streamingPartialFrame && lastGood && lastGood !== renderedComponent && !this.canRenderComponent(renderedComponent, streamingPartialFrame)) {\n this.slot.restoreLastGood();\n return;\n }\n if (preserve) {\n // Preserving state across hook layout changes reuses the wrong hook cells; remount only that stable wrapper epoch.\n // lastHookSignature is null only before the first committed frame; \"\" is a real hookless signature, so a hookless→hooked\n // transition (the common JSX-first-then-useState stream shape) must still bump the epoch and remount (React #310).\n if (this.lastHookSignature !== null && this.lastHookSignature !== renderedHookSignature) this.preserveBoundaryEpoch += 1;\n this.lastHookSignature = renderedHookSignature;\n }\n const renderContext = this.buildStreamingRenderContext(streamingPartialFrame);\n const onRenderError = (error: Error) => {\n this.callbacks.onError?.(error, \"render\");\n if (!preserve) return;\n if (this.slot.lastGood() === renderedComponent || !this.restoreLastGood()) this.errorEpoch += 1;\n };\n this.root.render(\n createElement(\n RuntimeErrorBoundary,\n { key: preserve ? getPreserveBoundaryKey(this.preserveBoundaryEpoch) : `boundary:${this.renderRound}`, resetKey: this.errorEpoch, onError: onRenderError },\n // The cast wraps the whole ternary: @types/react 18 rejects the slot's `Promise<ReactNode>` return, and we ship raw .ts to 18.3 peers.\n createElement(GenUIRenderContext.Provider, { value: renderContext }, createElement((preserve ? this.slot.Component : renderedComponent) as ComponentType<Record<string, unknown>>, { key: \"generated-component\" })),\n createElement(RenderNotify, {\n key: `render-notify:${this.renderRound}`,\n onCommit: () => {\n if (this.slot.current() === renderedComponent) {\n this.slot.markRendered(renderedComponent);\n if (preserve) this.lastGoodHookSignature = renderedHookSignature;\n }\n },\n onReady: () => {\n this.callbacks.onRendered?.(renderedComponent, renderedCode, renderSerial);\n },\n }),\n ),\n );\n }\n}\n",
|
|
11
|
+
"import { createElement, type ComponentType, type ReactNode } from \"react\";\n\nexport type GeneratedFunctionComponent = (props: Record<string, unknown>) => ReactNode | Promise<ReactNode>;\nexport type GeneratedComponent = ComponentType<Record<string, unknown>> | GeneratedFunctionComponent;\nexport type GeneratedComponentSlot = {\n Component: GeneratedFunctionComponent;\n current: () => GeneratedComponent | null;\n lastGood: () => GeneratedComponent | null;\n setCurrent: (component: GeneratedComponent) => void;\n markRendered: (component?: GeneratedComponent | null) => void;\n restoreLastGood: () => boolean;\n clear: () => void;\n};\nconst isClassComponent = (component: unknown) => typeof component === \"function\" && Boolean((component as { prototype?: { isReactComponent?: unknown } }).prototype?.isReactComponent);\n\nexport function createGeneratedComponentSlot(): GeneratedComponentSlot {\n const currentRef = { current: null as GeneratedComponent | null };\n const lastGoodRef = { current: null as GeneratedComponent | null };\n const Component = (props: Record<string, unknown>) => {\n const Current = currentRef.current;\n if (!Current) return null;\n // Function components are invoked inside this stable wrapper so React keeps their hooks on the wrapper fiber.\n if (typeof Current === \"function\" && !isClassComponent(Current)) return (Current as (props: Record<string, unknown>) => ReactNode | Promise<ReactNode>)(props);\n return createElement(Current as never, props);\n };\n return {\n Component,\n current: () => currentRef.current,\n lastGood: () => lastGoodRef.current,\n setCurrent(component) {\n currentRef.current = component;\n },\n markRendered(component = currentRef.current) {\n if (component) lastGoodRef.current = component;\n },\n restoreLastGood() {\n if (!lastGoodRef.current) return false;\n currentRef.current = lastGoodRef.current;\n return true;\n },\n clear() {\n currentRef.current = null;\n lastGoodRef.current = null;\n },\n };\n}\n",
|
|
12
|
+
"export type RendererImportMap = { imports?: Record<string, string>; scopes?: Record<string, Record<string, string>>; styles?: string[] };\n\n// A provider contributes import-map entries. `base` providers always run; `fallback` providers only run when earlier\n// providers left some required specifier unresolved, and only see (and should answer for) those `missing` specifiers.\nexport type ImportMapProviderContext = { code: string; missing: string[]; imports?: Readonly<Record<string, string>> };\nexport type ImportMapProvider = { kind?: \"base\" | \"fallback\"; prefetch?: () => Promise<unknown> | void; resolve: (context: ImportMapProviderContext) => RendererImportMap | Promise<RendererImportMap> };\n\n// Packages whose identity must be shared with a dependent's own bundled copy — see `toEsmShImportUrl`.\nconst SHARED_INSTANCE_PACKAGES = new Set([\"three\"]);\nconst DEFAULT_ESM_SH_EXTERNALS = [\"react\", \"react-dom\", \"scheduler\"] as const;\nexport const RUNTIME_SINGLETON_SPECIFIERS = [\"react\", \"react-dom\", \"react-dom/client\", \"react/jsx-runtime\", \"react/jsx-dev-runtime\", \"scheduler\"] as const;\nexport type RuntimeSingletonSpecifier = (typeof RUNTIME_SINGLETON_SPECIFIERS)[number];\nexport const isRuntimeSingletonSpecifier = (specifier: string): specifier is RuntimeSingletonSpecifier => RUNTIME_SINGLETON_SPECIFIERS.includes(specifier as RuntimeSingletonSpecifier);\n// A trailing-slash import-map key also owns matching singleton subpaths.\nexport const isRuntimeSingletonImportMapKey = (specifier: string) => isRuntimeSingletonSpecifier(specifier) || (specifier.endsWith(\"/\") && RUNTIME_SINGLETON_SPECIFIERS.some((runtimeSpecifier) => runtimeSpecifier.startsWith(specifier)));\nconst IDENTIFIER_CHAR_PATTERN = /[\\w$]/;\nconst REGEX_PREFIX_WORDS = new Set([\"return\", \"throw\", \"case\", \"delete\", \"typeof\", \"void\", \"new\", \"in\", \"of\", \"await\", \"yield\"]);\nconst LOCAL_EXPORT_KEYWORDS = [\"abstract\", \"async\", \"class\", \"const\", \"declare\", \"default\", \"enum\", \"function\", \"interface\", \"let\", \"namespace\", \"var\"];\n\nexport const isBareModuleSpecifier = (specifier: string) => !specifier.startsWith(\".\") && !specifier.startsWith(\"/\") && !/^(?:[a-z][a-z\\d+.-]*:|#)/i.test(specifier);\nexport const getBarePackageName = (specifier: string) => (specifier.startsWith(\"@\") ? specifier.split(\"/\").slice(0, 2).join(\"/\") : specifier.split(\"/\")[0] || specifier);\n// A shared-instance package must stay on its canonical esm.sh URL end to end: `toEsmShImportUrl` keeps it unbundled so\n// it resolves to the same `/three@x/es2022/three.mjs` a dependent's bundle imports, and callers must not blob it either\n// — a blob: copy is a distinct module object, which is exactly the duplication the unbundled path exists to avoid.\nexport const isSharedInstancePackage = (specifier: string) => SHARED_INSTANCE_PACKAGES.has(getBarePackageName(specifier));\n// Shared #1178 contract: /src/… and /node_modules/… targets are root-relative disk paths each engine rebases against\n// its own root (dev: Vite's resolved root; build: cwd). Single-sourced so a new local prefix lands in both engines.\nexport const isLocalRootRelativeTarget = (target: string) => target.startsWith(\"/src/\") || target.startsWith(\"/node_modules/\");\nconst canUseEsmShFallback = (specifier: string) => isBareModuleSpecifier(specifier) && !specifier.startsWith(\"@/\");\n\nconst isKeywordAt = (code: string, index: number, keyword: string) => code.startsWith(keyword, index) && !IDENTIFIER_CHAR_PATTERN.test(code[index - 1] ?? \"\") && !IDENTIFIER_CHAR_PATTERN.test(code[index + keyword.length] ?? \"\");\n\nconst skipLineComment = (code: string, index: number) => {\n const newlineIndex = code.indexOf(\"\\n\", index + 2);\n return newlineIndex === -1 ? code.length : newlineIndex;\n};\n\nconst skipBlockComment = (code: string, index: number) => {\n const closeIndex = code.indexOf(\"*/\", index + 2);\n return closeIndex === -1 ? code.length : closeIndex + 2;\n};\n\nconst skipWhitespaceAndComments = (code: string, index: number) => {\n while (index < code.length) {\n if (/\\s/.test(code[index])) {\n index += 1;\n continue;\n }\n if (code[index] === \"/\" && code[index + 1] === \"/\") {\n index = skipLineComment(code, index);\n continue;\n }\n if (code[index] === \"/\" && code[index + 1] === \"*\") {\n index = skipBlockComment(code, index);\n continue;\n }\n break;\n }\n return index;\n};\n\nconst readStringLiteral = (code: string, index: number) => {\n const quote = code[index];\n if (quote !== '\"' && quote !== \"'\") return null;\n let value = \"\";\n index += 1;\n while (index < code.length) {\n const char = code[index];\n if (char === \"\\\\\") {\n value += code.slice(index, index + 2);\n index += 2;\n continue;\n }\n if (char === quote) return { value, end: index + 1, terminated: true };\n value += char;\n index += 1;\n }\n // Unterminated literal (a streamed import mid-chunk, e.g. `import X from \"https://x/Foo.ts`). Report end so scanning\n // still advances past it, but flag it so callers don't treat a half-typed specifier as a real import to fetch.\n return { value, end: code.length, terminated: false };\n};\n\nconst skipTemplateLiteral = (code: string, index: number, onExpression?: (start: number, end: number) => void) => {\n index += 1;\n while (index < code.length) {\n if (code[index] === \"\\\\\") {\n index += 2;\n continue;\n }\n if (code[index] === \"`\") return index + 1;\n if (code[index] === \"$\" && code[index + 1] === \"{\") {\n const expressionStart = index + 2;\n const expressionEnd = findBalancedBlockEnd(code, index + 1, \"{\", \"}\");\n onExpression?.(expressionStart, Math.max(expressionStart, expressionEnd - 1));\n index = expressionEnd;\n continue;\n }\n index += 1;\n }\n return code.length;\n};\n\nconst findBalancedBlockEnd = (code: string, index: number, opener: string, closer: string) => {\n let depth = 0;\n while (index < code.length) {\n const char = code[index];\n if (char === \"/\" && code[index + 1] === \"/\") {\n index = skipLineComment(code, index);\n continue;\n }\n if (char === \"/\" && code[index + 1] === \"*\") {\n index = skipBlockComment(code, index);\n continue;\n }\n if (isLikelyRegexLiteralStart(code, index)) {\n index = skipRegexLiteral(code, index);\n continue;\n }\n if (char === '\"' || char === \"'\") {\n index = readStringLiteral(code, index)?.end ?? index + 1;\n continue;\n }\n if (char === \"`\") {\n index = skipTemplateLiteral(code, index);\n continue;\n }\n if (char === opener) depth += 1;\n if (char === closer) {\n depth -= 1;\n if (depth === 0) return index + 1;\n }\n index += 1;\n }\n return code.length;\n};\n\nconst isLikelyRegexLiteralStart = (code: string, index: number) => {\n if (code[index] !== \"/\" || code[index + 1] === \"/\" || code[index + 1] === \"*\") return false;\n let previous = index - 1;\n while (previous >= 0 && /\\s/.test(code[previous])) previous -= 1;\n if (previous < 0) return true;\n const previousChar = code[previous];\n if (\"([{=,:;!&|?+-*~^<>\".includes(previousChar)) return true;\n if (!/[A-Za-z_$]/.test(previousChar)) return false;\n let word = \"\";\n for (let cursor = previous; cursor >= 0 && /[A-Za-z0-9_$]/.test(code[cursor]); cursor -= 1) word = code[cursor] + word;\n return REGEX_PREFIX_WORDS.has(word);\n};\n\nconst skipRegexLiteral = (code: string, index: number) => {\n index += 1;\n let inClass = false;\n while (index < code.length) {\n const char = code[index];\n if (char === \"\\\\\") {\n index += 2;\n continue;\n }\n index += 1;\n if (char === \"[\" && !inClass) inClass = true;\n else if (char === \"]\" && inClass) inClass = false;\n else if (char === \"/\" && !inClass) {\n while (index < code.length && /[A-Za-z]/.test(code[index])) index += 1;\n return index;\n }\n }\n return code.length;\n};\n\nconst readFromSpecifier = (code: string, index: number) => {\n while (index < code.length) {\n const char = code[index];\n if (char === \";\") return null;\n if (char === \"/\" && code[index + 1] === \"/\") {\n index = skipLineComment(code, index);\n continue;\n }\n if (char === \"/\" && code[index + 1] === \"*\") {\n index = skipBlockComment(code, index);\n continue;\n }\n if (isLikelyRegexLiteralStart(code, index)) {\n index = skipRegexLiteral(code, index);\n continue;\n }\n if (char === '\"' || char === \"'\") {\n index = readStringLiteral(code, index)?.end ?? index + 1;\n continue;\n }\n if (char === \"`\") {\n index = skipTemplateLiteral(code, index);\n continue;\n }\n if (isKeywordAt(code, index, \"from\")) {\n const start = skipWhitespaceAndComments(code, index + \"from\".length);\n const literal = readStringLiteral(code, start);\n if (literal) return { specifier: literal.value, start, end: literal.end, terminated: literal.terminated };\n index += \"from\".length;\n continue;\n }\n index += 1;\n }\n return null;\n};\n\nconst readExportFromSpecifier = (code: string, index: number) => {\n let next = skipWhitespaceAndComments(code, index);\n if (isKeywordAt(code, next, \"type\")) next = skipWhitespaceAndComments(code, next + \"type\".length);\n if (code[next] === \"*\" || code[next] === \"{\") return readFromSpecifier(code, next);\n for (const keyword of LOCAL_EXPORT_KEYWORDS) if (isKeywordAt(code, next, keyword)) return null;\n return readFromSpecifier(code, next);\n};\n\n// `.meta.resolve(` after the `import` keyword, returning the string-literal argument. Null means this `import.` is\n// something else (`import.meta.url`, `import.meta.env`) and the caller should just skip past the dot.\nconst readImportMetaResolveSpecifier = (code: string, dotIndex: number) => {\n let next = skipWhitespaceAndComments(code, dotIndex + 1);\n if (!isKeywordAt(code, next, \"meta\")) return null;\n next = skipWhitespaceAndComments(code, next + \"meta\".length);\n if (code[next] !== \".\") return null;\n next = skipWhitespaceAndComments(code, next + 1);\n if (!isKeywordAt(code, next, \"resolve\")) return null;\n next = skipWhitespaceAndComments(code, next + \"resolve\".length);\n if (code[next] !== \"(\") return null;\n const start = skipWhitespaceAndComments(code, next + 1);\n const literal = readStringLiteral(code, start);\n return literal ? { ...literal, start } : { value: \"\", start, end: next, terminated: false };\n};\n\nconst readIdentifierWord = (code: string, index: number) => {\n let end = index;\n while (end < code.length && IDENTIFIER_CHAR_PATTERN.test(code[end])) end += 1;\n return end > index ? { name: code.slice(index, end), end } : null;\n};\n\n// Parses one static import clause right after the `import` keyword into the export names the module must provide\n// (\"default\" for default imports; namespace and side-effect imports demand none). `notLinked` marks a type-only import,\n// which survives specifier collection but is erased before the module is ever instantiated. Returns null on clauses it does not understand\n// (streaming-truncated ones) so callers can fall back to the lenient readFromSpecifier.\nconst readImportBindings = (code: string, index: number): { specifier: string; names: string[]; start: number; end: number; terminated: boolean; notLinked?: boolean } | null => {\n const names: string[] = [];\n index = skipWhitespaceAndComments(code, index);\n const sideEffect = readStringLiteral(code, index);\n if (sideEffect) return sideEffect.value ? { specifier: sideEffect.value, names, start: index, end: sideEffect.end, terminated: sideEffect.terminated } : null;\n if (isKeywordAt(code, index, \"type\")) {\n const after = skipWhitespaceAndComments(code, index + \"type\".length);\n // `import type …` is erased at runtime — but `import type from \"x\"` binds a default named `type`.\n if (!isKeywordAt(code, after, \"from\")) {\n const from = readFromSpecifier(code, after);\n return from ? { ...from, names, notLinked: true } : null;\n }\n }\n if (code[index] !== \"{\" && code[index] !== \"*\") {\n const afterDefault = readIdentifierWord(code, index)?.end;\n if (afterDefault === undefined) return null;\n names.push(\"default\");\n index = skipWhitespaceAndComments(code, afterDefault);\n if (code[index] === \",\") index = skipWhitespaceAndComments(code, index + 1);\n }\n if (code[index] === \"*\") {\n index = skipWhitespaceAndComments(code, index + 1);\n if (!isKeywordAt(code, index, \"as\")) return null;\n const afterNamespace = readIdentifierWord(code, skipWhitespaceAndComments(code, index + \"as\".length))?.end;\n if (afterNamespace === undefined) return null;\n index = skipWhitespaceAndComments(code, afterNamespace);\n } else if (code[index] === \"{\") {\n index = skipWhitespaceAndComments(code, index + 1);\n while (index < code.length && code[index] !== \"}\") {\n let typeOnly = false;\n if (isKeywordAt(code, index, \"type\")) {\n const after = skipWhitespaceAndComments(code, index + \"type\".length);\n // `{ type Foo }` is erased; a lone `{ type }` / `{ type as t }` demands an export literally named `type`.\n if (code[after] !== \",\" && code[after] !== \"}\" && !isKeywordAt(code, after, \"as\")) {\n typeOnly = true;\n index = after;\n }\n }\n const literal = readStringLiteral(code, index);\n const imported = literal ? { name: literal.value, end: literal.end } : readIdentifierWord(code, index);\n if (!imported) return null;\n index = skipWhitespaceAndComments(code, imported.end);\n if (isKeywordAt(code, index, \"as\")) {\n const local = readIdentifierWord(code, skipWhitespaceAndComments(code, index + \"as\".length));\n if (!local) return null;\n index = skipWhitespaceAndComments(code, local.end);\n }\n if (!typeOnly) names.push(imported.name);\n if (code[index] === \",\") index = skipWhitespaceAndComments(code, index + 1);\n else if (code[index] !== \"}\") return null;\n }\n if (code[index] !== \"}\") return null;\n index = skipWhitespaceAndComments(code, index + 1);\n }\n if (!isKeywordAt(code, index, \"from\")) return null;\n const start = skipWhitespaceAndComments(code, index + \"from\".length);\n const literal = readStringLiteral(code, start);\n return literal?.value ? { specifier: literal.value, names, start, end: literal.end, terminated: literal.terminated } : null;\n};\n\n// Walks module-level import/export statements and reports each specifier with the export names bound from it\n// (empty for namespace, side-effect, re-export and dynamic imports). `onSpecifier` is the single output channel —\n// callers project it into whatever shape they need. `site` separates the module graph from `import.meta.resolve()`,\n// which is a runtime asset lookup rather than an edge.\ntype ResolutionSite = \"import\" | \"meta-resolve\";\ntype SpecifierRange = { start: number; end: number };\nconst collectModuleSpecifiers = (code: string, onSpecifier: (specifier: string, names: string[], notLinked: boolean | undefined, site: ResolutionSite, range?: SpecifierRange) => void, start = 0, end = code.length) => {\n for (let index = start; index < end; index += 1) {\n const char = code[index];\n if (char === \"/\" && code[index + 1] === \"/\") {\n index = skipLineComment(code, index);\n continue;\n }\n if (char === \"/\" && code[index + 1] === \"*\") {\n index = skipBlockComment(code, index);\n continue;\n }\n if (isLikelyRegexLiteralStart(code, index)) {\n index = skipRegexLiteral(code, index);\n continue;\n }\n if (char === '\"' || char === \"'\") {\n index = readStringLiteral(code, index)?.end ?? index;\n continue;\n }\n if (char === \"`\") {\n index = skipTemplateLiteral(code, index, (expressionStart, expressionEnd) => collectModuleSpecifiers(code, onSpecifier, expressionStart, expressionEnd));\n continue;\n }\n if (isKeywordAt(code, index, \"import\")) {\n const afterImport = skipWhitespaceAndComments(code, index + \"import\".length);\n if (code[afterImport] === \".\") {\n // Keep runtime asset lookups visible to callers that scan all specifiers, while separating them from actual\n // module-graph edges. The renderer no longer projects these into a browser-native import map.\n const literal = readImportMetaResolveSpecifier(code, afterImport);\n if (literal) {\n // notLinked: nothing is instantiated here, so probing it would fetch what the module never requested.\n if (literal.terminated && literal.value) onSpecifier(literal.value, [], true, \"meta-resolve\", { start: literal.start, end: literal.end });\n index = literal.end;\n continue;\n }\n index = afterImport;\n continue;\n }\n if (code[afterImport] === \"(\") {\n const literalStart = skipWhitespaceAndComments(code, afterImport + 1);\n const literal = readStringLiteral(code, literalStart);\n // A dynamic target is not linked at instantiation, so probing it would issue a real request.\n if (literal?.terminated && literal.value) onSpecifier(literal.value, [], true, \"import\", { start: literalStart, end: literal.end });\n index = literal?.end ?? afterImport;\n continue;\n }\n const bindings = readImportBindings(code, afterImport);\n const from = bindings ?? readFromSpecifier(code, afterImport);\n if (from?.terminated && from.specifier) onSpecifier(from.specifier, bindings?.names ?? [], bindings?.notLinked, \"import\", { start: from.start, end: from.end });\n index = from?.end ?? afterImport;\n continue;\n }\n if (isKeywordAt(code, index, \"export\")) {\n const from = readExportFromSpecifier(code, index + \"export\".length);\n if (from?.terminated && from.specifier) onSpecifier(from.specifier, [], undefined, \"import\", { start: from.start, end: from.end });\n index = from?.end ?? index;\n }\n }\n};\n\nconst extractSpecifiers = (code: string, keep: (specifier: string, site: ResolutionSite) => boolean) => {\n const specifiers = new Set<string>();\n collectModuleSpecifiers(code, (specifier, _names, _notLinked, site) => {\n if (keep(specifier, site)) specifiers.add(specifier);\n });\n return specifiers;\n};\n\nexport const extractBareModuleSpecifiers = (code: string) => extractSpecifiers(code, isBareModuleSpecifier);\n\n// Specifiers reached through an `import`/`export` statement only — the actual module graph. Excludes\n// `import.meta.resolve()` targets, which are runtime asset lookups (WASM binaries, worker scripts) rather than graph\n// edges, so a consumer walking imports (the UnoCSS source tracer) doesn't try to parse a multi-MB binary as source.\nexport const extractImportSpecifiers = (code: string) => extractSpecifiers(code, (_specifier, site) => site === \"import\");\n\nexport const extractImportMetaResolveSpecifiers = (code: string) => extractSpecifiers(code, (_specifier, site) => site === \"meta-resolve\");\n\nexport const extractModuleSpecifiers = (code: string) => extractSpecifiers(code, () => true);\n\nexport function resolveImportMapSpecifier(imports: Readonly<Record<string, string>>, specifier: string) {\n if (imports[specifier]) return imports[specifier];\n let bestPrefix = \"\";\n for (const prefix of Object.keys(imports)) if (prefix.endsWith(\"/\") && specifier.startsWith(prefix) && prefix.length > bestPrefix.length) bestPrefix = prefix;\n return bestPrefix ? `${imports[bestPrefix]}${specifier.slice(bestPrefix.length)}` : undefined;\n}\n\n// Replace the parsed string-literal specifiers at `keepSite` with their import-map targets. Working from the scanner's\n// ranges — not a text match — is what makes this safe on minified bundles, where a string constant can read exactly\n// like an import clause (`from\"in $)}function S$(`).\nconst rewriteSpecifiers = (code: string, imports: Readonly<Record<string, string>>, keepSite: ResolutionSite) => {\n // collectModuleSpecifiers scans forward, so ranges arrive in ascending order: emit the gap before each one and skip\n // past it, then join once. Splicing the string per replacement would recopy the whole source each time.\n const segments: string[] = [];\n let copied = 0;\n collectModuleSpecifiers(code, (specifier, _names, _notLinked, site, range) => {\n const target = site === keepSite ? resolveImportMapSpecifier(imports, specifier) : undefined;\n if (!target || !range) return;\n segments.push(code.slice(copied, range.start), JSON.stringify(target));\n copied = range.end;\n });\n if (!segments.length) return code;\n segments.push(code.slice(copied));\n return segments.join(\"\");\n};\n\n// @esm.sh/tsx rewrites import declarations but deliberately leaves import.meta.resolve() calls intact. Replace only\n// their parsed string-literal arguments with resolved URLs so blob: modules never need a browser-native import map.\nexport const rewriteImportMetaResolveSpecifiers = (code: string, imports: Readonly<Record<string, string>>) => rewriteSpecifiers(code, imports, \"meta-resolve\");\n\n// The counterpart for code no compiler pass ever sees: host facade bundles are built with the runtime singletons\n// externalized (that externalization is what keeps React a singleton), so their bare imports would otherwise survive to\n// the browser and need a native import map. Rewriting them to the emitted chunk URLs is what lets that map go away.\nexport const rewriteImportSpecifiers = (code: string, imports: Readonly<Record<string, string>>) => rewriteSpecifiers(code, imports, \"import\");\n\n// Maps each specifier linked when the module is instantiated to the export names bound from it (\"default\" included;\n// namespace, side-effect and re-export imports demand no specific names). Type-only and dynamic imports are excluded:\n// neither is linked at instantiation, so probing them would fetch something the failed module never requested.\n// importProbe runs this over *compiled* code, where the import-map rewrite already resolved bare specifiers.\nexport function extractImportBindings(code: string) {\n const bindings = new Map<string, string[]>();\n collectModuleSpecifiers(code, (specifier, names, notLinked) => {\n if (!notLinked) bindings.set(specifier, [...new Set([...(bindings.get(specifier) ?? []), ...names])]);\n });\n return bindings;\n}\n\nexport function hasImportMapEntry(imports: Record<string, string> | Set<string> | Map<string, string>, specifier: string) {\n const keys = imports instanceof Set ? imports : imports instanceof Map ? new Set(imports.keys()) : new Set(Object.keys(imports));\n if (keys.has(specifier)) return true;\n for (const key of keys) if (key.endsWith(\"/\") && specifier.startsWith(key)) return true;\n return false;\n}\n\nexport type EsmShDependencyRanges = Readonly<Record<string, string>>;\ntype EsmShImportUrlOptions = { dev?: boolean; dependencyRanges?: EsmShDependencyRanges };\n\nexport function toEsmShImportUrl(specifier: string, external: readonly string[] = DEFAULT_ESM_SH_EXTERNALS, options?: EsmShImportUrlOptions) {\n if (!canUseEsmShFallback(specifier)) throw new Error(`Cannot create an esm.sh fallback for ${specifier}`);\n const packageName = getBarePackageName(specifier);\n // Dev builds: production bundles strip the dev-only dispatcher fields (e.g. getOwner) that the dev jsx-runtime\n // calls while an externalized reconciler (react-reconciler inside @react-three/fiber) owns the render pass.\n const devParam = options?.dev ? \"&dev\" : \"\";\n // `bundle`/`external` both fork esm.sh's build path, so a bundled `three` is a different module object than the plain\n // `/three@x/es2022/three.mjs` that `@react-three/fiber` imports. Shared-instance packages use that unbundled path so\n // R3F's `instanceof THREE.Layers/Color` checks see the same constructors as user-created Three.js objects. Their\n // identity comes from agreeing with a dependent's own pinned range (R3F asks for `three@>=0.156`), so our side stays\n // unconstrained too and both float onto latest, landing on the same pinned build. The invariant is that agreement,\n // not version-freedom — it would break the day R3F pins an upper bound or we constrain our side.\n if (isSharedInstancePackage(specifier)) return `https://esm.sh/${specifier}${specifier.includes(\"?\") ? \"&\" : \"?\"}target=es2022${devParam}`;\n // Keep the repository's declared semver range as the single source of truth. Protocol-based specs describe local,\n // aliased, or non-registry packages that esm.sh cannot resolve and therefore stay version-free here.\n const dependencyRange = options?.dependencyRanges?.[packageName];\n const constrainedSpecifier = dependencyRange && !dependencyRange.includes(\":\") ? `${packageName}@${encodeURIComponent(dependencyRange)}${specifier.slice(packageName.length)}` : specifier;\n const separator = constrainedSpecifier.includes(\"?\") ? \"&\" : \"?\";\n const externalParam = external.length ? `&external=${external.join(\",\")}` : \"\";\n return `https://esm.sh/${constrainedSpecifier}${separator}bundle&target=es2022${devParam}${externalParam}`;\n}\n\ntype EsmShPreloadFetch = (url: string) => Promise<Pick<Response, \"ok\" | \"status\">>;\ntype EsmShPreloadOptions = { fetch?: EsmShPreloadFetch; attempts?: number; retryDelayMs?: number };\nconst esmShPreloadCache = new Map<string, Promise<void>>();\n\n// A browser module loader memoizes a rejected URL for the page lifetime, so retrying the generated blob cannot recover\n// from a transient esm.sh cold-build failure. Warm the entry URL with ordinary fetch first — a version range still\n// leaves it a mutable entry esm.sh has to resolve and build, not a pinned artifact. Failures remain retryable, while a\n// 2xx means esm.sh has finished resolving/building before import() sees the URL.\nexport function preloadEsmShImportUrl(url: string, options?: EsmShPreloadOptions): Promise<void> {\n let preload = esmShPreloadCache.get(url);\n if (!preload) {\n const fetcher = options?.fetch ?? fetch;\n // 3 attempts at 250ms exponential backoff spans ~750ms of retrying, which covers a typical esm.sh cold build\n // without stalling first paint. There is no ack to wait on — esm.sh answers 5xx while the build is still running.\n const attempts = options?.attempts ?? 3;\n const retryDelayMs = options?.retryDelayMs ?? 250;\n preload = (async () => {\n let lastFailure: unknown;\n for (let attempt = 0; attempt < attempts; attempt += 1) {\n if (attempt > 0) await new Promise((resolve) => setTimeout(resolve, retryDelayMs * 2 ** (attempt - 1)));\n try {\n const response = await fetcher(url);\n if (response.ok) return;\n lastFailure = new Error(`HTTP ${response.status}`);\n // esm.sh answers 5xx while a cold build is still running, and 429 when npm rate-limits it — both transient,\n // same classification the probes below use. Any other 4xx is a decided answer (unknown package, rejected\n // specifier); retrying burns the full backoff for the same result.\n if (response.status < 500 && response.status !== 429) break;\n } catch (error) {\n lastFailure = error;\n }\n }\n throw new Error(`Failed to preload esm.sh module ${url}`, { cause: lastFailure });\n })();\n preload.catch(() => esmShPreloadCache.delete(url));\n esmShPreloadCache.set(url, preload);\n }\n return preload;\n}\n\nexport type EsmShProbe = { alive: true } | { alive: false; detail: string };\ntype EsmShProbeFetch = (url: string) => Promise<Pick<Response, \"ok\" | \"status\" | \"text\" | \"json\">>;\n// esm.sh 404/2xx verdicts are deterministic per specifier, so they're cached for the process lifetime; transient\n// fail-open verdicts (5xx/rate-limit/network) are evicted on resolve so they don't pin. Tests inject a fetcher and\n// must use per-test specifiers to dodge the shared cache.\nconst esmShProbeCache = new Map<string, Promise<EsmShProbe | null>>();\n\n// A dead entry usually means the model hallucinated the package or its layout; the registry's real subpaths are the\n// heal signal that lets it rewrite the import in one shot.\nconst MAX_HINT_SUBPATHS = 8; // enough real subpaths for the model to spot the right one without bloating the diagnostic\nconst registryExportsHint = async (packageName: string, fetcher: EsmShProbeFetch) => {\n const response = await fetcher(`https://registry.npmjs.org/${packageName}/latest`);\n if (!response.ok) return response.status === 404 ? \"the package does not exist on npm\" : \"\";\n const { exports: exportsMap } = (await response.json()) as { exports?: Record<string, unknown> };\n const subpaths = Object.keys(exportsMap ?? {}).filter((key) => key.startsWith(\"./\"));\n return subpaths.length ? `its real exports subpaths are ${subpaths.slice(0, MAX_HINT_SUBPATHS).join(\", \")}${subpaths.length > MAX_HINT_SUBPATHS ? `, … (${subpaths.length} total)` : \"\"}` : \"\";\n};\n\n// Would the esm.sh fallback actually answer this specifier at render time? Null means the fallback never applies\n// (relative path, `@/` alias) — the caller should leave its own resolution verdict alone. Only a deterministic 404\n// condemns an import: network failures and 5xx must not fail checks that run offline or during an esm.sh incident. #1372\nexport const probeEsmShSpecifier = (specifier: string, fetcher: EsmShProbeFetch = fetch): Promise<EsmShProbe | null> => {\n let probe = esmShProbeCache.get(specifier);\n if (!probe) {\n probe = (async (): Promise<EsmShProbe | null> => {\n let url: string;\n try {\n // Deliberately unranged: this is a package-existence check, and the cache is keyed by bare specifier. A\n // package that exists unranged exists ranged, so the only gap is a declared range with no esm.sh build —\n // probe says alive, render 404s. #1573 tracks threading ranges through if that ever bites.\n url = toEsmShImportUrl(specifier);\n } catch {\n return null;\n }\n // A non-404 status esm.sh can't build deterministically (5xx incident, 429/403 npm rate-limit) or a network\n // failure fails open so offline `check` still passes, but that verdict isn't deterministic; evict it so a\n // genuinely-dead import isn't pinned `alive` for the host's lifetime.\n const failOpenTransiently = (): EsmShProbe => {\n esmShProbeCache.delete(specifier);\n return { alive: true };\n };\n try {\n const response = await fetcher(url);\n if (response.status === 404) {\n const body = (await response.text()).trim().split(\"\\n\")[0];\n const hint = await registryExportsHint(getBarePackageName(specifier), fetcher).catch(() => \"\");\n return { alive: false, detail: `The renderer's esm.sh fallback fails too (404: ${body})${hint ? `; ${hint}` : \"\"}.` };\n }\n // Only a 2xx means esm.sh actually resolved the build; anything else joins the fail-open path above.\n return response.ok ? { alive: true } : failOpenTransiently();\n } catch {\n return failOpenTransiently();\n }\n })();\n esmShProbeCache.set(specifier, probe);\n }\n return probe;\n};\n\n// `build` fetch-bundles remote http(s) module imports and dev/the runtime import them directly, so the URL itself is\n// the authority to consult before condemning a remote specifier's TS2307 (#1468). Same doctrine as the esm.sh probe:\n// only a deterministic 404 condemns; transient verdicts (5xx/rate-limit/network) fail open and are evicted so they don't pin.\nconst remoteModuleProbeCache = new Map<string, Promise<EsmShProbe>>();\nexport const probeRemoteModuleUrl = (url: string, fetcher: EsmShProbeFetch = fetch): Promise<EsmShProbe> => {\n let probe = remoteModuleProbeCache.get(url);\n if (!probe) {\n probe = (async (): Promise<EsmShProbe> => {\n const failOpenTransiently = (): EsmShProbe => {\n remoteModuleProbeCache.delete(url);\n return { alive: true };\n };\n try {\n const response = await fetcher(url);\n if (response.status === 404) return { alive: false, detail: `The renderer's remote module fetch fails too (404: ${(await response.text()).trim().split(\"\\n\")[0]}).` };\n return response.ok ? { alive: true } : failOpenTransiently();\n } catch {\n return failOpenTransiently();\n }\n })();\n remoteModuleProbeCache.set(url, probe);\n }\n return probe;\n};\n\n// One probe for every specifier `check`'s local TS resolution can't see: remote http(s) URLs consult the origin itself,\n// bare specifiers consult the esm.sh fallback, anything else (relative path, `@/` alias) keeps the caller's own verdict.\nexport const probeImportSpecifier = (specifier: string, fetcher: EsmShProbeFetch = fetch): Promise<EsmShProbe | null> => (/^https?:\\/\\//i.test(specifier) ? probeRemoteModuleUrl(specifier, fetcher) : probeEsmShSpecifier(specifier, fetcher));\n\nexport function prepareRendererImportMap(map: RendererImportMap | null | undefined, baseUrl = typeof location === \"undefined\" ? undefined : location.href) {\n const resolveTarget = (target: string) => (baseUrl ? new URL(target, baseUrl).href : target);\n const resolveEntries = (entries: Record<string, string>) => Object.fromEntries(Object.entries(entries).map(([specifier, target]) => [specifier, resolveTarget(target)]));\n const imports = resolveEntries(map?.imports ?? {});\n const styles = map?.styles?.map(resolveTarget);\n const scopes = map?.scopes && Object.fromEntries(Object.entries(map.scopes).map(([scope, entries]) => [scope, resolveEntries(entries)]));\n return { imports, ...(scopes ? { scopes } : {}), ...(styles?.length ? { styles } : {}) };\n}\n\nexport function literalImportMap(map: RendererImportMap): ImportMapProvider {\n return { resolve: () => map };\n}\n\n// Loads a remote/JSON import map once. `prefetch()` and `resolve()` share the in-flight promise so an idle-time\n// prefetch and a later render both reuse the same fetch instead of hitting the network twice.\nexport function urlImportMap(source: string, options?: { kind?: ImportMapProvider[\"kind\"]; fetch?: (source: string) => Promise<Pick<Response, \"ok\" | \"status\" | \"statusText\" | \"json\">> }): ImportMapProvider {\n const fetcher = options?.fetch ?? fetch;\n let loadPromise: Promise<RendererImportMap> | undefined;\n const load = () =>\n (loadPromise ??= (async () => {\n const response = await fetcher(source);\n if (!response.ok) throw new Error(`Failed to load import map ${source}: ${response.status} ${response.statusText}`);\n const baseUrl = typeof location === \"undefined\" ? source : new URL(source, location.href).href;\n return prepareRendererImportMap((await response.json()) as RendererImportMap, baseUrl);\n })());\n return { kind: options?.kind ?? \"base\", prefetch: load, resolve: load };\n}\n\n// Node-only: resolve `packageName`'s package.json#genui.importMap into a provider. Relative targets (./dist/…) are\n// rebased to absolute disk paths so Vite/Rollup can load them; absolute paths and URLs pass through. Throws if the\n// package declares no genui.importMap. Resolution is from the caller's cwd (where the user installed the package),\n// not this file's location — so `bunx @genui/cli -i @macaron/ui` finds the user's package, not the CLI's. node:\n// imports stay inside resolve() so this module remains browser-bundleable.\nexport function packageImportMap(packageName: string, options?: { resolve?: (name: string) => string }): ImportMapProvider {\n return {\n resolve: async () => {\n const [{ createRequire }, { readFile }, { dirname, resolve: resolvePath }] = await Promise.all([import(\"node:module\"), import(\"node:fs/promises\"), import(\"node:path\")]);\n const resolveName = options?.resolve ?? createRequire(resolvePath(\"package.json\")).resolve;\n const manifestPath = resolveName(`${packageName}/package.json`);\n const manifest = JSON.parse(await readFile(manifestPath, \"utf8\")) as { genui?: { importMap?: RendererImportMap } };\n const importMap = manifest.genui?.importMap;\n if (!importMap) throw new Error(`${packageName} has no package.json#genui.importMap — add it to declare the GenUI importmap contract`);\n const packageDir = dirname(manifestPath);\n const rebase = (target: string) => (target.startsWith(\".\") ? resolvePath(packageDir, target) : target);\n return { imports: Object.fromEntries(Object.entries(importMap.imports ?? {}).map(([specifier, target]) => [specifier, rebase(target)])), styles: importMap.styles?.map(rebase) };\n },\n };\n}\n\n// esm.sh fallback only answers for `missing` specifiers, so the resolver can merge its output without re-checking\n// coverage. In dev, locally installed packages are preferred so peer deps like React stay on the preview's runtime.\nexport function esmShFallback(options?: { external?: readonly string[]; dev?: boolean; dependencyRanges?: EsmShDependencyRanges; hasLocalPackage?: (packageName: string) => Promise<boolean> }): ImportMapProvider {\n return {\n kind: \"fallback\",\n resolve: async ({ missing }) => {\n const entries = await Promise.all(\n missing.filter(canUseEsmShFallback).map(async (specifier) => {\n const isLocal = await options?.hasLocalPackage?.(getBarePackageName(specifier));\n return [specifier, isLocal ? `/node_modules/${specifier}` : toEsmShImportUrl(specifier, options?.external, { dev: options?.dev, dependencyRanges: options?.dependencyRanges })] as const;\n }),\n );\n return { imports: Object.fromEntries(entries) };\n },\n };\n}\n\nexport function createImportMapResolver(providers: ImportMapProvider[]) {\n return {\n // Idle/build-time warmup only touches base providers. Fallback providers stay lazy until resolve() has scanned the\n // TSX for missing specifiers, so prefetching them would fetch remote maps the rendered code may never reference.\n prefetch: () => Promise.all(providers.filter((provider) => provider.kind !== \"fallback\").map((provider) => provider.prefetch?.())).then(() => undefined),\n async resolve({ code = \"\" }: { code?: string } = {}) {\n const required = [...extractBareModuleSpecifiers(code)];\n let imports: Record<string, string> = {};\n let scopes: RendererImportMap[\"scopes\"];\n let styles: string[] | undefined;\n for (const provider of providers) {\n const covered = new Set(Object.keys(imports));\n const missing = required.filter((specifier) => !hasImportMapEntry(covered, specifier));\n if (provider.kind === \"fallback\" && missing.length === 0) continue;\n const next = await provider.resolve({ code, missing, imports });\n imports = { ...imports, ...next.imports };\n // scopes is an advanced compat field with no producer today, so a later provider replaces an earlier one's\n // entries for the same scope key rather than deep-merging them. Revisit if two providers ever both emit scopes.\n if (next.scopes) scopes = { ...scopes, ...next.scopes };\n if (next.styles?.length) styles = [...(styles ?? []), ...next.styles];\n }\n return { imports, ...(scopes ? { scopes } : {}), ...(styles?.length ? { styles: [...new Set(styles)] } : {}) };\n },\n };\n}\n\nexport async function mergeFallbackImports(imports: Record<string, string>, code: string, options?: { dependencyRanges?: EsmShDependencyRanges; hasLocalPackage?: (packageName: string) => Promise<boolean> }) {\n return (await createImportMapResolver([literalImportMap({ imports }), esmShFallback(options)]).resolve({ code })).imports;\n}\n",
|
|
13
|
+
"import { extractImportBindings } from \"./importMap\";\n\nexport type GenUIImportDiagnostic = { specifier: string; target: string; detail: string };\n\n// Replaces the browser's opaque blob-module failure once the probe has named the imports that actually broke.\n// `message` doubles as the heal signal fed back to the generating model, so it must stay self-contained.\nexport class GenUIImportError extends Error {\n readonly diagnostics: GenUIImportDiagnostic[];\n constructor(diagnostics: GenUIImportDiagnostic[], cause: unknown) {\n super(`Unresolvable imports:\\n${diagnostics.map(({ specifier, target, detail }) => `- '${specifier}'${target === specifier ? \"\" : ` (→ ${target})`} ${detail}`).join(\"\\n\")}`, { cause });\n this.name = \"GenUIImportError\";\n this.diagnostics = diagnostics;\n }\n}\n\n// Cap the export listing so a barrel module with hundreds of exports can't bloat the heal message; enough for the\n// model to spot the name it meant (e.g. `avataaars` vs `avataars`) and infer the rest. Mirrors MAX_HINT_SUBPATHS.\nconst MAX_EXPORT_HINTS = 20;\nconst listAvailableExports = (module: Record<string, unknown>) => {\n const keys = Object.keys(module).toSorted();\n if (!keys.length) return \"\";\n return `; module exports: ${keys.slice(0, MAX_EXPORT_HINTS).join(\", \")}${keys.length > MAX_EXPORT_HINTS ? `, … (${keys.length - MAX_EXPORT_HINTS} more)` : \"\"}`;\n};\n\n// Recover the bare specifier the model wrote from a compiled (import-map-rewritten) target. An exact entry wins; a\n// trailing-slash prefix entry (`\"lucide-react/\"` → `\".../lucide-react/\"`) maps the whole subpath back, mirroring\n// hasImportMapEntry's prefix semantics — so the heal signal names `lucide-react/icons/home`, not the resolved URL.\nconst reverseResolveSpecifier = (entries: [string, string][], target: string) => {\n for (const [specifier, mapped] of entries) if (mapped === target) return specifier;\n for (const [specifier, mapped] of entries) if (specifier.endsWith(\"/\") && target.startsWith(mapped)) return specifier + target.slice(mapped.length);\n return target;\n};\n\n// Re-imports each dependency of a failed compiled module one by one to name what the blanket blob error hid. Costs no\n// extra network traffic: a dependency that linked is already in the module map, and a dependency that failed reuses the\n// engine's own rejection rather than re-fetching it to explain. `imports` (the resolved importmap) maps rewritten\n// targets back to the bare specifiers the model wrote.\nexport async function probeModuleImports(code: string, imports?: Record<string, string>): Promise<GenUIImportDiagnostic[]> {\n const importEntries = Object.entries(imports ?? {});\n const probes = [...extractImportBindings(code)].map(async ([target, names]): Promise<GenUIImportDiagnostic | null> => {\n const specifier = reverseResolveSpecifier(importEntries, target);\n let module: Record<string, unknown>;\n try {\n // `target` is import-map-resolved at runtime, so it needs the same three-bundler ignore stack as the blob import\n // in runtime.ts — otherwise every probe throws `Cannot find module 'unknown'` and reports each dependency as\n // broken, burying the one that actually is. #1688\n module = (await import(/* @vite-ignore */ /* webpackIgnore: true */ /* turbopackIgnore: true */ target)) as Record<string, unknown>;\n } catch (error) {\n return { specifier, target, detail: `failed to load: ${error instanceof Error ? error.message : String(error)}` };\n }\n const missing = names.filter((name) => !(name in module));\n return missing.length ? { specifier, target, detail: `has no export named ${missing.map((name) => `'${name}'`).join(\", \")}${listAvailableExports(module)}` } : null;\n });\n return (await Promise.all(probes)).filter((diagnostic) => diagnostic !== null);\n}\n\n// The probe must never replace the real failure with one of its own — fall back to the original error on any surprise.\nexport async function enrichModuleImportError(error: unknown, code: string, imports?: Record<string, string>) {\n try {\n const diagnostics = await probeModuleImports(code, imports);\n return diagnostics.length ? new GenUIImportError(diagnostics, error) : error;\n } catch {\n return error;\n }\n}\n",
|
|
14
|
+
"/* @ts-self-types=\"./tsx.d.ts\" */\n\n/**\n * @param {any} swc_transform_options\n * @returns {any}\n */\nexport function transform(swc_transform_options) {\n const ret = wasm.transform(swc_transform_options);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_8c4e43fe74559d73: function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n },\n __wbg_Number_04624de7d0e8332d: function(arg0) {\n const ret = Number(arg0);\n return ret;\n },\n __wbg___wbindgen_bigint_get_as_i64_8fcf4ce7f1ca72a2: function(arg0, arg1) {\n const v = arg1;\n const ret = typeof(v) === 'bigint' ? v : undefined;\n getDataViewMemory0().setBigInt64(arg0 + 8 * 1, isLikeNone(ret) ? BigInt(0) : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_boolean_get_bbbb1c18aa2f5e25: function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_0bc8482c6e3508ae: function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_47fa6863be6f2f25: function(arg0, arg1) {\n const ret = arg0 in arg1;\n return ret;\n },\n __wbg___wbindgen_is_bigint_31b12575b56f32fc: function(arg0) {\n const ret = typeof(arg0) === 'bigint';\n return ret;\n },\n __wbg___wbindgen_is_function_0095a73b8b156f76: function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n },\n __wbg___wbindgen_is_object_5ae8e5880f2c1fbd: function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_undefined_9e4d92534c42d778: function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_eq_11888390b0186270: function(arg0, arg1) {\n const ret = arg0 === arg1;\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_9dd77d8cd6671811: function(arg0, arg1) {\n const ret = arg0 == arg1;\n return ret;\n },\n __wbg___wbindgen_number_get_8ff4255516ccad3e: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_72fb696202c56729: function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_be289d5034ed271b: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_call_389efe28435a9388: function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments); },\n __wbg_done_57b39ecd9addfe81: function(arg0) {\n const ret = arg0.done;\n return ret;\n },\n __wbg_entries_58c7934c745daac7: function(arg0) {\n const ret = Object.entries(arg0);\n return ret;\n },\n __wbg_from_bddd64e7d5ff6941: function(arg0) {\n const ret = Array.from(arg0);\n return ret;\n },\n __wbg_get_9b94d73e6221f75c: function(arg0, arg1) {\n const ret = arg0[arg1 >>> 0];\n return ret;\n },\n __wbg_get_b3ed3ad4be2bc8ac: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments); },\n __wbg_get_with_ref_key_1dc361bd10053bfe: function(arg0, arg1) {\n const ret = arg0[arg1];\n return ret;\n },\n __wbg_instanceof_ArrayBuffer_c367199e2fa2aa04: function(arg0) {\n let result;\n try {\n result = arg0 instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Map_53af74335dec57f4: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Map;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_9b9075935c74707c: function(arg0) {\n let result;\n try {\n result = arg0 instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_isArray_d314bb98fcf08331: function(arg0) {\n const ret = Array.isArray(arg0);\n return ret;\n },\n __wbg_isSafeInteger_bfbc7332a9768d2a: function(arg0) {\n const ret = Number.isSafeInteger(arg0);\n return ret;\n },\n __wbg_iterator_6ff6560ca1568e55: function() {\n const ret = Symbol.iterator;\n return ret;\n },\n __wbg_length_32ed9a279acd054c: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_length_35a7bace40f36eac: function(arg0) {\n const ret = arg0.length;\n return ret;\n },\n __wbg_new_361308b2356cecd0: function() {\n const ret = new Object();\n return ret;\n },\n __wbg_new_dd2b680c8bf6ae29: function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n },\n __wbg_next_3482f54c49e8af19: function() { return handleError(function (arg0) {\n const ret = arg0.next();\n return ret;\n }, arguments); },\n __wbg_next_418f80d8f5303233: function(arg0) {\n const ret = arg0.next;\n return ret;\n },\n __wbg_prototypesetcall_bdcdcc5842e4d77d: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);\n },\n __wbg_set_3f1d0b984ed272ed: function(arg0, arg1, arg2) {\n arg0[arg1] = arg2;\n },\n __wbg_value_0546255b415e96c1: function(arg0) {\n const ret = arg0.value;\n return ret;\n },\n __wbindgen_cast_0000000000000001: function(arg0) {\n // Cast intrinsic for `I64 -> Externref`.\n const ret = arg0;\n return ret;\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(U8)) -> NamedExternref(\"Uint8Array\")`.\n const ret = getArrayU8FromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000003: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_cast_0000000000000004: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./tsx_bg.js\": import0,\n };\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (module_or_path === undefined) {\n module_or_path = new URL('tsx_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n",
|
|
15
|
+
"import initWasm, { initSync as initWasmSync, transform as wasmTransform } from \"./pkg/tsx.js\";\n\nexport function transform(options) {\n const { filename, code, importMap } = options;\n if (typeof filename !== \"string\" || filename === \"\") {\n throw new Error(\"filename is required\");\n }\n if (typeof code === \"string\") {\n options.code = new TextEncoder().encode(code);\n }\n if (!(options.code instanceof Uint8Array)) {\n throw new Error(\"code is required\");\n }\n if (importMap !== undefined && !(typeof importMap === \"object\" && importMap !== null && !Array.isArray(importMap))) {\n throw new Error(\"invalid importMap\");\n }\n return wasmTransform(options);\n}\n\nexport function initSync(module) {\n return initWasmSync({ module });\n}\n\nexport async function init(module_or_path) {\n const importUrl = import.meta.url;\n if (!module_or_path && importUrl.startsWith(\"file://\") && globalThis.Deno) {\n const wasmUrl = new URL(\"./pkg/tsx_bg.wasm\", importUrl);\n const wasmBytes = await Deno.readFile(wasmUrl);\n initWasmSync({ module: wasmBytes });\n return;\n }\n const esmshBaseUrl = \"https://esm.sh/@esm.sh/tsx@\";\n if (!module_or_path && importUrl.startsWith(esmshBaseUrl)) {\n const version = importUrl.slice(esmshBaseUrl.length).split(\"/\", 1)[0];\n module_or_path = esmshBaseUrl + version + \"/pkg/tsx_bg.wasm\";\n }\n return initWasm(module_or_path ? { module_or_path } : undefined);\n}\n\nexport default init;\n",
|
|
16
|
+
"const VOID_TAGS = new Set([\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"link\", \"meta\", \"param\", \"source\", \"track\", \"wbr\"]);\nconst BLOCK_FOLLOWERS: Record<string, string> = { \"{\": \"}\", \"(\": \")\", \"[\": \"]\" };\nconst BLOCK_CLOSERS = new Set(Object.values(BLOCK_FOLLOWERS));\nexport type PartialTsxMode = \"streaming\" | \"final\";\nexport type PartialTsxOptions = { mode?: PartialTsxMode };\ntype BlockKind = \"function\" | \"control\" | \"arrow\" | \"class\" | \"method\" | \"block\" | \"other\";\ntype CompletionFrame = { type: \"block\"; closer: string; statement: boolean; open?: number; close?: number; jsxExpression?: boolean; statementStart?: number; kind?: BlockKind } | { type: \"jsx\"; tag: string; open?: number };\n\nconst stripMarkdownFence = (code: string) => {\n let next = code.trim();\n next = next.replace(/^```(?:[^\\r\\n]*)?(?:\\r?\\n|$)/i, \"\");\n next = next.replace(/\\s*```$/i, \"\");\n return next;\n};\nconst maskExportScanRange = (chars: string[], start: number, end: number) => {\n for (let index = start; index < end; index += 1) if (chars[index] !== \"\\n\") chars[index] = \" \";\n};\nconst findStringLiteralEnd = (code: string, index: number) => {\n const quote = code[index];\n index += 1;\n while (index < code.length) {\n if (code[index] === \"\\\\\") index += 2;\n else {\n if (code[index] === quote) return index + 1;\n index += 1;\n }\n }\n return code.length;\n};\ntype TemplateLiteralEnd = { end: number; closed: boolean };\nconst scanTemplateLiteralEnd = (code: string, index: number): TemplateLiteralEnd => {\n index += 1;\n while (index < code.length) {\n if (code[index] === \"\\\\\") index += 2;\n else if (code[index] === \"`\") return { end: index + 1, closed: true };\n // A `${ … }` substitution can hold nested template literals (`${`inner`}`); recurse into it so an inner backtick is not\n // mistaken for the outer literal's terminator, which would leave the substitution body unmasked in the export scan. Skip\n // strings/templates inside the substitution so their braces (`${\"{\"}`) do not throw off the brace-depth tracking.\n else if (code[index] === \"$\" && code[index + 1] === \"{\") {\n index += 2;\n let depth = 1;\n for (; index < code.length && depth > 0; index += 1) {\n if (code[index] === \"/\" && code[index + 1] === \"/\") {\n const next = code.indexOf(\"\\n\", index + 2);\n index = next === -1 ? code.length : next;\n } else if (code[index] === \"/\" && code[index + 1] === \"*\") {\n const next = code.indexOf(\"*/\", index + 2);\n index = next === -1 ? code.length : next + 1;\n } else if (isLikelyRegexLiteralStart(code, index)) index = findRegexLiteralEnd(code, index) - 1;\n else if (code[index] === \"`\") {\n const nested = scanTemplateLiteralEnd(code, index);\n if (!nested.closed) return nested;\n index = nested.end - 1;\n } else if (code[index] === '\"' || code[index] === \"'\") index = findStringLiteralEnd(code, index) - 1;\n else if (code[index] === \"{\") depth += 1;\n else if (code[index] === \"}\") depth -= 1;\n }\n if (depth > 0) return { end: code.length, closed: false };\n } else index += 1;\n }\n return { end: code.length, closed: false };\n};\nconst findTemplateLiteralEnd = (code: string, index: number) => scanTemplateLiteralEnd(code, index).end;\nconst updateJsxStackForTag = (stack: CompletionFrame[], tag: string, open?: number) => {\n const match = /^<\\/?\\s*([A-Za-z][\\w$.-]*)/.exec(tag);\n const tagName = match?.[1] ?? (tag === \"<>\" || tag === \"</>\" ? \"\" : null);\n if (tagName === null) return;\n if (tag.startsWith(\"</\")) {\n const frame = stack.at(-1);\n if (frame?.type === \"jsx\" && frame.tag === tagName) stack.pop();\n return;\n }\n if (!tag.endsWith(\"/>\") && !VOID_TAGS.has(tagName)) stack.push({ type: \"jsx\", tag: tagName, open });\n};\nconst maskIgnoredTextForExportScan = (code: string, regexLiteralStarts?: ReadonlySet<number>) => {\n // split(\"\") keeps code-unit indexing aligned with code[index]; spread would split astral chars (emoji) by code point and desync the two.\n const chars = code.split(\"\");\n const stack: CompletionFrame[] = [];\n for (let index = 0; index < code.length; index += 1) {\n const char = code[index];\n if (isInsideJsxText(stack) && char !== \"<\" && char !== \"{\") {\n if (chars[index] !== \"\\n\") chars[index] = \" \";\n continue;\n }\n if (char === \"/\" && code[index + 1] === \"/\") {\n const end = code.indexOf(\"\\n\", index + 2);\n const next = end === -1 ? code.length : end;\n maskExportScanRange(chars, index, next);\n index = next;\n continue;\n }\n if (char === \"/\" && code[index + 1] === \"*\") {\n const close = code.indexOf(\"*/\", index + 2);\n const next = close === -1 ? code.length : close + 2;\n maskExportScanRange(chars, index, next);\n index = next - 1;\n continue;\n }\n if (regexLiteralStarts?.has(index) || isLikelyRegexLiteralStart(code, index)) {\n const next = findRegexLiteralEnd(code, index);\n maskExportScanRange(chars, index, next);\n chars[index] = \"/\"; // preserve the token boundary while hiding keyword/bracket-shaped regex contents\n index = next - 1;\n continue;\n }\n if (char === '\"' || char === \"'\") {\n const next = findStringLiteralEnd(code, index);\n maskExportScanRange(chars, index, next);\n index = next - 1;\n continue;\n }\n if (char === \"`\") {\n const next = findTemplateLiteralEnd(code, index);\n maskExportScanRange(chars, index, next);\n index = next - 1;\n continue;\n }\n if (char === \"<\" && shouldStartJsxTag(code, index, stack)) {\n const closeIndex = findJsxTagEnd(code, index);\n if (closeIndex === -1) break;\n const tag = code.slice(index, closeIndex + 1);\n maskExportScanRange(chars, index, closeIndex + 1);\n chars[index] = \"<\"; // keep the leading `<` so `export default <Card/>` is still detectable after masking\n index = closeIndex;\n updateJsxStackForTag(stack, tag);\n continue;\n }\n if (char in BLOCK_FOLLOWERS) {\n stack.push({ type: \"block\", closer: BLOCK_FOLLOWERS[char], statement: false });\n continue;\n }\n if (BLOCK_CLOSERS.has(char)) {\n const frame = stack.at(-1);\n if (frame?.type === \"block\" && frame.closer === char) stack.pop();\n }\n }\n return chars.join(\"\");\n};\nconst findBalancedTypeArgumentsEnd = (code: string, index: number) => {\n if (code[index] !== \"<\") return index;\n let depth = 0;\n for (; index < code.length; index += 1) {\n const char = code[index];\n if (char === \"<\") depth += 1;\n else if (char === \">\" && code[index - 1] === \"=\") continue;\n else if (char === \">\") {\n depth -= 1;\n if (depth === 0) return index + 1;\n }\n }\n return -1;\n};\nconst findWrappedComponentCallOpen = (code: string, index: number) => {\n index = findBalancedTypeArgumentsEnd(code, index);\n if (index === -1) return -1;\n while (/\\s/.test(code[index] ?? \"\")) index += 1;\n return code[index] === \"(\" ? index : -1;\n};\nconst isWrappedImplementationFunction = (code: string, index: number) => /\\b(?:memo|forwardRef)\\s*(?:<[\\s\\S]*>)?\\s*\\($/.test(code.slice(0, index).trimEnd());\n\nconst findLastExportableComponent = (code: string) => {\n const candidates: Array<{ name: string; index: number }> = [];\n for (const match of code.matchAll(/\\bfunction\\s+([A-Z][\\w$]*)\\s*\\(/g)) {\n if (!isWrappedImplementationFunction(code, match.index ?? 0)) candidates.push({ name: match[1], index: match.index ?? 0 });\n }\n for (const match of code.matchAll(/\\bclass\\s+([A-Z][\\w$]*)\\s+extends\\s+(?:(?:React\\.)?(?:Pure)?Component|[A-Za-z_$][\\w$]*\\.Component)\\b/g)) candidates.push({ name: match[1], index: match.index ?? 0 });\n for (const match of code.matchAll(/\\b(?:const|let|var)\\s+([A-Z][\\w$]*)\\s*(?::[^=]+)?=\\s*(?:async\\s*)?(?:\\([^)]*\\)|[A-Za-z_$][\\w$]*)?\\s*=>/g)) candidates.push({ name: match[1], index: match.index ?? 0 });\n for (const match of code.matchAll(/\\b(?:const|let|var)\\s+([A-Z][\\w$]*)\\s*(?::[^=]+)?=\\s*(?:[A-Za-z_$][\\w$]*\\.)?(?:memo|forwardRef)\\s*/g)) {\n if (findWrappedComponentCallOpen(code, (match.index ?? 0) + match[0].length) !== -1) candidates.push({ name: match[1], index: match.index ?? 0 });\n }\n return candidates.toSorted((left, right) => left.index - right.index).at(-1)?.name ?? null;\n};\n// `export default` is also valid mid-line after a `;` or block-closing `}` (`;export default …`, `if(a){} export default …`); match those\n// so the scan does not miss an existing default and append a second one (`Duplicate export of 'default'`).\nconst hasDefaultExportDeclaration = (code: string) => /(?:^|[\\n;}])\\s*export\\s+default\\s+(?:async\\s+)?(?:function|class|[A-Za-z_$]|\\(|<)/m.test(code) || /(?:^|[\\n;}])\\s*export\\s*\\{[^}]*\\b(?:as\\s+default|default\\s*(?:,|}))[^}]*\\}/m.test(code);\n\n// React hooks the model commonly forgets to import. Stay conservative: anything outside this set (custom hooks, react-dom hooks like useFormStatus) is left alone.\nconst REACT_HOOK_NAMES = new Set([\n \"useState\",\n \"useEffect\",\n \"useRef\",\n \"useMemo\",\n \"useCallback\",\n \"useReducer\",\n \"useContext\",\n \"useLayoutEffect\",\n \"useInsertionEffect\",\n \"useTransition\",\n \"useDeferredValue\",\n \"useId\",\n \"useImperativeHandle\",\n \"useDebugValue\",\n \"useSyncExternalStore\",\n \"useActionState\",\n \"useOptimistic\",\n \"useEffectEvent\",\n]);\n\nconst isUnmaskedImportMatch = (code: string, maskedCode: string, match: RegExpExecArray) => {\n const importIndex = (match.index ?? 0) + match[0].indexOf(\"import\");\n return code.slice(importIndex, importIndex + \"import\".length) === maskedCode.slice(importIndex, importIndex + \"import\".length);\n};\nconst collectImportedBindings = (code: string, maskedCode: string) => {\n const bindings = new Set<string>();\n for (const match of code.matchAll(/(?:^|[;\\n])\\s*import\\s+([\\s\\S]*?)\\s+from\\s+[\"'][^\"']*[\"']/g)) {\n if (!isUnmaskedImportMatch(code, maskedCode, match)) continue;\n const clause = match[1].trim();\n if (!clause.startsWith(\"{\") && !clause.startsWith(\"*\")) {\n const defaultMatch = /^([A-Za-z_$][\\w$]*)/.exec(clause);\n if (defaultMatch) bindings.add(defaultMatch[1]);\n }\n const namespaceMatch = /\\*\\s+as\\s+([A-Za-z_$][\\w$]*)/.exec(clause);\n if (namespaceMatch) bindings.add(namespaceMatch[1]);\n const namedMatch = /\\{([\\s\\S]*?)\\}/.exec(clause);\n if (!namedMatch) continue;\n for (const raw of namedMatch[1].split(\",\")) {\n const item = raw.trim().replace(/^type\\s+/, \"\");\n if (!item) continue;\n const aliased = /^([A-Za-z_$][\\w$]*)\\s+as\\s+([A-Za-z_$][\\w$]*)\\s*$/.exec(item);\n if (aliased) {\n // Track both the original name and the alias so `useState as useS` blocks us from re-importing `useState`.\n bindings.add(aliased[1]);\n bindings.add(aliased[2]);\n continue;\n }\n const name = /^([A-Za-z_$][\\w$]*)/.exec(item)?.[1];\n if (name) bindings.add(name);\n }\n }\n return bindings;\n};\n\nconst injectMissingReactHookImports = (code: string, maskedCode: string) => {\n if (!/\\buse[A-Z]/.test(maskedCode)) return code;\n const bindings = collectImportedBindings(code, maskedCode);\n const missing = new Set<string>();\n for (const match of maskedCode.matchAll(/\\b(use[A-Z][\\w$]*)\\b/g)) {\n const name = match[1];\n if (!REACT_HOOK_NAMES.has(name) || bindings.has(name)) continue;\n if (maskedCode[(match.index ?? 0) - 1] === \".\") continue;\n missing.add(name);\n }\n if (missing.size === 0) return code;\n const additions = [...missing].join(\", \");\n // Skips `import type { ... } from \"react\"` so we don't merge value hooks into a type-only import; supports mixed default+named imports like `import React, { useState } from \"react\"`.\n const existing = /(?:^|[;\\n])\\s*import\\s+(?:[A-Za-z_$][\\w$]*\\s*,\\s*)?\\{([^}]*)\\}\\s+from\\s+[\"']react[\"']/.exec(code);\n if (existing) {\n if (!isUnmaskedImportMatch(code, maskedCode, existing)) return `import { ${additions} } from \"react\";\\n${code}`;\n const inner = existing[1].trim().replace(/,\\s*$/, \"\");\n const merged = inner ? `${inner}, ${additions}` : additions;\n const rewritten = existing[0].replace(/\\{[^}]*\\}/, `{ ${merged} }`);\n return `${code.slice(0, existing.index)}${rewritten}${code.slice(existing.index + existing[0].length)}`;\n }\n return `import { ${additions} } from \"react\";\\n${code}`;\n};\n\nconst isLikelyJsxTagStart = (code: string, index: number) => {\n const next = code[index + 1] ?? \"\";\n if (!/[A-Za-z/>]/.test(next)) return false;\n let previous = index - 1;\n while (previous >= 0 && /\\s/.test(code[previous])) previous -= 1;\n if (previous < 0) return true;\n const previousChar = code[previous];\n if (\"([{=:?!,&|^~*/%+-;\".includes(previousChar)) return true;\n if (previousChar === \">\" && code[previous - 1] === \"=\") return true;\n if (/[)\\]}\"'`]/.test(previousChar)) return false;\n if (/[A-Za-z0-9_$]/.test(previousChar)) {\n let word = \"\";\n for (let cursor = previous; cursor >= 0 && /[A-Za-z0-9_$]/.test(code[cursor]); cursor -= 1) word = code[cursor] + word;\n return new Set([\"return\", \"throw\", \"await\", \"yield\", \"case\", \"default\", \"else\", \"typeof\", \"void\", \"delete\", \"new\"]).has(word);\n }\n return previousChar !== \">\";\n};\n\nconst isLikelyStatementBlock = (code: string, index: number) => {\n if (code[index] !== \"{\") return false;\n const before = code.slice(0, index).trimEnd();\n return /\\bfunction(?:\\s+[\\w$]+)?\\s*\\([^)]*\\)$/.test(before) || /\\b(?:if|for|while|switch|with)\\s*\\([^)]*\\)$/.test(before) || /\\bcatch(?:\\s*\\([^)]*\\))?$/.test(before) || /(?:^|[^\\w$])(?:else|try|finally|do)$/.test(before) || before.endsWith(\"=>\");\n};\n\n// `null` when `index` isn't a comment start, `-1` when the comment is unterminated, else the index just past it.\n// The three tag/expression scanners below all need this and drifted apart once already — #1600 was one of them missing it.\nconst findCommentEnd = (code: string, index: number) => {\n if (code[index] !== \"/\") return null;\n if (code[index + 1] === \"/\") {\n const end = code.indexOf(\"\\n\", index + 2);\n return end === -1 ? -1 : end + 1;\n }\n if (code[index + 1] === \"*\") {\n const end = code.indexOf(\"*/\", index + 2);\n return end === -1 ? -1 : end + 2;\n }\n return null;\n};\n\nconst findJsxTagEnd = (code: string, start: number) => {\n const stack: string[] = [];\n let quote: string | null = null;\n for (let index = start + 1; index < code.length; index += 1) {\n const char = code[index];\n if (quote) {\n if (char === \"\\\\\") index += 1;\n else if (char === quote) quote = null;\n continue;\n }\n // A regex ending in an escaped slash (`/\\//`) puts a literal `//` in the source, so it must be consumed before the\n // comment scan below mistakes it for one — same ordering `findJsxAttributeExpressionEnd` uses.\n if (stack.length > 0 && isLikelyRegexLiteralStart(code, index)) {\n index = findRegexLiteralEnd(code, index) - 1;\n continue;\n }\n // Comments are legal anywhere in a tag, including its own attribute list — not just inside an attribute's `{…}`.\n // Skipping them keeps an apostrophe in `// framework's Link` from opening a string that swallows the rest of the tag (#1600).\n const commentEnd = findCommentEnd(code, index);\n if (commentEnd !== null) {\n if (commentEnd === -1) return -1;\n index = commentEnd - 1;\n continue;\n }\n if (char === '\"' || char === \"'\" || char === \"`\") {\n quote = char;\n continue;\n }\n if (char in BLOCK_FOLLOWERS) {\n stack.push(BLOCK_FOLLOWERS[char]);\n continue;\n }\n if (BLOCK_CLOSERS.has(char)) {\n if (stack.at(-1) === char) stack.pop();\n continue;\n }\n if (char === \">\" && stack.length === 0) return index;\n }\n return -1;\n};\nconst findJsxAttributeExpressionEnd = (code: string, index: number) => {\n let depth = 1;\n while (index < code.length) {\n const commentEnd = findCommentEnd(code, index);\n if (commentEnd !== null) {\n index = commentEnd === -1 ? code.length : commentEnd;\n continue;\n }\n if (isLikelyRegexLiteralStart(code, index)) {\n index = findRegexLiteralEnd(code, index);\n continue;\n }\n if (code[index] === '\"' || code[index] === \"'\") {\n index = findStringLiteralEnd(code, index);\n continue;\n }\n if (code[index] === \"`\") {\n index = findTemplateLiteralEnd(code, index);\n continue;\n }\n if (code[index] === \"{\") depth += 1;\n else if (code[index] === \"}\") {\n depth -= 1;\n if (depth === 0) return index;\n }\n index += 1;\n }\n return -1;\n};\nconst completeIncompleteJsxTag = (code: string, start: number) => {\n if (code[start + 1] === \"/\") return null;\n const tagMatch = /^<\\s*([A-Za-z][\\w$.-]*)/.exec(code.slice(start));\n if (!tagMatch) return null;\n const [matched, tagName] = tagMatch;\n // Tag name may still be streaming (`inp` may become `input`, `Sur` may become `Surface`); completing now would render the wrong element or throw `Sur is not defined` and remount. Wait for a separator (space/`>`/attr).\n if (start + matched.length >= code.length) return null;\n let index = start;\n let tag = \"\";\n while (index < code.length) {\n const char = code[index];\n const commentEnd = findCommentEnd(code, index);\n if (commentEnd !== null) {\n // A still-streaming comment has to be dropped, not carried: emitting it would bury the `>` we synthesize below\n // inside the comment. A closed one is kept verbatim — comments are legal in a JSX attribute list (#1600).\n if (commentEnd === -1) {\n index = code.length;\n continue;\n }\n tag += code.slice(index, commentEnd);\n index = commentEnd;\n continue;\n }\n if (char === \"`\") {\n // A backtick is illegal as a JSX attribute value (`title=`x`` → \"JSX value should be either an expression or a quoted JSX text\"); template literals are only valid inside `{...}`. Drop the attribute.\n tag = tag.replace(/\\s*[\\w$:-]+\\s*=\\s*$/, \"\");\n index = findTemplateLiteralEnd(code, index);\n continue;\n }\n if (char === '\"' || char === \"'\") {\n const end = findStringLiteralEnd(code, index);\n let literal = code.slice(index, end);\n const closed = literal.length > 1 && literal.endsWith(char);\n // An unterminated string value is safe to close by synthesizing the missing quote — worst case the frame's text is briefly short, never a throw or a wrong binding. Host and component alike.\n if (!closed) {\n // A trailing odd backslash is an incomplete escape (`title=\"foo\\`); synthesizing the quote would make `\\\"` an escaped quote, leaving the string unterminated. Drop the dangling backslash before closing.\n if ((/\\\\*$/.exec(literal)?.[0].length ?? 0) % 2) literal = literal.slice(0, -1);\n literal += char;\n }\n tag += literal;\n index = end;\n continue;\n }\n if (char === \"{\") {\n const expressionEnd = findJsxAttributeExpressionEnd(code, index + 1);\n // An unterminated expression value must not be completed: mid-stream `{x` may still become `x.y`, `xyz`, or `x + 1`, so synthesizing `}` binds the frame to the wrong (or undefined) value and can throw. Drop the attribute, keep the tag. Host and component alike.\n if (expressionEnd === -1) {\n tag = tag.replace(/\\s*[\\w$:-]+\\s*=\\s*$/, \"\");\n index = code.length;\n continue;\n }\n const expression = code.slice(index + 1, expressionEnd);\n const completedExpression = completeIncompleteExpressionPrefix(completePartialTsx(expression), true);\n if (!expression.trim() || !completedExpression.trim() || /^(?:const|let|var)\\b/.test(completedExpression.trim())) {\n tag = tag.replace(/\\s*[\\w$:-]+\\s*=\\s*$/, \"\");\n index = expressionEnd + 1;\n continue;\n }\n tag += `{${completedExpression}}`;\n index = expressionEnd + 1;\n continue;\n }\n tag += char;\n index += 1;\n if (char === \">\") return { tag: VOID_TAGS.has(tagName) ? tag.replace(/\\s*\\/?\\s*>$/, \" />\") : tag, tagName };\n }\n // A dangling `prop=` would close as `prop=>` (SWC reads `=>` as an arrow function), breaking the whole module.\n if (/=\\s*$/.test(tag)) tag = tag.replace(/\\s*[\\w$:-]+\\s*=\\s*$/, \"\");\n // Otherwise a trailing name with no following space is still streaming (`valu` may become `value`); a trailing space commits it as a boolean attr.\n else if (!/\\s$/.test(tag)) tag = tag.replace(/\\s+[A-Za-z_$][\\w$:-]*$/, \"\");\n // That trim can eat the newline terminating a trailing comment. The closer synthesized below must stay clear of it:\n // after `//` it would be buried inside the comment, after `*/` it would fuse into a spurious self-closing `/>`.\n if (/\\/\\/[^\\n]*$|\\*\\/$/.test(tag)) tag += \"\\n\";\n // The `\\/` strip below must not mistake a block comment's terminating slash for a stray self-closing one.\n const completedTag = VOID_TAGS.has(tagName) ? `${tag.replace(/\\s*(?<!\\*)\\/\\s*$/, \"\")} />` : `${tag}>`;\n return { tag: completedTag, tagName };\n};\n\ntype PushOutput = (value: string) => void;\n\nconst consumeStringLiteral = (code: string, index: number, push: PushOutput) => {\n const quote = code[index];\n push(quote);\n index += 1;\n let closed = false;\n while (index < code.length) {\n const next = code[index];\n if (next === \"\\\\\") {\n push(code.slice(index, index + 2));\n index += 2;\n continue;\n }\n push(next);\n index += 1;\n if (next === quote) {\n closed = true;\n break;\n }\n }\n if (!closed) push(quote);\n return index;\n};\n\nconst closeFrame = (frame: CompletionFrame) => {\n if (frame.type === \"jsx\") return frame.tag ? `</${frame.tag}>` : \"</>\";\n return frame.closer;\n};\n\nconst isExpressionEnd = (value: string) => /(?:<\\/[\\w$.-]+>|<\\/>|\\/>|[>`'\")\\]\\w])$/.test(value.trimEnd());\nconst collectCompletionStackBefore = (code: string, end: number) => {\n const stack: CompletionFrame[] = [];\n for (let index = 0; index < end; index += 1) {\n const char = code[index];\n if (!isInsideJsxText(stack) && char === \"/\" && code[index + 1] === \"/\") {\n const newlineIndex = code.indexOf(\"\\n\", index + 2);\n index = (newlineIndex === -1 ? end : Math.min(newlineIndex, end)) - 1;\n continue;\n }\n if (!isInsideJsxText(stack) && char === \"/\" && code[index + 1] === \"*\") {\n const closeIndex = code.indexOf(\"*/\", index + 2);\n index = (closeIndex === -1 ? end : Math.min(closeIndex + 2, end)) - 1;\n continue;\n }\n if (!isInsideJsxText(stack) && isLikelyRegexLiteralStart(code, index)) {\n index = Math.min(findRegexLiteralEnd(code, index), end) - 1;\n continue;\n }\n if (!isInsideJsxText(stack) && (char === '\"' || char === \"'\")) {\n index = Math.min(findStringLiteralEnd(code, index), end) - 1;\n continue;\n }\n if (!isInsideJsxText(stack) && char === \"`\") {\n index = Math.min(findTemplateLiteralEnd(code, index), end) - 1;\n continue;\n }\n if (char === \"<\" && shouldStartJsxTag(code, index, stack)) {\n const closeIndex = findJsxTagEnd(code, index);\n if (closeIndex === -1 || closeIndex >= end) break;\n updateJsxStackForTag(stack, code.slice(index, closeIndex + 1));\n index = closeIndex;\n continue;\n }\n if (char in BLOCK_FOLLOWERS) stack.push({ type: \"block\", closer: BLOCK_FOLLOWERS[char], statement: isLikelyStatementBlock(code, index) });\n else if (BLOCK_CLOSERS.has(char)) {\n const frame = stack.at(-1);\n if (frame?.type === \"block\" && frame.closer === char) stack.pop();\n }\n }\n return stack;\n};\nconst endsWithJsxTagHead = (value: string) => {\n const lastOpen = value.lastIndexOf(\"<\");\n if (lastOpen === -1 || !shouldStartJsxTag(value, lastOpen, collectCompletionStackBefore(value, lastOpen))) return false;\n const tail = value.slice(lastOpen);\n return /^<\\/?(?:[A-Za-z][\\w$.-]*|$)/.test(tail) && findJsxTagEnd(value, lastOpen) === -1;\n};\nconst endsWithCompleteJsxTag = (value: string) => {\n const trimmed = value.trimEnd();\n const lastOpen = trimmed.lastIndexOf(\"<\");\n return lastOpen !== -1 && shouldStartJsxTag(trimmed, lastOpen, collectCompletionStackBefore(trimmed, lastOpen)) && findJsxTagEnd(trimmed, lastOpen) === trimmed.length - 1;\n};\nconst hasCompleteRegexLiteralEndingAt = (value: string, endIndex: number) => {\n for (let index = 0; index <= endIndex; index += 1) {\n if (value[index] !== \"/\" || !isLikelyRegexLiteralStart(value, index)) continue;\n const end = findRegexLiteralEnd(value, index);\n if (end === endIndex + 1) return true;\n if (end > index) index = end - 1;\n }\n return false;\n};\n// Window = longest operator `>>>=` (4) + the 1 char the `(?<![.\\d])\\.` lookbehind inspects, rounded up.\nconst TRAILING_OPERATOR_WINDOW = 8;\nconst endsWithPostfixUpdate = (value: string) => /[\\w$)\\]](?:\\+\\+|--)$/.test(value.trimEnd());\nconst dropTrailingOperator = (value: string, pattern: RegExp, preservePostfixUpdate = false) => {\n // `$`-anchored ⇒ the operator is pinned to the trimmed suffix, so a fixed tail window yields the identical match but\n // turns an O(n)-per-call (O(n²) over a char-by-char stream) scan into O(1) in prefix length.\n const trimmed = value.trimEnd();\n const windowStart = Math.max(0, trimmed.length - TRAILING_OPERATOR_WINDOW);\n const match = pattern.exec(trimmed.slice(windowStart));\n if (!match) return value;\n const operator = match[1];\n const operatorIndex = trimmed.length - operator.length;\n // Trimming the operator's leading-whitespace run reproduces the unwindowed scan's `value.slice(0, match.index)`\n // byte-for-byte (the pattern's `\\s*` is greedy, so `match.index` sat at the start of that run).\n const before = value.slice(0, operatorIndex).trimEnd();\n if (operator === \"=>\") return `${before} => null`;\n if (preservePostfixUpdate && (operator === \"+\" || operator === \"-\") && endsWithPostfixUpdate(value)) return value;\n if (operator === \"/\" && before.endsWith(\"*\") && before.lastIndexOf(\"/*\") > before.lastIndexOf(\"*/\")) return value;\n if (operator === \"/\" && hasCompleteRegexLiteralEndingAt(value, operatorIndex)) return value;\n if (operator === \">\" && /\\/\\s*$/.test(before)) return value;\n if ((operator === \">\" || operator === \">=\") && endsWithJsxTagHead(before)) return value;\n return before;\n};\nconst dropTrailingIncompleteExpressionOperator = (value: string, preservePostfixUpdate = false) => dropTrailingOperator(value, /\\s*(>>>=?|>>=?|<<=?|===|!==|=>|\\*\\*=|\\?\\?=|&&=|\\|\\|=|[+\\-*/%&|^]=|\\?\\?|\\?\\.|\\*\\*|[=!<>]=?|&&|\\|\\||[+\\-*/%&|^~]|(?<![.\\d])\\.)\\s*$/s, preservePostfixUpdate);\n// Blanks out string/template/regex/comment spans (but not JSX) so angle-bracket counting in `dropTrailingIncompleteStatement`\n// only sees real `<`/`>` operators and type arguments, never a literal `<` (`\"a<b\"`) or a `</div>` closer.\nconst maskLiteralSpans = (body: string) => {\n let out = \"\";\n let index = 0;\n while (index < body.length) {\n const char = body[index];\n if (char === \"/\" && body[index + 1] === \"/\") {\n const end = body.indexOf(\"\\n\", index + 2);\n const stop = end === -1 ? body.length : end;\n out += \" \".repeat(stop - index);\n index = stop;\n } else if (char === \"/\" && body[index + 1] === \"*\") {\n const end = body.indexOf(\"*/\", index + 2);\n const stop = end === -1 ? body.length : end + 2;\n out += \" \".repeat(stop - index);\n index = stop;\n } else if (char === '\"' || char === \"'\") {\n const stop = findStringLiteralEnd(body, index);\n out += \" \".repeat(stop - index);\n index = stop;\n } else if (char === \"`\") {\n const stop = findTemplateLiteralEnd(body, index);\n out += \" \".repeat(stop - index);\n index = stop;\n } else if (isLikelyRegexLiteralStart(body, index)) {\n const stop = findRegexLiteralEnd(body, index);\n out += \" \".repeat(stop - index);\n index = stop;\n } else {\n out += char;\n index += 1;\n }\n }\n return out;\n};\n// Blank out operators that share the `<` glyph so the angle-bracket counter never mistakes them for type brackets: `=>` (arrow,\n// whose `>` would otherwise close a generic early in `useCallback<(x) => void`), `<<`/`<<=` (left-shift, whose `<`s would read as\n// phantom openers in `1 << 2`), and `<=` (a `<` that can't open a generic, sparing `a <= b`). `>>`/`>>>`/`>=` are left alone so\n// nested generic closers (`Map<K, Array<V>>`) still count.\nconst neutralizeAngleOperators = (masked: string) => masked.replace(/=>|<<=?|<=/g, (op) => \" \".repeat(op.length));\n// True when the masked body has a `<` that never closes AND sits in value position (after an identifier / `)` / `]`) with no\n// bracket past it that would close out the surrounding expression — i.e. a type-argument list whose `>` hasn't streamed yet\n// (`useState<number | null`). Excludes a `<` right after `=` (a generic-arrow `<T,>(x)=>x`, completed elsewhere) and any `<`\n// followed by a `)`/`]`/`}` that ends the initializer (`items.filter((i) => i < 3)` — a real comparison, already terminated).\nconst hasUnclosedTypeArgument = (body: string) => {\n const masked = neutralizeAngleOperators(body);\n let depth = 0;\n let firstUnclosed = -1;\n for (let index = 0; index < masked.length; index += 1) {\n const char = masked[index];\n if (char === \"<\") {\n if (depth === 0) firstUnclosed = index;\n depth += 1;\n } else if (char === \">\") {\n if (depth > 0) depth -= 1;\n if (depth === 0) firstUnclosed = -1;\n }\n }\n if (firstUnclosed < 0) return false;\n if (!/[\\w$)\\]]$/.test(masked.slice(0, firstUnclosed).trimEnd())) return false;\n let bracketDepth = 0;\n for (let index = firstUnclosed + 1; index < masked.length; index += 1) {\n const char = masked[index];\n if (char === \"(\" || char === \"[\" || char === \"{\") bracketDepth += 1;\n else if (char === \")\" || char === \"]\" || char === \"}\") {\n bracketDepth -= 1;\n if (bracketDepth < 0) return false;\n }\n }\n return true;\n};\n// Locate the last `const`/`let`/`var` whose declaration runs to EOF without a depth-0 `;` terminator, scanning the\n// literal-masked text so a `;`/`{`/`<` sitting inside a string or comment (`const s = \"a; const x = useState<T\"`) is never\n// mistaken for a statement boundary. A declaration can begin at the buffer start or right after `{`, `}`, `;`, or `=>`; we keep\n// the latest one that isn't closed by a depth-0 `;` or by a `)`/`]`/`}` that pops out of its enclosing block.\nconst locateTrailingDeclaration = (value: string) => {\n const masked = maskLiteralSpans(value);\n const re = /(?:^|[{};\\n]|=>)\\s*(const(?!\\s+enum\\b)|let|var)\\b/g;\n let match: RegExpExecArray | null;\n let start = -1;\n let kind = \"\";\n while ((match = re.exec(masked))) {\n const declarationStart = match.index + match[0].length - match[1].length;\n let depth = 0;\n let terminated = false;\n for (let index = declarationStart + match[1].length; index < masked.length; index += 1) {\n const char = masked[index];\n if (char === \"(\" || char === \"[\" || char === \"{\") depth += 1;\n else if (char === \")\" || char === \"]\" || char === \"}\") {\n if (depth === 0) {\n terminated = true;\n break;\n }\n depth -= 1;\n } else if (char === \";\" && depth === 0) {\n terminated = true;\n break;\n }\n }\n if (!terminated) {\n start = declarationStart;\n kind = match[1];\n }\n }\n return start === -1 ? null : { start, kind, body: value.slice(start + kind.length) };\n};\nconst dropTrailingIncompleteStatement = (value: string) => {\n const declaration = locateTrailingDeclaration(value);\n if (!declaration) return value;\n const { start, kind, body } = declaration;\n // Net bracket depth of the initializer: a trailing `=` only truncates the declaration's own initializer when we're\n // back at top level. Inside an already-open arrow/function body (`() => { ...; x =`) the `=` belongs to a nested\n // statement the block-frame completer will close, so rolling back the whole declaration would over-strip and over-close.\n let initializerDepth = 0;\n for (const char of maskLiteralSpans(body)) {\n if (char === \"(\" || char === \"[\" || char === \"{\") initializerDepth += 1;\n else if (char === \")\" || char === \"]\" || char === \"}\") initializerDepth -= 1;\n }\n const incompleteInitializer = initializerDepth <= 0 && /=\\s*$/.test(body);\n // An initializer truncated mid-generic (`useState<number | null`) is valid-looking JS where SWC reads `<` as a comparison\n // and keeps `number` as a bare value reference, crashing at runtime; drop the statement until its `>` closer streams in.\n const unclosedGenericInitializer = body.includes(\"=\") && hasUnclosedTypeArgument(maskLiteralSpans(body));\n const missingDeclaration = !body.trim() || (!body.includes(\"=\") && (kind === \"const\" || /^[\\s,]*(?:\\[|\\{)/.test(body)));\n if (!incompleteInitializer && !missingDeclaration && !unclosedGenericInitializer) return value;\n return value.slice(0, start);\n};\nconst completeTrailingIncompleteTernary = (value: string) => {\n const masked = maskIgnoredTextForExportScan(value);\n // `masked` blanks a string/template else-branch (or regex contents) to spaces, so a *complete* `? a : \"x\"` looks like it ends at `:`.\n // A genuine trailing `:` is never inside a literal, so confirm against the raw text before synthesizing the else-branch.\n if (/(?<!\\?)\\?(?![.?])[^?;{}]*:\\s*$/s.test(masked) && /:\\s*$/s.test(value)) return `${value} null`;\n const match = /(?<!\\?)\\?(?![.?])(?<tail>[^?:;{}]*)$/s.exec(masked);\n if (!match?.groups) return value;\n return value.slice(match.index + 1).trim() ? `${value} : null` : `${value} null : null`;\n};\n// A second `function` declaration that has only streamed up to its keyword/name (no parameter list yet) leaves a dangling\n// `function`/`function Name` that SWC rejects with `Expected ident`/`Expected '('`, blanking the already-rendered prior\n// declaration. Drop it back to the preceding complete statement until its `(` arrives.\nconst dropTrailingIncompleteFunctionDeclaration = (value: string) => {\n const match = /(?:^|[}\\n;])\\s*((?:export\\s+(?:default\\s+)?)?(?:async\\s+)?function\\b\\s*\\*?\\s*[A-Za-z_$]?[\\w$]*\\s*)$/.exec(value);\n return match ? value.slice(0, match.index + (match[0].length - match[1].length)) : value;\n};\nconst completeIncompleteExpressionPrefix = (value: string, dropStatement = false, preservePostfixUpdate = false) =>\n completeTrailingIncompleteTernary(dropTrailingIncompleteExpressionOperator(dropStatement ? dropTrailingIncompleteFunctionDeclaration(dropTrailingIncompleteStatement(value)) : value, preservePostfixUpdate));\nconst fillEmptyReturnExpression = (value: string) => {\n if (/\\breturn\\s*$/.test(value)) return `${value} null`;\n return value.replace(/(\\breturn\\s*\\(\\s*)\\)$/s, \"$1null)\");\n};\n// Walk back from a string ending in `close` to the index of the `open` that matches it, or -1 if it never balances.\nconst findMatchingOpener = (text: string, open: string, close: string) => {\n let depth = 0;\n for (let index = text.length - 1; index >= 0; index -= 1) {\n if (text[index] === close) depth += 1;\n else if (text[index] === open && --depth === 0) return index;\n }\n return -1;\n};\n// A loop whose header has streamed but whose body has not ends the completed prefix as a bare `for (...)` / `while (...)`.\n// Finalization would give it an empty `;` body, and a header that never advances its counter (`for (let i = 0; i < n;)`)\n// then spins forever and freezes the tab. Loops only live in statement position (JSX iterates via `.map`), so a body-less\n// header renders nothing regardless — drop it back to before the keyword.\nconst controlStatementMatches = (code: string) => code.matchAll(/(^|[;{}\\n):])(\\s*)((?:[A-Za-z_$][\\w$]*\\s*:\\s*)*)(if|for|while|with|try|do)\\b/g);\nconst isCompleteDoWhileStatement = (value: string, scan = scanStreamingSource(value)) => {\n const masked = maskIgnoredTextForExportScan(value, scan.regexLiteralStarts);\n const isControlStatementContext = createControlStatementContextLookup(scan);\n for (const match of controlStatementMatches(masked)) {\n const start = (match.index ?? 0) + match[1].length;\n if (match[4] !== \"do\" || !isControlStatementContext(start)) continue;\n const doStart = skipStatementLabels(masked, start);\n const end = findStatementEnd(masked, doStart);\n if (end !== -1 && !masked.slice(end).trim()) return true;\n }\n return false;\n};\nconst dropTrailingBareLoopHeader = (value: string) => {\n const masked = maskLiteralSpans(value).trimEnd();\n if (!masked.endsWith(\")\")) return value;\n const index = findMatchingOpener(masked, \"(\", \")\");\n if (index <= 0) return value;\n const head = masked.slice(0, index).trimEnd();\n const match = /\\b(for|while)$/.exec(head);\n if (!match) return value;\n const before = head.slice(0, match.index);\n // A reserved word used as a member name or identifier suffix is a reference, not a loop: `obj.for(x)`, `arr?.while(p)`,\n // `a$for(1)` must survive intact. `\\b` treats `.` and `$` as boundaries, so guard both — `$` is the only identifier-\n // continuation char that can precede the keyword (letters/digits/`_` are word chars `\\b` would not break on).\n if (/[.$]$/.test(before.trimEnd())) return value;\n // `do { ... } while (cond)` is a complete statement that needs no body — keep it. Tell it apart from a plain `while` that\n // merely follows another block (`while(a){...} while(b`) by parsing the source and checking this trailing `while` closes a `do`.\n if (match[1] === \"while\" && isCompleteDoWhileStatement(value)) return value;\n return value.slice(0, match.index).trimEnd();\n};\n// A non-statement bracket frame gets its expression prefix completed (and possibly dropped). Completing can shorten the output\n// two different ways: a trailing operator/dot trim (the frame's own `{`/`[` survives, so we still close it) or a whole-declaration\n// rollback that removes the frame's own opening bracket plus every nested opener — e.g. `useState<{ nested: { count` or an array\n// initializer `[{ foo: useState<number`. We tell them apart with `frame.open` (the opener's offset): if the completed text no\n// longer reaches that offset, the opener is gone, so we emit no closer and report `dropped` for the caller to skip orphaned\n// inner frames whose openers were inside the rolled-back span.\nconst completeBlockFrame = (output: string, frame: Extract<CompletionFrame, { type: \"block\" }>) => {\n if (frame.statement) return { text: `${output}${frame.closer}`, dropped: false };\n const completed = completeIncompleteExpressionPrefix(output, true);\n const openerGone = frame.open !== undefined ? completed.length <= frame.open : completed.length < output.length;\n if (openerGone) return { text: completed, dropped: true };\n return { text: `${completed}${frame.closer}`, dropped: false };\n};\n// An empty `(` is a legal empty argument list only when it directly follows a callee; as a grouping or\n// arrow body it must hold an expression, so fill `null` rather than closing into an illegal empty `()`.\nconst isCallArgumentParen = (value: string) => /(?:[\\w$)\\]]|\\?\\.)$/.test(value.slice(0, -1).trimEnd());\nconst completeStatementPrefixFrame = (output: string, frame: CompletionFrame): { text: string; dropped: boolean } => {\n if (frame.type !== \"block\") return { text: `${output}${closeFrame(frame)}`, dropped: false };\n if (frame.closer === \")\") {\n const completed = completeIncompleteExpressionPrefix(output);\n // A paren whose entire body is a balanced empty `()` (a double paren `(()`) can only continue as an arrow head — an\n // empty parenthesized expression is rejected by the compiler. Complete the forced arrow rather than emit illegal `(())`.\n if (frame.open !== undefined && completed.slice(frame.open + 1).trim() === \"()\") return { text: `${completed} => null${frame.closer}`, dropped: false };\n return { text: `${completed.endsWith(\"(\") && !isCallArgumentParen(completed) ? `${completed}null` : completed}${frame.closer}`, dropped: false };\n }\n return completeBlockFrame(output, frame);\n};\n// Close frames from the stack top down. A frame whose own opening bracket was rolled back by a declaration drop must not emit a\n// closer — `completeBlockFrame` detects that and reports `open: number` for the bracket position it would have closed, so once\n// a drop happens we know which later frames lost their opener (those whose recorded bracket offset is past the drop point).\nconst closeStackFrames = (output: string, frames: CompletionFrame[]) => {\n let text = output;\n let dropPoint = Infinity;\n for (const frame of frames) {\n if (frame.type === \"block\" && frame.open !== undefined && frame.open >= dropPoint) continue;\n const result = completeStatementPrefixFrame(text, frame);\n if (result.dropped) dropPoint = Math.min(dropPoint, result.text.length);\n text = result.text;\n }\n return text;\n};\nconst REGEX_PREFIX_WORDS = new Set([\"return\", \"throw\", \"case\", \"delete\", \"typeof\", \"void\", \"new\", \"in\", \"of\", \"await\", \"yield\"]);\nconst JSX_CLOSING_TAG_START = /^<\\/\\s*(?:[A-Za-z][\\w$.-]*\\s*)?>/;\n\nfunction isLikelyRegexLiteralStart(code: string, index: number) {\n if (code[index] !== \"/\" || code[index + 1] === \"/\" || code[index + 1] === \"*\") return false;\n if (code[index - 1] === \"<\" && JSX_CLOSING_TAG_START.test(code.slice(index - 1))) return false;\n let previous = index - 1;\n while (previous >= 0 && /\\s/.test(code[previous])) previous -= 1;\n if (previous < 0) return true;\n const previousChar = code[previous];\n if (\"([{=,:;!&|?+-*~^<>\".includes(previousChar)) return true;\n if (!/[A-Za-z_$]/.test(previousChar)) return false;\n let word = \"\";\n for (let cursor = previous; cursor >= 0 && /[A-Za-z0-9_$]/.test(code[cursor]); cursor -= 1) word = code[cursor] + word;\n return REGEX_PREFIX_WORDS.has(word);\n}\n\nfunction findRegexLiteralEnd(code: string, index: number) {\n index += 1;\n let inClass = false;\n while (index < code.length) {\n const next = code[index];\n if (next === \"\\\\\") {\n index += 2;\n continue;\n }\n index += 1;\n if (next === \"[\" && !inClass) inClass = true;\n else if (next === \"]\" && inClass) inClass = false;\n else if (next === \"/\" && !inClass) {\n while (index < code.length) {\n const point = code.codePointAt(index) ?? 0;\n const char = String.fromCodePoint(point);\n if (!/[A-Za-z0-9_$\\\\]/.test(char) && (point <= 0x7f || /\\s/u.test(char))) break;\n index += point > 0xffff ? 2 : 1;\n }\n return index;\n }\n }\n return code.length;\n}\n\nconst consumeRegexLiteral = (code: string, index: number, push: PushOutput) => {\n push(\"/\");\n index += 1;\n let inClass = false;\n let closed = false;\n while (index < code.length) {\n const next = code[index];\n if (next === \"\\\\\") {\n push(code.slice(index, index + 2));\n index += 2;\n continue;\n }\n push(next);\n index += 1;\n if (next === \"[\" && !inClass) inClass = true;\n else if (next === \"]\" && inClass) inClass = false;\n else if (next === \"/\" && !inClass) {\n closed = true;\n break;\n }\n }\n while (closed && index < code.length && /[A-Za-z]/.test(code[index])) {\n push(code[index]);\n index += 1;\n }\n if (!closed) push(\"/\");\n return index;\n};\n\nconst isJsxTagHead = (code: string, index: number) => {\n const tail = code.slice(index);\n if (tail.startsWith(\"<>\") || tail.startsWith(\"</>\") || tail === \"</\") return true;\n if (tail.startsWith(\"</\")) return /^<\\/\\s*[A-Za-z][\\w$.-]*(?:\\s*>|>|$)/.test(tail);\n const match = /^<[A-Za-z][\\w$.-]*/.exec(tail);\n return match !== null && /^(?:$|[\\s/>])/.test(tail.slice(match[0].length));\n};\n\n// A `,`, `extends`, or `=` right after the tag name (`<T,`, `<T extends U`, `<T = U`) is a TSX generic type-param\n// list, not JSX — a JSX tag name is only ever followed by whitespace, `/`, `>`, or end, never these tokens. Without\n// this, generic arrows like `<T,>(x:T)=>x` or `<T extends {}>(x:T)=>x` are misread as an open `<T>` element and a\n// synthetic `</T>` is appended, breaking the module.\nconst isGenericTypeParamList = (code: string, index: number) => /^<\\s*[A-Za-z_$][\\w$]*\\s*(?:,|extends\\b|=)/.test(code.slice(index));\nconst shouldStartJsxTag = (code: string, index: number, stack: CompletionFrame[]) => {\n if (isGenericTypeParamList(code, index)) return false;\n if (stack.at(-1)?.type === \"jsx\") return isJsxTagHead(code, index);\n return isLikelyJsxTagStart(code, index);\n};\nconst isInsideJsxText = (stack: CompletionFrame[]) => stack.at(-1)?.type === \"jsx\";\n\nconst consumeTemplateExpression = (code: string, index: number, push: PushOutput): number => {\n let depth = 1;\n const startIndex = index;\n while (index < code.length && depth > 0) {\n const expressionChar = code[index];\n if (expressionChar === \"/\" && code[index + 1] === \"/\") {\n const newlineIndex = code.indexOf(\"\\n\", index + 2);\n const end = newlineIndex === -1 ? code.length : newlineIndex;\n push(code.slice(index, end));\n index = end;\n continue;\n }\n if (expressionChar === \"/\" && code[index + 1] === \"*\") {\n const closeIndex = code.indexOf(\"*/\", index + 2);\n if (closeIndex === -1) {\n push(`${code.slice(index)}*/`);\n return code.length;\n }\n push(code.slice(index, closeIndex + 2));\n index = closeIndex + 2;\n continue;\n }\n if (isLikelyRegexLiteralStart(code, index)) {\n index = consumeRegexLiteral(code, index, push);\n continue;\n }\n if (expressionChar === '\"' || expressionChar === \"'\") {\n index = consumeStringLiteral(code, index, push);\n continue;\n }\n if (expressionChar === \"`\") {\n index = consumeTemplateLiteral(code, index, push);\n continue;\n }\n push(expressionChar);\n index += 1;\n if (expressionChar === \"{\") depth += 1;\n else if (expressionChar === \"}\") depth -= 1;\n }\n // An interpolation that never streamed an expression (`${}` once we synthesize the `}`) is illegal; fill `null` so the\n // streamed frame parses, mirroring the empty-paren and empty-return synthesis.\n if (depth > 0) push((code.slice(startIndex, index).trim() ? \"\" : \"null\") + \"}\".repeat(depth));\n return index;\n};\n\nconst consumeTemplateLiteral = (code: string, index: number, push: PushOutput): number => {\n push(\"`\");\n index += 1;\n let closed = false;\n while (index < code.length) {\n const next = code[index];\n if (next === \"\\\\\") {\n push(code.slice(index, index + 2));\n index += 2;\n continue;\n }\n if (next === \"$\" && code[index + 1] === \"{\") {\n push(\"${\");\n index = consumeTemplateExpression(code, index + 2, push);\n continue;\n }\n push(next);\n index += 1;\n if (next === \"`\") {\n closed = true;\n break;\n }\n }\n if (!closed) push(\"`\");\n return index;\n};\n\ntype StreamingScope = { statementStart: number };\ntype StreamingScan = {\n stack: CompletionFrame[];\n closedBlocks: Array<Extract<CompletionFrame, { type: \"block\" }>>;\n scopes: StreamingScope[];\n regexLiteralStarts: Set<number>;\n lastSignificantEnd: number;\n unclosedLiteralStart: number | null;\n unclosedLiteralStatementStart: number | null;\n incompleteJsxTagStart: number | null;\n};\n\nconst FUNCTION_HEADER = /^(?:export\\s+(?:default\\s+)?)?(?:async\\s+)?function(?:\\s*\\*)?\\s*([A-Za-z_$][\\w$]*)?(?:\\s*<[\\s\\S]*>)?\\s*\\([^)]*\\)\\s*(?::\\s*[\\s\\S]+)?$/;\nconst CLASS_HEADER = /^(?:export\\s+(?:default\\s+)?)?(?:abstract\\s+)?class\\s+([A-Za-z_$][\\w$]*)(?:\\s+extends[\\s\\S]+)?(?:\\s+implements[\\s\\S]+)?$/;\nconst METHOD_HEADER = /^(?:(?:public|private|protected|static|abstract|async|override|readonly|get|set)\\s+)*([A-Za-z_$][\\w$]*)(?:\\s*<[\\s\\S]*>)?\\s*\\([^)]*\\)\\s*(?::\\s*[\\s\\S]+)?$/;\nconst COMPONENT_ARROW_HEADER = /^(?:const|let|var)\\s+([A-Z][\\w$]*)\\s*(?::[^=]+)?=\\s*(?:async\\s*)?(?:<[\\s\\S]*>\\s*)?(?:\\([^)]*\\)|[A-Za-z_$][\\w$]*)(?:\\s*:\\s*[^=]+)?\\s*=>$/;\nconst hasTopLevelClassBody = (value: string) => {\n let angleDepth = 0;\n for (const char of maskLiteralSpans(value)) {\n if (char === \"<\") angleDepth += 1;\n else if (char === \">\" && angleDepth > 0) angleDepth -= 1;\n else if (char === \"{\" && angleDepth === 0) return true;\n }\n return false;\n};\n\nconst getBlockKind = (code: string, index: number, statementStart: number): BlockKind => {\n const before = code.slice(statementStart, index).trim();\n if (!before || /^(?:[A-Za-z_$][\\w$]*\\s*:\\s*)+$/.test(before) || before === \"static\") return \"block\";\n if (FUNCTION_HEADER.test(before)) return \"function\";\n if (/^(?:if|for|while|switch|with)\\s*\\([^)]*\\)$/.test(before) || /^catch(?:\\s*\\([^)]*\\))?$/.test(before) || /^(?:else|try|finally|do)$/.test(before)) return \"control\";\n if (before.endsWith(\"=>\")) return \"arrow\";\n if (CLASS_HEADER.test(before) && !hasUnclosedTypeArgument(maskLiteralSpans(before))) return \"class\";\n if (METHOD_HEADER.test(before)) return \"method\";\n return \"other\";\n};\n\nconst findKeywordStart = (code: string, index: number, scopeStart: number, kind: BlockKind) => {\n if (kind !== \"function\" && kind !== \"control\") return scopeStart;\n const segment = code.slice(scopeStart, index);\n const pattern = kind === \"function\" ? /(?:^|[;\\n{}])\\s*((?:export\\s+(?:default\\s+)?)?(?:async\\s+)?function)\\b/g : /(?:^|[;\\n{}])\\s*((?:if|for|while|switch|catch|with|try|finally|do|else))\\b/g;\n let start = scopeStart;\n let match: RegExpExecArray | null;\n while ((match = pattern.exec(segment))) start = scopeStart + match.index + match[0].lastIndexOf(match[1]);\n return start;\n};\n\nconst canCommitBoundary = (stack: CompletionFrame[]) => !stack.some((frame) => frame.type === \"block\" && (frame.closer !== \"}\" || !frame.statement));\nconst LINE_CONTINUING_KEYWORD_OPERATOR = /(?<![.\\w$])(?:as|await|delete|in|instanceof|new|satisfies|throw|typeof|void)$/;\nconst isAsiBoundary = (before: string, after: string, leftEndsWithRegexLiteral = false) => {\n const left = before.trimEnd();\n const right = after.trimStart();\n const endsWithContinuingPunctuator = /[=+\\-*/%&|^~?!<>.:,([]$/.test(left) && !endsWithPostfixUpdate(left) && !(left.endsWith(\"/\") && leftEndsWithRegexLiteral) && !(left.endsWith(\">\") && endsWithCompleteJsxTag(left));\n if (!left || !right || endsWithContinuingPunctuator || right.startsWith(\".\") || LINE_CONTINUING_KEYWORD_OPERATOR.test(left)) return false;\n if (FUNCTION_HEADER.test(left) || (/(?:^|\\n)\\s*(?:export\\s+(?:default\\s+)?)?(?:abstract\\s+)?class\\b/.test(left) && !hasTopLevelClassBody(left))) return false;\n return /^(?:const|let|var|return|throw|if|else|for|while|switch|try|catch|finally|do|function|class|import|export)\\b|^[A-Za-z_$][\\w$]*(?:\\s*(?:[=(]|$))/.test(right);\n};\n\nconst isClosedQuotedLiteral = (code: string, start: number, end: number, quote: string) => end > start + 1 && code[end - 1] === quote && (code.slice(start, end - 1).match(/\\\\+$/)?.[0].length ?? 0) % 2 === 0;\nconst findRegexLiteralClosingSlash = (code: string, start: number, end: number) => {\n let inClass = false;\n for (let index = start + 1; index < end; index += 1) {\n const char = code[index];\n if (/\\r|\\n|\\u2028|\\u2029/.test(char)) return -1;\n if (char === \"\\\\\") {\n if (/\\r|\\n|\\u2028|\\u2029/.test(code[index + 1] ?? \"\")) return -1;\n index += 1;\n } else if (char === \"[\" && !inClass) inClass = true;\n else if (char === \"]\" && inClass) inClass = false;\n else if (char === \"/\" && !inClass) return index;\n }\n return -1;\n};\nconst hasValidRegexLiteral = (code: string, start: number, end: number) => {\n const closingSlash = findRegexLiteralClosingSlash(code, start, end);\n if (closingSlash === -1) return false;\n const flags = code.slice(closingSlash + 1, end);\n return /^[dgimsuvy]*$/.test(flags) && new Set(flags).size === flags.length && !(flags.includes(\"u\") && flags.includes(\"v\"));\n};\nconst isOnlyJsTrivia = (code: string, start: number, end: number) => {\n while (start < end) {\n if (/\\s/.test(code[start])) start += 1;\n else if (code[start] === \"/\" && code[start + 1] === \"/\") {\n const newline = code.indexOf(\"\\n\", start + 2);\n start = newline === -1 || newline >= end ? end : newline + 1;\n } else if (code[start] === \"/\" && code[start + 1] === \"*\") {\n const close = code.indexOf(\"*/\", start + 2);\n if (close === -1 || close + 2 > end) return false;\n start = close + 2;\n } else return false;\n }\n return true;\n};\nconst isTrailingClosedRegexLiteral = (code: string, end: number, start: number | null | undefined) => {\n if (start === null || start === undefined || start >= end) return false;\n const regexEnd = findRegexLiteralEnd(code, start);\n return regexEnd <= end && hasValidRegexLiteral(code, start, regexEnd) && isOnlyJsTrivia(code, regexEnd, end);\n};\nconst findLastRegexLiteralStart = (starts: ReadonlySet<number>, end: number) => {\n let last: number | undefined;\n for (const start of starts) {\n if (start >= end) break;\n last = start;\n }\n return last;\n};\nconst STATEMENT_BLOCK_KINDS = new Set<BlockKind>([\"block\", \"class\", \"control\", \"function\"]);\n\n// Keep source provenance separate from the legacy completer: JSX escaping and synthetic closers change output offsets, while\n// rollback must always cut the raw stream. The committed prefix is completed only after this source-only pass returns.\nconst scanStreamingSource = (code: string): StreamingScan => {\n const stack: CompletionFrame[] = [];\n const closedBlocks: Array<Extract<CompletionFrame, { type: \"block\" }>> = [];\n const scopes: StreamingScope[] = [{ statementStart: 0 }];\n const regexLiteralStarts = new Set<number>();\n let unclosedLiteralStart: number | null = null;\n let unclosedLiteralStatementStart: number | null = null;\n let incompleteJsxTagStart: number | null = null;\n let statementRegexBoundary = false;\n let lastRegexLiteralStart: number | null = null;\n let lastSignificantEnd = 0;\n let index = 0;\n const currentStatementStart = () => scopes.at(-1)?.statementStart ?? 0;\n const markUnclosedLiteral = () => {\n unclosedLiteralStart = index;\n unclosedLiteralStatementStart = currentStatementStart();\n };\n const markDisposableComment = () => {\n const statementStart = currentStatementStart();\n const statement = code.slice(statementStart, index);\n unclosedLiteralStart = index;\n unclosedLiteralStatementStart = isTrailingClosedRegexLiteral(code, index, lastRegexLiteralStart) || (Boolean(statement.trim()) && hasSafeExpressionTail(statement)) ? index : statementStart;\n };\n while (index < code.length) {\n const insideJsxText = stack.at(-1)?.type === \"jsx\";\n const char = code[index];\n if (!insideJsxText && char === \"/\" && code[index + 1] === \"/\") {\n const newlineIndex = code.indexOf(\"\\n\", index + 2);\n if (newlineIndex === -1) {\n markDisposableComment(); // the comment itself is disposable; preserve only a complete statement before it\n break;\n }\n const scope = scopes.at(-1);\n const boundaryEnd = Math.max(scope?.statementStart ?? 0, lastSignificantEnd);\n if (scope && canCommitBoundary(stack) && isAsiBoundary(code.slice(scope.statementStart, boundaryEnd), code.slice(newlineIndex + 1), isTrailingClosedRegexLiteral(code, boundaryEnd, lastRegexLiteralStart))) scope.statementStart = newlineIndex + 1;\n index = newlineIndex + 1;\n continue;\n }\n if (!insideJsxText && char === \"/\" && code[index + 1] === \"*\") {\n const closeIndex = code.indexOf(\"*/\", index + 2);\n if (closeIndex === -1) {\n markDisposableComment();\n break;\n }\n index = closeIndex + 2;\n continue;\n }\n if (!insideJsxText && ((statementRegexBoundary && char === \"/\") || isLikelyRegexLiteralStart(code, index))) {\n regexLiteralStarts.add(index);\n lastRegexLiteralStart = index;\n statementRegexBoundary = false;\n const end = findRegexLiteralEnd(code, index);\n if (!hasValidRegexLiteral(code, index, end)) {\n markUnclosedLiteral();\n break;\n }\n lastSignificantEnd = end;\n index = end;\n continue;\n }\n if (!insideJsxText && (char === '\"' || char === \"'\")) {\n statementRegexBoundary = false;\n const end = findStringLiteralEnd(code, index);\n if (!isClosedQuotedLiteral(code, index, end, char)) {\n markUnclosedLiteral();\n break;\n }\n lastSignificantEnd = end;\n index = end;\n continue;\n }\n if (!insideJsxText && char === \"`\") {\n statementRegexBoundary = false;\n const literal = scanTemplateLiteralEnd(code, index);\n if (!literal.closed) {\n markUnclosedLiteral();\n break;\n }\n lastSignificantEnd = literal.end;\n index = literal.end;\n continue;\n }\n if (char === \"<\" && shouldStartJsxTag(code, index, stack)) {\n statementRegexBoundary = false;\n const closeIndex = findJsxTagEnd(code, index);\n if (closeIndex === -1) {\n incompleteJsxTagStart = index;\n break;\n }\n updateJsxStackForTag(stack, code.slice(index, closeIndex + 1), index);\n lastSignificantEnd = closeIndex + 1;\n index = closeIndex + 1;\n continue;\n }\n if (char in BLOCK_FOLLOWERS) {\n statementRegexBoundary = false;\n const inheritedStart = currentStatementStart();\n const jsxExpression = char === \"{\" && insideJsxText;\n const kind = jsxExpression ? undefined : getBlockKind(code, index, inheritedStart);\n const statement = !jsxExpression && kind !== \"other\";\n const statementStart = statement ? findKeywordStart(code, index, inheritedStart, kind ?? \"other\") : inheritedStart;\n stack.push({ type: \"block\", closer: BLOCK_FOLLOWERS[char], statement, open: index, jsxExpression, statementStart, kind });\n if (statement && char === \"{\") scopes.push({ statementStart: index + 1 });\n lastSignificantEnd = index + 1;\n index += 1;\n continue;\n }\n if (BLOCK_CLOSERS.has(char)) {\n const frame = stack.at(-1);\n let closesStatementBlock = false;\n if (frame?.type === \"block\" && frame.closer === char) {\n stack.pop();\n frame.close = index;\n closedBlocks.push(frame);\n if (frame.statement && char === \"}\") {\n closesStatementBlock = STATEMENT_BLOCK_KINDS.has(frame.kind ?? \"other\");\n scopes.pop();\n const parent = scopes.at(-1);\n if (parent) parent.statementStart = index + 1;\n }\n }\n statementRegexBoundary = closesStatementBlock;\n lastSignificantEnd = index + 1;\n index += 1;\n continue;\n }\n if (char === \";\" && canCommitBoundary(stack)) {\n const scope = scopes.at(-1);\n if (scope) scope.statementStart = index + 1;\n }\n if (char === \"\\n\" && !insideJsxText && canCommitBoundary(stack)) {\n const scope = scopes.at(-1);\n const boundaryEnd = Math.max(scope?.statementStart ?? 0, lastSignificantEnd);\n if (scope && isAsiBoundary(code.slice(scope.statementStart, boundaryEnd), code.slice(index + 1), isTrailingClosedRegexLiteral(code, boundaryEnd, lastRegexLiteralStart))) scope.statementStart = index + 1;\n }\n if (!/\\s/.test(char)) {\n statementRegexBoundary = false;\n lastSignificantEnd = index + 1;\n }\n index += 1;\n }\n return { stack, closedBlocks, scopes, regexLiteralStarts, lastSignificantEnd, unclosedLiteralStart, unclosedLiteralStatementStart, incompleteJsxTagStart };\n};\n\nconst getFrameHeader = (code: string, frame: Extract<CompletionFrame, { type: \"block\" }>) => code.slice(frame.statementStart ?? 0, frame.open ?? 0).trim();\nconst isComponentFunctionFrame = (code: string, frame: Extract<CompletionFrame, { type: \"block\" }>) => /^[A-Z]/.test(FUNCTION_HEADER.exec(getFrameHeader(code, frame))?.[1] ?? \"\");\nconst isFunctionDeclarationFrame = (code: string, frame: Extract<CompletionFrame, { type: \"block\" }>) => FUNCTION_HEADER.test(getFrameHeader(code, frame));\nconst isComponentClassFrame = (code: string, frame: Extract<CompletionFrame, { type: \"block\" }>) => /^[A-Z]/.test(CLASS_HEADER.exec(getFrameHeader(code, frame))?.[1] ?? \"\");\nconst isRenderMethodFrame = (code: string, frame: Extract<CompletionFrame, { type: \"block\" }>) => METHOD_HEADER.exec(getFrameHeader(code, frame))?.[1] === \"render\";\nconst isComponentArrowPrefix = (code: string, end: number) => {\n const before = code\n .slice(0, end)\n .trimEnd()\n .replace(/\\(\\s*$/, \"\")\n .trimEnd();\n const match = /(?:^|[;}\\n])\\s*((?:const|let|var)\\s+[A-Z][\\s\\S]*=>)\\s*$/.exec(before);\n return Boolean(match && COMPONENT_ARROW_HEADER.test(match[1]));\n};\nconst isComponentArrowFrame = (code: string, frame: Extract<CompletionFrame, { type: \"block\" }>) => COMPONENT_ARROW_HEADER.test(getFrameHeader(code, frame));\n\nconst isCompleteJsxTail = (code: string, scan: StreamingScan) => {\n const trimmed = code.trimEnd();\n if (!/(?:\\/>|<\\/[A-Za-z][\\w$.-]*>)\\s*;?\\s*$/.test(trimmed)) return false;\n const scopeStart = scan.scopes.at(-1)?.statementStart ?? 0;\n const tail = trimmed.slice(scopeStart).trim();\n if (/^(?:return\\s*\\(?[\\s\\S]*<|(?:const|let|var)\\s+[A-Z][\\w$]*\\s*(?::[^=]+)?=[\\s\\S]*=>\\s*\\(?[\\s\\S]*<|<)/.test(tail)) return true;\n const shellFrame = scan.stack.findLast((frame): frame is Extract<CompletionFrame, { type: \"block\" }> => frame.type === \"block\" && (frame.kind === \"function\" || frame.kind === \"arrow\" || frame.kind === \"method\"));\n return shellFrame?.open !== undefined && /\\breturn\\s*\\(?[\\s\\S]*</.test(trimmed.slice(shellFrame.open + 1));\n};\n\nconst hasCompletedRenderMethodTail = (code: string, scan: StreamingScan) => {\n const frame = scan.closedBlocks.findLast((candidate) => candidate.kind === \"method\" && isRenderMethodFrame(code, candidate));\n if (frame?.open === undefined || frame.close === undefined || code.slice(frame.close + 1).trim()) return false;\n return /\\breturn\\s*\\(?[\\s\\S]*<(?:[A-Za-z]|>)/.test(code.slice(frame.open + 1, frame.close));\n};\n\nconst isAllowedJsxShellFrame = (code: string, frame: Extract<CompletionFrame, { type: \"block\" }>, componentArrow: boolean) => {\n if (frame.jsxExpression || frame.kind === \"control\") return false;\n if (frame.kind === \"function\") return isComponentFunctionFrame(code, frame);\n if (frame.kind === \"arrow\") return componentArrow && isComponentArrowFrame(code, frame);\n if (frame.kind === \"class\") return isComponentClassFrame(code, frame);\n if (frame.kind === \"method\") return isRenderMethodFrame(code, frame);\n if (frame.statement) return false;\n const context = getFrameHeader(code, frame).trimEnd();\n return /(?:\\breturn\\s*|=>\\s*)\\(?$/.test(context);\n};\n\n// JSX returned directly by a component is the only open script shell we complete. A nested callback/control frame with JSX is\n// rolled back with its statement, so `useEffect(() => <Card` can never become an executable synthetic callback.\nconst isJsxShellPreview = (code: string, scan: StreamingScan) => {\n const jsxFrame = scan.stack.find((frame): frame is Extract<CompletionFrame, { type: \"jsx\" }> => frame.type === \"jsx\");\n if (scan.unclosedLiteralStart !== null) return false;\n if (scan.stack.some((frame) => frame.type === \"block\" && frame.jsxExpression)) return false;\n const allFramesAllowed = (componentArrow: boolean) => scan.stack.every((frame) => frame.type !== \"block\" || isAllowedJsxShellFrame(code, frame, componentArrow));\n const rootReturnBefore = (end: number) => {\n const before = code.slice(0, end);\n return /\\breturn\\s*\\(?\\s*$/.test(before.slice(Math.max(0, before.lastIndexOf(\";\"), before.lastIndexOf(\"{\"))));\n };\n const arrowFrameActive = scan.stack.some((frame) => frame.type === \"block\" && frame.kind === \"arrow\" && isComponentArrowFrame(code, frame));\n if (!jsxFrame) {\n if (scan.incompleteJsxTagStart === null) {\n const componentArrow = isComponentArrowPrefix(code, code.length) || arrowFrameActive;\n return (isCompleteJsxTail(code, scan) || hasCompletedRenderMethodTail(code, scan)) && allFramesAllowed(componentArrow);\n }\n const jsxStart = scan.incompleteJsxTagStart;\n const incompleteComponentArrow = isComponentArrowPrefix(code, jsxStart);\n if (!rootReturnBefore(jsxStart) && !incompleteComponentArrow && !/^\\s*</.test(code)) return false;\n return allFramesAllowed(incompleteComponentArrow);\n }\n const jsxStart = jsxFrame.open ?? code.length;\n const componentArrow = isComponentArrowPrefix(code, jsxStart) || arrowFrameActive;\n if (!rootReturnBefore(jsxStart) && !componentArrow && !/^\\s*</.test(code)) return false;\n return allFramesAllowed(componentArrow);\n};\n\nconst findAsiBoundary = (code: string, start: number, regexLiteralStarts: ReadonlySet<number>) => {\n if (code.indexOf(\"\\n\", start) === -1) return start;\n let boundary = start;\n const regexStarts = [...regexLiteralStarts];\n let regexIndex = 0;\n let lastRegexStart: number | undefined;\n const segment = code.slice(start);\n for (const match of segment.matchAll(/\\n/g)) {\n const index = match.index ?? 0;\n const absoluteIndex = start + index;\n while (regexIndex < regexStarts.length && regexStarts[regexIndex] < absoluteIndex) lastRegexStart = regexStarts[regexIndex++];\n if (isAsiBoundary(segment.slice(0, index), segment.slice(index + 1), isTrailingClosedRegexLiteral(code, absoluteIndex, lastRegexStart))) boundary = absoluteIndex + 1;\n }\n return boundary;\n};\n\nconst hasIncompleteControlTail = (tail: string) => {\n const trimmed = tail.trim();\n if (/^(?:if|for|while|switch|catch|with)\\b[\\s\\S]*\\)\\s*$/.test(trimmed)) return true;\n if (/^(?:else|finally)\\s*$/.test(trimmed)) return true;\n if (/^(?:if|for|while)\\b[\\s\\S]*\\)\\s+[^;{][\\s\\S]*$/.test(trimmed) && !/[;} ]$/.test(trimmed)) return true;\n if (/^try\\b[\\s\\S]*\\}\\s*$/.test(trimmed) && !/\\}\\s*(?:catch|finally)\\b/.test(trimmed)) return true;\n if (/^do\\b[\\s\\S]*\\}\\s*$/.test(trimmed) && !/\\}\\s*while\\b/.test(trimmed)) return true;\n return false;\n};\n\nconst isTypedParameterList = (initializer: string) => {\n const match = /^(?:async\\s+)?(?:<[\\s\\S]*>\\s*)?\\(([\\s\\S]*)\\)$/.exec(initializer);\n if (!match || !match[1].includes(\":\")) return false;\n const parameters = maskLiteralSpans(match[1]);\n let segmentStart = 0;\n let parenDepth = 0;\n let bracketDepth = 0;\n let braceDepth = 0;\n const isBinding = (segment: string) => /^(?:\\.\\.\\.)?[A-Za-z_$][\\w$]*\\??$/.test(segment.trim()) || /^(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/.test(segment.trim());\n for (let index = 0; index < parameters.length; index += 1) {\n const char = parameters[index];\n if (char === \"(\") parenDepth += 1;\n else if (char === \")\") parenDepth -= 1;\n else if (char === \"[\") bracketDepth += 1;\n else if (char === \"]\") bracketDepth -= 1;\n else if (char === \"{\") braceDepth += 1;\n else if (char === \"}\") braceDepth -= 1;\n else if (char === \",\" && parenDepth === 0 && bracketDepth === 0 && braceDepth === 0) segmentStart = index + 1;\n else if (char === \":\" && parenDepth === 0 && bracketDepth === 0 && braceDepth === 0) return isBinding(parameters.slice(segmentStart, index));\n }\n return false;\n};\n\nconst hasUnsafeStreamingTypeArgument = (code: string) => {\n const masked = maskLiteralSpans(code);\n if (/(?:^|=)\\s*<\\s*[A-Za-z_$][\\w$]*\\s*(?:,|extends\\b|=)[^>]*$/.test(neutralizeAngleOperators(masked))) return true;\n if (!hasUnclosedTypeArgument(masked)) return false;\n const lastOpen = masked.lastIndexOf(\"<\");\n if (lastOpen > 0 && /\\s/.test(masked[lastOpen - 1] ?? \"\") && /^\\s*(?:\\[|\\(|\\{)/.test(masked.slice(lastOpen + 1))) return false;\n return true;\n};\n\n// Bare identifiers, primitives, assignments, and partial operators can all grow on the next chunk. Only real delimiters or a\n// source boundary make an EOF expression stable; this is why the check intentionally rejects valid-looking `const x = value`.\nconst hasSafeExpressionTail = (tail: string) => {\n const trimmed = tail.trim();\n if (!trimmed) return true;\n if (/^(?:[A-Za-z_$][\\w$]*\\s*:\\s*)+$/.test(trimmed)) return false;\n if (hasIncompleteControlTail(trimmed) || dropTrailingIncompleteExpressionOperator(trimmed) !== trimmed) return false;\n if (completeTrailingIncompleteTernary(trimmed) !== trimmed) return false;\n if (dropTrailingIncompleteFunctionDeclaration(trimmed) !== trimmed) return false;\n if (hasUnsafeStreamingTypeArgument(trimmed)) return false;\n if (/^import\\b/.test(trimmed) && !/^import\\s+(?:[\"'][\\s\\S]*[\"']|[\\s\\S]+\\s+from\\s+[\"'][\\s\\S]*[\"'])\\s*;?$/.test(trimmed)) return false;\n if (/^export\\s+(?:d(?:e(?:f(?:a(?:u(?:l(?:t)?)?)?)?)?)?)?\\s*$/.test(trimmed) || /^export\\s+default\\s+[A-Za-z_$][\\w$]*$/.test(trimmed)) return false;\n if (/^(?:export\\s+)?(?:default\\s+)?(?:abstract\\s+)?class(?:\\s+[A-Za-z_$][\\w$]*)?\\s*$/.test(trimmed)) return false;\n if (/^(?:export\\s+(?:default\\s+)?)?(?:abstract\\s+)?class\\b/.test(trimmed) && !hasTopLevelClassBody(trimmed)) return false;\n if (FUNCTION_HEADER.test(trimmed) || /^(?:export\\s+(?:default\\s+)?)?(?:async\\s+)?function\\b[\\s\\S]*\\)\\s*:\\s*$/.test(trimmed)) return false;\n if (/^(?:export\\s+)?type\\b/.test(trimmed) && !/;\\s*$/.test(trimmed)) return false;\n if (/^(?:const|let|var)\\b/.test(trimmed)) {\n const initializer = /\\b(?:const|let|var)\\b[\\s\\S]*?=\\s*([\\s\\S]*)$/.exec(trimmed)?.[1]?.trim() ?? \"\";\n // A typed parameter list is not an expression until `=>` arrives; its closing `)` must not commit the declaration early.\n if (!initializer || /^(?:async\\s+)?function\\b[\\s\\S]*\\)\\s*$/.test(initializer) || /^class(?:\\s+[A-Za-z_$][\\w$]*)?\\s*$/.test(initializer) || /^\\(\\s*\\)$/.test(initializer) || isTypedParameterList(initializer) || /[.?]$/.test(initializer) || !/[)\\]}\"'`]$/.test(initializer)) return false;\n }\n if (/^(?:return|throw|yield|await)\\b[\\s\\S]*$/.test(trimmed)) {\n const expression = trimmed.replace(/^(?:return|throw|yield|await)\\s+/, \"\").trim();\n if (!/[)\\]}\"'`]$/.test(expression)) return false;\n }\n if (/^[A-Za-z_$][\\w$]*$/.test(trimmed)) return false;\n if (/(?<![\\w$])(?:const|let|var)\\s+[A-Za-z_$][\\w$]*\\s*=\\s*[A-Za-z_$][\\w$]*$/.test(trimmed)) return false;\n if (!/(?:null|true|false)$/.test(trimmed) && /[A-Za-z_$][\\w$]*$/.test(trimmed)) return false;\n if (/^(?:[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\[[^\\]]+\\])*)\\s*=/.test(trimmed)) return false;\n if (/[A-Za-z0-9_$]$/.test(trimmed) && !/[)\\]}\"'`]$/.test(trimmed)) return false;\n return true;\n};\n\nconst findTrailingUnsafeStatementStart = (code: string, scan: StreamingScan) => {\n const scopeStart = scan.scopes.at(-1)?.statementStart ?? 0;\n const start = findAsiBoundary(code, scopeStart, scan.regexLiteralStarts);\n const tail = code.slice(start, Math.max(start, scan.lastSignificantEnd));\n if (isTrailingClosedRegexLiteral(code, code.length, findLastRegexLiteralStart(scan.regexLiteralStarts, code.length))) return code.length;\n if (/^\\s*while\\s*\\([\\s\\S]*\\)\\s*$/.test(tail) && isCompleteDoWhileStatement(code, scan)) return code.length;\n return hasSafeExpressionTail(tail) ? code.length : start;\n};\n\nconst skipMaskedWhitespace = (code: string, index: number) => {\n while (index < code.length && /\\s/.test(code[index])) index += 1;\n return index;\n};\nconst findBalancedDelimiterEnd = (code: string, index: number, open: string, close: string) => {\n if (code[index] !== open) return -1;\n let depth = 0;\n for (; index < code.length; index += 1) {\n if (code[index] === open) depth += 1;\n else if (code[index] === close && --depth === 0) return index + 1;\n }\n return -1;\n};\nconst hasKeywordAt = (code: string, index: number, keyword: string) => code.slice(index, index + keyword.length) === keyword && !/[\\w$]/.test(code[index + keyword.length] ?? \"\");\nconst isTrailingKeywordPrefix = (code: string, index: number, keywords: string[]) => {\n const tail = code.slice(index).trim();\n return !tail || keywords.some((keyword) => tail.length < keyword.length && keyword.startsWith(tail));\n};\nconst findRequiredBlockEnd = (code: string, index: number) => {\n index = skipMaskedWhitespace(code, index);\n return code[index] === \"{\" ? findBalancedDelimiterEnd(code, index, \"{\", \"}\") : -1;\n};\nconst findSimpleStatementEnd = (code: string, index: number) => {\n index = skipMaskedWhitespace(code, index);\n if (code[index] === \"{\") return findBalancedDelimiterEnd(code, index, \"{\", \"}\");\n const start = index;\n const stack: string[] = [];\n for (; index < code.length; index += 1) {\n const char = code[index];\n if (char in BLOCK_FOLLOWERS) stack.push(BLOCK_FOLLOWERS[char]);\n else if (BLOCK_CLOSERS.has(char)) {\n if (stack.at(-1) === char) stack.pop();\n else if (stack.length === 0) return index;\n } else if (char === \"\\n\" && stack.length === 0 && isAsiBoundary(code.slice(start, index), code.slice(index + 1))) return index + 1;\n else if (char === \";\" && stack.length === 0) return index + 1;\n }\n return -1;\n};\n\nconst skipStatementLabels = (code: string, index: number) => {\n index = skipMaskedWhitespace(code, index);\n let label: RegExpExecArray | null;\n while ((label = /^([A-Za-z_$][\\w$]*)\\s*:\\s*/.exec(code.slice(index))) && label[1] !== \"case\" && label[1] !== \"default\") index += label[0].length;\n return index;\n};\nfunction findIfStatementEnd(code: string, index: number) {\n const conditionEnd = findBalancedDelimiterEnd(code, skipMaskedWhitespace(code, index + \"if\".length), \"(\", \")\");\n if (conditionEnd === -1) return -1;\n const consequentEnd = findStatementEnd(code, conditionEnd);\n if (consequentEnd === -1) return -1;\n const cursor = skipMaskedWhitespace(code, consequentEnd);\n if (isTrailingKeywordPrefix(code, cursor, [\"else\"])) return -1;\n return hasKeywordAt(code, cursor, \"else\") ? findStatementEnd(code, cursor + \"else\".length) : consequentEnd;\n}\nfunction findTryStatementEnd(code: string, index: number) {\n let cursor = findRequiredBlockEnd(code, index + \"try\".length);\n if (cursor === -1) return -1;\n cursor = skipMaskedWhitespace(code, cursor);\n if (isTrailingKeywordPrefix(code, cursor, [\"catch\", \"finally\"])) return -1;\n if (hasKeywordAt(code, cursor, \"catch\")) {\n cursor = skipMaskedWhitespace(code, cursor + \"catch\".length);\n if (code[cursor] === \"(\") {\n cursor = findBalancedDelimiterEnd(code, cursor, \"(\", \")\");\n if (cursor === -1) return -1;\n }\n const catchEnd = findRequiredBlockEnd(code, cursor);\n if (catchEnd === -1) return -1;\n cursor = skipMaskedWhitespace(code, catchEnd);\n const tail = code.slice(cursor).trim();\n if (tail && tail.length < \"finally\".length && \"finally\".startsWith(tail)) return -1;\n if (!hasKeywordAt(code, cursor, \"finally\")) return catchEnd;\n cursor += \"finally\".length;\n } else if (hasKeywordAt(code, cursor, \"finally\")) cursor += \"finally\".length;\n else return -1;\n return findRequiredBlockEnd(code, cursor);\n}\nfunction findDoStatementEnd(code: string, index: number) {\n const bodyEnd = findStatementEnd(code, index + \"do\".length);\n if (bodyEnd === -1) return -1;\n let cursor = skipMaskedWhitespace(code, bodyEnd);\n if (!hasKeywordAt(code, cursor, \"while\")) return -1;\n cursor = skipMaskedWhitespace(code, cursor + \"while\".length);\n const conditionEnd = findBalancedDelimiterEnd(code, cursor, \"(\", \")\");\n if (conditionEnd === -1) return -1;\n cursor = skipMaskedWhitespace(code, conditionEnd);\n return code[cursor] === \";\" ? cursor + 1 : conditionEnd;\n}\nfunction findHeaderBodyStatementEnd(code: string, index: number, keyword: \"for\" | \"while\" | \"with\") {\n let cursor = skipMaskedWhitespace(code, index + keyword.length);\n if (keyword === \"for\" && hasKeywordAt(code, cursor, \"await\")) cursor = skipMaskedWhitespace(code, cursor + \"await\".length);\n const conditionEnd = findBalancedDelimiterEnd(code, cursor, \"(\", \")\");\n return conditionEnd === -1 ? -1 : findStatementEnd(code, conditionEnd);\n}\nfunction findSwitchStatementEnd(code: string, index: number) {\n const conditionEnd = findBalancedDelimiterEnd(code, skipMaskedWhitespace(code, index + \"switch\".length), \"(\", \")\");\n return conditionEnd === -1 ? -1 : findRequiredBlockEnd(code, conditionEnd);\n}\nfunction findStatementEnd(code: string, index: number): number {\n index = skipStatementLabels(code, index);\n if (hasKeywordAt(code, index, \"if\")) return findIfStatementEnd(code, index);\n if (hasKeywordAt(code, index, \"try\")) return findTryStatementEnd(code, index);\n if (hasKeywordAt(code, index, \"do\")) return findDoStatementEnd(code, index);\n if (hasKeywordAt(code, index, \"switch\")) return findSwitchStatementEnd(code, index);\n for (const keyword of [\"for\", \"while\", \"with\"] as const) if (hasKeywordAt(code, index, keyword)) return findHeaderBodyStatementEnd(code, index, keyword);\n return findSimpleStatementEnd(code, index);\n}\n\nconst createControlStatementContextLookup = (scan: StreamingScan) => {\n const frames = [...scan.closedBlocks, ...scan.stack].filter((frame): frame is Extract<CompletionFrame, { type: \"block\" }> & { open: number } => frame.type === \"block\" && frame.closer === \"}\" && frame.open !== undefined).toSorted((left, right) => left.open - right.open);\n const active: typeof frames = [];\n let frameIndex = 0;\n return (index: number) => {\n while (frameIndex < frames.length && frames[frameIndex].open < index) {\n const frame = frames[frameIndex++];\n while (active.length && (active.at(-1)?.close ?? Number.POSITIVE_INFINITY) <= frame.open) active.pop();\n active.push(frame);\n }\n while (active.length && (active.at(-1)?.close ?? Number.POSITIVE_INFINITY) <= index) active.pop();\n const container = active.at(-1);\n return !container || (container.statement && container.kind !== \"class\" && !container.jsxExpression);\n };\n};\n\n// Optional continuations are the dangerous boundary: `if { … } el`, `try { … } cat`, and `do { … } wh` are each valid-looking\n// prefixes if their first block is completed in isolation. Keep the whole originating statement pending until its continuation is\n// either complete or a later token proves that no optional branch follows.\nconst findPendingContinuationStart = (code: string, scan: StreamingScan) => {\n const masked = maskIgnoredTextForExportScan(code, scan.regexLiteralStarts);\n const isControlStatementContext = createControlStatementContextLookup(scan);\n let coveredUntil = -1;\n for (const match of controlStatementMatches(masked)) {\n const start = (match.index ?? 0) + match[1].length;\n if (start < coveredUntil || !isControlStatementContext(start)) continue;\n const end = findStatementEnd(masked, start);\n if (end === -1) return start;\n coveredUntil = end;\n }\n return code.length;\n};\n\nconst trimToCommittedPrefix = (code: string) => {\n let scan = scanStreamingSource(code);\n const jsxExpression = scan.stack.find((frame): frame is Extract<CompletionFrame, { type: \"block\" }> => frame.type === \"block\" && frame.jsxExpression === true);\n if (jsxExpression) {\n code = code.slice(0, jsxExpression.open ?? code.length);\n // Rolling back the child expression changes the active frames; rescan so its discarded callback/literal cannot invalidate the parent JSX shell.\n scan = scanStreamingSource(code);\n }\n let cut = code.length;\n if (scan.unclosedLiteralStart !== null) cut = Math.min(cut, scan.unclosedLiteralStatementStart ?? scan.unclosedLiteralStart);\n const safeJsxShell = isJsxShellPreview(code, scan);\n const componentArrow = safeJsxShell && (isComponentArrowPrefix(code, code.length) || scan.stack.some((frame) => frame.type === \"block\" && frame.kind === \"arrow\" && isComponentArrowFrame(code, frame)));\n for (const frame of scan.stack) {\n if (frame.type !== \"block\" || frame.jsxExpression) continue;\n if (safeJsxShell && isAllowedJsxShellFrame(code, frame, componentArrow)) continue;\n if (frame.kind === \"function\" && isFunctionDeclarationFrame(code, frame)) continue;\n cut = Math.min(cut, frame.statementStart ?? frame.open ?? code.length);\n }\n cut = Math.min(cut, findPendingContinuationStart(code, scan));\n if (scan.incompleteJsxTagStart !== null && !safeJsxShell) cut = Math.min(cut, scan.scopes.at(-1)?.statementStart ?? scan.incompleteJsxTagStart);\n if (cut === code.length && !safeJsxShell && scan.incompleteJsxTagStart === null) cut = findTrailingUnsafeStatementStart(code, scan);\n return { code: code.slice(0, cut), regexLiteralStarts: scan.regexLiteralStarts };\n};\n\nexport function completePartialTsx(code: string, options: PartialTsxOptions = {}): string {\n let regexLiteralStarts: ReadonlySet<number> | undefined;\n if (options.mode === \"streaming\") {\n const committed = trimToCommittedPrefix(code);\n code = committed.code;\n regexLiteralStarts = committed.regexLiteralStarts;\n }\n let output = \"\";\n const stack: CompletionFrame[] = [];\n let index = 0;\n const push = (value: string) => {\n output += value;\n };\n while (index < code.length) {\n const char = code[index];\n if (!isInsideJsxText(stack) && char === \"/\" && code[index + 1] === \"/\") {\n const newlineIndex = code.indexOf(\"\\n\", index + 2);\n const end = newlineIndex === -1 ? code.length : newlineIndex;\n push(code.slice(index, end));\n index = end;\n continue;\n }\n if (!isInsideJsxText(stack) && char === \"/\" && code[index + 1] === \"*\") {\n const closeIndex = code.indexOf(\"*/\", index + 2);\n if (closeIndex === -1) {\n push(`${code.slice(index)}*/`);\n index = code.length;\n continue;\n }\n push(code.slice(index, closeIndex + 2));\n index = closeIndex + 2;\n continue;\n }\n if (!isInsideJsxText(stack) && (regexLiteralStarts?.has(index) || isLikelyRegexLiteralStart(code, index))) {\n index = consumeRegexLiteral(code, index, push);\n continue;\n }\n if (!isInsideJsxText(stack) && (char === '\"' || char === \"'\")) {\n index = consumeStringLiteral(code, index, push);\n continue;\n }\n if (!isInsideJsxText(stack) && char === \"`\") {\n index = consumeTemplateLiteral(code, index, push);\n continue;\n }\n if (char === \"<\" && isInsideJsxText(stack) && !shouldStartJsxTag(code, index, stack) && index < code.length - 1) {\n push(\"<\");\n index += 1;\n continue;\n }\n if (char === \"<\" && !shouldStartJsxTag(code, index, stack) && index === code.length - 1) {\n const frame = stack.at(-1);\n if (frame?.type === \"block\" && frame.closer === \"}\" && !frame.statement) output = output.trimEnd();\n break;\n }\n if (char === \"<\" && shouldStartJsxTag(code, index, stack)) {\n const closeIndex = findJsxTagEnd(code, index);\n if (closeIndex === -1) {\n const completedTag = completeIncompleteJsxTag(code, index);\n if (completedTag === null) {\n break;\n }\n push(completedTag.tag);\n if (!completedTag.tag.trimEnd().endsWith(\"/>\") && !VOID_TAGS.has(completedTag.tagName)) stack.push({ type: \"jsx\", tag: completedTag.tagName });\n break;\n }\n const tag = code.slice(index, closeIndex + 1);\n const match = /^<\\/?\\s*([A-Za-z][\\w$.-]*)/.exec(tag);\n const tagName = match?.[1] ?? (tag === \"<>\" || tag === \"</>\" ? \"\" : null);\n if (!(tagName && VOID_TAGS.has(tagName) && tag.startsWith(\"</\"))) push(tagName && VOID_TAGS.has(tagName) && !tag.endsWith(\"/>\") ? tag.replace(/\\s*\\/?\\s*>$/, \" />\") : tag);\n index = closeIndex + 1;\n updateJsxStackForTag(stack, tag);\n continue;\n }\n if (char in BLOCK_FOLLOWERS) {\n stack.push({ type: \"block\", closer: BLOCK_FOLLOWERS[char], statement: isLikelyStatementBlock(code, index), open: output.length });\n push(char);\n index += 1;\n continue;\n }\n if (BLOCK_CLOSERS.has(char)) {\n const frame = stack.at(-1);\n if (frame?.type === \"block\" && frame.closer === char) stack.pop();\n push(char);\n index += 1;\n continue;\n }\n push(char);\n index += 1;\n }\n const lastRegexLiteralStart = regexLiteralStarts ? findLastRegexLiteralStart(regexLiteralStarts, code.length) : undefined;\n if (isTrailingClosedRegexLiteral(code, code.length, lastRegexLiteralStart) && canCommitBoundary(stack)) output += \";\";\n const closingFrames = stack.toReversed();\n const closers = closingFrames.map(closeFrame).join(\"\");\n if (!closers) return completeIncompleteExpressionPrefix(output, true, options.mode === \"streaming\");\n const statementIndex = closingFrames.findIndex((frame) => frame.type === \"block\" && frame.statement);\n if (statementIndex === -1) return closeStackFrames(output, closingFrames);\n const beforeStatement = closeStackFrames(output, closingFrames.slice(0, statementIndex));\n const completedExpression = dropTrailingBareLoopHeader(fillEmptyReturnExpression(completeIncompleteExpressionPrefix(beforeStatement, true, options.mode === \"streaming\")));\n return `${completedExpression}${isExpressionEnd(completedExpression) ? \";\" : \"\"}${closingFrames.slice(statementIndex).map(closeFrame).join(\"\")}`;\n}\n\nexport function normalizeGeneratedTsx(code: string, options: PartialTsxOptions = {}) {\n let next = completePartialTsx(stripMarkdownFence(code), options).trim();\n let exportScanCode = maskIgnoredTextForExportScan(next);\n // The ordinary lexer recognizes every regex position except a new statement after a closed block. The first mask removes\n // false candidates from JSX/templates/comments, so only the ambiguous `} /* trivia */ /regex/` shape pays for provenance.\n if (/}\\s*\\/(?![/*])/.test(exportScanCode)) exportScanCode = maskIgnoredTextForExportScan(next, scanStreamingSource(next).regexLiteralStarts);\n if (!hasDefaultExportDeclaration(exportScanCode)) {\n const componentName = findLastExportableComponent(exportScanCode);\n if (componentName) next += `\\nexport default ${componentName};`;\n }\n next = injectMissingReactHookImports(next, exportScanCode);\n return next;\n}\n",
|
|
17
|
+
"import initTsx, { transform as transformTsx } from \"@esm.sh/tsx\";\nimport { normalizeGeneratedTsx } from \"partial-tsx\";\nimport { rewriteImportMetaResolveSpecifiers, type RendererImportMap } from \"./importMap\";\n\nexport type CompileOptions = { importMap?: RendererImportMap; partial?: boolean; previousCode?: string; filename?: string; lang?: \"ts\" | \"tsx\" | \"js\" | \"jsx\"; jsxImportSource?: string };\nexport type CompileResult = { code: string; source: string; changed: boolean };\nexport type TsxCompiler = { compile: (code: string, options?: CompileOptions) => Promise<CompileResult> };\n\nlet initPromise: Promise<unknown> | null = null;\nconst initCompiler = () =>\n (initPromise ??= (async () => {\n try {\n if (typeof window === \"undefined\") return initTsx(await (await import(\"./nodeWasm\")).loadNodeWasm());\n } catch {\n // Environments without a filesystem (e.g. web workers) fall back to the bundled asset below.\n }\n // No argument: wasm-bindgen resolves `new URL(\"tsx_bg.wasm\", import.meta.url)`, which every bundler understands — a Vite-only `?url` import here broke the rest. #1690\n return initTsx();\n })().catch((error) => {\n initPromise = null;\n throw error;\n }));\n\nexport function createTsxCompiler(): TsxCompiler {\n return {\n async compile(code, options = {}) {\n await initCompiler();\n const source = options.partial ? normalizeGeneratedTsx(code, { mode: \"streaming\" }) : code;\n const resolvedSource = options.importMap?.imports ? rewriteImportMetaResolveSpecifiers(source, options.importMap.imports) : source;\n const result = transformTsx({ filename: options.filename ?? \"_.tsx\", code: resolvedSource, lang: options.lang, target: \"es2022\", importMap: options.importMap, jsxImportSource: options.jsxImportSource ?? \"react\" });\n const compiled = new TextDecoder().decode(result.code);\n return { code: compiled, source, changed: compiled !== options.previousCode };\n },\n };\n}\n",
|
|
18
|
+
"import { createContext, useContext, type Context } from \"react\";\n\nexport type GenUIRenderContextValue = { rendererScope: string; streamingPartialFrame: boolean; nextStreamingRenderKey?: () => string };\nconst defaultRendererScope = \"default\";\nconst renderContextValues = new Map<string, { complete: GenUIRenderContextValue; streaming: GenUIRenderContextValue }>();\nconst getRenderContextValues = (rendererScope: string) => {\n const cached = renderContextValues.get(rendererScope);\n if (cached) return cached;\n const values = { complete: Object.freeze({ rendererScope, streamingPartialFrame: false }), streaming: Object.freeze({ rendererScope, streamingPartialFrame: true }) };\n renderContextValues.set(rendererScope, values);\n return values;\n};\nconst completeRenderContextValue = getRenderContextValues(defaultRendererScope).complete;\n\nconst renderContextKey = Symbol.for(\"@macaron/genui-runtime:render-context\");\nconst globalRenderContext = globalThis as typeof globalThis & { [renderContextKey]?: Context<GenUIRenderContextValue> };\n\nexport const getGenUIRenderContextValue = (streamingPartialFrame: boolean, rendererScope = defaultRendererScope, nextStreamingRenderKey?: () => string): GenUIRenderContextValue => {\n if (nextStreamingRenderKey) return { rendererScope, streamingPartialFrame, nextStreamingRenderKey };\n const values = getRenderContextValues(rendererScope);\n return streamingPartialFrame ? values.streaming : values.complete;\n};\n// Production chunks can load separate copies of this module; the global symbol keeps charts and the renderer on one Context.\nexport const GenUIRenderContext = (globalRenderContext[renderContextKey] ??= createContext<GenUIRenderContextValue>(completeRenderContextValue));\nexport const useGenUIRenderContext = () => useContext(GenUIRenderContext);\n",
|
|
19
|
+
"// A tiny hand-rolled TSX lexer that extracts the ordered list of React hook calls from generated source. The renderer compares\n// successive signatures: same layout keeps preserved state, a changed layout remounts the stable boundary so React reassigns hook cells.\nconst identifierPartPattern = /[\\w$]/;\nconst hookCallPattern = /use[A-Z][\\w$]*/y;\nconst regexPrefixKeywords = new Set([\"return\", \"throw\", \"case\", \"delete\", \"void\", \"typeof\", \"yield\", \"await\", \"in\", \"of\"]);\nconst jsxPrefixKeywords = new Set([\"return\", \"throw\", \"case\", \"yield\", \"await\"]);\nconst skipQuotedString = (code: string, index: number) => {\n const quote = code[index];\n index += 1;\n while (index < code.length) {\n if (code[index] === \"\\\\\") index += 2;\n else if (code[index] === quote) return index + 1;\n else index += 1;\n }\n return code.length;\n};\nconst skipLineComment = (code: string, index: number) => {\n const end = code.indexOf(\"\\n\", index + 2);\n return end === -1 ? code.length : end;\n};\nconst skipBlockComment = (code: string, index: number) => {\n const end = code.indexOf(\"*/\", index + 2);\n return end === -1 ? code.length : end + 2;\n};\nconst isRegexLiteralStart = (code: string, index: number) => {\n const previous = previousNonSpaceIndex(code, index);\n if (previous < 0) return true;\n if (\"([{=,:;!&|?+-*~^<>\".includes(code[previous])) return true;\n if (!identifierPartPattern.test(code[previous])) return false;\n let word = \"\";\n for (let cursor = previous; cursor >= 0 && identifierPartPattern.test(code[cursor]); cursor -= 1) word = code[cursor] + word;\n return regexPrefixKeywords.has(word);\n};\nconst skipRegexLiteral = (code: string, index: number) => {\n index += 1;\n let inClass = false;\n while (index < code.length) {\n const char = code[index];\n if (char === \"\\\\\") index += 2;\n else if (char === \"[\") {\n inClass = true;\n index += 1;\n } else if (char === \"]\") {\n inClass = false;\n index += 1;\n } else if (char === \"/\" && !inClass) {\n index += 1;\n while (/[A-Za-z]/.test(code[index] ?? \"\")) index += 1;\n return index;\n } else index += 1;\n }\n return code.length;\n};\ntype HookSignatureContext = { localHookNames: Set<string>; reactNamespaces: Set<string> };\nconst previousNonSpaceIndex = (code: string, index: number) => {\n let previous = index - 1;\n while (previous >= 0 && /\\s/.test(code[previous])) previous -= 1;\n return previous;\n};\nconst readIdentifierEndingBefore = (code: string, index: number) => {\n let end = index;\n while (end > 0 && /\\s/.test(code[end - 1] ?? \"\")) end -= 1;\n let start = end;\n while (start > 0 && identifierPartPattern.test(code[start - 1] ?? \"\")) start -= 1;\n return start === end ? null : { name: code.slice(start, end), start };\n};\nconst readMemberNamespaceBefore = (code: string, index: number) => {\n const dot = previousNonSpaceIndex(code, index);\n if (dot < 0 || code[dot] !== \".\") return null;\n const namespace = readIdentifierEndingBefore(code, code[dot - 1] === \"?\" ? dot - 1 : dot);\n if (!namespace) return \"\";\n const previous = previousNonSpaceIndex(code, namespace.start);\n if (previous >= 0 && (identifierPartPattern.test(code[previous]) || \".)]}\".includes(code[previous]))) return \"\";\n return namespace.name;\n};\nconst skipHookTypeArguments = (code: string, index: number) => {\n if (code[index] !== \"<\") return index;\n let depth = 0;\n while (index < code.length) {\n const char = code[index];\n if (char === '\"' || char === \"'\") index = skipQuotedString(code, index);\n else if (char === \"/\" && code[index + 1] === \"/\") index = skipLineComment(code, index);\n else if (char === \"/\" && code[index + 1] === \"*\") index = skipBlockComment(code, index);\n else if (char === \"<\") {\n depth += 1;\n index += 1;\n } else if (char === \">\" && code[index - 1] === \"=\") index += 1;\n else if (char === \">\") {\n depth -= 1;\n index += 1;\n if (depth === 0) return index;\n } else index += 1;\n }\n return -1;\n};\nconst isFunctionDeclarationName = (code: string, index: number) => /\\bfunction\\s*\\*?\\s*$/.test(code.slice(0, index).trimEnd());\nconst collectReactHookNamespaces = (code: string) => {\n const namespaces = new Set([\"React\", \"react\"]);\n for (const match of code.matchAll(/(?:^|[;\\n])\\s*import\\s+((?:(?![;\\n]\\s*import\\b)[\\s\\S])*?)\\s+from\\s+[\"']react[\"']/g)) {\n const clause = match[1].trim();\n if (/^type\\b/.test(clause)) continue;\n if (!clause.startsWith(\"{\") && !clause.startsWith(\"*\")) {\n const defaultMatch = /^([A-Za-z_$][\\w$]*)/.exec(clause);\n if (defaultMatch) namespaces.add(defaultMatch[1]);\n }\n const namespaceMatch = /\\*\\s+as\\s+([A-Za-z_$][\\w$]*)/.exec(clause);\n if (namespaceMatch) namespaces.add(namespaceMatch[1]);\n }\n return namespaces;\n};\nconst collectLocalHookNames = (code: string) => {\n const names = new Set<string>();\n for (const match of code.matchAll(/\\bfunction\\s*\\*?\\s+(use[A-Z][\\w$]*)\\s*\\(/g)) names.add(match[1]);\n for (const match of code.matchAll(/\\b(?:const|let|var)\\s+(use[A-Z][\\w$]*)\\s*=/g)) names.add(match[1]);\n return names;\n};\nconst readHookCall = (code: string, index: number, context: HookSignatureContext) => {\n hookCallPattern.lastIndex = index;\n const match = hookCallPattern.exec(code);\n if (!match || match.index !== index) return null;\n const hookName = match[0];\n const namespace = readMemberNamespaceBefore(code, index);\n if (namespace !== null) {\n if (!context.reactNamespaces.has(namespace)) return null;\n } else {\n if (identifierPartPattern.test(code[index - 1] ?? \"\")) return null;\n if (isFunctionDeclarationName(code, index)) return null;\n }\n let end = index + hookName.length;\n while (/\\s/.test(code[end] ?? \"\")) end += 1;\n if (code[end] === \"<\") {\n end = skipHookTypeArguments(code, end);\n if (end === -1) return null;\n while (/\\s/.test(code[end] ?? \"\")) end += 1;\n }\n if (code[end] !== \"(\") return null;\n return { name: context.localHookNames.has(hookName) ? \"useCustomHook\" : hookName, end: end + 1 };\n};\nconst shouldStartJsxTag = (code: string, index: number) => {\n if (!/[A-Za-z>]/.test(code[index + 1] ?? \"\")) return false;\n const previous = previousNonSpaceIndex(code, index);\n if (previous < 0 || \"([{=,:;!?&|+-*~^<>\".includes(code[previous])) return true;\n if (!identifierPartPattern.test(code[previous])) return false;\n let word = \"\";\n for (let cursor = previous; cursor >= 0 && identifierPartPattern.test(code[cursor]); cursor -= 1) word = code[cursor] + word;\n return jsxPrefixKeywords.has(word);\n};\nconst scanHookSignatureJs = (code: string, hooks: string[], context: HookSignatureContext, start = 0, end = code.length): number => {\n for (let index = start; index < end;) {\n const char = code[index];\n if (char === \"/\" && code[index + 1] === \"/\") index = skipLineComment(code, index);\n else if (char === \"/\" && code[index + 1] === \"*\") index = skipBlockComment(code, index);\n else if (char === '\"' || char === \"'\") index = skipQuotedString(code, index);\n else if (char === \"`\") index = scanHookSignatureTemplate(code, hooks, context, index);\n else if (char === \"/\" && isRegexLiteralStart(code, index)) index = skipRegexLiteral(code, index);\n else if (char === \"<\" && shouldStartJsxTag(code, index)) index = scanHookSignatureJsx(code, hooks, context, index);\n else {\n const hook = readHookCall(code, index, context);\n if (hook) {\n hooks.push(hook.name);\n index = hook.end;\n } else index += 1;\n }\n }\n return end;\n};\nconst scanHookSignatureTemplate = (code: string, hooks: string[], context: HookSignatureContext, index: number) => {\n index += 1;\n while (index < code.length) {\n if (code[index] === \"\\\\\") index += 2;\n else if (code[index] === \"`\") return index + 1;\n else if (code[index] === \"$\" && code[index + 1] === \"{\") index = scanHookSignatureBraces(code, hooks, context, index + 1);\n else index += 1;\n }\n return code.length;\n};\nconst scanHookSignatureBraces = (code: string, hooks: string[], context: HookSignatureContext, index: number) => {\n let depth = 1;\n index += 1;\n while (index < code.length) {\n const char = code[index];\n if (char === \"/\" && code[index + 1] === \"/\") index = skipLineComment(code, index);\n else if (char === \"/\" && code[index + 1] === \"*\") index = skipBlockComment(code, index);\n else if (char === '\"' || char === \"'\") index = skipQuotedString(code, index);\n else if (char === \"`\") index = scanHookSignatureTemplate(code, hooks, context, index);\n else if (char === \"/\" && isRegexLiteralStart(code, index)) index = skipRegexLiteral(code, index);\n else if (char === \"<\" && shouldStartJsxTag(code, index)) index = scanHookSignatureJsx(code, hooks, context, index);\n else if (char === \"{\") {\n depth += 1;\n index += 1;\n } else if (char === \"}\") {\n depth -= 1;\n index += 1;\n if (depth === 0) return index;\n } else {\n const hook = readHookCall(code, index, context);\n if (hook) {\n hooks.push(hook.name);\n index = hook.end;\n } else index += 1;\n }\n }\n return code.length;\n};\nconst scanJsxOpeningTag = (code: string, hooks: string[], context: HookSignatureContext, index: number) => {\n while (index < code.length) {\n const char = code[index];\n if (char === \"`\") index = scanHookSignatureTemplate(code, hooks, context, index);\n else if (char === '\"' || char === \"'\") index = skipQuotedString(code, index);\n else if (char === \"{\") index = scanHookSignatureBraces(code, hooks, context, index);\n else if (char === \">\") {\n const previous = previousNonSpaceIndex(code, index);\n return { index: index + 1, selfClosing: code[previous] === \"/\" };\n } else index += 1;\n }\n return { index: code.length, selfClosing: true };\n};\nconst scanHookSignatureJsx = (code: string, hooks: string[], context: HookSignatureContext, index: number): number => {\n let depth = 0;\n while (index < code.length) {\n if (code.startsWith(\"</>\", index)) {\n index += 3;\n depth -= 1;\n if (depth <= 0) return index;\n } else if (code.startsWith(\"</\", index)) {\n const close = code.indexOf(\">\", index + 2);\n index = close === -1 ? code.length : close + 1;\n depth -= 1;\n if (depth <= 0) return index;\n } else if (code.startsWith(\"<>\", index)) {\n depth += 1;\n index += 2;\n } else if (code[index] === \"<\" && /[A-Za-z]/.test(code[index + 1] ?? \"\")) {\n const opened = scanJsxOpeningTag(code, hooks, context, index + 1);\n index = opened.index;\n if (!opened.selfClosing) depth += 1;\n else if (depth <= 0) return index;\n } else if (code[index] === \"{\") index = scanHookSignatureBraces(code, hooks, context, index);\n else index += 1;\n }\n return code.length;\n};\nexport const getGenUIHookSignature = (code: string) => {\n const hooks: string[] = [];\n scanHookSignatureJs(code, hooks, { localHookNames: collectLocalHookNames(code), reactNamespaces: collectReactHookNamespaces(code) });\n return hooks.join(\"\\n\");\n};\n",
|
|
20
|
+
"/**\n * Asset URLs shared by both halves. Kept apart from index.ts so the browser half\n * can import them without dragging node:fs and createRequire into its bundle.\n */\nexport const ASSET_PREFIX = \"/dsh-generative-ui/assets\";\nexport const WASM_PATH = `${ASSET_PREFIX}/tsx_bg.wasm`;\n\n/** Reads one canvas file from the session's workspace: `?cwd=<workspace>&id=<canvas>`. */\nexport const CANVAS_READ_PATH = \"/dsh-generative-ui/canvas\";\n\n/**\n * Streams one model call for a generated card: POST `{prompt|messages, system?}`.\n *\n * The host owns the credentials and the provider route, so this forwards to `ctx.llm`\n * rather than carrying a key of its own.\n */\nexport const AI_STREAM_PATH = \"/dsh-generative-ui/ai\";\n\n/**\n * Filesystem access for a generated card: `?cwd=<workspace>&path=<path>`.\n *\n * GET reads (or lists, with `?list=1`), POST writes. Both go through the host's `ctx.fs`\n * and carry the session's own sandbox policy, so what a card may do is exactly what the\n * session may do — `read-only` denies the write at the fence rather than here.\n */\nexport const FS_PATH = \"/dsh-generative-ui/fs\";\n\n/**\n * Runs one command for a generated card: `?cwd=<workspace>&session=<id>`, POST `{command}`.\n *\n * Under the session's own sandbox policy, exactly as `FS_PATH` is — a read-only session gets\n * a read-only shell rather than a different fence. Foreground only: a card that wants a\n * long-running process wants a different product.\n */\nexport const EXEC_PATH = \"/dsh-generative-ui/exec\";\n\n/**\n * One web search for a generated card: `?cwd=<workspace>`, POST `{query, maxResults?}`.\n *\n * Search only. `ctx.web` also exposes `fetch`, and this deliberately does not forward it: the\n * deployment's own `tool-web` is configured `fetch: false`, and the doc says why — *\"the local\n * backend does not block private-network targets; do not enable web_fetch where it can reach\n * sensitive internal ones.\"* A card is model-written code firing on a reader's keystrokes, so\n * re-opening from here what the host closed for its own tools is not ours to do.\n */\nexport const WEB_SEARCH_PATH = \"/dsh-generative-ui/web-search\";\n",
|
|
21
|
+
"import initTsx, { transform as transformTsx } from \"@esm.sh/tsx\";\nimport { normalizeGeneratedTsx } from \"partial-tsx\";\nimport { rewriteImportMetaResolveSpecifiers, type RendererImportMap } from \"partial-react/import-map\";\nimport { WASM_PATH } from \"../../contract-assets.ts\";\n\n// Structurally equivalent to `partial-react/compiler`'s three types. Deliberately not\n// imported from there: that module has a Vite-only `...tsx_bg.wasm?url` at the top level\n// plus a node:fs read path and a `Bun` global, none of which survive a plugin bundle.\nexport type CompileOptions = { importMap?: RendererImportMap; partial?: boolean; previousCode?: string; filename?: string };\nexport type CompileResult = { code: string; source: string; changed: boolean };\nexport type TsxCompiler = { compile: (code: string, options?: CompileOptions) => Promise<CompileResult> };\n\nlet initPromise: Promise<unknown> | null = null;\n\n/** The wasm is served by this plugin's own webServer route; /plugins only serves client.js. */\nconst initCompiler = () =>\n (initPromise ??= initTsx(WASM_PATH).catch((error: unknown) => {\n initPromise = null;\n throw error;\n }));\n\n/**\n * Starts loading the 2.6 MB wasm file so it is warm before the first real frame (a cold init\n * costs 400-500 ms). The *file* is 2.6 MB; an instantiated compiler costs roughly 16 MB of\n * heap, which is why `disposeCompiler` exists — the two numbers have been confused before.\n *\n * Never throws: `apply()` calls this and nothing else awaits it, so a\n * synchronous failure inside `initTsx` — an unfetchable wasm path, say — would otherwise\n * take the whole plugin's registration down with it and leave the shell loading forever.\n * A cold compile on the first card is a far better outcome than no plugin at all.\n */\nexport const warmCompiler = (): Promise<unknown> => {\n try {\n return initCompiler().catch(() => undefined);\n } catch {\n initPromise = null;\n return Promise.resolve();\n }\n};\n\n/**\n * Drops the wasm instance so GC can take it. `@esm.sh/tsx` exports no dispose — only\n * `init`/`initSync`/`transform` — so releasing the reference is the whole of what we can do.\n * Measured 2026-08-23: an instance costs ~16MB, and each HMR round made a fresh one while the\n * previous stayed reachable through this module-level promise. Dev-only, but a dozen reloads\n * is 200MB.\n */\nexport function disposeCompiler(): void {\n initPromise = null;\n}\n\nexport function createBrowserTsxCompiler(): TsxCompiler {\n return {\n async compile(code, options = {}) {\n await initCompiler();\n const importMap = options.importMap;\n const build = (source: string): CompileResult => {\n const resolved = importMap?.imports ? rewriteImportMetaResolveSpecifiers(source, importMap.imports) : source;\n const result = transformTsx({ filename: options.filename ?? \"_.tsx\", code: resolved, target: \"es2022\", importMap, jsxImportSource: \"react\" });\n const compiled = new TextDecoder().decode(result.code);\n return { code: compiled, source, changed: compiled !== options.previousCode };\n };\n\n // Normalization runs for `final` too. The model does not reliably close its trailing\n // `)` and `}` before writing the fence, so compiling the raw source renders every\n // streaming frame fine and then throws `Expected ',', got '<eof>'` at the very moment\n // the block completes — measured on exactly that shape.\n if (options.partial === true) return build(normalizeGeneratedTsx(code, { mode: \"streaming\" }));\n try {\n return build(normalizeGeneratedTsx(code, { mode: \"final\" }));\n } catch {\n // **The final compile must never be more fragile than a streaming frame.** The only\n // difference between the modes is that `streaming` first cuts back the still-being-typed\n // tail, and some damage (an unterminated string, typically) is only recoverable by\n // cutting. Losing the last half-sentence beats going blank on the last frame.\n return build(normalizeGeneratedTsx(code, { mode: \"streaming\" }));\n }\n },\n };\n}\n",
|
|
22
|
+
"/**\n * Generated TSX is imported as a blob URL, so an import map's targets must be real\n * URLs. Vite hosts can point at `/src/lib/react.ts`; dsh plugin bundles have no\n * such \"source is a URL\" escape hatch (and CJS factories have no `import.meta`).\n *\n * So this goes the other way round: register the module namespaces the shell has\n * already loaded, then synthesize, per specifier, a blob module that reads the\n * table and named-re-exports it. Export names are enumerated at runtime, so there\n * is no hand-written list to drift. React is a singleton for free — everyone\n * imports the same blob URL, and that URL reads the shell's instance.\n * (Ported from ui4a-playground/src/runtime/registry.ts.)\n */\nconst REGISTRY_KEY = \"__DSH_GENERATIVE_UI_MODULES__\";\ntype Registry = Record<string, Record<string, unknown>>;\n\nconst registry: Registry = ((globalThis as Record<string, unknown>)[REGISTRY_KEY] ??= {}) as Registry;\nconst urls = new Map<string, string>();\n\nconst IDENTIFIER = /^[A-Za-z_$][\\w$]*$/;\n\n/** Exported for `test/registry.test.ts`: it generates code, so a bug here is a blank card with an empty console. */\nexport function buildModuleSource(specifier: string): string {\n const namespace = registry[specifier] ?? {};\n const lines = [`const ns = globalThis[${JSON.stringify(REGISTRY_KEY)}][${JSON.stringify(specifier)}];`];\n // One `export const` per name rather than a spread: ESM export names must be statically visible.\n // Freezing getters into consts is safe here — every registered namespace is a settled module.\n for (const name of Object.keys(namespace)) {\n if (name !== \"default\" && IDENTIFIER.test(name)) lines.push(`export const ${name} = ns[${JSON.stringify(name)}];`);\n }\n lines.push(\"default\" in namespace ? \"export default ns.default;\" : \"export default ns;\");\n return lines.join(\"\\n\");\n}\n\nexport function registerModules(modules: Record<string, Record<string, unknown>>): void {\n for (const [specifier, namespace] of Object.entries(modules)) {\n // Re-registering the same namespace must keep the URL. The document import map is\n // installed once and points at these blobs for the tab's life, so revoking one leaves\n // every esm.sh package resolving `react` to a dead URL — the module graph dies and the\n // card renders blank with nothing in the console. Only a genuine hot-swap invalidates.\n if (registry[specifier] === namespace) continue;\n registry[specifier] = namespace;\n // A namespace that really changed: the old blob would re-export stale bindings.\n const stale = urls.get(specifier);\n if (stale !== undefined) {\n URL.revokeObjectURL(stale);\n urls.delete(specifier);\n }\n }\n}\n\nexport function moduleUrl(specifier: string): string {\n const cached = urls.get(specifier);\n if (cached !== undefined) return cached;\n const url = URL.createObjectURL(new Blob([buildModuleSource(specifier)], { type: \"text/javascript\" }));\n urls.set(specifier, url);\n return url;\n}\n\nexport const registryImports = (): Record<string, string> => Object.fromEntries(Object.keys(registry).map((specifier) => [specifier, moduleUrl(specifier)]));\n\n/** Drops every synthesized blob. The plugin's dispose path must call this or each HMR round leaks one URL per specifier. */\nexport function disposeRegistry(): void {\n for (const url of urls.values()) URL.revokeObjectURL(url);\n urls.clear();\n}\n",
|
|
23
|
+
"/**\n * The ui4a path contract — the single place that decides what counts as a canvas.\n * Shared by both halves; never re-derive these patterns with an inline regex.\n */\n\n/**\n * Where generated files live, under the workspace's own dsh directory.\n *\n * `.dsh/` is the harness's project convention, not ours — `dsh-skill-filesystem` reads\n * `join(projectRoot, \".dsh/skills\")` and labels that source `project-dsh`. Sitting beside\n * it keeps a plain `ls` of the user's repo clean and puts our files where they would look\n * for anything dsh wrote. `ui4a` beneath it names the format, which is the honest nesting:\n * this is a dsh plugin writing ui4a files, not a ui4a project with a dsh corner.\n */\nexport const UI4A_DIR = \".dsh/ui4a\";\nexport const CANVAS_DIR = `${UI4A_DIR}/canvases`;\nexport const CANVAS_SUFFIX = \".ui4a.tsx\";\n/**\n * Info string of an inline fence, as the model writes it. Slash, not dash — matches\n * ui4a-playground. Note the host's markdown renderer truncates it at the first\n * non-identifier character, so it reaches the DOM as `ui4a`; nothing matches on it.\n */\nexport const FENCE_LANG = \"ui4a/tsx\";\n\n/**\n * Import prefix for the capabilities the plugin lends to generated code.\n *\n * `$dsh/`, not `$ui4a/`: what these expose is the harness — the conversation, its model,\n * its filesystem — and none of it is part of the ui4a rendering contract that `FENCE_LANG`\n * and the canvas paths above define. A card written against them only runs inside dsh.\n */\nexport const CAPABILITY_PREFIX = \"$dsh\";\nexport const capabilityModule = (group: string) => `${CAPABILITY_PREFIX}/${group}`;\n\n/**\n * Canvas ids are path segments, so anything that could escape the directory is not one.\n *\n * Stated as an exclusion rather than an allowlist: `[\\w-]+` reads as \"safe\" but is really\n * \"ASCII\", and a model answering in Chinese names the file in Chinese — `背单词.ui4a.tsx`\n * was silently not a canvas, so the panel never opened and the reply still said it had.\n * What actually has to be barred is separators and traversal; the rest is a filename.\n */\nconst CANVAS_ID = /^[^/\\\\.\\s]+$/;\n\nexport const isCanvasId = (id: string) => CANVAS_ID.test(id);\n\nexport const canvasPath = (id: string) => `${CANVAS_DIR}/${id}${CANVAS_SUFFIX}`;\nexport const canvasChildDir = (id: string) => `${CANVAS_DIR}/${id}`;\n\n/**\n * Resolves a relative specifier written inside a canvas to a workspace path.\n *\n * `from` is the path the specifier was written in — the canvas file itself, or one of its\n * children — because **a relative specifier is relative to its importer, not to the canvas\n * root**. The entry writes `./<id>/board`; a child of that entry writes `./types` for its\n * sibling, and resolving both against the canvases directory sends the second one nowhere.\n * Measured on a real split: the model produced 7 files whose cross-imports are all sibling\n * form, and every one of them resolved to null before `from` existed.\n *\n * Every segment goes through the same exclusion test as an id, and the result must stay\n * inside `canvasChildDir(id)` — `..` is rejected outright rather than normalised, so there\n * is no arithmetic that could walk out.\n *\n * Returns null for anything outside that shape rather than throwing: the caller is a route\n * answering an arbitrary page, and a bad specifier is a 400, not a crash.\n */\nexport function canvasChildPath(id: string, specifier: string, from?: string): string | null {\n if (!isCanvasId(id)) return null;\n const segments = specifier.replace(/^\\.\\//, \"\").split(\"/\");\n if (segments.length === 0 || !segments.every(isCanvasId)) return null;\n const root = canvasChildDir(id);\n // No `from`, or one naming the entry file: the specifier is written beside the canvas, so\n // it must open with the id. With a `from` inside the child directory, it is written beside\n // that file instead and the id never appears.\n const within = from === undefined ? null : from.replace(/\\\\/g, \"/\").split(`${root}/`)[1];\n if (within === undefined || within === null) {\n if (segments.length < 2 || segments[0] !== id) return null;\n return `${root}/${segments.slice(1).join(\"/\")}`;\n }\n const dir = within.split(\"/\").slice(0, -1);\n return [root, ...dir, ...segments].join(\"/\");\n}\n\n/**\n * Reduces a path to its workspace-relative form.\n *\n * Tool arguments carry absolute paths, so the contract is matched on the trailing\n * `ui4a/canvases/…` portion rather than anchored at the string start.\n */\nconst normalize = (path: string) => {\n const at = path.replace(/\\\\/g, \"/\").lastIndexOf(`${CANVAS_DIR}/`);\n return at === -1 ? path.replace(/^\\.?\\//, \"\") : path.slice(at);\n};\n\n/** The canvas id of an entry path, or null when the path is not a canvas entry. */\nexport function canvasIdOf(path: string): string | null {\n const relative = normalize(path);\n if (!relative.startsWith(`${CANVAS_DIR}/`) || !relative.endsWith(CANVAS_SUFFIX)) return null;\n const id = relative.slice(CANVAS_DIR.length + 1, -CANVAS_SUFFIX.length);\n return isCanvasId(id) ? id : null;\n}\n\n/** The owning canvas of any path under the contract — entry file or child module. */\nexport function owningCanvasIdOf(path: string): string | null {\n const direct = canvasIdOf(path);\n if (direct !== null) return direct;\n const relative = normalize(path);\n if (!relative.startsWith(`${CANVAS_DIR}/`)) return null;\n const id = relative.slice(CANVAS_DIR.length + 1).split(\"/\")[0];\n return id !== undefined && isCanvasId(id) ? id : null;\n}\n",
|
|
24
|
+
"/**\n * Everything generated code may import as a \"local\" module.\n *\n * The react family MUST be here: generated code shares the shell's single React\n * instance or hooks blow up with an invalid-hook-call. All five come from the\n * shell's platform table (see tsdown.config.ts), so registering them costs no\n * bundle weight — it only republishes the instances we already received.\n *\n * We deliberately pre-register no component library. Anything else resolves\n * through the esm.sh fallback at compile time.\n */\nimport * as React from \"react\";\nimport * as ReactJsxRuntime from \"react/jsx-runtime\";\nimport * as ReactDom from \"react-dom\";\nimport * as ReactDomClient from \"react-dom/client\";\nimport { registerModules, registryImports } from \"./registry.ts\";\n\nlet installed = false;\n\n/**\n * Installs a real `<script type=\"importmap\">`.\n *\n * Compile-time rewriting only covers the code we generate. Packages pulled from\n * esm.sh arrive as already-compiled JS whose `import ... from \"react\"` survives\n * verbatim, and the browser resolves those bare specifiers against the document\n * import map alone — without it, any generated UI that uses a third-party\n * package dies on `Failed to resolve module specifier \"react\"`.\n *\n * It can only be installed once, and only before the first module resolution.\n */\nfunction installDocumentImportMap(): void {\n if (installed || typeof document === \"undefined\") return;\n installed = true;\n // A host-owned map wins: overwriting it would break whoever installed it, and a\n // second map is ignored by the browser anyway.\n if (document.querySelector('script[type=\"importmap\"]') !== null) {\n console.warn(\"[dsh-generative-ui] the shell already installs an import map; bare specifiers from esm.sh packages may not resolve\");\n return;\n }\n const script = document.createElement(\"script\");\n script.type = \"importmap\";\n script.textContent = JSON.stringify({ imports: registryImports() });\n document.head.prepend(script);\n}\n\nexport function registerRuntimeModules(): void {\n registerModules({\n react: React,\n \"react/jsx-runtime\": ReactJsxRuntime,\n \"react/jsx-dev-runtime\": ReactJsxRuntime,\n \"react-dom\": ReactDom,\n \"react-dom/client\": ReactDomClient,\n });\n installDocumentImportMap();\n}\n\nexport const hostReactVersion = React.version;\n",
|
|
25
|
+
"/**\n * `$dsh/state` — the one capability the model asks for without being told it exists.\n *\n * Three runs of a habit-tracker prompt each wrote `import { usePersistedState } from \"$dsh/state\"`\n * against a module that did not exist, which does not degrade: the browser refuses the module and\n * the card renders blank. Rewording the skill to deny it did not help — the prior survives the\n * denial. So the module exists now, with the signature all three runs assumed.\n *\n * Unlike the other capabilities this needs nothing from the host: `localStorage` and React are\n * both already there. That is also why it is worth having — the alternative the skill used to\n * prescribe is fifteen lines of try/catch that every card rewrites and half of them skip.\n */\nimport * as React from \"react\";\n\n/** Namespaced so two cards picking the same obvious key (\"todos\") do not read each other's data. */\nconst scope = (key: string) => `dsh-genui:${key}`;\n\nfunction read<T>(key: string, initial: T | (() => T)): T {\n // `initial` may be a lazy initialiser — the idiom `useState` teaches, and what a card writing\n // `usePersistedState(KEY, loadFromSomewhere())` ends up passing by accident either way.\n const fallback = () => (typeof initial === \"function\" ? (initial as () => T)() : initial);\n try {\n const raw = globalThis.localStorage?.getItem(scope(key));\n return raw === null || raw === undefined ? fallback() : (JSON.parse(raw) as T);\n } catch {\n // Private mode, a full quota, or a value someone else wrote that is not JSON. A tracker that\n // starts empty is worth more than one that throws during render.\n return fallback();\n }\n}\n\n/**\n * `useState`, except the value survives a reload — and, more often, survives the remount that\n * every canvas revision and every inline transcript re-render causes.\n */\nexport function usePersistedState<T>(key: string, initial: T | (() => T)): [T, React.Dispatch<React.SetStateAction<T>>] {\n const [value, setValue] = React.useState<T>(() => read(key, initial));\n React.useEffect(() => {\n try {\n globalThis.localStorage?.setItem(scope(key), JSON.stringify(value));\n } catch {\n // Quota or private mode. The card keeps working in memory; failing the write must not\n // fail the render.\n }\n }, [key, value]);\n return [value, setValue];\n}\n",
|
|
26
|
+
"/**\n * The `$dsh/*` capability modules generated code may import.\n *\n * These are real TypeScript that lives in our bundle; generated code reaches them through\n * a per-surface blob shim, because a blob URL cannot carry a query string and the surface\n * identity therefore has to be compiled into the module body.\n *\n * Ported from ui4a-playground, minus what this host cannot back: there is no browser-side\n * filesystem service in dsh (`dsh-fs` is the Node half only) and no client-facing model\n * gateway, so `$dsh/fs` and `$dsh/ai` have no implementation here yet.\n */\nimport { moduleUrl, registerModules, registryImports } from \"./registry.ts\";\nimport { AI_STREAM_PATH, EXEC_PATH, FS_PATH, WEB_SEARCH_PATH } from \"../../contract-assets.ts\";\nimport { capabilityModule } from \"../../contract.ts\";\nimport { registerRuntimeModules } from \"./register.ts\";\nimport { usePersistedState } from \"./state.ts\";\n\n/** What the plugin's client half lends to generated code. Registered once, at apply. */\nexport type Ui4aHost = {\n /** Sends a prompt into the current session, exactly as the composer would. */\n send: (text: string) => void;\n /** The current session's workspace, which the AI route authorizes against. */\n cwd: () => string | undefined;\n /** The open session, so a write runs under the access mode the composer shows. */\n sessionId: () => string;\n};\n\nconst INTERNAL = capabilityModule(\"internal\");\nlet host: Ui4aHost | null = null;\n\n/** Named so the round trip can be tested against the real code rather than a copy of it. */\nexport function decodeBase64(base64: string): Uint8Array<ArrayBuffer> {\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i += 1) bytes[i] = binary.charCodeAt(i);\n return bytes;\n}\n\nexport function registerUi4aHost(next: Ui4aHost): () => void {\n host = next;\n return () => {\n if (host === next) host = null;\n };\n}\n\n/**\n * The capability surface, one group per `$dsh/<group>` module.\n *\n * A function rather than a constant so the host can be swapped (or torn down) without the\n * already-imported blob modules going stale — they close over `bind`, not over a host.\n */\nexport function bind() {\n const chat = {\n /**\n * Drives the next turn from inside a card. The text is what the user would have typed:\n * it lands in the transcript as their message, because a turn nobody can see arriving\n * reads as the app talking to itself.\n */\n sendMessage: (text: string) => {\n if (host === null) throw new Error(\"[dsh-generative-ui] no host bound\");\n host.send(text);\n },\n };\n const ai = {\n /**\n * Streams text from the app's own model, one piece per network chunk.\n *\n * Nothing here holds a credential: the Node half forwards to `ctx.llm`, which owns the\n * provider route and the keys. Reach for it when the *content* is the variable part —\n * the recipe, the five candidate names — and skip it when the data is genuinely fixed.\n */\n streamText: (options: Ui4aStreamOptions | string): AsyncIterable<string> => {\n if (host === null) throw new Error(\"[dsh-generative-ui] no host bound\");\n const workspace = host.cwd();\n if (workspace === undefined) throw new Error(\"[dsh-generative-ui] $dsh/ai needs a session workspace\");\n const request = typeof options === \"string\" ? { prompt: options } : options;\n return streamFrom(workspace, request, request.signal);\n },\n };\n\n const fs = {\n /** The file's text. Throws when it does not exist or the session may not read it. */\n readFile: (path: string) => request<{ content: string }>(\"GET\", path).then((body) => body.content),\n /**\n * Directory entries: the name, whether it is a file or a directory, and a file's size.\n *\n * An array of objects rather than of names, because without `type` a card cannot draw a\n * tree — it would have to probe every entry with a second call to find out whether it\n * can be descended into. The host has all three already; we used to drop two of them.\n */\n readdir: (path: string) => request<{ entries: Ui4aDirEntry[] }>(\"GET\", path, undefined, \"list=1\").then((body) => body.entries),\n /**\n * The file's bytes, for anything that is not text.\n *\n * `readFile` decodes as UTF-8, so a .mid, a wav or a png read that way comes back with\n * every byte above 0x7f replaced by U+FFFD — corrupt, and silently so. Anything handed to\n * `decodeAudioData`, a MIDI parser or an image decoder has to come through here.\n */\n readBytes: (path: string) => request<{ base64: string }>(\"GET\", path, undefined, \"bytes=1\").then((body) => decodeBase64(body.base64)),\n /**\n * Writes the file, subject to the session's own access mode.\n *\n * Under `Read Only` this rejects exactly as the model's own `write` would — the fence\n * is the host's, not ours, so what a card may do never diverges from what the composer\n * says the session may do.\n */\n // `Promise<void>`, not the `Promise<undefined>` a bare `.then(() => undefined)` infers:\n // what a caller may do with the result is the contract, and `types/chat.d.ts` says void.\n writeFile: async (path: string, content: string): Promise<void> => {\n await request<{ written: string }>(\"POST\", path, content);\n },\n };\n\n const exec = {\n /**\n * Runs one command in the workspace and resolves with its output.\n *\n * A non-zero exit resolves rather than rejects: `git status` failing outside a repo is\n * something a card wants to show, not an outage. Only a failure to run at all rejects.\n * The session's own sandbox mode applies, so this is no wider than the model's own bash.\n */\n bash: (command: string, options?: { signal?: AbortSignal }): Promise<Ui4aExecResult> => {\n if (host === null) throw new Error(\"[dsh-generative-ui] no host bound\");\n const workspace = host.cwd();\n if (workspace === undefined) throw new Error(\"[dsh-generative-ui] $dsh/exec needs a session workspace\");\n return execRequest(workspace, host.sessionId(), command, options?.signal);\n },\n };\n\n const web = {\n /**\n * One web search, through whichever provider the host composed.\n *\n * Search only: `ctx.web` also does `fetch`, and this deployment turns that off for its own\n * tools because the local backend can reach private-network addresses. A card wanting a page\n * body should ask the user for it or search for a quotable source instead.\n */\n search: (query: string, options?: { maxResults?: number; signal?: AbortSignal }): Promise<Ui4aSearchResult> => {\n if (host === null) throw new Error(\"[dsh-generative-ui] no host bound\");\n const workspace = host.cwd();\n if (workspace === undefined) throw new Error(\"[dsh-generative-ui] $dsh/web needs a session workspace\");\n return searchRequest(workspace, query, options);\n },\n };\n\n // No host behind this one — `localStorage` and React are both already in the page. It exists\n // because the model reaches for it unprompted: five of six habit-tracker runs wrote\n // `import { usePersistedState } from \"$dsh/state\"` against a module that did not exist, and a\n // reworded denial in the skill did not stop it. An unresolvable specifier takes the whole module\n // with it, so the card renders blank.\n const state = { usePersistedState };\n\n return { chat, ai, fs, exec, web, state };\n}\n\n/** What one search returns. Mirrors the seam's `WebSearchResult`, which is what the route forwards. */\nexport type Ui4aSearchResult = {\n /** A provider-generated answer or summary, when the provider makes one (Exa and DeepSeek do not). */\n content?: string;\n sources: readonly { url: string; title?: string; snippet?: string; publishedAt?: string }[];\n /** True when the seam cut `sources` down to the requested bound. */\n truncated: boolean;\n};\n\nasync function searchRequest(cwd: string, query: string, options?: { maxResults?: number; signal?: AbortSignal }): Promise<Ui4aSearchResult> {\n const response = await fetch(`${WEB_SEARCH_PATH}?cwd=${encodeURIComponent(cwd)}`, {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ query, ...(options?.maxResults === undefined ? {} : { maxResults: options.maxResults }) }),\n signal: options?.signal,\n });\n const body = (await response.json().catch(() => ({}))) as Ui4aSearchResult & { error?: string };\n if (!response.ok) throw new Error(`[dsh-generative-ui] $dsh/web: ${body.error ?? response.statusText}`);\n return body;\n}\n\n/** Talks to the fs route, carrying the workspace and the session whose policy applies. */\nasync function request<T>(method: \"GET\" | \"POST\", path: string, content?: string, extra?: string): Promise<T> {\n if (host === null) throw new Error(\"[dsh-generative-ui] no host bound\");\n const workspace = host.cwd();\n if (workspace === undefined) throw new Error(\"[dsh-generative-ui] $dsh/fs needs a session workspace\");\n const query = `cwd=${encodeURIComponent(workspace)}&session=${encodeURIComponent(host.sessionId())}&path=${encodeURIComponent(path)}${extra === undefined ? \"\" : `&${extra}`}`;\n const response = await fetch(`${FS_PATH}?${query}`, content === undefined ? { method } : { method, headers: { \"content-type\": \"application/json\" }, body: JSON.stringify({ content }) });\n const body = (await response.json().catch(() => ({}))) as { error?: string };\n // A denial is not an outage. Naming it lets the card say \"this session is read-only\"\n // rather than \"something went wrong\".\n if (!response.ok) throw new Error(`[dsh-generative-ui] $dsh/fs ${path}: ${body.error ?? response.statusText}`);\n return body as T;\n}\n\n/** What a command left behind. `truncated` means the output was cut, not that it failed. */\nexport type Ui4aExecResult = { stdout: string; stderr: string; exitCode: number | null; truncated: { stdout: boolean; stderr: boolean }; timedOut: boolean };\n\n/** Talks to the exec route. Separate from `request` because the shape and the failure mode differ. */\nasync function execRequest(cwd: string, sessionId: string, command: string, signal?: AbortSignal): Promise<Ui4aExecResult> {\n const query = `cwd=${encodeURIComponent(cwd)}&session=${encodeURIComponent(sessionId)}`;\n // Aborting really kills the command: the route hangs its own controller off `req.on(\"close\")`,\n // so dropping the request is what a polling card needs to not stack runs on a slow one.\n const response = await fetch(`${EXEC_PATH}?${query}`, { method: \"POST\", headers: { \"content-type\": \"application/json\" }, body: JSON.stringify({ command }), signal });\n const body = (await response.json().catch(() => ({}))) as Ui4aExecResult & { error?: string };\n if (!response.ok) throw new Error(`[dsh-generative-ui] $dsh/exec: ${body.error ?? response.statusText}`);\n return body;\n}\n\n/** One entry of a directory listing. `size` is absent for directories. */\nexport type Ui4aDirEntry = { name: string; type?: \"file\" | \"directory\"; size?: number };\n\n/** One user turn plus an optional system prompt — see the route's note on why not more. */\nexport type Ui4aStreamOptions = { prompt: string; system?: string; signal?: AbortSignal };\n\n/**\n * Decodes the route's plain-text stream into characters.\n *\n * Character-at-a-time rather than chunk-at-a-time because that is what the consumer wants:\n * generated cards append to a buffer and re-parse it, and a card that grows by whole network\n * chunks reads as stuttering rather than typing.\n */\nasync function* streamFrom(cwd: string, request: Ui4aStreamOptions, signal?: AbortSignal): AsyncIterable<string> {\n // Aborting stops the model too, not just the reading: the route drops its own generation when\n // the request closes. A card that regenerates per keystroke needs that, or what the reader\n // ends up seeing is whichever of several in-flight calls happens to finish last.\n const response = await fetch(`${AI_STREAM_PATH}?cwd=${encodeURIComponent(cwd)}`, {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(request),\n signal,\n });\n if (!response.ok) throw new Error(`[dsh-generative-ui] $dsh/ai: ${response.status} ${response.statusText}`);\n if (response.body === null) throw new Error(\"[dsh-generative-ui] $dsh/ai: no response body\");\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n // `stream: true` so a multi-byte character split across chunks is not mangled — the\n // failure mode is a replacement character mid-word in any non-ASCII answer.\n //\n // `yield`, not `yield*`: spreading the string hands the consumer one character at a time,\n // which for a card that re-renders per piece is a setState per character. Measured on 560\n // characters of Chinese: 560 iterations spread, 27 by chunk, identical text either way.\n const text = decoder.decode(value, { stream: true });\n if (text !== \"\") yield text;\n }\n}\n\n/** Blob URLs for every `$dsh/*` module, built once and reused by every surface. */\nlet cached: Record<string, string> | null = null;\n\nexport function bindingImports(): Record<string, string> {\n if (cached !== null) return cached;\n // Registered here rather than in `registerUi4aHost`: what goes in the registry is `bind` itself,\n // which does not depend on the host *value*. Hanging it off host registration meant a page with\n // no host — a preview, a harness, the first frame of a session, any profile without\n // `conversation` — got capability blobs importing an EMPTY `$dsh/internal`. The first mount\n // reported `Unresolvable imports` and every one after it rendered silently blank. Verified: with\n // this moved, a `$dsh/state` card mounts and persists with nothing else registered, and a\n // `$dsh/chat` card lays out correctly and only throws `no host bound` when the button is pressed.\n registerModules({ [INTERNAL]: { bind } });\n const internal = moduleUrl(INTERNAL);\n const imports: Record<string, string> = {};\n const bound = bind();\n // Enumerated from `bind()`, not from a list beside it: a group added to the implementation and\n // missed here would simply have no blob module, and a card importing it renders blank with\n // nothing in the console — the failure mode this project spends the most effort on.\n for (const [group, members] of Object.entries(bound)) {\n const names = Object.keys(members);\n // One `export const` per name: ESM export names must be statically visible.\n const source = [`import { bind } from ${JSON.stringify(internal)};`, `const g = bind().${group};`, ...names.map((name) => `export const ${name} = g.${name};`), \"export default g;\"].join(\"\\n\");\n imports[capabilityModule(group)] = URL.createObjectURL(new Blob([source], { type: \"text/javascript\" }));\n }\n cached = imports;\n return imports;\n}\n\nexport function releaseBindings(): void {\n for (const url of Object.values(cached ?? {})) URL.revokeObjectURL(url);\n cached = null;\n}\n\n/**\n * Every module generated code can import without reaching the network: the shell's React\n * family, plus the `$dsh/*` capabilities.\n *\n * Exported from the plugin's client entry as well, so `bun run smoke` can build the blob\n * modules and parse them. They are synthesized strings that nothing type-checks, and a\n * syntax error in one fails the way an unresolvable import does — the whole module graph\n * dies and the card renders blank with no console error.\n */\nexport function localImports(): Record<string, string> {\n registerRuntimeModules();\n return { ...registryImports(), ...bindingImports() };\n}\n",
|
|
27
|
+
"//#region src/constants.ts\nconst LAYER_DEFAULT = \"default\";\nconst LAYER_PREFLIGHTS = \"preflights\";\nconst LAYER_SHORTCUTS = \"shortcuts\";\nconst LAYER_IMPORTS = \"imports\";\nconst DEFAULT_LAYERS = {\n\t[LAYER_IMPORTS]: -200,\n\t[LAYER_PREFLIGHTS]: -100,\n\t[LAYER_SHORTCUTS]: -10,\n\t[LAYER_DEFAULT]: 0\n};\n//#endregion\n//#region src/extractors/split.ts\nconst defaultSplitRE = /[\\\\:]?[\\s'\"`;{}]+/g;\nconst splitWithVariantGroupRE = /([\\\\:]?[\\s\"'`;<>]|:\\(|\\)\"|\\)\\s)/g;\nfunction splitCode(code) {\n\treturn code.split(defaultSplitRE);\n}\nconst extractorSplit = {\n\tname: \"@unocss/core/extractor-split\",\n\torder: 0,\n\textract({ code }) {\n\t\treturn splitCode(code);\n\t}\n};\n//#endregion\n//#region src/utils/basic.ts\nfunction toArray(value = []) {\n\treturn Array.isArray(value) ? value : [value];\n}\nfunction uniq(value) {\n\treturn Array.from(new Set(value));\n}\nfunction uniqueBy(array, equalFn) {\n\treturn array.reduce((acc, cur) => {\n\t\tif (acc.findIndex((item) => equalFn(cur, item)) === -1) acc.push(cur);\n\t\treturn acc;\n\t}, []);\n}\nfunction isString(s) {\n\treturn typeof s === \"string\";\n}\n//#endregion\n//#region src/utils/countable-set.ts\nvar CountableSet = class extends Set {\n\t_map = /* @__PURE__ */ new Map();\n\tconstructor(values) {\n\t\tsuper();\n\t\tif (values) for (const key of values) this.add(key);\n\t}\n\tadd(key) {\n\t\tthis._map.set(key, (this._map.get(key) ?? 0) + 1);\n\t\treturn super.add(key);\n\t}\n\tdelete(key) {\n\t\tif (!this._map.has(key)) return false;\n\t\tthis._map.delete(key);\n\t\treturn super.delete(key);\n\t}\n\tclear() {\n\t\tthis._map.clear();\n\t\tsuper.clear();\n\t}\n\tgetCount(key) {\n\t\treturn this._map.get(key) ?? 0;\n\t}\n\tsetCount(key, count) {\n\t\tthis._map.set(key, count);\n\t\treturn super.add(key);\n\t}\n};\nfunction isCountableSet(value) {\n\treturn value instanceof CountableSet;\n}\n//#endregion\n//#region src/utils/escape.ts\nfunction escapeRegExp(string) {\n\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n/**\n* CSS Selector Escape\n*/\nfunction escapeSelector(str) {\n\tconst length = str.length;\n\tlet index = -1;\n\tlet codeUnit;\n\tlet result = \"\";\n\tconst firstCodeUnit = str.charCodeAt(0);\n\twhile (++index < length) {\n\t\tcodeUnit = str.charCodeAt(index);\n\t\tif (codeUnit === 0) {\n\t\t\tresult += \"�\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (codeUnit === 37) {\n\t\t\tresult += \"\\\\%\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (codeUnit === 44) {\n\t\t\tresult += \"\\\\,\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (codeUnit >= 1 && codeUnit <= 31 || codeUnit === 127 || index === 0 && codeUnit >= 48 && codeUnit <= 57 || index === 1 && codeUnit >= 48 && codeUnit <= 57 && firstCodeUnit === 45) {\n\t\t\tresult += `\\\\${codeUnit.toString(16)} `;\n\t\t\tcontinue;\n\t\t}\n\t\tif (index === 0 && length === 1 && codeUnit === 45) {\n\t\t\tresult += `\\\\${str.charAt(index)}`;\n\t\t\tcontinue;\n\t\t}\n\t\tif (codeUnit >= 128 || codeUnit === 45 || codeUnit === 95 || codeUnit >= 48 && codeUnit <= 57 || codeUnit >= 65 && codeUnit <= 90 || codeUnit >= 97 && codeUnit <= 122) {\n\t\t\tresult += str.charAt(index);\n\t\t\tcontinue;\n\t\t}\n\t\tresult += `\\\\${str.charAt(index)}`;\n\t}\n\treturn result;\n}\nconst e = escapeSelector;\n//#endregion\n//#region src/utils/events.ts\n/**\n* Create event emitter.\n*\n* ```js\n* import { createNanoEvents } from 'nanoevents'\n*\n* class Ticker {\n* constructor() {\n* this.emitter = createNanoEvents()\n* }\n* on(...args) {\n* return this.emitter.on(...args)\n* }\n* tick() {\n* this.emitter.emit('tick')\n* }\n* }\n* ```\n*/\nfunction createNanoEvents() {\n\treturn {\n\t\tevents: {},\n\t\temit(event, ...args) {\n\t\t\t(this.events[event] || []).forEach((i) => i(...args));\n\t\t},\n\t\ton(event, cb) {\n\t\t\t(this.events[event] = this.events[event] || []).push(cb);\n\t\t\treturn () => this.events[event] = (this.events[event] || []).filter((i) => i !== cb);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/utils/helpers.ts\nconst attributifyRE = /^\\[(.+?)~?=\"(.*)\"\\]$/;\nconst cssIdRE = /\\.(css|postcss|sass|scss|less|stylus|styl)($|\\?)/;\nconst validateFilterRE = /[\\w\\u00A0-\\uFFFF%-?]/;\nfunction isAttributifySelector(selector) {\n\treturn selector.match(attributifyRE);\n}\nfunction isValidSelector(selector = \"\") {\n\treturn validateFilterRE.test(selector);\n}\nfunction normalizeVariant(variant) {\n\treturn typeof variant === \"function\" ? { match: variant } : variant;\n}\nfunction isRawUtil(util) {\n\treturn util.length === 3;\n}\nfunction notNull(value) {\n\treturn value != null;\n}\nfunction noop() {}\n//#endregion\n//#region src/utils/layer.ts\nfunction withLayer(layer, rules) {\n\trules.forEach((r) => {\n\t\tif (!r[2]) r[2] = { layer };\n\t\telse r[2].layer = layer;\n\t});\n\treturn rules;\n}\n//#endregion\n//#region src/utils/map.ts\nvar TwoKeyMap = class {\n\t_map = /* @__PURE__ */ new Map();\n\tget(key1, key2) {\n\t\tconst m2 = this._map.get(key1);\n\t\tif (m2) return m2.get(key2);\n\t}\n\tgetFallback(key1, key2, fallback) {\n\t\tlet m2 = this._map.get(key1);\n\t\tif (!m2) {\n\t\t\tm2 = /* @__PURE__ */ new Map();\n\t\t\tthis._map.set(key1, m2);\n\t\t}\n\t\tif (!m2.has(key2)) m2.set(key2, fallback);\n\t\treturn m2.get(key2);\n\t}\n\tset(key1, key2, value) {\n\t\tlet m2 = this._map.get(key1);\n\t\tif (!m2) {\n\t\t\tm2 = /* @__PURE__ */ new Map();\n\t\t\tthis._map.set(key1, m2);\n\t\t}\n\t\tm2.set(key2, value);\n\t\treturn this;\n\t}\n\thas(key1, key2) {\n\t\treturn this._map.get(key1)?.has(key2);\n\t}\n\tdelete(key1, key2) {\n\t\treturn this._map.get(key1)?.delete(key2) || false;\n\t}\n\tdeleteTop(key1) {\n\t\treturn this._map.delete(key1);\n\t}\n\tmap(fn) {\n\t\treturn Array.from(this._map.entries()).flatMap(([k1, m2]) => Array.from(m2.entries()).map(([k2, v]) => {\n\t\t\treturn fn(v, k1, k2);\n\t\t}));\n\t}\n};\nvar BetterMap = class extends Map {\n\tgetFallback(key, fallback) {\n\t\tconst v = this.get(key);\n\t\tif (v === void 0) {\n\t\t\tthis.set(key, fallback);\n\t\t\treturn fallback;\n\t\t}\n\t\treturn v;\n\t}\n\tmap(mapFn) {\n\t\tconst result = [];\n\t\tthis.forEach((v, k) => {\n\t\t\tresult.push(mapFn(v, k));\n\t\t});\n\t\treturn result;\n\t}\n\tflatMap(mapFn) {\n\t\tconst result = [];\n\t\tthis.forEach((v, k) => {\n\t\t\tresult.push(...mapFn(v, k));\n\t\t});\n\t\treturn result;\n\t}\n};\n//#endregion\n//#region src/utils/object.ts\nfunction normalizeCSSEntries(obj) {\n\tif (isString(obj)) return obj;\n\treturn (!Array.isArray(obj) ? Object.entries(obj) : obj).filter((i) => i[1] != null);\n}\nfunction normalizeCSSValues(obj) {\n\tif (Array.isArray(obj)) {\n\t\tif (obj.some((i) => !Array.isArray(i) || Array.isArray(i[0]))) return obj.map((i) => normalizeCSSEntries(i));\n\t\telse return [obj];\n\t} else return [normalizeCSSEntries(obj)];\n}\nfunction clearIdenticalEntries(entry) {\n\treturn entry.filter(([k, v], idx) => {\n\t\tif (k.startsWith(\"$$\")) return false;\n\t\tfor (let i = idx - 1; i >= 0; i--) if (entry[i][0] === k && entry[i][1] === v) return false;\n\t\treturn true;\n\t});\n}\nconst VirtualKey = \"__virtual_key__\";\nfunction entriesToCss(arr) {\n\tif (arr == null) return \"\";\n\treturn clearIdenticalEntries(arr).map(([key, value]) => value != null && typeof value !== \"function\" ? key !== \"__virtual_key__\" ? `${key}:${value};` : value : void 0).filter(Boolean).join(\"\");\n}\nfunction isObject(item) {\n\treturn item && typeof item === \"object\" && !Array.isArray(item);\n}\n/**\n* Deep merge two objects\n*/\nfunction mergeDeep(original, patch, mergeArray = false) {\n\tconst o = original;\n\tconst p = patch;\n\tif (Array.isArray(p)) {\n\t\tif (mergeArray && Array.isArray(p)) return [...o, ...p];\n\t\telse return [...p];\n\t}\n\tconst output = { ...o };\n\tif (isObject(o) && isObject(p)) Object.keys(p).forEach((key) => {\n\t\tif (isObject(o[key]) && isObject(p[key]) || Array.isArray(o[key]) && Array.isArray(p[key])) output[key] = mergeDeep(o[key], p[key], mergeArray);\n\t\telse Object.assign(output, { [key]: p[key] });\n\t});\n\treturn output;\n}\nfunction clone(val) {\n\tlet k, out, tmp;\n\tif (Array.isArray(val)) {\n\t\tout = Array.from({ length: k = val.length });\n\t\twhile (k--) out[k] = (tmp = val[k]) && typeof tmp === \"object\" ? clone(tmp) : tmp;\n\t\treturn out;\n\t}\n\tif (Object.prototype.toString.call(val) === \"[object Object]\") {\n\t\tout = {};\n\t\tfor (k in val) if (k === \"__proto__\") Object.defineProperty(out, k, {\n\t\t\tvalue: clone(val[k]),\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\twritable: true\n\t\t});\n\t\telse out[k] = (tmp = val[k]) && typeof tmp === \"object\" ? clone(tmp) : tmp;\n\t\treturn out;\n\t}\n\treturn val;\n}\nfunction isStaticRule(rule) {\n\treturn isString(rule[0]);\n}\nfunction isStaticShortcut(sc) {\n\treturn isString(sc[0]);\n}\n//#endregion\n//#region src/utils/variant-group.ts\nconst regexCache = {};\nfunction makeRegexClassGroup(separators = [\"-\", \":\"]) {\n\tconst key = separators.map((s) => escapeRegExp(s)).join(\"|\");\n\tif (!regexCache[key]) regexCache[key] = new RegExp(`((?:[!@*<~\\\\w+:_-]|\\\\[&?>?:?\\\\S*\\\\])+?)(${key})\\\\(((?:[~!<>\\\\w\\\\s:/\\\\\\\\,%#.$?-]|\\\\[[^\\\\]]*?\\\\])+?)\\\\)(?!\\\\s*?=>)`, \"gm\");\n\tregexCache[key].lastIndex = 0;\n\treturn regexCache[key];\n}\nfunction parseVariantGroup(str, separators = [\"-\", \":\"], depth = 5) {\n\tconst regexClassGroup = makeRegexClassGroup(separators);\n\tlet hasChanged;\n\tlet content = str.toString();\n\tconst prefixes = /* @__PURE__ */ new Set();\n\tconst groupsByOffset = /* @__PURE__ */ new Map();\n\tdo {\n\t\thasChanged = false;\n\t\tcontent = content.replace(regexClassGroup, (from, pre, sep, body, groupOffset) => {\n\t\t\tif (!separators.includes(sep)) return from;\n\t\t\thasChanged = true;\n\t\t\tprefixes.add(pre + sep);\n\t\t\tconst bodyOffset = groupOffset + pre.length + sep.length + 1;\n\t\t\tconst group = {\n\t\t\t\tlength: from.length,\n\t\t\t\titems: []\n\t\t\t};\n\t\t\tgroupsByOffset.set(groupOffset, group);\n\t\t\tfor (const itemMatch of [...body.matchAll(/\\S+/g)]) {\n\t\t\t\tconst itemOffset = bodyOffset + itemMatch.index;\n\t\t\t\tlet innerItems = groupsByOffset.get(itemOffset)?.items;\n\t\t\t\tif (innerItems) groupsByOffset.delete(itemOffset);\n\t\t\t\telse innerItems = [{\n\t\t\t\t\toffset: itemOffset,\n\t\t\t\t\tlength: itemMatch[0].length,\n\t\t\t\t\tclassName: itemMatch[0]\n\t\t\t\t}];\n\t\t\t\tfor (const item of innerItems) {\n\t\t\t\t\titem.className = item.className === \"~\" ? sep === \":\" ? `${pre}${sep}~` : pre : item.className.replace(/^(!?)(.*)/, `$1${pre}${sep}$2`);\n\t\t\t\t\tgroup.items.push(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn \"$\".repeat(from.length);\n\t\t});\n\t\tdepth -= 1;\n\t} while (hasChanged && depth);\n\tlet expanded;\n\tif (typeof str === \"string\") {\n\t\texpanded = \"\";\n\t\tlet prevOffset = 0;\n\t\tfor (const [offset, group] of groupsByOffset) {\n\t\t\texpanded += str.slice(prevOffset, offset);\n\t\t\texpanded += group.items.map((item) => item.className).join(\" \");\n\t\t\tprevOffset = offset + group.length;\n\t\t}\n\t\texpanded += str.slice(prevOffset);\n\t} else {\n\t\texpanded = str;\n\t\tfor (const [offset, group] of groupsByOffset) expanded.overwrite(offset, offset + group.length, group.items.map((item) => item.className).join(\" \"));\n\t}\n\treturn {\n\t\tprefixes: Array.from(prefixes),\n\t\thasChanged,\n\t\tgroupsByOffset,\n\t\tget expanded() {\n\t\t\treturn expanded.toString();\n\t\t}\n\t};\n}\nfunction collapseVariantGroup(str, prefixes) {\n\tconst collection = /* @__PURE__ */ new Map();\n\tconst sortedPrefix = prefixes.sort((a, b) => b.length - a.length);\n\treturn str.split(/\\s+/g).map((part) => {\n\t\tconst prefix = sortedPrefix.find((prefix) => part.startsWith(prefix));\n\t\tif (!prefix) return part;\n\t\tconst body = part.slice(prefix.length);\n\t\tif (collection.has(prefix)) {\n\t\t\tcollection.get(prefix).push(body);\n\t\t\treturn null;\n\t\t} else {\n\t\t\tconst items = [body];\n\t\t\tcollection.set(prefix, items);\n\t\t\treturn {\n\t\t\t\tprefix,\n\t\t\t\titems\n\t\t\t};\n\t\t}\n\t}).filter(notNull).map((i) => {\n\t\tif (typeof i === \"string\") return i;\n\t\treturn `${i.prefix}(${i.items.join(\" \")})`;\n\t}).join(\" \");\n}\nfunction expandVariantGroup(str, separators = [\"-\", \":\"], depth = 5) {\n\tconst res = parseVariantGroup(str, separators, depth);\n\treturn typeof str === \"string\" ? res.expanded : str;\n}\n//#endregion\n//#region src/utils/warn.ts\nconst warned = /* @__PURE__ */ new Set();\nfunction warnOnce(msg) {\n\tif (warned.has(msg)) return;\n\tconsole.warn(\"[unocss]\", msg);\n\twarned.add(msg);\n}\n//#endregion\n//#region src/config.ts\nfunction resolveShortcuts(shortcuts) {\n\treturn toArray(shortcuts).flatMap((s) => {\n\t\tif (Array.isArray(s)) return [s];\n\t\treturn Object.entries(s);\n\t});\n}\nfunction createDynamicRuleFilters(rules) {\n\tconst filterSources = /* @__PURE__ */ new Map();\n\tconst fallback = [];\n\tfor (const rule of rules) {\n\t\tconst [matcher, , meta] = rule;\n\t\tif (meta?.prefix || matcher.global || matcher.sticky || /\\\\(?:[1-9]|k<)|\\(\\?</.test(matcher.source)) {\n\t\t\tfallback.push(rule);\n\t\t\tcontinue;\n\t\t}\n\t\tconst sources = filterSources.get(matcher.flags) ?? [];\n\t\tsources.push(`(?:${matcher.source})`);\n\t\tfilterSources.set(matcher.flags, sources);\n\t}\n\ttry {\n\t\treturn {\n\t\t\tfallback,\n\t\t\tfilters: Array.from(filterSources, ([flags, sources]) => new RegExp(sources.join(\"|\"), flags))\n\t\t};\n\t} catch {\n\t\treturn {\n\t\t\tfallback: [...rules],\n\t\t\tfilters: []\n\t\t};\n\t}\n}\nconst __RESOLVED = \"_uno_resolved\";\n/**\n* Resolve a single preset, nested presets are ignored\n*/\nasync function resolvePreset(presetInput) {\n\tlet preset = typeof presetInput === \"function\" ? await presetInput() : await presetInput;\n\tif (__RESOLVED in preset) return preset;\n\tpreset = { ...preset };\n\tObject.defineProperty(preset, __RESOLVED, {\n\t\tvalue: true,\n\t\tenumerable: false\n\t});\n\tconst shortcuts = preset.shortcuts ? resolveShortcuts(preset.shortcuts) : void 0;\n\tpreset.shortcuts = shortcuts;\n\tif (preset.prefix || preset.layer) {\n\t\tconst apply = (i) => {\n\t\t\tif (!i[2]) i[2] = {};\n\t\t\tconst meta = i[2];\n\t\t\tif (meta.prefix == null && preset.prefix) meta.prefix = toArray(preset.prefix);\n\t\t\tif (meta.layer == null && preset.layer) meta.layer = preset.layer;\n\t\t};\n\t\tshortcuts?.forEach(apply);\n\t\tpreset.rules?.forEach(apply);\n\t}\n\treturn preset;\n}\n/**\n* Resolve presets with nested presets\n*/\nasync function resolvePresets(preset) {\n\tconst root = await resolvePreset(preset);\n\tif (!root.presets) return [root];\n\treturn [root, ...(await Promise.all((root.presets || []).flatMap(toArray).flatMap(resolvePresets))).flat()];\n}\nfunction mergeContentOptions(optionsArray) {\n\tif (optionsArray.length === 0) return {};\n\tconst pipelineIncludes = [];\n\tconst pipelineExcludes = [];\n\tlet pipelineDisabled = false;\n\tconst filesystem = [];\n\tconst inline = [];\n\tfor (const options of optionsArray) {\n\t\tif (options.pipeline === false) {\n\t\t\tpipelineDisabled = true;\n\t\t\tbreak;\n\t\t} else {\n\t\t\tif (options.pipeline?.include) pipelineIncludes.push(options.pipeline.include);\n\t\t\tif (options.pipeline?.exclude) pipelineExcludes.push(options.pipeline.exclude);\n\t\t}\n\t\tif (options.filesystem) filesystem.push(options.filesystem);\n\t\tif (options.inline) inline.push(options.inline);\n\t}\n\tconst mergedContent = { pipeline: pipelineDisabled ? false : {\n\t\tinclude: uniq(mergeFilterPatterns(...pipelineIncludes)),\n\t\texclude: uniq(mergeFilterPatterns(...pipelineExcludes))\n\t} };\n\tif (filesystem.length) mergedContent.filesystem = uniq(filesystem.flat());\n\tif (inline.length) mergedContent.inline = uniq(inline.flat());\n\treturn mergedContent;\n}\nasync function resolveConfig(userConfig = {}, defaults = {}) {\n\tconst config = Object.assign({}, defaults, userConfig);\n\tconst rawPresets = uniqueBy((await Promise.all((config.presets || []).flatMap(toArray).flatMap(resolvePresets))).flat(), (a, b) => a.name === b.name);\n\tconst sortedPresets = [\n\t\t...rawPresets.filter((p) => p.enforce === \"pre\"),\n\t\t...rawPresets.filter((p) => !p.enforce),\n\t\t...rawPresets.filter((p) => p.enforce === \"post\")\n\t];\n\tconst sources = [...sortedPresets, config];\n\tconst sourcesReversed = [...sources].reverse();\n\tconst layers = Object.assign({}, DEFAULT_LAYERS, ...sources.map((i) => i.layers));\n\tfunction getMerged(key) {\n\t\treturn uniq(sources.flatMap((p) => toArray(p[key] || [])));\n\t}\n\tconst extractors = getMerged(\"extractors\");\n\tlet extractorDefault = sourcesReversed.find((i) => i.extractorDefault !== void 0)?.extractorDefault;\n\tif (extractorDefault === void 0) extractorDefault = extractorSplit;\n\tif (extractorDefault && !extractors.includes(extractorDefault)) extractors.unshift(extractorDefault);\n\textractors.sort((a, b) => (a.order || 0) - (b.order || 0));\n\tconst rules = getMerged(\"rules\");\n\tconst rulesSize = rules.length;\n\tconst rulesStaticMap = {};\n\tconst rulesDynamic = [];\n\tfor (const [index, rule] of rules.entries()) {\n\t\tconst meta = rule[2] ?? (rule[2] = {});\n\t\tmeta.__index = index;\n\t\tif (isStaticRule(rule)) toArray(meta.prefix ?? \"\").forEach((prefix) => {\n\t\t\trulesStaticMap[prefix + rule[0]] = rule;\n\t\t});\n\t\telse rulesDynamic.unshift(rule);\n\t}\n\tconst autocomplete = {\n\t\ttemplates: uniq(sources.flatMap((p) => toArray(p.autocomplete?.templates))),\n\t\textractors: sources.flatMap((p) => toArray(p.autocomplete?.extractors)).sort((a, b) => (a.order || 0) - (b.order || 0)),\n\t\tshorthands: mergeAutocompleteShorthands(sources.map((p) => p.autocomplete?.shorthands || {}))\n\t};\n\tlet separators = getMerged(\"separators\");\n\tif (!separators.length) separators = [\":\", \"-\"];\n\tconst content = mergeContentOptions(getMerged(\"content\"));\n\tconst resolved = {\n\t\tmergeSelectors: true,\n\t\twarn: true,\n\t\tsortLayers: (layers) => layers,\n\t\t...config,\n\t\tblocklist: getMerged(\"blocklist\"),\n\t\tpresets: sortedPresets,\n\t\tenvMode: config.envMode || \"build\",\n\t\tshortcutsLayer: config.shortcutsLayer || \"shortcuts\",\n\t\tlayers,\n\t\ttheme: mergeThemes(sources.map((p) => p.theme)),\n\t\trules,\n\t\trulesSize,\n\t\trulesDynamic,\n\t\trulesStaticMap,\n\t\tpreprocess: getMerged(\"preprocess\"),\n\t\tpostprocess: getMerged(\"postprocess\"),\n\t\tpreflights: getMerged(\"preflights\"),\n\t\tautocomplete,\n\t\tvariants: getMerged(\"variants\").map(normalizeVariant).sort((a, b) => (a.order || 0) - (b.order || 0)),\n\t\tshortcuts: resolveShortcuts(getMerged(\"shortcuts\")).reverse(),\n\t\textractors,\n\t\tsafelist: getMerged(\"safelist\"),\n\t\tseparators,\n\t\tdetails: config.details ?? config.envMode === \"dev\",\n\t\tcontent,\n\t\ttransformers: uniqueBy(getMerged(\"transformers\"), (a, b) => a.name === b.name)\n\t};\n\tconst extendThemes = getMerged(\"extendTheme\");\n\tfor (const extendTheme of extendThemes) resolved.theme = extendTheme(resolved.theme, resolved) || resolved.theme;\n\tfor (const p of sources) p?.configResolved?.(resolved);\n\tresolved.rulesDynamicFilter = createDynamicRuleFilters(resolved.rulesDynamic);\n\treturn resolved;\n}\n/**\n* Merge multiple configs into one, later ones have higher priority\n*/\nfunction mergeConfigs(configs) {\n\tconst maybeArrays = [\n\t\t\"shortcuts\",\n\t\t\"preprocess\",\n\t\t\"postprocess\"\n\t];\n\treturn configs.map((config) => Object.entries(config).reduce((acc, [key, value]) => ({\n\t\t...acc,\n\t\t[key]: maybeArrays.includes(key) ? toArray(value) : value\n\t}), {})).reduce(({ theme: themeA, content: contentA, ...a }, { theme: themeB, content: contentB, ...b }) => {\n\t\tconst c = mergeDeep(a, b, true);\n\t\tif (themeA || themeB) c.theme = mergeThemes([themeA, themeB]);\n\t\tif (contentA || contentB) c.content = mergeContentOptions([contentA || {}, contentB || {}]);\n\t\treturn c;\n\t}, {});\n}\nfunction mergeThemes(themes) {\n\treturn themes.map((theme) => theme ? clone(theme) : {}).reduce((a, b) => mergeDeep(a, b), {});\n}\nfunction mergeAutocompleteShorthands(shorthands) {\n\treturn shorthands.reduce((a, b) => {\n\t\tconst rs = {};\n\t\tfor (const key in b) {\n\t\t\tconst value = b[key];\n\t\t\tif (Array.isArray(value)) rs[key] = `(${value.join(\"|\")})`;\n\t\t\telse rs[key] = value;\n\t\t}\n\t\treturn {\n\t\t\t...a,\n\t\t\t...rs\n\t\t};\n\t}, {});\n}\nfunction mergeFilterPatterns(...filterPatterns) {\n\treturn filterPatterns.flatMap(flatternFilterPattern);\n}\nfunction flatternFilterPattern(pattern) {\n\treturn Array.isArray(pattern) ? pattern : pattern ? [pattern] : [];\n}\nfunction definePreset(preset) {\n\treturn preset;\n}\n//#endregion\n//#region package.json\nvar version = \"66.8.1\";\n//#endregion\n//#region src/generator.ts\nconst symbols = {\n\tshortcutsNoMerge: \"$$symbol-shortcut-no-merge\",\n\tnoMerge: \"$$symbol-no-merge\",\n\tnoScope: \"$$symbol-no-scope\",\n\tvariants: \"$$symbol-variants\",\n\tparent: \"$$symbol-parent\",\n\tselector: \"$$symbol-selector\",\n\tlayer: \"$$symbol-layer\",\n\tsort: \"$$symbol-sort\",\n\tbody: \"$$symbol-body\"\n};\nconst TOKEN_PARSE_BATCH_SIZE = 4096;\nvar TokenProcessor = class {\n\tcache = /* @__PURE__ */ new Map();\n\tblocked = /* @__PURE__ */ new Set();\n\tparentOrders = /* @__PURE__ */ new Map();\n\tactivatedRules = /* @__PURE__ */ new Set();\n\tasync parse(generator, raw, alias) {\n\t\tif (this.blocked.has(raw)) return;\n\t\tconst cacheKey = `${raw}${alias ? ` ${alias}` : \"\"}`;\n\t\tif (this.cache.has(cacheKey)) return this.cache.get(cacheKey);\n\t\tconst current = generator.config.preprocess.reduce((acc, p) => p(acc) ?? acc, raw);\n\t\tif (generator.isBlocked(current)) {\n\t\t\tthis.blocked.add(raw);\n\t\t\tthis.cache.set(cacheKey, null);\n\t\t\treturn;\n\t\t}\n\t\tconst variantResults = await generator.matchVariants(raw, current);\n\t\tif (variantResults.every((i) => !i || generator.isBlocked(i[1]))) {\n\t\t\tthis.blocked.add(raw);\n\t\t\tthis.cache.set(cacheKey, null);\n\t\t\treturn;\n\t\t}\n\t\tconst data = (await Promise.all(variantResults.map(async (matched) => {\n\t\t\tconst context = generator.makeContext(raw, [\n\t\t\t\talias || matched[0],\n\t\t\t\tmatched[1],\n\t\t\t\tmatched[2],\n\t\t\t\tmatched[3]\n\t\t\t]);\n\t\t\tif (generator.config.details) context.variants = [...matched[3]];\n\t\t\tconst expanded = await generator.expandShortcut(context.currentSelector, context, 5, true);\n\t\t\treturn expanded ? await generator.stringifyShortcuts(context.variantMatch, context, expanded[0], expanded[1]) : (await generator.parseUtil(context.variantMatch, context))?.flatMap((i) => generator.stringifyUtil(i, context)).filter(notNull);\n\t\t}))).flat().filter(notNull);\n\t\tthis.cache.set(cacheKey, data.length ? data : null);\n\t\treturn data.length ? data : void 0;\n\t}\n\tisBlocked(raw, blocklist) {\n\t\tif (!raw) return true;\n\t\tfor (const rule of blocklist) {\n\t\t\tconst value = Array.isArray(rule) ? rule[0] : rule;\n\t\t\tif (typeof value === \"function\" ? value(raw) : isString(value) ? value === raw : value.test(raw)) return true;\n\t\t}\n\t\treturn false;\n\t}\n\tgetBlocked(raw, blocklist) {\n\t\tconst rule = blocklist.find((e) => {\n\t\t\tconst value = Array.isArray(e) ? e[0] : e;\n\t\t\treturn typeof value === \"function\" ? value(raw) : isString(value) ? value === raw : value.test(raw);\n\t\t});\n\t\treturn rule ? Array.isArray(rule) ? rule : [rule, void 0] : void 0;\n\t}\n\tsetParentOrder(parent, order) {\n\t\tthis.parentOrders.set(parent, order);\n\t}\n\tgetParentOrder(parent) {\n\t\treturn this.parentOrders.get(parent);\n\t}\n\tactivateRule(rule) {\n\t\tthis.activatedRules.add(rule);\n\t}\n\tgetActivatedRules() {\n\t\treturn this.activatedRules;\n\t}\n\tgetCachedTokens(input) {\n\t\treturn Array.from(this.cache).filter(([token, result]) => result && token.startsWith(input)).map(([token]) => token);\n\t}\n\tgetCachedAliases(token) {\n\t\tconst target = this.cache.get(token);\n\t\tif (!target) return;\n\t\treturn Array.from(this.cache).filter(([, utilities]) => utilities?.length === target.length && utilities.every((utility, index) => utility[2] === target[index][2])).map(([alias]) => alias);\n\t}\n\tblock(tokens) {\n\t\tfor (const token of tokens) this.blocked.add(token);\n\t}\n\tinvalidate(token) {\n\t\tthis.cache.delete(token);\n\t\tthis.blocked.delete(token);\n\t}\n};\nvar UnoGeneratorInternal = class UnoGeneratorInternal {\n\tuserConfig;\n\tdefaults;\n\tversion = version;\n\tevents = createNanoEvents();\n\tconfig = void 0;\n\ttokenProcessor = new TokenProcessor();\n\tconstructor(userConfig = {}, defaults = {}) {\n\t\tthis.userConfig = userConfig;\n\t\tthis.defaults = defaults;\n\t}\n\tstatic async create(userConfig = {}, defaults = {}) {\n\t\tconst uno = new UnoGeneratorInternal(userConfig, defaults);\n\t\tuno.config = await resolveConfig(uno.userConfig, uno.defaults);\n\t\tuno.events.emit(\"config\", uno.config);\n\t\treturn uno;\n\t}\n\tasync setConfig(userConfig, defaults) {\n\t\tif (!userConfig) return;\n\t\tif (defaults) this.defaults = defaults;\n\t\tthis.userConfig = userConfig;\n\t\tthis.config = await resolveConfig(userConfig, this.defaults);\n\t\tthis.resetTokenProcessing();\n\t\tthis.events.emit(\"config\", this.config);\n\t}\n\tasync applyExtractors(code, id, extracted = /* @__PURE__ */ new Set()) {\n\t\tconst context = {\n\t\t\toriginal: code,\n\t\t\tcode,\n\t\t\tid,\n\t\t\textracted,\n\t\t\tenvMode: this.config.envMode\n\t\t};\n\t\tfor (const extractor of this.config.extractors) {\n\t\t\tconst result = await extractor.extract?.(context);\n\t\t\tif (!result) continue;\n\t\t\tif (isCountableSet(result) && isCountableSet(extracted)) for (const token of result) extracted.setCount(token, extracted.getCount(token) + result.getCount(token));\n\t\t\telse for (const token of result) extracted.add(token);\n\t\t}\n\t\treturn extracted;\n\t}\n\tmakeContext(raw, applied) {\n\t\tconst context = {\n\t\t\trawSelector: raw,\n\t\t\tcurrentSelector: applied[1],\n\t\t\ttheme: this.config.theme,\n\t\t\tgenerator: this,\n\t\t\tsymbols,\n\t\t\tvariantHandlers: applied[2],\n\t\t\tconstructCSS: (...args) => this.constructCustomCSS(context, ...args),\n\t\t\tvariantMatch: applied\n\t\t};\n\t\treturn context;\n\t}\n\t/** @internal */\n\tresetTokenProcessing() {\n\t\tthis.tokenProcessor = new TokenProcessor();\n\t}\n\tgetParentOrder(parent) {\n\t\treturn this.tokenProcessor.getParentOrder(parent);\n\t}\n\tgetActivatedRules() {\n\t\treturn new Set(this.tokenProcessor.getActivatedRules());\n\t}\n\tgetCachedTokens(input) {\n\t\treturn this.tokenProcessor.getCachedTokens(input);\n\t}\n\tgetCachedAliases(token) {\n\t\treturn this.tokenProcessor.getCachedAliases(token);\n\t}\n\tblockTokens(tokens) {\n\t\tthis.tokenProcessor.block(tokens);\n\t}\n\tinvalidateToken(token) {\n\t\tthis.tokenProcessor.invalidate(token);\n\t}\n\tasync parseToken(raw, alias) {\n\t\treturn this.tokenProcessor.parse(this, raw, alias);\n\t}\n\tasync generate(input, options = {}) {\n\t\tconst { id, scope, preflights = true, safelist = true, minify = false, extendedInfo = false } = options;\n\t\tconst tokens = isString(input) ? await this.applyExtractors(input, id, extendedInfo ? new CountableSet() : /* @__PURE__ */ new Set()) : Array.isArray(input) ? new Set(input) : input;\n\t\tif (safelist) {\n\t\t\tconst safelistContext = {\n\t\t\t\tgenerator: this,\n\t\t\t\ttheme: this.config.theme\n\t\t\t};\n\t\t\tthis.config.safelist.flatMap((s) => typeof s === \"function\" ? s(safelistContext) : s).forEach((s) => {\n\t\t\t\tconst trimmedS = s.trim();\n\t\t\t\tif (trimmedS && !tokens.has(trimmedS)) tokens.add(trimmedS);\n\t\t\t});\n\t\t}\n\t\tconst nl = minify ? \"\" : \"\\n\";\n\t\tconst layerSet = /* @__PURE__ */ new Set([LAYER_DEFAULT]);\n\t\tconst matched = extendedInfo ? /* @__PURE__ */ new Map() : /* @__PURE__ */ new Set();\n\t\tconst sheet = /* @__PURE__ */ new Map();\n\t\tlet preflightsMap = {};\n\t\tconst tokenList = Array.from(tokens);\n\t\tfor (let offset = 0; offset < tokenList.length; offset += TOKEN_PARSE_BATCH_SIZE) {\n\t\t\tconst batchSize = Math.min(TOKEN_PARSE_BATCH_SIZE, tokenList.length - offset);\n\t\t\tconst tokenPromises = [];\n\t\t\tfor (let index = 0; index < batchSize; index++) {\n\t\t\t\tconst raw = tokenList[offset + index];\n\t\t\t\ttokenPromises[index] = (async () => {\n\t\t\t\t\tif (matched.has(raw)) return;\n\t\t\t\t\tconst payload = await this.parseToken(raw);\n\t\t\t\t\tif (payload == null) return;\n\t\t\t\t\tif (matched instanceof Map) matched.set(raw, {\n\t\t\t\t\t\tdata: payload,\n\t\t\t\t\t\tcount: isCountableSet(tokens) ? tokens.getCount(raw) : -1\n\t\t\t\t\t});\n\t\t\t\t\telse matched.add(raw);\n\t\t\t\t\tfor (const item of payload) {\n\t\t\t\t\t\tconst parent = item[3] || \"\";\n\t\t\t\t\t\tconst layer = item[4]?.layer;\n\t\t\t\t\t\tif (!sheet.has(parent)) sheet.set(parent, []);\n\t\t\t\t\t\tsheet.get(parent).push(item);\n\t\t\t\t\t\tif (layer) layerSet.add(layer);\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t\tawait Promise.all(tokenPromises);\n\t\t}\n\t\tawait (async () => {\n\t\t\tif (!preflights) return;\n\t\t\tconst preflightContext = {\n\t\t\t\tgenerator: this,\n\t\t\t\ttheme: this.config.theme\n\t\t\t};\n\t\t\tconst preflightLayerSet = /* @__PURE__ */ new Set([]);\n\t\t\tthis.config.preflights.forEach(({ layer = LAYER_PREFLIGHTS }) => {\n\t\t\t\tlayerSet.add(layer);\n\t\t\t\tpreflightLayerSet.add(layer);\n\t\t\t});\n\t\t\tpreflightsMap = Object.fromEntries(await Promise.all(Array.from(preflightLayerSet).map(async (layer) => {\n\t\t\t\treturn [layer, (await Promise.all(this.config.preflights.filter((i) => (i.layer || \"preflights\") === layer).map(async (i) => await i.getCSS(preflightContext)))).filter(Boolean).join(nl)];\n\t\t\t})));\n\t\t})();\n\t\tconst sortLayers = (layers) => this.config.sortLayers(layers.sort((a, b) => (this.config.layers[a] ?? 0) - (this.config.layers[b] ?? 0) || a.localeCompare(b)));\n\t\tconst layers = sortLayers(Array.from(layerSet));\n\t\tconst layerCache = {};\n\t\tconst outputCssLayers = this.config.outputToCssLayers;\n\t\tconst getLayerAlias = (layer) => {\n\t\t\tlet alias = layer;\n\t\t\tif (typeof outputCssLayers === \"object\") alias = outputCssLayers.cssLayerName?.(layer);\n\t\t\treturn alias === null ? null : alias ?? layer;\n\t\t};\n\t\tconst getLayer = (layer = LAYER_DEFAULT) => {\n\t\t\tif (layerCache[layer]) return layerCache[layer];\n\t\t\tlet css = Array.from(sheet).sort((a, b) => (this.tokenProcessor.getParentOrder(a[0]) ?? 0) - (this.tokenProcessor.getParentOrder(b[0]) ?? 0) || a[0]?.localeCompare(b[0] || \"\") || 0).map(([parent, items]) => {\n\t\t\t\tconst sorted = items.filter((i) => (i[4]?.layer || \"default\") === layer).sort((a, b) => {\n\t\t\t\t\treturn a[0] - b[0] || (a[4]?.sort || 0) - (b[4]?.sort || 0) || a[5]?.currentSelector?.localeCompare(b[5]?.currentSelector ?? \"\") || a[1]?.localeCompare(b[1] || \"\") || a[2]?.localeCompare(b[2] || \"\") || 0;\n\t\t\t\t}).map(([, selector, body, , meta, , variantNoMerge]) => {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t[[(selector && !meta?.noScope ? applyScope(selector, scope) : selector) ?? \"\", meta?.sort ?? 0]],\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\t!!(variantNoMerge ?? meta?.noMerge)\n\t\t\t\t\t];\n\t\t\t\t});\n\t\t\t\tif (!sorted.length) return void 0;\n\t\t\t\tsorted.reverse();\n\t\t\t\tconst mergedRules = /* @__PURE__ */ new Set();\n\t\t\t\tif (this.config.mergeSelectors) {\n\t\t\t\t\tconst mergeIndex = /* @__PURE__ */ new Map();\n\t\t\t\t\tfor (let i = sorted.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tconst rule = sorted[i];\n\t\t\t\t\t\tconst [selectorSortPair, body, noMerge] = rule;\n\t\t\t\t\t\tif (noMerge) continue;\n\t\t\t\t\t\tconst selectorIndex = selectorSortPair ? 1 : 0;\n\t\t\t\t\t\tconst candidates = mergeIndex.get(body) || [void 0, void 0];\n\t\t\t\t\t\tconst candidate = candidates[selectorIndex];\n\t\t\t\t\t\tif (candidate) {\n\t\t\t\t\t\t\tif (selectorSortPair && candidate[0]) candidate[0].push(...selectorSortPair);\n\t\t\t\t\t\t\tmergedRules.add(rule);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcandidates[selectorIndex] = rule;\n\t\t\t\t\t\t\tmergeIndex.set(body, candidates);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst ruleLines = sorted.map(([selectorSortPair, body], idx) => {\n\t\t\t\t\tif (mergedRules.has(sorted[idx])) return null;\n\t\t\t\t\tconst selectors = selectorSortPair ? uniq(selectorSortPair.sort((a, b) => a[1] - b[1] || a[0]?.localeCompare(b[0] || \"\") || 0).map((pair) => pair[0]).filter(Boolean)) : [];\n\t\t\t\t\treturn selectors.length ? `${selectors.join(`,${nl}`)}{${body}}` : body;\n\t\t\t\t}).filter(Boolean);\n\t\t\t\tconst rules = Array.from(new Set(ruleLines)).reverse().join(nl);\n\t\t\t\tif (!parent) return rules;\n\t\t\t\tconst parents = parent.split(\" $$ \");\n\t\t\t\treturn `${parents.join(\"{\")}{${nl}${rules}${nl}${\"}\".repeat(parents.length)}`;\n\t\t\t}).filter(Boolean).join(nl);\n\t\t\tif (preflights) css = [preflightsMap[layer], css].filter(Boolean).join(nl);\n\t\t\tlet alias;\n\t\t\tif (outputCssLayers && css) {\n\t\t\t\talias = getLayerAlias(layer);\n\t\t\t\tif (alias !== null) css = `@layer ${alias}{${nl}${css}${nl}}`;\n\t\t\t}\n\t\t\tconst layerMark = minify ? \"\" : `/* layer: ${layer}${alias && alias !== layer ? `, alias: ${alias}` : \"\"} */${nl}`;\n\t\t\treturn layerCache[layer] = css ? layerMark + css : \"\";\n\t\t};\n\t\tconst getLayers = (includes = layers, excludes) => {\n\t\t\tconst layers = includes.filter((i) => !excludes?.includes(i));\n\t\t\tconst css = layers.map(getLayer).filter(Boolean);\n\t\t\tif (outputCssLayers) {\n\t\t\t\tlet layerNames = layers;\n\t\t\t\tif (typeof outputCssLayers === \"object\" && outputCssLayers.allLayers) layerNames = sortLayers(Object.keys(this.config.layers));\n\t\t\t\tif (layerNames.length > 0) css.unshift(`@layer ${layerNames.map(getLayerAlias).filter(notNull).join(\", \")};`);\n\t\t\t}\n\t\t\treturn css.join(nl);\n\t\t};\n\t\tconst setLayer = async (layer, callback) => {\n\t\t\tconst content = await callback(getLayer(layer));\n\t\t\tlayerCache[layer] = content;\n\t\t\treturn content;\n\t\t};\n\t\treturn {\n\t\t\tget css() {\n\t\t\t\treturn getLayers();\n\t\t\t},\n\t\t\tlayers,\n\t\t\tmatched,\n\t\t\tgetLayers,\n\t\t\tgetLayer,\n\t\t\tsetLayer\n\t\t};\n\t}\n\tasync matchVariants(raw, current) {\n\t\tconst context = {\n\t\t\trawSelector: raw,\n\t\t\ttheme: this.config.theme,\n\t\t\tgenerator: this\n\t\t};\n\t\tconst match = async (result) => {\n\t\t\tlet applied = true;\n\t\t\tconst [, , handlers, variants] = result;\n\t\t\twhile (applied) {\n\t\t\t\tapplied = false;\n\t\t\t\tconst processed = result[1];\n\t\t\t\tfor (const v of this.config.variants) {\n\t\t\t\t\tif (!v.multiPass && variants.has(v)) continue;\n\t\t\t\t\tlet handler = await v.match(processed, context);\n\t\t\t\t\tif (!handler) continue;\n\t\t\t\t\tif (isString(handler)) {\n\t\t\t\t\t\tif (handler === processed) continue;\n\t\t\t\t\t\thandler = { matcher: handler };\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(handler)) {\n\t\t\t\t\t\tif (!handler.length) continue;\n\t\t\t\t\t\tif (handler.length === 1) handler = handler[0];\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (v.multiPass) throw new Error(\"multiPass can not be used together with array return variants\");\n\t\t\t\t\t\t\tconst clones = handler.map((h) => {\n\t\t\t\t\t\t\t\tconst _processed = h.matcher ?? processed;\n\t\t\t\t\t\t\t\tconst _handlers = [h, ...handlers];\n\t\t\t\t\t\t\t\tconst _variants = new Set(variants);\n\t\t\t\t\t\t\t\t_variants.add(v);\n\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\tresult[0],\n\t\t\t\t\t\t\t\t\t_processed,\n\t\t\t\t\t\t\t\t\t_handlers,\n\t\t\t\t\t\t\t\t\t_variants\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn (await Promise.all(clones.map((c) => match(c)))).flat();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tresult[1] = handler.matcher ?? processed;\n\t\t\t\t\thandlers.unshift(handler);\n\t\t\t\t\tvariants.add(v);\n\t\t\t\t\tapplied = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!applied) break;\n\t\t\t\tif (handlers.length > 500) throw new Error(`Too many variants applied to \"${raw}\"`);\n\t\t\t}\n\t\t\treturn [result];\n\t\t};\n\t\treturn await match([\n\t\t\traw,\n\t\t\tcurrent || raw,\n\t\t\t[],\n\t\t\t/* @__PURE__ */ new Set()\n\t\t]);\n\t}\n\tapplyVariants(parsed, variantHandlers = parsed[4], raw = parsed[1]) {\n\t\tconst variantContextResult = variantHandlers.slice().sort((a, b) => (a.order || 0) - (b.order || 0)).reduceRight((previous, v) => (input) => {\n\t\t\tconst entries = v.body?.(input.entries) || input.entries;\n\t\t\tconst parents = Array.isArray(v.parent) ? v.parent : [v.parent, void 0];\n\t\t\tconst selector = v.selector?.(input.selector, entries);\n\t\t\treturn (v.handle ?? defaultVariantHandler)({\n\t\t\t\t...input,\n\t\t\t\tentries,\n\t\t\t\tselector: selector || input.selector,\n\t\t\t\tparent: parents[0] || input.parent,\n\t\t\t\tparentOrder: parents[1] || input.parentOrder,\n\t\t\t\tlayer: v.layer || input.layer,\n\t\t\t\tsort: v.sort || input.sort\n\t\t\t}, previous);\n\t\t}, (input) => input)({\n\t\t\tprefix: \"\",\n\t\t\tselector: toEscapedSelector(raw),\n\t\t\tpseudo: \"\",\n\t\t\tentries: parsed[2]\n\t\t});\n\t\tconst { parent, parentOrder } = variantContextResult;\n\t\tif (parent != null && parentOrder != null) this.tokenProcessor.setParentOrder(parent, parentOrder);\n\t\tconst obj = {\n\t\t\tselector: [\n\t\t\t\tvariantContextResult.prefix,\n\t\t\t\tvariantContextResult.selector,\n\t\t\t\tvariantContextResult.pseudo\n\t\t\t].join(\"\"),\n\t\t\tentries: variantContextResult.entries,\n\t\t\tparent,\n\t\t\tlayer: variantContextResult.layer,\n\t\t\tsort: variantContextResult.sort,\n\t\t\tnoMerge: variantContextResult.noMerge\n\t\t};\n\t\treturn this.config.postprocess.reduce((utilities, p) => {\n\t\t\tconst result = [];\n\t\t\tfor (const util of utilities) {\n\t\t\t\tconst processed = p(util);\n\t\t\t\tif (Array.isArray(processed)) result.push(...processed.filter(notNull));\n\t\t\t\telse result.push(processed || util);\n\t\t\t}\n\t\t\treturn result;\n\t\t}, [obj]);\n\t}\n\tconstructCustomCSS(context, body, overrideSelector) {\n\t\tconst normalizedBody = normalizeCSSEntries(body);\n\t\tif (isString(normalizedBody)) return normalizedBody;\n\t\treturn this.applyVariants([\n\t\t\t0,\n\t\t\toverrideSelector || context.rawSelector,\n\t\t\tnormalizedBody,\n\t\t\tvoid 0,\n\t\t\tcontext.variantHandlers\n\t\t]).map(({ selector, entries, parent }) => {\n\t\t\tconst cssBody = `${selector}{${entriesToCss(entries)}}`;\n\t\t\tif (parent) return `${parent}{${cssBody}}`;\n\t\t\treturn cssBody;\n\t\t}).join(\"\");\n\t}\n\tasync parseUtil(input, context, internal = false, shortcutPrefix) {\n\t\tconst variantResults = isString(input) ? await this.matchVariants(input) : [input];\n\t\tconst parse = async ([raw, processed, variantHandlers]) => {\n\t\t\tif (this.config.details) context.rules = context.rules ?? [];\n\t\t\tconst scopeContext = {\n\t\t\t\t...context,\n\t\t\t\tvariantHandlers\n\t\t\t};\n\t\t\tconst staticMatch = this.config.rulesStaticMap[processed];\n\t\t\tif (staticMatch) {\n\t\t\t\tif (staticMatch[1] && (internal || !staticMatch[2]?.internal)) return this.resolveCSSResult(raw, staticMatch[1], staticMatch, scopeContext);\n\t\t\t}\n\t\t\tconst dynamicRuleFilter = this.config.rulesDynamicFilter;\n\t\t\tconst dynamicRules = dynamicRuleFilter?.filters.length && !dynamicRuleFilter.filters.some((filter) => filter.test(processed)) ? dynamicRuleFilter.fallback : this.config.rulesDynamic;\n\t\t\tfor (const rule of dynamicRules) {\n\t\t\t\tconst [matcher, handler, meta] = rule;\n\t\t\t\tif (meta?.internal && !internal) continue;\n\t\t\t\tlet unprefixed = processed;\n\t\t\t\tif (meta?.prefix) {\n\t\t\t\t\tconst prefixes = toArray(meta.prefix);\n\t\t\t\t\tif (shortcutPrefix) {\n\t\t\t\t\t\tconst shortcutPrefixes = toArray(shortcutPrefix);\n\t\t\t\t\t\tif (!prefixes.some((i) => shortcutPrefixes.includes(i))) continue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst prefix = prefixes.find((i) => processed.startsWith(i));\n\t\t\t\t\t\tif (prefix == null) continue;\n\t\t\t\t\t\tunprefixed = processed.slice(prefix.length);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst match = unprefixed.match(matcher);\n\t\t\t\tif (!match) continue;\n\t\t\t\tlet result = await handler(match, scopeContext);\n\t\t\t\tif (!result) continue;\n\t\t\t\tif (typeof result !== \"string\") {\n\t\t\t\t\tif (Symbol.asyncIterator in result) {\n\t\t\t\t\t\tconst entries = [];\n\t\t\t\t\t\tfor await (const r of result) if (r) entries.push(r);\n\t\t\t\t\t\tresult = entries;\n\t\t\t\t\t} else if (Symbol.iterator in result && !Array.isArray(result)) result = Array.from(result).filter(notNull);\n\t\t\t\t}\n\t\t\t\tconst resolvedResult = this.resolveCSSResult(raw, result, rule, scopeContext);\n\t\t\t\tif (resolvedResult) return resolvedResult;\n\t\t\t}\n\t\t};\n\t\tconst parsed = (await Promise.all(variantResults.map((i) => parse(i)))).flat().filter((x) => !!x);\n\t\tif (!parsed.length) return void 0;\n\t\treturn parsed;\n\t}\n\tresolveCSSResult = (raw, result, rule, context) => {\n\t\tconst entries = normalizeCSSValues(result).filter((i) => i.length);\n\t\tif (entries.length) {\n\t\t\tif (this.config.details) context.rules.push(rule);\n\t\t\tthis.tokenProcessor.activateRule(rule);\n\t\t\tconst meta = rule[2];\n\t\t\treturn entries.map((css) => {\n\t\t\t\tif (isString(css)) return [\n\t\t\t\t\tmeta.__index,\n\t\t\t\t\tcss,\n\t\t\t\t\tmeta\n\t\t\t\t];\n\t\t\t\tlet variants = context.variantHandlers;\n\t\t\t\tlet entryMeta = meta;\n\t\t\t\tconst setVariant = (variant) => {\n\t\t\t\t\tvariants = [variant, ...variants];\n\t\t\t\t};\n\t\t\t\tconst setMeta = (partial) => {\n\t\t\t\t\tentryMeta = {\n\t\t\t\t\t\t...entryMeta,\n\t\t\t\t\t\t...partial\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\tfor (const entry of css) switch (entry[0]) {\n\t\t\t\t\tcase symbols.variants:\n\t\t\t\t\t\tif (typeof entry[1] === \"function\") variants = entry[1](variants) || variants;\n\t\t\t\t\t\telse variants = [...toArray(entry[1]), ...variants];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase symbols.parent:\n\t\t\t\t\t\tsetVariant({ parent: entry[1] });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase symbols.selector:\n\t\t\t\t\t\tsetVariant({ selector: entry[1] });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase symbols.layer:\n\t\t\t\t\t\tsetVariant({ layer: entry[1] });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase symbols.sort:\n\t\t\t\t\t\tsetMeta({ sort: entry[1] });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase symbols.noMerge:\n\t\t\t\t\t\tsetMeta({ noMerge: entry[1] });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase symbols.noScope:\n\t\t\t\t\t\tsetMeta({ noScope: entry[1] });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase symbols.body: entry[0] = VirtualKey;\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\tmeta.__index,\n\t\t\t\t\traw,\n\t\t\t\t\tcss,\n\t\t\t\t\tentryMeta,\n\t\t\t\t\tvariants\n\t\t\t\t];\n\t\t\t});\n\t\t}\n\t};\n\tstringifyUtil(parsed, context) {\n\t\tif (!parsed) return;\n\t\tif (isRawUtil(parsed)) return [[\n\t\t\tparsed[0],\n\t\t\tvoid 0,\n\t\t\tparsed[1],\n\t\t\tvoid 0,\n\t\t\tparsed[2],\n\t\t\tthis.config.details ? context : void 0,\n\t\t\tvoid 0\n\t\t]];\n\t\tconst utilities = this.applyVariants(parsed);\n\t\tconst result = [];\n\t\tfor (const util of utilities) {\n\t\t\tconst { selector, entries, parent, layer: variantLayer, sort: variantSort, noMerge } = util;\n\t\t\tconst body = entriesToCss(entries);\n\t\t\tif (!body) continue;\n\t\t\tconst { layer: metaLayer, sort: metaSort, ...meta } = parsed[3] ?? {};\n\t\t\tconst ruleMeta = {\n\t\t\t\t...meta,\n\t\t\t\tlayer: variantLayer ?? metaLayer,\n\t\t\t\tsort: variantSort ?? metaSort\n\t\t\t};\n\t\t\tresult.push([\n\t\t\t\tparsed[0],\n\t\t\t\tselector,\n\t\t\t\tbody,\n\t\t\t\tparent,\n\t\t\t\truleMeta,\n\t\t\t\tthis.config.details ? context : void 0,\n\t\t\t\tnoMerge\n\t\t\t]);\n\t\t}\n\t\treturn result;\n\t}\n\tasync expandShortcut(input, context, depth = 5, skipVariantMatch = false) {\n\t\tif (depth === 0) return;\n\t\tconst recordShortcut = this.config.details ? (s) => {\n\t\t\tcontext.shortcuts = context.shortcuts ?? [];\n\t\t\tcontext.shortcuts.push(s);\n\t\t} : noop;\n\t\tlet meta;\n\t\tlet result;\n\t\tlet stringResult;\n\t\tlet inlineResult;\n\t\tfor (const s of this.config.shortcuts) {\n\t\t\tlet unprefixed = input;\n\t\t\tif (s[2]?.prefix) {\n\t\t\t\tconst prefix = toArray(s[2].prefix).find((i) => input.startsWith(i));\n\t\t\t\tif (prefix == null) continue;\n\t\t\t\tunprefixed = input.slice(prefix.length);\n\t\t\t}\n\t\t\tif (isStaticShortcut(s)) {\n\t\t\t\tif (s[0] === unprefixed) {\n\t\t\t\t\tmeta = meta || s[2];\n\t\t\t\t\tresult = s[1];\n\t\t\t\t\trecordShortcut(s);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst match = unprefixed.match(s[0]);\n\t\t\t\tif (match) result = s[1](match, context);\n\t\t\t\tif (result) {\n\t\t\t\t\tmeta = meta || s[2];\n\t\t\t\t\trecordShortcut(s);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (result) {\n\t\t\tstringResult = uniq(toArray(result).filter(isString).map((s) => expandVariantGroup(s.trim()).split(/\\s+/g)).flat());\n\t\t\tinlineResult = toArray(result).filter((i) => !isString(i)).map((i) => ({\n\t\t\t\thandles: [],\n\t\t\t\tvalue: i\n\t\t\t}));\n\t\t}\n\t\tif (!result && !skipVariantMatch) {\n\t\t\tconst matched = isString(input) ? await this.matchVariants(input) : [input];\n\t\t\tfor (const match of matched) {\n\t\t\t\tconst [raw, inputWithoutVariant, handles] = match;\n\t\t\t\tif (raw !== inputWithoutVariant) {\n\t\t\t\t\tconst expanded = await this.expandShortcut(inputWithoutVariant, context, depth - 1);\n\t\t\t\t\tif (expanded) {\n\t\t\t\t\t\tstringResult = expanded[0].filter(isString).map((item) => raw.replace(inputWithoutVariant, item));\n\t\t\t\t\t\tinlineResult = expanded[0].filter((i) => !isString(i)).map((item) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\thandles: [...item.handles, ...handles],\n\t\t\t\t\t\t\t\tvalue: item.value\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!stringResult?.length && !inlineResult?.length) return;\n\t\treturn [[await Promise.all(toArray(stringResult).map(async (s) => (await this.expandShortcut(s, context, depth - 1))?.[0] || [s])), inlineResult].flat(2).filter((x) => !!x), meta];\n\t}\n\tasync stringifyShortcuts(parent, context, expanded, meta = { layer: this.config.shortcutsLayer }) {\n\t\tconst layerMap = new BetterMap();\n\t\tconst parsed = (await Promise.all(uniq(expanded).map(async (i) => {\n\t\t\tconst result = isString(i) ? await this.parseUtil(i, context, true, meta.prefix) : [[\n\t\t\t\tNumber.POSITIVE_INFINITY,\n\t\t\t\t\"{inline}\",\n\t\t\t\tnormalizeCSSEntries(i.value),\n\t\t\t\tvoid 0,\n\t\t\t\ti.handles\n\t\t\t]];\n\t\t\tif (!result && this.config.warn) warnOnce(`unmatched utility \"${i}\" in shortcut \"${parent[1]}\"`);\n\t\t\treturn result || [];\n\t\t}))).flat(1).filter(Boolean).sort((a, b) => a[0] - b[0]);\n\t\tconst [raw, , parentVariants] = parent;\n\t\tconst rawStringifiedUtil = [];\n\t\tfor (const item of parsed) {\n\t\t\tif (isRawUtil(item)) {\n\t\t\t\trawStringifiedUtil.push([\n\t\t\t\t\titem[0],\n\t\t\t\t\tvoid 0,\n\t\t\t\t\titem[1],\n\t\t\t\t\tvoid 0,\n\t\t\t\t\titem[2],\n\t\t\t\t\tcontext,\n\t\t\t\t\tvoid 0\n\t\t\t\t]);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst isNoMerge = Object.fromEntries(item[2])[symbols.shortcutsNoMerge];\n\t\t\tconst variants = [...item[4], ...!isNoMerge ? parentVariants : []];\n\t\t\tfor (const { selector, entries, parent, sort, noMerge, layer } of this.applyVariants(item, variants, raw)) layerMap.getFallback(layer ?? meta.layer, new TwoKeyMap()).getFallback(selector, parent, [[], item[0]])[0].push([\n\t\t\t\tentries,\n\t\t\t\t!!(noMerge ?? item[3]?.noMerge),\n\t\t\t\tsort ?? 0\n\t\t\t]);\n\t\t}\n\t\treturn rawStringifiedUtil.concat(layerMap.flatMap((selectorMap, layer) => selectorMap.map(([e, index], selector, joinedParents) => {\n\t\t\tconst stringify = (flatten, noMerge, entrySortPair) => {\n\t\t\t\tconst maxSort = Math.max(...entrySortPair.map((e) => e[1]));\n\t\t\t\tconst entriesList = entrySortPair.map((e) => e[0]);\n\t\t\t\treturn (flatten ? [entriesList.flat(1)] : entriesList).map((entries) => {\n\t\t\t\t\tconst body = entriesToCss(entries);\n\t\t\t\t\tif (body) return [\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tselector,\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tjoinedParents,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...meta,\n\t\t\t\t\t\t\tnoMerge,\n\t\t\t\t\t\t\tsort: maxSort,\n\t\t\t\t\t\t\tlayer\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tvoid 0\n\t\t\t\t\t];\n\t\t\t\t});\n\t\t\t};\n\t\t\treturn [[e.filter(([, noMerge]) => noMerge).map(([entries, , sort]) => [entries, sort]), true], [e.filter(([, noMerge]) => !noMerge).map(([entries, , sort]) => [entries, sort]), false]].map(([e, noMerge]) => [...stringify(false, noMerge, e.filter(([entries]) => entries.some((entry) => entry[0] === symbols.shortcutsNoMerge))), ...stringify(true, noMerge, e.filter(([entries]) => entries.every((entry) => entry[0] !== symbols.shortcutsNoMerge)))]);\n\t\t}).flat(2).filter(Boolean)));\n\t}\n\tisBlocked(raw) {\n\t\treturn this.tokenProcessor.isBlocked(raw, this.config.blocklist);\n\t}\n\tgetBlocked(raw) {\n\t\treturn this.tokenProcessor.getBlocked(raw, this.config.blocklist);\n\t}\n};\nvar UnoGenerator = class extends UnoGeneratorInternal {\n\t/**\n\t* @deprecated `new UnoGenerator` is deprecated, please use `createGenerator()` instead\n\t*/\n\tconstructor(userConfig = {}, defaults = {}) {\n\t\tsuper(userConfig, defaults);\n\t\tconsole.warn(\"`new UnoGenerator()` is deprecated, please use `createGenerator()` instead\");\n\t}\n};\nasync function createGenerator(config, defaults) {\n\treturn await UnoGeneratorInternal.create(config, defaults);\n}\nconst regexScopePlaceholder = /\\s\\$\\$\\s+/g;\nfunction hasScopePlaceholder(css) {\n\treturn regexScopePlaceholder.test(css);\n}\nfunction applyScope(css, scope) {\n\tif (hasScopePlaceholder(css)) return css.replace(regexScopePlaceholder, scope ? ` ${scope} ` : \" \");\n\telse return scope ? `${scope} ${css}` : css;\n}\nconst attributifyRe = /^\\[(.+?)(~?=)\"(.*)\"\\]$/;\nfunction toEscapedSelector(raw) {\n\tif (attributifyRe.test(raw)) return raw.replace(attributifyRe, (_, n, s, i) => `[${e(n)}${s}\"${e(i)}\"]`);\n\treturn `.${e(raw)}`;\n}\nfunction defaultVariantHandler(input, next) {\n\treturn next(input);\n}\n//#endregion\nexport { BetterMap, CountableSet, DEFAULT_LAYERS, LAYER_DEFAULT, LAYER_IMPORTS, LAYER_PREFLIGHTS, LAYER_SHORTCUTS, TwoKeyMap, UnoGenerator, VirtualKey, attributifyRE, clearIdenticalEntries, clone, collapseVariantGroup, createGenerator, createNanoEvents, cssIdRE, defaultSplitRE, definePreset, e, entriesToCss, escapeRegExp, escapeSelector, expandVariantGroup, extractorSplit as extractorDefault, extractorSplit, hasScopePlaceholder, isAttributifySelector, isCountableSet, isObject, isRawUtil, isStaticRule, isStaticShortcut, isString, isValidSelector, makeRegexClassGroup, mergeConfigs, mergeDeep, noop, normalizeCSSEntries, normalizeCSSValues, normalizeVariant, notNull, parseVariantGroup, regexScopePlaceholder, resolveConfig, resolvePreset, resolvePresets, resolveShortcuts, splitWithVariantGroupRE, symbols, toArray, toEscapedSelector, uniq, uniqueBy, validateFilterRE, warnOnce, withLayer };\n",
|
|
28
|
+
"//#region src/postprocess/important.ts\nfunction important({ important: option }) {\n\tif (option == null || option === false) return [];\n\tconst wrapWithIs = (selector) => {\n\t\tif (selector.startsWith(\":is(\") && selector.endsWith(\")\")) return selector;\n\t\tif (selector.includes(\"::\")) return selector.replace(/(.*?)((?:\\s\\*)?::.*)/, \":is($1)$2\");\n\t\treturn `:is(${selector})`;\n\t};\n\treturn [(util) => {\n\t\tif (util.layer === \"properties\") return;\n\t\tif (option === true) util.entries.forEach((i) => {\n\t\t\tif (i[1] != null && !String(i[1]).endsWith(\"!important\")) i[1] += \" !important\";\n\t\t});\n\t\telse if (!util.selector.startsWith(option)) util.selector = `${option} ${wrapWithIs(util.selector)}`;\n\t}];\n}\n//#endregion\n//#region src/postprocess/varPrefix.ts\nfunction varPrefix({ variablePrefix: prefix }) {\n\tconst processor = (obj) => {\n\t\tif (obj.layer === \"properties\") obj.selector = obj.selector.replace(/^@property --un-/, `@property --${prefix}`);\n\t\tobj.entries.forEach((i) => {\n\t\t\ti[0] = i[0].replace(/^--un-/, `--${prefix}`);\n\t\t\tif (typeof i[1] === \"string\") i[1] = i[1].replace(/var\\(--un-/g, `var(--${prefix}`);\n\t\t});\n\t};\n\treturn prefix !== \"un-\" ? [processor] : [];\n}\n//#endregion\n//#region src/postprocess/default.ts\nfunction postprocessors(options) {\n\treturn [important, varPrefix].flatMap((i) => i(options));\n}\n//#endregion\nexport { important, postprocessors, varPrefix };\n",
|
|
29
|
+
"//#region \\0rolldown/runtime.js\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __exportAll = (all, no_symbols) => {\n\tlet target = {};\n\tfor (var name in all) __defProp(target, name, {\n\t\tget: all[name],\n\t\tenumerable: true\n\t});\n\tif (!no_symbols) __defProp(target, Symbol.toStringTag, { value: \"Module\" });\n\treturn target;\n};\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\n//#endregion\nexport { __reExport as n, __exportAll as t };\n",
|
|
30
|
+
"// src/vlq.ts\nvar comma = \",\".charCodeAt(0);\nvar semicolon = \";\".charCodeAt(0);\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar intToChar = new Uint8Array(64);\nvar charToInt = new Uint8Array(128);\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\nfunction decodeInteger(reader, relative) {\n let value = 0;\n let shift = 0;\n let integer = 0;\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n const shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = -2147483648 | -value;\n }\n return relative + value;\n}\nfunction encodeInteger(builder, num, relative) {\n let delta = num - relative;\n delta = delta < 0 ? -delta << 1 | 1 : delta << 1;\n do {\n let clamped = delta & 31;\n delta >>>= 5;\n if (delta > 0) clamped |= 32;\n builder.write(intToChar[clamped]);\n } while (delta > 0);\n return num;\n}\nfunction hasMoreVlq(reader, max) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\n\n// src/strings.ts\nvar bufLength = 1024 * 16;\nvar td = typeof TextDecoder !== \"undefined\" ? /* @__PURE__ */ new TextDecoder() : typeof Buffer !== \"undefined\" ? {\n decode(buf) {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n }\n} : {\n decode(buf) {\n let out = \"\";\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n }\n};\nvar StringWriter = class {\n constructor() {\n this.pos = 0;\n this.out = \"\";\n this.buffer = new Uint8Array(bufLength);\n }\n write(v) {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n flush() {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n};\nvar StringReader = class {\n constructor(buffer) {\n this.pos = 0;\n this.buffer = buffer;\n }\n next() {\n return this.buffer.charCodeAt(this.pos++);\n }\n peek() {\n return this.buffer.charCodeAt(this.pos);\n }\n indexOf(char) {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n};\n\n// src/scopes.ts\nvar EMPTY = [];\nfunction decodeOriginalScopes(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes = [];\n const stack = [];\n let line = 0;\n for (; reader.pos < length; reader.pos++) {\n line = decodeInteger(reader, line);\n const column = decodeInteger(reader, 0);\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop();\n last[2] = line;\n last[3] = column;\n continue;\n }\n const kind = decodeInteger(reader, 0);\n const fields = decodeInteger(reader, 0);\n const hasName = fields & 1;\n const scope = hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind];\n let vars = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeInteger(reader, 0);\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n scopes.push(scope);\n stack.push(scope);\n }\n return scopes;\n}\nfunction encodeOriginalScopes(scopes) {\n const writer = new StringWriter();\n for (let i = 0; i < scopes.length; ) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n return writer.flush();\n}\nfunction _encodeOriginalScopes(scopes, index, writer, state) {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n if (index > 0) writer.write(comma);\n state[0] = encodeInteger(writer, startLine, state[0]);\n encodeInteger(writer, startColumn, 0);\n encodeInteger(writer, kind, 0);\n const fields = scope.length === 6 ? 1 : 0;\n encodeInteger(writer, fields, 0);\n if (scope.length === 6) encodeInteger(writer, scope[5], 0);\n for (const v of vars) {\n encodeInteger(writer, v, 0);\n }\n for (index++; index < scopes.length; ) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || l === endLine && c >= endColumn) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n writer.write(comma);\n state[0] = encodeInteger(writer, endLine, state[0]);\n encodeInteger(writer, endColumn, 0);\n return index;\n}\nfunction decodeGeneratedRanges(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges = [];\n const stack = [];\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n do {\n const semi = reader.indexOf(\";\");\n let genColumn = 0;\n for (; reader.pos < semi; reader.pos++) {\n genColumn = decodeInteger(reader, genColumn);\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop();\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n const fields = decodeInteger(reader, 0);\n const hasDefinition = fields & 1;\n const hasCallsite = fields & 2;\n const hasScope = fields & 4;\n let callsite = null;\n let bindings = EMPTY;\n let range;\n if (hasDefinition) {\n const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);\n definitionScopeIndex = decodeInteger(\n reader,\n definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0\n );\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex];\n } else {\n range = [genLine, genColumn, 0, 0];\n }\n range.isScope = !!hasScope;\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);\n callsiteColumn = decodeInteger(\n reader,\n sameSource && prevLine === callsiteLine ? callsiteColumn : 0\n );\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeInteger(reader, 0);\n let expressionRanges;\n if (expressionsCount < -1) {\n expressionRanges = [[decodeInteger(reader, 0)]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine = decodeInteger(reader, bindingLine);\n bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);\n const expression = decodeInteger(reader, 0);\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n } else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n ranges.push(range);\n stack.push(range);\n }\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n return ranges;\n}\nfunction encodeGeneratedRanges(ranges) {\n if (ranges.length === 0) return \"\";\n const writer = new StringWriter();\n for (let i = 0; i < ranges.length; ) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n return writer.flush();\n}\nfunction _encodeGeneratedRanges(ranges, index, writer, state) {\n const range = ranges[index];\n const {\n 0: startLine,\n 1: startColumn,\n 2: endLine,\n 3: endColumn,\n isScope,\n callsite,\n bindings\n } = range;\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n } else if (index > 0) {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, range[1], state[1]);\n const fields = (range.length === 6 ? 1 : 0) | (callsite ? 2 : 0) | (isScope ? 4 : 0);\n encodeInteger(writer, fields, 0);\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n state[2] = encodeInteger(writer, sourcesIndex, state[2]);\n state[3] = encodeInteger(writer, scopesIndex, state[3]);\n }\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n } else if (callLine !== state[5]) {\n state[6] = 0;\n }\n state[4] = encodeInteger(writer, sourcesIndex, state[4]);\n state[5] = encodeInteger(writer, callLine, state[5]);\n state[6] = encodeInteger(writer, callColumn, state[6]);\n }\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1) encodeInteger(writer, -binding.length, 0);\n const expression = binding[0][0];\n encodeInteger(writer, expression, 0);\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine);\n bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn);\n encodeInteger(writer, expRange[0], 0);\n }\n }\n }\n for (index++; index < ranges.length; ) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || l === endLine && c >= endColumn) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n } else {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, endColumn, state[1]);\n return index;\n}\nfunction catchupLine(writer, lastLine, line) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n}\n\n// src/sourcemap-codec.ts\nfunction decode(mappings) {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n do {\n const semi = reader.indexOf(\";\");\n const line = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n while (reader.pos < semi) {\n let seg;\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n line.push(seg);\n reader.pos++;\n }\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n return decoded;\n}\nfunction sort(line) {\n line.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n return a[0] - b[0];\n}\nfunction encode(decoded) {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) writer.write(semicolon);\n if (line.length === 0) continue;\n let genColumn = 0;\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0) writer.write(comma);\n genColumn = encodeInteger(writer, segment[0], genColumn);\n if (segment.length === 1) continue;\n sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n sourceLine = encodeInteger(writer, segment[2], sourceLine);\n sourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n if (segment.length === 4) continue;\n namesIndex = encodeInteger(writer, segment[4], namesIndex);\n }\n }\n return writer.flush();\n}\nexport {\n decode,\n decodeGeneratedRanges,\n decodeOriginalScopes,\n encode,\n encodeGeneratedRanges,\n encodeOriginalScopes\n};\n//# sourceMappingURL=sourcemap-codec.mjs.map\n",
|
|
31
|
+
"import { encode } from \"@jridgewell/sourcemap-codec\";\n//#region src/BitSet.ts\nvar BitSet = class BitSet {\n\tconstructor(arg) {\n\t\tthis.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n\t}\n\tadd(n) {\n\t\tthis.bits[n >> 5] |= 1 << (n & 31);\n\t}\n\thas(n) {\n\t\treturn !!(this.bits[n >> 5] & 1 << (n & 31));\n\t}\n};\n//#endregion\n//#region src/Chunk.ts\nvar Chunk = class Chunk {\n\tconstructor(start, end, content) {\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.original = content;\n\t\tthis.intro = \"\";\n\t\tthis.outro = \"\";\n\t\tthis.content = content;\n\t\tthis.storeName = false;\n\t\tthis.edited = false;\n\t\tthis.previous = null;\n\t\tthis.next = null;\n\t}\n\tappendLeft(content) {\n\t\tthis.outro += content;\n\t}\n\tappendRight(content) {\n\t\tthis.intro = this.intro + content;\n\t}\n\tclone() {\n\t\tconst chunk = new Chunk(this.start, this.end, this.original);\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\t\treturn chunk;\n\t}\n\tcontains(index) {\n\t\treturn this.start < index && index < this.end;\n\t}\n\teachNext(fn) {\n\t\tfn(this);\n\t\tlet chunk = this.next;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.next;\n\t\t}\n\t}\n\teachPrevious(fn) {\n\t\tfn(this);\n\t\tlet chunk = this.previous;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t}\n\tedit(content, storeName, contentOnly) {\n\t\tthis.content = content;\n\t\tif (!contentOnly) {\n\t\t\tthis.intro = \"\";\n\t\t\tthis.outro = \"\";\n\t\t}\n\t\tthis.storeName = storeName;\n\t\tthis.edited = true;\n\t\treturn this;\n\t}\n\tprependLeft(content) {\n\t\tthis.outro = content + this.outro;\n\t}\n\tprependRight(content) {\n\t\tthis.intro = content + this.intro;\n\t}\n\treset() {\n\t\tthis.intro = \"\";\n\t\tthis.outro = \"\";\n\t\tif (this.edited) {\n\t\t\tthis.content = this.original;\n\t\t\tthis.storeName = false;\n\t\t\tthis.edited = false;\n\t\t}\n\t}\n\tsplit(index) {\n\t\tconst sliceIndex = index - this.start;\n\t\tconst originalBefore = this.original.slice(0, sliceIndex);\n\t\tconst originalAfter = this.original.slice(sliceIndex);\n\t\tthis.original = originalBefore;\n\t\tconst newChunk = new Chunk(index, this.end, originalAfter);\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = \"\";\n\t\tthis.end = index;\n\t\tif (this.edited) {\n\t\t\tnewChunk.edit(\"\", false);\n\t\t\tthis.content = \"\";\n\t\t} else this.content = originalBefore;\n\t\tnewChunk.next = this.next;\n\t\tif (newChunk.next) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\t\treturn newChunk;\n\t}\n\ttoString() {\n\t\treturn this.intro + this.content + this.outro;\n\t}\n\ttrimEnd(rx) {\n\t\tthis.outro = this.outro.replace(rx, \"\");\n\t\tif (this.outro.length) return true;\n\t\tconst trimmed = this.content.replace(rx, \"\");\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) if (this.edited) this.edit(trimmed, this.storeName, true);\n\t\t\telse this.split(this.start + trimmed.length).edit(\"\", void 0, true);\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit(\"\", void 0, true);\n\t\t\tthis.intro = this.intro.replace(rx, \"\");\n\t\t\tif (this.intro.length) return true;\n\t\t}\n\t}\n\ttrimStart(rx) {\n\t\tthis.intro = this.intro.replace(rx, \"\");\n\t\tif (this.intro.length) return true;\n\t\tconst trimmed = this.content.replace(rx, \"\");\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) if (this.edited) this.edit(trimmed, this.storeName, true);\n\t\t\telse {\n\t\t\t\tthis.split(this.end - trimmed.length);\n\t\t\t\tthis.edit(\"\", void 0, true);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit(\"\", void 0, true);\n\t\t\tthis.outro = this.outro.replace(rx, \"\");\n\t\t\tif (this.outro.length) return true;\n\t\t}\n\t}\n};\n//#endregion\n//#region src/MagicStringError.ts\n/**\n* The single error type thrown by MagicString.\n*\n* Every message is prefixed with `[MagicString]` so its source is obvious at a\n* glance, and is kept short and consistent in tone.\n*/\nvar MagicStringError = class extends Error {\n\tname = \"MagicStringError\";\n\tconstructor(message, options) {\n\t\tsuper(`[MagicString] ${message}`, options);\n\t}\n};\n//#endregion\n//#region src/SourceMap.ts\nfunction getBtoa() {\n\tif (typeof globalThis !== \"undefined\" && typeof globalThis.btoa === \"function\") return (str) => globalThis.btoa(unescape(encodeURIComponent(str)));\n\tconst buffer = globalThis[\"Buffer\"];\n\tif (buffer) return (str) => buffer.from(str, \"utf-8\").toString(\"base64\");\n\treturn () => {\n\t\tthrow new MagicStringError(\"unsupported environment: `btoa` or `Buffer` is required\");\n\t};\n}\nconst btoa = /* #__PURE__ */ getBtoa();\nvar SourceMap = class {\n\tconstructor(properties) {\n\t\tthis.version = 3;\n\t\tthis.file = properties.file;\n\t\tthis.sources = properties.sources;\n\t\tthis.sourcesContent = properties.sourcesContent;\n\t\tthis.names = properties.names;\n\t\tthis.mappings = encode(properties.mappings);\n\t\tif (typeof properties.x_google_ignoreList !== \"undefined\") this.x_google_ignoreList = properties.x_google_ignoreList;\n\t\tif (typeof properties.debugId !== \"undefined\") this.debugId = properties.debugId;\n\t}\n\t/**\n\t* Returns the equivalent of `JSON.stringify(map)`\n\t*/\n\ttoString() {\n\t\treturn JSON.stringify(this);\n\t}\n\t/**\n\t* Returns a DataURI containing the sourcemap. Useful for doing this sort of thing:\n\t* `generateMap(options?: SourceMapOptions): SourceMap;`\n\t*/\n\ttoUrl() {\n\t\treturn `data:application/json;charset=utf-8;base64,${btoa(this.toString())}`;\n\t}\n};\n//#endregion\n//#region src/utils/getLocator.ts\nfunction getLocator(source) {\n\tconst originalLines = source.split(\"\\n\");\n\tconst lineOffsets = [];\n\tfor (let i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\treturn function locate(index) {\n\t\tlet i = 0;\n\t\tlet j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tconst m = i + j >> 1;\n\t\t\tif (index < lineOffsets[m]) j = m;\n\t\t\telse i = m + 1;\n\t\t}\n\t\tconst line = i - 1;\n\t\treturn {\n\t\t\tline,\n\t\t\tcolumn: index - lineOffsets[line]\n\t\t};\n\t};\n}\n//#endregion\n//#region src/utils/getRelativePath.ts\nfunction getRelativePath(from, to) {\n\tconst fromParts = from.split(/[/\\\\]/);\n\tconst toParts = to.split(/[/\\\\]/);\n\tfromParts.pop();\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\tif (fromParts.length) {\n\t\tlet i = fromParts.length;\n\t\twhile (i--) fromParts[i] = \"..\";\n\t}\n\treturn fromParts.concat(toParts).join(\"/\");\n}\n//#endregion\n//#region src/utils/guessIndent.ts\nfunction guessIndent(code) {\n\tconst lines = code.split(\"\\n\");\n\tconst tabbed = lines.filter((line) => /^\\t+/.test(line));\n\tconst spaced = lines.filter((line) => /^ {2,}/.test(line));\n\tif (tabbed.length === 0 && spaced.length === 0) return null;\n\tif (tabbed.length >= spaced.length) return \"\t\";\n\tconst min = spaced.reduce((previous, current) => {\n\t\tconst numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\treturn \" \".repeat(min);\n}\n//#endregion\n//#region src/utils/isObject.ts\nconst toString = Object.prototype.toString;\nfunction isObject(thing) {\n\treturn toString.call(thing) === \"[object Object]\";\n}\n//#endregion\n//#region src/utils/Mappings.ts\nconst wordRegex = /\\w/;\nvar Mappings = class {\n\tconstructor(hires) {\n\t\tthis.hires = hires;\n\t\tthis.generatedCodeLine = 0;\n\t\tthis.generatedCodeColumn = 0;\n\t\tthis.raw = [];\n\t\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\t\tthis.pending = null;\n\t}\n\taddEdit(sourceIndex, content, loc, nameIndex) {\n\t\tif (content.length) {\n\t\t\tconst contentLengthMinusOne = content.length - 1;\n\t\t\tlet contentLineEnd = content.indexOf(\"\\n\", 0);\n\t\t\tlet previousContentLineEnd = -1;\n\t\t\twhile (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {\n\t\t\t\tconst segment = [\n\t\t\t\t\tthis.generatedCodeColumn,\n\t\t\t\t\tsourceIndex,\n\t\t\t\t\tloc.line,\n\t\t\t\t\tloc.column\n\t\t\t\t];\n\t\t\t\tif (nameIndex >= 0) segment.push(nameIndex);\n\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tpreviousContentLineEnd = contentLineEnd;\n\t\t\t\tcontentLineEnd = content.indexOf(\"\\n\", contentLineEnd + 1);\n\t\t\t}\n\t\t\tconst segment = [\n\t\t\t\tthis.generatedCodeColumn,\n\t\t\t\tsourceIndex,\n\t\t\t\tloc.line,\n\t\t\t\tloc.column\n\t\t\t];\n\t\t\tif (nameIndex >= 0) segment.push(nameIndex);\n\t\t\tthis.rawSegments.push(segment);\n\t\t\tthis.advance(content.slice(previousContentLineEnd + 1));\n\t\t} else if (this.pending) {\n\t\t\tthis.rawSegments.push(this.pending);\n\t\t\tthis.advance(content);\n\t\t}\n\t\tthis.pending = null;\n\t}\n\taddUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n\t\tlet originalCharIndex = chunk.start;\n\t\tlet first = true;\n\t\tlet charInHiresBoundary = false;\n\t\twhile (originalCharIndex < chunk.end) {\n\t\t\tif (original[originalCharIndex] === \"\\n\") {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tfirst = true;\n\t\t\t\tcharInHiresBoundary = false;\n\t\t\t} else {\n\t\t\t\tif (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n\t\t\t\t\tconst segment = [\n\t\t\t\t\t\tthis.generatedCodeColumn,\n\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\tloc.line,\n\t\t\t\t\t\tloc.column\n\t\t\t\t\t];\n\t\t\t\t\tif (this.hires === \"boundary\") if (wordRegex.test(original[originalCharIndex])) {\n\t\t\t\t\t\tif (!charInHiresBoundary) {\n\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\tcharInHiresBoundary = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\tcharInHiresBoundary = false;\n\t\t\t\t\t}\n\t\t\t\t\telse this.rawSegments.push(segment);\n\t\t\t\t}\n\t\t\t\tloc.column += 1;\n\t\t\t\tthis.generatedCodeColumn += 1;\n\t\t\t\tfirst = false;\n\t\t\t}\n\t\t\toriginalCharIndex += 1;\n\t\t}\n\t\tthis.pending = null;\n\t}\n\tadvance(str) {\n\t\tif (!str) return;\n\t\tconst lines = str.split(\"\\n\");\n\t\tif (lines.length > 1) {\n\t\t\tfor (let i = 0; i < lines.length - 1; i++) {\n\t\t\t\tthis.generatedCodeLine++;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t}\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t}\n\t\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n\t}\n};\n//#endregion\n//#region src/MagicString.ts\nconst n = \"\\n\";\nconst NEWLINE_CHAR = \"\\n\".charCodeAt(0);\nconst CR_CHAR = \"\\r\".charCodeAt(0);\nconst warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false\n};\nvar MagicString = class MagicString {\n\tconstructor(string, options = {}) {\n\t\tconst chunk = new Chunk(0, string.length, string);\n\t\tObject.defineProperties(this, {\n\t\t\toriginal: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: string\n\t\t\t},\n\t\t\toutro: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: \"\"\n\t\t\t},\n\t\t\tintro: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: \"\"\n\t\t\t},\n\t\t\tfirstChunk: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: chunk\n\t\t\t},\n\t\t\tlastChunk: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: chunk\n\t\t\t},\n\t\t\tlastSearchedChunk: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: chunk\n\t\t\t},\n\t\t\tbyStart: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: /* @__PURE__ */ new Map([[0, chunk]])\n\t\t\t},\n\t\t\tbyEnd: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: /* @__PURE__ */ new Map([[string.length, chunk]])\n\t\t\t},\n\t\t\tfilename: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: options.filename\n\t\t\t},\n\t\t\tindentExclusionRanges: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: options.indentExclusionRanges\n\t\t\t},\n\t\t\tsourcemapLocations: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: new BitSet()\n\t\t\t},\n\t\t\tstoredNames: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: {}\n\t\t\t},\n\t\t\tindentStr: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: void 0\n\t\t\t},\n\t\t\tignoreList: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: options.ignoreList\n\t\t\t},\n\t\t\toffset: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: options.offset || 0\n\t\t\t},\n\t\t\thasMovedChunks: {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: false\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Adds the specified character index (with respect to the original string) to sourcemap mappings, if `hires` is false.\n\t*/\n\taddSourcemapLocation(char) {\n\t\tthis.sourcemapLocations.add(char);\n\t}\n\t/**\n\t* Appends the specified content to the end of the string.\n\t*/\n\tappend(content) {\n\t\tif (typeof content !== \"string\") throw new MagicStringError(`content must be a string, got ${typeof content}`);\n\t\tthis.outro += content;\n\t\treturn this;\n\t}\n\t/**\n\t* Appends the specified content at the index in the original string.\n\t* If a range *ending* with index is subsequently moved, the insert will be moved with it.\n\t* See also `s.prependLeft(...)`.\n\t*/\n\tappendLeft(index, content) {\n\t\tindex = index + this.offset;\n\t\tif (typeof content !== \"string\") throw new MagicStringError(`content must be a string, got ${typeof content}`);\n\t\tthis._split(index);\n\t\tconst chunk = this.byEnd.get(index);\n\t\tif (chunk) chunk.appendLeft(content);\n\t\telse this.intro += content;\n\t\treturn this;\n\t}\n\t/**\n\t* Appends the specified content at the index in the original string.\n\t* If a range *starting* with index is subsequently moved, the insert will be moved with it.\n\t* See also `s.prependRight(...)`.\n\t*/\n\tappendRight(index, content) {\n\t\tindex = index + this.offset;\n\t\tif (typeof content !== \"string\") throw new MagicStringError(`content must be a string, got ${typeof content}`);\n\t\tthis._split(index);\n\t\tconst chunk = this.byStart.get(index);\n\t\tif (chunk) chunk.appendRight(content);\n\t\telse this.outro += content;\n\t\treturn this;\n\t}\n\t/**\n\t* Does what you'd expect.\n\t*/\n\tclone() {\n\t\tconst cloned = new MagicString(this.original, {\n\t\t\tfilename: this.filename,\n\t\t\tignoreList: this.ignoreList,\n\t\t\toffset: this.offset\n\t\t});\n\t\tlet originalChunk = this.firstChunk;\n\t\tlet clonedChunk = cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone();\n\t\twhile (originalChunk) {\n\t\t\tcloned.byStart.set(clonedChunk.start, clonedChunk);\n\t\t\tcloned.byEnd.set(clonedChunk.end, clonedChunk);\n\t\t\tconst nextOriginalChunk = originalChunk.next;\n\t\t\tconst nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\t\t\tif (nextClonedChunk) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\t\tcloned.lastChunk = clonedChunk;\n\t\tif (this.indentExclusionRanges) cloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t\tcloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n\t\tcloned.storedNames = { ...this.storedNames };\n\t\tcloned.intro = this.intro;\n\t\tcloned.outro = this.outro;\n\t\tcloned.hasMovedChunks = this.hasMovedChunks;\n\t\treturn cloned;\n\t}\n\t/**\n\t* Generates a sourcemap object with raw mappings in array form, rather than encoded as a string.\n\t* Useful if you need to manipulate the sourcemap further, but most of the time you will use `generateMap` instead.\n\t*/\n\tgenerateDecodedMap(options) {\n\t\toptions = options || {};\n\t\tconst sourceIndex = 0;\n\t\tconst names = Object.keys(this.storedNames);\n\t\tconst mappings = new Mappings(options.hires);\n\t\tconst locate = getLocator(this.original);\n\t\tif (this.intro) mappings.advance(this.intro);\n\t\tthis.firstChunk.eachNext((chunk) => {\n\t\t\tconst loc = locate(chunk.start);\n\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\t\t\tif (chunk.edited) mappings.addEdit(sourceIndex, chunk.content, loc, chunk.storeName ? names.indexOf(chunk.original) : -1);\n\t\t\telse mappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);\n\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t});\n\t\tif (this.outro) mappings.advance(this.outro);\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : void 0,\n\t\t\tsources: [options.source ? getRelativePath(options.file || \"\", options.source) : options.file || \"\"],\n\t\t\tsourcesContent: options.includeContent ? [this.original] : void 0,\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList: this.ignoreList ? [sourceIndex] : void 0\n\t\t};\n\t}\n\t/**\n\t* Generates a version 3 sourcemap.\n\t*/\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\t/** @internal */\n\t_ensureindentStr() {\n\t\tif (this.indentStr === void 0) this.indentStr = guessIndent(this.original);\n\t}\n\t/** @internal */\n\t_getRawIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr;\n\t}\n\tgetIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr === null ? \"\t\" : this.indentStr;\n\t}\n\tindent(indentStr, options) {\n\t\tconst pattern = /^[^\\r\\n]/gm;\n\t\tif (isObject(indentStr)) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = void 0;\n\t\t}\n\t\tif (indentStr === void 0) {\n\t\t\tthis._ensureindentStr();\n\t\t\tindentStr = this.indentStr || \"\t\";\n\t\t}\n\t\tif (indentStr === \"\") return this;\n\t\tconst resolvedIndentStr = indentStr;\n\t\toptions = options || {};\n\t\tconst isExcluded = {};\n\t\tif (options.exclude) (typeof options.exclude[0] === \"number\" ? [options.exclude] : options.exclude).forEach((exclusion) => {\n\t\t\tfor (let i = exclusion[0]; i < exclusion[1]; i += 1) isExcluded[i] = true;\n\t\t});\n\t\tlet shouldIndentNextCharacter = options.indentStart !== false;\n\t\tconst replacer = (match) => {\n\t\t\tif (shouldIndentNextCharacter) return `${resolvedIndentStr}${match}`;\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\t\tthis.intro = this.intro.replace(pattern, replacer);\n\t\tlet charIndex = 0;\n\t\tlet chunk = this.firstChunk;\n\t\tconst indentAt = (index) => {\n\t\t\tshouldIndentNextCharacter = false;\n\t\t\tif (index === chunk.start) chunk.prependRight(resolvedIndentStr);\n\t\t\telse {\n\t\t\t\tthis._splitChunk(chunk, index);\n\t\t\t\tchunk = chunk.next;\n\t\t\t\tchunk.prependRight(resolvedIndentStr);\n\t\t\t}\n\t\t};\n\t\twhile (chunk) {\n\t\t\tconst end = chunk.end;\n\t\t\tif (chunk.edited) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\t\t\t\t\tif (chunk.content.length) shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === \"\\n\";\n\t\t\t\t}\n\t\t\t} else if (options.exclude) {\n\t\t\t\tcharIndex = chunk.start;\n\t\t\t\twhile (charIndex < end) {\n\t\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\t\tconst char = this.original.charCodeAt(charIndex);\n\t\t\t\t\t\tif (char === NEWLINE_CHAR) shouldIndentNextCharacter = true;\n\t\t\t\t\t\telse if (char !== CR_CHAR && shouldIndentNextCharacter) indentAt(charIndex);\n\t\t\t\t\t}\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\t\t\t\twhile (charIndex < end) {\n\t\t\t\t\tif (!shouldIndentNextCharacter) {\n\t\t\t\t\t\tconst nextLine = this.original.indexOf(n, charIndex);\n\t\t\t\t\t\tif (nextLine === -1 || nextLine >= end) break;\n\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\tcharIndex = nextLine + 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst char = this.original.charCodeAt(charIndex);\n\t\t\t\t\tif (char === NEWLINE_CHAR || char === CR_CHAR) {\n\t\t\t\t\t\tcharIndex += 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tindentAt(charIndex);\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\t\tthis.outro = this.outro.replace(pattern, replacer);\n\t\treturn this;\n\t}\n\t/** @internal */\n\tinsert() {\n\t\tthrow new MagicStringError(\"insert() is deprecated, use appendLeft() or prependRight()\");\n\t}\n\t/** @internal */\n\tinsertLeft(index, content) {\n\t\tif (!warned.insertLeft) {\n\t\t\tconsole.warn(\"magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead\");\n\t\t\twarned.insertLeft = true;\n\t\t}\n\t\treturn this.appendLeft(index, content);\n\t}\n\t/** @internal */\n\tinsertRight(index, content) {\n\t\tif (!warned.insertRight) {\n\t\t\tconsole.warn(\"magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead\");\n\t\t\twarned.insertRight = true;\n\t\t}\n\t\treturn this.prependRight(index, content);\n\t}\n\t/**\n\t* Moves the characters from `start` and `end` to `index`.\n\t*/\n\tmove(start, end, index) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tindex = index + this.offset;\n\t\tif (start === end) return this;\n\t\tif (index >= start && index <= end) throw new MagicStringError(\"cannot move a selection inside itself\");\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tthis._split(index);\n\t\tconst first = this.byStart.get(start);\n\t\tconst last = this.byEnd.get(end);\n\t\tif (this.hasMovedChunks) {\n\t\t\tlet cursor = first;\n\t\t\twhile (cursor !== last) {\n\t\t\t\tcursor = cursor.next;\n\t\t\t\tif (!cursor || cursor.start < start || cursor.end > end) throw new MagicStringError(`cannot move ${start} to ${end} because an earlier move split that range`);\n\t\t\t}\n\t\t}\n\t\tconst oldLeft = first.previous;\n\t\tconst oldRight = last.next;\n\t\tconst newRight = this.byStart.get(index);\n\t\tif (!newRight && last === this.lastChunk) return this;\n\t\tconst newLeft = newRight ? newRight.previous : this.lastChunk;\n\t\tif (oldLeft) oldLeft.next = oldRight;\n\t\tif (oldRight) oldRight.previous = oldLeft;\n\t\tif (newLeft) newLeft.next = first;\n\t\tif (newRight) newRight.previous = last;\n\t\tif (!first.previous) this.firstChunk = last.next;\n\t\tif (!last.next) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight || null;\n\t\tif (!newLeft) this.firstChunk = first;\n\t\tif (!newRight) this.lastChunk = last;\n\t\tthis.hasMovedChunks = true;\n\t\treturn this;\n\t}\n\t/**\n\t* Replaces the characters from `start` to `end` with `content`, along with the appended/prepended content in\n\t* that range. The same restrictions as `s.remove()` apply.\n\t*\n\t* The fourth argument is optional. It can have a storeName property - if true, the original name will be stored\n\t* for later inclusion in a sourcemap's names array - and a contentOnly property which determines whether only\n\t* the content is overwritten, or anything that was appended/prepended to the range as well.\n\t*\n\t* It may be preferred to use `s.update(...)` instead if you wish to avoid overwriting the appended/prepended content.\n\t*/\n\toverwrite(start, end, content, options) {\n\t\tconst optionObject = typeof options === \"object\" && options ? options : {};\n\t\treturn this.update(start, end, content, {\n\t\t\t...optionObject,\n\t\t\toverwrite: !optionObject.contentOnly\n\t\t});\n\t}\n\t/**\n\t* Replaces the characters from `start` to `end` with `content`. The same restrictions as `s.remove()` apply.\n\t*\n\t* The fourth argument is optional. It can have a storeName property - if true, the original name will be stored\n\t* for later inclusion in a sourcemap's names array - and an overwrite property which determines whether only\n\t* the content is overwritten, or anything that was appended/prepended to the range as well.\n\t*/\n\tupdate(start, end, content, options) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tif (typeof content !== \"string\") throw new MagicStringError(`content must be a string, got ${typeof content}`);\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\t\tif (start < 0) throw new MagicStringError(`start ${start} is out of bounds`);\n\t\tif (end > this.original.length) throw new MagicStringError(`end ${end} is out of bounds`);\n\t\tif (start === end) throw new MagicStringError(`cannot overwrite a zero-length range at ${start}, use appendLeft() or prependRight()`);\n\t\tif (start > end) throw new MagicStringError(`end must be greater than start (start: ${start}, end: ${end})`);\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tif (options === true) {\n\t\t\tif (!warned.storeName) {\n\t\t\t\tconsole.warn(\"The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string\");\n\t\t\t\twarned.storeName = true;\n\t\t\t}\n\t\t\toptions = { storeName: true };\n\t\t}\n\t\tconst optionObject = typeof options === \"object\" && options ? options : {};\n\t\tconst storeName = optionObject.storeName || false;\n\t\tconst overwrite = optionObject.overwrite || false;\n\t\tif (storeName) {\n\t\t\tconst original = this.original.slice(start, end);\n\t\t\tObject.defineProperty(this.storedNames, original, {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: true,\n\t\t\t\tenumerable: true\n\t\t\t});\n\t\t}\n\t\tconst first = this.byStart.get(start);\n\t\tconst last = this.byEnd.get(end);\n\t\tif (first) {\n\t\t\tlet chunk = first;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tif (chunk.next !== this.byStart.get(chunk.end)) throw new MagicStringError(\"cannot overwrite across a split point\");\n\t\t\t\tchunk = chunk.next;\n\t\t\t\tchunk.edit(\"\", false);\n\t\t\t}\n\t\t\tfirst.edit(content, storeName, !overwrite);\n\t\t} else {\n\t\t\tconst newChunk = new Chunk(start, end, \"\").edit(content, storeName);\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\t\treturn this;\n\t}\n\t/**\n\t* Prepends the string with the specified content.\n\t*/\n\tprepend(content) {\n\t\tif (typeof content !== \"string\") throw new MagicStringError(`content must be a string, got ${typeof content}`);\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t}\n\t/**\n\t* Same as `s.appendLeft(...)`, except that the inserted content will go *before* any previous appends or prepends at index\n\t*/\n\tprependLeft(index, content) {\n\t\tindex = index + this.offset;\n\t\tif (typeof content !== \"string\") throw new MagicStringError(`content must be a string, got ${typeof content}`);\n\t\tthis._split(index);\n\t\tconst chunk = this.byEnd.get(index);\n\t\tif (chunk) chunk.prependLeft(content);\n\t\telse this.intro = content + this.intro;\n\t\treturn this;\n\t}\n\t/**\n\t* Same as `s.appendRight(...)`, except that the inserted content will go *before* any previous appends or prepends at `index`\n\t*/\n\tprependRight(index, content) {\n\t\tindex = index + this.offset;\n\t\tif (typeof content !== \"string\") throw new MagicStringError(`content must be a string, got ${typeof content}`);\n\t\tthis._split(index);\n\t\tconst chunk = this.byStart.get(index);\n\t\tif (chunk) chunk.prependRight(content);\n\t\telse this.outro = content + this.outro;\n\t\treturn this;\n\t}\n\t/**\n\t* Removes the characters from `start` to `end` (of the original string, **not** the generated string).\n\t* Removing the same content twice, or making removals that partially overlap, will cause an error.\n\t*/\n\tremove(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\t\tif (start === end) return this;\n\t\tif (start < 0 || end > this.original.length) throw new MagicStringError(`range ${start}–${end} is out of bounds`);\n\t\tif (start > end) throw new MagicStringError(`end must be greater than start (start: ${start}, end: ${end})`);\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tlet chunk = this.byStart.get(start);\n\t\twhile (chunk) {\n\t\t\tchunk.intro = \"\";\n\t\t\tchunk.outro = \"\";\n\t\t\tchunk.edit(\"\");\n\t\t\tchunk = end > chunk.end ? this.byStart.get(chunk.end) : null;\n\t\t}\n\t\treturn this;\n\t}\n\t/**\n\t* Reset the modified characters from `start` to `end` (of the original string, **not** the generated string).\n\t*/\n\treset(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\t\tif (start === end) return this;\n\t\tif (start < 0 || end > this.original.length) throw new MagicStringError(`range ${start}–${end} is out of bounds`);\n\t\tif (start > end) throw new MagicStringError(`end must be greater than start (start: ${start}, end: ${end})`);\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tlet chunk = this.byStart.get(start);\n\t\twhile (chunk) {\n\t\t\tchunk.reset();\n\t\t\tchunk = end > chunk.end ? this.byStart.get(chunk.end) : null;\n\t\t}\n\t\treturn this;\n\t}\n\tlastChar() {\n\t\tif (this.outro.length) return this.outro[this.outro.length - 1];\n\t\tlet chunk = this.lastChunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];\n\t\t\tif (chunk.content.length) return chunk.content[chunk.content.length - 1];\n\t\t\tif (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t\tif (this.intro.length) return this.intro[this.intro.length - 1];\n\t\treturn \"\";\n\t}\n\tlastLine() {\n\t\tlet lineIndex = this.outro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.outro.substr(lineIndex + 1);\n\t\tlet lineStr = this.outro;\n\t\tlet chunk = this.lastChunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.outro.length > 0) {\n\t\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.outro + lineStr;\n\t\t\t}\n\t\t\tif (chunk.content.length > 0) {\n\t\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.content + lineStr;\n\t\t\t}\n\t\t\tif (chunk.intro.length > 0) {\n\t\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.intro + lineStr;\n\t\t\t}\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t\tlineIndex = this.intro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;\n\t\treturn this.intro + lineStr;\n\t}\n\t/**\n\t* Returns the content of the generated string that corresponds to the slice between `start` and `end` of the original string.\n\t* Throws error if the indices are for characters that were already removed.\n\t*/\n\tslice(start = 0, end = this.original.length - this.offset) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\t\tlet result = \"\";\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t\tif (chunk.start < end && chunk.end >= end) return result;\n\t\t\tchunk = chunk.next;\n\t\t}\n\t\tif (chunk && chunk.edited && chunk.start !== start) throw new MagicStringError(`cannot use edited character ${start} as slice start anchor`);\n\t\tconst startChunk = chunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) result += chunk.intro;\n\t\t\tconst containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif (containsEnd && chunk.edited && chunk.end !== end) throw new MagicStringError(`cannot use edited character ${end} as slice end anchor`);\n\t\t\tconst sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tconst sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\t\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\t\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) result += chunk.outro;\n\t\t\tif (containsEnd) break;\n\t\t\tchunk = chunk.next;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t* Returns a clone of `s`, with all content before the `start` and `end` characters of the original string removed.\n\t*/\n\tsnip(start, end) {\n\t\tconst clone = this.clone();\n\t\tclone.remove(0, start);\n\t\tclone.remove(end, clone.original.length);\n\t\treturn clone;\n\t}\n\t/** @internal */\n\t_split(index) {\n\t\tif (this.byStart.get(index) || this.byEnd.get(index)) return;\n\t\tlet chunk = this.lastSearchedChunk;\n\t\tlet previousChunk = chunk;\n\t\tconst searchForward = index > chunk.end;\n\t\twhile (chunk) {\n\t\t\tif (chunk.contains(index)) return this._splitChunk(chunk, index);\n\t\t\tchunk = searchForward ? this.byStart.get(chunk.end) : this.byEnd.get(chunk.start);\n\t\t\tif (chunk === previousChunk) return;\n\t\t\tpreviousChunk = chunk;\n\t\t}\n\t}\n\t/** @internal */\n\t_splitChunk(chunk, index) {\n\t\tif (chunk.edited && chunk.content.length) {\n\t\t\tconst loc = getLocator(this.original)(index);\n\t\t\tthrow new MagicStringError(`cannot split a chunk that has already been edited (${loc.line}:${loc.column} – \"${chunk.original}\")`);\n\t\t}\n\t\tconst newChunk = chunk.split(index);\n\t\tthis.byEnd.set(index, chunk);\n\t\tthis.byStart.set(index, newChunk);\n\t\tthis.byEnd.set(newChunk.end, newChunk);\n\t\tif (chunk === this.lastChunk) this.lastChunk = newChunk;\n\t\tthis.lastSearchedChunk = chunk;\n\t\treturn true;\n\t}\n\t/**\n\t* Returns the generated string.\n\t*/\n\ttoString() {\n\t\tlet str = this.intro;\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\t\treturn str + this.outro;\n\t}\n\t/**\n\t* Returns true if the resulting source is empty (disregarding white space).\n\t*/\n\tisEmpty() {\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro.length && chunk.intro.trim() || chunk.content.length && chunk.content.trim() || chunk.outro.length && chunk.outro.trim()) return false;\n\t\t\tchunk = chunk.next;\n\t\t}\n\t\treturn true;\n\t}\n\tlength() {\n\t\tlet chunk = this.firstChunk;\n\t\tlet length = 0;\n\t\twhile (chunk) {\n\t\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t\t\tchunk = chunk.next;\n\t\t}\n\t\treturn length;\n\t}\n\t/**\n\t* Removes empty lines from the start and end.\n\t*/\n\ttrimLines() {\n\t\treturn this.trim(\"[\\\\r\\\\n]\");\n\t}\n\t/**\n\t* Trims content matching `charType` (defaults to `\\s`, i.e. whitespace) from the start and end.\n\t*/\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\t/** @internal */\n\ttrimEndAborted(charType) {\n\t\tconst rx = new RegExp(`${charType || \"\\\\s\"}+$`);\n\t\tthis.outro = this.outro.replace(rx, \"\");\n\t\tif (this.outro.length) return true;\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimEnd(rx);\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (this.lastChunk === chunk) this.lastChunk = chunk.next;\n\t\t\t\tthis.byEnd.set(chunk.end, chunk);\n\t\t\t\tthis.byStart.set(chunk.next.start, chunk.next);\n\t\t\t\tthis.byEnd.set(chunk.next.end, chunk.next);\n\t\t\t}\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.previous;\n\t\t} while (chunk);\n\t\treturn false;\n\t}\n\t/**\n\t* Trims content matching `charType` (defaults to `\\s`, i.e. whitespace) from the end.\n\t*/\n\ttrimEnd(charType) {\n\t\tthis.trimEndAborted(charType);\n\t\treturn this;\n\t}\n\t/** @internal */\n\ttrimStartAborted(charType) {\n\t\tconst rx = new RegExp(`^${charType || \"\\\\s\"}+`);\n\t\tthis.intro = this.intro.replace(rx, \"\");\n\t\tif (this.intro.length) return true;\n\t\tlet chunk = this.firstChunk;\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimStart(rx);\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (chunk === this.lastChunk) this.lastChunk = chunk.next;\n\t\t\t\tthis.byEnd.set(chunk.end, chunk);\n\t\t\t\tthis.byStart.set(chunk.next.start, chunk.next);\n\t\t\t\tthis.byEnd.set(chunk.next.end, chunk.next);\n\t\t\t}\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.next;\n\t\t} while (chunk);\n\t\treturn false;\n\t}\n\t/**\n\t* Trims content matching `charType` (defaults to `\\s`, i.e. whitespace) from the start.\n\t*/\n\ttrimStart(charType) {\n\t\tthis.trimStartAborted(charType);\n\t\treturn this;\n\t}\n\t/**\n\t* Indicates if the string has been changed.\n\t*/\n\thasChanged() {\n\t\tif (this.intro || this.outro) return true;\n\t\tlet outputIndex = 0;\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro || chunk.outro) return true;\n\t\t\tif (!chunk.edited && chunk.start === outputIndex) outputIndex = chunk.end;\n\t\t\telse {\n\t\t\t\tif (!this.original.startsWith(chunk.content, outputIndex)) return true;\n\t\t\t\toutputIndex += chunk.content.length;\n\t\t\t}\n\t\t\tchunk = chunk.next;\n\t\t}\n\t\treturn outputIndex !== this.original.length;\n\t}\n\t/** @internal */\n\t_replaceRegexp(searchValue, replacement) {\n\t\tfunction getReplacement(match, str) {\n\t\t\tif (typeof replacement === \"string\") return replacement.replace(/\\$(\\$|&|\\d+)/g, (_, i) => {\n\t\t\t\tif (i === \"$\") return \"$\";\n\t\t\t\tif (i === \"&\") return match[0];\n\t\t\t\tif (+i < match.length) return match[+i];\n\t\t\t\treturn `$${i}`;\n\t\t\t});\n\t\t\telse return replacement(match[0], ...match.slice(1), match.index, str, match.groups);\n\t\t}\n\t\tfunction matchAll(re, str) {\n\t\t\tconst matches = [];\n\t\t\twhile (true) {\n\t\t\t\tconst match = re.exec(str);\n\t\t\t\tif (!match) break;\n\t\t\t\tmatches.push(match);\n\t\t\t}\n\t\t\treturn matches;\n\t\t}\n\t\tif (searchValue.global) matchAll(searchValue, this.original).forEach((match) => {\n\t\t\tif (match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) this.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t}\n\t\t});\n\t\telse {\n\t\t\tconst match = this.original.match(searchValue);\n\t\t\tif (match && match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) this.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\t/** @internal */\n\t_replaceString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst index = original.indexOf(string);\n\t\tif (index !== -1) {\n\t\t\tif (typeof replacement === \"function\") replacement = replacement(string, index, original);\n\t\t\tif (string !== replacement) this.overwrite(index, index + string.length, replacement);\n\t\t}\n\t\treturn this;\n\t}\n\t/**\n\t* String replacement with RegExp or string.\n\t*/\n\treplace(searchValue, replacement) {\n\t\tif (typeof searchValue === \"string\") return this._replaceString(searchValue, replacement);\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n\t/** @internal */\n\t_replaceAllString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst stringLength = string.length;\n\t\tfor (let index = original.indexOf(string); index !== -1; index = original.indexOf(string, index + stringLength)) {\n\t\t\tconst previous = original.slice(index, index + stringLength);\n\t\t\tconst _replacement = typeof replacement === \"function\" ? replacement(previous, index, original) : replacement;\n\t\t\tif (previous !== _replacement) this.overwrite(index, index + stringLength, _replacement);\n\t\t}\n\t\treturn this;\n\t}\n\t/**\n\t* Same as `s.replace`, but replace all matched strings instead of just one.\n\t*/\n\treplaceAll(searchValue, replacement) {\n\t\tif (typeof searchValue === \"string\") return this._replaceAllString(searchValue, replacement);\n\t\tif (!searchValue.global) throw new MagicStringError(\"replaceAll() requires a global RegExp\");\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n};\n//#endregion\n//#region src/Bundle.ts\nconst hasOwnProp = Object.prototype.hasOwnProperty;\nvar Bundle = class Bundle {\n\tconstructor(options = {}) {\n\t\tthis.intro = options.intro || \"\";\n\t\tthis.separator = options.separator !== void 0 ? options.separator : \"\\n\";\n\t\tthis.sources = [];\n\t\tthis.uniqueSources = [];\n\t\tthis.uniqueSourceIndexByFilename = {};\n\t}\n\t/**\n\t* Adds the specified source to the bundle, which can either be a `MagicString` object directly,\n\t* or an options object that holds a magic string `content` property and optionally provides\n\t* a `filename` for the source within the bundle, as well as an optional `ignoreList` hint\n\t* (which defaults to `false`). The `filename` is used when constructing the source map for the\n\t* bundle, to identify this `source` in the source map's `sources` field. The `ignoreList` hint\n\t* is used to populate the `x_google_ignoreList` extension field in the source map, which is a\n\t* mechanism for tools to signal to debuggers that certain sources should be ignored by default\n\t* (depending on user preferences).\n\t*/\n\taddSource(source) {\n\t\tif (source instanceof MagicString) return this.addSource({\n\t\t\tcontent: source,\n\t\t\tfilename: source.filename,\n\t\t\tseparator: this.separator\n\t\t});\n\t\tif (!isObject(source) || !source.content) throw new MagicStringError(\"addSource() requires a `content` property that is a MagicString\");\n\t\t[\n\t\t\t\"filename\",\n\t\t\t\"ignoreList\",\n\t\t\t\"indentExclusionRanges\",\n\t\t\t\"separator\"\n\t\t].forEach((option) => {\n\t\t\tif (!hasOwnProp.call(source, option)) source[option] = source.content[option];\n\t\t});\n\t\tif (source.separator === void 0) source.separator = this.separator;\n\t\tif (source.filename) if (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\tthis.uniqueSources.push({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.original\n\t\t\t});\n\t\t} else {\n\t\t\tconst uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\tif (source.content.original !== uniqueSource.content) throw new MagicStringError(`duplicate filename \"${source.filename}\" with different content, use unique filenames`);\n\t\t}\n\t\tthis.sources.push(source);\n\t\treturn this;\n\t}\n\tappend(str, options) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString(str),\n\t\t\tseparator: options && options.separator || \"\"\n\t\t});\n\t\treturn this;\n\t}\n\tclone() {\n\t\tconst bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator\n\t\t});\n\t\tthis.sources.forEach((source) => {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tignoreList: source.ignoreList,\n\t\t\t\tindentExclusionRanges: source.indentExclusionRanges,\n\t\t\t\tseparator: source.separator\n\t\t\t});\n\t\t});\n\t\treturn bundle;\n\t}\n\tgenerateDecodedMap(options = {}) {\n\t\tconst names = [];\n\t\tlet x_google_ignoreList;\n\t\tthis.sources.forEach((source) => {\n\t\t\tObject.keys(source.content.storedNames).forEach((name) => {\n\t\t\t\tif (!names.includes(name)) names.push(name);\n\t\t\t});\n\t\t});\n\t\tconst mappings = new Mappings(options.hires);\n\t\tif (this.intro) mappings.advance(this.intro);\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tif (i > 0) mappings.advance(source.separator !== void 0 ? source.separator : this.separator);\n\t\t\tconst sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\t\tconst magicString = source.content;\n\t\t\tconst locate = getLocator(magicString.original);\n\t\t\tif (magicString.intro) mappings.advance(magicString.intro);\n\t\t\tmagicString.firstChunk.eachNext((chunk) => {\n\t\t\t\tconst loc = locate(chunk.start);\n\t\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\t\t\t\tif (source.filename) if (chunk.edited) mappings.addEdit(sourceIndex, chunk.content, loc, chunk.storeName ? names.indexOf(chunk.original) : -1);\n\t\t\t\telse mappings.addUneditedChunk(sourceIndex, chunk, magicString.original, loc, magicString.sourcemapLocations);\n\t\t\t\telse mappings.advance(chunk.content);\n\t\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t\t});\n\t\t\tif (magicString.outro) mappings.advance(magicString.outro);\n\t\t\tif (source.ignoreList && sourceIndex !== -1) {\n\t\t\t\tif (x_google_ignoreList === void 0) x_google_ignoreList = [];\n\t\t\t\tx_google_ignoreList.push(sourceIndex);\n\t\t\t}\n\t\t});\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : void 0,\n\t\t\tsources: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList\n\t\t};\n\t}\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\tgetIndentString() {\n\t\tconst indentStringCounts = {};\n\t\tthis.sources.forEach((source) => {\n\t\t\tconst indentStr = source.content._getRawIndentString();\n\t\t\tif (indentStr === null) return;\n\t\t\tif (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0;\n\t\t\tindentStringCounts[indentStr] += 1;\n\t\t});\n\t\treturn Object.keys(indentStringCounts).sort((a, b) => {\n\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t})[0] || \"\t\";\n\t}\n\tindent(indentStr) {\n\t\tif (!arguments.length) indentStr = this.getIndentString();\n\t\tif (indentStr === \"\") return this;\n\t\tlet trailingNewline = !this.intro || this.intro.slice(-1) === \"\\n\";\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tconst separator = source.separator !== void 0 ? source.separator : this.separator;\n\t\t\tconst indentStart = trailingNewline || i > 0 && /\\r?\\n$/.test(separator);\n\t\t\tsource.content.indent(indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart\n\t\t\t});\n\t\t\ttrailingNewline = source.content.lastChar() === \"\\n\";\n\t\t});\n\t\tif (this.intro) this.intro = indentStr + this.intro.replace(/^[^\\n]/gm, (match, index) => {\n\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t});\n\t\treturn this;\n\t}\n\tprepend(str) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t}\n\ttoString() {\n\t\tconst body = this.sources.map((source, i) => {\n\t\t\tconst separator = source.separator !== void 0 ? source.separator : this.separator;\n\t\t\treturn (i > 0 ? separator : \"\") + source.content.toString();\n\t\t}).join(\"\");\n\t\treturn this.intro + body;\n\t}\n\tisEmpty() {\n\t\tif (this.intro.length && this.intro.trim()) return false;\n\t\tif (this.sources.some((source, i) => {\n\t\t\tconst separator = source.separator !== void 0 ? source.separator : this.separator;\n\t\t\treturn i > 0 && separator.trim() !== \"\" || !source.content.isEmpty();\n\t\t})) return false;\n\t\treturn true;\n\t}\n\tlength() {\n\t\treturn this.sources.reduce((length, source, i) => {\n\t\t\tconst separator = source.separator !== void 0 ? source.separator : this.separator;\n\t\t\treturn length + (i > 0 ? separator.length : 0) + source.content.length();\n\t\t}, this.intro.length);\n\t}\n\ttrimLines() {\n\t\treturn this.trim(\"[\\\\r\\\\n]\");\n\t}\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\ttrimStart(charType) {\n\t\tconst rx = new RegExp(`^${charType || \"\\\\s\"}+`);\n\t\tthis.intro = this.intro.replace(rx, \"\");\n\t\tif (!this.intro) {\n\t\t\tlet source;\n\t\t\tlet i = 0;\n\t\t\tdo {\n\t\t\t\tsource = this.sources[i++];\n\t\t\t\tif (!source) break;\n\t\t\t} while (!source.content.trimStartAborted(charType));\n\t\t}\n\t\treturn this;\n\t}\n\ttrimEnd(charType) {\n\t\tconst rx = new RegExp(`${charType || \"\\\\s\"}+$`);\n\t\tlet source;\n\t\tlet i = this.sources.length - 1;\n\t\tdo {\n\t\t\tsource = this.sources[i--];\n\t\t\tif (!source) {\n\t\t\t\tthis.intro = this.intro.replace(rx, \"\");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimEndAborted(charType));\n\t\treturn this;\n\t}\n};\n//#endregion\nexport { Bundle, MagicString, MagicString as default, MagicStringError, SourceMap };\n",
|
|
32
|
+
"import { escapeRegExp, escapeSelector, isString, toArray } from \"@unocss/core\";\nimport MagicString from \"magic-string\";\n//#region src/utilities.ts\nfunction getBracket(str, open, close) {\n\tif (str === \"\") return;\n\tconst l = str.length;\n\tlet parenthesis = 0;\n\tlet opened = false;\n\tlet openAt = 0;\n\tfor (let i = 0; i < l; i++) switch (str[i]) {\n\t\tcase open:\n\t\t\tif (!opened) {\n\t\t\t\topened = true;\n\t\t\t\topenAt = i;\n\t\t\t}\n\t\t\tparenthesis++;\n\t\t\tbreak;\n\t\tcase close:\n\t\t\t--parenthesis;\n\t\t\tif (parenthesis < 0) return;\n\t\t\tif (parenthesis === 0) return [\n\t\t\t\tstr.slice(openAt, i + 1),\n\t\t\t\tstr.slice(i + 1),\n\t\t\t\tstr.slice(0, openAt)\n\t\t\t];\n\t}\n}\nfunction getStringComponent(str, open, close, separators) {\n\tif (str === \"\") return;\n\tif (isString(separators)) separators = [separators];\n\tif (separators.length === 0) return;\n\tconst l = str.length;\n\tlet parenthesis = 0;\n\tfor (let i = 0; i < l; i++) switch (str[i]) {\n\t\tcase open:\n\t\t\tparenthesis++;\n\t\t\tbreak;\n\t\tcase close:\n\t\t\tif (--parenthesis < 0) return;\n\t\t\tbreak;\n\t\tdefault: for (const separator of separators) {\n\t\t\tconst separatorLength = separator.length;\n\t\t\tif (separatorLength && separator === str.slice(i, i + separatorLength) && parenthesis === 0) {\n\t\t\t\tif (i === 0 || i === l - separatorLength) return;\n\t\t\t\treturn [str.slice(0, i), str.slice(i + separatorLength)];\n\t\t\t}\n\t\t}\n\t}\n\treturn [str, \"\"];\n}\nfunction getStringComponents(str, separators, limit, open = \"(\", close = \")\") {\n\tlimit = limit ?? 10;\n\tconst components = [];\n\tlet i = 0;\n\twhile (str !== \"\") {\n\t\tif (++i > limit) return;\n\t\tconst componentPair = getStringComponent(str, open, close, separators);\n\t\tif (!componentPair) return;\n\t\tconst [component, rest] = componentPair;\n\t\tcomponents.push(component);\n\t\tstr = rest;\n\t}\n\tif (components.length > 0) return components;\n}\n//#endregion\n//#region src/colors.ts\nconst cssColorFunctions = [\n\t\"hsl\",\n\t\"hsla\",\n\t\"hwb\",\n\t\"lab\",\n\t\"lch\",\n\t\"oklab\",\n\t\"oklch\",\n\t\"rgb\",\n\t\"rgba\"\n];\nconst rectangularColorSpace = [\n\t\"srgb\",\n\t\"srgb-linear\",\n\t\"display-p3\",\n\t\"a98-rgb\",\n\t\"prophoto-rgb\",\n\t\"rec2020\",\n\t\"lab\",\n\t\"oklab\",\n\t\"xyz\",\n\t\"xyz-d50\",\n\t\"xyz-d65\"\n];\nconst polarColorSpace = [\n\t\"hsl\",\n\t\"hwb\",\n\t\"lch\",\n\t\"oklch\"\n];\nconst hueInterpolationMethods = [\n\t\"shorter\",\n\t\"longer\",\n\t\"increasing\",\n\t\"decreasing\"\n];\nconst alphaPlaceholders = [\"%alpha\", \"<alpha-value>\"];\nconst alphaPlaceholdersRE = new RegExp(alphaPlaceholders.map((v) => escapeRegExp(v)).join(\"|\"), \"g\");\nfunction isInterpolatedMethod(type) {\n\tif (!type) return false;\n\treturn rectangularColorSpace.some((space) => type.includes(space)) || polarColorSpace.some((space) => type.includes(space)) || hueInterpolationMethods.some((method) => type.includes(method));\n}\nfunction hex2rgba(hex = \"\") {\n\tconst color = parseHexColor(hex);\n\tif (color != null) {\n\t\tconst { components, alpha } = color;\n\t\tif (alpha == null) return components;\n\t\treturn [...components, alpha];\n\t}\n}\nfunction parseCssColor(str = \"\") {\n\tconst color = parseColor(str);\n\tif (color == null || color === false) return;\n\tconst { type: casedType, components, alpha } = color;\n\tconst type = casedType.toLowerCase();\n\tif (components.length === 0) return;\n\tif (cssColorFunctions.includes(type) && ![1, 3].includes(components.length)) return;\n\treturn {\n\t\ttype,\n\t\tcomponents: components.map((c) => typeof c === \"string\" ? c.trim() : c),\n\t\talpha: typeof alpha === \"string\" ? alpha.trim() : alpha\n\t};\n}\nfunction colorOpacityToString(color) {\n\tconst alpha = color.alpha ?? 1;\n\treturn typeof alpha === \"string\" && alphaPlaceholders.includes(alpha) ? 1 : alpha;\n}\nfunction colorToString(color, alphaOverride) {\n\tif (typeof color === \"string\") return color.replace(alphaPlaceholdersRE, `${alphaOverride ?? 1}`);\n\tconst { components } = color;\n\tlet { alpha, type } = color;\n\talpha = alphaOverride ?? alpha;\n\ttype = type.toLowerCase();\n\tif ([\"hsla\", \"rgba\"].includes(type)) return `${type}(${components.join(\", \")}${alpha == null ? \"\" : `, ${alpha}`})`;\n\talpha = alpha == null ? \"\" : ` / ${alpha}`;\n\tif (cssColorFunctions.includes(type)) return `${type}(${components.join(\" \")}${alpha})`;\n\treturn `color(${type} ${components.join(\" \")}${alpha})`;\n}\nfunction parseColor(str) {\n\tif (!str) return;\n\tlet color = parseHexColor(str);\n\tif (color != null) return color;\n\tcolor = cssColorKeyword(str);\n\tif (color != null) return color;\n\tcolor = parseCssCommaColorFunction(str);\n\tif (color != null) return color;\n\tcolor = parseCssSpaceColorFunction(str);\n\tif (color != null) return color;\n\tcolor = parseCssColorFunction(str);\n\tif (color != null) return color;\n}\nfunction parseHexColor(str) {\n\tconst [, body] = str.match(/^#([\\da-f]+)$/i) || [];\n\tif (!body) return;\n\tswitch (body.length) {\n\t\tcase 3:\n\t\tcase 4: {\n\t\t\tconst digits = Array.from(body, (s) => Number.parseInt(s, 16)).map((n) => n << 4 | n);\n\t\t\treturn {\n\t\t\t\ttype: \"rgb\",\n\t\t\t\tcomponents: digits.slice(0, 3),\n\t\t\t\talpha: body.length === 3 ? void 0 : Math.round(digits[3] / 255 * 100) / 100\n\t\t\t};\n\t\t}\n\t\tcase 6:\n\t\tcase 8: {\n\t\t\tconst value = Number.parseInt(body, 16);\n\t\t\treturn {\n\t\t\t\ttype: \"rgb\",\n\t\t\t\tcomponents: body.length === 6 ? [\n\t\t\t\t\tvalue >> 16 & 255,\n\t\t\t\t\tvalue >> 8 & 255,\n\t\t\t\t\tvalue & 255\n\t\t\t\t] : [\n\t\t\t\t\tvalue >> 24 & 255,\n\t\t\t\t\tvalue >> 16 & 255,\n\t\t\t\t\tvalue >> 8 & 255\n\t\t\t\t],\n\t\t\t\talpha: body.length === 6 ? void 0 : Math.round((value & 255) / 255 * 100) / 100\n\t\t\t};\n\t\t}\n\t}\n}\nfunction cssColorKeyword(str) {\n\tconst color = { rebeccapurple: [\n\t\t102,\n\t\t51,\n\t\t153,\n\t\t1\n\t] }[str];\n\tif (color != null) return {\n\t\ttype: \"rgb\",\n\t\tcomponents: color.slice(0, 3),\n\t\talpha: color[3]\n\t};\n}\nfunction parseCssCommaColorFunction(color) {\n\tconst match = color.match(/^(rgb|rgba|hsl|hsla)\\((.+)\\)$/i);\n\tif (!match) return;\n\tconst [, type, componentString] = match;\n\tconst components = getStringComponents(componentString, \",\", 5);\n\tif (components) {\n\t\tif ([3, 4].includes(components.length)) return {\n\t\t\ttype,\n\t\t\tcomponents: components.slice(0, 3),\n\t\t\talpha: components[3]\n\t\t};\n\t\telse if (components.length !== 1) return false;\n\t}\n}\nconst cssColorFunctionsRe = new RegExp(`^(${cssColorFunctions.join(\"|\")})\\\\((.+)\\\\)$`, \"i\");\nfunction parseCssSpaceColorFunction(color) {\n\tconst match = color.match(cssColorFunctionsRe);\n\tif (!match) return;\n\tconst [, fn, componentString] = match;\n\tconst parsed = parseCssSpaceColorValues(`${fn} ${componentString}`);\n\tif (parsed) {\n\t\tconst { alpha, components: [type, ...components] } = parsed;\n\t\treturn {\n\t\t\ttype,\n\t\t\tcomponents,\n\t\t\talpha\n\t\t};\n\t}\n}\nfunction parseCssColorFunction(color) {\n\tconst match = color.match(/^color\\((.+)\\)$/);\n\tif (!match) return;\n\tconst parsed = parseCssSpaceColorValues(match[1]);\n\tif (parsed) {\n\t\tconst { alpha, components: [type, ...components] } = parsed;\n\t\treturn {\n\t\t\ttype,\n\t\t\tcomponents,\n\t\t\talpha\n\t\t};\n\t}\n}\nfunction parseCssSpaceColorValues(componentString) {\n\tconst components = getStringComponents(componentString, \" \");\n\tif (!components) return;\n\tlet totalComponents = components.length;\n\tif (components[totalComponents - 2] === \"/\") return {\n\t\tcomponents: components.slice(0, totalComponents - 2),\n\t\talpha: components[totalComponents - 1]\n\t};\n\tif (components[totalComponents - 2] != null && (components[totalComponents - 2].endsWith(\"/\") || components[totalComponents - 1].startsWith(\"/\"))) {\n\t\tconst removed = components.splice(totalComponents - 2);\n\t\tcomponents.push(removed.join(\" \"));\n\t\t--totalComponents;\n\t}\n\tconst withAlpha = getStringComponents(components[totalComponents - 1], \"/\", 2);\n\tif (!withAlpha) return;\n\tif (withAlpha.length === 1 || withAlpha[withAlpha.length - 1] === \"\") return { components };\n\tconst alpha = withAlpha.pop();\n\tcomponents[totalComponents - 1] = withAlpha.join(\"/\");\n\treturn {\n\t\tcomponents,\n\t\talpha\n\t};\n}\n//#endregion\n//#region src/directive.ts\nconst themeFnRE = /theme\\(\\s*(['\"])?(.*?)\\1?\\s*\\)/g;\nfunction hasThemeFn(str) {\n\treturn str.includes(\"theme(\") && str.includes(\")\");\n}\nfunction transformThemeFn(code, theme, throwOnMissing = true) {\n\tconst matches = Array.from(code.toString().matchAll(themeFnRE));\n\tif (!matches.length) return code;\n\tconst s = new MagicString(code);\n\tfor (const match of matches) {\n\t\tconst rawArg = match[2];\n\t\tif (!rawArg) throw new Error(\"theme() expect exact one argument, but got 0\");\n\t\tconst value = transformThemeString(rawArg, theme, throwOnMissing);\n\t\tif (value) s.overwrite(match.index, match.index + match[0].length, value);\n\t}\n\treturn s.toString();\n}\nfunction transformThemeString(code, theme, throwOnMissing = true) {\n\tconst [rawKey, alpha] = code.split(\"/\");\n\tlet value = rawKey.trim().split(\".\").reduce((t, k) => t?.[k], theme);\n\tif (typeof value === \"object\") value = value.DEFAULT;\n\tif (typeof value === \"string\") {\n\t\tif (alpha) {\n\t\t\tconst color = parseCssColor(value);\n\t\t\tif (color) value = colorToString(color, alpha);\n\t\t}\n\t\treturn value;\n\t} else if (throwOnMissing) throw new Error(`theme of \"${code}\" did not found`);\n}\nfunction calcMaxWidthBySize(size) {\n\tconst value = size.match(/^-?\\d+\\.?\\d*/)?.[0] || \"\";\n\tconst unit = size.slice(value.length);\n\tif (unit === \"px\") {\n\t\tconst maxWidth = Number.parseFloat(value) - .1;\n\t\treturn Number.isNaN(maxWidth) ? size : `${maxWidth}${unit}`;\n\t}\n\treturn `calc(${size} - 0.1px)`;\n}\n//#endregion\n//#region src/handlers.ts\nfunction createValueHandler(handlers) {\n\tconst handler = function(str, theme) {\n\t\tconst s = this.__options?.sequence || [];\n\t\tthis.__options.sequence = [];\n\t\tfor (const n of s) {\n\t\t\tconst res = handlers[n](str, theme);\n\t\t\tif (res != null) return res;\n\t\t}\n\t};\n\tfunction addProcessor(that, name) {\n\t\tif (!that.__options) that.__options = { sequence: [] };\n\t\tthat.__options.sequence.push(name);\n\t\treturn that;\n\t}\n\tfor (const name of Object.keys(handlers)) Object.defineProperty(handler, name, {\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn addProcessor(this, name);\n\t\t}\n\t});\n\treturn handler;\n}\n//#endregion\n//#region src/icon.ts\nconst iconFnRE = /icon\\(\\s*(['\"])?(.*?)\\1?\\s*\\)/g;\nfunction hasIconFn(str) {\n\treturn str.includes(\"icon(\") && str.includes(\")\");\n}\n//#endregion\n//#region src/pseudo.ts\nconst PseudoPlaceholder = \"__pseudo_placeholder__\";\n/**\n* Note: the order of following pseudo classes will affect the order of generated css.\n*\n* Reference: https://github.com/tailwindlabs/tailwindcss/blob/main/src/corePlugins.js#L83\n*/\nconst PseudoClasses = Object.fromEntries([\n\t[\"first-letter\", \"::first-letter\"],\n\t[\"first-line\", \"::first-line\"],\n\t\"any-link\",\n\t\"link\",\n\t\"visited\",\n\t\"target\",\n\t[\"open\", \":is([open],:popover-open,:open)\"],\n\t\"default\",\n\t\"checked\",\n\t\"indeterminate\",\n\t\"placeholder-shown\",\n\t\"autofill\",\n\t\"optional\",\n\t\"required\",\n\t\"valid\",\n\t\"invalid\",\n\t\"user-valid\",\n\t\"user-invalid\",\n\t\"in-range\",\n\t\"out-of-range\",\n\t\"read-only\",\n\t\"read-write\",\n\t\"empty\",\n\t\"focus-within\",\n\t\"hover\",\n\t\"focus\",\n\t\"focus-visible\",\n\t\"active\",\n\t\"enabled\",\n\t\"disabled\",\n\t\"popover-open\",\n\t\"root\",\n\t\"empty\",\n\t[\"even-of-type\", \":nth-of-type(even)\"],\n\t[\"even\", \":nth-child(even)\"],\n\t[\"odd-of-type\", \":nth-of-type(odd)\"],\n\t[\"odd\", \":nth-child(odd)\"],\n\t[\"nth\", `:nth-child(${PseudoPlaceholder})`],\n\t[\"nth-last\", `:nth-last-child(${PseudoPlaceholder})`],\n\t[\"nth-last-of-type\", `:nth-last-of-type(${PseudoPlaceholder})`],\n\t[\"nth-of-type\", `:nth-of-type(${PseudoPlaceholder})`],\n\t\"first-of-type\",\n\t[\"first\", \":first-child\"],\n\t\"last-of-type\",\n\t[\"last\", \":last-child\"],\n\t\"only-child\",\n\t\"only-of-type\",\n\t[\"backdrop-element\", \"::backdrop\"],\n\t[\"placeholder\", \"::placeholder\"],\n\t[\"before\", \"::before\"],\n\t[\"after\", \"::after\"],\n\t[\"file\", \"::file-selector-button\"],\n\t[\"details-content\", \"::details-content\"]\n].map((key) => Array.isArray(key) ? key : [key, `:${key}`]));\nconst PseudoClassesKeys = Object.keys(PseudoClasses);\nconst PseudoClassesColon = Object.fromEntries([[\"backdrop\", \"::backdrop\"]].map((key) => Array.isArray(key) ? key : [key, `:${key}`]));\nconst PseudoClassesColonKeys = Object.keys(PseudoClassesColon);\nconst PseudoClassFunctions = [\n\t\"not\",\n\t\"is\",\n\t\"where\",\n\t\"has\"\n];\nconst PseudoClassesMulti = Object.fromEntries([[\"selection\", [\"::selection\", \" *::selection\"]], [\"marker\", [\"::marker\", \" *::marker\"]]]);\nconst PseudoClassesStr = Object.entries(PseudoClasses).filter(([, pseudo]) => !pseudo.startsWith(\"::\")).map(([key]) => key).sort((a, b) => b.length - a.length).join(\"|\");\nconst PseudoClassesColonStr = Object.entries(PseudoClassesColon).filter(([, pseudo]) => !pseudo.startsWith(\"::\")).map(([key]) => key).sort((a, b) => b.length - a.length).join(\"|\");\nconst PseudoClassFunctionsStr = PseudoClassFunctions.join(\"|\");\nconst PseudoClassesMultiStr = Object.keys(PseudoClassesMulti).sort((a, b) => b.length - a.length).join(\"|\");\nconst excludedPseudo = [\n\t\"::-webkit-resizer\",\n\t\"::-webkit-scrollbar\",\n\t\"::-webkit-scrollbar-button\",\n\t\"::-webkit-scrollbar-corner\",\n\t\"::-webkit-scrollbar-thumb\",\n\t\"::-webkit-scrollbar-track\",\n\t\"::-webkit-scrollbar-track-piece\",\n\t\"::file-selector-button\"\n];\nconst PseudoClassesAndElementsStr = Object.entries(PseudoClasses).map(([key]) => key).sort((a, b) => b.length - a.length).join(\"|\");\nconst PseudoClassesAndElementsColonStr = Object.entries(PseudoClassesColon).map(([key]) => key).sort((a, b) => b.length - a.length).join(\"|\");\nfunction createTaggedPseudoClassMatcher(tag, parent, combinator, utils) {\n\tconst { h, variantGetBracket } = utils;\n\tconst rawRE = new RegExp(`^(${escapeRegExp(parent)}:)(\\\\S+)${escapeRegExp(combinator)}\\\\1`);\n\tlet splitRE;\n\tlet pseudoRE;\n\tlet pseudoColonRE;\n\tlet pseudoVarRE;\n\tconst matchBracket = (input) => {\n\t\tconst body = variantGetBracket(`${tag}-`, input, []);\n\t\tif (!body) return;\n\t\tconst [match, rest] = body;\n\t\tconst bracketValue = h.bracket(match);\n\t\tif (bracketValue == null) return;\n\t\tconst label = rest.split(splitRE, 1)?.[0] ?? \"\";\n\t\tconst prefix = `${parent}${escapeSelector(label)}`;\n\t\treturn [\n\t\t\tlabel,\n\t\t\tinput.slice(input.length - (rest.length - label.length - 1)),\n\t\t\tbracketValue.includes(\"&\") ? bracketValue.replace(/&/g, prefix) : `${prefix}${bracketValue}`\n\t\t];\n\t};\n\tconst matchPseudo = (input) => {\n\t\tconst match = input.match(pseudoRE) || input.match(pseudoColonRE);\n\t\tif (!match) return;\n\t\tconst [original, fn, pseudoKey] = match;\n\t\tconst label = match[3] ?? \"\";\n\t\tlet pseudo = PseudoClasses[pseudoKey] || PseudoClassesColon[pseudoKey] || `:${pseudoKey}`;\n\t\tif (fn) pseudo = `:${fn}(${pseudo})`;\n\t\treturn [\n\t\t\tlabel,\n\t\t\tinput.slice(original.length),\n\t\t\t`${parent}${escapeSelector(label)}${pseudo}`,\n\t\t\tpseudoKey\n\t\t];\n\t};\n\tconst matchPseudoVar = (input) => {\n\t\tconst match = input.match(pseudoVarRE);\n\t\tif (!match) return;\n\t\tconst [original, fn, pseudoValue] = match;\n\t\tconst label = match[3] ?? \"\";\n\t\tconst pseudo = `:${fn}(${pseudoValue})`;\n\t\treturn [\n\t\t\tlabel,\n\t\t\tinput.slice(original.length),\n\t\t\t`${parent}${escapeSelector(label)}${pseudo}`\n\t\t];\n\t};\n\treturn {\n\t\tname: `pseudo:${tag}`,\n\t\tmatch(input, ctx) {\n\t\t\tif (!(splitRE && pseudoRE && pseudoColonRE)) {\n\t\t\t\tsplitRE = new RegExp(`(?:${ctx.generator.config.separators.join(\"|\")})`);\n\t\t\t\tpseudoRE = new RegExp(`^${tag}-(?:(?:(${PseudoClassFunctionsStr})-)?(${PseudoClassesStr}))(?:(/[\\\\w-]+))?(?:${ctx.generator.config.separators.join(\"|\")})`);\n\t\t\t\tpseudoColonRE = new RegExp(`^${tag}-(?:(?:(${PseudoClassFunctionsStr})-)?(${PseudoClassesColonStr}))(?:(/[\\\\w-]+))?(?:${ctx.generator.config.separators.filter((x) => x !== \"-\").join(\"|\")})`);\n\t\t\t\tpseudoVarRE = new RegExp(`^${tag}-(?:(${PseudoClassFunctionsStr})-)?\\\\[(.+)\\\\](?:(/[\\\\w-]+))?(?:${ctx.generator.config.separators.filter((x) => x !== \"-\").join(\"|\")})`);\n\t\t\t}\n\t\t\tif (!input.startsWith(tag)) return;\n\t\t\tconst result = matchBracket(input) || matchPseudo(input) || matchPseudoVar(input);\n\t\t\tif (!result) return;\n\t\t\tconst [_label, matcher, prefix, pseudoName = \"\"] = result;\n\t\t\treturn {\n\t\t\t\tmatcher,\n\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t...input,\n\t\t\t\t\tprefix: `${prefix}${combinator}${input.prefix}`.replace(rawRE, \"$1$2:\"),\n\t\t\t\t\tsort: PseudoClassesKeys.indexOf(pseudoName) ?? PseudoClassesColonKeys.indexOf(pseudoName)\n\t\t\t\t})\n\t\t\t};\n\t\t},\n\t\tmultiPass: true\n\t};\n}\nfunction createPseudoClassesAndElements(utils) {\n\tconst { h } = utils;\n\tlet PseudoClassesAndElementsRE;\n\tlet PseudoClassesAndElementsColonRE;\n\tlet PseudoClassesMultiRE;\n\treturn [{\n\t\tname: \"pseudo\",\n\t\tmatch(input, ctx) {\n\t\t\tif (!(PseudoClassesAndElementsRE && PseudoClassesAndElementsColonRE)) {\n\t\t\t\tPseudoClassesAndElementsRE = new RegExp(`^(${PseudoClassesAndElementsStr})(?:-(\\\\d+|\\\\[(\\\\w|[+-.])+\\\\]))?(?:${ctx.generator.config.separators.join(\"|\")})`);\n\t\t\t\tPseudoClassesAndElementsColonRE = new RegExp(`^(${PseudoClassesAndElementsColonStr})(?:${ctx.generator.config.separators.filter((x) => x !== \"-\").join(\"|\")})`);\n\t\t\t}\n\t\t\tconst match = input.match(PseudoClassesAndElementsRE) || input.match(PseudoClassesAndElementsColonRE);\n\t\t\tif (match) {\n\t\t\t\tlet pseudo = PseudoClasses[match[1]] || PseudoClassesColon[match[1]] || `:${match[1]}`;\n\t\t\t\tif (match[2]) {\n\t\t\t\t\tlet anPlusB;\n\t\t\t\t\tif (match[2].startsWith(\"[\") && match[2].endsWith(\"]\")) anPlusB = h.bracket(match[2]);\n\t\t\t\t\telse anPlusB = match[2];\n\t\t\t\t\tif (anPlusB) pseudo = pseudo.replace(PseudoPlaceholder, anPlusB);\n\t\t\t\t}\n\t\t\t\tlet index = PseudoClassesKeys.indexOf(match[1]);\n\t\t\t\tif (index === -1) index = PseudoClassesColonKeys.indexOf(match[1]);\n\t\t\t\tif (index === -1) index = void 0;\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: input.slice(match[0].length),\n\t\t\t\t\thandle: (input, next) => {\n\t\t\t\t\t\tconst selectors = pseudo.includes(\"::\") && !excludedPseudo.includes(pseudo) ? { pseudo: `${input.pseudo}${pseudo}` } : { selector: `${input.selector}${pseudo}` };\n\t\t\t\t\t\treturn next({\n\t\t\t\t\t\t\t...input,\n\t\t\t\t\t\t\t...selectors,\n\t\t\t\t\t\t\tsort: index,\n\t\t\t\t\t\t\tnoMerge: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tmultiPass: true,\n\t\tautocomplete: `(${PseudoClassesAndElementsStr}|${PseudoClassesAndElementsColonStr}):`\n\t}, {\n\t\tname: \"pseudo:multi\",\n\t\tmatch(input, ctx) {\n\t\t\tif (!PseudoClassesMultiRE) PseudoClassesMultiRE = new RegExp(`^(${PseudoClassesMultiStr})(?:${ctx.generator.config.separators.join(\"|\")})`);\n\t\t\tconst match = input.match(PseudoClassesMultiRE);\n\t\t\tif (match) return PseudoClassesMulti[match[1]].map((pseudo) => {\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: input.slice(match[0].length),\n\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t...input,\n\t\t\t\t\t\tpseudo: `${input.pseudo}${pseudo}`\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\tmultiPass: false,\n\t\tautocomplete: `(${PseudoClassesMultiStr}):`\n\t}];\n}\nfunction createPseudoClassFunctions(utils) {\n\tconst { getBracket, h } = utils;\n\tlet PseudoClassFunctionsRE;\n\tlet PseudoClassColonFunctionsRE;\n\tlet PseudoClassVarFunctionRE;\n\treturn {\n\t\tmatch(input, ctx) {\n\t\t\tif (!(PseudoClassFunctionsRE && PseudoClassColonFunctionsRE)) {\n\t\t\t\tPseudoClassFunctionsRE = new RegExp(`^(${PseudoClassFunctionsStr})-(${PseudoClassesStr})(?:${ctx.generator.config.separators.join(\"|\")})`);\n\t\t\t\tPseudoClassColonFunctionsRE = new RegExp(`^(${PseudoClassFunctionsStr})-(${PseudoClassesColonStr})(?:${ctx.generator.config.separators.filter((x) => x !== \"-\").join(\"|\")})`);\n\t\t\t\tPseudoClassVarFunctionRE = new RegExp(`^(${PseudoClassFunctionsStr})-(\\\\[.+\\\\])(?:${ctx.generator.config.separators.filter((x) => x !== \"-\").join(\"|\")})`);\n\t\t\t}\n\t\t\tconst match = input.match(PseudoClassFunctionsRE) || input.match(PseudoClassColonFunctionsRE) || input.match(PseudoClassVarFunctionRE);\n\t\t\tif (match) {\n\t\t\t\tconst fn = match[1];\n\t\t\t\tconst pseudo = getBracket(match[2], \"[\", \"]\") ? h.bracket(match[2]) : PseudoClasses[match[2]] || PseudoClassesColon[match[2]] || `:${match[2]}`;\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: input.slice(match[0].length),\n\t\t\t\t\tselector: (s) => `${s}:${fn}(${pseudo})`\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tmultiPass: true,\n\t\tautocomplete: `(${PseudoClassFunctionsStr})-(${PseudoClassesStr}|${PseudoClassesColonStr}):`\n\t};\n}\nfunction createTaggedPseudoClasses(options, utils) {\n\tconst attributify = !!options?.attributifyPseudo;\n\tlet firstPrefix = options?.prefix ?? \"\";\n\tfirstPrefix = escapeSelector((Array.isArray(firstPrefix) ? firstPrefix : [firstPrefix]).filter(Boolean)[0] ?? \"\");\n\tconst tagWithPrefix = (tag, combinator) => createTaggedPseudoClassMatcher(tag, attributify ? `[${firstPrefix}${tag}=\"\"]` : `.${firstPrefix}${tag}`, combinator, utils);\n\treturn [\n\t\ttagWithPrefix(\"group\", \" \"),\n\t\ttagWithPrefix(\"peer\", \"~\"),\n\t\ttagWithPrefix(\"parent\", \">\"),\n\t\ttagWithPrefix(\"previous\", \"+\")\n\t];\n}\nconst PartClassesRE = /(part-\\[(.+)\\]:)(.+)/;\nfunction createPartClasses() {\n\treturn {\n\t\tmatch(input) {\n\t\t\tconst match = input.match(PartClassesRE);\n\t\t\tif (match) {\n\t\t\t\tconst part = `part(${match[2]})`;\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: input.slice(match[1].length),\n\t\t\t\t\tselector: (s) => `${s}::${part}`\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tmultiPass: true\n\t};\n}\n//#endregion\n//#region src/variants.ts\nfunction variantMatcher(name, handler, options = {}) {\n\tlet re;\n\treturn {\n\t\tname,\n\t\tmatch(input, ctx) {\n\t\t\tif (!re) re = new RegExp(`^${escapeRegExp(name)}(?:${ctx.generator.config.separators.join(\"|\")})`);\n\t\t\tconst match = input.match(re);\n\t\t\tif (match) {\n\t\t\t\tconst matcher = input.slice(match[0].length);\n\t\t\t\tconst handlers = toArray(handler).map((handler) => ({\n\t\t\t\t\tmatcher,\n\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t...input,\n\t\t\t\t\t\t...handler(input)\n\t\t\t\t\t}),\n\t\t\t\t\t...options\n\t\t\t\t}));\n\t\t\t\treturn handlers.length === 1 ? handlers[0] : handlers;\n\t\t\t}\n\t\t},\n\t\tautocomplete: `${name}:`\n\t};\n}\nfunction variantParentMatcher(name, parent) {\n\tlet re;\n\treturn {\n\t\tname,\n\t\tmatch(input, ctx) {\n\t\t\tif (!re) re = new RegExp(`^${escapeRegExp(name)}(?:${ctx.generator.config.separators.join(\"|\")})`);\n\t\t\tconst match = input.match(re);\n\t\t\tif (match) return {\n\t\t\t\tmatcher: input.slice(match[0].length),\n\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t...input,\n\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}${parent}`\n\t\t\t\t})\n\t\t\t};\n\t\t},\n\t\tautocomplete: `${name}:`\n\t};\n}\nfunction variantGetBracket(prefix, matcher, separators) {\n\tif (matcher.startsWith(`${prefix}[`)) {\n\t\tconst [match, rest] = getBracket(matcher.slice(prefix.length), \"[\", \"]\") ?? [];\n\t\tif (match && rest) {\n\t\t\tfor (const separator of separators) if (rest.startsWith(separator)) return [\n\t\t\t\tmatch,\n\t\t\t\trest.slice(separator.length),\n\t\t\t\tseparator\n\t\t\t];\n\t\t\treturn [\n\t\t\t\tmatch,\n\t\t\t\trest,\n\t\t\t\t\"\"\n\t\t\t];\n\t\t}\n\t}\n}\nfunction variantGetParameter(prefix, matcher, separators) {\n\tfor (const p of toArray(prefix)) if (matcher.startsWith(p)) {\n\t\tconst body = variantGetBracket(p, matcher, separators);\n\t\tif (body) {\n\t\t\tconst [label = \"\", rest = body[1]] = variantGetParameter(\"/\", body[1], separators) ?? [];\n\t\t\treturn [\n\t\t\t\tbody[0],\n\t\t\t\trest,\n\t\t\t\tlabel\n\t\t\t];\n\t\t}\n\t\tfor (const separator of separators.filter((x) => x !== \"/\")) {\n\t\t\tconst pos = matcher.indexOf(separator, p.length);\n\t\t\tif (pos !== -1) {\n\t\t\t\tconst labelPos = matcher.indexOf(\"/\", p.length);\n\t\t\t\tconst unlabelled = labelPos === -1 || pos <= labelPos;\n\t\t\t\treturn [\n\t\t\t\t\tmatcher.slice(p.length, unlabelled ? pos : labelPos),\n\t\t\t\t\tmatcher.slice(pos + separator.length),\n\t\t\t\t\tunlabelled ? \"\" : matcher.slice(labelPos + 1, pos)\n\t\t\t\t];\n\t\t\t}\n\t\t}\n\t}\n}\n//#endregion\nexport { PseudoClassFunctions, PseudoClassFunctionsStr, PseudoClasses, PseudoClassesAndElementsColonStr, PseudoClassesAndElementsStr, PseudoClassesColon, PseudoClassesColonKeys, PseudoClassesColonStr, PseudoClassesKeys, PseudoClassesMulti, PseudoClassesMultiStr, PseudoClassesStr, alphaPlaceholders, alphaPlaceholdersRE, calcMaxWidthBySize, colorOpacityToString, colorToString, createPartClasses, createPseudoClassFunctions, createPseudoClassesAndElements, createTaggedPseudoClassMatcher, createTaggedPseudoClasses, createValueHandler, cssColorFunctions, excludedPseudo, getBracket, getStringComponent, getStringComponents, hasIconFn, hasThemeFn, hex2rgba, hueInterpolationMethods, iconFnRE, isInterpolatedMethod, parseCssColor, polarColorSpace, rectangularColorSpace, themeFnRE, transformThemeFn, transformThemeString, variantGetBracket, variantGetParameter, variantMatcher, variantParentMatcher };\n",
|
|
33
|
+
"import { t as __exportAll } from \"./rolldown-runtime-BBjsoOtd.mjs\";\nimport { escapeSelector, symbols, toArray } from \"@unocss/core\";\nimport { colorToString, createValueHandler, getStringComponent, getStringComponents, isInterpolatedMethod, parseCssColor, transformThemeFn } from \"@unocss/rule-utils\";\n//#region src/utils/constant.ts\nconst PRESET_NAME = \"@unocss/preset-wind4\";\nconst CONTROL_NO_NEGATIVE = \"$$mini-no-negative\";\nconst SpecialColorKey = {\n\ttransparent: \"transparent\",\n\tcurrent: \"currentColor\",\n\tinherit: \"inherit\"\n};\n//#endregion\n//#region src/utils/mappings.ts\nconst directionMap = {\n\t\"l\": [\"-left\"],\n\t\"r\": [\"-right\"],\n\t\"t\": [\"-top\"],\n\t\"b\": [\"-bottom\"],\n\t\"s\": [\"-inline-start\"],\n\t\"e\": [\"-inline-end\"],\n\t\"x\": [\"-inline\"],\n\t\"y\": [\"-block\"],\n\t\"\": [\"\"],\n\t\"bs\": [\"-block-start\"],\n\t\"be\": [\"-block-end\"],\n\t\"is\": [\"-inline-start\"],\n\t\"ie\": [\"-inline-end\"],\n\t\"block\": [\"-block-start\", \"-block-end\"],\n\t\"inline\": [\"-inline-start\", \"-inline-end\"]\n};\nconst insetMap = {\n\t...directionMap,\n\tx: [\"-inset-inline\"],\n\ty: [\"-inset-block\"],\n\ts: [\"-inset-inline-start\"],\n\tstart: [\"-inset-inline-start\"],\n\te: [\"-inset-inline-end\"],\n\tend: [\"-inset-inline-end\"],\n\tbs: [\"-inset-block-start\"],\n\tbe: [\"-inset-block-end\"],\n\tis: [\"-inset-inline-start\"],\n\tie: [\"-inset-inline-end\"],\n\tblock: [\"-inset-block-start\", \"-inset-block-end\"],\n\tinline: [\"-inset-inline-start\", \"-inset-inline-end\"]\n};\nconst cornerMap = {\n\t\"l\": [\"-top-left\", \"-bottom-left\"],\n\t\"r\": [\"-top-right\", \"-bottom-right\"],\n\t\"t\": [\"-top-left\", \"-top-right\"],\n\t\"b\": [\"-bottom-left\", \"-bottom-right\"],\n\t\"tl\": [\"-top-left\"],\n\t\"lt\": [\"-top-left\"],\n\t\"tr\": [\"-top-right\"],\n\t\"rt\": [\"-top-right\"],\n\t\"bl\": [\"-bottom-left\"],\n\t\"lb\": [\"-bottom-left\"],\n\t\"br\": [\"-bottom-right\"],\n\t\"rb\": [\"-bottom-right\"],\n\t\"\": [\"\"],\n\t\"bs\": [\"-start-start\", \"-start-end\"],\n\t\"be\": [\"-end-start\", \"-end-end\"],\n\t\"s\": [\"-end-start\", \"-start-start\"],\n\t\"is\": [\"-end-start\", \"-start-start\"],\n\t\"e\": [\"-start-end\", \"-end-end\"],\n\t\"ie\": [\"-start-end\", \"-end-end\"],\n\t\"ss\": [\"-start-start\"],\n\t\"bs-is\": [\"-start-start\"],\n\t\"is-bs\": [\"-start-start\"],\n\t\"se\": [\"-start-end\"],\n\t\"bs-ie\": [\"-start-end\"],\n\t\"ie-bs\": [\"-start-end\"],\n\t\"es\": [\"-end-start\"],\n\t\"be-is\": [\"-end-start\"],\n\t\"is-be\": [\"-end-start\"],\n\t\"ee\": [\"-end-end\"],\n\t\"be-ie\": [\"-end-end\"],\n\t\"ie-be\": [\"-end-end\"]\n};\nconst xyzMap = {\n\t\"x\": [\"-x\"],\n\t\"y\": [\"-y\"],\n\t\"z\": [\"-z\"],\n\t\"\": [\"-x\", \"-y\"]\n};\nconst xyzArray = [\n\t\"x\",\n\t\"y\",\n\t\"z\"\n];\nconst basePositionMap = [\n\t\"top\",\n\t\"top center\",\n\t\"top left\",\n\t\"top right\",\n\t\"bottom\",\n\t\"bottom center\",\n\t\"bottom left\",\n\t\"bottom right\",\n\t\"left\",\n\t\"left center\",\n\t\"left top\",\n\t\"left bottom\",\n\t\"right\",\n\t\"right center\",\n\t\"right top\",\n\t\"right bottom\",\n\t\"center\",\n\t\"center top\",\n\t\"center bottom\",\n\t\"center left\",\n\t\"center right\",\n\t\"center center\"\n];\nconst positionMap = Object.assign({}, ...basePositionMap.map((p) => ({ [p.replace(/ /, \"-\")]: p })), ...basePositionMap.map((p) => ({ [p.replace(/\\b(\\w)\\w+/g, \"$1\").replace(/ /, \"\")]: p })));\nconst globalKeywords = [\n\t\"inherit\",\n\t\"initial\",\n\t\"revert\",\n\t\"revert-layer\",\n\t\"unset\"\n];\nconst cssMathFnRE = /^(calc|clamp|min|max)\\s*\\((.+)\\)(.*)/;\nconst cssVarFnRE = /^(var)\\s*\\((.+)\\)(.*)/;\n//#endregion\n//#region src/utils/handlers/regex.ts\nconst numberWithUnitRE = /^(-?\\d*(?:\\.\\d+)?)(px|pt|pc|%|r?(?:em|ex|lh|cap|ch|ic)|(?:[sld]?v|cq)(?:[whib]|min|max)|in|cm|mm|rpx)?$/i;\nconst numberRE = /^(-?\\d*(?:\\.\\d+)?)$/;\nconst unitOnlyRE = /^(px|[sld]?v[wh])$/i;\nconst unitOnlyMap = {\n\tpx: 1,\n\tvw: 100,\n\tvh: 100,\n\tsvw: 100,\n\tsvh: 100,\n\tdvw: 100,\n\tdvh: 100,\n\tlvh: 100,\n\tlvw: 100\n};\nconst bracketTypeRe = /^\\[(color|image|length|size|width|position|quoted|string|number|family):/i;\nconst splitComma = /,(?![^()]*\\))/g;\nconst remRE = /(-?[.\\d]+)rem/g;\nconst cssVarsRE = /(?<!var\\()--([\\w.-]+)(\\([^)]+\\)|,[#.\\s\\w]+)?/g;\n//#endregion\n//#region src/utils/handlers/handlers.ts\nvar handlers_exports = /* @__PURE__ */ __exportAll({\n\tauto: () => auto,\n\tbracket: () => bracket,\n\tbracketOfColor: () => bracketOfColor,\n\tbracketOfFamily: () => bracketOfFamily,\n\tbracketOfLength: () => bracketOfLength,\n\tbracketOfNumber: () => bracketOfNumber,\n\tbracketOfPosition: () => bracketOfPosition,\n\tcssvar: () => cssvar,\n\tdegree: () => degree,\n\tfraction: () => fraction,\n\tglobal: () => global,\n\tnone: () => none,\n\tnumber: () => number,\n\tnumberWithUnit: () => numberWithUnit,\n\tpercent: () => percent,\n\tposition: () => position,\n\tproperties: () => properties,\n\tpx: () => px,\n\trem: () => rem,\n\ttime: () => time\n});\nconst cssProps = [\n\t\"color\",\n\t\"border-color\",\n\t\"background-color\",\n\t\"outline-color\",\n\t\"text-decoration-color\",\n\t\"flex-grow\",\n\t\"flex\",\n\t\"flex-shrink\",\n\t\"grid\",\n\t\"grid-template-columns\",\n\t\"grid-template-rows\",\n\t\"caret-color\",\n\t\"font\",\n\t\"gap\",\n\t\"opacity\",\n\t\"visibility\",\n\t\"z-index\",\n\t\"font-weight\",\n\t\"zoom\",\n\t\"text-shadow\",\n\t\"transform\",\n\t\"box-shadow\",\n\t\"border\",\n\t\"background-position\",\n\t\"left\",\n\t\"right\",\n\t\"top\",\n\t\"bottom\",\n\t\"object-position\",\n\t\"max-height\",\n\t\"min-height\",\n\t\"max-width\",\n\t\"min-width\",\n\t\"height\",\n\t\"width\",\n\t\"border-width\",\n\t\"margin\",\n\t\"padding\",\n\t\"outline-width\",\n\t\"outline-offset\",\n\t\"font-size\",\n\t\"line-height\",\n\t\"text-indent\",\n\t\"vertical-align\",\n\t\"border-spacing\",\n\t\"letter-spacing\",\n\t\"word-spacing\",\n\t\"stroke\",\n\t\"filter\",\n\t\"backdrop-filter\",\n\t\"fill\",\n\t\"mask\",\n\t\"mask-size\",\n\t\"mask-border\",\n\t\"clip-path\",\n\t\"clip\",\n\t\"border-radius\"\n];\nfunction round(n) {\n\treturn +n.toFixed(10);\n}\nfunction numberWithUnit(str) {\n\tconst match = str.match(numberWithUnitRE);\n\tif (!match) return;\n\tconst [, n, unit] = match;\n\tconst num = Number.parseFloat(n);\n\tif (unit && !Number.isNaN(num)) return `${round(num)}${unit}`;\n}\nfunction auto(str) {\n\tif (str === \"auto\" || str === \"a\") return \"auto\";\n}\nfunction rem(str) {\n\tif (!str) return;\n\tif (unitOnlyRE.test(str)) return `${unitOnlyMap[str]}${str}`;\n\tconst match = str.match(numberWithUnitRE);\n\tif (!match) return;\n\tconst [, n, unit] = match;\n\tconst num = Number.parseFloat(n);\n\tif (!Number.isNaN(num)) {\n\t\tif (num === 0) return \"0\";\n\t\treturn unit ? `${round(num)}${unit}` : `${round(num / 4)}rem`;\n\t}\n}\nfunction px(str) {\n\tif (unitOnlyRE.test(str)) return `${unitOnlyMap[str]}${str}`;\n\tconst match = str.match(numberWithUnitRE);\n\tif (!match) return;\n\tconst [, n, unit] = match;\n\tconst num = Number.parseFloat(n);\n\tif (!Number.isNaN(num)) return unit ? `${round(num)}${unit}` : `${round(num)}px`;\n}\nfunction number(str) {\n\tif (!numberRE.test(str)) return;\n\tconst num = Number.parseFloat(str);\n\tif (!Number.isNaN(num)) return round(num);\n}\nfunction percent(str) {\n\tif (str.endsWith(\"%\")) str = str.slice(0, -1);\n\tconst num = number(str);\n\tif (num != null) return `${num}%`;\n}\nfunction fraction(str) {\n\tif (!str) return;\n\tif (str === \"full\") return \"100%\";\n\tconst [left, right] = str.split(\"/\");\n\tconst num = Number.parseFloat(left) / Number.parseFloat(right);\n\tif (!Number.isNaN(num)) {\n\t\tif (num === 0) return \"0\";\n\t\treturn `${round(num * 100)}%`;\n\t}\n}\n/**\n* Process a theme variable reference and retrieve its value and corresponding CSS variable key.\n*\n* @example theme => Theme object\n* @example themeKey => 'colors\n* @example themeKeyPaths => ['blue', '500']\n* @example varPaths => 'colors.blue.500'\n*\n* @returns An object containing the resolved value from the theme and the corresponding CSS variable key.\n*/\nfunction processThemeVariable(theme, themeKey, themeKeyPaths, varPaths) {\n\tconst valOrObj = getThemeByKey(theme, themeKey, themeKeyPaths);\n\tconst hasDefault = typeof valOrObj === \"object\" && \"DEFAULT\" in valOrObj;\n\tif (hasDefault) themeKeyPaths.push(\"DEFAULT\");\n\tconst val = hasDefault ? valOrObj.DEFAULT : valOrObj;\n\tconst varKey = hasDefault && themeKey !== \"spacing\" ? `${varPaths}.DEFAULT` : varPaths;\n\tif (val != null) themeTracking(themeKey, themeKeyPaths.length ? themeKeyPaths : void 0);\n\treturn {\n\t\tval,\n\t\tvarKey\n\t};\n}\nfunction bracketWithType(str, requiredType, theme) {\n\tif (str && str.startsWith(\"[\") && str.endsWith(\"]\")) {\n\t\tlet base;\n\t\tlet hintedType;\n\t\tconst match = str.match(bracketTypeRe);\n\t\tif (!match) base = str.slice(1, -1);\n\t\telse {\n\t\t\tif (!requiredType) hintedType = match[1];\n\t\t\telse if (match[1] !== requiredType) return;\n\t\t\tbase = str.slice(match[0].length, -1);\n\t\t}\n\t\tif (!base) return;\n\t\tif (base === \"=\\\"\\\"\") return;\n\t\tif (theme) base = transformThemeFn(base, theme);\n\t\tconst matches = Array.from(base.matchAll(cssVarsRE));\n\t\tfor (const match of matches) {\n\t\t\tconst [full, varPaths, _value] = match;\n\t\t\tif (theme) {\n\t\t\t\tconst [key, ...paths] = varPaths.split(\".\");\n\t\t\t\tconst { val, varKey } = processThemeVariable(theme, key, paths, varPaths);\n\t\t\t\tif (val != null) {\n\t\t\t\t\tconst cssVar = `--${varKey.replaceAll(\".\", \"-\")}`;\n\t\t\t\t\tif (_value && !_value.startsWith(\",\")) base = base.replace(full, `calc(var(${cssVar}) * ${_value.slice(1, -1)})`);\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst fallback = _value?.slice(1);\n\t\t\t\t\t\tbase = base.replace(full, `var(${cssVar}${fallback ? `, ${fallback}` : \"\"})`);\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbase = base.replace(full, `var(${full})`);\n\t\t}\n\t\tlet curly = 0;\n\t\tfor (const i of base) if (i === \"[\") curly += 1;\n\t\telse if (i === \"]\") {\n\t\t\tcurly -= 1;\n\t\t\tif (curly < 0) return;\n\t\t}\n\t\tif (curly) return;\n\t\tswitch (hintedType) {\n\t\t\tcase \"string\": return base.replace(/(^|[^\\\\])_/g, \"$1 \").replace(/\\\\_/g, \"_\");\n\t\t\tcase \"quoted\": return base.replace(/(^|[^\\\\])_/g, \"$1 \").replace(/\\\\_/g, \"_\").replace(/([\"\\\\])/g, \"\\\\$1\").replace(/^(.+)$/, \"\\\"$1\\\"\");\n\t\t}\n\t\treturn base.replace(/(url\\(.*?\\))/g, (v) => v.replace(/_/g, \"\\\\_\")).replace(/(^|[^\\\\])_/g, \"$1 \").replace(/\\\\_/g, \"_\").replace(/(?:calc|clamp|max|min)\\((.*)/g, (match) => {\n\t\t\tconst vars = [];\n\t\t\treturn match.replace(/var\\((--.+?)[,)]/g, (match, g1) => {\n\t\t\t\tvars.push(g1);\n\t\t\t\treturn match.replace(g1, \"--un-calc\");\n\t\t\t}).replace(/(-?\\d*\\.?\\d(?!-\\d.+[,)](?![^+\\-/*])\\D)(?:%|[a-z]+)?|\\))([+\\-/*])/g, \"$1 $2 \").replace(/--un-calc/g, () => vars.shift());\n\t\t});\n\t}\n}\nfunction bracket(str, theme) {\n\treturn bracketWithType(str, void 0, theme);\n}\nfunction bracketOfColor(str, theme) {\n\treturn bracketWithType(str, \"color\", theme);\n}\nfunction bracketOfLength(str, theme) {\n\treturn bracketWithType(str, \"length\", theme) || bracketWithType(str, \"size\", theme) || bracketWithType(str, \"width\", theme);\n}\nfunction bracketOfPosition(str, theme) {\n\treturn bracketWithType(str, \"position\", theme);\n}\nfunction bracketOfFamily(str, theme) {\n\treturn bracketWithType(str, \"family\", theme);\n}\nfunction bracketOfNumber(str, theme) {\n\treturn bracketWithType(str, \"number\", theme);\n}\nfunction cssvar(str) {\n\tif (str.startsWith(\"var(\")) return str;\n\tconst match = str.match(/^(?:\\$|--)([^\\s'\"`;{}]+)$/);\n\tif (match) {\n\t\tconst [name, defaultValue] = match[1].split(\",\");\n\t\treturn `var(--${escapeSelector(name)}${defaultValue ? `, ${defaultValue}` : \"\"})`;\n\t}\n}\nfunction time(str) {\n\tconst match = str.match(/^(-?[0-9.]+)(s|ms)?$/i);\n\tif (!match) return;\n\tconst [, n, unit] = match;\n\tconst num = Number.parseFloat(n);\n\tif (!Number.isNaN(num)) {\n\t\tif (num === 0 && !unit) return \"0s\";\n\t\treturn unit ? `${round(num)}${unit}` : `${round(num)}ms`;\n\t}\n}\nfunction degree(str) {\n\tconst match = str.match(/^(-?[0-9.]+)(deg|rad|grad|turn)?$/i);\n\tif (!match) return;\n\tconst [, n, unit] = match;\n\tconst num = Number.parseFloat(n);\n\tif (!Number.isNaN(num)) {\n\t\tif (num === 0) return \"0deg\";\n\t\treturn unit ? `${round(num)}${unit}` : `${round(num)}deg`;\n\t}\n}\nfunction global(str) {\n\tif (globalKeywords.includes(str)) return str;\n}\nfunction properties(str) {\n\tif (str.split(\",\").every((prop) => cssProps.includes(prop))) return str;\n}\nfunction position(str) {\n\tif ([\n\t\t\"top\",\n\t\t\"left\",\n\t\t\"right\",\n\t\t\"bottom\",\n\t\t\"center\"\n\t].includes(str)) return str;\n}\nfunction none(str) {\n\tif (str === \"none\") return \"none\";\n}\n//#endregion\n//#region src/utils/handlers/index.ts\nconst handler = createValueHandler(handlers_exports);\nconst h = handler;\n//#endregion\n//#region src/utils/utilities.ts\nfunction numberResolver(size, defaultValue) {\n\tconst v = h.number(size) ?? defaultValue;\n\tif (v != null) {\n\t\tlet num = Number(v);\n\t\tif (String(v).endsWith(\"%\")) num = Number(String(v).slice(0, -1)) / 100;\n\t\treturn num;\n\t}\n}\n/**\n* Returns a {@link DynamicMatcher} that generates spacing CSS properties for directional utilities.\n*\n* @param property - The base CSS property name (e.g. 'margin', 'padding').\n* @param map - Optional mapping of direction keys to property postfixes. Defaults to {@link directionMap}.\n* @param formatter - Optional function to format the final property name. Defaults to `(p, d) => \\`\\${p}\\${d}\\``.\n*/\nfunction directionSize(property, map = directionMap, formatter = (p, d) => `${p}${d}`) {\n\treturn (([_, direction, size = \"4\"], { theme }) => {\n\t\tif (size != null && direction != null) {\n\t\t\tlet v;\n\t\t\tconst isNegative = size.startsWith(\"-\");\n\t\t\tif (isNegative) size = size.slice(1);\n\t\t\tv = numberResolver(size);\n\t\t\tif (v != null && !Number.isNaN(v)) {\n\t\t\t\tthemeTracking(\"spacing\");\n\t\t\t\treturn map[direction].map((i) => [formatter(property, i), `calc(var(--spacing) * ${isNegative ? \"-\" : \"\"}${v})`]);\n\t\t\t} else if (theme.spacing && size in theme.spacing) {\n\t\t\t\tthemeTracking(\"spacing\", size);\n\t\t\t\treturn map[direction].map((i) => [formatter(property, i), isNegative ? `calc(var(--${escapeSelector(`spacing-${size}`)}) * -1)` : `var(--${escapeSelector(`spacing-${size}`)})`]);\n\t\t\t}\n\t\t\tv = h.bracket.cssvar.global.auto.fraction.rem(isNegative ? `-${size}` : size, theme);\n\t\t\tif (v != null) return map[direction].map((i) => [formatter(property, i), v]);\n\t\t}\n\t});\n}\n/**\n* Split utility shorthand delimited by / or :\n*/\nfunction splitShorthand(body, type) {\n\tconst [front, rest] = getStringComponent(body, \"[\", \"]\", [\"/\", \":\"]) ?? [];\n\tif (front != null) {\n\t\tconst match = (front.match(bracketTypeRe) ?? [])[1];\n\t\tif (match == null || match === type) return [front, rest];\n\t}\n}\n/**\n* Parse color string into {@link ParsedColorValue} (if possible). Color value will first be matched to theme object before parsing.\n* See also color.tests.ts for more examples.\n*\n* @example Parseable strings:\n* 'red' // From theme, if 'red' is available\n* 'red-100' // From theme, plus scale\n* 'red-100/20' // From theme, plus scale/opacity\n* '[rgb(100 2 3)]/[var(--op)]' // Bracket with rgb color and bracket with opacity\n* '[rgb(100 2 3)]/[var(--op)]/[in_oklab]' // Bracket with rgb color, bracket with opacity and bracket with interpolation method\n*\n* @param body - Color string to be parsed.\n* @param theme - {@link Theme} object.\n* @return object if string is parseable.\n*/\nfunction parseColor(body, theme) {\n\tlet split;\n\tconst [front, ...rest] = getStringComponents(body, [\"/\", \":\"], 3) ?? [];\n\tif (front != null) {\n\t\tconst match = (front.match(bracketTypeRe) ?? [])[1];\n\t\tif (match == null || match === \"color\") split = [front, ...rest];\n\t}\n\tif (!split) return;\n\tlet opacity;\n\tlet [main, opacityOrModifier, modifier] = split;\n\tif (isInterpolatedMethod(opacityOrModifier) || isInterpolatedMethod(h.bracket(opacityOrModifier ?? \"\", theme))) modifier = opacityOrModifier;\n\telse opacity = opacityOrModifier;\n\tconst colors = main.replace(/([a-z])(\\d)(?![-_a-z])/g, \"$1-$2\").split(/-/g);\n\tconst [name] = colors;\n\tif (!name) return;\n\tlet parsed = parseThemeColor(theme, colors);\n\tif (!parsed && colors.length >= 2) {\n\t\tconst last = colors.at(-1);\n\t\tconst secondLast = colors.at(-2);\n\t\tif (/^\\d+$/.test(last)) parsed = parseThemeColor(theme, colors.slice(0, -2).concat([`${secondLast}${last}`]));\n\t}\n\tlet { no, keys, color } = parsed ?? {};\n\tif (!color) {\n\t\tconst bracket = h.bracketOfColor(main, theme);\n\t\tconst bracketOrMain = bracket || main;\n\t\tif (h.numberWithUnit(bracketOrMain)) return;\n\t\tif (/^#[\\da-f]+$/i.test(bracketOrMain)) color = bracketOrMain;\n\t\telse if (/^hex-[\\da-fA-F]+$/.test(bracketOrMain)) color = `#${bracketOrMain.slice(4)}`;\n\t\telse if (main.startsWith(\"$\")) color = h.cssvar(main);\n\t\tcolor = color || bracket;\n\t}\n\treturn {\n\t\topacity,\n\t\tmodifier: modifier && h.bracket.cssvar(modifier, theme) || modifier,\n\t\tname,\n\t\tno,\n\t\tcolor: color ?? SpecialColorKey[name],\n\t\talpha: h.bracket.cssvar.percent(opacity ?? \"\", theme),\n\t\t/**\n\t\t* Keys means the color is from theme object.\n\t\t*/\n\t\tkeys,\n\t\tget cssColor() {\n\t\t\treturn parseCssColor(this.color);\n\t\t}\n\t};\n}\nfunction parseThemeColor(theme, keys) {\n\tlet color;\n\tlet no;\n\tlet key;\n\tconst colorData = getThemeByKey(theme, \"colors\", keys);\n\tif (typeof colorData === \"object\") {\n\t\tif (\"DEFAULT\" in colorData) {\n\t\t\tcolor = colorData.DEFAULT;\n\t\t\tno = \"DEFAULT\";\n\t\t\tkey = [...keys, no];\n\t\t}\n\t} else if (typeof colorData === \"string\") {\n\t\tcolor = colorData;\n\t\tkey = keys;\n\t\tno = keys.at(-1);\n\t}\n\tif (!color) return;\n\treturn {\n\t\tcolor,\n\t\tno,\n\t\tkeys: key\n\t};\n}\nfunction getThemeByKey(theme, themeKey, keys) {\n\tconst obj = theme[themeKey];\n\tfunction deepGet(current, path) {\n\t\tif (path.length === 0) return current;\n\t\tif (!current || typeof current !== \"object\") return void 0;\n\t\tfor (let i = path.length; i > 0; i--) {\n\t\t\tconst flatKey = path.slice(0, i).join(\"-\");\n\t\t\tif (flatKey in current) {\n\t\t\t\tconst v = current[flatKey];\n\t\t\t\tif (i === path.length) return v;\n\t\t\t\treturn deepGet(v, path.slice(i));\n\t\t\t}\n\t\t}\n\t}\n\treturn deepGet(obj, keys);\n}\nfunction colorCSSGenerator(data, property, varName, ctx) {\n\tif (!data) return;\n\tconst { color, keys, alpha, modifier } = data;\n\tconst rawColorComment = ctx?.generator.config.envMode === \"dev\" && color ? ` /* ${color} */` : \"\";\n\tconst css = {};\n\tif (color) {\n\t\tconst result = [css];\n\t\tconst isCSSVar = color.includes(\"var(\");\n\t\tconst isSpecial = Object.values(SpecialColorKey).includes(color);\n\t\tif (isSpecial && !alpha) {\n\t\t\tcss[property] = color;\n\t\t\treturn result;\n\t\t}\n\t\tconst alphaKey = `--un-${varName}-opacity`;\n\t\tconst value = keys && !isCSSVar && !isSpecial ? generateThemeVariable(\"colors\", keys) : color;\n\t\tlet method = modifier ?? (keys ? \"in srgb\" : \"in oklab\");\n\t\tif (!method.startsWith(\"in \") && !method.startsWith(\"var(\")) method = `in ${method}`;\n\t\tcss[property] = `color-mix(${method}, ${value} ${alpha ?? `var(${alphaKey})`}, transparent)${rawColorComment}`;\n\t\tresult.push(defineProperty(alphaKey, {\n\t\t\tsyntax: \"<percentage>\",\n\t\t\tinitialValue: \"100%\"\n\t\t}));\n\t\tif (!isSpecial) {\n\t\t\tif (keys && !isCSSVar) {\n\t\t\t\tthemeTracking(`colors`, keys);\n\t\t\t\tif (!modifier) {\n\t\t\t\t\tconst colorValue = [\n\t\t\t\t\t\t\"shadow\",\n\t\t\t\t\t\t\"inset-shadow\",\n\t\t\t\t\t\t\"text-shadow\",\n\t\t\t\t\t\t\"drop-shadow\"\n\t\t\t\t\t].includes(varName) ? `${alpha ? `color-mix(in oklab, ${value} ${alpha}, transparent)` : `${value}`} var(${alphaKey})` : `${value} ${alpha ?? `var(${alphaKey})`}`;\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\t[symbols.parent]: \"@supports (color: color-mix(in lab, red, red))\",\n\t\t\t\t\t\t[symbols.noMerge]: true,\n\t\t\t\t\t\t[property]: `color-mix(in oklab, ${colorValue}, transparent)${rawColorComment}`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (ctx?.theme) detectThemeValue(color, ctx.theme);\n\t\t}\n\t\treturn result;\n\t}\n}\nfunction colorResolver(property, varName) {\n\treturn ([, body], ctx) => {\n\t\tconst data = parseColor(body ?? \"\", ctx.theme);\n\t\tif (!data) return;\n\t\treturn colorCSSGenerator(data, property, varName, ctx);\n\t};\n}\nfunction colorableShadows(shadows, colorVar, alpha) {\n\tconst colored = [];\n\tshadows = toArray(shadows);\n\tfor (let i = 0; i < shadows.length; i++) {\n\t\tconst components = getStringComponents(shadows[i], \" \", 6);\n\t\tif (!components || components.length < 3) return shadows;\n\t\tlet isInset = false;\n\t\tconst pos = components.indexOf(\"inset\");\n\t\tif (pos !== -1) {\n\t\t\tcomponents.splice(pos, 1);\n\t\t\tisInset = true;\n\t\t}\n\t\tlet colorVarValue = \"\";\n\t\tconst lastComp = components.at(-1);\n\t\tif (parseCssColor(components.at(0))) {\n\t\t\tconst color = parseCssColor(components.shift());\n\t\t\tif (color) colorVarValue = colorToString(color);\n\t\t} else if (parseCssColor(lastComp)) {\n\t\t\tconst color = parseCssColor(components.pop());\n\t\t\tif (color) colorVarValue = colorToString(color);\n\t\t} else if (lastComp && lastComp.startsWith(\"var(\")) {\n\t\t\tconst color = components.pop();\n\t\t\tif (color) colorVarValue = color;\n\t\t}\n\t\tcolored.push(`${isInset ? \"inset \" : \"\"}${components.join(\" \")} var(${colorVar}, ${alpha ? `oklab(from ${colorVarValue} l a b / ${alpha})` : colorVarValue})`);\n\t}\n\treturn colored;\n}\nfunction hasParseableColor(color, theme) {\n\treturn color != null && !!parseColor(color, theme)?.color;\n}\nconst reLetters = /[a-z]+/gi;\nconst resolvedBreakpoints = /* @__PURE__ */ new WeakMap();\nfunction resolveBreakpoints({ theme, generator }, key = \"breakpoint\") {\n\tconst breakpoints = (generator?.userConfig?.theme)?.[key] || theme[key];\n\tif (!breakpoints) return void 0;\n\tif (resolvedBreakpoints.has(theme)) return resolvedBreakpoints.get(theme);\n\tconst resolved = Object.entries(breakpoints).sort((a, b) => Number.parseInt(a[1].replace(reLetters, \"\")) - Number.parseInt(b[1].replace(reLetters, \"\"))).map(([point, size]) => ({\n\t\tpoint,\n\t\tsize\n\t}));\n\tresolvedBreakpoints.set(theme, resolved);\n\treturn resolved;\n}\nfunction resolveVerticalBreakpoints(context) {\n\treturn resolveBreakpoints(context, \"verticalBreakpoint\");\n}\nfunction makeGlobalStaticRules(prefix, property) {\n\treturn globalKeywords.map((keyword) => [`${prefix}-${keyword}`, { [property ?? prefix]: keyword }]);\n}\nfunction defineProperty(property, options = {}) {\n\tconst { syntax = \"*\", inherits = false, initialValue } = options;\n\tconst value = {\n\t\t[symbols.shortcutsNoMerge]: true,\n\t\t[symbols.noMerge]: true,\n\t\t[symbols.noScope]: true,\n\t\t[symbols.variants]: () => [{\n\t\t\tparent: \"\",\n\t\t\tlayer: \"properties\",\n\t\t\tselector: () => `@property ${property}`\n\t\t}],\n\t\tsyntax: JSON.stringify(syntax),\n\t\tinherits: inherits ? \"true\" : \"false\"\n\t};\n\tif (initialValue != null) value[\"initial-value\"] = initialValue;\n\tpropertyTracking(property, initialValue ? String(initialValue) : \"initial\");\n\treturn value;\n}\nfunction isCSSMathFn(value) {\n\treturn value != null && cssMathFnRE.test(value);\n}\nfunction isSize(str) {\n\tif (str[0] === \"[\" && str.endsWith(\"]\")) str = str.slice(1, -1);\n\treturn cssMathFnRE.test(str) || numberWithUnitRE.test(str);\n}\nfunction camelize(str) {\n\treturn str.replace(/-(\\w)/g, (_, c) => c ? c.toUpperCase() : \"\");\n}\nfunction hyphenate(str) {\n\treturn str.replace(/(?:^|\\B)([A-Z])/g, \"-$1\").toLowerCase();\n}\nfunction compressCSS(css, isDev = false) {\n\tif (isDev) return css.trim();\n\treturn css.trim().replace(/\\s+/g, \" \").replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\");\n}\n//#endregion\n//#region src/utils/track.ts\n/**\n* Used to track theme keys.\n*\n* eg: colors:red-100\n*\n* @internal\n*/\nconst trackedTheme = /* @__PURE__ */ new Set([]);\nfunction themeTracking(key, props = \"DEFAULT\") {\n\tconst k = `${key}:${toArray(props).join(\"-\")}`;\n\tif (!trackedTheme.has(k)) trackedTheme.add(k);\n}\nfunction generateThemeVariable(key, props) {\n\treturn `var(--${key}-${toArray(props).join(\"-\")})`;\n}\nfunction detectThemeValue(value, theme) {\n\tif (value.startsWith(\"var(\")) {\n\t\tconst variable = value.match(/var\\(--([\\w-]+)(?:,.*)?\\)/)?.[1];\n\t\tif (variable) {\n\t\t\tconst [key, ...path] = variable.split(\"-\");\n\t\t\tconst themeValue = getThemeByKey(theme, key, path);\n\t\t\tif (typeof themeValue === \"string\") {\n\t\t\t\tthemeTracking(key, path);\n\t\t\t\tdetectThemeValue(themeValue, theme);\n\t\t\t}\n\t\t}\n\t}\n}\nconst trackedProperties = /* @__PURE__ */ new Map();\nfunction propertyTracking(property, value) {\n\tif (!trackedProperties.has(property)) trackedProperties.set(property, value);\n}\n//#endregion\n//#region src/utils/unit-resolver.ts\nfunction createRemToPxProcessor(base = 16) {\n\tfunction resolver(utility) {\n\t\tif (typeof utility[1] === \"string\" && remRE.test(utility[1])) utility[1] = utility[1].replace(remRE, (_, p1) => `${p1 * base}px`);\n\t}\n\treturn (utilObjectOrEntry) => {\n\t\tif (Array.isArray(utilObjectOrEntry)) resolver(utilObjectOrEntry);\n\t\telse utilObjectOrEntry.entries.forEach(resolver);\n\t};\n}\n//#endregion\nexport { bracketTypeRe as A, xyzMap as B, parseThemeColor as C, h as D, splitShorthand as E, directionMap as F, PRESET_NAME as H, globalKeywords as I, insetMap as L, cornerMap as M, cssMathFnRE as N, handler as O, cssVarFnRE as P, positionMap as R, parseColor as S, resolveVerticalBreakpoints as T, SpecialColorKey as U, CONTROL_NO_NEGATIVE as V, hyphenate as _, themeTracking as a, makeGlobalStaticRules as b, camelize as c, colorableShadows as d, compressCSS as f, hasParseableColor as g, getThemeByKey as h, propertyTracking as i, splitComma as j, handlers_exports as k, colorCSSGenerator as l, directionSize as m, detectThemeValue as n, trackedProperties as o, defineProperty as p, generateThemeVariable as r, trackedTheme as s, createRemToPxProcessor as t, colorResolver as u, isCSSMathFn as v, resolveBreakpoints as w, numberResolver as x, isSize as y, xyzArray as z };\n",
|
|
34
|
+
"import { w as resolveBreakpoints } from \"./utils-q7HDXEs0.mjs\";\nimport { isString } from \"@unocss/core\";\n//#region src/rules/container.ts\nconst containerParent = [[/^@container(?:\\/(\\w+))?(?:-(normal))?$/, ([, l, v]) => {\n\treturn {\n\t\t\"container-type\": v ?? \"inline-size\",\n\t\t\"container-name\": l\n\t};\n}]];\nconst queryMatcher = /@media \\(min-width: (.+)\\)/;\nconst container = [[\n\t/^__container$/,\n\t(_, context) => {\n\t\tconst { theme, variantHandlers } = context;\n\t\tconst themePadding = theme.containers?.padding;\n\t\tlet padding;\n\t\tif (isString(themePadding)) padding = themePadding;\n\t\telse padding = themePadding?.DEFAULT;\n\t\tconst themeMaxWidth = theme.containers?.maxWidth;\n\t\tlet maxWidth;\n\t\tfor (const v of variantHandlers) {\n\t\t\tconst query = v.handle?.({}, (x) => x)?.parent;\n\t\t\tif (isString(query)) {\n\t\t\t\tconst match = query.match(queryMatcher)?.[1];\n\t\t\t\tif (match) {\n\t\t\t\t\tconst matchBp = (resolveBreakpoints(context) ?? []).find((i) => i.size === match)?.point;\n\t\t\t\t\tif (!themeMaxWidth) maxWidth = match;\n\t\t\t\t\telse if (matchBp) maxWidth = themeMaxWidth?.[matchBp];\n\t\t\t\t\tif (matchBp && !isString(themePadding)) padding = themePadding?.[matchBp] ?? padding;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst css = { \"max-width\": maxWidth };\n\t\tif (!variantHandlers.length) css.width = \"100%\";\n\t\tif (theme.containers?.center) {\n\t\t\tcss[\"margin-left\"] = \"auto\";\n\t\t\tcss[\"margin-right\"] = \"auto\";\n\t\t}\n\t\tif (themePadding) {\n\t\t\tcss[\"padding-left\"] = padding;\n\t\t\tcss[\"padding-right\"] = padding;\n\t\t}\n\t\treturn css;\n\t},\n\t{ internal: true }\n]];\nconst containerShortcuts = [[/^(?:(\\w+)[:-])?container$/, ([, bp], context) => {\n\tlet points = (resolveBreakpoints(context) ?? []).map((i) => i.point);\n\tif (bp) {\n\t\tif (!points.includes(bp)) return;\n\t\tpoints = points.slice(points.indexOf(bp));\n\t}\n\tconst shortcuts = points.map((p) => `${p}:__container`);\n\tif (!bp) shortcuts.unshift(\"__container\");\n\treturn shortcuts;\n}]];\n//#endregion\nexport { containerParent as n, containerShortcuts as r, container as t };\n",
|
|
35
|
+
"import { A as bracketTypeRe, B as xyzMap, D as h, F as directionMap, I as globalKeywords, L as insetMap, M as cornerMap, R as positionMap, S as parseColor, U as SpecialColorKey, V as CONTROL_NO_NEGATIVE, _ as hyphenate, a as themeTracking, b as makeGlobalStaticRules, d as colorableShadows, g as hasParseableColor, j as splitComma, l as colorCSSGenerator, m as directionSize, n as detectThemeValue, p as defineProperty, r as generateThemeVariable, u as colorResolver, v as isCSSMathFn, w as resolveBreakpoints, x as numberResolver, y as isSize, z as xyzArray } from \"./utils-q7HDXEs0.mjs\";\nimport { n as containerParent, r as containerShortcuts, t as container } from \"./container-Be9Fugl0.mjs\";\nimport { notNull, symbols } from \"@unocss/core\";\nimport { getStringComponent, getStringComponents } from \"@unocss/rule-utils\";\n//#region src/rules/align.ts\nconst verticalAlignAlias = {\n\t\"mid\": \"middle\",\n\t\"base\": \"baseline\",\n\t\"btm\": \"bottom\",\n\t\"baseline\": \"baseline\",\n\t\"top\": \"top\",\n\t\"start\": \"top\",\n\t\"middle\": \"middle\",\n\t\"bottom\": \"bottom\",\n\t\"end\": \"bottom\",\n\t\"text-top\": \"text-top\",\n\t\"text-bottom\": \"text-bottom\",\n\t\"sub\": \"sub\",\n\t\"super\": \"super\",\n\t...Object.fromEntries(globalKeywords.map((x) => [x, x]))\n};\nconst verticalAligns = [[\n\t/^(?:vertical|align|v)-(.+)$/,\n\t([, v], { theme }) => ({ \"vertical-align\": verticalAlignAlias[v] ?? h.bracket.cssvar.numberWithUnit(v, theme) }),\n\t{ autocomplete: [`(vertical|align|v)-(${Object.keys(verticalAlignAlias).join(\"|\")})`, \"(vertical|align|v)-<percentage>\"] }\n]];\nconst textAlignValues = [\n\t\"center\",\n\t\"left\",\n\t\"right\",\n\t\"justify\",\n\t\"start\",\n\t\"end\"\n];\nconst textAligns = [...textAlignValues.map((v) => [`text-${v}`, { \"text-align\": v }]), ...[...globalKeywords, ...textAlignValues].map((v) => [`text-align-${v}`, { \"text-align\": v }])];\n//#endregion\n//#region src/rules/animation.ts\nconst animations = [\n\t[\n\t\t/^(?:animate-)?keyframes-(.+)$/,\n\t\t([, name], { theme }) => {\n\t\t\tconst kf = theme.animation?.keyframes?.[name];\n\t\t\tif (kf) return [`@keyframes ${name}${kf}`, { animation: name }];\n\t\t},\n\t\t{ autocomplete: [\"animate-keyframes-$animation.keyframes\", \"keyframes-$animation.keyframes\"] }\n\t],\n\t[\n\t\t/^animate-(.+)$/,\n\t\t([, name], { theme }) => {\n\t\t\tconst kf = theme.animation?.keyframes?.[name];\n\t\t\tif (kf) {\n\t\t\t\tconst duration = theme.animation?.durations?.[name] ?? \"1s\";\n\t\t\t\tconst timing = theme.animation?.timingFns?.[name] ?? \"linear\";\n\t\t\t\tconst count = theme.animation?.counts?.[name] ?? 1;\n\t\t\t\tconst props = theme.animation?.properties?.[name];\n\t\t\t\treturn [`@keyframes ${name}${kf}`, {\n\t\t\t\t\tanimation: `${name} ${duration} ${timing} ${count}`,\n\t\t\t\t\t...props\n\t\t\t\t}];\n\t\t\t}\n\t\t\treturn { animation: h.bracket.cssvar(name, theme) };\n\t\t},\n\t\t{ autocomplete: \"animate-$animation.keyframes\" }\n\t],\n\t[/^animate-name-(.+)/, ([, d], { theme }) => ({ \"animation-name\": h.bracket.cssvar(d, theme) ?? d })],\n\t[\n\t\t/^animate-duration-(.+)$/,\n\t\t([, d], { theme }) => ({ \"animation-duration\": theme.duration?.[d || \"DEFAULT\"] ?? h.bracket.cssvar.time(d, theme) }),\n\t\t{ autocomplete: [\"animate-duration\"] }\n\t],\n\t[\n\t\t/^animate-delay-(.+)$/,\n\t\t([, d], { theme }) => ({ \"animation-delay\": theme.duration?.[d || \"DEFAULT\"] ?? h.bracket.cssvar.time(d, theme) }),\n\t\t{ autocomplete: [\"animate-delay\"] }\n\t],\n\t[\n\t\t/^animate-ease(?:-(.+))?$/,\n\t\t([, d], { theme }) => ({ \"animation-timing-function\": theme.ease?.[d || \"DEFAULT\"] ?? h.bracket.cssvar(d, theme) }),\n\t\t{ autocomplete: [\"animate-ease\", \"animate-ease-$ease\"] }\n\t],\n\t[\n\t\t/^animate-(fill-mode-|fill-|mode-)?(.+)$/,\n\t\t([, t, d]) => [\n\t\t\t\"none\",\n\t\t\t\"forwards\",\n\t\t\t\"backwards\",\n\t\t\t\"both\",\n\t\t\t...[t ? globalKeywords : []]\n\t\t].includes(d) ? { \"animation-fill-mode\": d } : void 0,\n\t\t{ autocomplete: [\n\t\t\t\"animate-(fill|mode|fill-mode)\",\n\t\t\t\"animate-(fill|mode|fill-mode)-(none|forwards|backwards|both|inherit|initial|revert|revert-layer|unset)\",\n\t\t\t\"animate-(none|forwards|backwards|both|inherit|initial|revert|revert-layer|unset)\"\n\t\t] }\n\t],\n\t[\n\t\t/^animate-(direction-)?(.+)$/,\n\t\t([, t, d]) => [\n\t\t\t\"normal\",\n\t\t\t\"reverse\",\n\t\t\t\"alternate\",\n\t\t\t\"alternate-reverse\",\n\t\t\t...[t ? globalKeywords : []]\n\t\t].includes(d) ? { \"animation-direction\": d } : void 0,\n\t\t{ autocomplete: [\n\t\t\t\"animate-direction\",\n\t\t\t\"animate-direction-(normal|reverse|alternate|alternate-reverse|inherit|initial|revert|revert-layer|unset)\",\n\t\t\t\"animate-(normal|reverse|alternate|alternate-reverse|inherit|initial|revert|revert-layer|unset)\"\n\t\t] }\n\t],\n\t[\n\t\t/^animate-(?:iteration-count-|iteration-|count-)(.+)$/,\n\t\t([, d], { theme }) => ({ \"animation-iteration-count\": h.bracket.cssvar(d, theme) ?? d.replace(/-/g, \",\") }),\n\t\t{ autocomplete: [\"animate-(iteration|count|iteration-count)\", \"animate-(iteration|count|iteration-count)-<num>\"] }\n\t],\n\t[\n\t\t/^animate-(play-state-|play-|state-)?(.+)$/,\n\t\t([, t, d]) => [\n\t\t\t\"paused\",\n\t\t\t\"running\",\n\t\t\t...[t ? globalKeywords : []]\n\t\t].includes(d) ? { \"animation-play-state\": d } : void 0,\n\t\t{ autocomplete: [\n\t\t\t\"animate-(play|state|play-state)\",\n\t\t\t\"animate-(play|state|play-state)-(paused|running|inherit|initial|revert|revert-layer|unset)\",\n\t\t\t\"animate-(paused|running|inherit|initial|revert|revert-layer|unset)\"\n\t\t] }\n\t],\n\t[\"animate-none\", { animation: \"none\" }],\n\t...makeGlobalStaticRules(\"animate\", \"animation\")\n];\n//#endregion\n//#region src/rules/background.ts\nconst properties = {\n\t\"gradient-position\": defineProperty(\"--un-gradient-position\"),\n\t\"gradient-from\": defineProperty(\"--un-gradient-from\", {\n\t\tsyntax: \"<color>\",\n\t\tinitialValue: \"#0000\"\n\t}),\n\t\"gradient-via\": defineProperty(\"--un-gradient-via\", {\n\t\tsyntax: \"<color>\",\n\t\tinitialValue: \"#0000\"\n\t}),\n\t\"gradient-to\": defineProperty(\"--un-gradient-to\", {\n\t\tsyntax: \"<color>\",\n\t\tinitialValue: \"#0000\"\n\t}),\n\t\"gradient-stops\": defineProperty(\"--un-gradient-stops\"),\n\t\"gradient-via-stops\": defineProperty(\"--un-gradient-via-stops\"),\n\t\"gradient-from-position\": defineProperty(\"--un-gradient-from-position\", {\n\t\tsyntax: \"<length-percentage>\",\n\t\tinitialValue: \"0%\"\n\t}),\n\t\"gradient-via-position\": defineProperty(\"--un-gradient-via-position\", {\n\t\tsyntax: \"<length-percentage>\",\n\t\tinitialValue: \"50%\"\n\t}),\n\t\"gradient-to-position\": defineProperty(\"--un-gradient-to-position\", {\n\t\tsyntax: \"<length-percentage>\",\n\t\tinitialValue: \"100%\"\n\t})\n};\nfunction resolveModifier(modifier) {\n\tlet interpolationMethod = \"in oklab\";\n\tif (modifier) {\n\t\tif (modifier.startsWith(\"[\") && modifier.endsWith(\"]\")) interpolationMethod = modifier.slice(1, -1);\n\t\telse switch (modifier) {\n\t\t\tcase \"longer\":\n\t\t\tcase \"shorter\":\n\t\t\tcase \"increasing\":\n\t\t\tcase \"decreasing\":\n\t\t\t\tinterpolationMethod = `in oklch ${modifier} hue`;\n\t\t\t\tbreak;\n\t\t\tdefault: interpolationMethod = `in ${modifier}`;\n\t\t}\n\t}\n\treturn interpolationMethod;\n}\nfunction bgGradientColorResolver() {\n\treturn function* ([, position, body], { theme }) {\n\t\tconst css = {};\n\t\tconst data = parseColor(body, theme);\n\t\tif (data) {\n\t\t\tconst { color, keys, alpha } = data;\n\t\t\tif (color) {\n\t\t\t\tif (Object.values(SpecialColorKey).includes(color)) css[`--un-gradient-${position}`] = color;\n\t\t\t\telse {\n\t\t\t\t\tcss[`--un-${position}-opacity`] = alpha;\n\t\t\t\t\tconst value = keys ? generateThemeVariable(\"colors\", keys) : color;\n\t\t\t\t\tcss[`--un-gradient-${position}`] = `color-mix(in oklab, ${value} var(--un-${position}-opacity), transparent)`;\n\t\t\t\t\tyield defineProperty(`--un-${position}-opacity`, {\n\t\t\t\t\t\tsyntax: \"<percentage>\",\n\t\t\t\t\t\tinitialValue: \"100%\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (keys) themeTracking(`colors`, keys);\n\t\t\t\tif (theme) detectThemeValue(color, theme);\n\t\t\t}\n\t\t} else css[`--un-gradient-${position}`] = h.bracket.cssvar(body, theme);\n\t\tif (css[`--un-gradient-${position}`]) {\n\t\t\tswitch (position) {\n\t\t\t\tcase \"from\":\n\t\t\t\t\tyield {\n\t\t\t\t\t\t...css,\n\t\t\t\t\t\t\"--un-gradient-stops\": \"var(--un-gradient-via-stops, var(--un-gradient-position), var(--un-gradient-from) var(--un-gradient-from-position), var(--un-gradient-to) var(--un-gradient-to-position))\"\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"via\":\n\t\t\t\t\tyield {\n\t\t\t\t\t\t...css,\n\t\t\t\t\t\t\"--un-gradient-via-stops\": `var(--un-gradient-position), var(--un-gradient-from) var(--un-gradient-from-position), var(--un-gradient-via) var(--un-gradient-via-position), var(--un-gradient-to) var(--un-gradient-to-position)`,\n\t\t\t\t\t\t\"--un-gradient-stops\": `var(--un-gradient-via-stops)`\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"to\":\n\t\t\t\t\tyield {\n\t\t\t\t\t\t...css,\n\t\t\t\t\t\t\"--un-gradient-stops\": \"var(--un-gradient-via-stops, var(--un-gradient-position), var(--un-gradient-from) var(--un-gradient-from-position), var(--un-gradient-to) var(--un-gradient-to-position))\"\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"stops\": yield { ...css };\n\t\t\t}\n\t\t\tfor (const p of Object.values(properties)) yield p;\n\t\t}\n\t};\n}\nfunction bgGradientPositionResolver() {\n\treturn function* ([, mode, body], { theme }) {\n\t\tyield { [`--un-gradient-${mode}-position`]: `${h.bracket.cssvar.percent(body, theme)}` };\n\t\tfor (const p of Object.values(properties)) yield p;\n\t};\n}\nconst backgroundStyles = [\n\t[\n\t\t/^bg-(linear|radial|conic)-([^/]+)(?:\\/(.+))?$/,\n\t\t([, m, d, s], { theme }) => {\n\t\t\tlet v;\n\t\t\tif (h.number(d) != null) v = `from ${h.number(d)}deg ${resolveModifier(s)};`;\n\t\t\telse v = h.bracket(d, theme);\n\t\t\tif (v) return {\n\t\t\t\t\"--un-gradient-position\": v,\n\t\t\t\t\"background-image\": `${m}-gradient(var(--un-gradient-stops))`\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: [\n\t\t\t\"bg-(linear|radial|conic)\",\n\t\t\t\"(from|to|via)-$colors\",\n\t\t\t\"(from|to|via)-(op|opacity)\",\n\t\t\t\"(from|to|via)-(op|opacity)-<percent>\"\n\t\t] }\n\t],\n\t[/^(from|via|to|stops)-(.+)$/, bgGradientColorResolver()],\n\t[/^(from|via|to)-op(?:acity)?-?(.+)$/, ([, position, opacity], { theme }) => ({ [`--un-${position}-opacity`]: h.bracket.percent(opacity, theme) })],\n\t[/^(from|via|to)-([\\d.]+%)$/, bgGradientPositionResolver()],\n\t[\n\t\t/^bg-((?:repeating-)?(?:linear|radial|conic))$/,\n\t\t([, s]) => ({ \"background-image\": `${s}-gradient(var(--un-gradient, var(--un-gradient-stops, rgb(255 255 255 / 0))))` }),\n\t\t{ autocomplete: [\n\t\t\t\"bg-gradient-repeating\",\n\t\t\t\"bg-gradient-(linear|radial|conic)\",\n\t\t\t\"bg-gradient-repeating-(linear|radial|conic)\"\n\t\t] }\n\t],\n\t[\n\t\t/^bg-(gradient|linear|radial|conic)(?:-to-([rltb]{1,2}))?(?:\\/(.+))?$/,\n\t\t([, m, d, s]) => {\n\t\t\treturn {\n\t\t\t\t\"--un-gradient-position\": `${d in positionMap ? `to ${positionMap[d]} ` : \" \"}${resolveModifier(s)}`,\n\t\t\t\t\"background-image\": `${m === \"gradient\" ? \"linear\" : m}-gradient(var(--un-gradient-stops))`\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: [\n\t\t\t\"gradient\",\n\t\t\t\"linear\",\n\t\t\t\"radial\",\n\t\t\t\"conic\"\n\t\t].map((i) => {\n\t\t\treturn `bg-${i}-to-(${Object.keys(positionMap).filter((k) => k.length <= 2 && Array.from(k).every((c) => \"rltb\".includes(c))).join(\"|\")})`;\n\t\t}) }\n\t],\n\t[\"bg-none\", { \"background-image\": \"none\" }],\n\t[\"box-decoration-slice\", { \"box-decoration-break\": \"slice\" }],\n\t[\"box-decoration-clone\", { \"box-decoration-break\": \"clone\" }],\n\t...makeGlobalStaticRules(\"box-decoration\", \"box-decoration-break\"),\n\t[\"bg-auto\", { \"background-size\": \"auto\" }],\n\t[\"bg-cover\", { \"background-size\": \"cover\" }],\n\t[\"bg-contain\", { \"background-size\": \"contain\" }],\n\t[/^bg-size-(.+)$/, ([, v], { theme }) => ({ \"background-size\": h.bracket.cssvar(v, theme) })],\n\t[\"bg-fixed\", { \"background-attachment\": \"fixed\" }],\n\t[\"bg-local\", { \"background-attachment\": \"local\" }],\n\t[\"bg-scroll\", { \"background-attachment\": \"scroll\" }],\n\t[\"bg-clip-border\", {\n\t\t\"-webkit-background-clip\": \"border-box\",\n\t\t\"background-clip\": \"border-box\"\n\t}],\n\t[\"bg-clip-content\", {\n\t\t\"-webkit-background-clip\": \"content-box\",\n\t\t\"background-clip\": \"content-box\"\n\t}],\n\t[\"bg-clip-padding\", {\n\t\t\"-webkit-background-clip\": \"padding-box\",\n\t\t\"background-clip\": \"padding-box\"\n\t}],\n\t[\"bg-clip-text\", {\n\t\t\"-webkit-background-clip\": \"text\",\n\t\t\"background-clip\": \"text\"\n\t}],\n\t...globalKeywords.map((keyword) => [`bg-clip-${keyword}`, {\n\t\t\"-webkit-background-clip\": keyword,\n\t\t\"background-clip\": keyword\n\t}]),\n\t[/^bg-([-\\w]{3,})$/, ([, s]) => ({ \"background-position\": positionMap[s] })],\n\t[\"bg-repeat\", { \"background-repeat\": \"repeat\" }],\n\t[\"bg-no-repeat\", { \"background-repeat\": \"no-repeat\" }],\n\t[\"bg-repeat-x\", { \"background-repeat\": \"repeat-x\" }],\n\t[\"bg-repeat-y\", { \"background-repeat\": \"repeat-y\" }],\n\t[\"bg-repeat-round\", { \"background-repeat\": \"round\" }],\n\t[\"bg-repeat-space\", { \"background-repeat\": \"space\" }],\n\t...makeGlobalStaticRules(\"bg-repeat\", \"background-repeat\"),\n\t[\"bg-origin-border\", { \"background-origin\": \"border-box\" }],\n\t[\"bg-origin-padding\", { \"background-origin\": \"padding-box\" }],\n\t[\"bg-origin-content\", { \"background-origin\": \"content-box\" }],\n\t...makeGlobalStaticRules(\"bg-origin\", \"background-origin\")\n];\n//#endregion\n//#region src/rules/behaviors.ts\nconst outline = [\n\t[\n\t\t/^outline-(?:width-|size-)?(.+)$/,\n\t\thandleWidth$2,\n\t\t{ autocomplete: \"outline-(width|size)-<num>\" }\n\t],\n\t[\n\t\t/^outline-(?:color-)?(.+)$/,\n\t\thandleColorOrWidth$2,\n\t\t{ autocomplete: \"outline-$colors\" }\n\t],\n\t[\n\t\t/^outline-op(?:acity)?-?(.+)$/,\n\t\t([, opacity], { theme }) => ({ \"--un-outline-opacity\": h.bracket.percent.cssvar(opacity, theme) }),\n\t\t{ autocomplete: \"outline-(op|opacity)-<percent>\" }\n\t],\n\t[\n\t\t/^outline-offset-(.+)$/,\n\t\t([, d], { theme }) => ({ \"outline-offset\": h.bracket.cssvar.global.px(d, theme) }),\n\t\t{ autocomplete: \"outline-(offset)-<num>\" }\n\t],\n\t[\"outline-offset-none\", { \"outline-offset\": \"0\" }],\n\t[\"outline\", [{\n\t\t\"outline-style\": \"var(--un-outline-style)\",\n\t\t\"outline-width\": \"1px\"\n\t}, defineProperty(\"--un-outline-style\", { initialValue: \"solid\" })]],\n\t[\"outline-hidden\", [{ \"outline-style\": \"none\" }, {\n\t\t[symbols.parent]: `@media (forced-colors: active)`,\n\t\t\"outline\": `2px solid transparent`,\n\t\t\"outline-offset\": `2px`\n\t}]],\n\t[\"outline-none\", {\n\t\t\"--un-outline-style\": \"none\",\n\t\t\"outline-style\": \"none\"\n\t}],\n\t...[\n\t\t\"auto\",\n\t\t\"dashed\",\n\t\t\"dotted\",\n\t\t\"double\",\n\t\t\"solid\",\n\t\t\"groove\",\n\t\t\"ridge\",\n\t\t\"inset\",\n\t\t\"outset\",\n\t\t...globalKeywords\n\t].map((v) => [`outline-${v}`, {\n\t\t\"--un-outline-style\": v,\n\t\t\"outline-style\": v\n\t}])\n];\nfunction* handleWidth$2([, b], { theme }) {\n\tconst v = h.bracket.cssvar.global.px(b, theme);\n\tif (v != null) {\n\t\tyield {\n\t\t\t\"outline-style\": \"var(--un-outline-style)\",\n\t\t\t\"outline-width\": v\n\t\t};\n\t\tyield defineProperty(\"--un-outline-style\", { initialValue: \"solid\" });\n\t}\n}\nfunction* handleColorOrWidth$2(match, ctx) {\n\tif (isCSSMathFn(h.bracket(match[1], ctx.theme))) yield* handleWidth$2(match, ctx);\n\telse {\n\t\tconst result = colorResolver(\"outline-color\", \"outline\")(match, ctx);\n\t\tif (result) for (const i of result) yield i;\n\t}\n}\nconst appearance = [[\"appearance-auto\", {\n\t\"-webkit-appearance\": \"auto\",\n\t\"appearance\": \"auto\"\n}], [\"appearance-none\", {\n\t\"-webkit-appearance\": \"none\",\n\t\"appearance\": \"none\"\n}]];\nfunction willChangeProperty(prop, theme) {\n\tconst v = h.bracket(prop, theme);\n\tif (v && h.properties(v)) return v;\n\treturn h.properties.auto.cssvar.global(prop) ?? {\n\t\tcontents: \"contents\",\n\t\tscroll: \"scroll-position\"\n\t}[prop];\n}\nconst willChange = [[/^will-change-(.+)/, ([, p], { theme }) => ({ \"will-change\": willChangeProperty(p, theme) })]];\nconst listStyles = {\n\t\"disc\": \"disc\",\n\t\"circle\": \"circle\",\n\t\"square\": \"square\",\n\t\"decimal\": \"decimal\",\n\t\"zero-decimal\": \"decimal-leading-zero\",\n\t\"greek\": \"lower-greek\",\n\t\"roman\": \"lower-roman\",\n\t\"upper-roman\": \"upper-roman\",\n\t\"alpha\": \"lower-alpha\",\n\t\"upper-alpha\": \"upper-alpha\",\n\t\"latin\": \"lower-latin\",\n\t\"upper-latin\": \"upper-latin\"\n};\nconst listStyle = [\n\t[\n\t\t/^list-(.+?)(?:-(outside|inside))?$/,\n\t\t([, alias, position]) => {\n\t\t\tconst style = listStyles[alias];\n\t\t\tif (style) {\n\t\t\t\tif (position) return {\n\t\t\t\t\t\"list-style-position\": position,\n\t\t\t\t\t\"list-style-type\": style\n\t\t\t\t};\n\t\t\t\treturn { \"list-style-type\": style };\n\t\t\t}\n\t\t},\n\t\t{ autocomplete: [`list-(${Object.keys(listStyles).join(\"|\")})`, `list-(${Object.keys(listStyles).join(\"|\")})-(outside|inside)`] }\n\t],\n\t[\"list-outside\", { \"list-style-position\": \"outside\" }],\n\t[\"list-inside\", { \"list-style-position\": \"inside\" }],\n\t[\"list-none\", { \"list-style-type\": \"none\" }],\n\t[/^list-image-(.+)$/, ([, d], { theme }) => {\n\t\tif (/^\\[url\\(.+\\)\\]$/.test(d)) return { \"list-style-image\": h.bracket(d, theme) };\n\t}],\n\t[\"list-image-none\", { \"list-style-image\": \"none\" }],\n\t...makeGlobalStaticRules(\"list\", \"list-style-type\")\n];\nconst accents = [[\n\t/^accent-(.+)$/,\n\tcolorResolver(\"accent-color\", \"accent\"),\n\t{ autocomplete: \"accent-$colors\" }\n], [\n\t/^accent-op(?:acity)?-?(.+)$/,\n\t([, d], { theme }) => ({ \"--un-accent-opacity\": h.bracket.percent(d, theme) }),\n\t{ autocomplete: [\"accent-(op|opacity)\", \"accent-(op|opacity)-<percent>\"] }\n]];\nconst carets = [[\n\t/^caret-(.+)$/,\n\tcolorResolver(\"caret-color\", \"caret\"),\n\t{ autocomplete: \"caret-$colors\" }\n], [\n\t/^caret-op(?:acity)?-?(.+)$/,\n\t([, d], { theme }) => ({ \"--un-caret-opacity\": h.bracket.percent(d, theme) }),\n\t{ autocomplete: [\"caret-(op|opacity)\", \"caret-(op|opacity)-<percent>\"] }\n]];\nconst imageRenderings = [\n\t[\"image-render-auto\", { \"image-rendering\": \"auto\" }],\n\t[\"image-render-edge\", { \"image-rendering\": \"crisp-edges\" }],\n\t[\"image-render-pixel\", [\n\t\t[\"-ms-interpolation-mode\", \"nearest-neighbor\"],\n\t\t[\"image-rendering\", \"-webkit-optimize-contrast\"],\n\t\t[\"image-rendering\", \"-moz-crisp-edges\"],\n\t\t[\"image-rendering\", \"-o-pixelated\"],\n\t\t[\"image-rendering\", \"pixelated\"]\n\t]]\n];\nconst overscrolls = [\n\t[\"overscroll-auto\", { \"overscroll-behavior\": \"auto\" }],\n\t[\"overscroll-contain\", { \"overscroll-behavior\": \"contain\" }],\n\t[\"overscroll-none\", { \"overscroll-behavior\": \"none\" }],\n\t...makeGlobalStaticRules(\"overscroll\", \"overscroll-behavior\"),\n\t[\"overscroll-x-auto\", { \"overscroll-behavior-x\": \"auto\" }],\n\t[\"overscroll-x-contain\", { \"overscroll-behavior-x\": \"contain\" }],\n\t[\"overscroll-x-none\", { \"overscroll-behavior-x\": \"none\" }],\n\t...makeGlobalStaticRules(\"overscroll-x\", \"overscroll-behavior-x\"),\n\t[\"overscroll-y-auto\", { \"overscroll-behavior-y\": \"auto\" }],\n\t[\"overscroll-y-contain\", { \"overscroll-behavior-y\": \"contain\" }],\n\t[\"overscroll-y-none\", { \"overscroll-behavior-y\": \"none\" }],\n\t...makeGlobalStaticRules(\"overscroll-y\", \"overscroll-behavior-y\")\n];\nconst scrollBehaviors = [\n\t[\"scroll-auto\", { \"scroll-behavior\": \"auto\" }],\n\t[\"scroll-smooth\", { \"scroll-behavior\": \"smooth\" }],\n\t...makeGlobalStaticRules(\"scroll\", \"scroll-behavior\")\n];\n//#endregion\n//#region src/rules/border.ts\nconst borderStyles = [\n\t\"solid\",\n\t\"dashed\",\n\t\"dotted\",\n\t\"double\",\n\t\"hidden\",\n\t\"none\",\n\t\"groove\",\n\t\"ridge\",\n\t\"inset\",\n\t\"outset\",\n\t...globalKeywords\n];\nconst borders = [\n\t[\n\t\t/^(?:border|b)()(?:-(.+))?$/,\n\t\thandlerBorderSize,\n\t\t{ autocomplete: \"(border|b)-<directions>\" }\n\t],\n\t[/^(?:border|b)-([xy])(?:-(.+))?$/, handlerBorderSize],\n\t[/^(?:border|b)-([rltbse])(?:-(.+))?$/, handlerBorderSize],\n\t[/^(?:border|b)-(block|inline)(?:-(.+))?$/, handlerBorderSize],\n\t[/^(?:border|b)-([bi][se])(?:-(.+))?$/, handlerBorderSize],\n\t[\n\t\t/^(?:border|b)-()(?:width|size)-(.+)$/,\n\t\thandlerBorderSize,\n\t\t{ autocomplete: [\"(border|b)-<num>\", \"(border|b)-<directions>-<num>\"] }\n\t],\n\t[/^(?:border|b)-([xy])-(?:width|size)-(.+)$/, handlerBorderSize],\n\t[/^(?:border|b)-([rltbse])-(?:width|size)-(.+)$/, handlerBorderSize],\n\t[/^(?:border|b)-(block|inline)-(?:width|size)-(.+)$/, handlerBorderSize],\n\t[/^(?:border|b)-([bi][se])-(?:width|size)-(.+)$/, handlerBorderSize],\n\t[\n\t\t/^(?:border|b)-()(?:color-)?(.+)$/,\n\t\thandlerBorderColorOrSize,\n\t\t{ autocomplete: [\"(border|b)-$colors\", \"(border|b)-<directions>-$colors\"] }\n\t],\n\t[/^(?:border|b)-([xy])-(?:color-)?(.+)$/, handlerBorderColorOrSize],\n\t[/^(?:border|b)-([rltbse])-(?:color-)?(.+)$/, handlerBorderColorOrSize],\n\t[/^(?:border|b)-(block|inline)-(?:color-)?(.+)$/, handlerBorderColorOrSize],\n\t[/^(?:border|b)-([bi][se])-(?:color-)?(.+)$/, handlerBorderColorOrSize],\n\t[\n\t\t/^(?:border|b)-()op(?:acity)?-?(.+)$/,\n\t\thandlerBorderOpacity,\n\t\t{ autocomplete: \"(border|b)-(op|opacity)-<percent>\" }\n\t],\n\t[/^(?:border|b)-([xy])-op(?:acity)?-?(.+)$/, handlerBorderOpacity],\n\t[/^(?:border|b)-([rltbse])-op(?:acity)?-?(.+)$/, handlerBorderOpacity],\n\t[/^(?:border|b)-(block|inline)-op(?:acity)?-?(.+)$/, handlerBorderOpacity],\n\t[/^(?:border|b)-([bi][se])-op(?:acity)?-?(.+)$/, handlerBorderOpacity],\n\t[\n\t\t/^(?:border-|b-)?(?:rounded|rd)()(?:-(.+))?$/,\n\t\thandlerRounded,\n\t\t{ autocomplete: [\n\t\t\t\"(border|b)-(rounded|rd)\",\n\t\t\t\"(border|b)-(rounded|rd)-$radius\",\n\t\t\t\"(rounded|rd)\",\n\t\t\t\"(rounded|rd)-$radius\"\n\t\t] }\n\t],\n\t[/^(?:border-|b-)?(?:rounded|rd)-([rltbse])(?:-(.+))?$/, handlerRounded],\n\t[/^(?:border-|b-)?(?:rounded|rd)-([rltb]{2})(?:-(.+))?$/, handlerRounded],\n\t[/^(?:border-|b-)?(?:rounded|rd)-([bise][se])(?:-(.+))?$/, handlerRounded],\n\t[/^(?:border-|b-)?(?:rounded|rd)-([bi][se]-[bi][se])(?:-(.+))?$/, handlerRounded],\n\t[\n\t\t/^(?:border|b)-(?:style-)?()(.+)$/,\n\t\thandlerBorderStyle,\n\t\t{ autocomplete: [\n\t\t\t\"(border|b)-style\",\n\t\t\t`(border|b)-(${borderStyles.join(\"|\")})`,\n\t\t\t\"(border|b)-<directions>-style\",\n\t\t\t`(border|b)-<directions>-(${borderStyles.join(\"|\")})`,\n\t\t\t`(border|b)-<directions>-style-(${borderStyles.join(\"|\")})`,\n\t\t\t`(border|b)-style-(${borderStyles.join(\"|\")})`\n\t\t] }\n\t],\n\t[/^(?:border|b)-([xy])-(?:style-)?(.+)$/, handlerBorderStyle],\n\t[/^(?:border|b)-([rltbse])-(?:style-)?(.+)$/, handlerBorderStyle],\n\t[/^(?:border|b)-(block|inline)-(?:style-)?(.+)$/, handlerBorderStyle],\n\t[/^(?:border|b)-([bi][se])-(?:style-)?(.+)$/, handlerBorderStyle]\n];\nfunction borderColorResolver(direction) {\n\treturn ([, body], ctx) => {\n\t\tconst data = parseColor(body, ctx.theme);\n\t\tconst result = colorCSSGenerator(data, `border${direction}-color`, `border${direction}`, ctx);\n\t\tif (result) {\n\t\t\tconst css = result[0];\n\t\t\tif (data?.color && !Object.values(SpecialColorKey).includes(data.color) && !data.alpha && direction && direction !== \"\") css[`--un-border${direction}-opacity`] = `var(--un-border-opacity)`;\n\t\t\treturn result;\n\t\t}\n\t};\n}\nfunction handlerBorderSize([, a = \"\", b = \"1\"], { theme }) {\n\tconst v = h.bracket.bracketOfLength.cssvar.global.px(b, theme);\n\tif (a in directionMap && v != null) return directionMap[a].map((i) => [`border${i}-width`, v]);\n}\nfunction handlerBorderColorOrSize([, a = \"\", b], ctx) {\n\tif (a in directionMap) {\n\t\tif (isCSSMathFn(h.bracket(b, ctx.theme))) return handlerBorderSize([\n\t\t\t\"\",\n\t\t\ta,\n\t\t\tb\n\t\t], ctx);\n\t\tconst bracketColor = h.bracketOfColor(b, ctx.theme);\n\t\tb = bracketColor ?? b;\n\t\tif (bracketColor != null || hasParseableColor(b, ctx.theme)) {\n\t\t\tconst directions = directionMap[a].map((i) => borderColorResolver(i)([\"\", b], ctx) ?? colorCSSGenerator({\n\t\t\t\tcolor: b,\n\t\t\t\tname: \"_\"\n\t\t\t}, `border${i}-color`, `border${i}`, ctx)).filter(notNull);\n\t\t\treturn [directions.map((d) => d[0]).reduce((acc, item) => {\n\t\t\t\tObject.assign(acc, item);\n\t\t\t\treturn acc;\n\t\t\t}, {}), ...directions.flatMap((d) => d.slice(1))];\n\t\t}\n\t}\n}\nfunction handlerBorderOpacity([, a = \"\", opacity], { theme }) {\n\tconst v = h.bracket.percent.cssvar(opacity, theme);\n\tif (a in directionMap && v != null) return directionMap[a].map((i) => [`--un-border${i}-opacity`, v]);\n}\nfunction handlerRounded([, a = \"\", s = \"DEFAULT\"], { theme }) {\n\tif (a in cornerMap) {\n\t\tif (s === \"full\") return cornerMap[a].map((i) => [`border${i}-radius`, \"calc(infinity * 1px)\"]);\n\t\tconst _v = theme.radius?.[s] ?? h.bracket.cssvar.global.fraction.rem(s, theme);\n\t\tif (_v != null) {\n\t\t\tconst isVar = theme.radius && s in theme.radius;\n\t\t\tif (isVar) themeTracking(`radius`, s);\n\t\t\treturn cornerMap[a].map((i) => [`border${i}-radius`, isVar ? generateThemeVariable(\"radius\", s) : _v]);\n\t\t}\n\t}\n}\nfunction handlerBorderStyle([, a = \"\", s]) {\n\tif (borderStyles.includes(s) && a in directionMap) return [[\"--un-border-style\", s], ...directionMap[a].map((i) => [`border${i}-style`, s])];\n}\n//#endregion\n//#region src/rules/color.ts\n/**\n* @example op10 op-30 opacity-100\n*/\nconst opacity = [[/^op(?:acity)?-?(.+)$/, ([, d], { theme }) => ({ opacity: h.bracket.percent.cssvar(d, theme) })]];\nconst bgUrlRE = /^\\[url\\(.+\\)\\]$/;\nconst bgLengthRE = /^\\[(?:length|size):.+\\]$/;\nconst bgPositionRE = /^\\[position:.+\\]$/;\nconst bgGradientRE = /^\\[(?:linear|conic|radial)-gradient\\(.+\\)\\]$/;\nconst bgImageRE = /^\\[image:.+\\]$/;\nconst bgColors = [[\n\t/^bg-(.+)$/,\n\t(match, ctx) => {\n\t\tconst d = match[1];\n\t\tconst { theme } = ctx;\n\t\tif (bgUrlRE.test(d)) return {\n\t\t\t\"--un-url\": h.bracket(d, theme),\n\t\t\t\"background-image\": \"var(--un-url)\"\n\t\t};\n\t\tconst bracketLength = h.bracketOfLength(d, theme);\n\t\tif (bgLengthRE.test(d) && bracketLength != null) return { \"background-size\": bracketLength.split(\" \").map((e) => h.fraction.auto.px.cssvar(e) ?? e).join(\" \") };\n\t\tconst bracketPosition = h.bracketOfPosition(d, theme);\n\t\tif ((isSize(d) || bgPositionRE.test(d)) && bracketPosition != null) return { \"background-position\": bracketPosition.split(\" \").map((e) => h.position.fraction.auto.px.cssvar(e) ?? e).join(\" \") };\n\t\tif (bgGradientRE.test(d) || bgImageRE.test(d)) {\n\t\t\tconst s = h.bracket(d, theme);\n\t\t\tif (s) return { \"background-image\": (s.startsWith(\"http\") ? `url(${s})` : h.cssvar(s)) ?? s };\n\t\t}\n\t\treturn colorResolver(\"background-color\", \"bg\")(match, ctx);\n\t},\n\t{ autocomplete: \"bg-$colors\" }\n], [\n\t/^bg-op(?:acity)?-?(.+)$/,\n\t([, opacity], { theme }) => ({ \"--un-bg-opacity\": h.bracket.percent.cssvar(opacity, theme) }),\n\t{ autocomplete: \"bg-(op|opacity)-<percent>\" }\n]];\nconst colorScheme = [[/^(?:color-)?scheme-(.+)$/, ([, v]) => ({ \"color-scheme\": v.split(\"-\").join(\" \") })]];\n//#endregion\n//#region src/rules/columns.ts\nconst columns = [\n\t[\n\t\t/^columns-(.+)$/,\n\t\t([, v], { theme }) => {\n\t\t\tif (theme.container && v in theme.container) {\n\t\t\t\tthemeTracking(\"container\", v);\n\t\t\t\treturn { columns: generateThemeVariable(\"container\", v) };\n\t\t\t}\n\t\t\treturn { columns: h.bracket.numberWithUnit.number.cssvar(v, theme) };\n\t\t},\n\t\t{ autocomplete: [\"columns-<num>\", \"columns-$container\"] }\n\t],\n\t[\"columns-auto\", { columns: \"auto\" }],\n\t[\"break-before-auto\", { \"break-before\": \"auto\" }],\n\t[\"break-before-avoid\", { \"break-before\": \"avoid\" }],\n\t[\"break-before-all\", { \"break-before\": \"all\" }],\n\t[\"break-before-avoid-page\", { \"break-before\": \"avoid-page\" }],\n\t[\"break-before-page\", { \"break-before\": \"page\" }],\n\t[\"break-before-left\", { \"break-before\": \"left\" }],\n\t[\"break-before-right\", { \"break-before\": \"right\" }],\n\t[\"break-before-column\", { \"break-before\": \"column\" }],\n\t...makeGlobalStaticRules(\"break-before\"),\n\t[\"break-inside-auto\", { \"break-inside\": \"auto\" }],\n\t[\"break-inside-avoid\", { \"break-inside\": \"avoid\" }],\n\t[\"break-inside-avoid-page\", { \"break-inside\": \"avoid-page\" }],\n\t[\"break-inside-avoid-column\", { \"break-inside\": \"avoid-column\" }],\n\t...makeGlobalStaticRules(\"break-inside\"),\n\t[\"break-after-auto\", { \"break-after\": \"auto\" }],\n\t[\"break-after-avoid\", { \"break-after\": \"avoid\" }],\n\t[\"break-after-all\", { \"break-after\": \"all\" }],\n\t[\"break-after-avoid-page\", { \"break-after\": \"avoid-page\" }],\n\t[\"break-after-page\", { \"break-after\": \"page\" }],\n\t[\"break-after-left\", { \"break-after\": \"left\" }],\n\t[\"break-after-right\", { \"break-after\": \"right\" }],\n\t[\"break-after-column\", { \"break-after\": \"column\" }],\n\t...makeGlobalStaticRules(\"break-after\")\n];\n//#endregion\n//#region src/rules/decoration.ts\nconst decorationStyles = [\n\t\"solid\",\n\t\"double\",\n\t\"dotted\",\n\t\"dashed\",\n\t\"wavy\",\n\t...globalKeywords\n];\nconst textDecorations = [\n\t[\n\t\t/^(?:decoration-)?(underline|overline|line-through)$/,\n\t\t([, s]) => ({ \"text-decoration-line\": s }),\n\t\t{ autocomplete: \"decoration-(underline|overline|line-through)\" }\n\t],\n\t[\n\t\t/^(?:underline|decoration)-(?:size-)?(.+)$/,\n\t\thandleWidth$1,\n\t\t{ autocomplete: \"(underline|decoration)-<num>\" }\n\t],\n\t[\n\t\t/^(?:underline|decoration)-(auto|from-font)$/,\n\t\t([, s]) => ({ \"text-decoration-thickness\": s }),\n\t\t{ autocomplete: \"(underline|decoration)-(auto|from-font)\" }\n\t],\n\t[\n\t\t/^(?:underline|decoration)-(.+)$/,\n\t\thandleColorOrWidth$1,\n\t\t{ autocomplete: \"(underline|decoration)-$colors\" }\n\t],\n\t[\n\t\t/^(?:underline|decoration)-op(?:acity)?-?(.+)$/,\n\t\t([, opacity], { theme }) => ({ \"--un-line-opacity\": h.bracket.percent.cssvar(opacity, theme) }),\n\t\t{ autocomplete: \"(underline|decoration)-(op|opacity)-<percent>\" }\n\t],\n\t[\n\t\t/^(?:underline|decoration)-offset-(.+)$/,\n\t\t([, s], { theme }) => ({ \"text-underline-offset\": h.auto.bracket.cssvar.global.px(s, theme) }),\n\t\t{ autocomplete: \"(underline|decoration)-(offset)-<num>\" }\n\t],\n\t...decorationStyles.map((v) => [`underline-${v}`, { \"text-decoration-style\": v }]),\n\t...decorationStyles.map((v) => [`decoration-${v}`, { \"text-decoration-style\": v }]),\n\t[\"no-underline\", { \"text-decoration\": \"none\" }],\n\t[\"decoration-none\", { \"text-decoration\": \"none\" }]\n];\nfunction handleWidth$1([, b], { theme }) {\n\treturn { \"text-decoration-thickness\": h.bracket.cssvar.global.px(b, theme) };\n}\nfunction handleColorOrWidth$1(match, ctx) {\n\tif (isCSSMathFn(h.bracket(match[1], ctx.theme))) return handleWidth$1(match, ctx);\n\tconst result = colorResolver(\"text-decoration-color\", \"line\")(match, ctx);\n\tif (result) {\n\t\tconst css = result[0];\n\t\tcss[\"-webkit-text-decoration-color\"] = css[\"text-decoration-color\"];\n\t\treturn result;\n\t}\n}\n//#endregion\n//#region src/rules/spacing.ts\nconst paddings = [\n\t[\n\t\t/^pa?()-?(.+)$/,\n\t\tdirectionSize(\"padding\"),\n\t\t{ autocomplete: [\"(m|p)<num>\", \"(m|p)-<num>\"] }\n\t],\n\t[\n\t\t/^p-?xy()()$/,\n\t\tdirectionSize(\"padding\"),\n\t\t{ autocomplete: \"(m|p)-(xy)\" }\n\t],\n\t[/^p-?([xy])(?:-?(.+))?$/, directionSize(\"padding\")],\n\t[\n\t\t/^p-?([rltbse])(?:-?(.+))?$/,\n\t\tdirectionSize(\"padding\"),\n\t\t{ autocomplete: \"(m|p)<directions>-<num>\" }\n\t],\n\t[\n\t\t/^p-(block|inline)(?:-(.+))?$/,\n\t\tdirectionSize(\"padding\"),\n\t\t{ autocomplete: \"(m|p)-(block|inline)-<num>\" }\n\t],\n\t[\n\t\t/^p-?([bi][se])(?:-?(.+))?$/,\n\t\tdirectionSize(\"padding\"),\n\t\t{ autocomplete: \"(m|p)-(bs|be|is|ie)-<num>\" }\n\t]\n];\nconst margins = [\n\t[/^ma?()-?(.+)$/, directionSize(\"margin\")],\n\t[/^m-?xy()()$/, directionSize(\"margin\")],\n\t[/^m-?([xy])(?:-?(.+))?$/, directionSize(\"margin\")],\n\t[/^m-?([rltbse])(?:-?(.+))?$/, directionSize(\"margin\")],\n\t[/^m-(block|inline)(?:-(.+))?$/, directionSize(\"margin\")],\n\t[/^m-?([bi][se])(?:-?(.+))?$/, directionSize(\"margin\")]\n];\nconst spaces = [[\n\t/^space-([xy])-(.+)$/,\n\thandlerSpace,\n\t{ autocomplete: [\n\t\t\"space-(x|y)\",\n\t\t\"space-(x|y)-reverse\",\n\t\t\"space-(x|y)-$spacing\"\n\t] }\n], [/^space-([xy])-reverse$/, function* ([m, d], { symbols }) {\n\tyield {\n\t\t[symbols.variants]: [notLastChildSelectorVariant(m)],\n\t\t[`--un-space-${d}-reverse`]: \"1\"\n\t};\n\tyield defineProperty(`--un-space-${d}-reverse`, { initialValue: 0 });\n}]];\nfunction notLastChildSelectorVariant(s) {\n\treturn {\n\t\tmatcher: s,\n\t\torder: 1,\n\t\thandle: (input, next) => next({\n\t\t\t...input,\n\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}${input.selector}`,\n\t\t\tselector: \":where(&>:not(:last-child))\"\n\t\t})\n\t};\n}\nfunction* handlerSpace([m, d, s], { theme, symbols }) {\n\tlet v;\n\tconst num = numberResolver(s);\n\tif (num != null) {\n\t\tthemeTracking(`spacing`);\n\t\tv = `calc(var(--spacing) * ${num})`;\n\t} else v = theme.spacing?.[s] ?? h.bracket.cssvar.auto.fraction.rem(s || \"1\", theme);\n\tif (v != null) {\n\t\tconst results = directionMap[d === \"x\" ? \"inline\" : \"block\"].map((item, index) => {\n\t\t\treturn [`margin${item}`, `calc(${v} * ${index === 0 ? `var(--un-space-${d}-reverse)` : `calc(1 - var(--un-space-${d}-reverse))`})`];\n\t\t});\n\t\tif (results) {\n\t\t\tyield {\n\t\t\t\t[symbols.variants]: [notLastChildSelectorVariant(m)],\n\t\t\t\t[`--un-space-${d}-reverse`]: \"0\",\n\t\t\t\t...Object.fromEntries(results)\n\t\t\t};\n\t\t\tyield defineProperty(`--un-space-${d}-reverse`, { initialValue: 0 });\n\t\t}\n\t}\n}\n//#endregion\n//#region src/rules/divide.ts\nconst divides = [\n\t[\n\t\t/^divide-(.+)$/,\n\t\tfunction* (match, ctx) {\n\t\t\tconst result = colorResolver(\"border-color\", \"divide\")(match, ctx);\n\t\t\tif (result) {\n\t\t\t\tyield {\n\t\t\t\t\t[ctx.symbols.variants]: [notLastChildSelectorVariant(match[0])],\n\t\t\t\t\t...result[0]\n\t\t\t\t};\n\t\t\t\tyield result[1];\n\t\t\t}\n\t\t},\n\t\t{ autocomplete: \"divide-$colors\" }\n\t],\n\t[\n\t\t/^divide-op(?:acity)?-?(.+)$/,\n\t\tfunction* ([match, opacity], { symbols, theme }) {\n\t\t\tyield {\n\t\t\t\t[symbols.variants]: [notLastChildSelectorVariant(match)],\n\t\t\t\t\"--un-divide-opacity\": h.bracket.percent(opacity, theme)\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: [\"divide-(op|opacity)\", \"divide-(op|opacity)-<percent>\"] }\n\t],\n\t[\n\t\t/^divide-?([xy])$/,\n\t\thandlerDivide,\n\t\t{ autocomplete: [\"divide-(x|y)\", \"divide-(x|y)-reverse\"] }\n\t],\n\t[/^divide-?([xy])-?(.+)$/, handlerDivide],\n\t[/^divide-?([xy])-reverse$/, function* ([m, d], { symbols }) {\n\t\tyield {\n\t\t\t[symbols.variants]: [notLastChildSelectorVariant(m)],\n\t\t\t[`--un-divide-${d}-reverse`]: \"1\"\n\t\t};\n\t\tyield defineProperty(`--un-divide-${d}-reverse`, { initialValue: 0 });\n\t}],\n\t[\n\t\tnew RegExp(`^divide-(${borderStyles.join(\"|\")})$`),\n\t\tfunction* ([match, style], { symbols }) {\n\t\t\tyield {\n\t\t\t\t[symbols.variants]: [notLastChildSelectorVariant(match)],\n\t\t\t\t\"border-style\": style\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: borderStyles.map((i) => `divide-${i}`) }\n\t]\n];\nfunction* handlerDivide([m, d, s], { symbols, theme }) {\n\tlet v = h.bracket.cssvar.px(s || \"1\", theme);\n\tif (v != null) {\n\t\tif (v === \"0\") v = \"0px\";\n\t\tconst results = {\n\t\t\tx: [\"-left\", \"-right\"],\n\t\t\ty: [\"-top\", \"-bottom\"]\n\t\t}[d].map((item) => {\n\t\t\tconst value = item.endsWith(\"left\") || item.endsWith(\"top\") ? `calc(${v} * var(--un-divide-${d}-reverse))` : `calc(${v} * calc(1 - var(--un-divide-${d}-reverse)))`;\n\t\t\treturn [[`border${item}-width`, value], [`border${item}-style`, `var(--un-border-style)`]];\n\t\t});\n\t\tif (results) {\n\t\t\tyield {\n\t\t\t\t[symbols.variants]: [notLastChildSelectorVariant(m)],\n\t\t\t\t[`--un-divide-${d}-reverse`]: 0,\n\t\t\t\t...Object.fromEntries(results.flat())\n\t\t\t};\n\t\t\tyield defineProperty(`--un-divide-${d}-reverse`, { initialValue: 0 });\n\t\t\tyield defineProperty(`--un-border-style`, { initialValue: \"solid\" });\n\t\t}\n\t}\n}\n//#endregion\n//#region src/rules/filters.ts\nconst filterBaseKeys = [\n\t\"blur\",\n\t\"brightness\",\n\t\"contrast\",\n\t\"grayscale\",\n\t\"hue-rotate\",\n\t\"invert\",\n\t\"saturate\",\n\t\"sepia\",\n\t\"drop-shadow\"\n];\nconst filterProperties = filterBaseKeys.map((i) => defineProperty(`--un-${i}`));\nconst filterCSS = filterBaseKeys.map((i) => `var(--un-${i},)`).join(\" \");\nconst backdropBaseKeys = [\n\t\"backdrop-blur\",\n\t\"backdrop-brightness\",\n\t\"backdrop-contrast\",\n\t\"backdrop-grayscale\",\n\t\"backdrop-hue-rotate\",\n\t\"backdrop-invert\",\n\t\"backdrop-opacity\",\n\t\"backdrop-saturate\",\n\t\"backdrop-sepia\"\n];\nconst backdropProperties = backdropBaseKeys.map((i) => defineProperty(`--un-${i}`));\nconst backdropCSS = backdropBaseKeys.map((i) => `var(--un-${i},)`).join(\" \");\nfunction percentWithDefault(str, theme) {\n\tlet v = h.bracket.cssvar(str || \"\", theme);\n\tif (v != null) return v;\n\tv = str ? h.percent(str) : \"100%\";\n\tif (v != null && Number.parseFloat(v.slice(0, -1)) <= 100) return v;\n}\nfunction toFilter(varName, resolver) {\n\treturn ([, b, s], { theme }) => {\n\t\tconst value = resolver(s, theme) ?? (s === \"none\" ? \"0\" : \"\");\n\t\tif (value !== \"\") {\n\t\t\tif (b) return [{\n\t\t\t\t[`--un-${b}${varName}`]: `${varName}(${value})`,\n\t\t\t\t\"-webkit-backdrop-filter\": backdropCSS,\n\t\t\t\t\"backdrop-filter\": backdropCSS\n\t\t\t}, ...backdropProperties];\n\t\t\telse return [{\n\t\t\t\t[`--un-${varName}`]: `${varName}(${value})`,\n\t\t\t\tfilter: filterCSS\n\t\t\t}, ...filterProperties];\n\t\t}\n\t};\n}\nfunction dropShadowResolver(match, ctx) {\n\tconst [, s] = match;\n\tconst { theme } = ctx;\n\tlet res = [];\n\tif (s) {\n\t\tres = getStringComponents(s, \"/\", 2) ?? [];\n\t\tif (s.startsWith(\"/\")) res = [\"\", s.slice(1)];\n\t}\n\tlet v = theme.dropShadow?.[res[0] || \"DEFAULT\"];\n\tconst c = s ? h.bracket.cssvar(s, theme) : void 0;\n\tif ((v != null || c != null) && !hasParseableColor(c, theme)) {\n\t\tconst alpha = res[1] ? h.bracket.percent.cssvar(res[1], theme) : void 0;\n\t\treturn [{\n\t\t\t\"--un-drop-shadow-opacity\": alpha,\n\t\t\t\"--un-drop-shadow\": `drop-shadow(${colorableShadows(v || c, \"--un-drop-shadow-color\", alpha).join(\") drop-shadow(\")})`,\n\t\t\t\"filter\": filterCSS\n\t\t}, ...filterProperties];\n\t}\n\tif (hasParseableColor(s, theme)) return colorResolver(\"--un-drop-shadow-color\", \"drop-shadow\")(match, ctx);\n\tv = h.bracket.cssvar(s, theme) ?? (s === \"none\" ? \"\" : void 0);\n\tif (v != null) return [{\n\t\t\"--un-drop-shadow\": v ? `drop-shadow(${v})` : v,\n\t\t\"filter\": filterCSS\n\t}, ...filterProperties];\n}\nconst filters = [\n\t[\n\t\t/^(?:(backdrop-)|filter-)?blur(?:-(.+))?$/,\n\t\ttoFilter(\"blur\", (s, theme) => theme.blur?.[s || \"DEFAULT\"] || h.bracket.cssvar.px(s, theme)),\n\t\t{ autocomplete: [\n\t\t\t\"(backdrop|filter)-blur-$blur\",\n\t\t\t\"blur-$blur\",\n\t\t\t\"filter-blur\"\n\t\t] }\n\t],\n\t[\n\t\t/^(?:(backdrop-)|filter-)?brightness-(.+)$/,\n\t\ttoFilter(\"brightness\", (s, theme) => h.bracket.cssvar.percent(s, theme)),\n\t\t{ autocomplete: [\"(backdrop|filter)-brightness-<percent>\", \"brightness-<percent>\"] }\n\t],\n\t[\n\t\t/^(?:(backdrop-)|filter-)?contrast-(.+)$/,\n\t\ttoFilter(\"contrast\", (s, theme) => h.bracket.cssvar.percent(s, theme)),\n\t\t{ autocomplete: [\"(backdrop|filter)-contrast-<percent>\", \"contrast-<percent>\"] }\n\t],\n\t[\n\t\t/^(?:filter-)?drop-shadow(?:-?(.+))?$/,\n\t\tdropShadowResolver,\n\t\t{ autocomplete: [\n\t\t\t\"filter-drop\",\n\t\t\t\"filter-drop-shadow\",\n\t\t\t\"filter-drop-shadow-color\",\n\t\t\t\"drop-shadow\",\n\t\t\t\"drop-shadow-color\",\n\t\t\t\"filter-drop-shadow-$dropShadow\",\n\t\t\t\"drop-shadow-$dropShadow\",\n\t\t\t\"filter-drop-shadow-$colors\",\n\t\t\t\"drop-shadow-$colors\",\n\t\t\t\"filter-drop-shadow-color-$colors\",\n\t\t\t\"drop-shadow-color-$colors\",\n\t\t\t\"filter-drop-shadow-color-(op|opacity)\",\n\t\t\t\"drop-shadow-color-(op|opacity)\",\n\t\t\t\"filter-drop-shadow-color-(op|opacity)-<percent>\",\n\t\t\t\"drop-shadow(-color)?-(op|opacity)-<percent>\"\n\t\t] }\n\t],\n\t[/^(?:filter-)?drop-shadow-color-(.+)$/, colorResolver(\"--un-drop-shadow-color\", \"drop-shadow\")],\n\t[/^(?:filter-)?drop-shadow(?:-color)?-op(?:acity)?-?(.+)$/, ([, opacity], { theme }) => ({ \"--un-drop-shadow-opacity\": h.bracket.percent(opacity, theme) })],\n\t[\n\t\t/^(?:(backdrop-)|filter-)?grayscale(?:-(.+))?$/,\n\t\ttoFilter(\"grayscale\", percentWithDefault),\n\t\t{ autocomplete: [\n\t\t\t\"(backdrop|filter)-grayscale\",\n\t\t\t\"(backdrop|filter)-grayscale-<percent>\",\n\t\t\t\"grayscale-<percent>\"\n\t\t] }\n\t],\n\t[/^(?:(backdrop-)|filter-)?hue-rotate-(.+)$/, toFilter(\"hue-rotate\", (s, theme) => h.bracket.cssvar.degree(s, theme))],\n\t[\n\t\t/^(?:(backdrop-)|filter-)?invert(?:-(.+))?$/,\n\t\ttoFilter(\"invert\", percentWithDefault),\n\t\t{ autocomplete: [\n\t\t\t\"(backdrop|filter)-invert\",\n\t\t\t\"(backdrop|filter)-invert-<percent>\",\n\t\t\t\"invert-<percent>\"\n\t\t] }\n\t],\n\t[\n\t\t/^(backdrop-)op(?:acity)?-(.+)$/,\n\t\ttoFilter(\"opacity\", (s, theme) => h.bracket.cssvar.percent(s, theme)),\n\t\t{ autocomplete: [\"backdrop-(op|opacity)\", \"backdrop-(op|opacity)-<percent>\"] }\n\t],\n\t[\n\t\t/^(?:(backdrop-)|filter-)?saturate-(.+)$/,\n\t\ttoFilter(\"saturate\", (s, theme) => h.bracket.cssvar.percent(s, theme)),\n\t\t{ autocomplete: [\n\t\t\t\"(backdrop|filter)-saturate\",\n\t\t\t\"(backdrop|filter)-saturate-<percent>\",\n\t\t\t\"saturate-<percent>\"\n\t\t] }\n\t],\n\t[\n\t\t/^(?:(backdrop-)|filter-)?sepia(?:-(.+))?$/,\n\t\ttoFilter(\"sepia\", percentWithDefault),\n\t\t{ autocomplete: [\n\t\t\t\"(backdrop|filter)-sepia\",\n\t\t\t\"(backdrop|filter)-sepia-<percent>\",\n\t\t\t\"sepia-<percent>\"\n\t\t] }\n\t],\n\t[\"filter\", { filter: filterCSS }],\n\t[\"backdrop-filter\", {\n\t\t\"-webkit-backdrop-filter\": backdropCSS,\n\t\t\"backdrop-filter\": backdropCSS\n\t}],\n\t[\"filter-none\", { filter: \"none\" }],\n\t[\"backdrop-filter-none\", {\n\t\t\"-webkit-backdrop-filter\": \"none\",\n\t\t\"backdrop-filter\": \"none\"\n\t}],\n\t...globalKeywords.map((keyword) => [`filter-${keyword}`, { filter: keyword }]),\n\t...globalKeywords.map((keyword) => [`backdrop-filter-${keyword}`, {\n\t\t\"-webkit-backdrop-filter\": keyword,\n\t\t\"backdrop-filter\": keyword\n\t}])\n];\n//#endregion\n//#region src/rules/flex.ts\nconst flex = [\n\t[\"flex\", { display: \"flex\" }],\n\t[\"inline-flex\", { display: \"inline-flex\" }],\n\t[\"flex-inline\", { display: \"inline-flex\" }],\n\t[/^flex-(.*)$/, ([, d], { theme }) => {\n\t\tconst value = h.bracket(d, theme);\n\t\treturn { flex: value != null ? value.split(\" \").map((e) => h.cssvar.fraction(e) ?? e).join(\" \") : h.cssvar.fraction(d) };\n\t}],\n\t[\"flex-1\", { flex: \"1 1 0%\" }],\n\t[\"flex-auto\", { flex: \"1 1 auto\" }],\n\t[\"flex-initial\", { flex: \"0 1 auto\" }],\n\t[\"flex-none\", { flex: \"none\" }],\n\t[\n\t\t/^(?:flex-)?shrink(?:-(.*))?$/,\n\t\t([, d = \"\"], { theme }) => ({ \"flex-shrink\": h.bracket.cssvar.number(d, theme) ?? 1 }),\n\t\t{ autocomplete: [\"flex-shrink-<num>\", \"shrink-<num>\"] }\n\t],\n\t[\n\t\t/^(?:flex-)?grow(?:-(.*))?$/,\n\t\t([, d = \"\"], { theme }) => ({ \"flex-grow\": h.bracket.cssvar.number(d, theme) ?? 1 }),\n\t\t{ autocomplete: [\"flex-grow-<num>\", \"grow-<num>\"] }\n\t],\n\t[\n\t\t/^(?:flex-)?basis-(.+)$/,\n\t\t([, d], { theme }) => {\n\t\t\tconst v = numberResolver(d);\n\t\t\tif (v != null) {\n\t\t\t\tthemeTracking(`spacing`);\n\t\t\t\treturn { \"flex-basis\": `calc(var(--spacing) * ${v})` };\n\t\t\t}\n\t\t\treturn { \"flex-basis\": h.bracket.cssvar.auto.fraction.rem(d, theme) };\n\t\t},\n\t\t{ autocomplete: [\"flex-basis-$spacing\", \"basis-$spacing\"] }\n\t],\n\t[\"flex-row\", { \"flex-direction\": \"row\" }],\n\t[\"flex-row-reverse\", { \"flex-direction\": \"row-reverse\" }],\n\t[\"flex-col\", { \"flex-direction\": \"column\" }],\n\t[\"flex-col-reverse\", { \"flex-direction\": \"column-reverse\" }],\n\t[\"flex-wrap\", { \"flex-wrap\": \"wrap\" }],\n\t[\"flex-wrap-reverse\", { \"flex-wrap\": \"wrap-reverse\" }],\n\t[\"flex-nowrap\", { \"flex-wrap\": \"nowrap\" }]\n];\n//#endregion\n//#region src/rules/gap.ts\nconst directions = {\n\t\"\": [\"\"],\n\t\"x\": [\"column-\"],\n\t\"y\": [\"row-\"],\n\t\"col\": [\"column-\"],\n\t\"row\": [\"row-\"]\n};\nconst directionFormatter = (p, i) => `${i}${p}`;\nconst gaps = [[\n\t/^(?:flex-|grid-)?gap-?()(.+)$/,\n\tdirectionSize(\"gap\", directions, directionFormatter),\n\t{ autocomplete: [\"gap-$spacing\", \"gap-<num>\"] }\n], [\n\t/^(?:flex-|grid-)?gap-(col|row|x|y)-?(.+)$/,\n\tdirectionSize(\"gap\", directions, directionFormatter),\n\t{ autocomplete: [\"gap-(col|row|x|y)-$spacing\", \"gap-(col|row|x|y)-<num>\"] }\n]];\nconst ruleDirections = {\n\t\"\": \"\",\n\t\"x\": \"row-\",\n\t\"y\": \"column-\",\n\t\"col\": \"column-\",\n\t\"row\": \"row-\"\n};\nconst gapRules = [\n\t[\n\t\t/^rule(?:-(x|y|col|row))?-(.+)$/,\n\t\thandlerRule,\n\t\t{ autocomplete: [\n\t\t\t\"rule-$spacing\",\n\t\t\t\"rule-<num>\",\n\t\t\t\"rule-(x|y|col|row)-$spacing\",\n\t\t\t\"rule-(x|y|col|row)-<num>\"\n\t\t] }\n\t],\n\t[\n\t\t/^rule(?:-(x|y|col|row))?(-width)?-(.+)$/,\n\t\thandlerRuleSize,\n\t\t{ autocomplete: [\n\t\t\t\"rule-$spacing\",\n\t\t\t\"rule-<num>\",\n\t\t\t\"rule-(x|y|col|row)-$spacing\",\n\t\t\t\"rule-(x|y|col|row)-<num>\"\n\t\t] }\n\t],\n\t[\n\t\t/^rule(?:-(x|y|col|row))?(-color)?-(.+)$/,\n\t\thandlerRuleColor,\n\t\t{ autocomplete: [\"rule-$colors\", \"rule-(x|y|col|row)-$colors\"] }\n\t],\n\t[\n\t\t/^rule(?:-(x|y|col|row))?-op(?:acity)?-?(.+)$/,\n\t\t([, d = \"\", v]) => ({ [`--un-${ruleDirections[d]}rule-opacity`]: h.bracket.percent(v) }),\n\t\t{ autocomplete: [\"rule-(op|opacity)-<percent>\", \"rule-(x|y|col|row)-(op|opacity)-<percent>\"] }\n\t],\n\t[\n\t\t/^rule(?:-(x|y|col|row))?(?:-style)?-(.+)$/,\n\t\thandlerRuleStyle,\n\t\t{ autocomplete: [`rule-style-(${borderStyles.join(\"|\")})`, `rule-(x|y|col|row)-style-(${borderStyles.join(\" | \")})`] }\n\t],\n\t[\n\t\t/^rule(?:-(x|y|col|row))?-break-(normal|none|intersection)/,\n\t\t([, d = \"\", v]) => ({ [`${ruleDirections[d]}rule-break`]: v }),\n\t\t{ autocomplete: [\"rule-break-(normal|none|intersection)\", \"rule-(x|y|col|row)-break-(normal|none|intersection)\"] }\n\t],\n\t[\n\t\t/^rule(?:-(x|y|col|row))?-visibility-(normal|all|none|between|around)$/,\n\t\t([, d = \"\", v]) => ({ [`${ruleDirections[d]}rule-visibility-items`]: v }),\n\t\t{ autocomplete: [\"rule-visibility-(normal|all|none|between)\", \"rule-(x|y|col|row)-visibility-(normal|all|none|between)\"] }\n\t],\n\t[\n\t\t/^rule(?:-(x|y|col|row))?-inset(?:-(cap|junction))?(?:-(start|end))?-(.+)$/,\n\t\t([, d = \"\", kind, edge, v]) => {\n\t\t\tconst p = ruleDirections[d];\n\t\t\tconst value = h.bracket.cssvar.px(v);\n\t\t\tif (value != null) return { [[\n\t\t\t\tp,\n\t\t\t\t\"rule\",\n\t\t\t\t\"inset\",\n\t\t\t\tkind,\n\t\t\t\tedge\n\t\t\t].filter(Boolean).join(\"-\")]: value };\n\t\t},\n\t\t{ autocomplete: [\n\t\t\t\"rule-inset-<num>\",\n\t\t\t\"rule-inset-(start|end)-<num>\",\n\t\t\t\"rule-inset-(cap|junction)-<num>\",\n\t\t\t\"rule-inset-(cap|junction)-(start|end)-<num>\",\n\t\t\t\"rule-(x|y|col|row)-inset-<num>\",\n\t\t\t\"rule-(x|y|col|row)-inset-(start|end)-<num>\",\n\t\t\t\"rule-(x|y|col|row)-inset-(cap|junction)-<num>\",\n\t\t\t\"rule-(x|y|col|row)-inset-(cap|junction)-(start|end)-<num>\"\n\t\t] }\n\t],\n\t[\"rule-overlap-row\", { \"rule-overlap\": \"row-over-column\" }],\n\t[\"rule-overlap-column\", { \"rule-overlap\": \"column-over-row\" }]\n];\nfunction handlerRuleStyle([, a = \"\", s]) {\n\tconst property = ruleProperty(a, \"style\");\n\tif (property && borderStyles.includes(s)) return { [property]: s };\n}\nfunction handlerRuleColor([, d = \"\", colorLabel, v], ctx) {\n\tconst property = ruleProperty(d, \"color\");\n\tconst varName = ruleProperty(d);\n\tif (!property || !varName) return;\n\tconst bracketColor = h.bracket(v);\n\tif (!colorLabel && hasRuleCSSVariable(bracketColor ?? v)) return;\n\tif (bracketColor == null) return colorResolver(property, varName)([\"\", v], ctx);\n\tconst values = splitRuleValues(bracketColor);\n\tif (values.every((c) => hasParseableColor(c, ctx.theme))) return { [property]: values.map((c) => parseColor(c, ctx.theme).color).join(\",\") };\n}\nfunction handlerRuleSize([, d = \"\", widthLabel, s = \"1\"], { theme }) {\n\tconst property = ruleProperty(d, \"width\");\n\tif (!property) return;\n\tconst v = h.bracket.cssvar.px(s, theme);\n\tif (!v) return;\n\tconst values = splitRuleValues(v).map((s) => h.cssvar.px(s) ?? s);\n\tif (!widthLabel && values.some(isRuleCSSVariable)) return;\n\tif (values.every((s) => isSize(s) || s.startsWith(\"var(\"))) return { [property]: values.join(\",\") };\n}\nfunction handlerRule([, d = \"\", v], { theme }) {\n\tconst property = ruleProperty(d);\n\tconst value = h.bracket.cssvar(v, theme);\n\tconst shorthand = value && resolveRuleShorthand(value, theme);\n\tif (property && shorthand) return { [property]: shorthand };\n}\nfunction ruleProperty(direction, suffix) {\n\tconst prefix = ruleDirections[direction];\n\tif (prefix == null) return;\n\treturn `${prefix}rule${suffix ? `-${suffix}` : \"\"}`;\n}\nfunction splitRuleValues(value) {\n\treturn value.split(splitComma).map((v) => v.trim());\n}\nfunction isRuleCSSVariable(value) {\n\treturn h.cssvar(value) != null;\n}\nfunction hasRuleCSSVariable(value) {\n\treturn splitRuleValues(value).some(isRuleCSSVariable);\n}\nfunction resolveRuleShorthand(value, theme) {\n\tconst components = getStringComponents(value, \" \", 3);\n\tif (!components) return;\n\tif (!value.startsWith(\"var(\") && !components.some((c) => borderStyles.includes(c))) return;\n\treturn components.map((c) => {\n\t\tif (hasParseableColor(c, theme)) return parseColor(c, theme).color;\n\t\treturn h.cssvar.px(c) ?? c;\n\t}).join(\" \");\n}\n//#endregion\n//#region src/rules/grid.ts\nfunction rowCol(s) {\n\treturn s.replace(\"col\", \"column\");\n}\nfunction autoDirection(prop, theme) {\n\tswitch (prop) {\n\t\tcase \"min\": return \"min-content\";\n\t\tcase \"max\": return \"max-content\";\n\t\tcase \"fr\": return \"minmax(0,1fr)\";\n\t}\n\treturn h.bracket.cssvar.auto.rem(prop, theme);\n}\nconst grids = [\n\t[\"grid\", { display: \"grid\" }],\n\t[\"inline-grid\", { display: \"inline-grid\" }],\n\t[/^(?:grid-)?(row|col)-(.+)$/, ([, c, v], { theme }) => ({ [`grid-${rowCol(c)}`]: h.bracket.number.cssvar.auto(v, theme) })],\n\t[\n\t\t/^(?:grid-)?(row|col)-span-(.+)$/,\n\t\t([, c, s], { theme }) => {\n\t\t\tif (s === \"full\") return { [`grid-${rowCol(c)}`]: \"1/-1\" };\n\t\t\tconst v = h.bracket.number.cssvar(s, theme);\n\t\t\tif (v != null) return { [`grid-${rowCol(c)}`]: `span ${v}/span ${v}` };\n\t\t},\n\t\t{ autocomplete: \"(grid-row|grid-col|row|col)-span-<num>\" }\n\t],\n\t[/^(?:grid-)?(row|col)-start-(.+)$/, ([, c, v], { theme }) => ({ [`grid-${rowCol(c)}-start`]: h.bracket.cssvar(v, theme) ?? v })],\n\t[\n\t\t/^(?:grid-)?(row|col)-end-(.+)$/,\n\t\t([, c, v], { theme }) => ({ [`grid-${rowCol(c)}-end`]: h.bracket.cssvar(v, theme) ?? v }),\n\t\t{ autocomplete: \"(grid-row|grid-col|row|col)-(start|end)-<num>\" }\n\t],\n\t[\n\t\t/^(?:grid-)?auto-(rows|cols)-(.+)$/,\n\t\t([, c, v], { theme }) => ({ [`grid-auto-${rowCol(c)}`]: autoDirection(v, theme) }),\n\t\t{ autocomplete: \"(grid-auto|auto)-(rows|cols)-<num>\" }\n\t],\n\t[/^(?:grid-auto-flow|auto-flow|grid-flow)-(.+)$/, ([, v], { theme }) => ({ \"grid-auto-flow\": h.bracket.cssvar(v, theme) })],\n\t[\n\t\t/^(?:grid-auto-flow|auto-flow|grid-flow)-(row|col|dense|row-dense|col-dense)$/,\n\t\t([, v]) => ({ \"grid-auto-flow\": rowCol(v).replace(\"-\", \" \") }),\n\t\t{ autocomplete: [\"(grid-auto-flow|auto-flow|grid-flow)-(row|col|dense|row-dense|col-dense)\"] }\n\t],\n\t[/^(?:grid-)?(rows|cols)-(.+)$/, ([, c, v], { theme }) => ({ [`grid-template-${rowCol(c)}`]: h.bracket.cssvar(v, theme) })],\n\t[/^(?:grid-)?(rows|cols)-minmax-([\\w.-]+)$/, ([, c, d]) => ({ [`grid-template-${rowCol(c)}`]: `repeat(auto-fill,minmax(${d},1fr))` })],\n\t[\n\t\t/^(?:grid-)?(rows|cols)-(\\d+)$/,\n\t\t([, c, d]) => ({ [`grid-template-${rowCol(c)}`]: `repeat(${d},minmax(0,1fr))` }),\n\t\t{ autocomplete: \"(grid-rows|grid-cols|rows|cols)-<num>\" }\n\t],\n\t[/^grid-area(s)?-(.+)$/, ([, s, v], { theme }) => {\n\t\tif (s != null) return { \"grid-template-areas\": h.cssvar(v) ?? v.split(\"-\").map((s) => `\"${h.bracket(s, theme)}\"`).join(\" \") };\n\t\treturn { \"grid-area\": h.bracket.cssvar(v, theme) };\n\t}],\n\t[\"grid-rows-none\", { \"grid-template-rows\": \"none\" }],\n\t[\"grid-cols-none\", { \"grid-template-columns\": \"none\" }],\n\t[\"grid-rows-subgrid\", { \"grid-template-rows\": \"subgrid\" }],\n\t[\"grid-cols-subgrid\", { \"grid-template-columns\": \"subgrid\" }]\n];\n//#endregion\n//#region src/rules/layout.ts\nconst overflowValues = [\n\t\"auto\",\n\t\"hidden\",\n\t\"clip\",\n\t\"visible\",\n\t\"scroll\",\n\t\"overlay\",\n\t...globalKeywords\n];\nconst overflows = [[\n\t/^(?:overflow|of)-(.+)$/,\n\t([, v]) => overflowValues.includes(v) ? { overflow: v } : void 0,\n\t{ autocomplete: [`(overflow|of)-(${overflowValues.join(\"|\")})`, `(overflow|of)-(x|y)-(${overflowValues.join(\"|\")})`] }\n], [/^(?:overflow|of)-([xy])-(.+)$/, ([, d, v]) => overflowValues.includes(v) ? { [`overflow-${d}`]: v } : void 0]];\n//#endregion\n//#region src/rules/line-clamp.ts\nconst lineClamps = [[\n\t/^line-clamp-(\\d+)$/,\n\t([, v]) => ({\n\t\t\"overflow\": \"hidden\",\n\t\t\"display\": \"-webkit-box\",\n\t\t\"-webkit-box-orient\": \"vertical\",\n\t\t\"-webkit-line-clamp\": v\n\t}),\n\t{ autocomplete: [\"line-clamp\", \"line-clamp-(1|2|3|4|5|6|none)\"] }\n], [\"line-clamp-none\", {\n\t\"overflow\": \"visible\",\n\t\"display\": \"block\",\n\t\"-webkit-box-orient\": \"horizontal\",\n\t\"-webkit-line-clamp\": \"unset\"\n}]];\n//#endregion\n//#region src/rules/mask.ts\nconst linearMap = {\n\tt: [\"top\"],\n\tb: [\"bottom\"],\n\tl: [\"left\"],\n\tr: [\"right\"],\n\tx: [\"left\", \"right\"],\n\ty: [\"top\", \"bottom\"]\n};\nconst maskInitialValue = \"linear-gradient(#fff, #fff)\";\nconst baseMaskImage = {\n\t\"mask-image\": \"var(--un-mask-linear), var(--un-mask-radial), var(--un-mask-conic)\",\n\t\"mask-composite\": \"intersect\"\n};\nfunction handlePosition([, v = \"\"], ctx) {\n\tif (v in cornerMap) return { \"mask-position\": v.split(\"\").flatMap((c) => linearMap[c]).join(\" \") };\n\tconst _v = h.bracket.cssvar.global.position(v, ctx?.theme);\n\tif (_v !== null) return { \"mask-position\": _v };\n}\nfunction handleImage([_, gradient = \"\", direction, val], ctx) {\n\tconst css = { ...baseMaskImage };\n\tconst props = [];\n\tprops.push(...[\n\t\t\"linear\",\n\t\t\"radial\",\n\t\t\"conic\"\n\t].map((g) => defineProperty(`--un-mask-${g}`, { initialValue: maskInitialValue })));\n\tif (gradient in linearMap) {\n\t\tcss[\"--un-mask-linear\"] = \"var(--un-mask-left), var(--un-mask-right), var(--un-mask-bottom), var(--un-mask-top)\";\n\t\tfor (const dir of linearMap[gradient]) {\n\t\t\tcss[`--un-mask-${dir}`] = `linear-gradient(to ${dir}, var(--un-mask-${dir}-from-color) var(--un-mask-${dir}-from-position), var(--un-mask-${dir}-to-color) var(--un-mask-${dir}-to-position))`;\n\t\t\tif (numberResolver(val) != null) {\n\t\t\t\tthemeTracking(\"spacing\");\n\t\t\t\tcss[`--un-mask-${dir}-${direction}-position`] = `calc(var(--spacing) * ${h.bracket.cssvar.fraction.number(val, ctx.theme)})`;\n\t\t\t} else css[`--un-mask-${dir}-${direction}-position`] = h.bracket.cssvar.fraction.rem(val, ctx.theme);\n\t\t\tif (hasParseableColor(val, ctx.theme)) {\n\t\t\t\tconst result = colorResolver(`--un-mask-${dir}-${direction}-color`, hyphenate(\"colors\"))([_, val], ctx);\n\t\t\t\tif (result) {\n\t\t\t\t\tconst [c, ...p] = result;\n\t\t\t\t\tObject.assign(css, c);\n\t\t\t\t\tprops.push(...p);\n\t\t\t\t}\n\t\t\t}\n\t\t\tprops.push(...[\"from\", \"to\"].flatMap((p) => [defineProperty(`--un-mask-${dir}-${p}-position`, {\n\t\t\t\tsyntax: \"<length-percentage>\",\n\t\t\t\tinitialValue: p === \"from\" ? \"0%\" : \"100%\"\n\t\t\t}), defineProperty(`--un-mask-${dir}-${p}-color`, {\n\t\t\t\tsyntax: \"<color>\",\n\t\t\t\tinitialValue: p === \"from\" ? \"black\" : \"transparent\"\n\t\t\t})]));\n\t\t}\n\t\tprops.push(...[\n\t\t\t\"top\",\n\t\t\t\"right\",\n\t\t\t\"bottom\",\n\t\t\t\"left\"\n\t\t].map((d) => defineProperty(`--un-mask-${d}`, { initialValue: maskInitialValue })));\n\t} else {\n\t\tif (direction == null) {\n\t\t\tif (gradient === \"radial\") {\n\t\t\t\tcss[\"--un-mask-radial\"] = \"radial-gradient(var(--un-mask-radial-stops, var(--un-mask-radial-size)))\";\n\t\t\t\tcss[\"--un-mask-radial-size\"] = h.bracket.cssvar.rem(val, ctx.theme);\n\t\t\t} else {\n\t\t\t\tcss[`--un-mask-${gradient}`] = `${gradient}-gradient(var(--un-mask-${gradient}-stops, var(--un-mask-${gradient}-position)))`;\n\t\t\t\tcss[`--un-mask-${gradient}-position`] = numberResolver(val) ? `calc(1deg * ${h.bracket.cssvar.number(val, ctx.theme)})` : h.bracket.cssvar.fraction(val, ctx.theme);\n\t\t\t}\n\t\t} else {\n\t\t\tconst gradientStopsPrefixMap = {\n\t\t\t\tlinear: \"\",\n\t\t\t\tradial: \"var(--un-mask-radial-shape) var(--un-mask-radial-size) at \",\n\t\t\t\tconic: \"from \"\n\t\t\t};\n\t\t\tcss[`--un-mask-${gradient}-stops`] = `${gradientStopsPrefixMap[gradient]}var(--un-mask-${gradient}-position), var(--un-mask-${gradient}-from-color) var(--un-mask-${gradient}-from-position), var(--un-mask-${gradient}-to-color) var(--un-mask-${gradient}-to-position)`;\n\t\t\tcss[`--un-mask-${gradient}`] = `${gradient}-gradient(var(--un-mask-${gradient}-stops))`;\n\t\t\tif (hasParseableColor(val, ctx.theme)) {\n\t\t\t\tconst result = colorResolver(`--un-mask-${gradient}-${direction}-color`, hyphenate(\"colors\"))([_, val], ctx);\n\t\t\t\tif (result) {\n\t\t\t\t\tconst [c, ...p] = result;\n\t\t\t\t\tObject.assign(css, c);\n\t\t\t\t\tprops.push(...p);\n\t\t\t\t}\n\t\t\t} else if (numberResolver(val) != null) {\n\t\t\t\tthemeTracking(\"spacing\");\n\t\t\t\tcss[`--un-mask-${gradient}-${direction}-position`] = `calc(var(--spacing) * ${h.bracket.cssvar.fraction.number(val, ctx.theme)})`;\n\t\t\t} else css[`--un-mask-${gradient}-${direction}-position`] = h.bracket.cssvar.fraction.rem(val, ctx.theme);\n\t\t}\n\t\tif (gradient === \"radial\") props.push(...[defineProperty(\"--un-mask-radial-shape\", { initialValue: \"ellipse\" }), defineProperty(\"--un-mask-radial-size\", { initialValue: \"farthest-corner\" })]);\n\t\tprops.push(...[\"from\", \"to\"].flatMap((p) => [\n\t\t\tdefineProperty(`--un-mask-${gradient}-position`, { initialValue: gradient === \"radial\" ? \"center\" : \"0deg\" }),\n\t\t\tdefineProperty(`--un-mask-${gradient}-${p}-position`, {\n\t\t\t\tsyntax: \"<length-percentage>\",\n\t\t\t\tinitialValue: p === \"from\" ? \"0%\" : \"100%\"\n\t\t\t}),\n\t\t\tdefineProperty(`--un-mask-${gradient}-${p}-color`, {\n\t\t\t\tsyntax: \"<color>\",\n\t\t\t\tinitialValue: p === \"from\" ? \"black\" : \"transparent\"\n\t\t\t})\n\t\t]));\n\t}\n\treturn [css, ...props];\n}\nfunction handleSize$1([, v = \"\"], ctx) {\n\tconst _v = h.bracket.cssvar.global.fraction.rem(v, ctx?.theme);\n\tif (_v !== null) return { \"mask-size\": _v };\n}\nconst masks = [\n\t[\"mask-clip-border\", { \"mask-clip\": \"border-box\" }],\n\t[\"mask-clip-padding\", { \"mask-clip\": \"padding-box\" }],\n\t[\"mask-clip-content\", { \"mask-clip\": \"content-box\" }],\n\t[\"mask-clip-fill\", { \"mask-clip\": \"fill-box\" }],\n\t[\"mask-clip-stroke\", { \"mask-clip\": \"stroke-box\" }],\n\t[\"mask-clip-view\", { \"mask-clip\": \"view-box\" }],\n\t[\"mask-no-clip\", { \"mask-clip\": \"no-clip\" }],\n\t[\"mask-add\", { \"mask-composite\": \"add\" }],\n\t[\"mask-subtract\", { \"mask-composite\": \"subtract\" }],\n\t[\"mask-intersect\", { \"mask-composite\": \"intersect\" }],\n\t[\"mask-exclude\", { \"mask-composite\": \"exclude\" }],\n\t[/^mask-(.+)$/, ([, v], { theme }) => ({ \"mask-image\": h.bracket.cssvar(v, theme) })],\n\t[\n\t\t/^mask-(linear|radial|conic|[xytblr])-(from|to)()(?:-(.+))?$/,\n\t\thandleImage,\n\t\t{ autocomplete: [\n\t\t\t\"mask-(linear|radial|conic)-(from|to)-$colors\",\n\t\t\t\"mask-(linear|radial|conic)-(from|to)-<percentage>\",\n\t\t\t\"mask-(linear|radial|conic)-(from|to)\",\n\t\t\t\"mask-(linear|radial|conic)-<percent>\",\n\t\t\t\"mask-(x|y|t|b|l|r)-(from|to)-$colors\",\n\t\t\t\"mask-(x|y|t|b|l|r)-(from|to)-<percentage>\",\n\t\t\t\"mask-(x|y|t|b|l|r)-(from|to)\",\n\t\t\t\"mask-(x|y|t|b|l|r)-<percent>\"\n\t\t] }\n\t],\n\t[/^mask-(linear|radial|conic)-(from|to)?-?(.*)$/, handleImage],\n\t[/^mask-([trblxy])-(from|to)-(.*)$/, handleImage],\n\t[\"mask-none\", { \"mask-image\": \"none\" }],\n\t[\"mask-radial-circle\", { \"--un-mask-radial-shape\": \"circle\" }],\n\t[\"mask-radial-ellipse\", { \"--un-mask-radial-shape\": \"ellipse\" }],\n\t[\"mask-radial-closest-side\", { \"--un-mask-radial-size\": \"closest-side\" }],\n\t[\"mask-radial-closest-corner\", { \"--un-mask-radial-size\": \"closest-corner\" }],\n\t[\"mask-radial-farthest-side\", { \"--un-mask-radial-size\": \"farthest-side\" }],\n\t[\"mask-radial-farthest-corner\", { \"--un-mask-radial-size\": \"farthest-corner\" }],\n\t[\n\t\t/^mask-radial-at-([-\\w]{3,})$/,\n\t\t([, s]) => ({ \"--un-mask-radial-position\": positionMap[s] }),\n\t\t{ autocomplete: [`mask-radial-at-(${Object.keys(positionMap).filter((p) => p.length > 2).join(\"|\")})`] }\n\t],\n\t[\"mask-alpha\", { \"mask-mode\": \"alpha\" }],\n\t[\"mask-luminance\", { \"mask-mode\": \"luminance\" }],\n\t[\"mask-match\", { \"mask-mode\": \"match-source\" }],\n\t[\"mask-origin-border\", { \"mask-origin\": \"border-box\" }],\n\t[\"mask-origin-padding\", { \"mask-origin\": \"padding-box\" }],\n\t[\"mask-origin-content\", { \"mask-origin\": \"content-box\" }],\n\t[\"mask-origin-fill\", { \"mask-origin\": \"fill-box\" }],\n\t[\"mask-origin-stroke\", { \"mask-origin\": \"stroke-box\" }],\n\t[\"mask-origin-view\", { \"mask-origin\": \"view-box\" }],\n\t[/^mask-([rltb]{1,2})$/, handlePosition],\n\t[/^mask-([-\\w]{3,})$/, ([, s]) => ({ \"mask-position\": positionMap[s] })],\n\t[/^mask-(?:position-|pos-)(.+)$/, handlePosition],\n\t[\"mask-repeat\", { \"mask-repeat\": \"repeat\" }],\n\t[\"mask-no-repeat\", { \"mask-repeat\": \"no-repeat\" }],\n\t[\"mask-repeat-x\", { \"mask-repeat\": \"repeat-x\" }],\n\t[\"mask-repeat-y\", { \"mask-repeat\": \"repeat-y\" }],\n\t[\"mask-repeat-space\", { \"mask-repeat\": \"space\" }],\n\t[\"mask-repeat-round\", { \"mask-repeat\": \"round\" }],\n\t[\"mask-auto\", { \"mask-size\": \"auto\" }],\n\t[\"mask-cover\", { \"mask-size\": \"cover\" }],\n\t[\"mask-contain\", { \"mask-size\": \"contain\" }],\n\t[/^mask-size-(.+)$/, handleSize$1],\n\t[\"mask-type-luminance\", { \"mask-type\": \"luminance\" }],\n\t[\"mask-type-alpha\", { \"mask-type\": \"alpha\" }]\n];\n//#endregion\n//#region src/rules/placeholder.ts\nconst placeholders = [[\n\t/^\\$ placeholder-(.+)$/,\n\tcolorResolver(\"color\", \"placeholder\"),\n\t{ autocomplete: \"placeholder-$colors\" }\n], [\n\t/^\\$ placeholder-op(?:acity)?-?(.+)$/,\n\t([, opacity], { theme }) => ({ \"--un-placeholder-opacity\": h.bracket.percent(opacity, theme) }),\n\t{ autocomplete: [\"placeholder-(op|opacity)\", \"placeholder-(op|opacity)-<percent>\"] }\n]];\n//#endregion\n//#region src/rules/position.ts\nconst positions = [\n\t[\n\t\t/^(?:position-|pos-)?(relative|absolute|fixed|sticky)$/,\n\t\t([, v]) => ({ position: v }),\n\t\t{ autocomplete: [\n\t\t\t\"(position|pos)-<position>\",\n\t\t\t\"(position|pos)-<globalKeyword>\",\n\t\t\t\"<position>\"\n\t\t] }\n\t],\n\t[/^(?:position-|pos-)([-\\w]+)$/, ([, v]) => globalKeywords.includes(v) ? { position: v } : void 0],\n\t[/^(?:position-|pos-)?(static)$/, ([, v]) => ({ position: v })]\n];\nconst justifies = [\n\t[\"justify-start\", { \"justify-content\": \"flex-start\" }],\n\t[\"justify-end\", { \"justify-content\": \"flex-end\" }],\n\t[\"justify-center\", { \"justify-content\": \"center\" }],\n\t[\"justify-between\", { \"justify-content\": \"space-between\" }],\n\t[\"justify-around\", { \"justify-content\": \"space-around\" }],\n\t[\"justify-evenly\", { \"justify-content\": \"space-evenly\" }],\n\t[\"justify-stretch\", { \"justify-content\": \"stretch\" }],\n\t[\"justify-left\", { \"justify-content\": \"left\" }],\n\t[\"justify-right\", { \"justify-content\": \"right\" }],\n\t[\"justify-center-safe\", { \"justify-content\": \"safe center\" }],\n\t[\"justify-end-safe\", { \"justify-content\": \"safe flex-end\" }],\n\t[\"justify-normal\", { \"justify-content\": \"normal\" }],\n\t...makeGlobalStaticRules(\"justify\", \"justify-content\"),\n\t[\"justify-items-start\", { \"justify-items\": \"start\" }],\n\t[\"justify-items-end\", { \"justify-items\": \"end\" }],\n\t[\"justify-items-center\", { \"justify-items\": \"center\" }],\n\t[\"justify-items-stretch\", { \"justify-items\": \"stretch\" }],\n\t[\"justify-items-center-safe\", { \"justify-items\": \"safe center\" }],\n\t[\"justify-items-end-safe\", { \"justify-items\": \"safe flex-end\" }],\n\t...makeGlobalStaticRules(\"justify-items\"),\n\t[\"justify-self-auto\", { \"justify-self\": \"auto\" }],\n\t[\"justify-self-start\", { \"justify-self\": \"start\" }],\n\t[\"justify-self-end\", { \"justify-self\": \"end\" }],\n\t[\"justify-self-center\", { \"justify-self\": \"center\" }],\n\t[\"justify-self-stretch\", { \"justify-self\": \"stretch\" }],\n\t[\"justify-self-baseline\", { \"justify-self\": \"baseline\" }],\n\t[\"justify-self-center-safe\", { \"justify-self\": \"safe center\" }],\n\t[\"justify-self-end-safe\", { \"justify-self\": \"safe flex-end\" }],\n\t...makeGlobalStaticRules(\"justify-self\")\n];\nconst orders = [\n\t[/^order-(.+)$/, ([, v], { theme }) => ({ order: h.bracket.cssvar.number(v, theme) })],\n\t[\"order-first\", { order: \"calc(-infinity)\" }],\n\t[\"order-last\", { order: \"calc(infinity)\" }],\n\t[\"order-none\", { order: \"0\" }]\n];\nconst alignments = [\n\t[\"content-center\", { \"align-content\": \"center\" }],\n\t[\"content-start\", { \"align-content\": \"flex-start\" }],\n\t[\"content-end\", { \"align-content\": \"flex-end\" }],\n\t[\"content-between\", { \"align-content\": \"space-between\" }],\n\t[\"content-around\", { \"align-content\": \"space-around\" }],\n\t[\"content-evenly\", { \"align-content\": \"space-evenly\" }],\n\t[\"content-baseline\", { \"align-content\": \"baseline\" }],\n\t[\"content-center-safe\", { \"align-content\": \"safe center\" }],\n\t[\"content-end-safe\", { \"align-content\": \"safe flex-end\" }],\n\t[\"content-stretch\", { \"align-content\": \"stretch\" }],\n\t[\"content-normal\", { \"align-content\": \"normal\" }],\n\t...makeGlobalStaticRules(\"content\", \"align-content\"),\n\t[\"items-start\", { \"align-items\": \"flex-start\" }],\n\t[\"items-end\", { \"align-items\": \"flex-end\" }],\n\t[\"items-center\", { \"align-items\": \"center\" }],\n\t[\"items-baseline\", { \"align-items\": \"baseline\" }],\n\t[\"items-stretch\", { \"align-items\": \"stretch\" }],\n\t[\"items-baseline-last\", { \"align-items\": \"last baseline\" }],\n\t[\"items-center-safe\", { \"align-items\": \"safe center\" }],\n\t[\"items-end-safe\", { \"align-items\": \"safe flex-end\" }],\n\t...makeGlobalStaticRules(\"items\", \"align-items\"),\n\t[\"self-auto\", { \"align-self\": \"auto\" }],\n\t[\"self-start\", { \"align-self\": \"flex-start\" }],\n\t[\"self-end\", { \"align-self\": \"flex-end\" }],\n\t[\"self-center\", { \"align-self\": \"center\" }],\n\t[\"self-stretch\", { \"align-self\": \"stretch\" }],\n\t[\"self-baseline\", { \"align-self\": \"baseline\" }],\n\t[\"self-baseline-last\", { \"align-self\": \"last baseline\" }],\n\t[\"self-center-safe\", { \"align-self\": \"safe center\" }],\n\t[\"self-end-safe\", { \"align-self\": \"safe flex-end\" }],\n\t...makeGlobalStaticRules(\"self\", \"align-self\")\n];\nconst placements = [\n\t[\"place-content-center\", { \"place-content\": \"center\" }],\n\t[\"place-content-start\", { \"place-content\": \"start\" }],\n\t[\"place-content-end\", { \"place-content\": \"end\" }],\n\t[\"place-content-between\", { \"place-content\": \"space-between\" }],\n\t[\"place-content-around\", { \"place-content\": \"space-around\" }],\n\t[\"place-content-evenly\", { \"place-content\": \"space-evenly\" }],\n\t[\"place-content-stretch\", { \"place-content\": \"stretch\" }],\n\t[\"place-content-baseline\", { \"place-content\": \"baseline\" }],\n\t[\"place-content-center-safe\", { \"place-content\": \"safe center\" }],\n\t[\"place-content-end-safe\", { \"place-content\": \"safe flex-end\" }],\n\t...makeGlobalStaticRules(\"place-content\"),\n\t[\"place-items-start\", { \"place-items\": \"start\" }],\n\t[\"place-items-end\", { \"place-items\": \"end\" }],\n\t[\"place-items-center\", { \"place-items\": \"center\" }],\n\t[\"place-items-stretch\", { \"place-items\": \"stretch\" }],\n\t[\"place-items-baseline\", { \"place-items\": \"baseline\" }],\n\t[\"place-items-center-safe\", { \"place-items\": \"safe center\" }],\n\t[\"place-items-end-safe\", { \"place-items\": \"safe flex-end\" }],\n\t...makeGlobalStaticRules(\"place-items\"),\n\t[\"place-self-auto\", { \"place-self\": \"auto\" }],\n\t[\"place-self-start\", { \"place-self\": \"start\" }],\n\t[\"place-self-end\", { \"place-self\": \"end\" }],\n\t[\"place-self-center\", { \"place-self\": \"center\" }],\n\t[\"place-self-stretch\", { \"place-self\": \"stretch\" }],\n\t[\"place-self-center-safe\", { \"place-self\": \"safe center\" }],\n\t[\"place-self-end-safe\", { \"place-self\": \"safe flex-end\" }],\n\t...makeGlobalStaticRules(\"place-self\")\n];\n/**\n* This is to add `flex-` and `grid-` prefix to the alignment rules,\n* supporting `flex=\"~ items-center\"` in attributify mode.\n*/\nconst flexGridJustifiesAlignments = [\n\t...justifies,\n\t...alignments,\n\t...placements\n].flatMap(([k, v]) => [[`flex-${k}`, v], [`grid-${k}`, v]]);\nfunction handleInsetValue(v, theme) {\n\tconst _v = numberResolver(v);\n\tif (_v != null) {\n\t\tthemeTracking(`spacing`);\n\t\treturn `calc(var(--spacing) * ${_v})`;\n\t} else return h.bracket.cssvar.global.auto.fraction.rem(v, theme);\n}\nfunction handleInsetValues([, d, v], { theme }) {\n\tconst r = handleInsetValue(v, theme);\n\tif (r != null && d in insetMap) return insetMap[d].map((i) => [i.slice(1), r]);\n}\nconst insets = [\n\t[\n\t\t/^(?:position-|pos-)?inset-(.+)$/,\n\t\t([, v], { theme }) => ({ inset: handleInsetValue(v, theme) }),\n\t\t{ autocomplete: [\n\t\t\t\"(position|pos)-inset-<directions>-$spacing\",\n\t\t\t\"(position|pos)-inset-(block|inline)-$spacing\",\n\t\t\t\"(position|pos)-inset-(bs|be|is|ie)-$spacing\",\n\t\t\t\"(position|pos)-(top|left|right|bottom)-$spacing\"\n\t\t] }\n\t],\n\t[/^(?:position-|pos-)?(start|end)-(.+)$/, handleInsetValues],\n\t[/^(?:position-|pos-)?inset-([xy])-(.+)$/, handleInsetValues],\n\t[/^(?:position-|pos-)?inset-([rltbse])-(.+)$/, handleInsetValues],\n\t[/^(?:position-|pos-)?inset-(block|inline)-(.+)$/, handleInsetValues],\n\t[/^(?:position-|pos-)?inset-([bi][se])-(.+)$/, handleInsetValues],\n\t[/^(?:position-|pos-)?(top|left|right|bottom)-(.+)$/, ([, d, v], { theme }) => ({ [d]: handleInsetValue(v, theme) })]\n];\nconst floats = [\n\t[\"float-left\", { float: \"left\" }],\n\t[\"float-right\", { float: \"right\" }],\n\t[\"float-start\", { float: \"inline-start\" }],\n\t[\"float-end\", { float: \"inline-end\" }],\n\t[\"float-none\", { float: \"none\" }],\n\t...makeGlobalStaticRules(\"float\"),\n\t[\"clear-left\", { clear: \"left\" }],\n\t[\"clear-right\", { clear: \"right\" }],\n\t[\"clear-both\", { clear: \"both\" }],\n\t[\"clear-start\", { clear: \"inline-start\" }],\n\t[\"clear-end\", { clear: \"inline-end\" }],\n\t[\"clear-none\", { clear: \"none\" }],\n\t...makeGlobalStaticRules(\"clear\")\n];\nconst zIndexes = [[/^(?:position-|pos-)?z([\\d.]+)$/, ([, v]) => ({ \"z-index\": h.number(v) })], [\n\t/^(?:position-|pos-)?z-(.+)$/,\n\t([, v], { theme }) => ({ \"z-index\": h.bracket.cssvar.global.auto.number(v, theme) }),\n\t{ autocomplete: \"z-<num>\" }\n]];\nconst boxSizing = [\n\t[\"box-border\", { \"box-sizing\": \"border-box\" }],\n\t[\"box-content\", { \"box-sizing\": \"content-box\" }],\n\t...makeGlobalStaticRules(\"box\", \"box-sizing\")\n];\n//#endregion\n//#region src/rules/question-mark.ts\n/**\n* Used for debugging, only available in development mode.\n*\n* @example `?` / `where`\n*/\nconst questionMark = [[/^(where|\\?)$/, (_, { constructCSS, generator }) => {\n\tif (generator.userConfig.envMode === \"dev\") return `@keyframes __un_qm{0%{box-shadow:inset 4px 4px #ff1e90, inset -4px -4px #ff1e90}100%{box-shadow:inset 8px 8px #3399ff, inset -8px -8px #3399ff}} ${constructCSS({ animation: \"__un_qm 0.5s ease-in-out alternate infinite\" })}`;\n}]];\n//#endregion\n//#region src/rules/shadow.ts\nconst shadowProperties = {\n\tshadow: defineProperty(\"--un-shadow\", { initialValue: \"0 0 #0000\" }),\n\tshadowColor: defineProperty(\"--un-shadow-color\"),\n\tinsetShadow: defineProperty(\"--un-inset-shadow\", { initialValue: \"0 0 #0000\" }),\n\tinsetShadowColor: defineProperty(\"--un-inset-shadow-color\"),\n\tringColor: defineProperty(\"--un-ring-color\"),\n\tringShadow: defineProperty(\"--un-ring-shadow\", { initialValue: \"0 0 #0000\" }),\n\tinsetRingColor: defineProperty(\"--un-inset-ring-color\"),\n\tinsetRingShadow: defineProperty(\"--un-inset-ring-shadow\", { initialValue: \"0 0 #0000\" }),\n\tringInset: defineProperty(\"--un-ring-inset\"),\n\tringOffsetWidth: defineProperty(\"--un-ring-offset-width\", {\n\t\tsyntax: \"<length>\",\n\t\tinitialValue: \"0px\"\n\t}),\n\tringOffsetColor: defineProperty(\"--un-ring-offset-color\"),\n\tringOffsetShadow: defineProperty(\"--un-ring-offset-shadow\", { initialValue: \"0 0 #0000\" })\n};\nconst boxShadows = [\n\t[\n\t\t/^shadow(?:-?(.+))?$/,\n\t\thandleShadow(\"shadow\"),\n\t\t{ autocomplete: [\"shadow-$colors\", \"shadow-$shadow\"] }\n\t],\n\t[\n\t\t/^shadow-op(?:acity)?-?(.+)$/,\n\t\t([, opacity], { theme }) => ({ \"--un-shadow-opacity\": h.bracket.percent.cssvar(opacity, theme) }),\n\t\t{ autocomplete: \"shadow-(op|opacity)-<percent>\" }\n\t],\n\t[\n\t\t/^inset-shadow(?:-(.+))?$/,\n\t\thandleShadow(\"insetShadow\"),\n\t\t{ autocomplete: [\"inset-shadow-$colors\", \"inset-shadow-$insetShadow\"] }\n\t],\n\t[\n\t\t/^inset-shadow-op(?:acity)?-?(.+)$/,\n\t\t([, opacity], { theme }) => ({ \"--un-inset-shadow-opacity\": h.bracket.percent.cssvar(opacity, theme) }),\n\t\t{ autocomplete: \"shadow-(op|opacity)-<percent>\" }\n\t]\n];\nfunction handleShadow(themeKey) {\n\treturn (match, ctx) => {\n\t\tconst [, d] = match;\n\t\tconst { theme } = ctx;\n\t\tlet res = [];\n\t\tif (d) {\n\t\t\tres = getStringComponents(d, \"/\", 2) ?? [];\n\t\t\tif (d.startsWith(\"/\")) res = [\"\", d.slice(1)];\n\t\t}\n\t\tconst v = theme[themeKey]?.[res[0] || \"DEFAULT\"];\n\t\tconst c = d ? h.bracket.cssvar(d, theme) : void 0;\n\t\tconst shadowVar = hyphenate(themeKey);\n\t\tif ((v != null || c != null) && !hasParseableColor(c, theme)) {\n\t\t\tconst alpha = res[1] ? h.bracket.percent.cssvar(res[1], theme) : void 0;\n\t\t\treturn [{\n\t\t\t\t[`--un-${shadowVar}-opacity`]: alpha,\n\t\t\t\t[`--un-${shadowVar}`]: colorableShadows(v || c, `--un-${shadowVar}-color`, alpha).join(\",\"),\n\t\t\t\t\"box-shadow\": \"var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)\"\n\t\t\t}, ...Object.values(shadowProperties)];\n\t\t}\n\t\treturn colorResolver(`--un-${shadowVar}-color`, shadowVar)(match, ctx);\n\t};\n}\n//#endregion\n//#region src/rules/ring.ts\nconst rings = [\n\t[/^ring(?:-(.+))?$/, ([, d], { theme }) => {\n\t\tconst v = h.bracket.px(d || \"1\", theme);\n\t\tif (v != null) return [{\n\t\t\t\"--un-ring-shadow\": `var(--un-ring-inset,) 0 0 0 calc(${v} + var(--un-ring-offset-width)) var(--un-ring-color, currentColor)`,\n\t\t\t\"box-shadow\": \"var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)\"\n\t\t}, ...Object.values(shadowProperties)];\n\t}],\n\t[\n\t\t/^ring-(.+)$/,\n\t\tcolorResolver(`--un-ring-color`, \"ring\"),\n\t\t{ autocomplete: \"ring-$colors\" }\n\t],\n\t[\n\t\t/^ring-op(?:acity)?-?(.+)$/,\n\t\t([, opacity], { theme }) => ({ \"--un-ring-opacity\": h.bracket.percent.cssvar(opacity, theme) }),\n\t\t{ autocomplete: \"ring-(op|opacity)-<percent>\" }\n\t],\n\t[/^inset-ring(?:-(.+))?$/, ([, d], { theme }) => {\n\t\tconst v = h.bracket.px(d || \"1\", theme);\n\t\tif (v != null) return [{\n\t\t\t\"--un-inset-ring-shadow\": `inset 0 0 0 ${v} var(--un-inset-ring-color, currentColor)`,\n\t\t\t\"box-shadow\": \"var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)\"\n\t\t}, ...Object.values(shadowProperties)];\n\t}],\n\t[\n\t\t/^inset-ring-(.+)$/,\n\t\tcolorResolver(`--un-inset-ring-color`, \"inset-ring\"),\n\t\t{ autocomplete: \"inset-ring-$colors\" }\n\t],\n\t[\n\t\t/^inset-ring-op(?:acity)?-?(.+)$/,\n\t\t([, opacity], { theme }) => ({ \"--un-inset-ring-opacity\": h.bracket.percent.cssvar(opacity, theme) }),\n\t\t{ autocomplete: \"inset-ring-(op|opacity)-<percent>\" }\n\t],\n\t[\n\t\t/^ring-offset(?:-(?:width-|size-)?(.+))?$/,\n\t\t([, d], { theme }) => {\n\t\t\tconst v = h.bracket.cssvar.px(d || \"1\", theme);\n\t\t\tif (v != null) return {\n\t\t\t\t\"--un-ring-offset-width\": v,\n\t\t\t\t\"--un-ring-offset-shadow\": \"var(--un-ring-inset,) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color)\"\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: \"ring-offset-$colors\" }\n\t],\n\t[\n\t\t/^ring-offset-(.+)$/,\n\t\tcolorResolver(`--un-ring-offset-color`, \"ring-offset\"),\n\t\t{ autocomplete: \"ring-offset-$colors\" }\n\t],\n\t[\n\t\t/^ring-offset-op(?:acity)?-?(.+)$/,\n\t\t([, opacity], { theme }) => ({ \"--un-ring-offset-opacity\": h.bracket.percent.cssvar(opacity, theme) }),\n\t\t{ autocomplete: \"ring-offset-(op|opacity)-<percent>\" }\n\t],\n\t[\"ring-inset\", { \"--un-ring-inset\": \"inset\" }]\n];\n//#endregion\n//#region src/rules/scrolls.ts\nconst scrolls = [\n\t[\"scrollbar-gutter-auto\", { \"scrollbar-gutter\": \"auto\" }],\n\t[\"scrollbar-gutter-stable\", { \"scrollbar-gutter\": \"stable\" }],\n\t[\"scrollbar-gutter-both\", { \"scrollbar-gutter\": \"stable both-edges\" }],\n\t...[\n\t\t\"x\",\n\t\t\"y\",\n\t\t\"both\"\n\t].map((d) => [`snap-${d}`, [{ \"scroll-snap-type\": `${d} var(--un-scroll-snap-strictness)` }, defineProperty(\"--un-scroll-snap-strictness\", { initialValue: \"proximity\" })]]),\n\t...[\"mandatory\", \"proximity\"].map((d) => [`snap-${d}`, [{ \"--un-scroll-snap-strictness\": d }, defineProperty(\"--un-scroll-snap-strictness\", { initialValue: \"proximity\" })]]),\n\t[\"snap-none\", { \"scroll-snap-type\": \"none\" }],\n\t[\"snap-start\", { \"scroll-snap-align\": \"start\" }],\n\t[\"snap-end\", { \"scroll-snap-align\": \"end\" }],\n\t[\"snap-center\", { \"scroll-snap-align\": \"center\" }],\n\t[\"snap-align-none\", { \"scroll-snap-align\": \"none\" }],\n\t[\"snap-normal\", { \"scroll-snap-stop\": \"normal\" }],\n\t[\"snap-always\", { \"scroll-snap-stop\": \"always\" }],\n\t[\n\t\t/^scroll-ma?()-?(.+)$/,\n\t\tdirectionSize(\"scroll-margin\"),\n\t\t{ autocomplete: [\n\t\t\t\"scroll-(m|p|ma|pa|block|inline)\",\n\t\t\t\"scroll-(m|p|ma|pa|block|inline)-$spacing\",\n\t\t\t\"scroll-(m|p|ma|pa|block|inline)-(x|y|r|l|t|b|bs|be|is|ie)\",\n\t\t\t\"scroll-(m|p|ma|pa|block|inline)-(x|y|r|l|t|b|bs|be|is|ie)-$spacing\"\n\t\t] }\n\t],\n\t[/^scroll-m-?([xy])-?(.+)$/, directionSize(\"scroll-margin\")],\n\t[/^scroll-m-?([rltb])-?(.+)$/, directionSize(\"scroll-margin\")],\n\t[/^scroll-m-(block|inline)-(.+)$/, directionSize(\"scroll-margin\")],\n\t[/^scroll-m-?([bi][se])-?(.+)$/, directionSize(\"scroll-margin\")],\n\t[/^scroll-pa?()-?(.+)$/, directionSize(\"scroll-padding\")],\n\t[/^scroll-p-?([xy])-?(.+)$/, directionSize(\"scroll-padding\")],\n\t[/^scroll-p-?([rltb])-?(.+)$/, directionSize(\"scroll-padding\")],\n\t[/^scroll-p-(block|inline)-(.+)$/, directionSize(\"scroll-padding\")],\n\t[/^scroll-p-?([bi][se])-?(.+)$/, directionSize(\"scroll-padding\")]\n];\n//#endregion\n//#region src/rules/size.ts\nconst sizeMapping = {\n\th: \"height\",\n\tw: \"width\",\n\tinline: \"inline-size\",\n\tblock: \"block-size\"\n};\nfunction getPropName(minmax, hw) {\n\treturn `${minmax || \"\"}${sizeMapping[hw]}`;\n}\nfunction getSizeValue(theme, hw, prop) {\n\tlet v;\n\tfor (const key of [\"container\", \"spacing\"]) if (theme[key]?.[prop]) {\n\t\tthemeTracking(key, prop);\n\t\tv = generateThemeVariable(key, prop);\n\t\tbreak;\n\t}\n\tif (!v) switch (prop) {\n\t\tcase \"fit\":\n\t\tcase \"max\":\n\t\tcase \"min\":\n\t\t\tv = `${prop}-content`;\n\t\t\tbreak;\n\t\tcase \"stretch\":\n\t\t\tv = \"stretch\";\n\t\t\tbreak;\n\t\tcase \"screen\": v = hw === \"w\" ? \"100vw\" : \"100vh\";\n\t}\n\tif (!v && h.number(prop) != null) {\n\t\tthemeTracking(`spacing`);\n\t\tv = `calc(var(--spacing) * ${h.number(prop)})`;\n\t}\n\treturn v ?? h.bracket.cssvar.global.auto.none.fraction.rem(prop, theme);\n}\nconst sizes = [\n\t[/^size-(min-|max-)?(.+)$/, ([, m, s], { theme }) => ({\n\t\t[getPropName(m, \"w\")]: getSizeValue(theme, \"w\", s),\n\t\t[getPropName(m, \"h\")]: getSizeValue(theme, \"h\", s)\n\t})],\n\t[/^(?:size-)?(min-|max-)?([wh])-?(.+)$/, ([, m, w, s], { theme }) => ({ [getPropName(m, w)]: getSizeValue(theme, w, s) })],\n\t[\n\t\t/^(?:size-)?(min-|max-)?(block|inline)-(.+)$/,\n\t\t([, m, w, s], { theme }) => ({ [getPropName(m, w)]: getSizeValue(theme, w, s) }),\n\t\t{ autocomplete: [\n\t\t\t\"(w|h)-<num>\",\n\t\t\t\"(w|h)-(full|screen|fit|max|min)\",\n\t\t\t\"(max|min)-(w|h)-<num>\",\n\t\t\t\"(max|min)-(w|h)-(full|screen|fit|max|min)\",\n\t\t\t\"(block|inline)-<num>\",\n\t\t\t\"(block|inline)-(full|screen|fit|max|min)\",\n\t\t\t\"(max|min)-(w|h|block|inline)\",\n\t\t\t\"(max|min)-(w|h|block|inline)-<num>\",\n\t\t\t\"(max|min)-(w|h|block|inline)-(full|screen|fit|max|min)\"\n\t\t] }\n\t],\n\t[/^(?:size-)?(min-|max-)?(h)-screen-(.+)$/, ([, m, h, p], context) => ({ [getPropName(m, h)]: handleBreakpoint(context, p, \"verticalBreakpoint\") })],\n\t[\n\t\t/^(?:size-)?(min-|max-)?(w)-screen-(.+)$/,\n\t\t([, m, w, p], context) => ({ [getPropName(m, w)]: handleBreakpoint(context, p) }),\n\t\t{ autocomplete: [\n\t\t\t\"(w|h)-screen\",\n\t\t\t\"(min|max)-(w|h)-screen\",\n\t\t\t\"h-screen-$breakpoint\",\n\t\t\t\"(min|max)-h-screen-$breakpoint\",\n\t\t\t\"w-screen-$breakpoint\",\n\t\t\t\"(min|max)-w-screen-$breakpoint\"\n\t\t] }\n\t]\n];\nfunction handleBreakpoint(context, point, key = \"breakpoint\") {\n\tconst bp = resolveBreakpoints(context, key);\n\tif (bp) return bp.find((i) => i.point === point)?.size;\n}\nfunction getAspectRatio(prop, theme) {\n\tif (/^\\d+\\/\\d+$/.test(prop)) return prop;\n\tswitch (prop) {\n\t\tcase \"square\": return \"1/1\";\n\t\tcase \"video\": return \"16/9\";\n\t}\n\treturn h.bracket.cssvar.global.auto.number(prop, theme);\n}\nconst aspectRatio = [[\n\t/^(?:size-)?aspect-(?:ratio-)?(.+)$/,\n\t([, d], { theme }) => ({ \"aspect-ratio\": getAspectRatio(d, theme) }),\n\t{ autocomplete: [\"aspect-(square|video|ratio)\", \"aspect-ratio-(square|video)\"] }\n]];\n//#endregion\n//#region src/rules/static.ts\nconst cursorValues = [\n\t\"auto\",\n\t\"default\",\n\t\"none\",\n\t\"context-menu\",\n\t\"help\",\n\t\"pointer\",\n\t\"progress\",\n\t\"wait\",\n\t\"cell\",\n\t\"crosshair\",\n\t\"text\",\n\t\"vertical-text\",\n\t\"alias\",\n\t\"copy\",\n\t\"move\",\n\t\"no-drop\",\n\t\"not-allowed\",\n\t\"grab\",\n\t\"grabbing\",\n\t\"all-scroll\",\n\t\"col-resize\",\n\t\"row-resize\",\n\t\"n-resize\",\n\t\"e-resize\",\n\t\"s-resize\",\n\t\"w-resize\",\n\t\"ne-resize\",\n\t\"nw-resize\",\n\t\"se-resize\",\n\t\"sw-resize\",\n\t\"ew-resize\",\n\t\"ns-resize\",\n\t\"nesw-resize\",\n\t\"nwse-resize\",\n\t\"zoom-in\",\n\t\"zoom-out\"\n];\nconst containValues = [\n\t\"size\",\n\t\"layout\",\n\t\"paint\",\n\t\"style\"\n];\nconst displays = [\n\t[\"inline\", { display: \"inline\" }],\n\t[\"block\", { display: \"block\" }],\n\t[\"inline-block\", { display: \"inline-block\" }],\n\t[\"contents\", { display: \"contents\" }],\n\t[\"flow-root\", { display: \"flow-root\" }],\n\t[\"list-item\", { display: \"list-item\" }],\n\t[\"hidden\", { display: \"none\" }],\n\t[/^display-(.+)$/, ([, c], { theme }) => ({ display: h.bracket.cssvar.global(c, theme) })]\n];\nconst appearances = [\n\t[\"visible\", { visibility: \"visible\" }],\n\t[\"invisible\", { visibility: \"hidden\" }],\n\t[\"collapse\", { visibility: \"collapse\" }],\n\t[\"backface-visible\", { \"backface-visibility\": \"visible\" }],\n\t[\"backface-hidden\", { \"backface-visibility\": \"hidden\" }],\n\t...makeGlobalStaticRules(\"backface\", \"backface-visibility\")\n];\nconst cursors = [[/^cursor-(.+)$/, ([, c], { theme }) => ({ cursor: h.bracket.cssvar.global(c, theme) })], ...cursorValues.map((v) => [`cursor-${v}`, { cursor: v }])];\nconst contains = [\n\t[/^contain-(.*)$/, ([, d], { theme }) => {\n\t\tconst value = h.bracket(d, theme);\n\t\tif (value != null) return { contain: value.split(\" \").map((e) => h.cssvar.fraction(e) ?? e).join(\" \") };\n\t\treturn containValues.includes(d) ? [{\n\t\t\t\"--un-contain-size\": d,\n\t\t\t\"contain\": containValues.map((i) => `var(--un-contain-${i})`).join(\" \")\n\t\t}, ...containValues.map((i) => defineProperty(`--un-contain-${i}`))] : void 0;\n\t}],\n\t[\"contain-strict\", { contain: \"strict\" }],\n\t[\"contain-content\", { contain: \"content\" }],\n\t[\"contain-none\", { contain: \"none\" }]\n];\nconst pointerEvents = [\n\t[\"pointer-events-auto\", { \"pointer-events\": \"auto\" }],\n\t[\"pointer-events-none\", { \"pointer-events\": \"none\" }],\n\t...makeGlobalStaticRules(\"pointer-events\")\n];\nconst resizes = [\n\t[\"resize-x\", { resize: \"horizontal\" }],\n\t[\"resize-y\", { resize: \"vertical\" }],\n\t[\"resize\", { resize: \"both\" }],\n\t[\"resize-none\", { resize: \"none\" }],\n\t...makeGlobalStaticRules(\"resize\")\n];\nconst userSelects = [\n\t[\"select-auto\", {\n\t\t\"-webkit-user-select\": \"auto\",\n\t\t\"user-select\": \"auto\"\n\t}],\n\t[\"select-all\", {\n\t\t\"-webkit-user-select\": \"all\",\n\t\t\"user-select\": \"all\"\n\t}],\n\t[\"select-text\", {\n\t\t\"-webkit-user-select\": \"text\",\n\t\t\"user-select\": \"text\"\n\t}],\n\t[\"select-none\", {\n\t\t\"-webkit-user-select\": \"none\",\n\t\t\"user-select\": \"none\"\n\t}],\n\t...makeGlobalStaticRules(\"select\", \"user-select\")\n];\nconst whitespaces = [[\n\t/^(?:whitespace-|ws-)([-\\w]+)$/,\n\t([, v]) => [\n\t\t\"normal\",\n\t\t\"nowrap\",\n\t\t\"pre\",\n\t\t\"pre-line\",\n\t\t\"pre-wrap\",\n\t\t\"break-spaces\",\n\t\t...globalKeywords\n\t].includes(v) ? { \"white-space\": v } : void 0,\n\t{ autocomplete: \"(whitespace|ws)-(normal|nowrap|pre|pre-line|pre-wrap|break-spaces)\" }\n]];\nconst contentVisibility = [\n\t[\n\t\t/^intrinsic(?:-(block|inline|w|h))?(?:-size)?-(.+)$/,\n\t\t([, d, s], { theme }) => {\n\t\t\treturn { [`contain-intrinsic-${{\n\t\t\t\tblock: \"block-size\",\n\t\t\t\tinline: \"inline-size\",\n\t\t\t\tw: \"width\",\n\t\t\t\th: \"height\"\n\t\t\t}[d] ?? \"size\"}`]: h.bracket.cssvar.global.fraction.rem(s, theme) };\n\t\t},\n\t\t{ autocomplete: [\n\t\t\t\"intrinsic-size-<num>\",\n\t\t\t\"intrinsic-<num>\",\n\t\t\t\"intrinsic-(block|inline|w|h)-<num>\"\n\t\t] }\n\t],\n\t[\"content-visibility-visible\", { \"content-visibility\": \"visible\" }],\n\t[\"content-visibility-hidden\", { \"content-visibility\": \"hidden\" }],\n\t[\"content-visibility-auto\", { \"content-visibility\": \"auto\" }],\n\t...makeGlobalStaticRules(\"content-visibility\")\n];\nconst contents = [\n\t[/^content-(.+)$/, ([, v], { theme }) => {\n\t\tif (h.bracket.cssvar(v, theme) != null) return [{\n\t\t\t\"--un-content\": h.bracket.cssvar(v, theme),\n\t\t\t\"content\": \"var(--un-content)\"\n\t\t}, defineProperty(\"--un-content\", { initialValue: \"\\\"\\\"\" })];\n\t}],\n\t[\"content-empty\", { content: \"\\\"\\\"\" }],\n\t[\"content-none\", { content: \"none\" }]\n];\nconst breaks = [\n\t[\"break-normal\", {\n\t\t\"overflow-wrap\": \"normal\",\n\t\t\"word-break\": \"normal\"\n\t}],\n\t[\"break-words\", { \"overflow-wrap\": \"break-word\" }],\n\t[\"break-all\", { \"word-break\": \"break-all\" }],\n\t[\"break-keep\", { \"word-break\": \"keep-all\" }],\n\t[\"break-anywhere\", { \"overflow-wrap\": \"anywhere\" }],\n\t[\"wrap-break-word\", { \"overflow-wrap\": \"break-word\" }],\n\t[\"wrap-anywhere\", { \"overflow-wrap\": \"anywhere\" }],\n\t[\"wrap-normal\", { \"overflow-wrap\": \"normal\" }]\n];\nconst textWraps = [\n\t[\"text-wrap\", { \"text-wrap\": \"wrap\" }],\n\t[\"text-nowrap\", { \"text-wrap\": \"nowrap\" }],\n\t[\"text-balance\", { \"text-wrap\": \"balance\" }],\n\t[\"text-pretty\", { \"text-wrap\": \"pretty\" }]\n];\nconst textOverflows = [\n\t[\"truncate\", {\n\t\t\"overflow\": \"hidden\",\n\t\t\"text-overflow\": \"ellipsis\",\n\t\t\"white-space\": \"nowrap\"\n\t}],\n\t[\"text-truncate\", {\n\t\t\"overflow\": \"hidden\",\n\t\t\"text-overflow\": \"ellipsis\",\n\t\t\"white-space\": \"nowrap\"\n\t}],\n\t[\"text-ellipsis\", { \"text-overflow\": \"ellipsis\" }],\n\t[\"text-clip\", { \"text-overflow\": \"clip\" }]\n];\nconst textTransforms = [\n\t[\"case-upper\", { \"text-transform\": \"uppercase\" }],\n\t[\"case-lower\", { \"text-transform\": \"lowercase\" }],\n\t[\"case-capital\", { \"text-transform\": \"capitalize\" }],\n\t[\"case-normal\", { \"text-transform\": \"none\" }],\n\t[\"uppercase\", { \"text-transform\": \"uppercase\" }],\n\t[\"lowercase\", { \"text-transform\": \"lowercase\" }],\n\t[\"capitalize\", { \"text-transform\": \"capitalize\" }],\n\t[\"normal-case\", { \"text-transform\": \"none\" }],\n\t...makeGlobalStaticRules(\"case\", \"text-transform\")\n];\nconst fontStyles = [\n\t[\"italic\", { \"font-style\": \"italic\" }],\n\t[\"not-italic\", { \"font-style\": \"normal\" }],\n\t[\"font-italic\", { \"font-style\": \"italic\" }],\n\t[\"font-not-italic\", { \"font-style\": \"normal\" }],\n\t[\"oblique\", { \"font-style\": \"oblique\" }],\n\t[\"not-oblique\", { \"font-style\": \"normal\" }],\n\t[\"font-oblique\", { \"font-style\": \"oblique\" }],\n\t[\"font-not-oblique\", { \"font-style\": \"normal\" }]\n];\nconst fontSmoothings = [[\"antialiased\", {\n\t\"-webkit-font-smoothing\": \"antialiased\",\n\t\"-moz-osx-font-smoothing\": \"grayscale\"\n}], [\"subpixel-antialiased\", {\n\t\"-webkit-font-smoothing\": \"auto\",\n\t\"-moz-osx-font-smoothing\": \"auto\"\n}]];\nconst hyphens = [...[\n\t\"manual\",\n\t\"auto\",\n\t\"none\",\n\t...globalKeywords\n].map((keyword) => [`hyphens-${keyword}`, {\n\t\"-webkit-hyphens\": keyword,\n\t\"-ms-hyphens\": keyword,\n\t\"hyphens\": keyword\n}])];\nconst writingModes = [\n\t[\"write-vertical-right\", { \"writing-mode\": \"vertical-rl\" }],\n\t[\"write-vertical-left\", { \"writing-mode\": \"vertical-lr\" }],\n\t[\"write-normal\", { \"writing-mode\": \"horizontal-tb\" }],\n\t...makeGlobalStaticRules(\"write\", \"writing-mode\")\n];\nconst writingOrientations = [\n\t[\"write-orient-mixed\", { \"text-orientation\": \"mixed\" }],\n\t[\"write-orient-sideways\", { \"text-orientation\": \"sideways\" }],\n\t[\"write-orient-upright\", { \"text-orientation\": \"upright\" }],\n\t...makeGlobalStaticRules(\"write-orient\", \"text-orientation\")\n];\nconst screenReadersAccess = [[\"sr-only\", {\n\t\"position\": \"absolute\",\n\t\"width\": \"1px\",\n\t\"height\": \"1px\",\n\t\"padding\": \"0\",\n\t\"margin\": \"-1px\",\n\t\"overflow\": \"hidden\",\n\t\"clip\": \"rect(0,0,0,0)\",\n\t\"white-space\": \"nowrap\",\n\t\"border-width\": 0\n}], [\"not-sr-only\", {\n\t\"position\": \"static\",\n\t\"width\": \"auto\",\n\t\"height\": \"auto\",\n\t\"padding\": \"0\",\n\t\"margin\": \"0\",\n\t\"overflow\": \"visible\",\n\t\"clip\": \"auto\",\n\t\"white-space\": \"normal\"\n}]];\nconst isolations = [\n\t[\"isolate\", { isolation: \"isolate\" }],\n\t[\"isolate-auto\", { isolation: \"auto\" }],\n\t[\"isolation-auto\", { isolation: \"auto\" }]\n];\nconst objectPositions = [\n\t[\"object-cover\", { \"object-fit\": \"cover\" }],\n\t[\"object-contain\", { \"object-fit\": \"contain\" }],\n\t[\"object-fill\", { \"object-fit\": \"fill\" }],\n\t[\"object-scale-down\", { \"object-fit\": \"scale-down\" }],\n\t[\"object-none\", { \"object-fit\": \"none\" }],\n\t[\n\t\t/^object-(.+)$/,\n\t\t([, d], { theme }) => {\n\t\t\tif (positionMap[d]) return { \"object-position\": positionMap[d] };\n\t\t\tconst position = h.bracketOfPosition(d, theme);\n\t\t\tif (position != null) return { \"object-position\": position.split(\" \").map((e) => h.position.fraction.auto.px.cssvar(e) ?? e).join(\" \") };\n\t\t},\n\t\t{ autocomplete: `object-(${Object.keys(positionMap).join(\"|\")})` }\n\t]\n];\nconst backgroundBlendModes = [\n\t[\"bg-blend-multiply\", { \"background-blend-mode\": \"multiply\" }],\n\t[\"bg-blend-screen\", { \"background-blend-mode\": \"screen\" }],\n\t[\"bg-blend-overlay\", { \"background-blend-mode\": \"overlay\" }],\n\t[\"bg-blend-darken\", { \"background-blend-mode\": \"darken\" }],\n\t[\"bg-blend-lighten\", { \"background-blend-mode\": \"lighten\" }],\n\t[\"bg-blend-color-dodge\", { \"background-blend-mode\": \"color-dodge\" }],\n\t[\"bg-blend-color-burn\", { \"background-blend-mode\": \"color-burn\" }],\n\t[\"bg-blend-hard-light\", { \"background-blend-mode\": \"hard-light\" }],\n\t[\"bg-blend-soft-light\", { \"background-blend-mode\": \"soft-light\" }],\n\t[\"bg-blend-difference\", { \"background-blend-mode\": \"difference\" }],\n\t[\"bg-blend-exclusion\", { \"background-blend-mode\": \"exclusion\" }],\n\t[\"bg-blend-hue\", { \"background-blend-mode\": \"hue\" }],\n\t[\"bg-blend-saturation\", { \"background-blend-mode\": \"saturation\" }],\n\t[\"bg-blend-color\", { \"background-blend-mode\": \"color\" }],\n\t[\"bg-blend-luminosity\", { \"background-blend-mode\": \"luminosity\" }],\n\t[\"bg-blend-normal\", { \"background-blend-mode\": \"normal\" }],\n\t...makeGlobalStaticRules(\"bg-blend\", \"background-blend\")\n];\nconst mixBlendModes = [\n\t[\"mix-blend-multiply\", { \"mix-blend-mode\": \"multiply\" }],\n\t[\"mix-blend-screen\", { \"mix-blend-mode\": \"screen\" }],\n\t[\"mix-blend-overlay\", { \"mix-blend-mode\": \"overlay\" }],\n\t[\"mix-blend-darken\", { \"mix-blend-mode\": \"darken\" }],\n\t[\"mix-blend-lighten\", { \"mix-blend-mode\": \"lighten\" }],\n\t[\"mix-blend-color-dodge\", { \"mix-blend-mode\": \"color-dodge\" }],\n\t[\"mix-blend-color-burn\", { \"mix-blend-mode\": \"color-burn\" }],\n\t[\"mix-blend-hard-light\", { \"mix-blend-mode\": \"hard-light\" }],\n\t[\"mix-blend-soft-light\", { \"mix-blend-mode\": \"soft-light\" }],\n\t[\"mix-blend-difference\", { \"mix-blend-mode\": \"difference\" }],\n\t[\"mix-blend-exclusion\", { \"mix-blend-mode\": \"exclusion\" }],\n\t[\"mix-blend-hue\", { \"mix-blend-mode\": \"hue\" }],\n\t[\"mix-blend-saturation\", { \"mix-blend-mode\": \"saturation\" }],\n\t[\"mix-blend-color\", { \"mix-blend-mode\": \"color\" }],\n\t[\"mix-blend-luminosity\", { \"mix-blend-mode\": \"luminosity\" }],\n\t[\"mix-blend-plus-lighter\", { \"mix-blend-mode\": \"plus-lighter\" }],\n\t[\"mix-blend-normal\", { \"mix-blend-mode\": \"normal\" }],\n\t...makeGlobalStaticRules(\"mix-blend\")\n];\nconst dynamicViewportHeight = [\n\t[\"min-h-dvh\", { \"min-height\": \"100dvh\" }],\n\t[\"min-h-svh\", { \"min-height\": \"100svh\" }],\n\t[\"min-h-lvh\", { \"min-height\": \"100lvh\" }],\n\t[\"h-dvh\", { height: \"100dvh\" }],\n\t[\"h-svh\", { height: \"100svh\" }],\n\t[\"h-lvh\", { height: \"100lvh\" }],\n\t[\"max-h-dvh\", { \"max-height\": \"100dvh\" }],\n\t[\"max-h-svh\", { \"max-height\": \"100svh\" }],\n\t[\"max-h-lvh\", { \"max-height\": \"100lvh\" }]\n];\nconst accessibility = [[\"forced-color-adjust-auto\", { \"forced-color-adjust\": \"auto\" }], [\"forced-color-adjust-none\", { \"forced-color-adjust\": \"none\" }]];\nconst fieldSizing = [[\"field-sizing-fixed\", { \"field-sizing\": \"fixed\" }], [\"field-sizing-content\", { \"field-sizing\": \"content\" }]];\n//#endregion\n//#region src/rules/svg.ts\nconst svgUtilities = [\n\t[\n\t\t/^fill-(.+)$/,\n\t\tcolorResolver(\"fill\", \"fill\"),\n\t\t{ autocomplete: \"fill-$colors\" }\n\t],\n\t[\n\t\t/^fill-op(?:acity)?-?(.+)$/,\n\t\t([, opacity], { theme }) => ({ \"--un-fill-opacity\": h.bracket.percent.cssvar(opacity, theme) }),\n\t\t{ autocomplete: \"fill-(op|opacity)-<percent>\" }\n\t],\n\t[\"fill-none\", { fill: \"none\" }],\n\t[/^stroke-(?:width-|size-)?(.+)$/, handleWidth],\n\t[\n\t\t/^stroke-dash-(.+)$/,\n\t\t([, s], { theme }) => ({ \"stroke-dasharray\": h.bracket.cssvar.number(s, theme) }),\n\t\t{ autocomplete: \"stroke-dash-<num>\" }\n\t],\n\t[/^stroke-offset-(.+)$/, ([, s], { theme }) => ({ \"stroke-dashoffset\": h.bracket.cssvar.px.numberWithUnit(s, theme) })],\n\t[\n\t\t/^stroke-(.+)$/,\n\t\thandleColorOrWidth,\n\t\t{ autocomplete: \"stroke-$colors\" }\n\t],\n\t[\n\t\t/^stroke-op(?:acity)?-?(.+)$/,\n\t\t([, opacity], { theme }) => ({ \"--un-stroke-opacity\": h.bracket.percent.cssvar(opacity, theme) }),\n\t\t{ autocomplete: \"stroke-(op|opacity)-<percent>\" }\n\t],\n\t[\"stroke-cap-square\", { \"stroke-linecap\": \"square\" }],\n\t[\"stroke-cap-round\", { \"stroke-linecap\": \"round\" }],\n\t[\"stroke-cap-auto\", { \"stroke-linecap\": \"butt\" }],\n\t[\"stroke-join-arcs\", { \"stroke-linejoin\": \"arcs\" }],\n\t[\"stroke-join-bevel\", { \"stroke-linejoin\": \"bevel\" }],\n\t[\"stroke-join-clip\", { \"stroke-linejoin\": \"miter-clip\" }],\n\t[\"stroke-join-round\", { \"stroke-linejoin\": \"round\" }],\n\t[\"stroke-join-auto\", { \"stroke-linejoin\": \"miter\" }],\n\t[\"stroke-none\", { stroke: \"none\" }]\n];\nfunction handleWidth([, b], { theme }) {\n\treturn { \"stroke-width\": h.bracket.cssvar.fraction.px.number(b, theme) };\n}\nfunction handleColorOrWidth(match, ctx) {\n\tif (isCSSMathFn(h.bracket(match[1], ctx.theme))) return handleWidth(match, ctx);\n\treturn colorResolver(\"stroke\", \"stroke\")(match, ctx);\n}\n//#endregion\n//#region src/rules/table.ts\nconst tables = [\n\t[\"inline-table\", { display: \"inline-table\" }],\n\t[\"table\", { display: \"table\" }],\n\t[\"table-caption\", { display: \"table-caption\" }],\n\t[\"table-cell\", { display: \"table-cell\" }],\n\t[\"table-column\", { display: \"table-column\" }],\n\t[\"table-column-group\", { display: \"table-column-group\" }],\n\t[\"table-footer-group\", { display: \"table-footer-group\" }],\n\t[\"table-header-group\", { display: \"table-header-group\" }],\n\t[\"table-row\", { display: \"table-row\" }],\n\t[\"table-row-group\", { display: \"table-row-group\" }],\n\t[\"border-collapse\", { \"border-collapse\": \"collapse\" }],\n\t[\"border-separate\", { \"border-collapse\": \"separate\" }],\n\t[\n\t\t/^border-spacing-(.+)$/,\n\t\tfunction* ([, s], { theme }) {\n\t\t\tconst v = resolveValue(s, theme);\n\t\t\tif (v != null) {\n\t\t\t\tyield {\n\t\t\t\t\t\"--un-border-spacing-x\": v,\n\t\t\t\t\t\"--un-border-spacing-y\": v,\n\t\t\t\t\t\"border-spacing\": \"var(--un-border-spacing-x) var(--un-border-spacing-y)\"\n\t\t\t\t};\n\t\t\t\tfor (const d of [\"x\", \"y\"]) yield defineProperty(`--un-border-spacing-${d}`, {\n\t\t\t\t\tsyntax: \"<length>\",\n\t\t\t\t\tinitialValue: \"0\"\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t{ autocomplete: [\"border-spacing\", \"border-spacing-$spacing\"] }\n\t],\n\t[\n\t\t/^border-spacing-([xy])-(.+)$/,\n\t\tfunction* ([, d, s], { theme }) {\n\t\t\tconst v = resolveValue(s, theme);\n\t\t\tif (v != null) {\n\t\t\t\tyield {\n\t\t\t\t\t[`--un-border-spacing-${d}`]: v,\n\t\t\t\t\t\"border-spacing\": \"var(--un-border-spacing-x) var(--un-border-spacing-y)\"\n\t\t\t\t};\n\t\t\t\tfor (const d of [\"x\", \"y\"]) yield defineProperty(`--un-border-spacing-${d}`, {\n\t\t\t\t\tsyntax: \"<length>\",\n\t\t\t\t\tinitialValue: \"0\"\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t{ autocomplete: [\"border-spacing-(x|y)\", \"border-spacing-(x|y)-$spacing\"] }\n\t],\n\t[\"caption-top\", { \"caption-side\": \"top\" }],\n\t[\"caption-bottom\", { \"caption-side\": \"bottom\" }],\n\t[\"table-auto\", { \"table-layout\": \"auto\" }],\n\t[\"table-fixed\", { \"table-layout\": \"fixed\" }],\n\t[\"table-empty-cells-visible\", { \"empty-cells\": \"show\" }],\n\t[\"table-empty-cells-hidden\", { \"empty-cells\": \"hide\" }]\n];\nfunction resolveValue(s, theme) {\n\tlet v = theme.spacing?.[s];\n\tif (!v) {\n\t\tconst num = numberResolver(s);\n\t\tif (num != null) {\n\t\t\tthemeTracking(`spacing`);\n\t\t\tv = `calc(var(--spacing) * ${num})`;\n\t\t} else v = h.bracket.cssvar.global.auto.fraction.rem(s, theme);\n\t}\n\treturn v;\n}\n//#endregion\n//#region src/rules/touch-actions.ts\nconst touchActionValue = \"var(--un-pan-x) var(--un-pan-y) var(--un-pinch-zoom)\";\nconst touchActionProperties = [\n\t\"pan-x\",\n\t\"pan-y\",\n\t\"pinch-zoom\"\n].map((d) => defineProperty(`--un-${d}`));\nconst touchActions = [\n\t[\n\t\t/^touch-pan-(x|left|right)$/,\n\t\tfunction* ([, d]) {\n\t\t\tyield {\n\t\t\t\t\"--un-pan-x\": `pan-${d}`,\n\t\t\t\t\"touch-action\": touchActionValue\n\t\t\t};\n\t\t\tfor (const p of touchActionProperties) yield p;\n\t\t},\n\t\t{ autocomplete: [\"touch-pan\", \"touch-pan-(x|left|right|y|up|down)\"] }\n\t],\n\t[/^touch-pan-(y|up|down)$/, function* ([, d]) {\n\t\tyield {\n\t\t\t\"--un-pan-y\": `pan-${d}`,\n\t\t\t\"touch-action\": touchActionValue\n\t\t};\n\t\tfor (const p of touchActionProperties) yield p;\n\t}],\n\t[/^touch-pinch-zoom$/, function* () {\n\t\tyield {\n\t\t\t\"--un-pinch-zoom\": \"pinch-zoom\",\n\t\t\t\"touch-action\": touchActionValue\n\t\t};\n\t\tfor (const p of touchActionProperties) yield p;\n\t}],\n\t[\"touch-auto\", { \"touch-action\": \"auto\" }],\n\t[\"touch-manipulation\", { \"touch-action\": \"manipulation\" }],\n\t[\"touch-none\", { \"touch-action\": \"none\" }],\n\t...makeGlobalStaticRules(\"touch\", \"touch-action\")\n];\n//#endregion\n//#region src/rules/transform.ts\nconst transformValues = [\n\t\"translate\",\n\t\"rotate\",\n\t\"scale\"\n];\nconst transformCpu = [\n\t\"var(--un-rotate-x)\",\n\t\"var(--un-rotate-y)\",\n\t\"var(--un-rotate-z)\",\n\t\"var(--un-skew-x)\",\n\t\"var(--un-skew-y)\"\n].join(\" \");\nconst transform = transformCpu;\nconst transformGpu = [\"translateZ(0)\", transformCpu].join(\" \");\nconst transformBase = {\n\t\"--un-rotate-x\": \"rotateX(0)\",\n\t\"--un-rotate-y\": \"rotateY(0)\",\n\t\"--un-rotate-z\": \"rotateZ(0)\",\n\t\"--un-skew-x\": \"skewX(0)\",\n\t\"--un-skew-y\": \"skewY(0)\",\n\t\"--un-translate-x\": 0,\n\t\"--un-translate-y\": 0,\n\t\"--un-translate-z\": 0\n};\nconst transforms = [\n\t[\n\t\t/^(?:transform-)?origin-(.+)$/,\n\t\t([, s], { theme }) => ({ \"transform-origin\": positionMap[s] ?? h.bracket.cssvar(s, theme) }),\n\t\t{ autocomplete: [`transform-origin-(${Object.keys(positionMap).join(\"|\")})`, `origin-(${Object.keys(positionMap).join(\"|\")})`] }\n\t],\n\t[\n\t\t/^(transform-)?perspect(?:ive)?-(.+)$/,\n\t\t([, t, s], { theme }) => {\n\t\t\tlet v;\n\t\t\tif (theme.perspective?.[s]) {\n\t\t\t\tthemeTracking(`perspective`, s);\n\t\t\t\tv = generateThemeVariable(\"perspective\", s);\n\t\t\t} else v = h.bracket.cssvar.px.numberWithUnit(s, theme);\n\t\t\tif (v != null) {\n\t\t\t\tif (t) return {\n\t\t\t\t\t\"--un-perspective\": `perspective(${v})`,\n\t\t\t\t\t\"transform\": `var(--un-perspective) ${transform}`\n\t\t\t\t};\n\t\t\t\treturn { perspective: v };\n\t\t\t}\n\t\t},\n\t\t{ autocomplete: [`perspective-<num>`, `perspective-$perspective`] }\n\t],\n\t[/^(?:transform-)?perspect(?:ive)?-origin-(.+)$/, ([, s], { theme }) => {\n\t\tconst v = h.bracket.cssvar(s, theme) ?? (s.length >= 3 ? positionMap[s] : void 0);\n\t\tif (v != null) return { \"perspective-origin\": v };\n\t}],\n\t[/^(?:transform-)?translate-()(.+)$/, handleTranslate],\n\t[/^(?:transform-)?translate-([xyz])-(.+)$/, handleTranslate],\n\t[/^(?:transform-)?rotate-()(.+)$/, handleRotate],\n\t[/^(?:transform-)?rotate-([xyz])-(.+)$/, handleRotate],\n\t[/^(?:transform-)?skew-()(.+)$/, handleSkew],\n\t[\n\t\t/^(?:transform-)?skew-([xy])-(.+)$/,\n\t\thandleSkew,\n\t\t{ autocomplete: [\"transform-skew-(x|y)-<percent>\", \"skew-(x|y)-<percent>\"] }\n\t],\n\t[/^(?:transform-)?scale-()(.+)$/, handleScale],\n\t[\n\t\t/^(?:transform-)?scale-([xyz])-(.+)$/,\n\t\thandleScale,\n\t\t{ autocomplete: [\n\t\t\t`transform-(${transformValues.join(\"|\")})-<percent>`,\n\t\t\t`transform-(${transformValues.join(\"|\")})-(x|y|z)-<percent>`,\n\t\t\t`(${transformValues.join(\"|\")})-<percent>`,\n\t\t\t`(${transformValues.join(\"|\")})-(x|y|z)-<percent>`\n\t\t] }\n\t],\n\t[\"transform-3d\", { \"transform-style\": \"preserve-3d\" }],\n\t[\"transform-flat\", { \"transform-style\": \"flat\" }],\n\t[/^transform-(border|content|fill|stroke|view)$/, ([, d]) => ({ \"transform-box\": `${d}-box` })],\n\t[\"transform\", { transform }],\n\t[\"transform-cpu\", { transform: transformCpu }],\n\t[\"transform-gpu\", { transform: transformGpu }],\n\t[\"transform-none\", { transform: \"none\" }],\n\t...makeGlobalStaticRules(\"transform\"),\n\t[\n\t\t/^zoom-(.+)$/,\n\t\t([, v], { theme }) => ({ zoom: h.bracket.percent.cssvar(v, theme) }),\n\t\t{ autocomplete: \"zoom-<percent>\" }\n\t]\n];\nfunction handleTranslate([, d, b], { theme }) {\n\tconst v = numberResolver(b) ?? h.bracket.cssvar.none.fraction.rem(b, theme);\n\tif (v != null) {\n\t\tif (v === \"none\") return { translate: \"none\" };\n\t\tthemeTracking(`spacing`);\n\t\treturn [[...transformXYZ(d, typeof v === \"number\" ? `calc(var(--spacing) * ${v})` : v, \"translate\"), [\n\t\t\t\"translate\",\n\t\t\t`var(--un-translate-x) var(--un-translate-y)${d === \"z\" ? \" var(--un-translate-z)\" : \"\"}`,\n\t\t\tCONTROL_NO_NEGATIVE\n\t\t]], ...[\n\t\t\t\"x\",\n\t\t\t\"y\",\n\t\t\t\"z\"\n\t\t].map((d) => defineProperty(`--un-translate-${d}`, { initialValue: 0 }))];\n\t}\n}\nfunction handleScale([, d, b], { theme }) {\n\tconst v = h.bracket.cssvar.none.fraction.percent(b, theme);\n\tif (v != null) {\n\t\tif (v === \"none\") return { scale: \"none\" };\n\t\treturn [[...transformXYZ(d, v, \"scale\"), [\"scale\", `var(--un-scale-x) var(--un-scale-y)${d === \"z\" ? \" var(--un-scale-z)\" : \"\"}`]], ...[\n\t\t\t\"x\",\n\t\t\t\"y\",\n\t\t\t\"z\"\n\t\t].map((d) => defineProperty(`--un-scale-${d}`, { initialValue: 1 }))];\n\t}\n}\nfunction handleRotate([, d = \"\", b], { theme }) {\n\tconst v = h.bracket.cssvar.none.degree(b, theme);\n\tif (v != null) {\n\t\tif (v === \"none\") return { rotate: \"none\" };\n\t\tif (d) return [\n\t\t\t[...transformXYZ(d, v.endsWith(\"deg\") ? `rotate${d.toUpperCase()}(${v})` : v, \"rotate\"), [\"transform\", transform]],\n\t\t\t...[\n\t\t\t\t\"x\",\n\t\t\t\t\"y\",\n\t\t\t\t\"z\"\n\t\t\t].map((d) => defineProperty(`--un-rotate-${d}`, { initialValue: `rotate${d.toUpperCase()}(0)` })),\n\t\t\t...[\"x\", \"y\"].map((d) => defineProperty(`--un-skew-${d}`, { initialValue: `skew${d.toUpperCase()}(0)` }))\n\t\t];\n\t\telse return { rotate: h.bracket.cssvar.degree(b, theme) };\n\t}\n}\nfunction handleSkew([, d, b], { theme }) {\n\tconst v = h.bracket.cssvar.degree(b, theme);\n\tconst ds = xyzMap[d];\n\tif (v != null && ds) return [\n\t\t[...ds.map((_d) => [`--un-skew${_d}`, v.endsWith(\"deg\") ? `skew${_d.slice(1).toUpperCase()}(${v})` : v]), [\"transform\", transform]],\n\t\t...[\n\t\t\t\"x\",\n\t\t\t\"y\",\n\t\t\t\"z\"\n\t\t].map((d) => defineProperty(`--un-rotate-${d}`, { initialValue: `rotate${d.toUpperCase()}(0)` })),\n\t\t...[\"x\", \"y\"].map((d) => defineProperty(`--un-skew-${d}`, { initialValue: `skew${d.toUpperCase()}(0)` }))\n\t];\n}\nfunction transformXYZ(d, v, name) {\n\tconst values = v.split(splitComma);\n\tif (d || !d && values.length === 1) return xyzMap[d].map((i) => [`--un-${name}${i}`, v]);\n\treturn values.map((v, i) => [`--un-${name}-${xyzArray[i]}`, v]);\n}\n//#endregion\n//#region src/rules/transition.ts\nfunction resolveTransitionProperty(prop, theme) {\n\tlet p;\n\tif (h.cssvar(prop) != null) p = h.cssvar(prop);\n\telse {\n\t\tif (prop.startsWith(\"[\") && prop.endsWith(\"]\")) prop = prop.slice(1, -1);\n\t\tconst props = prop.split(\",\").map((p) => theme.property?.[p] ?? h.properties(p));\n\t\tif (props.every(Boolean)) p = props.join(\",\");\n\t}\n\treturn p;\n}\nconst transitions = [\n\t[/^transition(?:-(\\D+?))?(?:-(\\d+))?$/, ([, prop, d], { theme }) => {\n\t\tthemeTracking(\"default\", [\"transition\", \"timingFunction\"]);\n\t\tthemeTracking(\"default\", [\"transition\", \"duration\"]);\n\t\tconst defaultTransition = {\n\t\t\t\"transition-property\": theme.property?.DEFAULT,\n\t\t\t\"transition-timing-function\": `var(--un-ease, ${generateThemeVariable(\"default\", [\"transition\", \"timingFunction\"])})`,\n\t\t\t\"transition-duration\": `var(--un-duration, ${generateThemeVariable(\"default\", [\"transition\", \"duration\"])})`\n\t\t};\n\t\tif (!prop && !d) return { ...defaultTransition };\n\t\telse if (prop != null) {\n\t\t\tconst p = resolveTransitionProperty(prop, theme);\n\t\t\tif (p) return {\n\t\t\t\t\"--un-duration\": d && h.time(d),\n\t\t\t\t...defaultTransition,\n\t\t\t\t\"transition-property\": p\n\t\t\t};\n\t\t} else if (d != null) return {\n\t\t\t\"--un-duration\": h.time(d),\n\t\t\t...defaultTransition\n\t\t};\n\t}],\n\t[/^(?:transition-)?duration-(.+)$/, ([, d], { theme }) => ({\n\t\t\"--un-duration\": h.bracket.cssvar.time(d, theme),\n\t\t\"transition-duration\": h.bracket.cssvar.time(d, theme)\n\t})],\n\t[/^(?:transition-)?delay-(.+)$/, ([, d], { theme }) => ({ \"transition-delay\": h.bracket.cssvar.time(d, theme) })],\n\t[\n\t\t/^(?:transition-)?ease(?:-(.+))?$/,\n\t\t([, d = \"DEFAULT\"], { theme }) => {\n\t\t\tlet v;\n\t\t\tif (theme.ease?.[d]) {\n\t\t\t\tthemeTracking(\"ease\", d);\n\t\t\t\tv = generateThemeVariable(\"ease\", d);\n\t\t\t} else v = h.bracket.cssvar(d, theme);\n\t\t\treturn [{\n\t\t\t\t\"--un-ease\": v,\n\t\t\t\t\"transition-timing-function\": v\n\t\t\t}, defineProperty(\"--un-ease\")];\n\t\t},\n\t\t{ autocomplete: [\"transition-ease-(linear|in|out|in-out)\", \"ease-(linear|in|out|in-out)\"] }\n\t],\n\t[\n\t\t/^(?:transition-)?property-(.+)$/,\n\t\t([, v], { theme }) => {\n\t\t\tconst p = h.global(v) || resolveTransitionProperty(v, theme);\n\t\t\tif (p) return { \"transition-property\": p };\n\t\t},\n\t\t{ autocomplete: [`transition-property-(${[...globalKeywords].join(\"|\")})`] }\n\t],\n\t[\"transition-none\", { transition: \"none\" }],\n\t...makeGlobalStaticRules(\"transition\"),\n\t[\"transition-discrete\", { \"transition-behavior\": \"allow-discrete\" }],\n\t[\"transition-normal\", { \"transition-behavior\": \"normal\" }]\n];\n//#endregion\n//#region src/rules/typography.ts\nconst fonts = [\n\t[\n\t\t/^text-(.+)$/,\n\t\thandleText,\n\t\t{ autocomplete: \"text-$text\" }\n\t],\n\t[\n\t\t/^(?:text|font)-size-(.+)$/,\n\t\thandleSize,\n\t\t{ autocomplete: \"text-size-$text\" }\n\t],\n\t[\n\t\t/^text-(?:color-)?(.+)$/,\n\t\thandlerColorOrSize,\n\t\t{ autocomplete: \"text-$colors\" }\n\t],\n\t[/^(?:color|c)-(.+)$/, colorResolver(\"color\", \"text\")],\n\t[\n\t\t/^(?:text|color|c)-(.+)$/,\n\t\t([, v]) => globalKeywords.includes(v) ? { color: v } : void 0,\n\t\t{ autocomplete: `(text|color|c)-(${globalKeywords.join(\"|\")})` }\n\t],\n\t[\n\t\t/^(?:text|color|c)-op(?:acity)?-?(.+)$/,\n\t\t([, opacity], { theme }) => ({ \"--un-text-opacity\": h.bracket.percent.cssvar(opacity, theme) }),\n\t\t{ autocomplete: \"(text|color|c)-(op|opacity)-<percent>\" }\n\t],\n\t[\n\t\t/^fw-?([^-]+)$/,\n\t\t([, s], { theme }) => {\n\t\t\tlet v;\n\t\t\tif (theme.fontWeight?.[s]) {\n\t\t\t\tthemeTracking(`fontWeight`, s);\n\t\t\t\tv = generateThemeVariable(\"fontWeight\", s);\n\t\t\t} else v = h.bracket.cssvar.global.number(s, theme);\n\t\t\treturn {\n\t\t\t\t\"--un-font-weight\": v,\n\t\t\t\t\"font-weight\": v\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: [\"(font|fw)-(100|200|300|400|500|600|700|800|900)\", \"(font|fw)-$fontWeight\"] }\n\t],\n\t[\n\t\t/^(?:font-)?(?:leading|lh|line-height)-(.+)$/,\n\t\t([, s], { theme }) => {\n\t\t\tlet v;\n\t\t\tif (theme.leading?.[s]) {\n\t\t\t\tthemeTracking(\"leading\", s);\n\t\t\t\tv = generateThemeVariable(\"leading\", s);\n\t\t\t} else if (numberResolver(s)) {\n\t\t\t\tthemeTracking(\"spacing\");\n\t\t\t\tv = `calc(var(--spacing) * ${numberResolver(s)})`;\n\t\t\t} else v = h.bracket.cssvar.global.rem(s, theme);\n\t\t\tif (v != null) return [{\n\t\t\t\t\"--un-leading\": v,\n\t\t\t\t\"line-height\": v\n\t\t\t}, defineProperty(\"--un-leading\")];\n\t\t},\n\t\t{ autocomplete: \"(leading|lh|line-height)-$leading\" }\n\t],\n\t[\"font-synthesis-weight\", { \"font-synthesis\": \"weight\" }],\n\t[\"font-synthesis-style\", { \"font-synthesis\": \"style\" }],\n\t[\"font-synthesis-small-caps\", { \"font-synthesis\": \"small-caps\" }],\n\t[\"font-synthesis-none\", { \"font-synthesis\": \"none\" }],\n\t[/^font-synthesis-(.+)$/, ([, s], { theme }) => ({ \"font-synthesis\": h.bracket.cssvar.global(s, theme) })],\n\t[\n\t\t/^(?:font-)?tracking-(.+)$/,\n\t\t([, s], { theme }) => {\n\t\t\tlet v;\n\t\t\tif (theme.tracking?.[s]) {\n\t\t\t\tthemeTracking(`tracking`, s);\n\t\t\t\tv = generateThemeVariable(\"tracking\", s);\n\t\t\t} else v = h.bracket.cssvar.global.rem(s, theme);\n\t\t\treturn {\n\t\t\t\t\"--un-tracking\": v,\n\t\t\t\t\"letter-spacing\": v\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: \"tracking-$tracking\" }\n\t],\n\t[\n\t\t/^(?:font-)?word-spacing-(.+)$/,\n\t\t([, s], { theme }) => {\n\t\t\tconst v = theme.tracking?.[s] ? generateThemeVariable(\"tracking\", s) : h.bracket.cssvar.global.rem(s, theme);\n\t\t\treturn {\n\t\t\t\t\"--un-word-spacing\": v,\n\t\t\t\t\"word-spacing\": v\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: \"word-spacing-$spacing\" }\n\t],\n\t[\"font-stretch-normal\", { \"font-stretch\": \"normal\" }],\n\t[\"font-stretch-ultra-condensed\", { \"font-stretch\": \"ultra-condensed\" }],\n\t[\"font-stretch-extra-condensed\", { \"font-stretch\": \"extra-condensed\" }],\n\t[\"font-stretch-condensed\", { \"font-stretch\": \"condensed\" }],\n\t[\"font-stretch-semi-condensed\", { \"font-stretch\": \"semi-condensed\" }],\n\t[\"font-stretch-semi-expanded\", { \"font-stretch\": \"semi-expanded\" }],\n\t[\"font-stretch-expanded\", { \"font-stretch\": \"expanded\" }],\n\t[\"font-stretch-extra-expanded\", { \"font-stretch\": \"extra-expanded\" }],\n\t[\"font-stretch-ultra-expanded\", { \"font-stretch\": \"ultra-expanded\" }],\n\t[\n\t\t/^font-stretch-(.+)$/,\n\t\t([, s], { theme }) => ({ \"font-stretch\": h.bracket.cssvar.fraction.global(s, theme) }),\n\t\t{ autocomplete: \"font-stretch-<percentage>\" }\n\t],\n\t[\n\t\t/^font-(.+)$/,\n\t\t([, d], { theme }) => {\n\t\t\tlet v;\n\t\t\tif (theme.font?.[d]) {\n\t\t\t\tthemeTracking(\"font\", d);\n\t\t\t\tv = generateThemeVariable(\"font\", d);\n\t\t\t\treturn { \"font-family\": v };\n\t\t\t}\n\t\t\tif (theme.fontWeight?.[d]) {\n\t\t\t\tthemeTracking(\"fontWeight\", d);\n\t\t\t\tv = generateThemeVariable(\"fontWeight\", d);\n\t\t\t\treturn {\n\t\t\t\t\t\"--un-font-weight\": v,\n\t\t\t\t\t\"font-weight\": v\n\t\t\t\t};\n\t\t\t}\n\t\t\tv = h.number(d);\n\t\t\tif (v != null) return {\n\t\t\t\t\"--un-font-weight\": v,\n\t\t\t\t\"font-weight\": v\n\t\t\t};\n\t\t\tv = h.bracketOfFamily(d, theme);\n\t\t\tif (v != null && h.number(v) == null) {\n\t\t\t\tv = h.cssvar(v) ?? v;\n\t\t\t\treturn { \"font-family\": v };\n\t\t\t}\n\t\t\tv = h.bracketOfNumber(d, theme);\n\t\t\tif (v != null) {\n\t\t\t\tv = h.cssvar.number(v);\n\t\t\t\treturn {\n\t\t\t\t\t\"--un-font-weight\": v,\n\t\t\t\t\t\"font-weight\": v\n\t\t\t\t};\n\t\t\t}\n\t\t\tv = h.bracket(d, theme);\n\t\t\tif (v != null && h.number(v) != null) {\n\t\t\t\tconst num = h.number(v);\n\t\t\t\treturn {\n\t\t\t\t\t\"--un-font-weight\": num,\n\t\t\t\t\t\"font-weight\": num\n\t\t\t\t};\n\t\t\t}\n\t\t\tv = h.bracket.cssvar.global(d, theme);\n\t\t\tif (v != null) return { \"font-family\": v };\n\t\t},\n\t\t{ autocomplete: [\"font-$font\", \"font-$fontWeight\"] }\n\t]\n];\nconst tabSizes = [[/^tab(?:-(.+))?$/, ([, s], { theme }) => {\n\tconst v = h.bracket.cssvar.global.number(s || \"4\", theme);\n\tif (v != null) return {\n\t\t\"-moz-tab-size\": v,\n\t\t\"-o-tab-size\": v,\n\t\t\"tab-size\": v\n\t};\n}]];\nconst textIndents = [[/^indent-(.+)$/, ([, s], { theme }) => {\n\tlet v = numberResolver(s);\n\tif (v != null) {\n\t\tthemeTracking(`spacing`);\n\t\treturn { \"text-indent\": `calc(var(--spacing) * ${v})` };\n\t}\n\tv = h.bracket.cssvar.auto.global.rem(s, theme);\n\tif (v != null) return { \"text-indent\": v };\n}]];\nconst textStrokes = [\n\t[\n\t\t/^text-stroke(?:-(.+))?$/,\n\t\t([, s = \"DEFAULT\"], { theme }) => {\n\t\t\tif (theme.textStrokeWidth?.[s]) themeTracking(`textStrokeWidth`, s);\n\t\t\treturn { \"-webkit-text-stroke-width\": theme.textStrokeWidth?.[s] ? generateThemeVariable(\"textStrokeWidth\", s) : h.bracket.cssvar.px(s, theme) };\n\t\t},\n\t\t{ autocomplete: \"text-stroke-$textStrokeWidth\" }\n\t],\n\t[\n\t\t/^text-stroke-(.+)$/,\n\t\tcolorResolver(\"-webkit-text-stroke-color\", \"text-stroke\"),\n\t\t{ autocomplete: \"text-stroke-$colors\" }\n\t],\n\t[\n\t\t/^text-stroke-op(?:acity)?-?(.+)$/,\n\t\t([, opacity], { theme }) => ({ \"--un-text-stroke-opacity\": h.bracket.percent.cssvar(opacity, theme) }),\n\t\t{ autocomplete: \"text-stroke-(op|opacity)-<percent>\" }\n\t]\n];\nfunction handleTextShadow(match, ctx) {\n\tconst [, s] = match;\n\tconst { theme } = ctx;\n\tlet res = [];\n\tif (s) res = getStringComponents(s, \"/\", 2) ?? [];\n\tconst v = theme.textShadow?.[res[0]];\n\tconst c = s ? h.bracket.cssvar(s, theme) : void 0;\n\tif ((v != null || c != null) && !hasParseableColor(c, theme)) {\n\t\tconst alpha = res[1] ? h.bracket.percent.cssvar(res[1], theme) : void 0;\n\t\treturn {\n\t\t\t\"--un-text-shadow-opacity\": alpha,\n\t\t\t\"--un-text-shadow\": colorableShadows(v || c, \"--un-text-shadow-color\", alpha).join(\",\"),\n\t\t\t\"text-shadow\": \"var(--un-text-shadow)\"\n\t\t};\n\t}\n\treturn colorResolver(\"--un-text-shadow-color\", \"text-shadow\")(match, ctx) ?? { \"text-shadow\": h.bracket.cssvar.global(s, theme) };\n}\nconst textShadows = [\n\t[\n\t\t/^text-shadow-(.+)$/,\n\t\thandleTextShadow,\n\t\t{ autocomplete: [\n\t\t\t\"text-shadow-$textShadow\",\n\t\t\t\"text-shadow(-color)?-$colors\",\n\t\t\t\"text-shadow(-color)?-(op|opacity)-<percent>\"\n\t\t] }\n\t],\n\t[\n\t\t/^text-shadow-color-(.+)$/,\n\t\tcolorResolver(\"--un-text-shadow-color\", \"text-shadow\"),\n\t\t{ autocomplete: \"text-shadow-color-$colors\" }\n\t],\n\t[\n\t\t/^text-shadow(?:-color)?-op(?:acity)?-?(.+)$/,\n\t\t([, opacity], { theme }) => ({ \"--un-text-shadow-opacity\": h.bracket.percent.cssvar(opacity, theme) }),\n\t\t{ autocomplete: \"text-shadow(-color)?-(op|opacity)-<percent>\" }\n\t]\n];\nconst fontVariantNumericProperties = [\n\tdefineProperty(\"--un-ordinal\"),\n\tdefineProperty(\"--un-slashed-zero\"),\n\tdefineProperty(\"--un-numeric-figure\"),\n\tdefineProperty(\"--un-numeric-spacing\"),\n\tdefineProperty(\"--un-numeric-fraction\")\n];\nconst baseFontVariantNumeric = { \"font-variant-numeric\": \"var(--un-ordinal,) var(--un-slashed-zero,) var(--un-numeric-figure,) var(--un-numeric-spacing,) var(--un-numeric-fraction,)\" };\nconst fontVariantNumeric = [\n\t[\"ordinal\", [{\n\t\t\"--un-ordinal\": \"ordinal\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"slashed-zero\", [{\n\t\t\"--un-slashed-zero\": \"slashed-zero\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"lining-nums\", [{\n\t\t\"--un-numeric-figure\": \"lining-nums\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"oldstyle-nums\", [{\n\t\t\"--un-numeric-figure\": \"oldstyle-nums\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"proportional-nums\", [{\n\t\t\"--un-numeric-spacing\": \"proportional-nums\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"tabular-nums\", [{\n\t\t\"--un-numeric-spacing\": \"tabular-nums\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"diagonal-fractions\", [{\n\t\t\"--un-numeric-fraction\": \"diagonal-fractions\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"stacked-fractions\", [{\n\t\t\"--un-numeric-fraction\": \"stacked-fractions\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"normal-nums\", [{ \"font-variant-numeric\": \"normal\" }]]\n];\nfunction handleText([, s = \"base\"], { theme }) {\n\tconst split = splitShorthand(s, \"length\");\n\tif (!split) return;\n\tconst [size, leading] = split;\n\tconst sizePairs = theme.text?.[size];\n\tlet lineHeight;\n\tif (leading) {\n\t\tif (theme.leading?.[leading]) {\n\t\t\tthemeTracking(`leading`, leading);\n\t\t\tlineHeight = generateThemeVariable(\"leading\", leading);\n\t\t} else lineHeight = h.bracket.cssvar.global.rem(leading, theme);\n\t}\n\tif (sizePairs) {\n\t\tthemeTracking(`text`, [size, \"fontSize\"]);\n\t\tthemeTracking(`text`, [size, \"lineHeight\"]);\n\t\tif (sizePairs.letterSpacing) themeTracking(`text`, [size, \"letterSpacing\"]);\n\t\treturn {\n\t\t\t\"font-size\": generateThemeVariable(\"text\", [size, \"fontSize\"]),\n\t\t\t\"line-height\": lineHeight ?? `var(--un-leading, ${generateThemeVariable(\"text\", [size, \"lineHeight\"])})`,\n\t\t\t\"letter-spacing\": sizePairs.letterSpacing ? generateThemeVariable(\"text\", [size, \"letterSpacing\"]) : void 0\n\t\t};\n\t}\n\tconst fontSize = h.bracketOfLength.rem(size, theme);\n\tif (lineHeight && fontSize) return {\n\t\t\"font-size\": fontSize,\n\t\t\"line-height\": lineHeight\n\t};\n\treturn { \"font-size\": h.bracketOfLength.rem(s, theme) };\n}\nfunction handleSize([, s], { theme }) {\n\tif (theme.text?.[s] != null) {\n\t\tthemeTracking(`text`, [s, \"fontSize\"]);\n\t\tthemeTracking(`text`, [s, \"lineHeight\"]);\n\t\treturn {\n\t\t\t\"font-size\": generateThemeVariable(\"text\", [s, \"fontSize\"]),\n\t\t\t\"line-height\": `var(--un-leading, ${generateThemeVariable(\"text\", [s, \"lineHeight\"])})`\n\t\t};\n\t} else {\n\t\tconst d = h.bracket.cssvar.global.rem(s, theme);\n\t\tif (d) return { \"font-size\": d };\n\t}\n}\nfunction handlerColorOrSize(match, ctx) {\n\tif (isCSSMathFn(h.bracket(match[1], ctx.theme))) return handleSize(match, ctx);\n\treturn colorResolver(\"color\", \"text\")(match, ctx);\n}\nfunction splitShorthand(body, type) {\n\tconst [front, rest] = getStringComponent(body, \"[\", \"]\", [\"/\", \":\"]) ?? [];\n\tif (front != null) {\n\t\tconst match = (front.match(bracketTypeRe) ?? [])[1];\n\t\tif (match == null || match === type) return [front, rest];\n\t}\n}\n//#endregion\n//#region src/rules/variables.ts\nconst variablesAbbrMap = {\n\t\"backface\": \"backface-visibility\",\n\t\"break\": \"word-break\",\n\t\"case\": \"text-transform\",\n\t\"content\": \"align-content\",\n\t\"fw\": \"font-weight\",\n\t\"items\": \"align-items\",\n\t\"justify\": \"justify-content\",\n\t\"select\": \"user-select\",\n\t\"self\": \"align-self\",\n\t\"vertical\": \"vertical-align\",\n\t\"visible\": \"visibility\",\n\t\"whitespace\": \"white-space\",\n\t\"ws\": \"white-space\",\n\t\"bg-blend\": \"background-blend-mode\",\n\t\"bg-clip\": \"-webkit-background-clip\",\n\t\"bg-image\": \"background-image\",\n\t\"bg-origin\": \"background-origin\",\n\t\"bg-position\": \"background-position\",\n\t\"bg-repeat\": \"background-repeat\",\n\t\"bg-size\": \"background-size\",\n\t\"mix-blend\": \"mix-blend-mode\",\n\t\"object\": \"object-fit\",\n\t\"object-position\": \"object-position\",\n\t\"write\": \"writing-mode\",\n\t\"write-orient\": \"text-orientation\"\n};\nconst cssVariables = [[/^(.+?)-(\\$.+)$/, ([, name, varname]) => {\n\tconst prop = variablesAbbrMap[name];\n\tif (prop) return { [prop]: h.cssvar(varname) };\n}]];\nconst cssProperty = [[/^\\[(.*)\\]$/, ([_, body], { theme }) => {\n\tif (!body.includes(\":\")) return;\n\tconst [prop, ...rest] = body.split(\":\");\n\tconst value = rest.join(\":\");\n\tif (!isURI(body) && /^[\\w-]+$/.test(prop) && isValidCSSBody(value)) {\n\t\tconst parsed = h.bracket(`[${value}]`, theme);\n\t\tif (parsed) return { [prop]: parsed };\n\t}\n}]];\nfunction isValidCSSBody(body) {\n\tlet i = 0;\n\tfunction findUntil(c) {\n\t\twhile (i < body.length) {\n\t\t\ti += 1;\n\t\t\tif (body[i] === c) return true;\n\t\t}\n\t\treturn false;\n\t}\n\tfor (i = 0; i < body.length; i++) {\n\t\tconst c = body[i];\n\t\tif (\"\\\"`'\".includes(c)) {\n\t\t\tif (!findUntil(c)) return false;\n\t\t} else if (c === \"(\") {\n\t\t\tif (!findUntil(\")\")) return false;\n\t\t} else if (\"[]{}:\".includes(c)) return false;\n\t}\n\treturn true;\n}\nfunction isURI(declaration) {\n\tif (!declaration.includes(\"://\")) return false;\n\ttry {\n\t\treturn new URL(declaration).host !== \"\";\n\t} catch {\n\t\treturn false;\n\t}\n}\n//#endregion\n//#region src/rules/view-transition.ts\nconst viewTransition = [[/^view-transition-([\\w-]+)$/, ([, name]) => {\n\treturn { \"view-transition-name\": name };\n}]];\n//#endregion\n//#region src/rules/default.ts\nconst rules = [\n\tfonts,\n\ttabSizes,\n\ttextIndents,\n\ttextStrokes,\n\ttextShadows,\n\tmargins,\n\tpaddings,\n\ttextAligns,\n\tverticalAligns,\n\tappearance,\n\toutline,\n\twillChange,\n\tlistStyle,\n\taccents,\n\tcarets,\n\timageRenderings,\n\toverscrolls,\n\toutline,\n\tscrollBehaviors,\n\twillChange,\n\tborders,\n\tbgColors,\n\topacity,\n\tcolorScheme,\n\tcontainer,\n\tcontainerParent,\n\ttextDecorations,\n\tflex,\n\tgaps,\n\tgrids,\n\tsizes,\n\taspectRatio,\n\tdisplays,\n\tappearances,\n\tcursors,\n\tcontains,\n\tpointerEvents,\n\tresizes,\n\tuserSelects,\n\twhitespaces,\n\tcontentVisibility,\n\tcontents,\n\tbreaks,\n\ttextWraps,\n\ttextOverflows,\n\ttextTransforms,\n\tfontStyles,\n\tfontSmoothings,\n\trings,\n\tboxShadows,\n\ttransforms,\n\ttransitions,\n\tcssVariables,\n\tcssProperty,\n\talignments,\n\tboxSizing,\n\tflexGridJustifiesAlignments,\n\tfloats,\n\tinsets,\n\tjustifies,\n\torders,\n\tplacements,\n\tpositions,\n\tzIndexes,\n\toverflows,\n\tsvgUtilities,\n\tanimations,\n\tbackgroundStyles,\n\thyphens,\n\twritingModes,\n\twritingOrientations,\n\taccessibility,\n\tscreenReadersAccess,\n\tisolations,\n\tobjectPositions,\n\tbackgroundBlendModes,\n\tmixBlendModes,\n\tdynamicViewportHeight,\n\tmasks,\n\tcolumns,\n\tfilters,\n\tlineClamps,\n\tplaceholders,\n\tscrolls,\n\ttables,\n\ttouchActions,\n\tfontVariantNumeric,\n\tviewTransition,\n\tspaces,\n\tdivides,\n\tfieldSizing,\n\tgapRules,\n\tquestionMark\n].flat();\n//#endregion\nexport { accents, accessibility, alignments, animations, appearance, appearances, aspectRatio, backgroundBlendModes, backgroundStyles, bgColors, borderStyles, borders, boxShadows, boxSizing, breaks, carets, colorScheme, columns, container, containerParent, containerShortcuts, contains, contentVisibility, contents, cssProperty, cssVariables, cursors, displays, divides, dynamicViewportHeight, fieldSizing, filters, flex, flexGridJustifiesAlignments, floats, fontSmoothings, fontStyles, fontVariantNumeric, fonts, gapRules, gaps, grids, handlerBorderStyle, hyphens, imageRenderings, insets, isolations, justifies, lineClamps, listStyle, margins, masks, mixBlendModes, notLastChildSelectorVariant, objectPositions, opacity, orders, outline, overflows, overscrolls, paddings, placeholders, placements, pointerEvents, positions, questionMark, resizes, rings, rules, screenReadersAccess, scrollBehaviors, scrolls, shadowProperties, sizes, spaces, splitShorthand, svgUtilities, tabSizes, tables, textAligns, textDecorations, textIndents, textOverflows, textShadows, textStrokes, textTransforms, textWraps, touchActions, transformBase, transforms, transitions, userSelects, verticalAligns, viewTransition, whitespaces, willChange, writingModes, writingOrientations, zIndexes };\n",
|
|
36
|
+
"import { r as containerShortcuts } from \"./container-Be9Fugl0.mjs\";\n//#region src/shortcuts/index.ts\nconst shortcuts = [...containerShortcuts];\n//#endregion\nexport { shortcuts };\n",
|
|
37
|
+
"//#region src/theme/colors.ts\nconst colors = {\n\tblack: \"#000\",\n\twhite: \"#fff\",\n\tslate: {\n\t\t50: \"oklch(98.4% 0.003 247.858)\",\n\t\t100: \"oklch(96.8% 0.007 247.896)\",\n\t\t200: \"oklch(92.9% 0.013 255.508)\",\n\t\t300: \"oklch(86.9% 0.022 252.894)\",\n\t\t400: \"oklch(70.4% 0.04 256.788)\",\n\t\t500: \"oklch(55.4% 0.046 257.417)\",\n\t\t600: \"oklch(44.6% 0.043 257.281)\",\n\t\t700: \"oklch(37.2% 0.044 257.287)\",\n\t\t800: \"oklch(27.9% 0.041 260.031)\",\n\t\t900: \"oklch(20.8% 0.042 265.755)\",\n\t\t950: \"oklch(12.9% 0.042 264.695)\"\n\t},\n\tgray: {\n\t\t50: \"oklch(98.5% 0.002 247.839)\",\n\t\t100: \"oklch(96.7% 0.003 264.542)\",\n\t\t200: \"oklch(92.8% 0.006 264.531)\",\n\t\t300: \"oklch(87.2% 0.01 258.338)\",\n\t\t400: \"oklch(70.7% 0.022 261.325)\",\n\t\t500: \"oklch(55.1% 0.027 264.364)\",\n\t\t600: \"oklch(44.6% 0.03 256.802)\",\n\t\t700: \"oklch(37.3% 0.034 259.733)\",\n\t\t800: \"oklch(27.8% 0.033 256.848)\",\n\t\t900: \"oklch(21% 0.034 264.665)\",\n\t\t950: \"oklch(13% 0.028 261.692)\"\n\t},\n\tzinc: {\n\t\t50: \"oklch(98.5% 0 0)\",\n\t\t100: \"oklch(96.7% 0.001 286.375)\",\n\t\t200: \"oklch(92% 0.004 286.32)\",\n\t\t300: \"oklch(87.1% 0.006 286.286)\",\n\t\t400: \"oklch(70.5% 0.015 286.067)\",\n\t\t500: \"oklch(55.2% 0.016 285.938)\",\n\t\t600: \"oklch(44.2% 0.017 285.786)\",\n\t\t700: \"oklch(37% 0.013 285.805)\",\n\t\t800: \"oklch(27.4% 0.006 286.033)\",\n\t\t900: \"oklch(21% 0.006 285.885)\",\n\t\t950: \"oklch(14.1% 0.005 285.823)\"\n\t},\n\tneutral: {\n\t\t50: \"oklch(98.5% 0 0)\",\n\t\t100: \"oklch(97% 0 0)\",\n\t\t200: \"oklch(92.2% 0 0)\",\n\t\t300: \"oklch(87% 0 0)\",\n\t\t400: \"oklch(70.8% 0 0)\",\n\t\t500: \"oklch(55.6% 0 0)\",\n\t\t600: \"oklch(43.9% 0 0)\",\n\t\t700: \"oklch(37.1% 0 0)\",\n\t\t800: \"oklch(26.9% 0 0)\",\n\t\t900: \"oklch(20.5% 0 0)\",\n\t\t950: \"oklch(14.5% 0 0)\"\n\t},\n\tstone: {\n\t\t50: \"oklch(98.5% 0.001 106.423)\",\n\t\t100: \"oklch(97% 0.001 106.424)\",\n\t\t200: \"oklch(92.3% 0.003 48.717)\",\n\t\t300: \"oklch(86.9% 0.005 56.366)\",\n\t\t400: \"oklch(70.9% 0.01 56.259)\",\n\t\t500: \"oklch(55.3% 0.013 58.071)\",\n\t\t600: \"oklch(44.4% 0.011 73.639)\",\n\t\t700: \"oklch(37.4% 0.01 67.558)\",\n\t\t800: \"oklch(26.8% 0.007 34.298)\",\n\t\t900: \"oklch(21.6% 0.006 56.043)\",\n\t\t950: \"oklch(14.7% 0.004 49.25)\"\n\t},\n\tmauve: {\n\t\t50: \"oklch(98.5% 0 0)\",\n\t\t100: \"oklch(96% 0.003 325.6)\",\n\t\t200: \"oklch(92.2% 0.005 325.62)\",\n\t\t300: \"oklch(86.5% 0.012 325.68)\",\n\t\t400: \"oklch(71.1% 0.019 323.02)\",\n\t\t500: \"oklch(54.2% 0.034 322.5)\",\n\t\t600: \"oklch(43.5% 0.029 321.78)\",\n\t\t700: \"oklch(36.4% 0.029 323.89)\",\n\t\t800: \"oklch(26.3% 0.024 320.12)\",\n\t\t900: \"oklch(21.2% 0.019 322.12)\",\n\t\t950: \"oklch(14.5% 0.008 326)\"\n\t},\n\tolive: {\n\t\t50: \"oklch(98.8% 0.003 106.5)\",\n\t\t100: \"oklch(96.6% 0.005 106.5)\",\n\t\t200: \"oklch(93% 0.007 106.5)\",\n\t\t300: \"oklch(88% 0.011 106.6)\",\n\t\t400: \"oklch(73.7% 0.021 106.9)\",\n\t\t500: \"oklch(58% 0.031 107.3)\",\n\t\t600: \"oklch(46.6% 0.025 107.3)\",\n\t\t700: \"oklch(39.4% 0.023 107.4)\",\n\t\t800: \"oklch(28.6% 0.016 107.4)\",\n\t\t900: \"oklch(22.8% 0.013 107.4)\",\n\t\t950: \"oklch(15.3% 0.006 107.1)\"\n\t},\n\tmist: {\n\t\t50: \"oklch(98.7% 0.002 197.1)\",\n\t\t100: \"oklch(96.3% 0.002 197.1)\",\n\t\t200: \"oklch(92.5% 0.005 214.3)\",\n\t\t300: \"oklch(87.2% 0.007 219.6)\",\n\t\t400: \"oklch(72.3% 0.014 214.4)\",\n\t\t500: \"oklch(56% 0.021 213.5)\",\n\t\t600: \"oklch(45% 0.017 213.2)\",\n\t\t700: \"oklch(37.8% 0.015 216)\",\n\t\t800: \"oklch(27.5% 0.011 216.9)\",\n\t\t900: \"oklch(21.8% 0.008 223.9)\",\n\t\t950: \"oklch(14.8% 0.004 228.8)\"\n\t},\n\ttaupe: {\n\t\t50: \"oklch(98.6% 0.002 67.8)\",\n\t\t100: \"oklch(96% 0.002 17.2)\",\n\t\t200: \"oklch(92.2% 0.005 34.3)\",\n\t\t300: \"oklch(86.8% 0.007 39.5)\",\n\t\t400: \"oklch(71.4% 0.014 41.2)\",\n\t\t500: \"oklch(54.7% 0.021 43.1)\",\n\t\t600: \"oklch(43.8% 0.017 39.3)\",\n\t\t700: \"oklch(36.7% 0.016 35.7)\",\n\t\t800: \"oklch(26.8% 0.011 36.5)\",\n\t\t900: \"oklch(21.4% 0.009 43.1)\",\n\t\t950: \"oklch(14.7% 0.004 49.3)\"\n\t},\n\tred: {\n\t\t50: \"oklch(97.1% 0.013 17.38)\",\n\t\t100: \"oklch(93.6% 0.032 17.717)\",\n\t\t200: \"oklch(88.5% 0.062 18.334)\",\n\t\t300: \"oklch(80.8% 0.114 19.571)\",\n\t\t400: \"oklch(70.4% 0.191 22.216)\",\n\t\t500: \"oklch(63.7% 0.237 25.331)\",\n\t\t600: \"oklch(57.7% 0.245 27.325)\",\n\t\t700: \"oklch(50.5% 0.213 27.518)\",\n\t\t800: \"oklch(44.4% 0.177 26.899)\",\n\t\t900: \"oklch(39.6% 0.141 25.723)\",\n\t\t950: \"oklch(25.8% 0.092 26.042)\"\n\t},\n\torange: {\n\t\t50: \"oklch(98% 0.016 73.684)\",\n\t\t100: \"oklch(95.4% 0.038 75.164)\",\n\t\t200: \"oklch(90.1% 0.076 70.697)\",\n\t\t300: \"oklch(83.7% 0.128 66.29)\",\n\t\t400: \"oklch(75% 0.183 55.934)\",\n\t\t500: \"oklch(70.5% 0.213 47.604)\",\n\t\t600: \"oklch(64.6% 0.222 41.116)\",\n\t\t700: \"oklch(55.3% 0.195 38.402)\",\n\t\t800: \"oklch(47% 0.157 37.304)\",\n\t\t900: \"oklch(40.8% 0.123 38.172)\",\n\t\t950: \"oklch(26.6% 0.079 36.259)\"\n\t},\n\tamber: {\n\t\t50: \"oklch(98.7% 0.022 95.277)\",\n\t\t100: \"oklch(96.2% 0.059 95.617)\",\n\t\t200: \"oklch(92.4% 0.12 95.746)\",\n\t\t300: \"oklch(87.9% 0.169 91.605)\",\n\t\t400: \"oklch(82.8% 0.189 84.429)\",\n\t\t500: \"oklch(76.9% 0.188 70.08)\",\n\t\t600: \"oklch(66.6% 0.179 58.318)\",\n\t\t700: \"oklch(55.5% 0.163 48.998)\",\n\t\t800: \"oklch(47.3% 0.137 46.201)\",\n\t\t900: \"oklch(41.4% 0.112 45.904)\",\n\t\t950: \"oklch(27.9% 0.077 45.635)\"\n\t},\n\tyellow: {\n\t\t50: \"oklch(98.7% 0.026 102.212)\",\n\t\t100: \"oklch(97.3% 0.071 103.193)\",\n\t\t200: \"oklch(94.5% 0.129 101.54)\",\n\t\t300: \"oklch(90.5% 0.182 98.111)\",\n\t\t400: \"oklch(85.2% 0.199 91.936)\",\n\t\t500: \"oklch(79.5% 0.184 86.047)\",\n\t\t600: \"oklch(68.1% 0.162 75.834)\",\n\t\t700: \"oklch(55.4% 0.135 66.442)\",\n\t\t800: \"oklch(47.6% 0.114 61.907)\",\n\t\t900: \"oklch(42.1% 0.095 57.708)\",\n\t\t950: \"oklch(28.6% 0.066 53.813)\"\n\t},\n\tlime: {\n\t\t50: \"oklch(98.6% 0.031 120.757)\",\n\t\t100: \"oklch(96.7% 0.067 122.328)\",\n\t\t200: \"oklch(93.8% 0.127 124.321)\",\n\t\t300: \"oklch(89.7% 0.196 126.665)\",\n\t\t400: \"oklch(84.1% 0.238 128.85)\",\n\t\t500: \"oklch(76.8% 0.233 130.85)\",\n\t\t600: \"oklch(64.8% 0.2 131.684)\",\n\t\t700: \"oklch(53.2% 0.157 131.589)\",\n\t\t800: \"oklch(45.3% 0.124 130.933)\",\n\t\t900: \"oklch(40.5% 0.101 131.063)\",\n\t\t950: \"oklch(27.4% 0.072 132.109)\"\n\t},\n\tgreen: {\n\t\t50: \"oklch(98.2% 0.018 155.826)\",\n\t\t100: \"oklch(96.2% 0.044 156.743)\",\n\t\t200: \"oklch(92.5% 0.084 155.995)\",\n\t\t300: \"oklch(87.1% 0.15 154.449)\",\n\t\t400: \"oklch(79.2% 0.209 151.711)\",\n\t\t500: \"oklch(72.3% 0.219 149.579)\",\n\t\t600: \"oklch(62.7% 0.194 149.214)\",\n\t\t700: \"oklch(52.7% 0.154 150.069)\",\n\t\t800: \"oklch(44.8% 0.119 151.328)\",\n\t\t900: \"oklch(39.3% 0.095 152.535)\",\n\t\t950: \"oklch(26.6% 0.065 152.934)\"\n\t},\n\temerald: {\n\t\t50: \"oklch(97.9% 0.021 166.113)\",\n\t\t100: \"oklch(95% 0.052 163.051)\",\n\t\t200: \"oklch(90.5% 0.093 164.15)\",\n\t\t300: \"oklch(84.5% 0.143 164.978)\",\n\t\t400: \"oklch(76.5% 0.177 163.223)\",\n\t\t500: \"oklch(69.6% 0.17 162.48)\",\n\t\t600: \"oklch(59.6% 0.145 163.225)\",\n\t\t700: \"oklch(50.8% 0.118 165.612)\",\n\t\t800: \"oklch(43.2% 0.095 166.913)\",\n\t\t900: \"oklch(37.8% 0.077 168.94)\",\n\t\t950: \"oklch(26.2% 0.051 172.552)\"\n\t},\n\tteal: {\n\t\t50: \"oklch(98.4% 0.014 180.72)\",\n\t\t100: \"oklch(95.3% 0.051 180.801)\",\n\t\t200: \"oklch(91% 0.096 180.426)\",\n\t\t300: \"oklch(85.5% 0.138 181.071)\",\n\t\t400: \"oklch(77.7% 0.152 181.912)\",\n\t\t500: \"oklch(70.4% 0.14 182.503)\",\n\t\t600: \"oklch(60% 0.118 184.704)\",\n\t\t700: \"oklch(51.1% 0.096 186.391)\",\n\t\t800: \"oklch(43.7% 0.078 188.216)\",\n\t\t900: \"oklch(38.6% 0.063 188.416)\",\n\t\t950: \"oklch(27.7% 0.046 192.524)\"\n\t},\n\tcyan: {\n\t\t50: \"oklch(98.4% 0.019 200.873)\",\n\t\t100: \"oklch(95.6% 0.045 203.388)\",\n\t\t200: \"oklch(91.7% 0.08 205.041)\",\n\t\t300: \"oklch(86.5% 0.127 207.078)\",\n\t\t400: \"oklch(78.9% 0.154 211.53)\",\n\t\t500: \"oklch(71.5% 0.143 215.221)\",\n\t\t600: \"oklch(60.9% 0.126 221.723)\",\n\t\t700: \"oklch(52% 0.105 223.128)\",\n\t\t800: \"oklch(45% 0.085 224.283)\",\n\t\t900: \"oklch(39.8% 0.07 227.392)\",\n\t\t950: \"oklch(30.2% 0.056 229.695)\"\n\t},\n\tsky: {\n\t\t50: \"oklch(97.7% 0.013 236.62)\",\n\t\t100: \"oklch(95.1% 0.026 236.824)\",\n\t\t200: \"oklch(90.1% 0.058 230.902)\",\n\t\t300: \"oklch(82.8% 0.111 230.318)\",\n\t\t400: \"oklch(74.6% 0.16 232.661)\",\n\t\t500: \"oklch(68.5% 0.169 237.323)\",\n\t\t600: \"oklch(58.8% 0.158 241.966)\",\n\t\t700: \"oklch(50% 0.134 242.749)\",\n\t\t800: \"oklch(44.3% 0.11 240.79)\",\n\t\t900: \"oklch(39.1% 0.09 240.876)\",\n\t\t950: \"oklch(29.3% 0.066 243.157)\"\n\t},\n\tblue: {\n\t\t50: \"oklch(97% 0.014 254.604)\",\n\t\t100: \"oklch(93.2% 0.032 255.585)\",\n\t\t200: \"oklch(88.2% 0.059 254.128)\",\n\t\t300: \"oklch(80.9% 0.105 251.813)\",\n\t\t400: \"oklch(70.7% 0.165 254.624)\",\n\t\t500: \"oklch(62.3% 0.214 259.815)\",\n\t\t600: \"oklch(54.6% 0.245 262.881)\",\n\t\t700: \"oklch(48.8% 0.243 264.376)\",\n\t\t800: \"oklch(42.4% 0.199 265.638)\",\n\t\t900: \"oklch(37.9% 0.146 265.522)\",\n\t\t950: \"oklch(28.2% 0.091 267.935)\"\n\t},\n\tindigo: {\n\t\t50: \"oklch(96.2% 0.018 272.314)\",\n\t\t100: \"oklch(93% 0.034 272.788)\",\n\t\t200: \"oklch(87% 0.065 274.039)\",\n\t\t300: \"oklch(78.5% 0.115 274.713)\",\n\t\t400: \"oklch(67.3% 0.182 276.935)\",\n\t\t500: \"oklch(58.5% 0.233 277.117)\",\n\t\t600: \"oklch(51.1% 0.262 276.966)\",\n\t\t700: \"oklch(45.7% 0.24 277.023)\",\n\t\t800: \"oklch(39.8% 0.195 277.366)\",\n\t\t900: \"oklch(35.9% 0.144 278.697)\",\n\t\t950: \"oklch(25.7% 0.09 281.288)\"\n\t},\n\tviolet: {\n\t\t50: \"oklch(96.9% 0.016 293.756)\",\n\t\t100: \"oklch(94.3% 0.029 294.588)\",\n\t\t200: \"oklch(89.4% 0.057 293.283)\",\n\t\t300: \"oklch(81.1% 0.111 293.571)\",\n\t\t400: \"oklch(70.2% 0.183 293.541)\",\n\t\t500: \"oklch(60.6% 0.25 292.717)\",\n\t\t600: \"oklch(54.1% 0.281 293.009)\",\n\t\t700: \"oklch(49.1% 0.27 292.581)\",\n\t\t800: \"oklch(43.2% 0.232 292.759)\",\n\t\t900: \"oklch(38% 0.189 293.745)\",\n\t\t950: \"oklch(28.3% 0.141 291.089)\"\n\t},\n\tpurple: {\n\t\t50: \"oklch(97.7% 0.014 308.299)\",\n\t\t100: \"oklch(94.6% 0.033 307.174)\",\n\t\t200: \"oklch(90.2% 0.063 306.703)\",\n\t\t300: \"oklch(82.7% 0.119 306.383)\",\n\t\t400: \"oklch(71.4% 0.203 305.504)\",\n\t\t500: \"oklch(62.7% 0.265 303.9)\",\n\t\t600: \"oklch(55.8% 0.288 302.321)\",\n\t\t700: \"oklch(49.6% 0.265 301.924)\",\n\t\t800: \"oklch(43.8% 0.218 303.724)\",\n\t\t900: \"oklch(38.1% 0.176 304.987)\",\n\t\t950: \"oklch(29.1% 0.149 302.717)\"\n\t},\n\tfuchsia: {\n\t\t50: \"oklch(97.7% 0.017 320.058)\",\n\t\t100: \"oklch(95.2% 0.037 318.852)\",\n\t\t200: \"oklch(90.3% 0.076 319.62)\",\n\t\t300: \"oklch(83.3% 0.145 321.434)\",\n\t\t400: \"oklch(74% 0.238 322.16)\",\n\t\t500: \"oklch(66.7% 0.295 322.15)\",\n\t\t600: \"oklch(59.1% 0.293 322.896)\",\n\t\t700: \"oklch(51.8% 0.253 323.949)\",\n\t\t800: \"oklch(45.2% 0.211 324.591)\",\n\t\t900: \"oklch(40.1% 0.17 325.612)\",\n\t\t950: \"oklch(29.3% 0.136 325.661)\"\n\t},\n\tpink: {\n\t\t50: \"oklch(97.1% 0.014 343.198)\",\n\t\t100: \"oklch(94.8% 0.028 342.258)\",\n\t\t200: \"oklch(89.9% 0.061 343.231)\",\n\t\t300: \"oklch(82.3% 0.12 346.018)\",\n\t\t400: \"oklch(71.8% 0.202 349.761)\",\n\t\t500: \"oklch(65.6% 0.241 354.308)\",\n\t\t600: \"oklch(59.2% 0.249 0.584)\",\n\t\t700: \"oklch(52.5% 0.223 3.958)\",\n\t\t800: \"oklch(45.9% 0.187 3.815)\",\n\t\t900: \"oklch(40.8% 0.153 2.432)\",\n\t\t950: \"oklch(28.4% 0.109 3.907)\"\n\t},\n\trose: {\n\t\t50: \"oklch(96.9% 0.015 12.422)\",\n\t\t100: \"oklch(94.1% 0.03 12.58)\",\n\t\t200: \"oklch(89.2% 0.058 10.001)\",\n\t\t300: \"oklch(81% 0.117 11.638)\",\n\t\t400: \"oklch(71.2% 0.194 13.428)\",\n\t\t500: \"oklch(64.5% 0.246 16.439)\",\n\t\t600: \"oklch(58.6% 0.253 17.585)\",\n\t\t700: \"oklch(51.4% 0.222 16.935)\",\n\t\t800: \"oklch(45.5% 0.188 13.697)\",\n\t\t900: \"oklch(41% 0.159 10.272)\",\n\t\t950: \"oklch(27.1% 0.105 12.094)\"\n\t},\n\tlight: {\n\t\t50: \"oklch(99.4% 0 0)\",\n\t\t100: \"oklch(99.11% 0 0)\",\n\t\t200: \"oklch(98.51% 0 0)\",\n\t\t300: \"oklch(98.16% 0.0017 247.84)\",\n\t\t400: \"oklch(97.31% 0 0)\",\n\t\t500: \"oklch(96.12% 0 0)\",\n\t\t600: \"oklch(96.32% 0.0034 247.86)\",\n\t\t700: \"oklch(94.17% 0.0052 247.88)\",\n\t\t800: \"oklch(91.09% 0.007 247.9)\",\n\t\t900: \"oklch(90.72% 0.0051 228.82)\",\n\t\t950: \"oklch(89.23% 0.006 239.83)\"\n\t},\n\tdark: {\n\t\t50: \"oklch(40.91% 0 0)\",\n\t\t100: \"oklch(35.62% 0 0)\",\n\t\t200: \"oklch(31.71% 0 0)\",\n\t\t300: \"oklch(29.72% 0 0)\",\n\t\t400: \"oklch(25.2% 0 0)\",\n\t\t500: \"oklch(23.93% 0 0)\",\n\t\t600: \"oklch(22.73% 0.0038 286.09)\",\n\t\t700: \"oklch(22.21% 0 0)\",\n\t\t800: \"oklch(20.9% 0 0)\",\n\t\t900: \"oklch(16.84% 0 0)\",\n\t\t950: \"oklch(13.44% 0 0)\"\n\t}\n};\nObject.values(colors).forEach((color) => {\n\tif (typeof color !== \"string\" && color !== void 0) color.DEFAULT = color.DEFAULT || color[400];\n});\n//#endregion\nexport { colors as t };\n",
|
|
38
|
+
"import { t as colors } from \"./colors-LrxJAP6O.mjs\";\n//#region src/theme/animate.ts\nconst animation = {\n\tkeyframes: {\n\t\t\"pulse\": \"{0%, 100% {opacity:1} 50% {opacity:.5}}\",\n\t\t\"bounce\": \"{0%, 100% {transform:translateY(-25%);animation-timing-function:cubic-bezier(0.8,0,1,1)} 50% {transform:translateY(0);animation-timing-function:cubic-bezier(0,0,0.2,1)}}\",\n\t\t\"spin\": \"{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}\",\n\t\t\"ping\": \"{0%{transform:scale(1);opacity:1}75%,100%{transform:scale(2);opacity:0}}\",\n\t\t\"bounce-alt\": \"{from,20%,53%,80%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1);transform:translate3d(0,0,0)}40%,43%{animation-timing-function:cubic-bezier(0.755,0.05,0.855,0.06);transform:translate3d(0,-30px,0)}70%{animation-timing-function:cubic-bezier(0.755,0.05,0.855,0.06);transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}\",\n\t\t\"flash\": \"{from,50%,to{opacity:1}25%,75%{opacity:0}}\",\n\t\t\"pulse-alt\": \"{from{transform:scale3d(1,1,1)}50%{transform:scale3d(1.05,1.05,1.05)}to{transform:scale3d(1,1,1)}}\",\n\t\t\"rubber-band\": \"{from{transform:scale3d(1,1,1)}30%{transform:scale3d(1.25,0.75,1)}40%{transform:scale3d(0.75,1.25,1)}50%{transform:scale3d(1.15,0.85,1)}65%{transform:scale3d(0.95,1.05,1)}75%{transform:scale3d(1.05,0.95,1)}to{transform:scale3d(1,1,1)}}\",\n\t\t\"shake-x\": \"{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(-10px,0,0)}20%,40%,60%,80%{transform:translate3d(10px,0,0)}}\",\n\t\t\"shake-y\": \"{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(0,-10px,0)}20%,40%,60%,80%{transform:translate3d(0,10px,0)}}\",\n\t\t\"head-shake\": \"{0%{transform:translateX(0)}6.5%{transform:translateX(-6px) rotateY(-9deg)}18.5%{transform:translateX(5px) rotateY(7deg)}31.5%{transform:translateX(-3px) rotateY(-5deg)}43.5%{transform:translateX(2px) rotateY(3deg)}50%{transform:translateX(0)}}\",\n\t\t\"swing\": \"{20%{transform:rotate3d(0,0,1,15deg)}40%{transform:rotate3d(0,0,1,-10deg)}60%{transform:rotate3d(0,0,1,5deg)}80%{transform:rotate3d(0,0,1,-5deg)}to{transform:rotate3d(0,0,1,0deg)}}\",\n\t\t\"tada\": \"{from{transform:scale3d(1,1,1)}10%,20%{transform:scale3d(0.9,0.9,0.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{transform:scale3d(1,1,1)}}\",\n\t\t\"wobble\": \"{from{transform:translate3d(0,0,0)}15%{transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{transform:translate3d(0,0,0)}}\",\n\t\t\"jello\": \"{from,11.1%,to{transform:translate3d(0,0,0)}22.2%{transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{transform:skewX(6.25deg) skewY(6.25deg)}44.4%{transform:skewX(-3.125deg)skewY(-3.125deg)}55.5%{transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{transform:skewX(-0.78125deg) skewY(-0.78125deg)}77.7%{transform:skewX(0.390625deg) skewY(0.390625deg)}88.8%{transform:skewX(-0.1953125deg) skewY(-0.1953125deg)}}\",\n\t\t\"heart-beat\": \"{0%{transform:scale(1)}14%{transform:scale(1.3)}28%{transform:scale(1)}42%{transform:scale(1.3)}70%{transform:scale(1)}}\",\n\t\t\"hinge\": \"{0%{transform-origin:top left;animation-timing-function:ease-in-out}20%,60%{transform:rotate3d(0,0,1,80deg);transform-origin:top left;animation-timing-function:ease-in-out}40%,80%{transform:rotate3d(0,0,1,60deg);transform-origin:top left;animation-timing-function:ease-in-out}to{transform:translate3d(0,700px,0);opacity:0}}\",\n\t\t\"jack-in-the-box\": \"{from{opacity:0;transform-origin:center bottom;transform:scale(0.1) rotate(30deg)}50%{transform:rotate(-10deg)}70%{transform:rotate(3deg)}to{transform:scale(1)}}\",\n\t\t\"light-speed-in-left\": \"{from{opacity:0;transform:translate3d(-100%,0,0) skewX(-30deg)}60%{opacity:1;transform:skewX(20deg)}80%{transform:skewX(-5deg)}to{transform:translate3d(0,0,0)}}\",\n\t\t\"light-speed-in-right\": \"{from{opacity:0;transform:translate3d(100%,0,0) skewX(-30deg)}60%{opacity:1;transform:skewX(20deg)}80%{transform:skewX(-5deg)}to{transform:translate3d(0,0,0)}}\",\n\t\t\"light-speed-out-left\": \"{from{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0) skewX(30deg)}}\",\n\t\t\"light-speed-out-right\": \"{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) skewX(30deg)}}\",\n\t\t\"flip\": \"{from{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,-360deg);animation-timing-function:ease-out}40%{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);animation-timing-function:ease-out}50%{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);animation-timing-function:ease-in}80%{transform:perspective(400px) scale3d(0.95,0.95,0.95) translate3d(0,0,0) rotate3d(0,1,0,0deg);animation-timing-function:ease-in}to{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,0deg);animation-timing-function:ease-in}}\",\n\t\t\"flip-in-x\": \"{from{transform:perspective(400px) rotate3d(1,0,0,90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1,0,0,-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{transform:perspective(400px)}}\",\n\t\t\"flip-in-y\": \"{from{transform:perspective(400px) rotate3d(0,1,0,90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(0,1,0,-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{transform:perspective(400px)}}\",\n\t\t\"flip-out-x\": \"{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}\",\n\t\t\"flip-out-y\": \"{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}\",\n\t\t\"rotate-in\": \"{from{transform-origin:center;transform:rotate3d(0,0,1,-200deg);opacity:0}to{transform-origin:center;transform:translate3d(0,0,0);opacity:1}}\",\n\t\t\"rotate-in-down-left\": \"{from{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}to{transform-origin:left bottom;transform:translate3d(0,0,0);opacity:1}}\",\n\t\t\"rotate-in-down-right\": \"{from{transform-origin:right bottom;transform:rotate3d(0,0,1,45deg);opacity:0}to{transform-origin:right bottom;transform:translate3d(0,0,0);opacity:1}}\",\n\t\t\"rotate-in-up-left\": \"{from{transform-origin:left top;transform:rotate3d(0,0,1,45deg);opacity:0}to{transform-origin:left top;transform:translate3d(0,0,0);opacity:1}}\",\n\t\t\"rotate-in-up-right\": \"{from{transform-origin:right bottom;transform:rotate3d(0,0,1,-90deg);opacity:0}to{transform-origin:right bottom;transform:translate3d(0,0,0);opacity:1}}\",\n\t\t\"rotate-out\": \"{from{transform-origin:center;opacity:1}to{transform-origin:center;transform:rotate3d(0,0,1,200deg);opacity:0}}\",\n\t\t\"rotate-out-down-left\": \"{from{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,45deg);opacity:0}}\",\n\t\t\"rotate-out-down-right\": \"{from{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}\",\n\t\t\"rotate-out-up-left\": \"{from{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}\",\n\t\t\"rotate-out-up-right\": \"{from{transform-origin:right bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,90deg);opacity:0}}\",\n\t\t\"roll-in\": \"{from{opacity:0;transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"roll-out\": \"{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}\",\n\t\t\"zoom-in\": \"{from{opacity:0;transform:scale3d(0.3,0.3,0.3)}50%{opacity:1}}\",\n\t\t\"zoom-in-down\": \"{from{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(0,-1000px,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}\",\n\t\t\"zoom-in-left\": \"{from{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(-1000px,0,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(10px,0,0);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}\",\n\t\t\"zoom-in-right\": \"{from{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(1000px,0,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(-10px,0,0);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}\",\n\t\t\"zoom-in-up\": \"{from{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(0,1000px,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}\",\n\t\t\"zoom-out\": \"{from{opacity:1}50%{opacity:0;transform:scale3d(0.3,0.3,0.3)}to{opacity:0}}\",\n\t\t\"zoom-out-down\": \"{40%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}to{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(0,2000px,0);transform-origin:center bottom;animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}\",\n\t\t\"zoom-out-left\": \"{40%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(42px,0,0)}to{opacity:0;transform:scale(0.1) translate3d(-2000px,0,0);transform-origin:left center}}\",\n\t\t\"zoom-out-right\": \"{40%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(-42px,0,0)}to{opacity:0;transform:scale(0.1) translate3d(2000px,0,0);transform-origin:right center}}\",\n\t\t\"zoom-out-up\": \"{40%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}to{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(0,-2000px,0);transform-origin:center bottom;animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}\",\n\t\t\"bounce-in\": \"{from,20%,40%,60%,80%,to{animation-timing-function:ease-in-out}0%{opacity:0;transform:scale3d(0.3,0.3,0.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(0.9,0.9,0.9)}60%{transform:scale3d(1.03,1.03,1.03);opacity:1}80%{transform:scale3d(0.97,0.97,0.97)}to{opacity:1;transform:scale3d(1,1,1)}}\",\n\t\t\"bounce-in-down\": \"{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:translate3d(0,0,0)}}\",\n\t\t\"bounce-in-left\": \"{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:translate3d(0,0,0)}}\",\n\t\t\"bounce-in-right\": \"{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:translate3d(0,0,0)}}\",\n\t\t\"bounce-in-up\": \"{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translate3d(0,0,0)}}\",\n\t\t\"bounce-out\": \"{20%{transform:scale3d(0.9,0.9,0.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(0.3,0.3,0.3)}}\",\n\t\t\"bounce-out-down\": \"{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}\",\n\t\t\"bounce-out-left\": \"{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}\",\n\t\t\"bounce-out-right\": \"{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}\",\n\t\t\"bounce-out-up\": \"{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}\",\n\t\t\"slide-in-down\": \"{from{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}\",\n\t\t\"slide-in-left\": \"{from{transform:translate3d(-100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}\",\n\t\t\"slide-in-right\": \"{from{transform:translate3d(100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}\",\n\t\t\"slide-in-up\": \"{from{transform:translate3d(0,100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}\",\n\t\t\"slide-out-down\": \"{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,100%,0)}}\",\n\t\t\"slide-out-left\": \"{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(-100%,0,0)}}\",\n\t\t\"slide-out-right\": \"{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(100%,0,0)}}\",\n\t\t\"slide-out-up\": \"{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,-100%,0)}}\",\n\t\t\"fade-in\": \"{from{opacity:0}to{opacity:1}}\",\n\t\t\"fade-in-down\": \"{from{opacity:0;transform:translate3d(0,-100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-down-big\": \"{from{opacity:0;transform:translate3d(0,-2000px,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-left\": \"{from{opacity:0;transform:translate3d(-100%,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-left-big\": \"{from{opacity:0;transform:translate3d(-2000px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-right\": \"{from{opacity:0;transform:translate3d(100%,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-right-big\": \"{from{opacity:0;transform:translate3d(2000px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-up\": \"{from{opacity:0;transform:translate3d(0,100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-up-big\": \"{from{opacity:0;transform:translate3d(0,2000px,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-top-left\": \"{from{opacity:0;transform:translate3d(-100%,-100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-top-right\": \"{from{opacity:0;transform:translate3d(100%,-100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-bottom-left\": \"{from{opacity:0;transform:translate3d(-100%,100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-bottom-right\": \"{from{opacity:0;transform:translate3d(100%,100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-out\": \"{from{opacity:1}to{opacity:0}}\",\n\t\t\"fade-out-down\": \"{from{opacity:1}to{opacity:0;transform:translate3d(0,100%,0)}}\",\n\t\t\"fade-out-down-big\": \"{from{opacity:1}to{opacity:0;transform:translate3d(0,2000px,0)}}\",\n\t\t\"fade-out-left\": \"{from{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0)}}\",\n\t\t\"fade-out-left-big\": \"{from{opacity:1}to{opacity:0;transform:translate3d(-2000px,0,0)}}\",\n\t\t\"fade-out-right\": \"{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0)}}\",\n\t\t\"fade-out-right-big\": \"{from{opacity:1}to{opacity:0;transform:translate3d(2000px,0,0)}}\",\n\t\t\"fade-out-up\": \"{from{opacity:1}to{opacity:0;transform:translate3d(0,-100%,0)}}\",\n\t\t\"fade-out-up-big\": \"{from{opacity:1}to{opacity:0;transform:translate3d(0,-2000px,0)}}\",\n\t\t\"fade-out-top-left\": \"{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:0;transform:translate3d(-100%,-100%,0)}}\",\n\t\t\"fade-out-top-right\": \"{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:0;transform:translate3d(100%,-100%,0)}}\",\n\t\t\"fade-out-bottom-left\": \"{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:0;transform:translate3d(-100%,100%,0)}}\",\n\t\t\"fade-out-bottom-right\": \"{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:0;transform:translate3d(100%,100%,0)}}\",\n\t\t\"back-in-up\": \"{0%{opacity:0.7;transform:translateY(1200px) scale(0.7)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:1;transform:scale(1)}}\",\n\t\t\"back-in-down\": \"{0%{opacity:0.7;transform:translateY(-1200px) scale(0.7)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:1;transform:scale(1)}}\",\n\t\t\"back-in-right\": \"{0%{opacity:0.7;transform:translateX(2000px) scale(0.7)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:1;transform:scale(1)}}\",\n\t\t\"back-in-left\": \"{0%{opacity:0.7;transform:translateX(-2000px) scale(0.7)}80%{opacity:0.7;transform:translateX(0px) scale(0.7)}100%{opacity:1;transform:scale(1)}}\",\n\t\t\"back-out-up\": \"{0%{opacity:1;transform:scale(1)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:0.7;transform:translateY(-700px) scale(0.7)}}\",\n\t\t\"back-out-down\": \"{0%{opacity:1;transform:scale(1)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:0.7;transform:translateY(700px) scale(0.7)}}\",\n\t\t\"back-out-right\": \"{0%{opacity:1;transform:scale(1)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:0.7;transform:translateX(2000px) scale(0.7)}}\",\n\t\t\"back-out-left\": \"{0%{opacity:1;transform:scale(1)}80%{opacity:0.7;transform:translateX(-2000px) scale(0.7)}100%{opacity:0.7;transform:translateY(-700px) scale(0.7)}}\"\n\t},\n\tdurations: {\n\t\t\"pulse\": \"2s\",\n\t\t\"heart-beat\": \"1.3s\",\n\t\t\"bounce-in\": \"0.75s\",\n\t\t\"bounce-out\": \"0.75s\",\n\t\t\"flip-out-x\": \"0.75s\",\n\t\t\"flip-out-y\": \"0.75s\",\n\t\t\"hinge\": \"2s\"\n\t},\n\ttimingFns: {\n\t\t\"pulse\": \"cubic-bezier(0.4,0,.6,1)\",\n\t\t\"ping\": \"cubic-bezier(0,0,.2,1)\",\n\t\t\"head-shake\": \"ease-in-out\",\n\t\t\"heart-beat\": \"ease-in-out\",\n\t\t\"pulse-alt\": \"ease-in-out\",\n\t\t\"light-speed-in-left\": \"ease-out\",\n\t\t\"light-speed-in-right\": \"ease-out\",\n\t\t\"light-speed-out-left\": \"ease-in\",\n\t\t\"light-speed-out-right\": \"ease-in\"\n\t},\n\tproperties: {\n\t\t\"bounce-alt\": { \"transform-origin\": \"center bottom\" },\n\t\t\"jello\": { \"transform-origin\": \"center\" },\n\t\t\"swing\": { \"transform-origin\": \"top center\" },\n\t\t\"flip\": { \"backface-visibility\": \"visible\" },\n\t\t\"flip-in-x\": { \"backface-visibility\": \"visible !important\" },\n\t\t\"flip-in-y\": { \"backface-visibility\": \"visible !important\" },\n\t\t\"flip-out-x\": { \"backface-visibility\": \"visible !important\" },\n\t\t\"flip-out-y\": { \"backface-visibility\": \"visible !important\" },\n\t\t\"rotate-in\": { \"transform-origin\": \"center\" },\n\t\t\"rotate-in-down-left\": { \"transform-origin\": \"left bottom\" },\n\t\t\"rotate-in-down-right\": { \"transform-origin\": \"right bottom\" },\n\t\t\"rotate-in-up-left\": { \"transform-origin\": \"left bottom\" },\n\t\t\"rotate-in-up-right\": { \"transform-origin\": \"right bottom\" },\n\t\t\"rotate-out\": { \"transform-origin\": \"center\" },\n\t\t\"rotate-out-down-left\": { \"transform-origin\": \"left bottom\" },\n\t\t\"rotate-out-down-right\": { \"transform-origin\": \"right bottom\" },\n\t\t\"rotate-out-up-left\": { \"transform-origin\": \"left bottom\" },\n\t\t\"rotate-out-up-right\": { \"transform-origin\": \"right bottom\" },\n\t\t\"hinge\": { \"transform-origin\": \"top left\" },\n\t\t\"zoom-out-down\": { \"transform-origin\": \"center bottom\" },\n\t\t\"zoom-out-left\": { \"transform-origin\": \"left center\" },\n\t\t\"zoom-out-right\": { \"transform-origin\": \"right center\" },\n\t\t\"zoom-out-up\": { \"transform-origin\": \"center bottom\" }\n\t},\n\tcounts: {\n\t\t\"spin\": \"infinite\",\n\t\t\"ping\": \"infinite\",\n\t\t\"pulse\": \"infinite\",\n\t\t\"pulse-alt\": \"infinite\",\n\t\t\"bounce\": \"infinite\",\n\t\t\"bounce-alt\": \"infinite\"\n\t},\n\tcategory: {\n\t\t\"pulse\": \"Attention Seekers\",\n\t\t\"bounce\": \"Attention Seekers\",\n\t\t\"spin\": \"Attention Seekers\",\n\t\t\"ping\": \"Attention Seekers\",\n\t\t\"bounce-alt\": \"Attention Seekers\",\n\t\t\"flash\": \"Attention Seekers\",\n\t\t\"pulse-alt\": \"Attention Seekers\",\n\t\t\"rubber-band\": \"Attention Seekers\",\n\t\t\"shake-x\": \"Attention Seekers\",\n\t\t\"shake-y\": \"Attention Seekers\",\n\t\t\"head-shake\": \"Attention Seekers\",\n\t\t\"swing\": \"Attention Seekers\",\n\t\t\"tada\": \"Attention Seekers\",\n\t\t\"wobble\": \"Attention Seekers\",\n\t\t\"jello\": \"Attention Seekers\",\n\t\t\"heart-beat\": \"Attention Seekers\",\n\t\t\"hinge\": \"Specials\",\n\t\t\"jack-in-the-box\": \"Specials\",\n\t\t\"light-speed-in-left\": \"Lightspeed\",\n\t\t\"light-speed-in-right\": \"Lightspeed\",\n\t\t\"light-speed-out-left\": \"Lightspeed\",\n\t\t\"light-speed-out-right\": \"Lightspeed\",\n\t\t\"flip\": \"Flippers\",\n\t\t\"flip-in-x\": \"Flippers\",\n\t\t\"flip-in-y\": \"Flippers\",\n\t\t\"flip-out-x\": \"Flippers\",\n\t\t\"flip-out-y\": \"Flippers\",\n\t\t\"rotate-in\": \"Rotating Entrances\",\n\t\t\"rotate-in-down-left\": \"Rotating Entrances\",\n\t\t\"rotate-in-down-right\": \"Rotating Entrances\",\n\t\t\"rotate-in-up-left\": \"Rotating Entrances\",\n\t\t\"rotate-in-up-right\": \"Rotating Entrances\",\n\t\t\"rotate-out\": \"Rotating Exits\",\n\t\t\"rotate-out-down-left\": \"Rotating Exits\",\n\t\t\"rotate-out-down-right\": \"Rotating Exits\",\n\t\t\"rotate-out-up-left\": \"Rotating Exits\",\n\t\t\"rotate-out-up-right\": \"Rotating Exits\",\n\t\t\"roll-in\": \"Specials\",\n\t\t\"roll-out\": \"Specials\",\n\t\t\"zoom-in\": \"Zooming Entrances\",\n\t\t\"zoom-in-down\": \"Zooming Entrances\",\n\t\t\"zoom-in-left\": \"Zooming Entrances\",\n\t\t\"zoom-in-right\": \"Zooming Entrances\",\n\t\t\"zoom-in-up\": \"Zooming Entrances\",\n\t\t\"zoom-out\": \"Zooming Exits\",\n\t\t\"zoom-out-down\": \"Zooming Exits\",\n\t\t\"zoom-out-left\": \"Zooming Exits\",\n\t\t\"zoom-out-right\": \"Zooming Exits\",\n\t\t\"zoom-out-up\": \"Zooming Exits\",\n\t\t\"bounce-in\": \"Bouncing Entrances\",\n\t\t\"bounce-in-down\": \"Bouncing Entrances\",\n\t\t\"bounce-in-left\": \"Bouncing Entrances\",\n\t\t\"bounce-in-right\": \"Bouncing Entrances\",\n\t\t\"bounce-in-up\": \"Bouncing Entrances\",\n\t\t\"bounce-out\": \"Bouncing Exits\",\n\t\t\"bounce-out-down\": \"Bouncing Exits\",\n\t\t\"bounce-out-left\": \"Bouncing Exits\",\n\t\t\"bounce-out-right\": \"Bouncing Exits\",\n\t\t\"bounce-out-up\": \"Bouncing Exits\",\n\t\t\"slide-in-down\": \"Sliding Entrances\",\n\t\t\"slide-in-left\": \"Sliding Entrances\",\n\t\t\"slide-in-right\": \"Sliding Entrances\",\n\t\t\"slide-in-up\": \"Sliding Entrances\",\n\t\t\"slide-out-down\": \"Sliding Exits\",\n\t\t\"slide-out-left\": \"Sliding Exits\",\n\t\t\"slide-out-right\": \"Sliding Exits\",\n\t\t\"slide-out-up\": \"Sliding Exits\",\n\t\t\"fade-in\": \"Fading Entrances\",\n\t\t\"fade-in-down\": \"Fading Entrances\",\n\t\t\"fade-in-down-big\": \"Fading Entrances\",\n\t\t\"fade-in-left\": \"Fading Entrances\",\n\t\t\"fade-in-left-big\": \"Fading Entrances\",\n\t\t\"fade-in-right\": \"Fading Entrances\",\n\t\t\"fade-in-right-big\": \"Fading Entrances\",\n\t\t\"fade-in-up\": \"Fading Entrances\",\n\t\t\"fade-in-up-big\": \"Fading Entrances\",\n\t\t\"fade-in-top-left\": \"Fading Entrances\",\n\t\t\"fade-in-top-right\": \"Fading Entrances\",\n\t\t\"fade-in-bottom-left\": \"Fading Entrances\",\n\t\t\"fade-in-bottom-right\": \"Fading Entrances\",\n\t\t\"fade-out\": \"Fading Exits\",\n\t\t\"fade-out-down\": \"Fading Exits\",\n\t\t\"fade-out-down-big\": \"Fading Exits\",\n\t\t\"fade-out-left\": \"Fading Exits\",\n\t\t\"fade-out-left-big\": \"Fading Exits\",\n\t\t\"fade-out-right\": \"Fading Exits\",\n\t\t\"fade-out-right-big\": \"Fading Exits\",\n\t\t\"fade-out-up\": \"Fading Exits\",\n\t\t\"fade-out-up-big\": \"Fading Exits\",\n\t\t\"fade-out-top-left\": \"Fading Exits\",\n\t\t\"fade-out-top-right\": \"Fading Exits\",\n\t\t\"fade-out-bottom-left\": \"Fading Exits\",\n\t\t\"fade-out-bottom-right\": \"Fading Exits\",\n\t\t\"back-in-up\": \"Back Entrances\",\n\t\t\"back-in-down\": \"Back Entrances\",\n\t\t\"back-in-right\": \"Back Entrances\",\n\t\t\"back-in-left\": \"Back Entrances\",\n\t\t\"back-out-up\": \"Back Exits\",\n\t\t\"back-out-down\": \"Back Exits\",\n\t\t\"back-out-right\": \"Back Exits\",\n\t\t\"back-out-left\": \"Back Exits\"\n\t}\n};\n//#endregion\n//#region src/theme/aria.ts\nconst aria = {\n\tbusy: \"busy=\\\"true\\\"\",\n\tchecked: \"checked=\\\"true\\\"\",\n\tdisabled: \"disabled=\\\"true\\\"\",\n\texpanded: \"expanded=\\\"true\\\"\",\n\thidden: \"hidden=\\\"true\\\"\",\n\tpressed: \"pressed=\\\"true\\\"\",\n\treadonly: \"readonly=\\\"true\\\"\",\n\trequired: \"required=\\\"true\\\"\",\n\tselected: \"selected=\\\"true\\\"\"\n};\n//#endregion\n//#region src/theme/filters.ts\nconst blur = {\n\t\"DEFAULT\": \"8px\",\n\t\"xs\": \"4px\",\n\t\"sm\": \"8px\",\n\t\"md\": \"12px\",\n\t\"lg\": \"16px\",\n\t\"xl\": \"24px\",\n\t\"2xl\": \"40px\",\n\t\"3xl\": \"64px\"\n};\n//#endregion\n//#region src/theme/font.ts\nconst font = {\n\tsans: [\n\t\t\"ui-sans-serif\",\n\t\t\"system-ui\",\n\t\t\"-apple-system\",\n\t\t\"BlinkMacSystemFont\",\n\t\t\"\\\"Segoe UI\\\"\",\n\t\t\"Roboto\",\n\t\t\"\\\"Helvetica Neue\\\"\",\n\t\t\"Arial\",\n\t\t\"\\\"Noto Sans\\\"\",\n\t\t\"sans-serif\",\n\t\t\"\\\"Apple Color Emoji\\\"\",\n\t\t\"\\\"Segoe UI Emoji\\\"\",\n\t\t\"\\\"Segoe UI Symbol\\\"\",\n\t\t\"\\\"Noto Color Emoji\\\"\"\n\t].join(\",\"),\n\tserif: [\n\t\t\"ui-serif\",\n\t\t\"Georgia\",\n\t\t\"Cambria\",\n\t\t\"\\\"Times New Roman\\\"\",\n\t\t\"Times\",\n\t\t\"serif\"\n\t].join(\",\"),\n\tmono: [\n\t\t\"ui-monospace\",\n\t\t\"SFMono-Regular\",\n\t\t\"Menlo\",\n\t\t\"Monaco\",\n\t\t\"Consolas\",\n\t\t\"\\\"Liberation Mono\\\"\",\n\t\t\"\\\"Courier New\\\"\",\n\t\t\"monospace\"\n\t].join(\",\")\n};\nconst text = {\n\t\"xs\": {\n\t\tfontSize: \"0.75rem\",\n\t\tlineHeight: \"1rem\"\n\t},\n\t\"sm\": {\n\t\tfontSize: \"0.875rem\",\n\t\tlineHeight: \"1.25rem\"\n\t},\n\t\"base\": {\n\t\tfontSize: \"1rem\",\n\t\tlineHeight: \"1.5rem\"\n\t},\n\t\"lg\": {\n\t\tfontSize: \"1.125rem\",\n\t\tlineHeight: \"1.75rem\"\n\t},\n\t\"xl\": {\n\t\tfontSize: \"1.25rem\",\n\t\tlineHeight: \"1.75rem\"\n\t},\n\t\"2xl\": {\n\t\tfontSize: \"1.5rem\",\n\t\tlineHeight: \"2rem\"\n\t},\n\t\"3xl\": {\n\t\tfontSize: \"1.875rem\",\n\t\tlineHeight: \"2.25rem\"\n\t},\n\t\"4xl\": {\n\t\tfontSize: \"2.25rem\",\n\t\tlineHeight: \"2.5rem\"\n\t},\n\t\"5xl\": {\n\t\tfontSize: \"3rem\",\n\t\tlineHeight: \"1\"\n\t},\n\t\"6xl\": {\n\t\tfontSize: \"3.75rem\",\n\t\tlineHeight: \"1\"\n\t},\n\t\"7xl\": {\n\t\tfontSize: \"4.5rem\",\n\t\tlineHeight: \"1\"\n\t},\n\t\"8xl\": {\n\t\tfontSize: \"6rem\",\n\t\tlineHeight: \"1\"\n\t},\n\t\"9xl\": {\n\t\tfontSize: \"8rem\",\n\t\tlineHeight: \"1\"\n\t}\n};\nconst fontWeight = {\n\tthin: \"100\",\n\textralight: \"200\",\n\tlight: \"300\",\n\tnormal: \"400\",\n\tmedium: \"500\",\n\tsemibold: \"600\",\n\tbold: \"700\",\n\textrabold: \"800\",\n\tblack: \"900\"\n};\nconst tracking = {\n\ttighter: \"-0.05em\",\n\ttight: \"-0.025em\",\n\tnormal: \"0em\",\n\twide: \"0.025em\",\n\twider: \"0.05em\",\n\twidest: \"0.1em\"\n};\nconst leading = {\n\tnone: \"1\",\n\ttight: \"1.25\",\n\tsnug: \"1.375\",\n\tnormal: \"1.5\",\n\trelaxed: \"1.625\",\n\tloose: \"2\"\n};\nconst textStrokeWidth = {\n\tDEFAULT: \"1.5rem\",\n\tnone: \"0\",\n\tsm: \"thin\",\n\tmd: \"medium\",\n\tlg: \"thick\"\n};\n//#endregion\n//#region src/theme/media.ts\nconst media = {\n\tportrait: \"(orientation: portrait)\",\n\tlandscape: \"(orientation: landscape)\",\n\tos_dark: \"(prefers-color-scheme: dark)\",\n\tos_light: \"(prefers-color-scheme: light)\",\n\tmotion_ok: \"(prefers-reduced-motion: no-preference)\",\n\tmotion_not_ok: \"(prefers-reduced-motion: reduce)\",\n\thigh_contrast: \"(prefers-contrast: high)\",\n\tlow_contrast: \"(prefers-contrast: low)\",\n\topacity_ok: \"(prefers-reduced-transparency: no-preference)\",\n\topacity_not_ok: \"(prefers-reduced-transparency: reduce)\",\n\tuse_data_ok: \"(prefers-reduced-data: no-preference)\",\n\tuse_data_not_ok: \"(prefers-reduced-data: reduce)\",\n\ttouch: \"(hover: none) and (pointer: coarse)\",\n\tstylus: \"(hover: none) and (pointer: fine)\",\n\tpointer: \"(hover) and (pointer: coarse)\",\n\tmouse: \"(hover) and (pointer: fine)\",\n\thd_color: \"(dynamic-range: high)\"\n};\n//#endregion\n//#region src/theme/misc.ts\nconst spacing = {\n\t\"DEFAULT\": \"0.25rem\",\n\t\"xs\": \"0.75rem\",\n\t\"sm\": \"0.875rem\",\n\t\"lg\": \"1.125rem\",\n\t\"xl\": \"1.25rem\",\n\t\"2xl\": \"1.5rem\",\n\t\"3xl\": \"1.875rem\",\n\t\"4xl\": \"2.25rem\",\n\t\"5xl\": \"3rem\",\n\t\"6xl\": \"3.75rem\",\n\t\"7xl\": \"4.5rem\",\n\t\"8xl\": \"6rem\",\n\t\"9xl\": \"8rem\"\n};\nconst radius = {\n\t\"DEFAULT\": \"0.25rem\",\n\t\"none\": \"0\",\n\t\"xs\": \"0.125rem\",\n\t\"sm\": \"0.25rem\",\n\t\"md\": \"0.375rem\",\n\t\"lg\": \"0.5rem\",\n\t\"xl\": \"0.75rem\",\n\t\"2xl\": \"1rem\",\n\t\"3xl\": \"1.5rem\",\n\t\"4xl\": \"2rem\"\n};\nconst shadow = {\n\t\"DEFAULT\": [`0 1px 3px 0 rgb(0 0 0 / 0.1)`, `0 1px 2px -1px rgb(0 0 0 / 0.1)`],\n\t\"2xs\": `0 1px rgb(0 0 0 / 0.05)`,\n\t\"xs\": `0 1px 2px 0 rgb(0 0 0 / 0.05)`,\n\t\"sm\": [`0 1px 3px 0 rgb(0 0 0 / 0.1)`, `0 1px 2px -1px rgb(0 0 0 / 0.1)`],\n\t\"md\": [`0 4px 6px -1px rgb(0 0 0 / 0.1)`, `0 2px 4px -2px rgb(0 0 0 / 0.1)`],\n\t\"lg\": [`0 10px 15px -3px rgb(0 0 0 / 0.1)`, `0 4px 6px -4px rgb(0 0 0 / 0.1)`],\n\t\"xl\": [`0 20px 25px -5px rgb(0 0 0 / 0.1)`, `0 8px 10px -6px rgb(0 0 0 / 0.1)`],\n\t\"2xl\": `0 25px 50px -12px rgb(0 0 0 / 0.25)`,\n\t\"none\": \"0 0 rgb(0 0 0 / 0)\",\n\t\"inner\": \"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)\"\n};\nconst insetShadow = {\n\t\"2xs\": \"inset 0 1px rgb(0 0 0 / 0.05)\",\n\t\"xs\": \"inset 0 1px 1px rgb(0 0 0 / 0.05)\",\n\t\"sm\": \"inset 0 2px 4px rgb(0 0 0 / 0.05)\",\n\t\"none\": \"0 0 rgb(0 0 0 / 0)\"\n};\nconst dropShadow = {\n\t\"DEFAULT\": [\"0 1px 2px rgb(0 0 0 / 0.1)\", \"0 1px 1px rgb(0 0 0 / 0.06)\"],\n\t\"xs\": \"0 1px 1px rgb(0 0 0 / 0.05)\",\n\t\"sm\": \"0 1px 2px rgb(0 0 0 / 0.15)\",\n\t\"md\": \"0 3px 3px rgb(0 0 0 / 0.12)\",\n\t\"lg\": \"0 4px 4px rgb(0 0 0 / 0.15)\",\n\t\"xl\": \"0 9px 7px rgb(0 0 0 / 0.1)\",\n\t\"2xl\": \"0 25px 25px rgb(0 0 0 / 0.15)\"\n};\nconst textShadow = {\n\t\"none\": \"0 0 rgb(0 0 0 / 0)\",\n\t\"2xs\": \"0 1px 0 rgb(0 0 0 / 0.15)\",\n\t\"xs\": \"0 1px 1px rgb(0 0 0 / 0.2)\",\n\t\"sm\": [\n\t\t\"0 1px 0 rgb(0 0 0 / 0.075)\",\n\t\t\"0 1px 1px rgb(0 0 0 / 0.075)\",\n\t\t\"0 2px 2px rgb(0 0 0 / 0.075)\"\n\t],\n\t\"md\": [\n\t\t\"0 1px 1px rgb(0 0 0 / 0.1)\",\n\t\t\"0 1px 2px rgb(0 0 0 / 0.1)\",\n\t\t\"0 2px 4px rgb(0 0 0 / 0.1)\"\n\t],\n\t\"lg\": [\n\t\t\"0 1px 2px rgb(0 0 0 / 0.1)\",\n\t\t\"0 3px 2px rgb(0 0 0 / 0.1)\",\n\t\t\"0 4px 8px rgb(0 0 0 / 0.1)\"\n\t]\n};\nconst perspective = {\n\tdramatic: \"100px\",\n\tnear: \"300px\",\n\tnormal: \"500px\",\n\tmidrange: \"800px\",\n\tdistant: \"1200px\"\n};\n/** For reset css */\nconst defaults = {\n\ttransition: {\n\t\tduration: \"150ms\",\n\t\ttimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\"\n\t},\n\tfont: {\n\t\tfamily: \"var(--font-sans)\",\n\t\tfeatureSettings: \"var(--font-sans--font-feature-settings)\",\n\t\tvariationSettings: \"var(--font-sans--font-variation-settings)\"\n\t},\n\tmonoFont: {\n\t\tfamily: \"var(--font-mono)\",\n\t\tfeatureSettings: \"var(--font-mono--font-feature-settings)\",\n\t\tvariationSettings: \"var(--font-mono--font-variation-settings)\"\n\t}\n};\n//#endregion\n//#region src/theme/size.ts\nconst container = {\n\t\"3xs\": \"16rem\",\n\t\"2xs\": \"18rem\",\n\t\"xs\": \"20rem\",\n\t\"sm\": \"24rem\",\n\t\"md\": \"28rem\",\n\t\"lg\": \"32rem\",\n\t\"xl\": \"36rem\",\n\t\"2xl\": \"42rem\",\n\t\"3xl\": \"48rem\",\n\t\"4xl\": \"56rem\",\n\t\"5xl\": \"64rem\",\n\t\"6xl\": \"72rem\",\n\t\"7xl\": \"80rem\",\n\t\"prose\": \"65ch\"\n};\nconst breakpoint = {\n\t\"sm\": \"40rem\",\n\t\"md\": \"48rem\",\n\t\"lg\": \"64rem\",\n\t\"xl\": \"80rem\",\n\t\"2xl\": \"96rem\"\n};\nconst verticalBreakpoint = { ...breakpoint };\n//#endregion\n//#region src/theme/supports.ts\nconst supports = { grid: \"(display: grid)\" };\n//#endregion\n//#region src/theme/transition.ts\nconst ease = {\n\t\"linear\": \"linear\",\n\t\"in\": \"cubic-bezier(0.4, 0, 1, 1)\",\n\t\"out\": \"cubic-bezier(0, 0, 0.2, 1)\",\n\t\"in-out\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n\t\"DEFAULT\": \"cubic-bezier(0.4, 0, 0.2, 1)\"\n};\nconst property = {\n\tnone: \"none\",\n\tall: \"all\",\n\tcolors: [\n\t\t\"color\",\n\t\t\"background-color\",\n\t\t\"border-color\",\n\t\t\"text-decoration-color\",\n\t\t\"fill\",\n\t\t\"stroke\",\n\t\t\"--un-gradient-from\",\n\t\t\"--un-gradient-via\",\n\t\t\"--un-gradient-to\"\n\t].join(\",\"),\n\topacity: \"opacity\",\n\tshadow: \"box-shadow\",\n\ttransform: [\n\t\t\"transform\",\n\t\t\"translate\",\n\t\t\"scale\",\n\t\t\"rotate\"\n\t].join(\",\"),\n\tget DEFAULT() {\n\t\treturn [\n\t\t\tthis.colors,\n\t\t\tthis.opacity,\n\t\t\tthis.shadow,\n\t\t\tthis.transform,\n\t\t\t\"filter\",\n\t\t\t\"-webkit-backdrop-filter\",\n\t\t\t\"backdrop-filter\"\n\t\t].join(\",\");\n\t}\n};\n//#endregion\n//#region src/theme/default.ts\nconst theme = {\n\tfont,\n\tcolors,\n\tspacing,\n\tbreakpoint,\n\tverticalBreakpoint,\n\ttext,\n\tfontWeight,\n\ttracking,\n\tleading,\n\ttextStrokeWidth,\n\tradius,\n\tshadow,\n\tinsetShadow,\n\tdropShadow,\n\ttextShadow,\n\tease,\n\tanimation,\n\tblur,\n\tperspective,\n\tproperty,\n\tdefault: defaults,\n\tcontainer,\n\taria,\n\tmedia,\n\tsupports\n};\n//#endregion\nexport { animation, aria, blur, breakpoint, colors, container, defaults, dropShadow, ease, font, fontWeight, insetShadow, leading, media, perspective, property, radius, shadow, spacing, supports, text, textShadow, textStrokeWidth, theme, tracking, verticalBreakpoint };\n",
|
|
39
|
+
"import { D as h, N as cssMathFnRE, P as cssVarFnRE, g as hasParseableColor, w as resolveBreakpoints } from \"./utils-q7HDXEs0.mjs\";\nimport { toArray } from \"@unocss/core\";\nimport { calcMaxWidthBySize, createPartClasses, createPseudoClassFunctions, createPseudoClassesAndElements, createTaggedPseudoClasses, getBracket, getStringComponent, hasThemeFn, transformThemeFn, variantGetBracket, variantGetParameter, variantMatcher, variantParentMatcher } from \"@unocss/rule-utils\";\n//#region src/variants/aria.ts\nconst variantAria = {\n\tname: \"aria\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter(\"aria-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tconst aria = h.bracket(match, ctx.theme) ?? ctx.theme.aria?.[match] ?? \"\";\n\t\t\tif (aria) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\tselector: (s) => `${s}[aria-${aria}]`\n\t\t\t};\n\t\t}\n\t},\n\tmultiPass: true,\n\tautocomplete: \"aria-$aria\"\n};\nfunction taggedAria(tagName) {\n\treturn {\n\t\tname: `${tagName}-aria`,\n\t\tmatch(matcher, ctx) {\n\t\t\tconst variant = variantGetParameter(`${tagName}-aria-`, matcher, ctx.generator.config.separators);\n\t\t\tif (variant) {\n\t\t\t\tconst [match, rest, label] = variant;\n\t\t\t\tconst ariaAttribute = h.bracket(match, ctx.theme) ?? ctx.theme.aria?.[match] ?? \"\";\n\t\t\t\tif (ariaAttribute) {\n\t\t\t\t\tconst tagSelectorMap = {\n\t\t\t\t\t\tgroup: `&:is(:where(.group${label ? `\\\\/${label}` : \"\"})[aria-${ariaAttribute}] *)`,\n\t\t\t\t\t\tpeer: `&:is(:where(.peer${label ? `\\\\/${label}` : \"\"})[aria-${ariaAttribute}] ~ *)`,\n\t\t\t\t\t\tprevious: `:where(*[aria-${ariaAttribute}] + &)`,\n\t\t\t\t\t\tparent: `:where(*[aria-${ariaAttribute}] > &)`,\n\t\t\t\t\t\thas: `&:has(*[aria-${ariaAttribute}])`,\n\t\t\t\t\t\tin: `:where(*[aria-${ariaAttribute}]) &`\n\t\t\t\t\t};\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmatcher: rest,\n\t\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t\t...input,\n\t\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}${input.selector}`,\n\t\t\t\t\t\t\tselector: tagSelectorMap[tagName]\n\t\t\t\t\t\t})\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tmultiPass: true\n\t};\n}\nconst variantTaggedAriaAttributes = [\n\ttaggedAria(\"group\"),\n\ttaggedAria(\"peer\"),\n\ttaggedAria(\"parent\"),\n\ttaggedAria(\"previous\"),\n\ttaggedAria(\"has\"),\n\ttaggedAria(\"in\")\n];\n//#endregion\n//#region src/variants/breakpoints.ts\nconst sizePseudo = /(max|min)-\\[([^\\]]*)\\]:/;\nfunction variantBreakpoints() {\n\tconst regexCache = {};\n\treturn {\n\t\tname: \"breakpoints\",\n\t\tmatch(matcher, context) {\n\t\t\tif (sizePseudo.test(matcher)) {\n\t\t\t\tconst match = matcher.match(sizePseudo);\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: matcher.replace(match[0], \"\"),\n\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t...input,\n\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@media (${match[1]}-width: ${match[2]})`\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst variantEntries = (resolveBreakpoints(context) ?? []).map(({ point, size }, idx) => [\n\t\t\t\tpoint,\n\t\t\t\tsize,\n\t\t\t\tidx\n\t\t\t]);\n\t\t\tfor (const [point, size, idx] of variantEntries) {\n\t\t\t\tif (!regexCache[point]) regexCache[point] = new RegExp(`^((?:([al]t-|[<~]|max-))?${point}(?:${context.generator.config.separators.join(\"|\")}))`);\n\t\t\t\tconst match = matcher.match(regexCache[point]);\n\t\t\t\tif (!match) continue;\n\t\t\t\tconst [, pre] = match;\n\t\t\t\tconst m = matcher.slice(pre.length);\n\t\t\t\tif (m === \"container\") continue;\n\t\t\t\tconst isLtPrefix = pre.startsWith(\"lt-\") || pre.startsWith(\"<\") || pre.startsWith(\"max-\");\n\t\t\t\tconst isAtPrefix = pre.startsWith(\"at-\") || pre.startsWith(\"~\");\n\t\t\t\tlet order = 3e3;\n\t\t\t\tif (isLtPrefix) {\n\t\t\t\t\torder -= idx + 1;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmatcher: m,\n\t\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t\t...input,\n\t\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@media (max-width: ${calcMaxWidthBySize(size)})`,\n\t\t\t\t\t\t\tparentOrder: order\n\t\t\t\t\t\t})\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\torder += idx + 1;\n\t\t\t\tif (isAtPrefix && idx < variantEntries.length - 1) return {\n\t\t\t\t\tmatcher: m,\n\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t...input,\n\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@media (min-width: ${size}) and (max-width: ${calcMaxWidthBySize(variantEntries[idx + 1][1])})`,\n\t\t\t\t\t\tparentOrder: order\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: m,\n\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t...input,\n\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@media (min-width: ${size})`,\n\t\t\t\t\t\tparentOrder: order\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tmultiPass: true,\n\t\tautocomplete: \"(at-|lt-|max-|)$breakpoint:\"\n\t};\n}\n//#endregion\n//#region src/variants/children.ts\nconst variantChildren = [variantMatcher(\"*\", (input) => ({ selector: `${input.selector} > *` }), { order: -1 }), variantMatcher(\"**\", (input) => ({ selector: `${input.selector} *` }), { order: -1 })];\n//#endregion\n//#region src/variants/combinators.ts\nfunction scopeMatcher(name, combinator) {\n\treturn {\n\t\tname: `combinator:${name}`,\n\t\tmatch(matcher, ctx) {\n\t\t\tif (!matcher.startsWith(name)) return;\n\t\t\tconst separators = ctx.generator.config.separators;\n\t\t\tlet body = variantGetBracket(`${name}-`, matcher, separators);\n\t\t\tif (!body) {\n\t\t\t\tfor (const separator of separators) if (matcher.startsWith(`${name}${separator}`)) {\n\t\t\t\t\tbody = [\"\", matcher.slice(name.length + separator.length)];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!body) return;\n\t\t\t}\n\t\t\tlet bracketValue = h.bracket(body[0], ctx.theme) ?? \"\";\n\t\t\tif (bracketValue === \"\") bracketValue = \"*\";\n\t\t\treturn {\n\t\t\t\tmatcher: body[1],\n\t\t\t\tselector: (s) => `${s}${combinator}${bracketValue}`\n\t\t\t};\n\t\t},\n\t\tmultiPass: true\n\t};\n}\nconst variantCombinators = [\n\tscopeMatcher(\"all\", \" \"),\n\tscopeMatcher(\"children\", \">\"),\n\tscopeMatcher(\"next\", \"+\"),\n\tscopeMatcher(\"sibling\", \"+\"),\n\tscopeMatcher(\"siblings\", \"~\")\n];\nconst variantSvgCombinators = [variantMatcher(\"svg\", (input) => ({ selector: `${input.selector} svg` }))];\n//#endregion\n//#region src/variants/container.ts\nconst variantContainerQuery = {\n\tname: \"@\",\n\tmatch(matcher, ctx) {\n\t\tif (matcher.startsWith(\"@container\")) return;\n\t\tconst variant = variantGetParameter(\"@\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest, label] = variant;\n\t\t\tconst unbracket = h.bracket(match, ctx.theme);\n\t\t\tlet container;\n\t\t\tif (unbracket) container = h.numberWithUnit(unbracket);\n\t\t\telse container = ctx.theme.container?.[match] ?? \"\";\n\t\t\tif (container) {\n\t\t\t\tlet order = 1e3 + Object.keys(ctx.theme.container ?? {}).indexOf(match);\n\t\t\t\tif (label) order += 1e3;\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: rest,\n\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t...input,\n\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@container${label ? ` ${label} ` : \" \"}(min-width: ${container})`,\n\t\t\t\t\t\tparentOrder: order\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t},\n\tmultiPass: true\n};\n//#endregion\n//#region src/variants/dark.ts\nfunction variantColorsMediaOrClass(options = {}) {\n\tif (options?.dark === \"class\" || typeof options.dark === \"object\") {\n\t\tconst { dark = \".dark\", light = \".light\" } = typeof options.dark === \"string\" ? {} : options.dark;\n\t\treturn [variantMatcher(\"dark\", (input) => ({ prefix: `${dark} $$ ${input.prefix}` })), variantMatcher(\"light\", (input) => ({ prefix: `${light} $$ ${input.prefix}` }))];\n\t}\n\treturn [variantParentMatcher(\"dark\", \"@media (prefers-color-scheme: dark)\"), variantParentMatcher(\"light\", \"@media (prefers-color-scheme: light)\")];\n}\nconst variantColorsScheme = [\n\tvariantMatcher(\".dark\", (input) => ({ prefix: `.dark $$ ${input.prefix}` })),\n\tvariantMatcher(\".light\", (input) => ({ prefix: `.light $$ ${input.prefix}` })),\n\tvariantParentMatcher(\"@dark\", \"@media (prefers-color-scheme: dark)\"),\n\tvariantParentMatcher(\"@light\", \"@media (prefers-color-scheme: light)\"),\n\tvariantParentMatcher(\"not-dark\", \"@media not (prefers-color-scheme: dark)\")\n];\n//#endregion\n//#region src/variants/data.ts\nconst variantDataAttribute = {\n\tname: \"data\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter(\"data-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tconst dataAttribute = h.bracket(match, ctx.theme) ?? ctx.theme.data?.[match] ?? \"\";\n\t\t\tif (dataAttribute) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\tselector: (s) => `${s}[data-${dataAttribute}]`\n\t\t\t};\n\t\t}\n\t},\n\tmultiPass: true\n};\nfunction taggedData(tagName) {\n\treturn {\n\t\tname: `${tagName}-data`,\n\t\tmatch(matcher, ctx) {\n\t\t\tconst variant = variantGetParameter(`${tagName}-data-`, matcher, ctx.generator.config.separators);\n\t\t\tif (variant) {\n\t\t\t\tconst [match, rest, label] = variant;\n\t\t\t\tconst dataAttribute = h.bracket(match, ctx.theme) ?? ctx.theme.data?.[match] ?? \"\";\n\t\t\t\tif (dataAttribute) {\n\t\t\t\t\tconst tagSelectorMap = {\n\t\t\t\t\t\tgroup: `&:is(:where(.group${label ? `\\\\/${label}` : \"\"})[data-${dataAttribute}] *)`,\n\t\t\t\t\t\tpeer: `&:is(:where(.peer${label ? `\\\\/${label}` : \"\"})[data-${dataAttribute}] ~ *)`,\n\t\t\t\t\t\tprevious: `:where(*[data-${dataAttribute}] + &)`,\n\t\t\t\t\t\tparent: `:where(*[data-${dataAttribute}] > &)`,\n\t\t\t\t\t\thas: `&:has(*[data-${dataAttribute}])`,\n\t\t\t\t\t\tin: `:where(*[data-${dataAttribute}]) &`\n\t\t\t\t\t};\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmatcher: rest,\n\t\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t\t...input,\n\t\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}${input.selector}`,\n\t\t\t\t\t\t\tselector: tagSelectorMap[tagName]\n\t\t\t\t\t\t})\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tmultiPass: true\n\t};\n}\nconst variantTaggedDataAttributes = [\n\ttaggedData(\"group\"),\n\ttaggedData(\"peer\"),\n\ttaggedData(\"parent\"),\n\ttaggedData(\"previous\"),\n\ttaggedData(\"has\"),\n\ttaggedData(\"in\")\n];\n//#endregion\n//#region src/variants/directions.ts\nconst variantLanguageDirections = [variantMatcher(\"rtl\", (input) => ({ prefix: `[dir=\"rtl\"] $$ ${input.prefix}` })), variantMatcher(\"ltr\", (input) => ({ prefix: `[dir=\"ltr\"] $$ ${input.prefix}` }))];\n//#endregion\n//#region src/variants/important.ts\nfunction variantImportant() {\n\tlet re;\n\treturn {\n\t\tname: \"important\",\n\t\tmatch(matcher, ctx) {\n\t\t\tif (!re) re = new RegExp(`^(important(?:${ctx.generator.config.separators.join(\"|\")})|!)`);\n\t\t\tlet base;\n\t\t\tconst match = matcher.match(re);\n\t\t\tif (match) base = matcher.slice(match[0].length);\n\t\t\telse if (matcher.endsWith(\"!\")) base = matcher.slice(0, -1);\n\t\t\tif (base) return {\n\t\t\t\tmatcher: base,\n\t\t\t\tbody: (body) => {\n\t\t\t\t\tbody.forEach((v) => {\n\t\t\t\t\t\tif (v[1] != null) v[1] += \" !important\";\n\t\t\t\t\t});\n\t\t\t\t\treturn body;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n}\n//#endregion\n//#region src/variants/inert.ts\nconst variantInert = variantMatcher(\"inert\", (input) => ({\n\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}${input.selector}`,\n\tselector: \"&:is([inert],[inert] *)\"\n}));\n//#endregion\n//#region src/variants/media.ts\nconst variantNoscript = variantParentMatcher(\"noscript\", \"@media (scripting: none)\");\nconst variantScripting = {\n\tname: \"scripting\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter([\"script-\", \"scripting-\"], matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tif ([\n\t\t\t\t\"none\",\n\t\t\t\t\"initial-only\",\n\t\t\t\t\"enabled\"\n\t\t\t].includes(match)) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t...input,\n\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@media (scripting: ${match})`\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\t},\n\tmultiPass: true,\n\tautocomplete: [\"(scripting|script)-(none|initial-only|enabled)\"]\n};\nconst variantPrint = variantParentMatcher(\"print\", \"@media print\");\nconst variantCustomMedia = {\n\tname: \"media\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter(\"media-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tlet media = h.bracket(match, ctx.theme) ?? \"\";\n\t\t\tif (media === \"\") media = ctx.theme.media?.[match] ?? \"\";\n\t\t\tif (media) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t...input,\n\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@media ${media}`\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\t},\n\tmultiPass: true,\n\tautocomplete: \"media-$media\"\n};\nconst variantContrasts = [variantParentMatcher(\"contrast-more\", \"@media (prefers-contrast: more)\"), variantParentMatcher(\"contrast-less\", \"@media (prefers-contrast: less)\")];\nconst variantMotions = [variantParentMatcher(\"motion-reduce\", \"@media (prefers-reduced-motion: reduce)\"), variantParentMatcher(\"motion-safe\", \"@media (prefers-reduced-motion: no-preference)\")];\nconst variantOrientations = [variantParentMatcher(\"landscape\", \"@media (orientation: landscape)\"), variantParentMatcher(\"portrait\", \"@media (orientation: portrait)\")];\nconst variantForcedColors = [variantParentMatcher(\"forced-colors\", \"@media (forced-colors: active)\")];\n//#endregion\n//#region src/variants/misc.ts\nconst variantSelector = {\n\tname: \"selector\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetBracket(\"selector-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tconst selector = h.bracket(match, ctx.theme);\n\t\t\tif (selector) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\tselector: () => selector\n\t\t\t};\n\t\t}\n\t}\n};\nconst variantCssLayer = {\n\tname: \"layer\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter(\"layer-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tconst layer = h.bracket(match, ctx.theme) ?? match;\n\t\t\tif (layer) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t...input,\n\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@layer ${layer}`\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\t}\n};\nconst variantInternalLayer = {\n\tname: \"uno-layer\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter(\"uno-layer-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tconst layer = h.bracket(match, ctx.theme) ?? match;\n\t\t\tif (layer) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\tlayer\n\t\t\t};\n\t\t}\n\t}\n};\nconst variantScope = {\n\tname: \"scope\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetBracket(\"scope-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tconst scope = h.bracket(match, ctx.theme);\n\t\t\tif (scope) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\tselector: (s) => `${scope} $$ ${s}`\n\t\t\t};\n\t\t}\n\t}\n};\nconst variantVariables = {\n\tname: \"variables\",\n\tmatch(matcher, ctx) {\n\t\tif (!matcher.startsWith(\"[\")) return;\n\t\tconst [match, rest] = getBracket(matcher, \"[\", \"]\") ?? [];\n\t\tif (!(match && rest)) return;\n\t\tlet newMatcher;\n\t\tfor (const separator of ctx.generator.config.separators) if (rest.startsWith(separator)) {\n\t\t\tnewMatcher = rest.slice(separator.length);\n\t\t\tbreak;\n\t\t}\n\t\tif (newMatcher == null) return;\n\t\tconst variant = h.bracket(match, ctx.theme) ?? \"\";\n\t\tconst useParent = variant.startsWith(\"@\");\n\t\tif (!(useParent || variant.includes(\"&\"))) return;\n\t\treturn {\n\t\t\tmatcher: newMatcher,\n\t\t\thandle(input, next) {\n\t\t\t\tconst updates = useParent ? { parent: `${input.parent ? `${input.parent} $$ ` : \"\"}${variant}` } : { selector: variant.replace(/&/g, input.selector) };\n\t\t\t\treturn next({\n\t\t\t\t\t...input,\n\t\t\t\t\t...updates\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t},\n\tmultiPass: true\n};\nconst variantTheme = {\n\tname: \"theme-variables\",\n\tmatch(matcher, ctx) {\n\t\tif (!hasThemeFn(matcher)) return;\n\t\treturn {\n\t\t\tmatcher,\n\t\t\thandle(input, next) {\n\t\t\t\treturn next({\n\t\t\t\t\t...input,\n\t\t\t\t\tentries: JSON.parse(transformThemeFn(JSON.stringify(input.entries), ctx.theme))\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n};\nconst variantStickyHover = [variantMatcher(\"@hover\", (input) => ({\n\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@media (hover: hover) and (pointer: fine)`,\n\tselector: `${input.selector || \"\"}:hover`\n}))];\nconst variantImplicitGroup = {\n\tname: \"implicit-group\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter(\"in-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tconst group = h.bracket(match, ctx.theme) ?? match;\n\t\t\tif (group) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t...input,\n\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}${input.selector}`,\n\t\t\t\t\tselector: `:where(*:is(${group})) &`\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region src/variants/negative.ts\nconst anchoredNumberRE = /^-?[0-9.]+(?:[a-z]+|%)?$/;\nconst numberRE = /-?[0-9.]+(?:[a-z]+|%)?/;\nconst spacingMultiplyRE = /var\\(--spacing(?:-[\\w-]+)?\\)\\s*\\*\\s*(-?[0-9.]+(?:[a-z]+|%)?)/;\nconst ignoreProps = [/\\b(opacity|color|flex|backdrop-filter|^filter|^scale|transform|mask-image)\\b/];\nfunction negateMathFunction(value) {\n\tconst match = value.match(cssMathFnRE) || value.match(cssVarFnRE);\n\tif (match) {\n\t\tconst [fnBody, rest] = getStringComponent(`(${match[2]})${match[3]}`, \"(\", \")\", \" \") ?? [];\n\t\tif (fnBody) {\n\t\t\tconst spacingMultiplyMatch = fnBody.match(spacingMultiplyRE);\n\t\t\tif (spacingMultiplyMatch) {\n\t\t\t\tconst num = spacingMultiplyMatch[1];\n\t\t\t\tconst nextNum = num.startsWith(\"-\") ? num.slice(1) : `-${num}`;\n\t\t\t\tconst nextFnBody = fnBody.replace(spacingMultiplyRE, (segment) => {\n\t\t\t\t\treturn segment.replace(num, nextNum);\n\t\t\t\t});\n\t\t\t\treturn `${match[1]}${nextFnBody}${rest ? ` ${rest}` : \"\"}`;\n\t\t\t}\n\t\t\treturn `calc(${match[1]}${fnBody} * -1)${rest ? ` ${rest}` : \"\"}`;\n\t\t}\n\t}\n}\nconst negateFunctionBodyRE = /\\b(hue-rotate)\\s*(\\(.*)/;\nfunction negateFunctionBody(value) {\n\tconst match = value.match(negateFunctionBodyRE);\n\tif (match) {\n\t\tconst [fnBody, rest] = getStringComponent(match[2], \"(\", \")\", \" \") ?? [];\n\t\tif (fnBody) {\n\t\t\tconst body = anchoredNumberRE.test(fnBody.slice(1, -1)) ? fnBody.replace(numberRE, (i) => i.startsWith(\"-\") ? i.slice(1) : `-${i}`) : `(calc(${fnBody} * -1))`;\n\t\t\treturn `${match[1]}${body}${rest ? ` ${rest}` : \"\"}`;\n\t\t}\n\t}\n}\nconst variantNegative = {\n\tname: \"negative\",\n\tmatch(matcher) {\n\t\tif (!matcher.startsWith(\"-\")) return;\n\t\treturn {\n\t\t\tmatcher: matcher.slice(1),\n\t\t\tbody: (body) => {\n\t\t\t\tif (body.some((v) => v[0] === \"$$mini-no-negative\")) return;\n\t\t\t\tlet changed = false;\n\t\t\t\tfor (const v of body) {\n\t\t\t\t\tconst [prop, rawValue, meta] = v;\n\t\t\t\t\tif (typeof rawValue === \"object\") continue;\n\t\t\t\t\tif (meta && toArray(meta).includes(\"$$mini-no-negative\")) continue;\n\t\t\t\t\tconst value = rawValue?.toString();\n\t\t\t\t\tif (!value || value === \"0\" || ignoreProps.some((i) => i.test(prop))) continue;\n\t\t\t\t\tconst nextValue = negateMathFunction(value) ?? negateFunctionBody(value) ?? (anchoredNumberRE.test(value) ? value.replace(numberRE, (i) => i.startsWith(\"-\") ? i.slice(1) : `-${i}`) : void 0);\n\t\t\t\t\tif (!nextValue || nextValue === value) continue;\n\t\t\t\t\tv[1] = nextValue;\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (changed) return body;\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n};\n//#endregion\n//#region src/variants/placeholder.ts\nconst placeholderModifier = (input, { theme }) => {\n\tconst m = input.match(/^(.*)\\b(placeholder-)(.+)$/);\n\tif (m) {\n\t\tconst [, pre = \"\", p, body] = m;\n\t\tif (hasParseableColor(body, theme) || hasOpacityValue(body, theme)) return { matcher: `${pre}placeholder-$ ${p}${body}` };\n\t}\n};\nfunction hasOpacityValue(body, theme) {\n\tconst match = body.match(/^op(?:acity)?-?(.+)$/);\n\tif (match && match[1] != null) return h.bracket.percent(match[1], theme) != null;\n\treturn false;\n}\n//#endregion\n//#region src/variants/pseudo.ts\nfunction variantPseudoClassesAndElements() {\n\treturn createPseudoClassesAndElements({\n\t\tgetBracket,\n\t\th,\n\t\tvariantGetBracket\n\t});\n}\nfunction variantPseudoClassFunctions() {\n\treturn createPseudoClassFunctions({\n\t\tgetBracket,\n\t\th,\n\t\tvariantGetBracket\n\t});\n}\nfunction variantTaggedPseudoClasses(options = {}) {\n\treturn createTaggedPseudoClasses(options, {\n\t\tgetBracket,\n\t\th,\n\t\tvariantGetBracket\n\t});\n}\nconst variantPartClasses = createPartClasses();\n//#endregion\n//#region src/variants/startingstyle.ts\nconst variantStartingStyle = {\n\tname: \"starting\",\n\tmatch(matcher) {\n\t\tif (!matcher.startsWith(\"starting:\")) return;\n\t\treturn {\n\t\t\tmatcher: matcher.slice(9),\n\t\t\thandle: (input, next) => next({\n\t\t\t\t...input,\n\t\t\t\tparent: `@starting-style`\n\t\t\t})\n\t\t};\n\t}\n};\n//#endregion\n//#region src/variants/supports.ts\nconst variantSupports = {\n\tname: \"supports\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter(\"supports-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tlet supports = h.bracket(match, ctx.theme) ?? \"\";\n\t\t\tif (supports === \"\") supports = ctx.theme.supports?.[match] ?? \"\";\n\t\t\tif (supports) {\n\t\t\t\tif (/^[\\w-]+$/.test(supports)) supports = `(${supports}: var(--un))`;\n\t\t\t\tsupports = supports.replace(/\\b(and|or|not)\\b/gi, \" $1 \").replace(/\\s+/g, \" \").trim();\n\t\t\t\tif (!(supports.startsWith(\"(\") && supports.endsWith(\")\")) && !/^not\\b/i.test(supports)) supports = `(${supports})`;\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: rest,\n\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t...input,\n\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@supports ${supports}`\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t},\n\tmultiPass: true\n};\n//#endregion\n//#region src/variants/default.ts\nfunction variants(options) {\n\treturn [\n\t\tvariantAria,\n\t\tvariantDataAttribute,\n\t\tvariantCssLayer,\n\t\tvariantSelector,\n\t\tvariantInternalLayer,\n\t\tvariantNegative,\n\t\tvariantStartingStyle,\n\t\tvariantImportant(),\n\t\tvariantSupports,\n\t\tvariantNoscript,\n\t\tvariantScripting,\n\t\tvariantPrint,\n\t\tvariantCustomMedia,\n\t\t...variantContrasts,\n\t\t...variantMotions,\n\t\t...variantOrientations,\n\t\t...variantForcedColors,\n\t\tvariantBreakpoints(),\n\t\t...variantCombinators,\n\t\t...variantSvgCombinators,\n\t\tplaceholderModifier,\n\t\t...variantPseudoClassesAndElements(),\n\t\tvariantPseudoClassFunctions(),\n\t\t...variantTaggedPseudoClasses(options),\n\t\tvariantPartClasses,\n\t\t...variantColorsMediaOrClass(options),\n\t\t...variantColorsScheme,\n\t\t...variantLanguageDirections,\n\t\tvariantScope,\n\t\t...variantChildren,\n\t\tvariantInert,\n\t\tvariantContainerQuery,\n\t\tvariantVariables,\n\t\t...variantTaggedDataAttributes,\n\t\t...variantTaggedAriaAttributes,\n\t\tvariantTheme,\n\t\t...variantStickyHover,\n\t\tvariantImplicitGroup\n\t].flat();\n}\n//#endregion\nexport { variantColorsMediaOrClass as A, variantOrientations as C, variantLanguageDirections as D, variantImportant as E, variantChildren as F, variantBreakpoints as I, variantAria as L, variantContainerQuery as M, variantCombinators as N, variantDataAttribute as O, variantSvgCombinators as P, variantTaggedAriaAttributes as R, variantNoscript as S, variantScripting as T, variantVariables as _, variantPseudoClassFunctions as a, variantForcedColors as b, placeholderModifier as c, variantImplicitGroup as d, variantInternalLayer as f, variantTheme as g, variantStickyHover as h, variantPartClasses as i, variantColorsScheme as j, variantTaggedDataAttributes as k, variantNegative as l, variantSelector as m, variantSupports as n, variantPseudoClassesAndElements as o, variantScope as p, variantStartingStyle as r, variantTaggedPseudoClasses as s, variants as t, variantCssLayer as u, variantContrasts as v, variantPrint as w, variantMotions as x, variantCustomMedia as y };\n",
|
|
40
|
+
"import { defaultSplitRE, isValidSelector } from \"@unocss/core\";\n//#region ../../virtual-shared/integration/src/utils.ts\nfunction hash(str) {\n\tlet i;\n\tlet l;\n\tlet hval = 2166136261;\n\tfor (i = 0, l = str.length; i < l; i++) {\n\t\thval ^= str.charCodeAt(i);\n\t\thval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);\n\t}\n\treturn `00000${(hval >>> 0).toString(36)}`.slice(-6);\n}\nfunction transformSkipCode(code, map, SKIP_RULES_RE, keyFlag) {\n\tfor (const item of Array.from(code.matchAll(SKIP_RULES_RE))) if (item != null) {\n\t\tconst matched = item[0];\n\t\tconst withHashKey = `${keyFlag}${hash(matched)}`;\n\t\tmap.set(withHashKey, matched);\n\t\tcode = code.replace(matched, withHashKey);\n\t}\n\treturn code;\n}\nfunction restoreSkipCode(code, map) {\n\tfor (const [withHashKey, matched] of map.entries()) code = code.replaceAll(withHashKey, matched);\n\treturn code;\n}\n//#endregion\n//#region src/source-map.ts\nconst sourceMapRE = /\\/\\/#\\s*sourceMappingURL=.*\\n?/g;\nfunction removeSourceMap(code) {\n\tif (code.includes(\"sourceMappingURL=\")) return code.replace(sourceMapRE, \"\");\n\treturn code;\n}\n//#endregion\n//#region src/index.ts\nconst quotedArbitraryValuesRE = /(?:[\\w&:[\\]-]|\\[\\S{1,64}=\\S{1,64}\\]){1,64}\\[\\\\?['\"]?\\S{1,64}?['\"]\\]\\]?[\\w:-]{0,64}/g;\nconst arbitraryPropertyRE = /\\[(\\\\\\W|[\\w-]){1,64}:[^\\s:]{0,64}?(\"\\S{1,64}?\"|'\\S{1,64}?'|`\\S{1,64}?`|[^\\s:]{1,64}?)[^\\s:]{0,64}?\\)?\\]/g;\nconst arbitraryPropertyCandidateRE = /^\\[(?:\\\\\\W|[\\w-]){1,64}:['\"]?\\S{1,64}?['\"]?\\]$/;\nfunction splitCodeWithArbitraryVariants(code) {\n\tconst result = [];\n\tfor (const match of code.matchAll(arbitraryPropertyRE)) {\n\t\tif (match.index !== 0 && !/^[\\s'\"`]/.test(code[match.index - 1] ?? \"\")) continue;\n\t\tresult.push(match[0]);\n\t}\n\tfor (const match of code.matchAll(quotedArbitraryValuesRE)) result.push(match[0]);\n\tconst skipMap = /* @__PURE__ */ new Map();\n\tconst skipFlag = \"@unocss-skip-arbitrary-brackets\";\n\tcode = transformSkipCode(code, skipMap, /-\\[(?!&.+?;)[^\\]]*\\]/g, skipFlag);\n\tif (!code) return result;\n\tcode.split(defaultSplitRE).forEach((match) => {\n\t\tif (match.includes(skipFlag)) match = restoreSkipCode(match, skipMap);\n\t\tif (isValidSelector(match) && !arbitraryPropertyCandidateRE.test(match)) result.push(match);\n\t});\n\treturn result;\n}\nfunction extractorArbitraryVariants() {\n\treturn {\n\t\tname: \"@unocss/extractor-arbitrary-variants\",\n\t\torder: 0,\n\t\textract({ code }) {\n\t\t\treturn splitCodeWithArbitraryVariants(removeSourceMap(code));\n\t\t}\n\t};\n}\n//#endregion\nexport { arbitraryPropertyRE, extractorArbitraryVariants, quotedArbitraryValuesRE, splitCodeWithArbitraryVariants };\n",
|
|
41
|
+
"import { postprocessors } from \"./postprocess.mjs\";\nimport { H as PRESET_NAME, I as globalKeywords, a as themeTracking, f as compressCSS, h as getThemeByKey, n as detectThemeValue, o as trackedProperties, s as trackedTheme } from \"./utils-q7HDXEs0.mjs\";\nimport { rules } from \"./rules.mjs\";\nimport { shortcuts } from \"./shortcuts.mjs\";\nimport { theme } from \"./theme.mjs\";\nimport { t as variants } from \"./variants-DqGWM6pS.mjs\";\nimport { definePreset, escapeSelector, toArray, uniq } from \"@unocss/core\";\nimport { extractorArbitraryVariants } from \"@unocss/extractor-arbitrary-variants\";\nimport { alphaPlaceholdersRE } from \"@unocss/rule-utils\";\n//#region src/preflights/property.ts\nfunction property(options) {\n\tif (options.preflights?.property === false) return void 0;\n\tconst propertyConfig = typeof options.preflights?.property === \"object\" ? options.preflights.property : void 0;\n\tconst parentSelector = propertyConfig?.parent !== void 0 ? propertyConfig.parent : \"@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b))))\";\n\tconst selector = propertyConfig?.selector ?? \"*, ::before, ::after, ::backdrop\";\n\tconst prefix = options.variablePrefix ?? \"un-\";\n\treturn {\n\t\tgetCSS: () => {\n\t\t\tif (trackedProperties.size === 0) return;\n\t\t\tconst css = Array.from(trackedProperties.entries()).sort(([a], [b]) => a.localeCompare(b)).map(([property, value]) => `${property.replace(/^--un-/, `--${prefix}`)}:${value};`).join(\"\");\n\t\t\treturn parentSelector === false ? `${selector}{${css}}` : `${parentSelector}{${selector}{${css}}}`;\n\t\t},\n\t\tlayer: \"properties\"\n\t};\n}\n//#endregion\n//#region src/preflights/reset.ts\nconst resetCSS = `\n/*\n 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n 2. Remove default margins and padding\n 3. Reset all borders.\n*/\n\n*,\n::after,\n::before,\n::backdrop,\n::file-selector-button {\n box-sizing: border-box; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 2 */\n border: 0 solid; /* 3 */\n}\n\n/*\n 1. Use a consistent sensible line-height in all browsers.\n 2. Prevent adjustments of font size after orientation changes in iOS.\n 3. Use a more readable tab size.\n 4. Use the user's configured \\`sans\\` font-family by default.\n 5. Use the user's configured \\`sans\\` font-feature-settings by default.\n 6. Use the user's configured \\`sans\\` font-variation-settings by default.\n 7. Disable tap highlights on iOS.\n*/\n\nhtml,\n:host {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n tab-size: 4; /* 3 */\n font-family: var(\n --default-font-family,\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n 'Helvetica Neue',\n 'Noto Sans',\n Arial,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol',\n 'Noto Color Emoji'\n ); /* 4 */\n font-feature-settings: var(--default-font-featureSettings, normal); /* 5 */\n font-variation-settings: var(--default-font-variationSettings, normal); /* 6 */\n -webkit-tap-highlight-color: transparent; /* 7 */\n}\n\n/*\n 1. Add the correct height in Firefox.\n 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n 3. Reset the default border style to a 1px solid border.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\n Add the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\n Remove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\n Reset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n}\n\n/*\n Add the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n 1. Use the user's configured \\`mono\\` font-family by default.\n 2. Use the user's configured \\`mono\\` font-feature-settings by default.\n 3. Use the user's configured \\`mono\\` font-variation-settings by default.\n 4. Correct the odd \\`em\\` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: var(\n --default-monoFont-family,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n 'Liberation Mono',\n 'Courier New',\n monospace\n ); /* 1 */\n font-feature-settings: var(--default-monoFont-featureSettings, normal); /* 2 */\n font-variation-settings: var(--default-monoFont-variationSettings, normal); /* 3 */\n font-size: 1em; /* 4 */\n}\n\n/*\n Add the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\n Prevent \\`sub\\` and \\`sup\\` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n 3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n Use the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring:where(:not(iframe)) {\n outline: auto;\n}\n\n/*\n Add the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\n Add the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\n Make lists unstyled by default.\n*/\n\nol,\nul,\nmenu {\n list-style: none;\n}\n\n/*\n 1. Make replaced elements \\`display: block\\` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n 2. Add \\`vertical-align: middle\\` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\n Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/*\n 1. Inherit font styles in all browsers.\n 2. Remove border radius in all browsers.\n 3. Remove background color in all browsers.\n 4. Ensure consistent opacity for disabled states in all browsers.\n*/\n\nbutton,\ninput,\nselect,\noptgroup,\ntextarea,\n::file-selector-button {\n font: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n letter-spacing: inherit; /* 1 */\n color: inherit; /* 1 */\n border-radius: 0; /* 2 */\n background-color: transparent; /* 3 */\n opacity: 1; /* 4 */\n}\n\n/*\n Restore default font weight.\n*/\n\n:where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n}\n\n/*\n Restore indentation.\n*/\n\n:where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n}\n\n/*\n Restore space after button.\n*/\n\n::file-selector-button {\n margin-inline-end: 4px;\n}\n\n/*\n Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n*/\n\n::placeholder {\n opacity: 1;\n}\n\n/*\n Set the default placeholder color to a semi-transparent version of the current text color in browsers that do not\n crash when using \\`color-mix(…)\\` with \\`currentcolor\\`. (https://github.com/tailwindlabs/tailwindcss/issues/17194)\n*/\n\n@supports (not (-webkit-appearance: -apple-pay-button)) /* Not Safari */ or\n (contain-intrinsic-size: 1px) /* Safari 17+ */ {\n ::placeholder {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n}\n\n/*\n Prevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n Remove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n 1. Ensure date/time inputs have the same height when empty in iOS Safari.\n 2. Ensure text alignment can be changed on date/time inputs in iOS Safari.\n*/\n\n::-webkit-date-and-time-value {\n min-height: 1lh; /* 1 */\n text-align: inherit; /* 2 */\n}\n\n/*\n Prevent height from changing on date/time inputs in macOS Safari when the input is set to \\`display: block\\`.\n*/\n\n::-webkit-datetime-edit {\n display: inline-flex;\n}\n\n/*\n Remove excess padding from pseudo-elements in date/time inputs to ensure consistent height across browsers.\n*/\n\n::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n}\n\n::-webkit-datetime-edit,\n::-webkit-datetime-edit-year-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-minute-field,\n::-webkit-datetime-edit-second-field,\n::-webkit-datetime-edit-millisecond-field,\n::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n}\n\n/*\n Center dropdown marker shown on inputs with paired \\`<datalist>\\`s in Chrome. (https://github.com/tailwindlabs/tailwindcss/issues/18499)\n*/\n\n::-webkit-calendar-picker-indicator {\n line-height: 1;\n}\n\n/*\n Remove the additional \\`:invalid\\` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\n Correct the inability to style the border radius in iOS Safari.\n*/\n\nbutton,\ninput:where([type='button'], [type='reset'], [type='submit']),\n::file-selector-button {\n appearance: button;\n}\n\n/*\n Correct the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n Make elements with the HTML hidden attribute stay hidden by default.\n*/\n\n[hidden]:where(:not([hidden~='until-found'])) {\n display: none !important;\n}\n`;\nfunction reset(options) {\n\tif (options.preflights?.reset === false) return void 0;\n\treturn {\n\t\tgetCSS: ({ generator }) => {\n\t\t\tthemeTracking(\"font\", \"sans\");\n\t\t\tthemeTracking(\"font\", \"mono\");\n\t\t\tthemeTracking(\"default\", [\"font\", \"family\"]);\n\t\t\tthemeTracking(\"default\", [\"monoFont\", \"family\"]);\n\t\t\treturn compressCSS(resetCSS, generator.config.envMode === \"dev\");\n\t\t},\n\t\tlayer: \"base\"\n\t};\n}\n//#endregion\n//#region src/preflights/theme.ts\n/** Exclude output for CSS Variables */\nconst ExcludeCssVarKeys = [\n\t\"spacing\",\n\t\"breakpoint\",\n\t\"verticalBreakpoint\",\n\t\"shadow\",\n\t\"insetShadow\",\n\t\"dropShadow\",\n\t\"textShadow\",\n\t\"animation\",\n\t\"property\",\n\t\"aria\",\n\t\"media\",\n\t\"supports\",\n\t\"containers\"\n];\nfunction getThemeVarsMap(theme, keys) {\n\tconst themeMap = /* @__PURE__ */ new Map([[\"--spacing\", theme.spacing.DEFAULT]]);\n\tconst normalizeValue = (value) => value.replace(alphaPlaceholdersRE, \"1\");\n\tfunction process(obj, prefix) {\n\t\tfor (const key in obj) if (Array.isArray(obj[key])) themeMap.set(`--${prefix}-${key}`, normalizeValue(obj[key].join(\",\")));\n\t\telse if (typeof obj[key] === \"object\") process(obj[key], `${prefix}-${key}`);\n\t\telse themeMap.set(`--${prefix}-${key}`, normalizeValue(obj[key]));\n\t}\n\tfor (const key in theme) {\n\t\tif (!keys.includes(key)) continue;\n\t\tprocess(theme[key], key);\n\t}\n\treturn themeMap;\n}\nfunction theme$1(options) {\n\tconst preflightsTheme = typeof options.preflights?.theme === \"boolean\" || typeof options.preflights?.theme === \"string\" ? { mode: options.preflights.theme ?? \"on-demand\" } : {\n\t\tmode: options.preflights?.theme?.mode ?? \"on-demand\",\n\t\t...options.preflights?.theme\n\t};\n\treturn {\n\t\tlayer: \"theme\",\n\t\tgetCSS(ctx) {\n\t\t\tconst { theme, generator } = ctx;\n\t\t\tconst safelist = uniq(generator.config.safelist.flatMap((s) => typeof s === \"function\" ? s(ctx) : s));\n\t\t\tconst { mode, process } = preflightsTheme;\n\t\t\tif (mode === false) return;\n\t\t\tif (safelist.length > 0) for (const s of safelist) {\n\t\t\t\tconst [key, ...prop] = s.trim().split(\":\");\n\t\t\t\tif (key in theme && prop.length <= 1) {\n\t\t\t\t\tconst props = prop.length === 0 ? [\"DEFAULT\"] : prop[0].split(\"-\");\n\t\t\t\t\tconst v = getThemeByKey(theme, key, props);\n\t\t\t\t\tif (typeof v === \"string\") {\n\t\t\t\t\t\tthemeTracking(key, props);\n\t\t\t\t\t\tdetectThemeValue(v, theme);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet deps;\n\t\t\tconst generateCSS = (deps) => {\n\t\t\t\tif (process) for (const utility of deps) for (const p of toArray(process)) p(utility, ctx);\n\t\t\t\tconst resolvedDeps = deps.map(([key, value]) => key && value ? `${escapeSelector(key)}: ${value};` : void 0).filter(Boolean);\n\t\t\t\tif (resolvedDeps.length === 0) return;\n\t\t\t\tconst depCSS = resolvedDeps.join(\"\\n\");\n\t\t\t\treturn compressCSS(`\n:root, :host {\n${depCSS}\n}`, generator.config.envMode === \"dev\");\n\t\t\t};\n\t\t\tif (mode === \"on-demand\") {\n\t\t\t\tif (trackedTheme.size === 0) return void 0;\n\t\t\t\tdeps = Array.from(trackedTheme).map((k) => {\n\t\t\t\t\tconst [key, prop] = k.split(\":\");\n\t\t\t\t\tconst v = getThemeByKey(theme, key, prop.split(\"-\"));\n\t\t\t\t\tif (typeof v === \"string\") return [`--${key}${`${key === \"spacing\" && prop === \"DEFAULT\" ? \"\" : `-${prop}`}`}`, v];\n\t\t\t\t}).filter(Boolean);\n\t\t\t} else {\n\t\t\t\tconst keys = Object.keys(theme).filter((k) => !ExcludeCssVarKeys.includes(k));\n\t\t\t\tdeps = Array.from(getThemeVarsMap(theme, keys));\n\t\t\t}\n\t\t\treturn generateCSS(deps);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/preflights/index.ts\nconst preflights = (options) => {\n\treturn [\n\t\treset(options),\n\t\ttheme$1(options),\n\t\tproperty(options)\n\t].filter(Boolean);\n};\n//#endregion\n//#region src/shorthands.ts\nconst shorthands = {\n\tposition: [\n\t\t\"relative\",\n\t\t\"absolute\",\n\t\t\"fixed\",\n\t\t\"sticky\",\n\t\t\"static\"\n\t],\n\tglobalKeyword: globalKeywords\n};\n//#endregion\n//#region src/index.ts\nconst presetWind4 = definePreset((options = {}) => {\n\toptions.dark = options.dark ?? \"class\";\n\toptions.attributifyPseudo = options.attributifyPseudo ?? false;\n\toptions.variablePrefix = options.variablePrefix ?? \"un-\";\n\toptions.important = options.important ?? false;\n\treturn {\n\t\tname: PRESET_NAME,\n\t\tdocs: \"https://unocss.dev/presets/wind4\",\n\t\trules,\n\t\tshortcuts,\n\t\ttheme,\n\t\tlayers: {\n\t\t\tproperties: -200,\n\t\t\ttheme: -150,\n\t\t\tbase: -100\n\t\t},\n\t\tpreflights: preflights(options),\n\t\tvariants: variants(options),\n\t\tprefix: options.prefix,\n\t\tpostprocess: postprocessors(options),\n\t\textractorDefault: options.arbitraryVariants === false ? void 0 : extractorArbitraryVariants(),\n\t\tautocomplete: { shorthands },\n\t\toptions,\n\t\tconfigResolved() {\n\t\t\ttrackedTheme.clear();\n\t\t\ttrackedProperties.clear();\n\t\t},\n\t\tmeta: {\n\t\t\tthemeDeps: trackedTheme,\n\t\t\tpropertyDeps: trackedProperties\n\t\t}\n\t};\n});\n//#endregion\nexport { presetWind4 as default, presetWind4, postprocessors, preflights, rules, shortcuts, shorthands, theme, variants };\n",
|
|
42
|
+
"import { presetWind4 } from \"@unocss/preset-wind4\";\nimport type { UserConfig } from \"@unocss/core\";\n\n/**\n * Two things the host forces on this config, both non-negotiable:\n *\n * `important` receives a SELECTOR STRING, which is how UnoCSS scopes: every rule comes out\n * `.ui4a-root :is(.gap-4){…}`. The runtime sheet is appended to `<head>` last, so an unscoped\n * `hidden` written by a card would win over the shell's own `hidden` and make part of the app\n * vanish. The playground has that bug on record (a sidebar disappearing); we start scoped.\n *\n * `preflights: { reset: false }` drops presetWind4's global reset — 3.5KB of `*, ::before,\n * ::after { margin: 0; border: 0 solid }` that would land on the HOST's DOM, not just ours.\n * The `theme` layer survives it and is the part we need: `--spacing` and `--radius-*`, which\n * every `gap-*` and `rounded-*` resolves against. Without preflights entirely those rules\n * generate but compute to nothing.\n */\nexport const unoConfig = (scope: string): UserConfig => ({\n presets: [presetWind4({ important: scope, preflights: { reset: false } })],\n // The reset above is dropped because it targets `*` and would land on the HOST's DOM. But\n // dropping it leaves form controls carrying the browser's own chrome, and that is not\n // theme-aware: measured on a card in dark mode, two unselected `<button>`s rendered as light\n // grey blocks with black text, because a button with no background class falls back to the UA's\n // `buttonface`. The card looked right in light and broken in dark, which is the failure this\n // whole colour system exists to prevent.\n //\n // So: the same normalisation, scoped to our root.\n //\n // `box-sizing: border-box` is in here for the same reason, and I left it out at first on the\n // theory that cards set their own sizing. They cannot: `w-full` is `width: 100%`, and under the\n // UA's `content-box` that 100% is the content alone, so every `<input className=\"w-full px-3\n // border\">` is padding-plus-border wider than its parent. Measured on wave 2 — every card with a\n // text field overflowed its own edge by 10px at 320, 440 AND 720, which is the tell that it was\n // never a breakpoint problem. The clip in a screenshot is taken at the card width, so the\n // overflowing strip is not cut off, it is absent.\n preflights: [\n {\n // Same class of bug as box-sizing: a card writes `<ul className=\"grid gap-1.5\">`, which is\n // correct — a grid list has no use for UA markers — and dropping the reset put them back, so\n // a column of stray bullets sits OUTSIDE the card border at every width. Not something to\n // ask the model to write `list-none` for on every list.\n getCSS: () => `${scope} *, ${scope} *::before, ${scope} *::after { box-sizing: border-box; }\n ${scope} ul, ${scope} ol { list-style: none; margin: 0; padding: 0; }\n ${scope} button, ${scope} input, ${scope} select, ${scope} textarea {\n background: transparent; color: inherit; font: inherit; border: 0 solid; cursor: pointer;\n }\n ${scope} input, ${scope} select, ${scope} textarea { cursor: auto; }`,\n },\n ],\n theme: {\n colors: {\n // The host's 12 semantic tokens, under names short enough to write in a class.\n // A card can still reach any variable through an arbitrary value: `bg-[var(--dsw-…)]`.\n // NOT `base`: `text-base` is Wind4's body font size, and a colour of that name wins the\n // token, so `<h2 className=\"text-base\">` computed `color: #ffffff` on a white card — present,\n // laid out, invisible, and no probe can see it. 18 corpus cards wrote `text-base`.\n page: \"var(--dsw-alias-bg-base)\",\n layer: \"var(--dsw-alias-bg-layer-1)\",\n \"layer-2\": \"var(--dsw-alias-bg-layer-2)\",\n line: \"var(--dsw-alias-border-l1)\",\n \"line-2\": \"var(--dsw-alias-border-l2)\",\n label: \"var(--dsw-alias-label-primary)\",\n muted: \"var(--dsw-alias-label-secondary)\",\n accent: \"var(--dsw-alias-state-business-primary)\",\n hover: \"var(--dsw-alias-interactive-bg-hover)\",\n danger: \"var(--dsw-alias-state-error-primary)\",\n success: \"var(--dsw-alias-state-success-primary)\",\n warn: \"var(--dsw-alias-state-warn-primary)\",\n },\n },\n});\n",
|
|
43
|
+
"import { createGenerator, type UnoGenerator } from \"@unocss/core\";\nimport { unoConfig } from \"./uno-config.ts\";\n\n/**\n * Runtime UnoCSS for generated cards.\n *\n * A build-time pass would scan OUR source, and the classes a card is written with do not exist\n * there — they are typed by the model seconds ago. Responsive is where that shows worst: not one\n * `@container` breakpoint would be generated, so every card would be single-column at any width.\n * The CSS therefore has to be produced in the browser, as the code streams in.\n *\n * Accumulate rather than replace: several cards share one document, and each one's classes must\n * stay in the sheet after another card is added.\n */\n/**\n * The class every generated rule is prefixed with, and the one the surface carries.\n *\n * Named after the contract rather than after this plugin: the same class exists in\n * `ui4a-playground` under the same constant name, so the two runtimes can be diffed line for\n * line. It is also the only marker on the surface node — a second `data-*` hook naming the same\n * thing was removed because nothing read it.\n */\nexport const UI4A_ROOT_CLASS = \"ui4a-root\";\nconst PLUGIN_ID = \"dsh-generative-ui\";\n\nlet generator: Promise<UnoGenerator> | null = null;\nconst tokens = new Set<string>();\nlet sheet: HTMLStyleElement | null = null;\n/** Whether the sheet already carries the preflight block. Reset with the sheet, not with the tokens. */\nlet preflighted = false;\n\n/**\n * Per frame this does the two cheap things only: EXTRACT the class names out of the code\n * (no CSS generated), and generate CSS for the ones not seen before.\n *\n * The expensive spellings, both measured in the playground this is ported from:\n * `uno.generate(code)` regenerates every class in the file each time — 119s of main thread over\n * one streaming canvas; and regenerating the whole accumulated token set on each new class costs\n * more the longer the file gets. Throttling does not help when a single call is what is\n * expensive.\n *\n * Appended rules sort after existing ones, so two same-priority utilities can resolve differently\n * than a single authoritative pass would. Once the stream settles we regenerate the whole set to\n * restore that order.\n */\nexport async function ensureUnoStyles(code: string, streaming = false): Promise<void> {\n if (typeof document === \"undefined\") return;\n const uno = await (generator ??= createGenerator(unoConfig(`.${UI4A_ROOT_CLASS}`)));\n const extracted = await uno.applyExtractors(code);\n const fresh = [...extracted].filter((token) => !tokens.has(token));\n if (fresh.length === 0 && streaming && preflighted) return;\n for (const token of fresh) tokens.add(token);\n sheet ??= createSheet();\n if (streaming) {\n // Preflights FIRST, on the very first streaming frame, and never again. They were reachable\n // only through the settled path, so for the whole of a stream the card rendered without\n // `box-sizing: border-box` and without the button/list reset — measured on a first card in a\n // fresh page: 31 seconds of streaming with `pre: false` and a painting card whose `<input>`\n // computed `content-box`. That is not \"unstyled until it settles\", it is *wrongly* styled\n // while the reader watches: a `w-full px-3 border` input is padding-plus-border wider than\n // its parent, so the layout is visibly broken and then jumps when the stream ends.\n //\n // They are a fixed block that depends on nothing the model types, so there is no reason for\n // them to wait for anything, and generating them once costs a single call.\n if (!preflighted) {\n preflighted = true;\n const { css } = await uno.generate([], { preflights: true });\n sheet.textContent += splitVendorRules(css);\n }\n if (fresh.length === 0) return;\n const { css } = await uno.generate(fresh, { preflights: false });\n sheet.textContent += splitVendorRules(css);\n return;\n }\n preflighted = true;\n const { css } = await uno.generate(tokens, { preflights: true });\n sheet.textContent = splitVendorRules(css);\n}\n\n/**\n * Split a rule whose selector list mixes vendor pseudo-elements into one rule per vendor.\n *\n * UnoCSS merges selectors that share a declaration, so a card styling a slider for both engines\n * gets `…::-moz-range-thumb, …::-webkit-slider-thumb { height: … }` as ONE rule — and Chromium\n * drops the whole rule because it does not recognise the `-moz-` half. Measured: the browser\n * parsed 75 of the 87 rules in a real card's sheet, the slider came out `height: 0px`, and the\n * card shipped three invisible controls. Order does not matter and neither does which vendor is\n * first; one unknown pseudo-element poisons the list.\n *\n * The model is doing the right thing by writing both prefixes, so the fix belongs here.\n */\nexport function splitVendorRules(css: string): string {\n return css.replaceAll(/(^|\\})\\s*([^{}]*::-moz-[^{}]*)\\{([^}]*)\\}/g, (whole, lead: string, selectors: string, body: string) => {\n const parts = selectors\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n if (parts.length < 2) return whole;\n const moz = parts.filter((s) => s.includes(\"::-moz-\"));\n const rest = parts.filter((s) => !s.includes(\"::-moz-\"));\n if (moz.length === 0 || rest.length === 0) return whole;\n return `${lead}\\n${rest.join(\",\\n\")}{${body}}\\n${moz.join(\",\\n\")}{${body}}`;\n });\n}\n\n/**\n * `data-plugin` is required, not decorative — see `canvas/mount.ts`: the loader claims every\n * unmarked `<style>` for whichever plugin is materializing, and would tear this one out with it.\n */\nfunction createSheet(): HTMLStyleElement {\n const style = document.createElement(\"style\");\n style.setAttribute(\"data-plugin\", PLUGIN_ID);\n style.setAttribute(\"data-plugin-css\", `${PLUGIN_ID}/uno`);\n return document.head.appendChild(style);\n}\n\n/** Drops the sheet and the generator. HMR reloads the module; the old sheet must not survive it. */\nexport function disposeUnoStyles(): void {\n sheet?.remove();\n sheet = null;\n generator = null;\n preflighted = false;\n tokens.clear();\n}\n",
|
|
44
|
+
"/**\n * Sends a card's compile error back to the model as a chat message.\n *\n * Until this existed, `onError` had no consumer at all: a card that failed to compile painted a\n * red panel for the reader and the model never learned anything. Measured on a real session —\n * a card imported `MonacoEditor` from `modern-monaco`, the surface reported *\"has no export named\n * 'MonacoEditor'; module exports: Workspace, errors, hydrate, init, lazy\"*, and the transcript\n * ends there: `MonacoEditor` appears 6 times in the records after that point and `no export named`\n * zero. The reader saw the answer on screen; the one party who could act on it did not.\n *\n * Three constraints, each of which this got wrong in an obvious first version:\n *\n * - **Only errors that survived.** `GenUISurface` already separates a mid-stream prefix failure\n * and a retryable network blip from a real one — the `report` branch of its error action. That\n * branch is the only caller, so a half-written expression never reaches the model.\n *\n * It is not sufficient on its own, though. `isUnfinishedFrame` excludes the RENDER phase by\n * design — a card whose own render throws is usually a real error — but a half-written\n * component rendering mid-stream throws too, and the next frame is fine. Measured in a browser:\n * a card that ultimately rendered correctly reported `Cannot read properties of undefined\n * (reading 'getCurrentStack')`, a React internal, to the model. Painting a red panel for a\n * frame costs nothing; sending the model a message about a card that then worked costs it a\n * turn spent fixing what is not broken. So the send is DEFERRED, and a paint cancels it.\n * - **Once per card, not once per frame.** A settled card that fails re-renders on every later\n * frame of the transcript, and a message per render is a loop the user has to kill. Keyed on\n * the message text.\n * - **Announced as automatic.** The model is about to read a user-role message it was not sent.\n * Saying where it came from is what stops it replying \"sorry about that\" to a person who typed\n * nothing.\n */\nconst sent = new Set<string>();\n\n/** Exported for the test: a fresh card in a fresh session should be able to report again. */\nexport const forgetReportedErrors = () => {\n sent.clear();\n cardRendered();\n};\n\nexport type ErrorReporter = (text: string) => void;\n\n/**\n * The message body. Kept short and factual: it is spent from the user's context window, and the\n * one thing the model needs is what failed and that nobody typed it.\n *\n * English, like the prompt and the skill it sits beside. This message is the only text this\n * plugin puts into the conversation, and writing it in Chinese did two things: it read as a\n * different voice from everything else the plugin says, and — because a card must be written in\n * the language the USER wrote in — it pushed the model toward answering a Spanish or French\n * speaker in the wrong language for the rest of the turn.\n */\nexport const reportBody = (message: string, phase: string) =>\n `[automatic] The card you just wrote did not render. It failed at the ${phase} step:\\n\\n${message}\\n\\nThis was sent by the renderer, not by the user — nobody typed it, so do not apologise or address it as a request. If the error names the correct usage (the available exports, for instance), fix the card and send it again. If it does not, look it up before you change anything, and answer in the language the user has been writing in.`;\n\n/**\n * How long an error must stand before the model hears about it. A streaming card recompiles many\n * times a second, so a frame that throws and a frame that paints are milliseconds apart; a second\n * is far longer than that gap and far shorter than a reader's patience with a broken card.\n */\nconst SETTLE_MS = 1000;\n\nlet pending: ReturnType<typeof setTimeout> | null = null;\n\n/** Called when a surface paints. Cancels a report the very next frame made untrue. */\nexport function cardRendered(): void {\n if (pending === null) return;\n clearTimeout(pending);\n pending = null;\n}\n\nexport function reportCardError(send: ErrorReporter | undefined, message: string, phase: string): void {\n if (send === undefined) return;\n if (sent.has(message)) return;\n sent.add(message);\n if (pending !== null) clearTimeout(pending);\n pending = setTimeout(() => {\n pending = null;\n send(reportBody(message, phase));\n }, SETTLE_MS);\n}\n",
|
|
45
|
+
"/**\n * Renders ```` ```ui4a/tsx ```` blocks in assistant prose live, in place, between the\n * surrounding paragraphs — the ui4a-playground inline contract.\n *\n * Two sources, each doing what only it can:\n *\n * - **The session snapshot owns the code.** The host's markdown renderer withholds a\n * fence's info string until the closing fence arrives, so a DOM-only implementation\n * cannot tell a half-written ui4a block from any other code block, and can only claim\n * it after the model has stopped typing. The raw assistant text has the opening fence\n * from its very first token, so that is where the code and its language come from.\n * - **The DOM owns the position.** There is no slot for a markdown code block, so the\n * rendered block is what tells us where in the prose to mount. `md-code-block` is a\n * hard-coded class on the host's CodeBlock wrapper.\n *\n * Blocks are matched to segments by content (a rendered block's text is a prefix of, or\n * equal to, its segment's code), not by order, so unrelated code blocks in the same reply\n * are left alone.\n *\n * The claimed block is hidden rather than removed: it belongs to the host's React tree,\n * and detaching a node React still owns invites a NotFoundError on its next commit.\n */\nimport { createRoot, type Root } from \"react-dom/client\";\nimport { createElement } from \"react\";\nimport { CodeBlock } from \"@deepseek-ai/dsh-client-ui-primitives\";\nimport type { ReactElement } from \"react\";\nimport type { Ui4aSegment } from \"./segments.ts\";\nimport { observeTranscript } from \"./observe.ts\";\n\nconst CLAIMED = \"data-ui4a-claimed\";\nconst MOUNT = \"data-ui4a-mount\";\nconst PREVIEW = \"data-ui4a-preview\";\n\n/** Unmounting a root during React's own commit throws; defer it like every other teardown here. */\nconst dropPreview = (claim: { preview: { host: HTMLElement; root: Root } | null }) => {\n const preview = claim.preview;\n if (preview === null) return;\n claim.preview = null;\n queueMicrotask(() => {\n preview.root.unmount();\n preview.host.remove();\n });\n};\n\ntype Claim = { block: HTMLElement; mount: HTMLElement; root: Root; code: string; complete: boolean; rendered: string; painted: MutationObserver | null; preview: { host: HTMLElement; root: Root } | null };\n\n/**\n * Whether the card has actually painted something a reader can see.\n *\n * **Compiling is not the same as having something to look at.** Mid-stream the default\n * export usually exists while the body is still an empty shell, so hiding the source block\n * at claim time leaves a blank gap that fills in with a pop seconds later — and the source\n * was sitting right there the whole time. Text, or an element that draws its own\n * pixels **and has a box**, is the signal; a wrapper with layout classes is not.\n *\n * Measured against the alternatives: a bare `getBoundingClientRect()` test passes a styled-but-\n * empty `div` — `height: 200px`, a grid with a gap, a padded skeleton card — which is precisely\n * the mid-stream shell this exists to reject. Enumerating tags alone missed `<video>`, custom\n * elements and iframes. Requiring both catches everything the tag list caught, plus those three,\n * and still rejects all three empty shells.\n */\n/** Elements that paint their own pixels; a custom element (any tag with a dash) counts too. */\nconst DRAWS = new Set([\"SVG\", \"CANVAS\", \"IMG\", \"VIDEO\", \"IFRAME\", \"PICTURE\"]);\n\n/**\n * partial-react's error boundary renders a bare text node — `ERROR` or `ERROR: <message>`.\n * That is text, so a naive check reads it as a painted card and hides the source block\n * underneath it, leaving the reader one red line and no way to see what the model wrote.\n * Measured: exactly the case where the source is most worth keeping.\n */\nconst BOUNDARY_ERROR = /^ERROR(:|$)/;\n\n/** Split out from `hasPainted` so the rule can be tested without a DOM. */\nexport const isPaintedText = (text: string) => {\n const trimmed = text.trim();\n return trimmed !== \"\" && !BOUNDARY_ERROR.test(trimmed);\n};\n\nexport const hasPainted = (mount: HTMLElement) => {\n if (isPaintedText(mount.textContent ?? \"\")) return true;\n for (const el of mount.querySelectorAll(\"*\")) {\n const tag = el.tagName.toUpperCase();\n if (!DRAWS.has(tag) && !tag.includes(\"-\")) continue;\n const box = el.getBoundingClientRect();\n if (box.width > 0 && box.height > 0) return true;\n }\n return false;\n};\n\n/** The block's source. `pre` when the grammar was unknown, the highlighted div otherwise. */\nconst codeOf = (block: HTMLElement) => block.querySelector(\"pre\")?.textContent ?? \"\";\n\n/** CodeBlock trims one trailing newline for display, so compare on trimmed ends. */\nexport const sameCode = (a: string, b: string) => a.trimEnd() === b.trimEnd();\n\n/**\n * The segment a rendered block belongs to.\n *\n * Mid-stream the block shows a prefix of its segment; once settled the two are equal.\n */\nexport const matchSegment = (segments: readonly Ui4aSegment[], rendered: string) => segments.find((segment) => sameCode(segment.code, rendered) || segment.code.startsWith(rendered));\n\nexport type InlineFenceOptions = {\n /** Every ui4a segment currently in the transcript, in document order. */\n segments: () => readonly Ui4aSegment[];\n render: (props: { code: string; streaming: boolean }) => ReactElement;\n scope?: HTMLElement;\n};\n\nexport function claimInlineFences({ segments, render, scope }: InlineFenceOptions): () => void {\n const claims = new Map<HTMLElement, Claim>();\n const root = scope ?? document.body;\n\n const release = (claim: Claim, restore: boolean) => {\n claim.painted?.disconnect();\n claim.root.unmount();\n claim.mount.remove();\n dropPreview(claim);\n if (restore && claim.block.isConnected) {\n claim.block.style.display = \"\";\n claim.block.removeAttribute(CLAIMED);\n }\n claims.delete(claim.block);\n };\n\n const sweep = () => {\n const current = segments();\n\n for (const block of root.querySelectorAll<HTMLElement>(`.md-code-block:not([${CLAIMED}])`)) {\n const code = codeOf(block);\n if (code === \"\") continue;\n // A streaming block's rendered text is a prefix of its segment; a settled one equals it.\n const segment = matchSegment(current, code);\n if (segment === undefined) continue;\n block.setAttribute(CLAIMED, \"\");\n const mount = document.createElement(\"div\");\n mount.setAttribute(MOUNT, \"\");\n block.parentElement?.insertBefore(mount, block.nextSibling);\n // Swap the host's block for our own CodeBlock while the card is still compiling. Two\n // reasons, both reported from a real transcript: the host keys highlighting on the fence\n // language, and its markdown parser truncates `ui4a/tsx` at the slash — so `ui4a` reaches\n // shiki, matches no grammar, and the source renders as unhighlighted plain text. Passing\n // `lang=\"tsx\"` is all it takes; `dsh-client-ui-primitives` is in the platform table, so\n // this resolves to the shell's own component and costs nothing to bundle. The second\n // reason is height: a 300-line card streams for over a minute with all of it on screen,\n // and this preview is capped.\n const previewHost = document.createElement(\"div\");\n previewHost.setAttribute(PREVIEW, \"\");\n block.parentElement?.insertBefore(previewHost, block);\n block.style.display = \"none\";\n const claim: Claim = { block, mount, root: createRoot(mount), code: \"\", complete: false, rendered: \"\", painted: null, preview: { host: previewHost, root: createRoot(previewHost) } };\n // The source stays visible until the card paints. Checked at most once per frame and\n // torn down the moment it fires: a streaming card mutates thousands of times, and\n // `textContent` walks the whole subtree, so a per-mutation check would be\n // O(mutations x subtree). The cost only exists during the gap it closes.\n let queued = 0;\n claim.painted = new MutationObserver(() => {\n if (queued !== 0) return;\n queued = requestAnimationFrame(() => {\n queued = 0;\n if (!hasPainted(mount)) return;\n claim.painted?.disconnect();\n claim.painted = null;\n dropPreview(claim);\n });\n });\n claim.painted.observe(mount, { childList: true, subtree: true, characterData: true });\n claims.set(block, claim);\n }\n\n for (const claim of claims.values()) {\n if (!claim.block.isConnected) {\n release(claim, false);\n continue;\n }\n const rendered = codeOf(claim.block);\n // The block's own text is what locates its segment, so an unchanged block cannot\n // have changed its match — skip the scan rather than re-run it every frame.\n //\n // Only once it has settled, though. `complete` flips on the segment, not in the block, so\n // a card whose last token closes the fence without changing the rendered text would never\n // leave the streaming path — and the streaming path cuts back the still-being-typed tail,\n // so it would keep rendering a card with its last statement missing. The skip is an\n // optimization for the steady state (most blocks in a long transcript), and a claim that\n // is still streaming is being re-scanned every frame regardless.\n if (rendered === claim.rendered && claim.code !== \"\" && claim.complete) continue;\n claim.rendered = rendered;\n const segment = matchSegment(current, rendered);\n // The snapshot is authoritative while it still describes this block: mid-stream its\n // code runs ahead of what markdown has painted. Once it stops describing it — an\n // older page dropped out of the loaded window — the last good frame stands, because\n // re-deriving from the hidden block would hand the renderer a truncated prefix and\n // blank a card that was already complete.\n //\n // Unless the block stopped being this card's at all: React reconciles `.md-code-block`\n // wrappers positionally, so a re-render can drop unrelated content into the very node\n // we hid. Its text is then no longer a prefix of what we rendered, and holding the\n // claim would leave a stale card on screen with the real block invisible behind it.\n if (segment === undefined) {\n if (claim.code.startsWith(rendered)) continue;\n release(claim, true);\n continue;\n }\n const { code, complete } = segment;\n if (code === claim.code && complete === claim.complete) continue;\n claim.code = code;\n claim.complete = complete;\n claim.root.render(render({ code, streaming: !complete }));\n // The preview follows the SEGMENT, not the block: mid-stream the snapshot runs ahead of\n // what markdown has painted, so this is the newer text and the one the reader wants while\n // waiting. Dropped the moment the card paints.\n claim.preview?.root.render(createElement(CodeBlock, { code, lang: \"tsx\" }));\n }\n };\n\n const stop = observeTranscript(sweep);\n\n return () => {\n stop();\n for (const claim of claims.values()) release(claim, true);\n };\n}\n",
|
|
46
|
+
"/**\n * One document observer, shared by every consumer that reacts to transcript mutations.\n *\n * Both the inline-fence claimer and the canvas host are driven by the same event — a\n * streamed token landing in the chat DOM — so a second observer over the same subtree only\n * doubles the browser's mutation bookkeeping and the number of frames scheduled. The\n * coalescing is not optional either: a streaming reply mutates the transcript dozens of\n * times per second, and one sweep per mutation is how a renderer melts the main thread.\n */\ntype Listener = () => void;\n\nconst listeners = new Set<Listener>();\nlet observer: MutationObserver | null = null;\nlet frame = 0;\n\nconst flush = () => {\n frame = 0;\n for (const listener of listeners) listener();\n};\n\nconst schedule = () => {\n if (frame !== 0) return;\n frame = requestAnimationFrame(flush);\n};\n\n/**\n * Runs `listener` at most once per frame while the document changes, starting immediately.\n * @returns a disposer that also tears the observer down once nothing is left listening.\n */\nexport function observeTranscript(listener: Listener): () => void {\n listeners.add(listener);\n if (observer === null) {\n observer = new MutationObserver(schedule);\n observer.observe(document.body, { subtree: true, childList: true, characterData: true });\n }\n schedule();\n return () => {\n listeners.delete(listener);\n if (listeners.size > 0) return;\n observer?.disconnect();\n observer = null;\n if (frame !== 0) cancelAnimationFrame(frame);\n frame = 0;\n };\n}\n\n/** Requests a frame outside a mutation — for state that changed without the DOM changing. */\nexport const scheduleSweep = schedule;\n\n/**\n * Drop every listener and tear the observer down.\n *\n * The set above is module scope, so it is shared by everything in a process — which is right in\n * a browser (one transcript, one observer) and is a trap in a test run, where a listener left by\n * one file goes on being swept by every later one. A sweep captures its root at registration, so\n * a stale one runs against a document that has since been replaced.\n *\n * Nothing in the plugin calls this: the shell disposes each host and that is the real path.\n */\nexport function resetTranscriptObservers(): void {\n listeners.clear();\n observer?.disconnect();\n observer = null;\n frame = 0;\n}\n",
|
|
47
|
+
"/**\n * Splits assistant prose into markdown and inline-ui4a segments.\n *\n * Ported from ui4a-playground/src/components/chat/segments.ts. We only consume the ui4a\n * side — the host renders the markdown — but the parser must still walk the whole text,\n * because a fence's position depends on everything before it.\n */\nimport { FENCE_LANG } from \"../../contract.ts\";\n\nexport type Ui4aSegment = { code: string; complete: boolean };\n\n/**\n * Opening fence. Both tolerances here were measured; do not tighten them.\n *\n * - **The fence need not start a line.** The prompt says \"on its own line\", but the model\n * routinely continues it straight after a sentence (`……完整元素周期表。\\`\\`\\`\\`ui4a/tsx`).\n * Anchoring with `^` drops that whole reply back to markdown, and hundreds of lines of\n * TSX get pasted into the conversation as prose — far worse than a loose match. So the\n * only requirement is that a backtick does not precede it (which would cut a longer\n * fence in half).\n * - **No newline is required after the language.** Same cause: the model glues the first\n * line of code onto the fence line. `[^\\n]*` was there for meta like `title=`, and it\n * swallows that code too — hence `inlineCode` below hands it back.\n */\nconst FENCE = new RegExp(String.raw`(?<!\\x60)(\\x60{3,})${FENCE_LANG.replace(\"/\", \"\\\\/\")}([^\\n]*)(\\n|$)`);\n\n/**\n * Where the closing fence is, or `-1`.\n *\n * Try the line-anchored form first (nearly every case) and only then scan for an inline\n * one. Running the permissive regex alone would make the lookbehind re-test at every\n * character — and the closing fence is absent for the whole streaming phase, so that is\n * the most expensive possible scan of the whole body, once per frame (measured on a 25KB\n * body: 1µs → 121µs).\n */\nfunction findClose(body: string, fence: string): number {\n const anchored = body.indexOf(`\\n${fence}`);\n if (anchored >= 0 && /^[^\\S\\n]*(?:\\n|$)/.test(body.slice(anchored + 1 + fence.length)) && body[anchored + 1 + fence.length] !== \"`\") return anchored + 1;\n for (let at = body.indexOf(fence); at >= 0; at = body.indexOf(fence, at + 1)) {\n if (body[at - 1] === \"`\" || body[at + fence.length] === \"`\") continue;\n if (/^[^\\S\\n]*(?:\\n|$)/.test(body.slice(at + fence.length))) return at;\n }\n // A closer SHORTER than the opener. Markdown says this does not close the fence, and the\n // model writes it anyway: 18 of 385 openers in the corpus are closed by a shorter run\n // (`open=6 close=4` nine times), and each one is a card that streams forever because nothing\n // ever ends it. Accepting any standalone run of three-plus rescues 16 and cuts 0 short — the\n // single card where a shorter run precedes the matching one had closed itself twice, so\n // cutting at the first is the same body. Tried last so an exact match always wins.\n const short = /(?:^|\\n)[^\\S\\n]*(`{3,})[^\\S\\n]*(?:\\n|$)/.exec(body);\n return short === undefined || short === null ? -1 : short.index + (short[0].startsWith(\"\\n\") ? 1 : 0);\n}\n\n/**\n * Tool-call markup the model leaked into its own prose. The reply ends mid-fence with the\n * closing tags glued to the last line of TSX, so the body reaches the compiler with those tags\n * in it and fails to parse — the whole card is lost, not just the closing fence.\n *\n * Two spellings, and the rarer one was found first: `</parameter></invoke>` appeared once in\n * the corpus, while the model's own `</||DSML||parameter>` form accounts for three more and\n * was invisible to a regex written from that single sample. Those full-width bars are U+FF5C,\n * not ASCII `|`. Only stripped at the very end of an unterminated body, where nothing\n * legitimate can follow — which is true of a closed fence too: the model leaks the tags and then\n * still writes the closing fence, and stripping only the unterminated case loses that card outright.\n */\nexport const TOOL_CALL_MARKUP = /\\n?(?:<\\/(?:antml:|||DSML||)?(?:parameter|invoke|tool_calls)>\\s*)+$/;\n\n/**\n * The prompt asks for four backticks — generated TSX contains triple-backtick strings often\n * enough that a triple-backtick fence would be closed early by its own body. Three or more\n * are accepted anyway: models do not always comply, and one backtick short should not\n * demote the whole block to a plain code listing. The closing fence matches the opening\n * length, so the four-backtick form still tolerates triples inside.\n *\n * An unterminated fence still yields a segment with `complete: false` — that is exactly the\n * frame a streaming reply is in, and rendering it is the entire point.\n */\nconst CODE_LINE = /^(import|export|const|function|type|interface|let|\\/\\/)\\b/;\nconst FENCE_META = /^[\\w-]+=/;\n\nexport function parseUi4aSegments(text: string): Ui4aSegment[] {\n const segments: Ui4aSegment[] = [];\n let rest = text;\n while (true) {\n const open = FENCE.exec(rest);\n if (open === null) return segments;\n // Leftovers after `ui4a/tsx` on the fence line: normally empty (or meta like `title=`),\n // but the model sometimes puts the first line of code there. If it looks like code,\n // hand it back as the body's first line rather than dropping it.\n const trailing = open[2].trim();\n const bodyStart = open.index + open[0].length;\n // A fence opener the model is *talking about* rather than opening. Measured: 19 of 405\n // openers in the corpus are prose, and 14 of them put the sentence right after the\n // language (`\\`\\`\\`\\`ui4a/tsx\\`\\`\\`\\` 块,原地渲染成…`). Anything that is not code and not\n // `key=value` meta is one; skipping the whole opener costs 0 of 390 real cards.\n if (trailing !== \"\" && !CODE_LINE.test(trailing) && !FENCE_META.test(trailing)) {\n rest = rest.slice(bodyStart);\n continue;\n }\n // A wrapper: the model opened a wider fence and then opened the real one inside it, the way\n // this project's own prompt shows the block (`\\`\\`\\`\\`\\`` around `\\`\\`\\`\\`ui4a/tsx`). Taking the\n // outer one gives a body that is the inner fence AS TEXT — which compiles, silently, to a\n // card that renders nothing. Once in 389 corpus openers, and it costs the reader the card.\n if (/^[^\\S\\n]*`{3,}ui4a\\/tsx/.test(rest.slice(bodyStart))) {\n rest = rest.slice(bodyStart);\n continue;\n }\n const inlineCode = CODE_LINE.test(trailing) ? `${trailing}\\n` : \"\";\n const closeIndex = findClose(rest.slice(bodyStart), open[1]);\n if (closeIndex === -1) {\n segments.push({ code: (inlineCode + rest.slice(bodyStart)).replace(TOOL_CALL_MARKUP, \"\"), complete: false });\n return segments;\n }\n segments.push({ code: (inlineCode + rest.slice(bodyStart, bodyStart + closeIndex)).replace(TOOL_CALL_MARKUP, \"\"), complete: true });\n rest = rest.slice(bodyStart + closeIndex).replace(new RegExp(String.raw`^${open[1]}[^\\n]*\\n?`), \"\");\n }\n}\n",
|
|
48
|
+
"/**\n * Reading the current session's chat nodes.\n *\n * Both consumers — inline fences and canvases — need the same unwrap, and both run it on\n * every frame while a reply streams. Sharing it keeps the guards in one place, and lets\n * the per-node work be cached against a node's identity rather than redone per frame.\n */\nimport type { ClientContext } from \"@deepseek-ai/dsh-client-runtime/client\";\n\nexport type ChatNodeView = { readonly kind: string; readonly data: unknown; readonly anchorSeq: number };\n\n/** The current session's chat nodes, or an empty list when no session is open. */\nexport function chatNodes(ctx: ClientContext): readonly ChatNodeView[] {\n const sessionId = ctx.sessions.list.getSnapshot().current;\n if (sessionId === undefined) return [];\n const snapshot = ctx.sessions.binding(sessionId)?.session.getSnapshot();\n if (snapshot === undefined) return [];\n return [...snapshot.chat.nodes.values()] as readonly ChatNodeView[];\n}\n\n/**\n * Derives a value per chat node, reusing the previous result when the node has not changed.\n *\n * A sweep runs on every frame of a streaming reply, but only the tail node is actually\n * growing — re-deriving finished nodes means re-scanning the whole transcript dozens of\n * times a second, which grows with session length rather than with what changed.\n *\n * @param key - identity of a node's current content; equal keys must mean equal results.\n * @param derive - the per-node work to memoize.\n */\nexport function perNode<T>(key: (node: ChatNodeView) => string, derive: (node: ChatNodeView) => T) {\n let cache = new Map<string, T>();\n return (nodes: readonly ChatNodeView[]): T[] => {\n const next = new Map<string, T>();\n const results: T[] = [];\n for (const node of nodes) {\n const id = key(node);\n const value = cache.get(id) ?? derive(node);\n next.set(id, value);\n results.push(value);\n }\n // Replacing the map drops entries for nodes that left the loaded window.\n cache = next;\n return results;\n };\n}\n",
|
|
49
|
+
"/**\n * Wires the canvas column: watch the transcript for canvas writes, mount the panel when\n * there are any, unmount when there are none.\n */\nimport { createElement } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { CanvasPanel, type Canvas } from \"./CanvasPanel.tsx\";\nimport { CanvasLauncher } from \"./CanvasLauncher.tsx\";\nimport { PANEL_CSS } from \"./panel-css.ts\";\nimport { collectCanvases, type ToolCallView } from \"./collect.ts\";\nimport { listCanvasIds, readCanvasFile } from \"./read.ts\";\nimport { createColumn, injectStyles, whenFrameReady } from \"./mount.ts\";\nimport { observeTranscript, scheduleSweep } from \"../runtime/observe.ts\";\n\nexport type CanvasHostOptions = {\n /** Every tool call in the current session, oldest first. */\n calls: () => readonly ToolCallView[];\n /** The current session's workspace directory, when it has one. */\n cwd: () => string | undefined;\n /** Identity of the current session; dismissals are remembered against it. */\n sessionId: () => string;\n /**\n * Where a canvas's compile failure goes. Optional because a host may have no chat channel;\n * absent, the error is still painted for the reader and simply reaches nobody else.\n */\n onCardError?: (message: string, phase: string) => void;\n /** A canvas that painted; cancels a deferred error report the next frame made untrue. */\n onCardRendered?: () => void;\n};\n\nconst EMPTY: ReadonlySet<string> = new Set();\n\n/**\n * A call whose arguments carry executable code rather than a file operation.\n *\n * Matched on the argument text, not the tool name, for the same reason `collect.ts` classifies\n * by shape: the day the host renames `run_code`, a name list stops matching and canvases\n * silently stop appearing.\n *\n * It must also mention the canvases directory. All 29 opaque canvas writes in the corpus do,\n * even the 27 whose path is built from a variable — and without that clause a session doing\n * ordinary shell work re-lists once per command (measured: median 0, but one session hit 94).\n */\n/**\n * What a sweep would paint, as a string. Equal signatures mean nothing to do.\n *\n * The observer fires on every streamed token, so this is what stands between the panel and a\n * React render per token. `code.length` rather than the code: a growing card changes length on\n * every frame, which is exactly when it should repaint, and comparing megabytes of source per\n * token would cost more than the render. The offerable list belongs in it too — closing the\n * last canvas changes nothing about the visible list, and without it the launcher never paints.\n */\nexport const paintSignature = (canvases: readonly Canvas[], offerable: readonly string[]): string => `${canvases.map((c) => `${c.id}:${c.code.length}:${String(c.streaming)}`).join(\"|\")}#${offerable.join(\",\")}`;\n\nexport const OPAQUE_WRITE = /\"(?:code|command)\"\\s*:[\\s\\S]*canvases/;\n\nexport function mountCanvasHost({ calls, cwd, sessionId, onCardError, onCardRendered }: CanvasHostOptions): { dispose: () => void; show: (id: string) => void } {\n /**\n * Canvas bodies re-read from disk, for the ones a patch left stale.\n *\n * Keyed by canvas id and versioned by how many mutating calls it has seen, so a further\n * edit invalidates the entry while repeated sweeps over the same state reuse it. Without\n * the version the choice is between never refetching and refetching every frame.\n */\n const fromFile = new Map<string, { version: number; code?: string }>();\n const disposers: (() => void)[] = [injectStyles(PANEL_CSS)];\n /**\n * Canvases the reader dismissed, per session.\n *\n * Closing hides what is on screen without opting out of the feature — a canvas written\n * afterwards still opens. Keyed by session because ids are only unique within one: a\n * dismissal must not follow the reader into another conversation, and returning to a\n * session should find it as they left it.\n */\n const dismissed = new Map<string, Set<string>>();\n /**\n * Canvases the reader opened from the launcher that this session never wrote.\n *\n * A canvas outlives its session, so the launcher offers everything in the workspace —\n * but those have no tool call to reconstruct them from, and their bodies come off disk.\n * Keyed by session for the same reason `dismissed` is.\n */\n const opened = new Map<string, Set<string>>();\n /** Bodies of the launcher-opened canvases. Read once: nothing in this session changes them. */\n const openedCode = new Map<string, string>();\n /** Every canvas on disk, for the launcher. Refreshed per workspace, not per sweep. */\n let workspaceIds: readonly string[] = [];\n let listedFor: string | undefined;\n /** Settled opaque calls at the time of the last listing — see the sweep for why. */\n let listedAfter = -1;\n // `null` until the first paint, so an empty first paint is still a paint. An empty string\n // would collide with the signature of \"no canvases\" and skip it.\n let signature: string | null = null;\n\n /**\n * Show a canvas the reader picked, whether or not this session wrote it.\n *\n * Defined out here rather than inside the sweep because callers outside the panel reach\n * it too — the transcript's file links, which would otherwise hand a `.ui4a.tsx` to the\n * OS file opener.\n */\n const show = (id: string): void => {\n const session = sessionId();\n dismissed.get(session)?.delete(id);\n const showing = opened.get(session) ?? new Set<string>();\n showing.add(id);\n opened.set(session, showing);\n signature = null;\n scheduleSweep();\n };\n\n const stopWaiting = whenFrameReady((frameElement) => {\n const column = createColumn(frameElement);\n const root = createRoot(column.element);\n disposers.push(() => root.unmount(), column.remove);\n\n // `collectCanvases` walks every argument string by hand, which is what makes it correct on a\n // half-arrived JSON prefix — and it costs 0.16ms per canvas per sweep. The sweep runs on\n // every transcript mutation, so a session with 34 canvas calls (the corpus maximum) spent\n // ~5ms per streamed token re-deriving a result that had not changed. Keyed on the calls'\n // own bytes: a streamed argument grows, so its length moves on every frame that matters and\n // on none that do not.\n let callsKey: string | null = null;\n let collected = collectCanvases([]);\n\n const paint = () => {\n const allCalls = calls();\n const key = `${allCalls.length}:${allCalls.reduce((total, call) => total + call.argsRaw.length + (call.settled ? 1 : 0), 0)}`;\n if (key !== callsKey) {\n callsKey = key;\n collected = collectCanvases(allCalls);\n }\n const workspace = cwd();\n const session = sessionId();\n const hidden = dismissed.get(session) ?? EMPTY;\n // The workspace listing backs the launcher. Fetched once per workspace rather than per\n // sweep — the sweep runs per streamed token, and a directory listing is not free.\n // A call that ran arbitrary code may have written a canvas without any argument saying\n // so: 29 canvas writes in the corpus go through `run_code`, and in 27 of them the path is\n // built from a variable, so nothing in the arguments names the id. `collect.ts` cannot\n // classify what the arguments do not contain — but the workspace listing already knows,\n // it just never refreshed. Counting settled opaque calls re-lists once each time one\n // finishes, which is a directory read per code execution and nothing per streamed token.\n let opaque = 0;\n for (const call of allCalls) if (call.settled && OPAQUE_WRITE.test(call.argsRaw)) opaque += 1;\n if (workspace !== undefined && (workspace !== listedFor || opaque !== listedAfter)) {\n listedFor = workspace;\n listedAfter = opaque;\n void listCanvasIds(workspace).then((ids) => {\n workspaceIds = ids;\n signature = null;\n scheduleSweep();\n });\n }\n const canvases: Canvas[] = collected.canvases\n .filter((canvas) => !hidden.has(canvas.id))\n .map((canvas) => {\n const version = collected.stale.get(canvas.id);\n // Not patched: the write's own arguments are the canvas, streaming included.\n if (version === undefined) return canvas;\n // One entry per canvas covers both states: `code` absent means a read is in\n // flight, present means it settled. Two collections would only be two things to\n // keep in sync.\n const cached = fromFile.get(canvas.id);\n if (cached?.version === version) return cached.code === undefined ? canvas : { ...canvas, code: cached.code };\n if (workspace !== undefined) {\n fromFile.set(canvas.id, { version });\n void readCanvasFile(workspace, canvas.id).then((code) => {\n // A miss keeps the entry (with no body) rather than dropping it: deleting it\n // makes the very next sweep — one per streamed token — fire the same failing\n // read again, forever. The version already invalidates it when a real change\n // lands, which is the only thing that could make the answer differ.\n if (code === null) return;\n fromFile.set(canvas.id, { version, code });\n // The body changed underneath the signature, so force the next sweep to paint.\n signature = null;\n scheduleSweep();\n });\n }\n // Until it arrives, the previous body still beats an empty panel.\n return cached?.code === undefined ? canvas : { ...canvas, code: cached.code };\n });\n\n // Canvases the reader picked out of the launcher. Their code is not in any tool call,\n // so it comes off disk once and then stays — nothing this session does can change it.\n for (const id of opened.get(session) ?? EMPTY) {\n if (hidden.has(id) || canvases.some((canvas) => canvas.id === id)) continue;\n const code = openedCode.get(id);\n if (code !== undefined) canvases.push({ id, code, streaming: false });\n else if (workspace !== undefined) {\n openedCode.set(id, \"\");\n void readCanvasFile(workspace, id).then((body) => {\n if (body === null) return;\n openedCode.set(id, body);\n signature = null;\n scheduleSweep();\n });\n }\n }\n\n // What the launcher can offer: everything on disk, plus anything written this session\n // whose file has not landed yet. Sorted so the button does not reshuffle between sweeps.\n const offerable = [...new Set([...workspaceIds, ...collected.canvases.map((canvas) => canvas.id)])].toSorted();\n\n const next = paintSignature(canvases, offerable);\n if (next === signature) return;\n signature = next;\n if (canvases.length === 0) column.setWidth(0);\n\n const repaint = () => {\n signature = null;\n scheduleSweep();\n };\n\n root.render(\n canvases.length > 0\n ? createElement(CanvasPanel, {\n canvases,\n offerable,\n cwd: cwd(),\n onOpen: show,\n onCardError,\n onCardRendered,\n onWidth: column.setWidth,\n onClose: () => {\n const hiding = dismissed.get(session) ?? new Set<string>();\n for (const canvas of canvases) hiding.add(canvas.id);\n dismissed.set(session, hiding);\n // Anything opened from the launcher is closed for good rather than left to\n // reappear on the next sweep: `dismissed` covers the ones with a tool call\n // behind them, and this covers the ones without.\n opened.delete(session);\n repaint();\n },\n })\n : offerable.length > 0\n ? createElement(CanvasLauncher, {\n ids: offerable,\n onOpen: show,\n })\n : null,\n );\n };\n\n disposers.push(observeTranscript(paint));\n });\n\n disposers.push(stopWaiting);\n return {\n dispose: () => {\n for (const dispose of disposers.toReversed()) dispose();\n },\n show,\n };\n}\n",
|
|
50
|
+
"/**\n * The canvas column: one mini app per `ui4a/canvases/<id>.ui4a.tsx`, rendered beside the\n * conversation rather than inside it.\n *\n * Composed rather than configured — the panel owns chrome and selection, `GenUISurface`\n * owns rendering, and the caller owns where canvases come from. That is what lets the\n * same surface back both this and the inline cards.\n */\nimport { useEffect, useRef, useState } from \"react\";\nimport { compiler, GenUISurface } from \"../runtime/GenUISurface.tsx\";\nimport { canvasPath } from \"../../contract.ts\";\nimport { readCanvasChild } from \"./read.ts\";\nimport { importsSibling, inlineSubPages } from \"./subpages.ts\";\nimport { useDismissable } from \"./useDismissable.ts\";\n\nexport type Canvas = { id: string; code: string; streaming: boolean };\n\nexport type CanvasPanelProps = {\n canvases: readonly Canvas[];\n /** Every canvas in the workspace, so the header can reach ones this session never wrote. */\n offerable: readonly string[];\n /** The session's workspace, needed to fetch a canvas's sub-page files. */\n cwd: string | undefined;\n onOpen: (id: string) => void;\n onClose: () => void;\n /** Reports the panel's width so the host frame can reserve matching space. */\n onWidth: (width: number) => void;\n /** A canvas that failed to compile; see `runtime/report-error.ts`. */\n onCardError?: (message: string, phase: string) => void;\n /** A canvas that painted; see `runtime/report-error.ts`. */\n onCardRendered?: () => void;\n};\n\n/**\n * Rewrites a canvas's relative sub-page imports into blob URLs before it is compiled.\n *\n * Only for a settled canvas: mid-stream the sibling files are usually not written yet, and a\n * canvas does not stream under the default PTC mode anyway (see CLAUDE.md §3.6). Until the\n * rewrite lands the original source is rendered, which fails exactly as it does today rather\n * than blanking a canvas that was working.\n */\nexport function useSubPages(cwd: string | undefined, canvas: Canvas | undefined) {\n const [resolved, setResolved] = useState<{ key: string; code: string } | null>(null);\n // Destructured so the effect depends on scalars: the store rebuilds `canvas` on every sweep,\n // and depending on the object would re-run the whole resolve for an unchanged canvas.\n const id = canvas?.id;\n const code = canvas?.code;\n const streaming = canvas?.streaming;\n\n useEffect(() => {\n if (cwd === undefined || id === undefined || code === undefined) return;\n if (!needsResolve(code, streaming)) return;\n const key = `${id}:${code.length}`;\n let live = true;\n const urls: string[] = [];\n const compile = async (filename: string, source: string) => (await compiler().compile(source, { filename })).code;\n void inlineSubPages(code, canvasPath(id), (specifier, from) => readCanvasChild(cwd, id, specifier, from), compile, urls).then((next) => {\n // Resolved after teardown: nobody will ever render these, so revoke them here — the\n // disposer already ran and cannot see urls the pass appended after it.\n if (!live) return void revokeAll(urls);\n setResolved({ key, code: next });\n });\n return () => {\n live = false;\n // The surface holds the previous code, so its blobs stay reachable until it re-renders;\n // revoking on the next resolve rather than here would leak one set per edit.\n revokeAll(urls);\n };\n }, [cwd, id, code, streaming]);\n\n if (id === undefined || code === undefined) return \"\";\n return resolved !== null && resolved.key === `${id}:${code.length}` ? resolved.code : code;\n}\n\n/**\n * Revoke every blob URL in a list, exactly once each.\n *\n * Both callers hand it the SAME array — the disposer, and the resolve that lands after it. The\n * array is filled by `inlineSubPages` as it goes, so the two can see different lengths, and a\n * URL revoked twice is harmless while one revoked never is a leak per edit. Emptying the list\n * as it goes makes the pair idempotent regardless of which runs first or what arrived between.\n */\n/**\n * Whether this canvas needs the sub-page pass at all. Extracted from the effect because the\n * mutation audit could not constrain it there — flipping `streaming` or dropping the\n * `importsSibling` check survived every test, and both are load-bearing: resolving mid-stream\n * inlines a prefix that the next frame supersedes, and a canvas with no sibling imports would\n * pay a compile per frame to produce the code it already had.\n *\n * The `undefined` checks stay in the effect: a type predicate narrows only one parameter, and\n * moving them here would cost the compiler its knowledge that `cwd` and `id` are strings after.\n */\nexport const needsResolve = (code: string, streaming: boolean | undefined): boolean => !streaming && importsSibling(code);\n\nexport const revokeAll = (urls: string[]): void => {\n while (urls.length > 0) URL.revokeObjectURL(urls.pop()!);\n};\n\n/** Cheap gate: only a canvas that actually writes a relative import pays for the pass. */\nconst MIN_WIDTH = 320;\nconst MAX_WIDTH = 720;\n/** Exported for `test/panel-css.test.ts`: the default must be draggable-to. */\nexport { MIN_WIDTH as MIN_WIDTH_FOR_TEST, MAX_WIDTH as MAX_WIDTH_FOR_TEST };\n/**\n * Must equal the `--dgu-panel-width` fallback in `panel.css`.\n *\n * The CSS default is what the panel is painted at before React's inline style lands; this is\n * what the resize state starts from. Different values mean the panel visibly jumps on its first\n * frame — a `panel-css.test.ts` assertion holds them together, since a stylesheet cannot import\n * a constant.\n */\nexport const DEFAULT_WIDTH = 420;\n\n/**\n * The panel's width for a pointer at `clientX`, clamped to what is usable.\n *\n * Extracted from the drag handler because it is the whole of the arithmetic and none of the\n * DOM: a swapped bound or a flipped subtraction gives a panel that snaps shut or eats the\n * conversation, and the drag itself cannot be exercised without a browser.\n */\n/**\n * Which canvas the panel shows, and which ids the \"other canvases\" menu offers.\n *\n * Both are pure functions of the props and both decide what the reader is looking at, so they\n * are here rather than inline: the fallback is what covers a selected canvas disappearing\n * mid-stream (no cleanup needed — clearing the state as well would be a second render saying\n * the same thing), and `offerable` minus the tabs is what keeps the menu from listing what is\n * already on screen.\n */\nexport const activeCanvas = (canvases: readonly Canvas[], activeId: string | null) => canvases.find((canvas) => canvas.id === activeId) ?? canvases[canvases.length - 1];\n\nexport const otherCanvases = (canvases: readonly Canvas[], offerable: readonly string[]) => offerable.filter((id) => !canvases.some((canvas) => canvas.id === id));\n\nexport const widthForPointer = (clientX: number, viewportWidth: number) => Math.min(MAX_WIDTH, Math.max(MIN_WIDTH, viewportWidth - clientX));\n\n/** Drag-to-resize on the panel's left edge, mirroring the host's own invisible hit strip. */\nexport function useResize(initial: number) {\n const [width, setWidth] = useState(initial);\n const frame = useRef(0);\n const start = (event: React.PointerEvent<HTMLDivElement>) => {\n event.currentTarget.setPointerCapture(event.pointerId);\n event.currentTarget.setAttribute(\"data-dragging\", \"\");\n const move = (moveEvent: PointerEvent) => {\n // One update per frame: pointermove fires far faster than the panel can lay out.\n if (frame.current !== 0) return;\n frame.current = requestAnimationFrame(() => {\n frame.current = 0;\n setWidth(widthForPointer(moveEvent.clientX, window.innerWidth));\n });\n };\n const stop = () => {\n window.removeEventListener(\"pointermove\", move);\n window.removeEventListener(\"pointerup\", stop);\n document.querySelector(\"[data-dragging]\")?.removeAttribute(\"data-dragging\");\n if (frame.current !== 0) cancelAnimationFrame(frame.current);\n frame.current = 0;\n };\n window.addEventListener(\"pointermove\", move);\n window.addEventListener(\"pointerup\", stop);\n };\n return { width, start };\n}\n\nexport function CanvasPanel({ canvases, offerable, cwd, onOpen, onClose, onWidth, onCardError, onCardRendered }: CanvasPanelProps) {\n const { width, start } = useResize(DEFAULT_WIDTH);\n useEffect(() => onWidth(width), [width, onWidth]);\n const [activeId, setActiveId] = useState<string | null>(null);\n const { open: picking, setOpen: setPicking, anchor: picker } = useDismissable();\n // Only what is not already a tab: the tabs cover this session, this covers the rest.\n const elsewhere = otherCanvases(canvases, offerable);\n\n // Follow the newest canvas unless the reader has picked one that still exists. A\n // selection that disappears needs no cleanup: the fallback already covers it, and\n // clearing the state as well would only be a second render saying the same thing.\n const active = activeCanvas(canvases, activeId);\n const resolved = useSubPages(cwd, active);\n\n return (\n <div className=\"dgu-panel\" style={{ \"--dgu-panel-width\": `${width}px` } as React.CSSProperties}>\n <div className=\"dgu-resize\" onPointerDown={start} style={{ left: 0 }} />\n <div className=\"dgu-header\">\n <span className=\"dgu-title\">{active?.id ?? \"Canvas\"}</span>\n <span className=\"dgu-spacer\" />\n {elsewhere.length > 0 && (\n <div className=\"dgu-picker\" ref={picker}>\n <button type=\"button\" className=\"dgu-icon-button\" onClick={() => setPicking(!picking)} aria-expanded={picking} aria-label={`其他画布(${elsewhere.length})`} title={`其他画布(${elsewhere.length})`}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 5.5l4 3.5 4-3.5\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n {picking && (\n <ul className=\"dgu-launcher-menu dgu-picker-menu\">\n {elsewhere.map((id) => (\n <li key={id}>\n <button\n type=\"button\"\n className=\"dgu-launcher-item\"\n onClick={() => {\n setPicking(false);\n setActiveId(id);\n onOpen(id);\n }}\n >\n {id}\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n )}\n <button type=\"button\" className=\"dgu-icon-button\" onClick={onClose} aria-label=\"关闭画布\" title=\"关闭画布\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 3l8 8M11 3l-8 8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n {canvases.length > 1 && (\n <div className=\"dgu-tabs\" role=\"tablist\">\n {canvases.map((canvas) => (\n <button key={canvas.id} type=\"button\" role=\"tab\" className=\"dgu-tab\" aria-selected={canvas.id === active?.id} onClick={() => setActiveId(canvas.id)}>\n {canvas.id}\n </button>\n ))}\n </div>\n )}\n <div className=\"dgu-body\">\n {active === undefined ? (\n <div className=\"dgu-empty\">写入 ui4a/canvases/<id>.ui4a.tsx 后,画布会出现在这里</div>\n ) : (\n // A canvas arrives as whole files, so recompiles replace rather than extend —\n // preserving state would make an edited canvas silently keep the old render.\n <GenUISurface key={active.id} code={resolved} streaming={active.streaming} preserveState={false} onError={(error, phase) => onCardError?.(error.message, phase)} onRendered={onCardRendered} />\n )}\n </div>\n </div>\n );\n}\n",
|
|
51
|
+
"/**\n * Reads a canvas's current file contents through the plugin's own host route.\n *\n * Needed because `edit`-style tool calls carry a patch rather than the file: after one,\n * the tool-call stream no longer describes the canvas and only the file does.\n */\nimport { CANVAS_READ_PATH } from \"../../contract-assets.ts\";\n\n/** Monotonic per-read, so no two reads of one canvas can share a cache entry. */\nlet readSerial = 0;\n\n/** Every canvas in the workspace, including ones this session never wrote. */\nexport async function listCanvasIds(cwd: string): Promise<readonly string[]> {\n try {\n const response = await fetch(`${CANVAS_READ_PATH}?cwd=${encodeURIComponent(cwd)}`, { cache: \"no-store\" });\n return response.ok ? ((await response.json()) as string[]) : [];\n } catch {\n return [];\n }\n}\n\nexport async function readCanvasFile(cwd: string, id: string): Promise<string | null> {\n // A distinct URL per read on top of `no-store`: the file is re-read precisely because it\n // changed, so any reuse of an earlier response is guaranteed to be the wrong answer.\n readSerial += 1;\n const url = `${CANVAS_READ_PATH}?cwd=${encodeURIComponent(cwd)}&id=${encodeURIComponent(id)}&r=${readSerial}`;\n try {\n // `cache: \"no-store\"` on the request as well as the response: a canvas is re-read\n // precisely because it just changed, and a cached body is the one answer that is\n // guaranteed wrong.\n const response = await fetch(url, { cache: \"no-store\" });\n // 404 is ordinary: a canvas whose write is still streaming has no file yet.\n return response.ok ? await response.text() : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Reads one of a canvas's sub-page files, named by the relative specifier as written in the\n * canvas source. The server resolves it through the contract; anything outside this canvas's\n * own child directory comes back 400 and reads here as null.\n */\nexport async function readCanvasChild(cwd: string, id: string, specifier: string, from: string): Promise<{ source: string; filename: string } | null> {\n readSerial += 1;\n const url = `${CANVAS_READ_PATH}?cwd=${encodeURIComponent(cwd)}&id=${encodeURIComponent(id)}&child=${encodeURIComponent(specifier)}&from=${encodeURIComponent(from)}&r=${readSerial}`;\n try {\n const response = await fetch(url, { cache: \"no-store\" });\n if (!response.ok) return null;\n // The server resolved the extension; the compiler needs it to pick a syntax.\n return { source: await response.text(), filename: response.headers.get(\"x-ui4a-filename\") ?? `${specifier}.tsx` };\n } catch {\n return null;\n }\n}\n",
|
|
52
|
+
"/**\n * Rewrites a canvas's relative imports into blob URLs, before the source is compiled.\n *\n * `src/prompt.ts` tells the model that a canvas's sub-pages live in `<id>/` and are imported\n * with relative paths, and the model does exactly that. But a card is imported as a blob URL,\n * and `blob:` is not a hierarchical scheme — the browser rejects `./tarot/deck` with\n * \"Invalid relative url or base scheme isn't hierarchical\" before any import map is consulted,\n * so `setImportMap` cannot help. Measured: an import map keyed on the relative specifier fails\n * identically, because resolution against the importer's URL happens first.\n *\n * Replacing the specifier with the child's own blob URL removes the question: an absolute URL\n * has no base to resolve against. Children may import their siblings, which works for the same\n * reason once they too have been rewritten.\n */\n/**\n * Matches the specifier of a static import or re-export; the second capture is the specifier.\n *\n * NOT global, and that is load-bearing. It was `/g`, shared by all three call sites, and `.test`\n * on a global regex leaves `lastIndex` past the match it found — so `importsSibling` returning\n * TRUE made the very next `matchAll` on the same string return ZERO. That is the order\n * `CanvasPanel` calls them in: ask whether there are sibling imports, then go resolve them. The\n * panel found none to resolve and the card rendered without its sub-pages.\n *\n * `matchAll` requires `/g`, so it gets its own copy; the shared one stays sticky-free and no\n * caller has to remember to reset anything.\n */\nconst SPECIFIER = /(\\bfrom\\s*|\\bimport\\s*\\(\\s*)[\"'](\\.[^\"']*)[\"']/;\nconst SPECIFIER_ALL = new RegExp(SPECIFIER, \"g\");\n\n/**\n * Whether the card imports a sibling at all — the cheap question `CanvasPanel` asks before\n * paying for a resolve pass. It had its own copy of the regex, identical but for the `g` flag;\n * a widening applied to one and not the other means the panel never calls `inlineSubPages` and\n * the card silently renders without its sub-pages. Sharing one pattern fixed that and introduced\n * the `lastIndex` bug above — hence two derived regexes rather than two literals.\n */\nexport const importsSibling = (code: string) => SPECIFIER.test(code);\n\n/**\n * @param read fetches one child by its specifier, returning its source and the real filename\n * it was found under — the compiler picks its syntax from the extension, and a specifier is\n * written without one, so passing the specifier makes a `.ts` file fail to parse.\n * @param compile turns one child's TSX into JS. Children go through the same compiler as the\n * card, so a sub-page may be TSX and may itself import a sibling.\n * @param urls collects every blob created, so the caller can revoke them with the surface.\n */\nexport async function inlineSubPages(code: string, entry: string, read: (specifier: string, from: string) => Promise<{ source: string; filename: string } | null>, compile: (filename: string, source: string) => Promise<string>, urls: string[]): Promise<string> {\n // Keyed by the RESOLVED filename, never by the specifier: `./types` written in two different\n // child files is two different targets, and a specifier-keyed map silently serves the first\n // one to both. Measured on a real split — the model gives every child a sibling import.\n const sources = new Map<string, { source: string; filename: string; specifiers: Map<string, string> }>();\n const missing = new Set<string>();\n\n const specifiersIn = (source: string) => new Set([...source.matchAll(SPECIFIER_ALL)].map((match) => match[2]));\n\n // Collected breadth-first, then compiled in one pass. Resolving a child's own imports\n // *during* its fetch deadlocks on a cycle — a imports b imports a, and each awaits the\n // other's URL forever. Measured: it hung. Reading every reachable child first, and only\n // then handing out URLs, has no such wait.\n let frontier: { specifier: string; from: string }[] = [...specifiersIn(code)].map((specifier) => ({ specifier, from: entry }));\n const entryTargets = new Map<string, string>();\n while (frontier.length > 0) {\n const bodies = await Promise.all(frontier.map(async (want) => [want, await read(want.specifier, want.from)] as const));\n const next: { specifier: string; from: string }[] = [];\n for (const [want, found] of bodies) {\n const targets = want.from === entry ? entryTargets : sources.get(want.from)?.specifiers;\n if (found === null) {\n missing.add(want.specifier);\n continue;\n }\n targets?.set(want.specifier, found.filename);\n if (sources.has(found.filename)) continue;\n sources.set(found.filename, { ...found, specifiers: new Map() });\n for (const specifier of specifiersIn(found.source)) next.push({ specifier, from: found.filename });\n }\n frontier = next;\n }\n\n // A blob's contents are fixed at creation, so a child can only be minted once every sibling\n // it imports already has a URL. Repeat until nothing moves: a cycle never becomes mintable\n // and keeps its original specifiers, failing exactly as it does today rather than hanging.\n const urlFor = new Map<string, string>();\n for (const filename of sources.keys()) urlFor.set(filename, \"\");\n\n // Rewrites through `SPECIFIER_ALL`, not `replaceAll`, so only an actual import position moves.\n // A bare `replaceAll(\"./board\")` also rewrites the string in `const label = \"./board\"` — the\n // card then renders a blob URL as its label, or passes one where a path was meant. No corpus\n // card does this today; the regex that finds the imports already knows the difference, so\n // there is no reason to throw that away when putting them back.\n const rewrite = (source: string, specifiers: Map<string, string>) =>\n source.replace(SPECIFIER_ALL, (whole, lead: string, specifier: string) => {\n const url = urlFor.get(specifiers.get(specifier) ?? \"\");\n return url === undefined || url === \"\" ? whole : `${lead}${JSON.stringify(url)}`;\n });\n\n for (let progress = true; progress;) {\n progress = false;\n const ready = [...sources].filter(([filename, found]) => urlFor.get(filename) === \"\" && [...found.specifiers.values()].every((dep) => urlFor.get(dep) !== \"\"));\n const built = await Promise.all(ready.map(async ([filename, found]) => [filename, await compile(filename, rewrite(found.source, found.specifiers))] as const));\n for (const [filename, compiled] of built) {\n const url = URL.createObjectURL(new Blob([compiled], { type: \"text/javascript\" }));\n urlFor.set(filename, url);\n urls.push(url);\n progress = true;\n }\n }\n\n return rewrite(code, entryTargets);\n}\n",
|
|
53
|
+
"/**\n * Open/close state for a menu, closed by a click anywhere else.\n *\n * `pointerdown` on the document rather than a click handler on a backdrop: a backdrop\n * element would sit over the canvas and swallow the first click into it.\n */\nimport { useEffect, useRef, useState } from \"react\";\n\n/**\n * Closes on a pointerdown anywhere but `anchor`, while `open`. Returns its own disposer.\n *\n * Split out of the hook so the four things that matter are testable without a renderer: that it\n * does not listen while closed, that an outside press closes, that a press inside the anchor\n * does **not**, and that it unsubscribes. A `pointerdown` listener on the document rather than a\n * backdrop element, because a backdrop would sit over the canvas and swallow the first click\n * into it.\n */\nexport function dismissOnOutsidePointer(open: boolean, anchor: HTMLElement | null, close: () => void): (() => void) | undefined {\n if (!open) return undefined;\n const onPointerDown = (event: Event) => {\n // The toggle button lives inside the anchor, so ignoring the anchor is what keeps a click on\n // it from closing here and reopening in the button's own handler.\n if (anchor?.contains(event.target as Node) === true) return;\n close();\n };\n document.addEventListener(\"pointerdown\", onPointerDown);\n return () => document.removeEventListener(\"pointerdown\", onPointerDown);\n}\n\nexport function useDismissable() {\n const [open, setOpen] = useState(false);\n const anchor = useRef<HTMLDivElement>(null);\n\n useEffect(() => dismissOnOutsidePointer(open, anchor.current, () => setOpen(false)), [open]);\n\n return { open, setOpen, anchor };\n}\n",
|
|
54
|
+
"/**\n * The way back after closing the panel.\n *\n * Closing a canvas hides it without deleting anything, and a canvas outlives the session\n * that wrote it, so without an entry point the work is stranded: the file is still on\n * disk, but nothing on screen reaches it and the only recovery is making the model write\n * it again.\n */\nimport { useDismissable } from \"./useDismissable.ts\";\n\nexport type CanvasLauncherProps = {\n /** Every canvas in the workspace, including ones this session never wrote. */\n ids: readonly string[];\n onOpen: (id: string) => void;\n};\n\nexport function CanvasLauncher({ ids, onOpen }: CanvasLauncherProps) {\n const { open, setOpen, anchor } = useDismissable();\n // One canvas needs no menu — the button is the canvas.\n const single = ids.length === 1 ? ids[0] : undefined;\n const label = single === undefined ? `打开画布(${ids.length})` : `打开画布 ${single}`;\n\n return (\n <div className=\"dgu-launcher-dock\" ref={anchor}>\n {open && single === undefined && (\n <ul className=\"dgu-launcher-menu\">\n {ids.map((id) => (\n <li key={id}>\n <button\n type=\"button\"\n className=\"dgu-launcher-item\"\n onClick={() => {\n setOpen(false);\n onOpen(id);\n }}\n >\n {id}\n </button>\n </li>\n ))}\n </ul>\n )}\n <button type=\"button\" className=\"dgu-launcher\" aria-label={label} title={label} aria-expanded={single === undefined ? open : undefined} onClick={() => (single === undefined ? setOpen(!open) : onOpen(single))}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <rect x=\"1.75\" y=\"2.25\" width=\"10.5\" height=\"9.5\" rx=\"1.75\" stroke=\"currentColor\" strokeWidth=\"1.3\" />\n <path d=\"M8.5 2.5v9\" stroke=\"currentColor\" strokeWidth=\"1.3\" />\n </svg>\n {ids.length > 1 && <span className=\"dgu-launcher-count\">{ids.length}</span>}\n </button>\n </div>\n );\n}\n",
|
|
55
|
+
"/* Generated from panel.css by scripts/build.ts — edit the .css, not this file. */\nexport const PANEL_CSS = \"/*\\n * The canvas column. Everything visual comes from the host's design tokens, so the panel\\n * tracks theme changes for free and never introduces a second palette\\n * (docs/web-styling.md: feature packages consume aliases, they do not define colors).\\n */\\n.dgu-panel {\\n --dgu-panel-width: 420px;\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n z-index: 20;\\n display: flex;\\n flex-direction: column;\\n width: var(--dgu-panel-width);\\n background: var(--dsw-alias-bg-base);\\n border-left: 1px solid var(--dsw-alias-border-l1);\\n color: var(--dsw-alias-label-primary);\\n font-family: var(--dsw-font-family);\\n overflow: hidden;\\n}\\n\\n.dgu-header {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n padding: 0 8px 0 14px;\\n height: 44px;\\n flex: none;\\n}\\n\\n/* No hairline under either the title bar or the tab strip, and that is the host's own language,\\n * not a preference: measured on dsh web's conversation header (`wSkVaW_header`), the computed\\n * `border-bottom-color` is `rgba(0, 0, 0, 0)` on a transparent background with no box-shadow —\\n * it separates itself from the scroll area with 76px of height and nothing else. Two `border-l1`\\n * rules here put lines across a panel that sits inside that same frame, which reads as chrome the\\n * app does not otherwise have. */\\n\\n.dgu-title {\\n font-size: var(--dsw-font-s-14-font-size);\\n line-height: var(--dsw-font-s-14-line-height);\\n font-weight: var(--dsw-font-s-strong-14-font-weight);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.dgu-spacer {\\n flex: 1 1 auto;\\n}\\n\\n.dgu-icon-button {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: 28px;\\n height: 28px;\\n flex: none;\\n border: 0;\\n border-radius: 6px;\\n background: transparent;\\n color: var(--dsw-alias-label-secondary);\\n cursor: pointer;\\n}\\n.dgu-icon-button:hover {\\n background: var(--dsw-alias-interactive-bg-hover);\\n color: var(--dsw-alias-label-primary);\\n}\\n.dgu-icon-button:focus-visible {\\n outline: 2px solid var(--dsw-alias-state-business-primary);\\n outline-offset: -2px;\\n}\\n\\n/* Tabs only appear from the second canvas on: one canvas needs no chooser. */\\n.dgu-tabs {\\n display: flex;\\n gap: 2px;\\n padding: 6px 8px;\\n flex: none;\\n overflow-x: auto;\\n scrollbar-width: none;\\n}\\n.dgu-tabs::-webkit-scrollbar {\\n display: none;\\n}\\n\\n.dgu-tab {\\n padding: 4px 10px;\\n border: 0;\\n border-radius: 6px;\\n background: transparent;\\n color: var(--dsw-alias-label-secondary);\\n font-family: inherit;\\n font-size: var(--dsw-font-xs-13-font-size);\\n line-height: var(--dsw-font-xs-13-line-height);\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.dgu-tab:hover {\\n background: var(--dsw-alias-interactive-bg-hover);\\n}\\n.dgu-tab[aria-selected=\\\"true\\\"] {\\n background: var(--dsw-specific-sidebar-nav-item-active);\\n color: var(--dsw-alias-label-primary);\\n}\\n\\n/*\\n * The canvas owns this space entirely — the panel already provides the frame, so the body\\n * adds no padding and no background of its own. Generated UI is told to fill it.\\n */\\n.dgu-body {\\n flex: 1 1 auto;\\n min-height: 0;\\n overflow: auto;\\n}\\n.dgu-body > * {\\n min-height: 100%;\\n}\\n\\n.dgu-empty {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n height: 100%;\\n padding: 24px;\\n text-align: center;\\n color: var(--dsw-alias-label-secondary);\\n font-size: var(--dsw-font-xs-13-font-size);\\n line-height: var(--dsw-font-xs-13-line-height);\\n}\\n\\n/* Invisible hit strip, matching how the host draws its own sidebar boundary. */\\n.dgu-resize {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n width: 8px;\\n cursor: col-resize;\\n z-index: 1;\\n}\\n.dgu-resize:hover,\\n.dgu-resize[data-dragging] {\\n /* The foreground token on purpose: this wants a wash that contrasts with whatever is\\n behind it, and `brand-primary` tracks the body text colour in both themes. */\\n background: var(--dsw-alias-brand-primary);\\n opacity: 0.12;\\n}\\n\\n/*\\n * Sits where the panel's left edge was, so reopening is a click in the place it closed\\n * from. Fixed like the panel because it shares the same \\\"outside the frame\\\" problem —\\n * an extra flex child in the frame's row lands off screen.\\n */\\n.dgu-launcher-dock {\\n position: fixed;\\n top: 50%;\\n right: 0;\\n transform: translateY(-50%);\\n z-index: 20;\\n display: flex;\\n align-items: center;\\n gap: 6px;\\n}\\n\\n.dgu-launcher {\\n display: inline-flex;\\n align-items: center;\\n gap: 4px;\\n padding: 8px 6px;\\n border: 1px solid var(--dsw-alias-border-l1);\\n border-right: 0;\\n border-radius: 8px 0 0 8px;\\n background: var(--dsw-alias-bg-layer-1);\\n color: var(--dsw-alias-label-secondary);\\n font-family: var(--dsw-font-family);\\n font-size: var(--dsw-font-xs-13-font-size);\\n line-height: var(--dsw-font-xs-13-line-height);\\n cursor: pointer;\\n}\\n.dgu-launcher:hover {\\n background: var(--dsw-alias-interactive-bg-hover);\\n color: var(--dsw-alias-label-primary);\\n}\\n.dgu-launcher:focus-visible {\\n outline: 2px solid var(--dsw-alias-state-business-primary);\\n outline-offset: -2px;\\n}\\n\\n.dgu-launcher-count {\\n font-variant-numeric: tabular-nums;\\n}\\n\\n/* Opens leftward: the dock is already against the right edge, so there is nowhere else. */\\n.dgu-launcher-menu {\\n display: flex;\\n flex-direction: column;\\n gap: 2px;\\n margin: 0;\\n padding: 4px;\\n max-height: 60vh;\\n overflow-y: auto;\\n list-style: none;\\n border: 1px solid var(--dsw-alias-border-l1);\\n border-radius: 8px;\\n /* A floating surface has to occlude: `bg-layer-1` is a tint over whatever it sits on, so\\n it needs the panel's own opaque ground underneath before the tint reads as a menu. */\\n background: var(--dsw-alias-bg-base);\\n background-image: linear-gradient(var(--dsw-alias-bg-layer-1), var(--dsw-alias-bg-layer-1));\\n box-shadow: 0 8px 24px rgb(0 0 0 / 0.24);\\n}\\n\\n.dgu-launcher-item {\\n display: block;\\n width: 100%;\\n padding: 5px 10px;\\n border: 0;\\n border-radius: 6px;\\n background: transparent;\\n color: var(--dsw-alias-label-primary);\\n font-family: var(--dsw-font-family);\\n font-size: var(--dsw-font-xs-13-font-size);\\n line-height: var(--dsw-font-xs-13-line-height);\\n text-align: left;\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.dgu-launcher-item:hover {\\n background: var(--dsw-alias-interactive-bg-hover);\\n}\\n\\n/* Anchors the header's canvas picker; the menu drops below the button. */\\n.dgu-picker {\\n position: relative;\\n display: flex;\\n}\\n\\n.dgu-picker-menu {\\n position: absolute;\\n top: calc(100% + 4px);\\n right: 0;\\n z-index: 1;\\n}\\n\";\n",
|
|
56
|
+
"/**\n * Finds canvases in the transcript's tool calls.\n *\n * The model writes `ui4a/canvases/<id>.ui4a.tsx` with the host's ordinary file tools — no\n * bespoke tool, no new session event, nothing for the node half to do. `argsRaw` grows\n * token by token while the call streams, which is what makes a canvas render as it is\n * written (the same \"streaming from tool arguments\" contract as ui4a-playground).\n *\n * Parsing has to survive half a JSON object. Rather than depend on a partial-JSON parser\n * for two fields, the two we need are pulled out directly: the path decides whether this\n * is a canvas at all, and the content is a JSON string literal we can decode up to\n * wherever the stream currently ends.\n */\nimport { owningCanvasIdOf } from \"../../contract.ts\";\nimport type { Canvas } from \"./CanvasPanel.tsx\";\n\n/**\n * A call is classified by the SHAPE of its arguments, never by the tool's name.\n *\n * Enumerating names would mean a canvas silently stops rendering the day the host adds or\n * renames a file tool — no error, no stale marker, just an invisible no-op. What actually\n * matters is answerable from the arguments alone: does this call name a canvas path, and\n * does it carry the whole file or only a patch of it.\n */\nconst PATH_KEYS = [\"path\", \"file_path\", \"filename\", \"file\", \"target_file\"];\n\n/**\n * Keys that carry a whole file body.\n *\n * Deliberately excludes the patch-shaped keys (`old_str`/`new_str`, `old_string`/\n * `new_string`, `diff`, `patch`): a call carrying one of those changes the canvas without\n * describing it, so the file on disk becomes the only correct source. `str_replace_editor`\n * is exactly this case — its `new_str` is the replacement snippet, not the file, and\n * treating it as a body replaces the whole canvas with a few lines.\n */\nconst CONTENT_KEYS = [\"content\", \"contents\", \"text\", \"file_text\"];\n\n/**\n * Keys that mean \"this call changed the file without saying what it now contains\".\n *\n * The counterpart to CONTENT_KEYS, and the thing that separates an edit from a read: both\n * name a canvas path and neither carries a body, so without this a plain `read` would mark\n * the canvas stale and — for a canvas this session never wrote — open a panel the user\n * never asked for, just for looking at the file.\n */\nconst PATCH_KEYS = [\"old_str\", \"new_str\", \"old_string\", \"new_string\", \"diff\", \"patch\", \"edits\", \"replacements\"];\n\nconst ESCAPES: Record<string, string> = { n: \"\\n\", t: \"\\t\", r: \"\\r\", b: \"\\b\", f: \"\\f\" };\n\n/**\n * The value of whichever key appears EARLIEST in the arguments, from complete JSON or a\n * truncated prefix of it.\n *\n * Earliest position rather than first-in-`keys`: a file body routinely contains the\n * literal text of another candidate key (a canvas that renders the word `\"content\"`, say),\n * and scanning key by key would find that occurrence inside the body and decode the rest\n * of the body as if it were the value — silently rendering a fragment as the whole canvas.\n * The real key can only precede its own value, so the leftmost hit is the right one.\n */\nfunction readString(argsRaw: string, keys: readonly string[]): string | undefined {\n let at = -1;\n let key: string | undefined;\n for (const candidate of keys) {\n const found = argsRaw.indexOf(`\"${candidate}\"`);\n if (found !== -1 && (at === -1 || found < at)) {\n at = found;\n key = candidate;\n }\n }\n if (key === undefined) return undefined;\n const colon = argsRaw.indexOf(\":\", at + key.length + 2);\n if (colon === -1) return undefined;\n const quote = argsRaw.indexOf('\"', colon + 1);\n if (quote === -1) return undefined;\n // Walk the string literal by hand: it may simply stop mid-escape while streaming.\n let out = \"\";\n for (let i = quote + 1; i < argsRaw.length; i += 1) {\n const char = argsRaw[i];\n if (char === \"\\\\\") {\n const escape = argsRaw[i + 1];\n if (escape === undefined) return out;\n if (escape === \"u\") {\n const hex = argsRaw.slice(i + 2, i + 6);\n // A \\u escape cut in half by the stream carries no character yet; the next frame has it.\n if (hex.length < 4) return out;\n out += String.fromCharCode(Number.parseInt(hex, 16) || 0);\n i += 5;\n continue;\n }\n out += ESCAPES[escape] ?? escape;\n i += 1;\n continue;\n }\n if (char === '\"') return out;\n out += char;\n }\n return out;\n}\n\nexport type ToolCallView = { name: string; argsRaw: string; settled: boolean };\n\n/**\n * One call in the tree a `tool-call` node owns.\n *\n * A running call carries its arguments inline; a settled one wraps them in `call`. Either\n * may own `subCalls` — `run_code` dispatches the file tools as children, so a canvas\n * written from inside a code block is nested rather than top-level.\n */\nexport type CallBlock = {\n kind?: string;\n name?: string;\n argsRaw?: string;\n call?: { name?: string; argsRaw?: string };\n subCalls?: readonly CallBlock[];\n};\n\n/** The call's own identity, ignoring its children. */\nfunction viewOf(block: CallBlock): ToolCallView | null {\n const name = block.call?.name ?? block.name;\n const argsRaw = block.call?.argsRaw ?? block.argsRaw;\n if (name === undefined || argsRaw === undefined) return null;\n // `tool-result` is the settled shape; anything else is still running.\n return { name, argsRaw, settled: block.kind === \"tool-result\" };\n}\n\n/**\n * Every call a `tool-call` node contains, parents before children.\n *\n * Flattening rather than reading only the root is what lets a canvas written through\n * `run_code` (or any other dispatching tool) be found: the write is a sub-call, and the\n * root's own arguments are the code that ran, not the file.\n */\nexport function toolCallsOf(data: unknown): ToolCallView[] {\n const root = (data as { root?: CallBlock } | undefined)?.root;\n if (root === undefined) return [];\n const found: ToolCallView[] = [];\n const walk = (block: CallBlock) => {\n const view = viewOf(block);\n if (view !== null) found.push(view);\n for (const child of block.subCalls ?? []) walk(child);\n };\n walk(root);\n return found;\n}\n\n/**\n * Latest canvas per id, in first-seen order.\n * @param calls - every tool call in the transcript, oldest first.\n */\nexport type CollectedCanvases = {\n canvases: Canvas[];\n /**\n * Canvases whose newest change was a patch, mapped to how many patches they have seen.\n * The count is a cache version: the caller re-reads the file when it changes, and\n * reuses what it already has when it does not.\n */\n stale: Map<string, number>;\n};\n\nexport function collectCanvases(calls: readonly ToolCallView[]): CollectedCanvases {\n const byId = new Map<string, Canvas>();\n const stale = new Map<string, number>();\n for (const call of calls) {\n // Reads name a canvas too; only a call that writes one is interesting.\n const path = readString(call.argsRaw, PATH_KEYS);\n if (path === undefined) continue;\n const id = owningCanvasIdOf(path);\n if (id === null) continue;\n const code = readString(call.argsRaw, CONTENT_KEYS);\n const isWrite = code !== undefined && code !== \"\";\n\n if (!isWrite) {\n // A patch changed the file without describing it, so the body on disk is now the only\n // correct source. A call with neither a body nor a patch only read it — leave it alone.\n const patches = PATCH_KEYS.some((key) => call.argsRaw.includes(`\"${key}\"`));\n if (patches && call.settled) stale.set(id, (stale.get(id) ?? 0) + 1);\n continue;\n }\n // A later write to the same id replaces the earlier one; insertion order is kept.\n byId.delete(id);\n byId.set(id, { id, code, streaming: !call.settled });\n // A whole-file write supersedes every patch before it.\n stale.delete(id);\n }\n // An edit to a canvas never written in this session still deserves a panel.\n for (const id of stale.keys()) if (!byId.has(id)) byId.set(id, { id, code: \"\", streaming: false });\n return { canvases: [...byId.values()], stale };\n}\n",
|
|
57
|
+
"/**\n * Mounts the canvas column into the host's AppFrame.\n *\n * There is no additive slot for a whole column: `details` is a single-occupant slot the\n * conversation already owns, and taking it would remove the tool-details seat declared\n * inside it. A portal into the frame's own flex row adds a column without contending for\n * anything — the same shape dsh-better-sidebar uses for its right sidebar.\n */\nconst FRAME = \".pI_x6G_frame, [class*='_frame']\";\nconst PLUGIN_ID = \"dsh-generative-ui\";\n\n/**\n * Injects the panel stylesheet.\n *\n * The `data-plugin` attribute is required, not decorative: the client module loader\n * claims every `style:not([data-plugin])` for whichever plugin is currently\n * materializing, so an unmarked sheet gets adopted by a stranger and torn out with them.\n */\nexport function injectStyles(css: string): () => void {\n const style = document.createElement(\"style\");\n style.setAttribute(\"data-plugin\", PLUGIN_ID);\n style.setAttribute(\"data-plugin-css\", `${PLUGIN_ID}/panel`);\n style.textContent = css;\n document.head.append(style);\n return () => style.remove();\n}\n\n/**\n * Resolves the frame element, waiting for it when the shell has not painted yet.\n * @param onFound - called once with the container; not called if disposed first.\n */\nexport function whenFrameReady(onFound: (frame: HTMLElement) => void): () => void {\n const found = document.querySelector<HTMLElement>(FRAME);\n if (found !== null) {\n onFound(found);\n return () => {};\n }\n const observer = new MutationObserver(() => {\n const frame = document.querySelector<HTMLElement>(FRAME);\n if (frame === null) return;\n observer.disconnect();\n window.clearTimeout(timer);\n onFound(frame);\n });\n observer.observe(document.body, { subtree: true, childList: true });\n // The selector tracks a hashed class name, so a host rebuild can invalidate it. Without\n // this the failure is a canvas panel that silently never appears; one warning turns a\n // mystery into a starting point.\n const timer = window.setTimeout(() => {\n observer.disconnect();\n console.warn(`[dsh-generative-ui] no AppFrame matched ${FRAME} — canvases cannot mount. The host's layout markup likely changed.`);\n }, 15_000);\n return () => {\n observer.disconnect();\n window.clearTimeout(timer);\n };\n}\n\n/**\n * Creates the panel's host element and makes room for it.\n *\n * The frame's own columns are sized to fill the viewport exactly, so an extra flex child\n * is laid out past the right edge no matter where it is inserted — present in the DOM,\n * correctly sized, and entirely off screen (that is what the first attempt did). Instead\n * the panel is fixed to the right edge and the frame is given matching right padding, so\n * the conversation reflows into the remaining width and nothing overlaps.\n *\n * @param frame - the host's AppFrame element.\n * @param width - the panel's current width in pixels.\n */\nexport function createColumn(frame: HTMLElement): {\n element: HTMLElement;\n setWidth: (width: number) => void;\n remove: () => void;\n} {\n const element = document.createElement(\"div\");\n element.setAttribute(\"data-dgu-canvas-column\", \"\");\n document.body.append(element);\n const previousPadding = frame.style.paddingRight;\n const setWidth = (width: number) => {\n frame.style.paddingRight = width === 0 ? previousPadding : `${width}px`;\n };\n return {\n element,\n setWidth,\n remove: () => {\n frame.style.paddingRight = previousPadding;\n element.remove();\n },\n };\n}\n"
|
|
58
|
+
],
|
|
59
|
+
"mappings": "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",
|
|
60
|
+
"debugId": "86F35A693577D63964756E2164756E21",
|
|
61
|
+
"names": []
|
|
62
|
+
}
|