@knighted/jsx 1.6.3-rc.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/cjs/loader/dom-template-builder.cjs +217 -0
  2. package/dist/cjs/loader/dom-template-builder.d.cts +12 -0
  3. package/dist/cjs/loader/helpers/dom-snippets.cjs +149 -0
  4. package/dist/cjs/loader/helpers/dom-snippets.d.cts +2 -0
  5. package/dist/cjs/loader/helpers/format-import-specifier.cjs +30 -0
  6. package/dist/cjs/loader/helpers/format-import-specifier.d.cts +13 -0
  7. package/dist/cjs/loader/helpers/materialize-slice.cjs +37 -0
  8. package/dist/cjs/loader/helpers/materialize-slice.d.cts +1 -0
  9. package/dist/cjs/loader/helpers/parse-range-key.cjs +14 -0
  10. package/dist/cjs/loader/helpers/parse-range-key.d.cts +1 -0
  11. package/dist/cjs/loader/helpers/rewrite-imports-without-tags.cjs +62 -0
  12. package/dist/cjs/loader/helpers/rewrite-imports-without-tags.d.cts +3 -0
  13. package/dist/cjs/loader/jsx.cjs +57 -33
  14. package/dist/cjs/loader/jsx.d.cts +3 -1
  15. package/dist/cjs/loader/modes.cjs +17 -0
  16. package/dist/cjs/loader/modes.d.cts +3 -0
  17. package/dist/cjs/runtime/shared.cjs +3 -13
  18. package/dist/cjs/shared/normalize-text.cjs +22 -0
  19. package/dist/cjs/shared/normalize-text.d.cts +1 -0
  20. package/dist/lite/debug/index.js +7 -7
  21. package/dist/lite/index.js +7 -7
  22. package/dist/lite/node/debug/index.js +7 -7
  23. package/dist/lite/node/index.js +7 -7
  24. package/dist/lite/node/react/index.js +5 -5
  25. package/dist/lite/react/index.js +5 -5
  26. package/dist/loader/dom-template-builder.d.ts +12 -0
  27. package/dist/loader/dom-template-builder.js +213 -0
  28. package/dist/loader/helpers/dom-snippets.d.ts +2 -0
  29. package/dist/loader/helpers/dom-snippets.js +146 -0
  30. package/dist/loader/helpers/format-import-specifier.d.ts +13 -0
  31. package/dist/loader/helpers/format-import-specifier.js +26 -0
  32. package/dist/loader/helpers/materialize-slice.d.ts +1 -0
  33. package/dist/loader/helpers/materialize-slice.js +33 -0
  34. package/dist/loader/helpers/parse-range-key.d.ts +1 -0
  35. package/dist/loader/helpers/parse-range-key.js +10 -0
  36. package/dist/loader/helpers/rewrite-imports-without-tags.d.ts +3 -0
  37. package/dist/loader/helpers/rewrite-imports-without-tags.js +58 -0
  38. package/dist/loader/jsx.d.ts +3 -1
  39. package/dist/loader/jsx.js +55 -31
  40. package/dist/loader/modes.d.ts +3 -0
  41. package/dist/loader/modes.js +13 -0
  42. package/dist/runtime/shared.js +3 -13
  43. package/dist/shared/normalize-text.d.ts +1 -0
  44. package/dist/shared/normalize-text.js +18 -0
  45. package/package.json +6 -6
@@ -7,6 +7,11 @@ exports.default = jsxLoader;
7
7
  const magic_string_1 = __importDefault(require("magic-string"));
8
8
  const oxc_parser_1 = require("oxc-parser");
9
9
  const template_diagnostics_js_1 = require("../internal/template-diagnostics.cjs");
10
+ const dom_template_builder_js_1 = require("./dom-template-builder.cjs");
11
+ const materialize_slice_js_1 = require("./helpers/materialize-slice.cjs");
12
+ const rewrite_imports_without_tags_js_1 = require("./helpers/rewrite-imports-without-tags.cjs");
13
+ const modes_js_1 = require("./modes.cjs");
14
+ const normalize_text_js_1 = require("../shared/normalize-text.cjs");
10
15
  const createPlaceholderMap = (placeholders) => new Map(placeholders.map(entry => [entry.marker, entry.code]));
11
16
  class ReactTemplateBuilder {
12
17
  placeholderMap;
@@ -223,23 +228,13 @@ const TEMPLATE_PARSER_OPTIONS = {
223
228
  preserveParens: true,
224
229
  };
225
230
  const DEFAULT_TAGS = ['jsx', 'reactJsx'];
226
- const DEFAULT_MODE = 'runtime';
231
+ const WEB_TARGETS = new Set(['web', 'webworker', 'electron-renderer', 'node-webkit']);
232
+ const isWebTarget = (target) => target ? WEB_TARGETS.has(target) : false;
227
233
  const HELPER_SNIPPETS = {
228
234
  react: `const __jsxReactMergeProps = (...sources) => Object.assign({}, ...sources)
229
235
  const __jsxReact = (type, props, ...children) => React.createElement(type, props, ...children)
230
236
  `,
231
- };
232
- const parseLoaderMode = (value) => {
233
- if (typeof value !== 'string') {
234
- return null;
235
- }
236
- switch (value) {
237
- case 'runtime':
238
- case 'react':
239
- return value;
240
- default:
241
- return null;
242
- }
237
+ ...dom_template_builder_js_1.DOM_HELPER_SNIPPETS,
243
238
  };
244
239
  const escapeTemplateChunk = (chunk) => chunk.replace(/\\/g, '\\\\').replace(/`/g, '\\`').replace(/\${/g, '\\${');
245
240
  const formatParserError = (error) => {
@@ -416,19 +411,8 @@ const extractJsxRoot = (program) => {
416
411
  throw new Error('[jsx-loader] Expected the template to contain a single JSX root node.');
417
412
  };
418
413
  const normalizeJsxTextSegments = (value, placeholders) => {
419
- const collapsed = value.replace(/\r/g, '').replace(/\n\s+/g, ' ');
420
- const leadingWhitespace = value.match(/^\s*/)?.[0] ?? '';
421
- const trailingWhitespace = value.match(/\s*$/)?.[0] ?? '';
422
- const trimStart = /\n/.test(leadingWhitespace);
423
- const trimEnd = /\n/.test(trailingWhitespace);
424
- let normalized = collapsed;
425
- if (trimStart) {
426
- normalized = normalized.replace(/^\s+/, '');
427
- }
428
- if (trimEnd) {
429
- normalized = normalized.replace(/\s+$/, '');
430
- }
431
- if (normalized.length === 0 || normalized.trim().length === 0) {
414
+ const normalized = (0, normalize_text_js_1.normalizeJsxText)(value);
415
+ if (!normalized) {
432
416
  return [];
433
417
  }
434
418
  const segments = [];
@@ -477,7 +461,7 @@ const materializeTemplateStrings = (quasis) => {
477
461
  });
478
462
  return templates;
479
463
  };
480
- const buildTemplateSource = (quasis, expressions, source, tag) => {
464
+ const buildTemplateSource = (quasis, expressions, source, tag, replacements) => {
481
465
  const placeholderMap = new Map();
482
466
  const tagPlaceholderMap = new Map();
483
467
  let template = '';
@@ -536,7 +520,7 @@ const buildTemplateSource = (quasis, expressions, source, tag) => {
536
520
  const nextValue = nextChunk?.value;
537
521
  const rightText = nextValue?.cooked ?? nextValue?.raw ?? '';
538
522
  const context = getTemplateExpressionContext(chunk, rightText);
539
- const code = source.slice(start, end);
523
+ const code = (0, materialize_slice_js_1.materializeSlice)(start, end, source, replacements);
540
524
  const marker = registerMarker(code, context.type === 'tag');
541
525
  const appendMarker = (wrapper) => {
542
526
  const insertion = wrapper ? wrapper(marker) : marker;
@@ -633,13 +617,15 @@ const transformSource = (source, config, options) => {
633
617
  const magic = new magic_string_1.default(source);
634
618
  let mutated = false;
635
619
  const helperKinds = new Set();
620
+ const replacements = new Map();
621
+ const inlineTags = new Set();
636
622
  taggedTemplates
637
623
  .sort((a, b) => b.node.start - a.node.start)
638
624
  .forEach(entry => {
639
625
  const { node, tagName } = entry;
640
- const mode = config.tagModes.get(tagName) ?? DEFAULT_MODE;
626
+ const mode = config.tagModes.get(tagName) ?? modes_js_1.DEFAULT_MODE;
641
627
  const quasi = node.quasi;
642
- const templateSource = buildTemplateSource(quasi.quasis, quasi.expressions, source, tagName);
628
+ const templateSource = buildTemplateSource(quasi.quasis, quasi.expressions, source, tagName, replacements);
643
629
  const templateStrings = materializeTemplateStrings(quasi.quasis);
644
630
  if (mode === 'runtime') {
645
631
  const { code, changed } = transformTemplateLiteral(templateSource.source, config.resourcePath, tagName, templateStrings, templateSource.diagnostics);
@@ -651,6 +637,7 @@ const transformSource = (source, config, options) => {
651
637
  const tagSource = source.slice(node.tag.start, node.tag.end);
652
638
  const replacement = `${tagSource}\`${restored}\``;
653
639
  magic.overwrite(node.start, node.end, replacement);
640
+ replacements.set(`${node.start}:${node.end}`, replacement);
654
641
  mutated = true;
655
642
  return;
656
643
  }
@@ -658,7 +645,18 @@ const transformSource = (source, config, options) => {
658
645
  const compiled = compileReactTemplate(templateSource.source, templateSource.placeholders, config.resourcePath, tagName, templateStrings, templateSource.diagnostics);
659
646
  helperKinds.add('react');
660
647
  magic.overwrite(node.start, node.end, compiled);
648
+ replacements.set(`${node.start}:${node.end}`, compiled);
649
+ mutated = true;
650
+ inlineTags.add(tagName);
651
+ return;
652
+ }
653
+ if (mode === 'dom') {
654
+ const result = (0, dom_template_builder_js_1.compileDomTemplate)(templateSource.source, templateSource.placeholders, config.resourcePath, tagName, templateStrings, templateSource.diagnostics);
655
+ result.helpers.forEach(helper => helperKinds.add(helper));
656
+ magic.overwrite(node.start, node.end, result.code);
657
+ replacements.set(`${node.start}:${node.end}`, result.code);
661
658
  mutated = true;
659
+ inlineTags.add(tagName);
662
660
  return;
663
661
  }
664
662
  /* c8 ignore next */
@@ -666,12 +664,22 @@ const transformSource = (source, config, options) => {
666
664
  // Modes are validated during option parsing; this fallback guards future extensions.
667
665
  throw new Error(`[jsx-loader] Transformation mode "${mode}" not implemented yet for tag "${tagName}".`);
668
666
  });
667
+ if ((0, rewrite_imports_without_tags_js_1.rewriteImportsWithoutTags)(ast.program, magic, inlineTags, source)) {
668
+ mutated = true;
669
+ }
669
670
  const helperSource = Array.from(helperKinds)
670
671
  .map(kind => HELPER_SNIPPETS[kind])
671
672
  .filter(Boolean)
672
673
  .join('\n');
673
674
  if (helperSource) {
674
- magic.append(`\n${helperSource}`);
675
+ const helperBlock = `${helperSource.trimEnd()}\n\n`;
676
+ const shebangIndex = source.startsWith('#!') ? source.indexOf('\n') : -1;
677
+ if (shebangIndex >= 0) {
678
+ magic.appendLeft(shebangIndex + 1, helperBlock);
679
+ }
680
+ else {
681
+ magic.prepend(helperBlock);
682
+ }
675
683
  mutated = true;
676
684
  }
677
685
  const code = mutated ? magic.toString() : source;
@@ -692,6 +700,8 @@ function jsxLoader(input) {
692
700
  const callback = this.async();
693
701
  try {
694
702
  const options = this.getOptions?.() ?? {};
703
+ const warn = this.emitWarning?.bind(this);
704
+ const webTarget = isWebTarget(this.target);
695
705
  const explicitTags = Array.isArray(options.tags)
696
706
  ? options.tags.filter((value) => typeof value === 'string' && value.length > 0)
697
707
  : null;
@@ -705,22 +715,36 @@ function jsxLoader(input) {
705
715
  const configuredTagModes = options.tagModes && typeof options.tagModes === 'object'
706
716
  ? options.tagModes
707
717
  : undefined;
718
+ const userSpecifiedMode = (0, modes_js_1.parseLoaderMode)(options.mode);
719
+ const defaultMode = userSpecifiedMode ?? modes_js_1.DEFAULT_MODE;
720
+ const userConfiguredTags = new Set();
708
721
  if (configuredTagModes) {
709
722
  Object.entries(configuredTagModes).forEach(([tagName, mode]) => {
710
- const parsed = parseLoaderMode(mode);
723
+ const parsed = (0, modes_js_1.parseLoaderMode)(mode);
711
724
  if (!parsed || typeof tagName !== 'string' || !tagName.length) {
712
725
  return;
713
726
  }
714
727
  tagModes.set(tagName, parsed);
728
+ userConfiguredTags.add(tagName);
715
729
  });
716
730
  }
717
- const defaultMode = parseLoaderMode(options.mode) ?? DEFAULT_MODE;
718
731
  const tags = Array.from(new Set([...tagList, ...tagModes.keys()]));
719
732
  tags.forEach(tagName => {
720
733
  if (!tagModes.has(tagName)) {
721
734
  tagModes.set(tagName, defaultMode);
722
735
  }
723
736
  });
737
+ /**
738
+ * If targeting the web and runtime mode is only implied (not explicitly requested),
739
+ * keep the runtime output but surface a warning so users can opt into react mode when
740
+ * bundling for the browser.
741
+ */
742
+ if (webTarget && userSpecifiedMode === null) {
743
+ const hasImplicitRuntime = tags.some(tagName => tagModes.get(tagName) === 'runtime' && !userConfiguredTags.has(tagName));
744
+ if (hasImplicitRuntime) {
745
+ warn?.(new Error('[jsx-loader] Web target detected while defaulting to runtime mode; the shipped parser expects a Node-like environment. Set mode: "react" (or configure per-tag) when bundling client code, or provide a browser-safe runtime parser if you intentionally need runtime output.'));
746
+ }
747
+ }
724
748
  const source = typeof input === 'string' ? input : input.toString('utf8');
725
749
  const enableSourceMap = options.sourceMap === true;
726
750
  const { code, map } = transformSource(source, {
@@ -1,11 +1,13 @@
1
1
  import { type SourceMap } from 'magic-string';
2
+ import { type LoaderMode } from './modes.cjs';
2
3
  type LoaderCallback = (error: Error | null, content?: string, map?: SourceMap | null) => void;
3
4
  type LoaderContext<TOptions> = {
4
5
  resourcePath: string;
6
+ target?: string;
7
+ emitWarning?: (warning: Error | string) => void;
5
8
  async(): LoaderCallback;
6
9
  getOptions?: () => Partial<TOptions>;
7
10
  };
8
- type LoaderMode = 'runtime' | 'react';
9
11
  type LoaderOptions = {
10
12
  /**
11
13
  * Name of the tagged template function. Defaults to `jsx`.
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseLoaderMode = exports.DEFAULT_MODE = void 0;
4
+ exports.DEFAULT_MODE = 'runtime';
5
+ const parseLoaderMode = (value) => {
6
+ if (typeof value !== 'string')
7
+ return null;
8
+ switch (value) {
9
+ case 'runtime':
10
+ case 'react':
11
+ case 'dom':
12
+ return value;
13
+ default:
14
+ return null;
15
+ }
16
+ };
17
+ exports.parseLoaderMode = parseLoaderMode;
@@ -0,0 +1,3 @@
1
+ export type LoaderMode = 'runtime' | 'react' | 'dom';
2
+ export declare const DEFAULT_MODE: LoaderMode;
3
+ export declare const parseLoaderMode: (value: unknown) => LoaderMode | null;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildTemplate = exports.ensureBinding = exports.sanitizeIdentifier = exports.evaluateExpression = exports.collectPlaceholderNames = exports.normalizeJsxTextSegments = exports.walkAst = exports.getIdentifierName = exports.extractRootNode = exports.parserOptions = exports.formatParserError = exports.placeholderPattern = exports.PLACEHOLDER_PREFIX = exports.formatTaggedTemplateParserError = void 0;
4
+ const normalize_text_js_1 = require("../shared/normalize-text.cjs");
4
5
  var template_diagnostics_js_1 = require("../internal/template-diagnostics.cjs");
5
6
  Object.defineProperty(exports, "formatTaggedTemplateParserError", { enumerable: true, get: function () { return template_diagnostics_js_1.formatTaggedTemplateParserError; } });
6
7
  const OPEN_TAG_RE = /<\s*$/;
@@ -78,19 +79,8 @@ const walkAst = (node, visitor) => {
78
79
  };
79
80
  exports.walkAst = walkAst;
80
81
  const normalizeJsxTextSegments = (value, placeholders) => {
81
- const collapsed = value.replace(/\r/g, '').replace(/\n\s+/g, ' ');
82
- const leadingWhitespace = value.match(/^\s*/)?.[0] ?? '';
83
- const trailingWhitespace = value.match(/\s*$/)?.[0] ?? '';
84
- const trimStart = /\n/.test(leadingWhitespace);
85
- const trimEnd = /\n/.test(trailingWhitespace);
86
- let normalized = collapsed;
87
- if (trimStart) {
88
- normalized = normalized.replace(/^\s+/, '');
89
- }
90
- if (trimEnd) {
91
- normalized = normalized.replace(/\s+$/, '');
92
- }
93
- if (normalized.length === 0 || normalized.trim().length === 0) {
82
+ const normalized = (0, normalize_text_js_1.normalizeJsxText)(value);
83
+ if (!normalized) {
94
84
  return [];
95
85
  }
96
86
  const segments = [];
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeJsxText = void 0;
4
+ const normalizeJsxText = (value) => {
5
+ const collapsed = value.replace(/\r/g, '').replace(/\n\s+/g, ' ');
6
+ const leadingWhitespace = value.match(/^\s*/)?.[0] ?? '';
7
+ const trailingWhitespace = value.match(/\s*$/)?.[0] ?? '';
8
+ const trimStart = /\n/.test(leadingWhitespace);
9
+ const trimEnd = /\n/.test(trailingWhitespace);
10
+ let normalized = collapsed;
11
+ if (trimStart) {
12
+ normalized = normalized.replace(/^\s+/, '');
13
+ }
14
+ if (trimEnd) {
15
+ normalized = normalized.replace(/\s+$/, '');
16
+ }
17
+ if (normalized.length === 0 || normalized.trim().length === 0) {
18
+ return null;
19
+ }
20
+ return normalized;
21
+ };
22
+ exports.normalizeJsxText = normalizeJsxText;
@@ -0,0 +1 @@
1
+ export declare const normalizeJsxText: (value: string) => string | null;
@@ -1,8 +1,8 @@
1
- import {parseSync}from'oxc-parser';import {find,svg,html}from'property-information';var T=null,$=e=>{T=e;},oe=e=>{T?.warnLowercaseEventProp?.(e);},se=e=>{T?.ensureValidDangerouslySetInnerHTML?.(e);},P=e=>{let{getIdentifierName:t,evaluateExpressionWithNamespace:n}=e;return (r,o,s)=>{let i={},p=(a,c)=>{a==="dangerouslySetInnerHTML"&&se(c),i[a]=c;};return r.forEach(a=>{if(a.type==="JSXSpreadAttribute"){let l=n(a.argument,o,s);l&&typeof l=="object"&&!Array.isArray(l)&&Object.assign(i,l);return}let c=t(a.name);if(oe(c),!a.value){p(c,true);return}if(a.value.type==="Literal"){p(c,a.value.value);return}if(a.value.type==="JSXExpressionContainer"){if(a.value.expression.type==="JSXEmptyExpression")return;p(c,n(a.value.expression,o,s));}}),i}};var L=null,O=e=>{L=e;},j="Capture",I=e=>e.endsWith(j)?{eventName:e.slice(0,-j.length),capture:true}:{eventName:e,capture:false},_=e=>{if(!e.startsWith("on"))return null;if(e.startsWith("on:")){let r=e.slice(3);if(!r)return null;let o=I(r);return o.eventName?o:null}let t=e.slice(2);if(!t)return null;let n=I(t);return n.eventName?{eventName:n.eventName.toLowerCase(),capture:n.capture}:null},H=e=>!e||typeof e!="object"?false:"handleEvent"in e&&typeof e.handleEvent=="function",ae=e=>{if(!e||typeof e!="object"||!("handler"in e))return false;let t=e.handler;return typeof t=="function"?true:H(t)},ie=(e,t)=>{L?.onInvalidHandler?.(e,t);},F=(e,t)=>{if(typeof t=="function"||H(t))return {listener:t};if(!ae(t))return ie(e,t),null;let n=t,r=n.options?{...n.options}:void 0,o=(s,i)=>{i!=null&&(r||(r={}),r[s]=i);};return o("capture",n.capture),o("once",n.once),o("passive",n.passive),o("signal",n.signal??void 0),{listener:n.handler,options:r}};var pe="@knighted/jsx",B=e=>`${pe}: ${e}`,J=()=>typeof process<"u"&&process.env?.KNIGHTED_JSX_DEBUG==="1",C=e=>{if(e===null)return "null";if(e===void 0)return "undefined";if(typeof e=="function")return e.name?`function ${e.name}`:"function";if(Array.isArray(e))return "array";if(typeof e=="object"){let t=e.constructor;return t&&typeof t.name=="string"&&t.name&&t.name!=="Object"?`${t.name} instance`:"object"}return typeof e},b=e=>new Error(B(e)),W=(e,t=false)=>{!t&&!J()||typeof console<"u"&&typeof console.warn=="function"&&console.warn(B(e));};var ce=e=>e>="a"&&e<="z",S="env",A=()=>S==="always"||S==="env"&&J(),le=()=>S==="always",me={warnLowercaseEventProp(e){if(!A()||!e.startsWith("on")||e.startsWith("on:")||e.length<3)return;let t=e[2]??"";if(!ce(t))return;let n=`${e.slice(0,2)}${t.toUpperCase()}${e.slice(3)}`;W(`Use camelCase DOM event props when targeting runtime jsx templates. Received "${e}"; did you mean "${n}"?`,le());},ensureValidDangerouslySetInnerHTML(e){if(!A())return;if(!e||typeof e!="object"||Array.isArray(e))throw b("dangerouslySetInnerHTML expects an object with a string __html field.");let t=e.__html;if(typeof t!="string")throw b(`dangerouslySetInnerHTML.__html must be a string but received ${C(t)}.`)}},ue={onInvalidHandler(e,t){if(A())throw b(`The "${e}" prop expects a function, EventListenerObject, or descriptor ({ handler }) but received ${C(t)}.`)}},V=e=>{S=e?.mode,$(me),O(ue);};var de="oxc-parser",ge=e=>{let t=e.raw??e,n=t[0]??"",r=[];for(let o=0;o<t.length-1;o++){let s="${expr#"+o+"}",i=n.length;n+=s;let p=n.length;r.push({index:o,templateStart:i,templateEnd:p,label:s}),n+=t[o+1]??"";}return {source:n,spans:r}},fe=(e,t)=>{let n=new Map;return t.forEach(r=>{n.set(r.index,r);}),e.expressionRanges.map(r=>{let o=n.get(r.index);if(!o)return null;let s=Math.max(0,r.sourceEnd-r.sourceStart),i=Math.max(0,o.templateEnd-o.templateStart);return {sourceStart:r.sourceStart,sourceEnd:r.sourceEnd,templateStart:o.templateStart,templateEnd:o.templateEnd,delta:i-s}}).filter(r=>!!r).sort((r,o)=>r.sourceStart-o.sourceStart)},xe=(e,t,n)=>{if(!Number.isFinite(e)||e<=0)return 0;let r=0;for(let s of t){if(e<s.sourceStart)break;if(e<s.sourceEnd){let i=Math.max(0,e-s.sourceStart),p=Math.max(0,s.templateEnd-s.templateStart);if(p===0)return s.templateStart;let a=Math.min(i,Math.max(0,p-1));return s.templateStart+a}r+=s.delta;}let o=e+r;return o<=0?0:o>=n?n:o},U=(e,t)=>{let n=Math.max(0,Math.min(t,e.length)),r=1,o=1;for(let s=0;s<n;s++){if(e.charCodeAt(s)===10){r++,o=1;continue}o++;}return {line:r,column:o}},ye=e=>{let t=[],n=0;return e.forEach((r,o)=>{t.push(n),n+=r.length,o<e.length-1&&(n+=1);}),t},Ee=(e,t,n,r,o,s,i)=>{let p=n+t.length,a=Math.max(r,n),c=Math.min(o,p);if(c>a){let l=Math.max(0,a-n),u=Math.max(1,c-a);return " ".repeat(l)+"^".repeat(u)}if(t.length===0&&e>=s&&e<=i)return "^";if(e===s){let l=Math.max(0,r-n);return " ".repeat(Math.min(l,t.length))+"^"}return ""},he=(e,t,n,r,o)=>{if(!e.length)return "";let s=e.split(`
2
- `),i=ye(s),p=Math.max(1,r-1),a=Math.min(s.length,o+1),c=String(a).length,l=[];for(let u=p;u<=a;u++){let d=s[u-1]??"",m=String(u).padStart(c," ");l.push(`${m} | ${d}`);let g=Ee(u,d,i[u-1]??0,t,n,r,o);g&&l.push(`${" ".repeat(c)} | ${g}`);}return l.join(`
3
- `)},k=(e,t,n,r,o)=>{let s=de,i=`[${s}] ${r.message}`,p=r.labels?.[0];if(!p)return i;let{source:a,spans:c}=ge(t),l=fe(n,c),u=y=>xe(typeof y=="number"?y:0,l,a.length),d=u(p.start),m=u(p.end);m<=d&&(m=Math.min(a.length,d+1));let g=U(a,d),x=U(a,Math.max(d,m-1)),h=he(a,d,m,g.line,x.line),f=`[${s}] ${r.message}`;return f+=`
4
- --> ${e} template:${g.line}:${g.column}`,p.message&&(f+=`
5
- ${p.message}`),h&&(f+=`
1
+ import {parseSync}from'oxc-parser';import {find,svg,html}from'property-information';var w=null,$=e=>{w=e;},se=e=>{w?.warnLowercaseEventProp?.(e);},ae=e=>{w?.ensureValidDangerouslySetInnerHTML?.(e);},P=e=>{let{getIdentifierName:t,evaluateExpressionWithNamespace:n}=e;return (r,o,s)=>{let a={},c=(i,p)=>{i==="dangerouslySetInnerHTML"&&ae(p),a[i]=p;};return r.forEach(i=>{if(i.type==="JSXSpreadAttribute"){let l=n(i.argument,o,s);l&&typeof l=="object"&&!Array.isArray(l)&&Object.assign(a,l);return}let p=t(i.name);if(se(p),!i.value){c(p,true);return}if(i.value.type==="Literal"){c(p,i.value.value);return}if(i.value.type==="JSXExpressionContainer"){if(i.value.expression.type==="JSXEmptyExpression")return;c(p,n(i.value.expression,o,s));}}),a}};var L=null,O=e=>{L=e;},j="Capture",I=e=>e.endsWith(j)?{eventName:e.slice(0,-j.length),capture:true}:{eventName:e,capture:false},_=e=>{if(!e.startsWith("on"))return null;if(e.startsWith("on:")){let r=e.slice(3);if(!r)return null;let o=I(r);return o.eventName?o:null}let t=e.slice(2);if(!t)return null;let n=I(t);return n.eventName?{eventName:n.eventName.toLowerCase(),capture:n.capture}:null},H=e=>!e||typeof e!="object"?false:"handleEvent"in e&&typeof e.handleEvent=="function",ie=e=>{if(!e||typeof e!="object"||!("handler"in e))return false;let t=e.handler;return typeof t=="function"?true:H(t)},pe=(e,t)=>{L?.onInvalidHandler?.(e,t);},F=(e,t)=>{if(typeof t=="function"||H(t))return {listener:t};if(!ie(t))return pe(e,t),null;let n=t,r=n.options?{...n.options}:void 0,o=(s,a)=>{a!=null&&(r||(r={}),r[s]=a);};return o("capture",n.capture),o("once",n.once),o("passive",n.passive),o("signal",n.signal??void 0),{listener:n.handler,options:r}};var ce="@knighted/jsx",B=e=>`${ce}: ${e}`,J=()=>typeof process<"u"&&process.env?.KNIGHTED_JSX_DEBUG==="1",C=e=>{if(e===null)return "null";if(e===void 0)return "undefined";if(typeof e=="function")return e.name?`function ${e.name}`:"function";if(Array.isArray(e))return "array";if(typeof e=="object"){let t=e.constructor;return t&&typeof t.name=="string"&&t.name&&t.name!=="Object"?`${t.name} instance`:"object"}return typeof e},b=e=>new Error(B(e)),W=(e,t=false)=>{!t&&!J()||typeof console<"u"&&typeof console.warn=="function"&&console.warn(B(e));};var le=e=>e>="a"&&e<="z",S="env",A=()=>S==="always"||S==="env"&&J(),me=()=>S==="always",ue={warnLowercaseEventProp(e){if(!A()||!e.startsWith("on")||e.startsWith("on:")||e.length<3)return;let t=e[2]??"";if(!le(t))return;let n=`${e.slice(0,2)}${t.toUpperCase()}${e.slice(3)}`;W(`Use camelCase DOM event props when targeting runtime jsx templates. Received "${e}"; did you mean "${n}"?`,me());},ensureValidDangerouslySetInnerHTML(e){if(!A())return;if(!e||typeof e!="object"||Array.isArray(e))throw b("dangerouslySetInnerHTML expects an object with a string __html field.");let t=e.__html;if(typeof t!="string")throw b(`dangerouslySetInnerHTML.__html must be a string but received ${C(t)}.`)}},de={onInvalidHandler(e,t){if(A())throw b(`The "${e}" prop expects a function, EventListenerObject, or descriptor ({ handler }) but received ${C(t)}.`)}},V=e=>{S=e?.mode,$(ue),O(de);};var z=e=>{let t=e.replace(/\r/g,"").replace(/\n\s+/g," "),n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",o=/\n/.test(n),s=/\n/.test(r),a=t;return o&&(a=a.replace(/^\s+/,"")),s&&(a=a.replace(/\s+$/,"")),a.length===0||a.trim().length===0?null:a};var ge="oxc-parser",fe=e=>{let t=e.raw??e,n=t[0]??"",r=[];for(let o=0;o<t.length-1;o++){let s="${expr#"+o+"}",a=n.length;n+=s;let c=n.length;r.push({index:o,templateStart:a,templateEnd:c,label:s}),n+=t[o+1]??"";}return {source:n,spans:r}},xe=(e,t)=>{let n=new Map;return t.forEach(r=>{n.set(r.index,r);}),e.expressionRanges.map(r=>{let o=n.get(r.index);if(!o)return null;let s=Math.max(0,r.sourceEnd-r.sourceStart),a=Math.max(0,o.templateEnd-o.templateStart);return {sourceStart:r.sourceStart,sourceEnd:r.sourceEnd,templateStart:o.templateStart,templateEnd:o.templateEnd,delta:a-s}}).filter(r=>!!r).sort((r,o)=>r.sourceStart-o.sourceStart)},ye=(e,t,n)=>{if(!Number.isFinite(e)||e<=0)return 0;let r=0;for(let s of t){if(e<s.sourceStart)break;if(e<s.sourceEnd){let a=Math.max(0,e-s.sourceStart),c=Math.max(0,s.templateEnd-s.templateStart);if(c===0)return s.templateStart;let i=Math.min(a,Math.max(0,c-1));return s.templateStart+i}r+=s.delta;}let o=e+r;return o<=0?0:o>=n?n:o},U=(e,t)=>{let n=Math.max(0,Math.min(t,e.length)),r=1,o=1;for(let s=0;s<n;s++){if(e.charCodeAt(s)===10){r++,o=1;continue}o++;}return {line:r,column:o}},Ee=e=>{let t=[],n=0;return e.forEach((r,o)=>{t.push(n),n+=r.length,o<e.length-1&&(n+=1);}),t},he=(e,t,n,r,o,s,a)=>{let c=n+t.length,i=Math.max(r,n),p=Math.min(o,c);if(p>i){let l=Math.max(0,i-n),u=Math.max(1,p-i);return " ".repeat(l)+"^".repeat(u)}if(t.length===0&&e>=s&&e<=a)return "^";if(e===s){let l=Math.max(0,r-n);return " ".repeat(Math.min(l,t.length))+"^"}return ""},be=(e,t,n,r,o)=>{if(!e.length)return "";let s=e.split(`
2
+ `),a=Ee(s),c=Math.max(1,r-1),i=Math.min(s.length,o+1),p=String(i).length,l=[];for(let u=c;u<=i;u++){let d=s[u-1]??"",m=String(u).padStart(p," ");l.push(`${m} | ${d}`);let g=he(u,d,a[u-1]??0,t,n,r,o);g&&l.push(`${" ".repeat(p)} | ${g}`);}return l.join(`
3
+ `)},k=(e,t,n,r,o)=>{let s=ge,a=`[${s}] ${r.message}`,c=r.labels?.[0];if(!c)return a;let{source:i,spans:p}=fe(t),l=xe(n,p),u=y=>ye(typeof y=="number"?y:0,l,i.length),d=u(c.start),m=u(c.end);m<=d&&(m=Math.min(i.length,d+1));let g=U(i,d),x=U(i,Math.max(d,m-1)),h=be(i,d,m,g.line,x.line),f=`[${s}] ${r.message}`;return f+=`
4
+ --> ${e} template:${g.line}:${g.column}`,c.message&&(f+=`
5
+ ${c.message}`),h&&(f+=`
6
6
  ${h}`),r.helpMessage&&(f+=`
7
- ${r.helpMessage}`),f};var be=/<\s*$/,Se=/<\/\s*$/,K="__KX_EXPR__",z=new RegExp(`${K}\\d+_\\d+__`,"g"),we=0;var G={lang:"jsx",sourceType:"module",range:true,preserveParens:true},Z=e=>{for(let t of e.body)if(t.type==="ExpressionStatement"){let n=t.expression;if(n.type==="JSXElement"||n.type==="JSXFragment")return n}throw new Error("The jsx template must contain a single JSX element or fragment.")},w=e=>{switch(e.type){case "JSXIdentifier":return e.name;case "JSXNamespacedName":return `${e.namespace.name}:${e.name.name}`;case "JSXMemberExpression":return `${w(e.object)}.${e.property.name}`;default:return ""}},v=(e,t)=>{if(!e||typeof e!="object")return;let n=e;typeof n.type=="string"&&(t(n),Object.values(n).forEach(r=>{if(r){if(Array.isArray(r)){r.forEach(o=>v(o,t));return}typeof r=="object"&&v(r,t);}}));},q=(e,t)=>{let n=e.replace(/\r/g,"").replace(/\n\s+/g," "),r=e.match(/^\s*/)?.[0]??"",o=e.match(/\s*$/)?.[0]??"",s=/\n/.test(r),i=/\n/.test(o),p=n;if(s&&(p=p.replace(/^\s+/,"")),i&&(p=p.replace(/\s+$/,"")),p.length===0||p.trim().length===0)return [];let a=[];z.lastIndex=0;let c=0,l;for(;l=z.exec(p);){let d=l.index,m=p.slice(c,d);m&&a.push(m);let g=l[0];t.has(g)?a.push(t.get(g)):a.push(g),c=d+g.length;}let u=p.slice(c);return u&&a.push(u),a},Te=(e,t)=>{let n=new Set;return v(e,r=>{r.type==="Identifier"&&t.placeholders.has(r.name)&&n.add(r.name);}),Array.from(n)},Q=(e,t,n)=>{if(e.type==="JSXElement"||e.type==="JSXFragment")return n(e);if(!("range"in e)||!e.range)throw new Error("Unable to evaluate expression: missing source range information.");let[r,o]=e.range,s=t.source.slice(r,o),i=Te(e,t);try{let p=new Function(...i,`"use strict"; return (${s});`),a=i.map(c=>t.placeholders.get(c));return p(...a)}catch(p){throw new Error(`Failed to evaluate expression ${s}: ${p.message}`)}},Je=e=>{let t=e.replace(/[^a-zA-Z0-9_$]/g,"");return t?/[A-Za-z_$]/.test(t[0])?t:`Component${t}`:"Component"},Ce=(e,t,n)=>{let r=n.get(e);if(r)return r;let o=e.displayName||e.name||`Component${t.length}`,s=Je(o??""),i=s,p=1;for(;t.some(c=>c.name===i);)i=`${s}${p++}`;let a={name:i,value:e};return t.push(a),n.set(e,a),a},Y=(e,t)=>{let n=e.raw??e,r=new Map,o=[],s=new Map,i=n[0]??"",p=we++,a=0,c=[];for(let l=0;l<t.length;l++){let u=n[l]??"",d=n[l+1]??"",m=t[l],g=be.test(u)||Se.test(u),x;if(g&&typeof m=="function")x=Ce(m,o,s).name;else if(g&&typeof m=="string")x=m;else {let y=`${K}${p}_${a++}__`;r.set(y,m),x=y;}let h=i.length;i+=x;let f=i.length;c.push({index:l,sourceStart:h,sourceEnd:f}),i+=d;}return {source:i,placeholders:r,bindings:o,diagnostics:{expressionRanges:c}}};var Ne=()=>{if(typeof document>"u"||typeof document.createElement!="function")throw new Error("The jsx template tag requires a DOM-like environment (document missing).")},Xe=e=>typeof Node>"u"?false:e instanceof Node||e instanceof DocumentFragment,Re=e=>!e||typeof e=="string"?false:typeof e[Symbol.iterator]=="function",te=e=>!e||typeof e!="object"&&typeof e!="function"?false:typeof e.then=="function",Me={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},ne=e=>{if(!(!e||e==="html"||e==="svg"))return Me[e]},$e=e=>e==="svg"?svg:html,D=(e,t,n)=>{let r=ne(t.space),o=String(n);if(r){e.setAttributeNS(r,t.attribute,o);return}e.setAttribute(t.attribute,o);},ee=(e,t)=>{let n=ne(t.space);if(n){e.removeAttributeNS(n,t.attribute);return}e.removeAttribute(t.attribute);},N=(e,t)=>Array.isArray(e)?e.filter(Boolean).join(t):e,Pe=(e,t,n)=>t==="svg"||!n.property||n.property.includes(":")?false:n.property in e,je=(e,t,n,r)=>{if(n==null)return;if(t==="dangerouslySetInnerHTML"&&typeof n=="object"&&n&&"__html"in n){e.innerHTML=String(n.__html??"");return}if(t==="ref"){if(typeof n=="function"){n(e);return}if(n&&typeof n=="object"){n.current=e;return}}if(t==="style"&&typeof n=="object"&&n!==null){let c=n,l=e.style;if(!l)return;let u=l;Object.entries(c).forEach(([d,m])=>{if(m!=null){if(d.startsWith("--")){l.setProperty(d,String(m));return}u[d]=m;}});return}let o=_(t);if(o){let c=F(t,n);if(c){let l=c.options?{...c.options}:void 0;o.capture&&(l?l.capture=true:l={capture:true}),e.addEventListener(o.eventName,c.listener,l);return}}let s=find($e(r),t),i=e,p=Pe(e,r,s);if(s.mustUseProperty){let c=s.boolean?!!n:n;i[s.property]=c;return}if(s.boolean){let c=!!n;p&&(i[s.property]=c),c?D(e,s,""):ee(e,s);return}let a=n;if(s.spaceSeparated?a=N(n," "):s.commaSeparated?a=N(n,","):s.commaOrSpaceSeparated&&(a=N(n," ")),s.booleanish&&typeof a=="boolean"&&(a=a?"true":"false"),s.overloadedBoolean){if(a===false){ee(e,s);return}if(a===true){D(e,s,"");return}}if(p){i[s.property]=a;return}a!==false&&D(e,s,a);},E=(e,t)=>{if(t!=null&&typeof t!="boolean"){if(te(t))throw new Error("Async values are not supported inside jsx template results.");if(Array.isArray(t)){t.forEach(n=>E(e,n));return}if(Re(t)){for(let n of t)E(e,n);return}if(Xe(t)){e.appendChild(t);return}e.appendChild(document.createTextNode(String(t)));}},X=(e,t,n)=>Q(e,t,r=>M(r,t,n)),re=P({getIdentifierName:w,evaluateExpressionWithNamespace:X}),Ie=(e,t,n,r)=>{let o=re(t,n,r);Object.entries(o).forEach(([s,i])=>{if(s!=="key"){if(s==="children"){E(e,i);return}je(e,s,i,r);}});},R=(e,t,n)=>{let r=[];return e.forEach(o=>{switch(o.type){case "JSXText":{q(o.value,t.placeholders).forEach(i=>{r.push(i);});break}case "JSXExpressionContainer":{if(o.expression.type==="JSXEmptyExpression")break;r.push(X(o.expression,t,n));break}case "JSXSpreadChild":{let s=X(o.expression,t,n);s!=null&&r.push(s);break}case "JSXElement":case "JSXFragment":{r.push(M(o,t,n));break}}}),r},Le=(e,t,n,r)=>{let o=re(e.openingElement.attributes,t,r),s=R(e.children,t,r);s.length===1?o.children=s[0]:s.length>1&&(o.children=s);let i=n(o);if(te(i))throw new Error("Async jsx components are not supported.");return i},Oe=(e,t,n)=>{let r=e.openingElement,o=w(r.name),s=t.components.get(o);if(s)return Le(e,t,s,n);if(/[A-Z]/.test(o[0]??""))throw new Error(`Unknown component "${o}". Did you interpolate it with the template literal?`);let i=o==="svg"?"svg":n,p=o==="foreignObject"?null:i,a=i==="svg"?document.createElementNS("http://www.w3.org/2000/svg",o):document.createElement(o);return Ie(a,r.attributes,t,i),R(e.children,t,p).forEach(l=>E(a,l)),a},M=(e,t,n)=>{if(e.type==="JSXFragment"){let r=document.createDocumentFragment();return R(e.children,t,n).forEach(s=>E(r,s)),r}return Oe(e,t,n)},_e=(e,...t)=>{Ne();let n=Y(e,t),r=parseSync("inline.jsx",n.source,G);if(r.errors.length>0)throw new Error(k("jsx",e,n.diagnostics,r.errors[0]));let o=Z(r.program),s={source:n.source,placeholders:n.placeholders,components:new Map(n.bindings.map(i=>[i.name,i.value]))};return M(o,s,null)};V({mode:"always"});
8
- export{_e as jsx};
7
+ ${r.helpMessage}`),f};var Se=/<\s*$/,Te=/<\/\s*$/,G="__KX_EXPR__",K=new RegExp(`${G}\\d+_\\d+__`,"g"),we=0;var Z={lang:"jsx",sourceType:"module",range:true,preserveParens:true},q=e=>{for(let t of e.body)if(t.type==="ExpressionStatement"){let n=t.expression;if(n.type==="JSXElement"||n.type==="JSXFragment")return n}throw new Error("The jsx template must contain a single JSX element or fragment.")},T=e=>{switch(e.type){case "JSXIdentifier":return e.name;case "JSXNamespacedName":return `${e.namespace.name}:${e.name.name}`;case "JSXMemberExpression":return `${T(e.object)}.${e.property.name}`;default:return ""}},v=(e,t)=>{if(!e||typeof e!="object")return;let n=e;typeof n.type=="string"&&(t(n),Object.values(n).forEach(r=>{if(r){if(Array.isArray(r)){r.forEach(o=>v(o,t));return}typeof r=="object"&&v(r,t);}}));},Q=(e,t)=>{let n=z(e);if(!n)return [];let r=[];K.lastIndex=0;let o=0,s;for(;s=K.exec(n);){let c=s.index,i=n.slice(o,c);i&&r.push(i);let p=s[0];t.has(p)?r.push(t.get(p)):r.push(p),o=c+p.length;}let a=n.slice(o);return a&&r.push(a),r},Je=(e,t)=>{let n=new Set;return v(e,r=>{r.type==="Identifier"&&t.placeholders.has(r.name)&&n.add(r.name);}),Array.from(n)},Y=(e,t,n)=>{if(e.type==="JSXElement"||e.type==="JSXFragment")return n(e);if(!("range"in e)||!e.range)throw new Error("Unable to evaluate expression: missing source range information.");let[r,o]=e.range,s=t.source.slice(r,o),a=Je(e,t);try{let c=new Function(...a,`"use strict"; return (${s});`),i=a.map(p=>t.placeholders.get(p));return c(...i)}catch(c){throw new Error(`Failed to evaluate expression ${s}: ${c.message}`)}},Ce=e=>{let t=e.replace(/[^a-zA-Z0-9_$]/g,"");return t?/[A-Za-z_$]/.test(t[0])?t:`Component${t}`:"Component"},Ae=(e,t,n)=>{let r=n.get(e);if(r)return r;let o=e.displayName||e.name||`Component${t.length}`,s=Ce(o??""),a=s,c=1;for(;t.some(p=>p.name===a);)a=`${s}${c++}`;let i={name:a,value:e};return t.push(i),n.set(e,i),i},ee=(e,t)=>{let n=e.raw??e,r=new Map,o=[],s=new Map,a=n[0]??"",c=we++,i=0,p=[];for(let l=0;l<t.length;l++){let u=n[l]??"",d=n[l+1]??"",m=t[l],g=Se.test(u)||Te.test(u),x;if(g&&typeof m=="function")x=Ae(m,o,s).name;else if(g&&typeof m=="string")x=m;else {let y=`${G}${c}_${i++}__`;r.set(y,m),x=y;}let h=a.length;a+=x;let f=a.length;p.push({index:l,sourceStart:h,sourceEnd:f}),a+=d;}return {source:a,placeholders:r,bindings:o,diagnostics:{expressionRanges:p}}};var Xe=()=>{if(typeof document>"u"||typeof document.createElement!="function")throw new Error("The jsx template tag requires a DOM-like environment (document missing).")},Re=e=>typeof Node>"u"?false:e instanceof Node||e instanceof DocumentFragment,Me=e=>!e||typeof e=="string"?false:typeof e[Symbol.iterator]=="function",ne=e=>!e||typeof e!="object"&&typeof e!="function"?false:typeof e.then=="function",$e={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},re=e=>{if(!(!e||e==="html"||e==="svg"))return $e[e]},Pe=e=>e==="svg"?svg:html,D=(e,t,n)=>{let r=re(t.space),o=String(n);if(r){e.setAttributeNS(r,t.attribute,o);return}e.setAttribute(t.attribute,o);},te=(e,t)=>{let n=re(t.space);if(n){e.removeAttributeNS(n,t.attribute);return}e.removeAttribute(t.attribute);},N=(e,t)=>Array.isArray(e)?e.filter(Boolean).join(t):e,je=(e,t,n)=>t==="svg"||!n.property||n.property.includes(":")?false:n.property in e,Ie=(e,t,n,r)=>{if(n==null)return;if(t==="dangerouslySetInnerHTML"&&typeof n=="object"&&n&&"__html"in n){e.innerHTML=String(n.__html??"");return}if(t==="ref"){if(typeof n=="function"){n(e);return}if(n&&typeof n=="object"){n.current=e;return}}if(t==="style"&&typeof n=="object"&&n!==null){let p=n,l=e.style;if(!l)return;let u=l;Object.entries(p).forEach(([d,m])=>{if(m!=null){if(d.startsWith("--")){l.setProperty(d,String(m));return}u[d]=m;}});return}let o=_(t);if(o){let p=F(t,n);if(p){let l=p.options?{...p.options}:void 0;o.capture&&(l?l.capture=true:l={capture:true}),e.addEventListener(o.eventName,p.listener,l);return}}let s=find(Pe(r),t),a=e,c=je(e,r,s);if(s.mustUseProperty){let p=s.boolean?!!n:n;a[s.property]=p;return}if(s.boolean){let p=!!n;c&&(a[s.property]=p),p?D(e,s,""):te(e,s);return}let i=n;if(s.spaceSeparated?i=N(n," "):s.commaSeparated?i=N(n,","):s.commaOrSpaceSeparated&&(i=N(n," ")),s.booleanish&&typeof i=="boolean"&&(i=i?"true":"false"),s.overloadedBoolean){if(i===false){te(e,s);return}if(i===true){D(e,s,"");return}}if(c){a[s.property]=i;return}i!==false&&D(e,s,i);},E=(e,t)=>{if(t!=null&&typeof t!="boolean"){if(ne(t))throw new Error("Async values are not supported inside jsx template results.");if(Array.isArray(t)){t.forEach(n=>E(e,n));return}if(Me(t)){for(let n of t)E(e,n);return}if(Re(t)){e.appendChild(t);return}e.appendChild(document.createTextNode(String(t)));}},X=(e,t,n)=>Y(e,t,r=>M(r,t,n)),oe=P({getIdentifierName:T,evaluateExpressionWithNamespace:X}),Le=(e,t,n,r)=>{let o=oe(t,n,r);Object.entries(o).forEach(([s,a])=>{if(s!=="key"){if(s==="children"){E(e,a);return}Ie(e,s,a,r);}});},R=(e,t,n)=>{let r=[];return e.forEach(o=>{switch(o.type){case "JSXText":{Q(o.value,t.placeholders).forEach(a=>{r.push(a);});break}case "JSXExpressionContainer":{if(o.expression.type==="JSXEmptyExpression")break;r.push(X(o.expression,t,n));break}case "JSXSpreadChild":{let s=X(o.expression,t,n);s!=null&&r.push(s);break}case "JSXElement":case "JSXFragment":{r.push(M(o,t,n));break}}}),r},Oe=(e,t,n,r)=>{let o=oe(e.openingElement.attributes,t,r),s=R(e.children,t,r);s.length===1?o.children=s[0]:s.length>1&&(o.children=s);let a=n(o);if(ne(a))throw new Error("Async jsx components are not supported.");return a},_e=(e,t,n)=>{let r=e.openingElement,o=T(r.name),s=t.components.get(o);if(s)return Oe(e,t,s,n);if(/[A-Z]/.test(o[0]??""))throw new Error(`Unknown component "${o}". Did you interpolate it with the template literal?`);let a=o==="svg"?"svg":n,c=o==="foreignObject"?null:a,i=a==="svg"?document.createElementNS("http://www.w3.org/2000/svg",o):document.createElement(o);return Le(i,r.attributes,t,a),R(e.children,t,c).forEach(l=>E(i,l)),i},M=(e,t,n)=>{if(e.type==="JSXFragment"){let r=document.createDocumentFragment();return R(e.children,t,n).forEach(s=>E(r,s)),r}return _e(e,t,n)},He=(e,...t)=>{Xe();let n=ee(e,t),r=parseSync("inline.jsx",n.source,Z);if(r.errors.length>0)throw new Error(k("jsx",e,n.diagnostics,r.errors[0]));let o=q(r.program),s={source:n.source,placeholders:n.placeholders,components:new Map(n.bindings.map(a=>[a.name,a.value]))};return M(o,s,null)};V({mode:"always"});
8
+ export{He as jsx};
@@ -1,8 +1,8 @@
1
- import {parseSync}from'oxc-parser';import {find,svg,html}from'property-information';var z="oxc-parser",K=e=>{let n=e.raw??e,t=n[0]??"",r=[];for(let o=0;o<n.length-1;o++){let s="${expr#"+o+"}",i=t.length;t+=s;let p=t.length;r.push({index:o,templateStart:i,templateEnd:p,label:s}),t+=n[o+1]??"";}return {source:t,spans:r}},Z=(e,n)=>{let t=new Map;return n.forEach(r=>{t.set(r.index,r);}),e.expressionRanges.map(r=>{let o=t.get(r.index);if(!o)return null;let s=Math.max(0,r.sourceEnd-r.sourceStart),i=Math.max(0,o.templateEnd-o.templateStart);return {sourceStart:r.sourceStart,sourceEnd:r.sourceEnd,templateStart:o.templateStart,templateEnd:o.templateEnd,delta:i-s}}).filter(r=>!!r).sort((r,o)=>r.sourceStart-o.sourceStart)},G=(e,n,t)=>{if(!Number.isFinite(e)||e<=0)return 0;let r=0;for(let s of n){if(e<s.sourceStart)break;if(e<s.sourceEnd){let i=Math.max(0,e-s.sourceStart),p=Math.max(0,s.templateEnd-s.templateStart);if(p===0)return s.templateStart;let a=Math.min(i,Math.max(0,p-1));return s.templateStart+a}r+=s.delta;}let o=e+r;return o<=0?0:o>=t?t:o},N=(e,n)=>{let t=Math.max(0,Math.min(n,e.length)),r=1,o=1;for(let s=0;s<t;s++){if(e.charCodeAt(s)===10){r++,o=1;continue}o++;}return {line:r,column:o}},q=e=>{let n=[],t=0;return e.forEach((r,o)=>{n.push(t),t+=r.length,o<e.length-1&&(t+=1);}),n},Q=(e,n,t,r,o,s,i)=>{let p=t+n.length,a=Math.max(r,t),c=Math.min(o,p);if(c>a){let l=Math.max(0,a-t),u=Math.max(1,c-a);return " ".repeat(l)+"^".repeat(u)}if(n.length===0&&e>=s&&e<=i)return "^";if(e===s){let l=Math.max(0,r-t);return " ".repeat(Math.min(l,n.length))+"^"}return ""},Y=(e,n,t,r,o)=>{if(!e.length)return "";let s=e.split(`
2
- `),i=q(s),p=Math.max(1,r-1),a=Math.min(s.length,o+1),c=String(a).length,l=[];for(let u=p;u<=a;u++){let d=s[u-1]??"",m=String(u).padStart(c," ");l.push(`${m} | ${d}`);let g=Q(u,d,i[u-1]??0,n,t,r,o);g&&l.push(`${" ".repeat(c)} | ${g}`);}return l.join(`
3
- `)},S=(e,n,t,r,o)=>{let s=z,i=`[${s}] ${r.message}`,p=r.labels?.[0];if(!p)return i;let{source:a,spans:c}=K(n),l=Z(t,c),u=y=>G(typeof y=="number"?y:0,l,a.length),d=u(p.start),m=u(p.end);m<=d&&(m=Math.min(a.length,d+1));let g=N(a,d),x=N(a,Math.max(d,m-1)),h=Y(a,d,m,g.line,x.line),f=`[${s}] ${r.message}`;return f+=`
4
- --> ${e} template:${g.line}:${g.column}`,p.message&&(f+=`
5
- ${p.message}`),h&&(f+=`
1
+ import {parseSync}from'oxc-parser';import {find,svg,html}from'property-information';var N=e=>{let n=e.replace(/\r/g,"").replace(/\n\s+/g," "),t=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",o=/\n/.test(t),s=/\n/.test(r),a=n;return o&&(a=a.replace(/^\s+/,"")),s&&(a=a.replace(/\s+$/,"")),a.length===0||a.trim().length===0?null:a};var K="oxc-parser",Z=e=>{let n=e.raw??e,t=n[0]??"",r=[];for(let o=0;o<n.length-1;o++){let s="${expr#"+o+"}",a=t.length;t+=s;let c=t.length;r.push({index:o,templateStart:a,templateEnd:c,label:s}),t+=n[o+1]??"";}return {source:t,spans:r}},G=(e,n)=>{let t=new Map;return n.forEach(r=>{t.set(r.index,r);}),e.expressionRanges.map(r=>{let o=t.get(r.index);if(!o)return null;let s=Math.max(0,r.sourceEnd-r.sourceStart),a=Math.max(0,o.templateEnd-o.templateStart);return {sourceStart:r.sourceStart,sourceEnd:r.sourceEnd,templateStart:o.templateStart,templateEnd:o.templateEnd,delta:a-s}}).filter(r=>!!r).sort((r,o)=>r.sourceStart-o.sourceStart)},q=(e,n,t)=>{if(!Number.isFinite(e)||e<=0)return 0;let r=0;for(let s of n){if(e<s.sourceStart)break;if(e<s.sourceEnd){let a=Math.max(0,e-s.sourceStart),c=Math.max(0,s.templateEnd-s.templateStart);if(c===0)return s.templateStart;let i=Math.min(a,Math.max(0,c-1));return s.templateStart+i}r+=s.delta;}let o=e+r;return o<=0?0:o>=t?t:o},v=(e,n)=>{let t=Math.max(0,Math.min(n,e.length)),r=1,o=1;for(let s=0;s<t;s++){if(e.charCodeAt(s)===10){r++,o=1;continue}o++;}return {line:r,column:o}},Q=e=>{let n=[],t=0;return e.forEach((r,o)=>{n.push(t),t+=r.length,o<e.length-1&&(t+=1);}),n},Y=(e,n,t,r,o,s,a)=>{let c=t+n.length,i=Math.max(r,t),p=Math.min(o,c);if(p>i){let l=Math.max(0,i-t),u=Math.max(1,p-i);return " ".repeat(l)+"^".repeat(u)}if(n.length===0&&e>=s&&e<=a)return "^";if(e===s){let l=Math.max(0,r-t);return " ".repeat(Math.min(l,n.length))+"^"}return ""},ee=(e,n,t,r,o)=>{if(!e.length)return "";let s=e.split(`
2
+ `),a=Q(s),c=Math.max(1,r-1),i=Math.min(s.length,o+1),p=String(i).length,l=[];for(let u=c;u<=i;u++){let d=s[u-1]??"",m=String(u).padStart(p," ");l.push(`${m} | ${d}`);let g=Y(u,d,a[u-1]??0,n,t,r,o);g&&l.push(`${" ".repeat(p)} | ${g}`);}return l.join(`
3
+ `)},S=(e,n,t,r,o)=>{let s=K,a=`[${s}] ${r.message}`,c=r.labels?.[0];if(!c)return a;let{source:i,spans:p}=Z(n),l=G(t,p),u=y=>q(typeof y=="number"?y:0,l,i.length),d=u(c.start),m=u(c.end);m<=d&&(m=Math.min(i.length,d+1));let g=v(i,d),x=v(i,Math.max(d,m-1)),h=ee(i,d,m,g.line,x.line),f=`[${s}] ${r.message}`;return f+=`
4
+ --> ${e} template:${g.line}:${g.column}`,c.message&&(f+=`
5
+ ${c.message}`),h&&(f+=`
6
6
  ${h}`),r.helpMessage&&(f+=`
7
- ${r.helpMessage}`),f};var ee=/<\s*$/,te=/<\/\s*$/,X="__KX_EXPR__",v=new RegExp(`${X}\\d+_\\d+__`,"g"),ne=0;var R={lang:"jsx",sourceType:"module",range:true,preserveParens:true},P=e=>{for(let n of e.body)if(n.type==="ExpressionStatement"){let t=n.expression;if(t.type==="JSXElement"||t.type==="JSXFragment")return t}throw new Error("The jsx template must contain a single JSX element or fragment.")},b=e=>{switch(e.type){case "JSXIdentifier":return e.name;case "JSXNamespacedName":return `${e.namespace.name}:${e.name.name}`;case "JSXMemberExpression":return `${b(e.object)}.${e.property.name}`;default:return ""}},T=(e,n)=>{if(!e||typeof e!="object")return;let t=e;typeof t.type=="string"&&(n(t),Object.values(t).forEach(r=>{if(r){if(Array.isArray(r)){r.forEach(o=>T(o,n));return}typeof r=="object"&&T(r,n);}}));},M=(e,n)=>{let t=e.replace(/\r/g,"").replace(/\n\s+/g," "),r=e.match(/^\s*/)?.[0]??"",o=e.match(/\s*$/)?.[0]??"",s=/\n/.test(r),i=/\n/.test(o),p=t;if(s&&(p=p.replace(/^\s+/,"")),i&&(p=p.replace(/\s+$/,"")),p.length===0||p.trim().length===0)return [];let a=[];v.lastIndex=0;let c=0,l;for(;l=v.exec(p);){let d=l.index,m=p.slice(c,d);m&&a.push(m);let g=l[0];n.has(g)?a.push(n.get(g)):a.push(g),c=d+g.length;}let u=p.slice(c);return u&&a.push(u),a},re=(e,n)=>{let t=new Set;return T(e,r=>{r.type==="Identifier"&&n.placeholders.has(r.name)&&t.add(r.name);}),Array.from(t)},D=(e,n,t)=>{if(e.type==="JSXElement"||e.type==="JSXFragment")return t(e);if(!("range"in e)||!e.range)throw new Error("Unable to evaluate expression: missing source range information.");let[r,o]=e.range,s=n.source.slice(r,o),i=re(e,n);try{let p=new Function(...i,`"use strict"; return (${s});`),a=i.map(c=>n.placeholders.get(c));return p(...a)}catch(p){throw new Error(`Failed to evaluate expression ${s}: ${p.message}`)}},oe=e=>{let n=e.replace(/[^a-zA-Z0-9_$]/g,"");return n?/[A-Za-z_$]/.test(n[0])?n:`Component${n}`:"Component"},se=(e,n,t)=>{let r=t.get(e);if(r)return r;let o=e.displayName||e.name||`Component${n.length}`,s=oe(o??""),i=s,p=1;for(;n.some(c=>c.name===i);)i=`${s}${p++}`;let a={name:i,value:e};return n.push(a),t.set(e,a),a},I=(e,n)=>{let t=e.raw??e,r=new Map,o=[],s=new Map,i=t[0]??"",p=ne++,a=0,c=[];for(let l=0;l<n.length;l++){let u=t[l]??"",d=t[l+1]??"",m=n[l],g=ee.test(u)||te.test(u),x;if(g&&typeof m=="function")x=se(m,o,s).name;else if(g&&typeof m=="string")x=m;else {let y=`${X}${p}_${a++}__`;r.set(y,m),x=y;}let h=i.length;i+=x;let f=i.length;c.push({index:l,sourceStart:h,sourceEnd:f}),i+=d;}return {source:i,placeholders:r,bindings:o,diagnostics:{expressionRanges:c}}};var j=e=>{let{getIdentifierName:n,evaluateExpressionWithNamespace:t}=e;return (r,o,s)=>{let i={},p=(a,c)=>{i[a]=c;};return r.forEach(a=>{if(a.type==="JSXSpreadAttribute"){let l=t(a.argument,o,s);l&&typeof l=="object"&&!Array.isArray(l)&&Object.assign(i,l);return}let c=n(a.name);if(!a.value){p(c,true);return}if(a.value.type==="Literal"){p(c,a.value.value);return}if(a.value.type==="JSXExpressionContainer"){if(a.value.expression.type==="JSXEmptyExpression")return;p(c,t(a.value.expression,o,s));}}),i}};var $="Capture",O=e=>e.endsWith($)?{eventName:e.slice(0,-$.length),capture:true}:{eventName:e,capture:false},F=e=>{if(!e.startsWith("on"))return null;if(e.startsWith("on:")){let r=e.slice(3);if(!r)return null;let o=O(r);return o.eventName?o:null}let n=e.slice(2);if(!n)return null;let t=O(n);return t.eventName?{eventName:t.eventName.toLowerCase(),capture:t.capture}:null},_=e=>!e||typeof e!="object"?false:"handleEvent"in e&&typeof e.handleEvent=="function",ce=e=>{if(!e||typeof e!="object"||!("handler"in e))return false;let n=e.handler;return typeof n=="function"?true:_(n)},H=(e,n)=>{if(typeof n=="function"||_(n))return {listener:n};if(!ce(n))return null;let t=n,r=t.options?{...t.options}:void 0,o=(s,i)=>{i!=null&&(r||(r={}),r[s]=i);};return o("capture",t.capture),o("once",t.once),o("passive",t.passive),o("signal",t.signal??void 0),{listener:t.handler,options:r}};var fe=()=>{if(typeof document>"u"||typeof document.createElement!="function")throw new Error("The jsx template tag requires a DOM-like environment (document missing).")},xe=e=>typeof Node>"u"?false:e instanceof Node||e instanceof DocumentFragment,ye=e=>!e||typeof e=="string"?false:typeof e[Symbol.iterator]=="function",W=e=>!e||typeof e!="object"&&typeof e!="function"?false:typeof e.then=="function",Ee={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},V=e=>{if(!(!e||e==="html"||e==="svg"))return Ee[e]},he=e=>e==="svg"?svg:html,w=(e,n,t)=>{let r=V(n.space),o=String(t);if(r){e.setAttributeNS(r,n.attribute,o);return}e.setAttribute(n.attribute,o);},B=(e,n)=>{let t=V(n.space);if(t){e.removeAttributeNS(t,n.attribute);return}e.removeAttribute(n.attribute);},C=(e,n)=>Array.isArray(e)?e.filter(Boolean).join(n):e,be=(e,n,t)=>n==="svg"||!t.property||t.property.includes(":")?false:t.property in e,Se=(e,n,t,r)=>{if(t==null)return;if(n==="dangerouslySetInnerHTML"&&typeof t=="object"&&t&&"__html"in t){e.innerHTML=String(t.__html??"");return}if(n==="ref"){if(typeof t=="function"){t(e);return}if(t&&typeof t=="object"){t.current=e;return}}if(n==="style"&&typeof t=="object"&&t!==null){let c=t,l=e.style;if(!l)return;let u=l;Object.entries(c).forEach(([d,m])=>{if(m!=null){if(d.startsWith("--")){l.setProperty(d,String(m));return}u[d]=m;}});return}let o=F(n);if(o){let c=H(n,t);if(c){let l=c.options?{...c.options}:void 0;o.capture&&(l?l.capture=true:l={capture:true}),e.addEventListener(o.eventName,c.listener,l);return}}let s=find(he(r),n),i=e,p=be(e,r,s);if(s.mustUseProperty){let c=s.boolean?!!t:t;i[s.property]=c;return}if(s.boolean){let c=!!t;p&&(i[s.property]=c),c?w(e,s,""):B(e,s);return}let a=t;if(s.spaceSeparated?a=C(t," "):s.commaSeparated?a=C(t,","):s.commaOrSpaceSeparated&&(a=C(t," ")),s.booleanish&&typeof a=="boolean"&&(a=a?"true":"false"),s.overloadedBoolean){if(a===false){B(e,s);return}if(a===true){w(e,s,"");return}}if(p){i[s.property]=a;return}a!==false&&w(e,s,a);},E=(e,n)=>{if(n!=null&&typeof n!="boolean"){if(W(n))throw new Error("Async values are not supported inside jsx template results.");if(Array.isArray(n)){n.forEach(t=>E(e,t));return}if(ye(n)){for(let t of n)E(e,t);return}if(xe(n)){e.appendChild(n);return}e.appendChild(document.createTextNode(String(n)));}},J=(e,n,t)=>D(e,n,r=>k(r,n,t)),U=j({getIdentifierName:b,evaluateExpressionWithNamespace:J}),Te=(e,n,t,r)=>{let o=U(n,t,r);Object.entries(o).forEach(([s,i])=>{if(s!=="key"){if(s==="children"){E(e,i);return}Se(e,s,i,r);}});},A=(e,n,t)=>{let r=[];return e.forEach(o=>{switch(o.type){case "JSXText":{M(o.value,n.placeholders).forEach(i=>{r.push(i);});break}case "JSXExpressionContainer":{if(o.expression.type==="JSXEmptyExpression")break;r.push(J(o.expression,n,t));break}case "JSXSpreadChild":{let s=J(o.expression,n,t);s!=null&&r.push(s);break}case "JSXElement":case "JSXFragment":{r.push(k(o,n,t));break}}}),r},we=(e,n,t,r)=>{let o=U(e.openingElement.attributes,n,r),s=A(e.children,n,r);s.length===1?o.children=s[0]:s.length>1&&(o.children=s);let i=t(o);if(W(i))throw new Error("Async jsx components are not supported.");return i},Ce=(e,n,t)=>{let r=e.openingElement,o=b(r.name),s=n.components.get(o);if(s)return we(e,n,s,t);if(/[A-Z]/.test(o[0]??""))throw new Error(`Unknown component "${o}". Did you interpolate it with the template literal?`);let i=o==="svg"?"svg":t,p=o==="foreignObject"?null:i,a=i==="svg"?document.createElementNS("http://www.w3.org/2000/svg",o):document.createElement(o);return Te(a,r.attributes,n,i),A(e.children,n,p).forEach(l=>E(a,l)),a},k=(e,n,t)=>{if(e.type==="JSXFragment"){let r=document.createDocumentFragment();return A(e.children,n,t).forEach(s=>E(r,s)),r}return Ce(e,n,t)},Je=(e,...n)=>{fe();let t=I(e,n),r=parseSync("inline.jsx",t.source,R);if(r.errors.length>0)throw new Error(S("jsx",e,t.diagnostics,r.errors[0]));let o=P(r.program),s={source:t.source,placeholders:t.placeholders,components:new Map(t.bindings.map(i=>[i.name,i.value]))};return k(o,s,null)};
8
- export{Je as jsx};
7
+ ${r.helpMessage}`),f};var te=/<\s*$/,ne=/<\/\s*$/,R="__KX_EXPR__",X=new RegExp(`${R}\\d+_\\d+__`,"g"),re=0;var P={lang:"jsx",sourceType:"module",range:true,preserveParens:true},M=e=>{for(let n of e.body)if(n.type==="ExpressionStatement"){let t=n.expression;if(t.type==="JSXElement"||t.type==="JSXFragment")return t}throw new Error("The jsx template must contain a single JSX element or fragment.")},b=e=>{switch(e.type){case "JSXIdentifier":return e.name;case "JSXNamespacedName":return `${e.namespace.name}:${e.name.name}`;case "JSXMemberExpression":return `${b(e.object)}.${e.property.name}`;default:return ""}},T=(e,n)=>{if(!e||typeof e!="object")return;let t=e;typeof t.type=="string"&&(n(t),Object.values(t).forEach(r=>{if(r){if(Array.isArray(r)){r.forEach(o=>T(o,n));return}typeof r=="object"&&T(r,n);}}));},D=(e,n)=>{let t=N(e);if(!t)return [];let r=[];X.lastIndex=0;let o=0,s;for(;s=X.exec(t);){let c=s.index,i=t.slice(o,c);i&&r.push(i);let p=s[0];n.has(p)?r.push(n.get(p)):r.push(p),o=c+p.length;}let a=t.slice(o);return a&&r.push(a),r},oe=(e,n)=>{let t=new Set;return T(e,r=>{r.type==="Identifier"&&n.placeholders.has(r.name)&&t.add(r.name);}),Array.from(t)},I=(e,n,t)=>{if(e.type==="JSXElement"||e.type==="JSXFragment")return t(e);if(!("range"in e)||!e.range)throw new Error("Unable to evaluate expression: missing source range information.");let[r,o]=e.range,s=n.source.slice(r,o),a=oe(e,n);try{let c=new Function(...a,`"use strict"; return (${s});`),i=a.map(p=>n.placeholders.get(p));return c(...i)}catch(c){throw new Error(`Failed to evaluate expression ${s}: ${c.message}`)}},se=e=>{let n=e.replace(/[^a-zA-Z0-9_$]/g,"");return n?/[A-Za-z_$]/.test(n[0])?n:`Component${n}`:"Component"},ae=(e,n,t)=>{let r=t.get(e);if(r)return r;let o=e.displayName||e.name||`Component${n.length}`,s=se(o??""),a=s,c=1;for(;n.some(p=>p.name===a);)a=`${s}${c++}`;let i={name:a,value:e};return n.push(i),t.set(e,i),i},L=(e,n)=>{let t=e.raw??e,r=new Map,o=[],s=new Map,a=t[0]??"",c=re++,i=0,p=[];for(let l=0;l<n.length;l++){let u=t[l]??"",d=t[l+1]??"",m=n[l],g=te.test(u)||ne.test(u),x;if(g&&typeof m=="function")x=ae(m,o,s).name;else if(g&&typeof m=="string")x=m;else {let y=`${R}${c}_${i++}__`;r.set(y,m),x=y;}let h=a.length;a+=x;let f=a.length;p.push({index:l,sourceStart:h,sourceEnd:f}),a+=d;}return {source:a,placeholders:r,bindings:o,diagnostics:{expressionRanges:p}}};var $=e=>{let{getIdentifierName:n,evaluateExpressionWithNamespace:t}=e;return (r,o,s)=>{let a={},c=(i,p)=>{a[i]=p;};return r.forEach(i=>{if(i.type==="JSXSpreadAttribute"){let l=t(i.argument,o,s);l&&typeof l=="object"&&!Array.isArray(l)&&Object.assign(a,l);return}let p=n(i.name);if(!i.value){c(p,true);return}if(i.value.type==="Literal"){c(p,i.value.value);return}if(i.value.type==="JSXExpressionContainer"){if(i.value.expression.type==="JSXEmptyExpression")return;c(p,t(i.value.expression,o,s));}}),a}};var O="Capture",F=e=>e.endsWith(O)?{eventName:e.slice(0,-O.length),capture:true}:{eventName:e,capture:false},_=e=>{if(!e.startsWith("on"))return null;if(e.startsWith("on:")){let r=e.slice(3);if(!r)return null;let o=F(r);return o.eventName?o:null}let n=e.slice(2);if(!n)return null;let t=F(n);return t.eventName?{eventName:t.eventName.toLowerCase(),capture:t.capture}:null},H=e=>!e||typeof e!="object"?false:"handleEvent"in e&&typeof e.handleEvent=="function",le=e=>{if(!e||typeof e!="object"||!("handler"in e))return false;let n=e.handler;return typeof n=="function"?true:H(n)},B=(e,n)=>{if(typeof n=="function"||H(n))return {listener:n};if(!le(n))return null;let t=n,r=t.options?{...t.options}:void 0,o=(s,a)=>{a!=null&&(r||(r={}),r[s]=a);};return o("capture",t.capture),o("once",t.once),o("passive",t.passive),o("signal",t.signal??void 0),{listener:t.handler,options:r}};var xe=()=>{if(typeof document>"u"||typeof document.createElement!="function")throw new Error("The jsx template tag requires a DOM-like environment (document missing).")},ye=e=>typeof Node>"u"?false:e instanceof Node||e instanceof DocumentFragment,Ee=e=>!e||typeof e=="string"?false:typeof e[Symbol.iterator]=="function",V=e=>!e||typeof e!="object"&&typeof e!="function"?false:typeof e.then=="function",he={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},z=e=>{if(!(!e||e==="html"||e==="svg"))return he[e]},be=e=>e==="svg"?svg:html,w=(e,n,t)=>{let r=z(n.space),o=String(t);if(r){e.setAttributeNS(r,n.attribute,o);return}e.setAttribute(n.attribute,o);},W=(e,n)=>{let t=z(n.space);if(t){e.removeAttributeNS(t,n.attribute);return}e.removeAttribute(n.attribute);},C=(e,n)=>Array.isArray(e)?e.filter(Boolean).join(n):e,Se=(e,n,t)=>n==="svg"||!t.property||t.property.includes(":")?false:t.property in e,Te=(e,n,t,r)=>{if(t==null)return;if(n==="dangerouslySetInnerHTML"&&typeof t=="object"&&t&&"__html"in t){e.innerHTML=String(t.__html??"");return}if(n==="ref"){if(typeof t=="function"){t(e);return}if(t&&typeof t=="object"){t.current=e;return}}if(n==="style"&&typeof t=="object"&&t!==null){let p=t,l=e.style;if(!l)return;let u=l;Object.entries(p).forEach(([d,m])=>{if(m!=null){if(d.startsWith("--")){l.setProperty(d,String(m));return}u[d]=m;}});return}let o=_(n);if(o){let p=B(n,t);if(p){let l=p.options?{...p.options}:void 0;o.capture&&(l?l.capture=true:l={capture:true}),e.addEventListener(o.eventName,p.listener,l);return}}let s=find(be(r),n),a=e,c=Se(e,r,s);if(s.mustUseProperty){let p=s.boolean?!!t:t;a[s.property]=p;return}if(s.boolean){let p=!!t;c&&(a[s.property]=p),p?w(e,s,""):W(e,s);return}let i=t;if(s.spaceSeparated?i=C(t," "):s.commaSeparated?i=C(t,","):s.commaOrSpaceSeparated&&(i=C(t," ")),s.booleanish&&typeof i=="boolean"&&(i=i?"true":"false"),s.overloadedBoolean){if(i===false){W(e,s);return}if(i===true){w(e,s,"");return}}if(c){a[s.property]=i;return}i!==false&&w(e,s,i);},E=(e,n)=>{if(n!=null&&typeof n!="boolean"){if(V(n))throw new Error("Async values are not supported inside jsx template results.");if(Array.isArray(n)){n.forEach(t=>E(e,t));return}if(Ee(n)){for(let t of n)E(e,t);return}if(ye(n)){e.appendChild(n);return}e.appendChild(document.createTextNode(String(n)));}},J=(e,n,t)=>I(e,n,r=>k(r,n,t)),U=$({getIdentifierName:b,evaluateExpressionWithNamespace:J}),we=(e,n,t,r)=>{let o=U(n,t,r);Object.entries(o).forEach(([s,a])=>{if(s!=="key"){if(s==="children"){E(e,a);return}Te(e,s,a,r);}});},A=(e,n,t)=>{let r=[];return e.forEach(o=>{switch(o.type){case "JSXText":{D(o.value,n.placeholders).forEach(a=>{r.push(a);});break}case "JSXExpressionContainer":{if(o.expression.type==="JSXEmptyExpression")break;r.push(J(o.expression,n,t));break}case "JSXSpreadChild":{let s=J(o.expression,n,t);s!=null&&r.push(s);break}case "JSXElement":case "JSXFragment":{r.push(k(o,n,t));break}}}),r},Ce=(e,n,t,r)=>{let o=U(e.openingElement.attributes,n,r),s=A(e.children,n,r);s.length===1?o.children=s[0]:s.length>1&&(o.children=s);let a=t(o);if(V(a))throw new Error("Async jsx components are not supported.");return a},Je=(e,n,t)=>{let r=e.openingElement,o=b(r.name),s=n.components.get(o);if(s)return Ce(e,n,s,t);if(/[A-Z]/.test(o[0]??""))throw new Error(`Unknown component "${o}". Did you interpolate it with the template literal?`);let a=o==="svg"?"svg":t,c=o==="foreignObject"?null:a,i=a==="svg"?document.createElementNS("http://www.w3.org/2000/svg",o):document.createElement(o);return we(i,r.attributes,n,a),A(e.children,n,c).forEach(l=>E(i,l)),i},k=(e,n,t)=>{if(e.type==="JSXFragment"){let r=document.createDocumentFragment();return A(e.children,n,t).forEach(s=>E(r,s)),r}return Je(e,n,t)},Ae=(e,...n)=>{xe();let t=L(e,n),r=parseSync("inline.jsx",t.source,P);if(r.errors.length>0)throw new Error(S("jsx",e,t.diagnostics,r.errors[0]));let o=M(r.program),s={source:t.source,placeholders:t.placeholders,components:new Map(t.bindings.map(a=>[a.name,a.value]))};return k(o,s,null)};
8
+ export{Ae as jsx};
@@ -1,8 +1,8 @@
1
- import {createRequire}from'module';import {parseSync}from'oxc-parser';import {find,svg,html}from'property-information';var T=null,I=e=>{T=e;},me=e=>{T?.warnLowercaseEventProp?.(e);},ue=e=>{T?.ensureValidDangerouslySetInnerHTML?.(e);},P=e=>{let{getIdentifierName:t,evaluateExpressionWithNamespace:n}=e;return (r,o,s)=>{let i={},p=(a,c)=>{a==="dangerouslySetInnerHTML"&&ue(c),i[a]=c;};return r.forEach(a=>{if(a.type==="JSXSpreadAttribute"){let l=n(a.argument,o,s);l&&typeof l=="object"&&!Array.isArray(l)&&Object.assign(i,l);return}let c=t(a.name);if(me(c),!a.value){p(c,true);return}if(a.value.type==="Literal"){p(c,a.value.value);return}if(a.value.type==="JSXExpressionContainer"){if(a.value.expression.type==="JSXEmptyExpression")return;p(c,n(a.value.expression,o,s));}}),i}};var _=null,H=e=>{_=e;},$="Capture",O=e=>e.endsWith($)?{eventName:e.slice(0,-$.length),capture:true}:{eventName:e,capture:false},F=e=>{if(!e.startsWith("on"))return null;if(e.startsWith("on:")){let r=e.slice(3);if(!r)return null;let o=O(r);return o.eventName?o:null}let t=e.slice(2);if(!t)return null;let n=O(t);return n.eventName?{eventName:n.eventName.toLowerCase(),capture:n.capture}:null},W=e=>!e||typeof e!="object"?false:"handleEvent"in e&&typeof e.handleEvent=="function",de=e=>{if(!e||typeof e!="object"||!("handler"in e))return false;let t=e.handler;return typeof t=="function"?true:W(t)},fe=(e,t)=>{_?.onInvalidHandler?.(e,t);},B=(e,t)=>{if(typeof t=="function"||W(t))return {listener:t};if(!de(t))return fe(e,t),null;let n=t,r=n.options?{...n.options}:void 0,o=(s,i)=>{i!=null&&(r||(r={}),r[s]=i);};return o("capture",n.capture),o("once",n.once),o("passive",n.passive),o("signal",n.signal??void 0),{listener:n.handler,options:r}};var ge="@knighted/jsx",V=e=>`${ge}: ${e}`,J=()=>typeof process<"u"&&process.env?.KNIGHTED_JSX_DEBUG==="1",C=e=>{if(e===null)return "null";if(e===void 0)return "undefined";if(typeof e=="function")return e.name?`function ${e.name}`:"function";if(Array.isArray(e))return "array";if(typeof e=="object"){let t=e.constructor;return t&&typeof t.name=="string"&&t.name&&t.name!=="Object"?`${t.name} instance`:"object"}return typeof e},b=e=>new Error(V(e)),U=(e,t=false)=>{!t&&!J()||typeof console<"u"&&typeof console.warn=="function"&&console.warn(V(e));};var xe=e=>e>="a"&&e<="z",S="env",k=()=>S==="always"||S==="env"&&J(),ye=()=>S==="always",he={warnLowercaseEventProp(e){if(!k()||!e.startsWith("on")||e.startsWith("on:")||e.length<3)return;let t=e[2]??"";if(!xe(t))return;let n=`${e.slice(0,2)}${t.toUpperCase()}${e.slice(3)}`;U(`Use camelCase DOM event props when targeting runtime jsx templates. Received "${e}"; did you mean "${n}"?`,ye());},ensureValidDangerouslySetInnerHTML(e){if(!k())return;if(!e||typeof e!="object"||Array.isArray(e))throw b("dangerouslySetInnerHTML expects an object with a string __html field.");let t=e.__html;if(typeof t!="string")throw b(`dangerouslySetInnerHTML.__html must be a string but received ${C(t)}.`)}},Ee={onInvalidHandler(e,t){if(k())throw b(`The "${e}" prop expects a function, EventListenerObject, or descriptor ({ handler }) but received ${C(t)}.`)}},G=e=>{S=e?.mode,I(he),H(Ee);};var Se=createRequire(import.meta.url),q=()=>Se,z="<!doctype html><html><body></body></html>",Te=["window","self","document","HTMLElement","Element","Node","DocumentFragment","customElements","Text","Comment","MutationObserver","navigator"],Je=()=>typeof document<"u"&&typeof document.createElement=="function",Ce=e=>{let t=globalThis,n=e;Te.forEach(r=>{t[r]===void 0&&n[r]!==void 0&&(t[r]=n[r]);});},D=()=>{let{parseHTML:e}=q()("linkedom"),{window:t}=e(z);return t},A=()=>{let{JSDOM:e}=q()("jsdom"),{window:t}=new e(z);return t},ke=()=>{let e=typeof process<"u"&&process.env?.KNIGHTED_JSX_NODE_SHIM?process.env.KNIGHTED_JSX_NODE_SHIM.toLowerCase():void 0;return e==="linkedom"||e==="jsdom"?e:"auto"},De=()=>{let e=ke();return e==="linkedom"?[D,A]:e==="jsdom"?[A,D]:[D,A]},Ae=()=>{let e=[];for(let n of De())try{return n()}catch(r){e.push(r);}let t='Unable to bootstrap a DOM-like environment. Install "linkedom" or "jsdom" (both optional peer dependencies) or set KNIGHTED_JSX_NODE_SHIM to pick one explicitly.';throw new AggregateError(e,t)},K=false,Z=()=>{if(Je()||K)return;let e=Ae();Ce(e),K=true;};var ve="oxc-parser",Ne=e=>{let t=e.raw??e,n=t[0]??"",r=[];for(let o=0;o<t.length-1;o++){let s="${expr#"+o+"}",i=n.length;n+=s;let p=n.length;r.push({index:o,templateStart:i,templateEnd:p,label:s}),n+=t[o+1]??"";}return {source:n,spans:r}},Me=(e,t)=>{let n=new Map;return t.forEach(r=>{n.set(r.index,r);}),e.expressionRanges.map(r=>{let o=n.get(r.index);if(!o)return null;let s=Math.max(0,r.sourceEnd-r.sourceStart),i=Math.max(0,o.templateEnd-o.templateStart);return {sourceStart:r.sourceStart,sourceEnd:r.sourceEnd,templateStart:o.templateStart,templateEnd:o.templateEnd,delta:i-s}}).filter(r=>!!r).sort((r,o)=>r.sourceStart-o.sourceStart)},Re=(e,t,n)=>{if(!Number.isFinite(e)||e<=0)return 0;let r=0;for(let s of t){if(e<s.sourceStart)break;if(e<s.sourceEnd){let i=Math.max(0,e-s.sourceStart),p=Math.max(0,s.templateEnd-s.templateStart);if(p===0)return s.templateStart;let a=Math.min(i,Math.max(0,p-1));return s.templateStart+a}r+=s.delta;}let o=e+r;return o<=0?0:o>=n?n:o},Y=(e,t)=>{let n=Math.max(0,Math.min(t,e.length)),r=1,o=1;for(let s=0;s<n;s++){if(e.charCodeAt(s)===10){r++,o=1;continue}o++;}return {line:r,column:o}},Xe=e=>{let t=[],n=0;return e.forEach((r,o)=>{t.push(n),n+=r.length,o<e.length-1&&(n+=1);}),t},Le=(e,t,n,r,o,s,i)=>{let p=n+t.length,a=Math.max(r,n),c=Math.min(o,p);if(c>a){let l=Math.max(0,a-n),u=Math.max(1,c-a);return " ".repeat(l)+"^".repeat(u)}if(t.length===0&&e>=s&&e<=i)return "^";if(e===s){let l=Math.max(0,r-n);return " ".repeat(Math.min(l,t.length))+"^"}return ""},je=(e,t,n,r,o)=>{if(!e.length)return "";let s=e.split(`
2
- `),i=Xe(s),p=Math.max(1,r-1),a=Math.min(s.length,o+1),c=String(a).length,l=[];for(let u=p;u<=a;u++){let d=s[u-1]??"",m=String(u).padStart(c," ");l.push(`${m} | ${d}`);let f=Le(u,d,i[u-1]??0,t,n,r,o);f&&l.push(`${" ".repeat(c)} | ${f}`);}return l.join(`
3
- `)},v=(e,t,n,r,o)=>{let s=ve,i=`[${s}] ${r.message}`,p=r.labels?.[0];if(!p)return i;let{source:a,spans:c}=Ne(t),l=Me(n,c),u=y=>Re(typeof y=="number"?y:0,l,a.length),d=u(p.start),m=u(p.end);m<=d&&(m=Math.min(a.length,d+1));let f=Y(a,d),x=Y(a,Math.max(d,m-1)),E=je(a,d,m,f.line,x.line),g=`[${s}] ${r.message}`;return g+=`
4
- --> ${e} template:${f.line}:${f.column}`,p.message&&(g+=`
5
- ${p.message}`),E&&(g+=`
1
+ import {createRequire}from'module';import {parseSync}from'oxc-parser';import {find,svg,html}from'property-information';var T=null,I=e=>{T=e;},ue=e=>{T?.warnLowercaseEventProp?.(e);},de=e=>{T?.ensureValidDangerouslySetInnerHTML?.(e);},P=e=>{let{getIdentifierName:t,evaluateExpressionWithNamespace:n}=e;return (r,o,s)=>{let a={},c=(i,p)=>{i==="dangerouslySetInnerHTML"&&de(p),a[i]=p;};return r.forEach(i=>{if(i.type==="JSXSpreadAttribute"){let l=n(i.argument,o,s);l&&typeof l=="object"&&!Array.isArray(l)&&Object.assign(a,l);return}let p=t(i.name);if(ue(p),!i.value){c(p,true);return}if(i.value.type==="Literal"){c(p,i.value.value);return}if(i.value.type==="JSXExpressionContainer"){if(i.value.expression.type==="JSXEmptyExpression")return;c(p,n(i.value.expression,o,s));}}),a}};var _=null,H=e=>{_=e;},$="Capture",O=e=>e.endsWith($)?{eventName:e.slice(0,-$.length),capture:true}:{eventName:e,capture:false},F=e=>{if(!e.startsWith("on"))return null;if(e.startsWith("on:")){let r=e.slice(3);if(!r)return null;let o=O(r);return o.eventName?o:null}let t=e.slice(2);if(!t)return null;let n=O(t);return n.eventName?{eventName:n.eventName.toLowerCase(),capture:n.capture}:null},W=e=>!e||typeof e!="object"?false:"handleEvent"in e&&typeof e.handleEvent=="function",fe=e=>{if(!e||typeof e!="object"||!("handler"in e))return false;let t=e.handler;return typeof t=="function"?true:W(t)},ge=(e,t)=>{_?.onInvalidHandler?.(e,t);},B=(e,t)=>{if(typeof t=="function"||W(t))return {listener:t};if(!fe(t))return ge(e,t),null;let n=t,r=n.options?{...n.options}:void 0,o=(s,a)=>{a!=null&&(r||(r={}),r[s]=a);};return o("capture",n.capture),o("once",n.once),o("passive",n.passive),o("signal",n.signal??void 0),{listener:n.handler,options:r}};var xe="@knighted/jsx",V=e=>`${xe}: ${e}`,J=()=>typeof process<"u"&&process.env?.KNIGHTED_JSX_DEBUG==="1",C=e=>{if(e===null)return "null";if(e===void 0)return "undefined";if(typeof e=="function")return e.name?`function ${e.name}`:"function";if(Array.isArray(e))return "array";if(typeof e=="object"){let t=e.constructor;return t&&typeof t.name=="string"&&t.name&&t.name!=="Object"?`${t.name} instance`:"object"}return typeof e},b=e=>new Error(V(e)),U=(e,t=false)=>{!t&&!J()||typeof console<"u"&&typeof console.warn=="function"&&console.warn(V(e));};var ye=e=>e>="a"&&e<="z",S="env",k=()=>S==="always"||S==="env"&&J(),he=()=>S==="always",Ee={warnLowercaseEventProp(e){if(!k()||!e.startsWith("on")||e.startsWith("on:")||e.length<3)return;let t=e[2]??"";if(!ye(t))return;let n=`${e.slice(0,2)}${t.toUpperCase()}${e.slice(3)}`;U(`Use camelCase DOM event props when targeting runtime jsx templates. Received "${e}"; did you mean "${n}"?`,he());},ensureValidDangerouslySetInnerHTML(e){if(!k())return;if(!e||typeof e!="object"||Array.isArray(e))throw b("dangerouslySetInnerHTML expects an object with a string __html field.");let t=e.__html;if(typeof t!="string")throw b(`dangerouslySetInnerHTML.__html must be a string but received ${C(t)}.`)}},be={onInvalidHandler(e,t){if(k())throw b(`The "${e}" prop expects a function, EventListenerObject, or descriptor ({ handler }) but received ${C(t)}.`)}},z=e=>{S=e?.mode,I(Ee),H(be);};var we=createRequire(import.meta.url),K=()=>we,q="<!doctype html><html><body></body></html>",Je=["window","self","document","HTMLElement","Element","Node","DocumentFragment","customElements","Text","Comment","MutationObserver","navigator"],Ce=()=>typeof document<"u"&&typeof document.createElement=="function",ke=e=>{let t=globalThis,n=e;Je.forEach(r=>{t[r]===void 0&&n[r]!==void 0&&(t[r]=n[r]);});},D=()=>{let{parseHTML:e}=K()("linkedom"),{window:t}=e(q);return t},A=()=>{let{JSDOM:e}=K()("jsdom"),{window:t}=new e(q);return t},De=()=>{let e=typeof process<"u"&&process.env?.KNIGHTED_JSX_NODE_SHIM?process.env.KNIGHTED_JSX_NODE_SHIM.toLowerCase():void 0;return e==="linkedom"||e==="jsdom"?e:"auto"},Ae=()=>{let e=De();return e==="linkedom"?[D,A]:e==="jsdom"?[A,D]:[D,A]},ve=()=>{let e=[];for(let n of Ae())try{return n()}catch(r){e.push(r);}let t='Unable to bootstrap a DOM-like environment. Install "linkedom" or "jsdom" (both optional peer dependencies) or set KNIGHTED_JSX_NODE_SHIM to pick one explicitly.';throw new AggregateError(e,t)},G=false,Z=()=>{if(Ce()||G)return;let e=ve();ke(e),G=true;};var Y=e=>{let t=e.replace(/\r/g,"").replace(/\n\s+/g," "),n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",o=/\n/.test(n),s=/\n/.test(r),a=t;return o&&(a=a.replace(/^\s+/,"")),s&&(a=a.replace(/\s+$/,"")),a.length===0||a.trim().length===0?null:a};var Ne="oxc-parser",Me=e=>{let t=e.raw??e,n=t[0]??"",r=[];for(let o=0;o<t.length-1;o++){let s="${expr#"+o+"}",a=n.length;n+=s;let c=n.length;r.push({index:o,templateStart:a,templateEnd:c,label:s}),n+=t[o+1]??"";}return {source:n,spans:r}},Re=(e,t)=>{let n=new Map;return t.forEach(r=>{n.set(r.index,r);}),e.expressionRanges.map(r=>{let o=n.get(r.index);if(!o)return null;let s=Math.max(0,r.sourceEnd-r.sourceStart),a=Math.max(0,o.templateEnd-o.templateStart);return {sourceStart:r.sourceStart,sourceEnd:r.sourceEnd,templateStart:o.templateStart,templateEnd:o.templateEnd,delta:a-s}}).filter(r=>!!r).sort((r,o)=>r.sourceStart-o.sourceStart)},Xe=(e,t,n)=>{if(!Number.isFinite(e)||e<=0)return 0;let r=0;for(let s of t){if(e<s.sourceStart)break;if(e<s.sourceEnd){let a=Math.max(0,e-s.sourceStart),c=Math.max(0,s.templateEnd-s.templateStart);if(c===0)return s.templateStart;let i=Math.min(a,Math.max(0,c-1));return s.templateStart+i}r+=s.delta;}let o=e+r;return o<=0?0:o>=n?n:o},Q=(e,t)=>{let n=Math.max(0,Math.min(t,e.length)),r=1,o=1;for(let s=0;s<n;s++){if(e.charCodeAt(s)===10){r++,o=1;continue}o++;}return {line:r,column:o}},Le=e=>{let t=[],n=0;return e.forEach((r,o)=>{t.push(n),n+=r.length,o<e.length-1&&(n+=1);}),t},je=(e,t,n,r,o,s,a)=>{let c=n+t.length,i=Math.max(r,n),p=Math.min(o,c);if(p>i){let l=Math.max(0,i-n),u=Math.max(1,p-i);return " ".repeat(l)+"^".repeat(u)}if(t.length===0&&e>=s&&e<=a)return "^";if(e===s){let l=Math.max(0,r-n);return " ".repeat(Math.min(l,t.length))+"^"}return ""},Ie=(e,t,n,r,o)=>{if(!e.length)return "";let s=e.split(`
2
+ `),a=Le(s),c=Math.max(1,r-1),i=Math.min(s.length,o+1),p=String(i).length,l=[];for(let u=c;u<=i;u++){let d=s[u-1]??"",m=String(u).padStart(p," ");l.push(`${m} | ${d}`);let f=je(u,d,a[u-1]??0,t,n,r,o);f&&l.push(`${" ".repeat(p)} | ${f}`);}return l.join(`
3
+ `)},v=(e,t,n,r,o)=>{let s=Ne,a=`[${s}] ${r.message}`,c=r.labels?.[0];if(!c)return a;let{source:i,spans:p}=Me(t),l=Re(n,p),u=y=>Xe(typeof y=="number"?y:0,l,i.length),d=u(c.start),m=u(c.end);m<=d&&(m=Math.min(i.length,d+1));let f=Q(i,d),x=Q(i,Math.max(d,m-1)),E=Ie(i,d,m,f.line,x.line),g=`[${s}] ${r.message}`;return g+=`
4
+ --> ${e} template:${f.line}:${f.column}`,c.message&&(g+=`
5
+ ${c.message}`),E&&(g+=`
6
6
  ${E}`),r.helpMessage&&(g+=`
7
- ${r.helpMessage}`),g};var Ie=/<\s*$/,Pe=/<\/\s*$/,ee="__KX_EXPR__",Q=new RegExp(`${ee}\\d+_\\d+__`,"g"),$e=0;var te={lang:"jsx",sourceType:"module",range:true,preserveParens:true},ne=e=>{for(let t of e.body)if(t.type==="ExpressionStatement"){let n=t.expression;if(n.type==="JSXElement"||n.type==="JSXFragment")return n}throw new Error("The jsx template must contain a single JSX element or fragment.")},w=e=>{switch(e.type){case "JSXIdentifier":return e.name;case "JSXNamespacedName":return `${e.namespace.name}:${e.name.name}`;case "JSXMemberExpression":return `${w(e.object)}.${e.property.name}`;default:return ""}},N=(e,t)=>{if(!e||typeof e!="object")return;let n=e;typeof n.type=="string"&&(t(n),Object.values(n).forEach(r=>{if(r){if(Array.isArray(r)){r.forEach(o=>N(o,t));return}typeof r=="object"&&N(r,t);}}));},re=(e,t)=>{let n=e.replace(/\r/g,"").replace(/\n\s+/g," "),r=e.match(/^\s*/)?.[0]??"",o=e.match(/\s*$/)?.[0]??"",s=/\n/.test(r),i=/\n/.test(o),p=n;if(s&&(p=p.replace(/^\s+/,"")),i&&(p=p.replace(/\s+$/,"")),p.length===0||p.trim().length===0)return [];let a=[];Q.lastIndex=0;let c=0,l;for(;l=Q.exec(p);){let d=l.index,m=p.slice(c,d);m&&a.push(m);let f=l[0];t.has(f)?a.push(t.get(f)):a.push(f),c=d+f.length;}let u=p.slice(c);return u&&a.push(u),a},Oe=(e,t)=>{let n=new Set;return N(e,r=>{r.type==="Identifier"&&t.placeholders.has(r.name)&&n.add(r.name);}),Array.from(n)},oe=(e,t,n)=>{if(e.type==="JSXElement"||e.type==="JSXFragment")return n(e);if(!("range"in e)||!e.range)throw new Error("Unable to evaluate expression: missing source range information.");let[r,o]=e.range,s=t.source.slice(r,o),i=Oe(e,t);try{let p=new Function(...i,`"use strict"; return (${s});`),a=i.map(c=>t.placeholders.get(c));return p(...a)}catch(p){throw new Error(`Failed to evaluate expression ${s}: ${p.message}`)}},_e=e=>{let t=e.replace(/[^a-zA-Z0-9_$]/g,"");return t?/[A-Za-z_$]/.test(t[0])?t:`Component${t}`:"Component"},He=(e,t,n)=>{let r=n.get(e);if(r)return r;let o=e.displayName||e.name||`Component${t.length}`,s=_e(o??""),i=s,p=1;for(;t.some(c=>c.name===i);)i=`${s}${p++}`;let a={name:i,value:e};return t.push(a),n.set(e,a),a},se=(e,t)=>{let n=e.raw??e,r=new Map,o=[],s=new Map,i=n[0]??"",p=$e++,a=0,c=[];for(let l=0;l<t.length;l++){let u=n[l]??"",d=n[l+1]??"",m=t[l],f=Ie.test(u)||Pe.test(u),x;if(f&&typeof m=="function")x=He(m,o,s).name;else if(f&&typeof m=="string")x=m;else {let y=`${ee}${p}_${a++}__`;r.set(y,m),x=y;}let E=i.length;i+=x;let g=i.length;c.push({index:l,sourceStart:E,sourceEnd:g}),i+=d;}return {source:i,placeholders:r,bindings:o,diagnostics:{expressionRanges:c}}};var Ue=()=>{if(typeof document>"u"||typeof document.createElement!="function")throw new Error("The jsx template tag requires a DOM-like environment (document missing).")},Ge=e=>typeof Node>"u"?false:e instanceof Node||e instanceof DocumentFragment,Ke=e=>!e||typeof e=="string"?false:typeof e[Symbol.iterator]=="function",ie=e=>!e||typeof e!="object"&&typeof e!="function"?false:typeof e.then=="function",qe={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},pe=e=>{if(!(!e||e==="html"||e==="svg"))return qe[e]},ze=e=>e==="svg"?svg:html,M=(e,t,n)=>{let r=pe(t.space),o=String(n);if(r){e.setAttributeNS(r,t.attribute,o);return}e.setAttribute(t.attribute,o);},ae=(e,t)=>{let n=pe(t.space);if(n){e.removeAttributeNS(n,t.attribute);return}e.removeAttribute(t.attribute);},R=(e,t)=>Array.isArray(e)?e.filter(Boolean).join(t):e,Ze=(e,t,n)=>t==="svg"||!n.property||n.property.includes(":")?false:n.property in e,Ye=(e,t,n,r)=>{if(n==null)return;if(t==="dangerouslySetInnerHTML"&&typeof n=="object"&&n&&"__html"in n){e.innerHTML=String(n.__html??"");return}if(t==="ref"){if(typeof n=="function"){n(e);return}if(n&&typeof n=="object"){n.current=e;return}}if(t==="style"&&typeof n=="object"&&n!==null){let c=n,l=e.style;if(!l)return;let u=l;Object.entries(c).forEach(([d,m])=>{if(m!=null){if(d.startsWith("--")){l.setProperty(d,String(m));return}u[d]=m;}});return}let o=F(t);if(o){let c=B(t,n);if(c){let l=c.options?{...c.options}:void 0;o.capture&&(l?l.capture=true:l={capture:true}),e.addEventListener(o.eventName,c.listener,l);return}}let s=find(ze(r),t),i=e,p=Ze(e,r,s);if(s.mustUseProperty){let c=s.boolean?!!n:n;i[s.property]=c;return}if(s.boolean){let c=!!n;p&&(i[s.property]=c),c?M(e,s,""):ae(e,s);return}let a=n;if(s.spaceSeparated?a=R(n," "):s.commaSeparated?a=R(n,","):s.commaOrSpaceSeparated&&(a=R(n," ")),s.booleanish&&typeof a=="boolean"&&(a=a?"true":"false"),s.overloadedBoolean){if(a===false){ae(e,s);return}if(a===true){M(e,s,"");return}}if(p){i[s.property]=a;return}a!==false&&M(e,s,a);},h=(e,t)=>{if(t!=null&&typeof t!="boolean"){if(ie(t))throw new Error("Async values are not supported inside jsx template results.");if(Array.isArray(t)){t.forEach(n=>h(e,n));return}if(Ke(t)){for(let n of t)h(e,n);return}if(Ge(t)){e.appendChild(t);return}e.appendChild(document.createTextNode(String(t)));}},X=(e,t,n)=>oe(e,t,r=>j(r,t,n)),ce=P({getIdentifierName:w,evaluateExpressionWithNamespace:X}),Qe=(e,t,n,r)=>{let o=ce(t,n,r);Object.entries(o).forEach(([s,i])=>{if(s!=="key"){if(s==="children"){h(e,i);return}Ye(e,s,i,r);}});},L=(e,t,n)=>{let r=[];return e.forEach(o=>{switch(o.type){case "JSXText":{re(o.value,t.placeholders).forEach(i=>{r.push(i);});break}case "JSXExpressionContainer":{if(o.expression.type==="JSXEmptyExpression")break;r.push(X(o.expression,t,n));break}case "JSXSpreadChild":{let s=X(o.expression,t,n);s!=null&&r.push(s);break}case "JSXElement":case "JSXFragment":{r.push(j(o,t,n));break}}}),r},et=(e,t,n,r)=>{let o=ce(e.openingElement.attributes,t,r),s=L(e.children,t,r);s.length===1?o.children=s[0]:s.length>1&&(o.children=s);let i=n(o);if(ie(i))throw new Error("Async jsx components are not supported.");return i},tt=(e,t,n)=>{let r=e.openingElement,o=w(r.name),s=t.components.get(o);if(s)return et(e,t,s,n);if(/[A-Z]/.test(o[0]??""))throw new Error(`Unknown component "${o}". Did you interpolate it with the template literal?`);let i=o==="svg"?"svg":n,p=o==="foreignObject"?null:i,a=i==="svg"?document.createElementNS("http://www.w3.org/2000/svg",o):document.createElement(o);return Qe(a,r.attributes,t,i),L(e.children,t,p).forEach(l=>h(a,l)),a},j=(e,t,n)=>{if(e.type==="JSXFragment"){let r=document.createDocumentFragment();return L(e.children,t,n).forEach(s=>h(r,s)),r}return tt(e,t,n)},le=(e,...t)=>{Ue();let n=se(e,t),r=parseSync("inline.jsx",n.source,te);if(r.errors.length>0)throw new Error(v("jsx",e,n.diagnostics,r.errors[0]));let o=ne(r.program),s={source:n.source,placeholders:n.placeholders,components:new Map(n.bindings.map(i=>[i.name,i.value]))};return j(o,s,null)};G({mode:"always"});Z();var Jt=le;
8
- export{Jt as jsx};
7
+ ${r.helpMessage}`),g};var Pe=/<\s*$/,$e=/<\/\s*$/,te="__KX_EXPR__",ee=new RegExp(`${te}\\d+_\\d+__`,"g"),Oe=0;var ne={lang:"jsx",sourceType:"module",range:true,preserveParens:true},re=e=>{for(let t of e.body)if(t.type==="ExpressionStatement"){let n=t.expression;if(n.type==="JSXElement"||n.type==="JSXFragment")return n}throw new Error("The jsx template must contain a single JSX element or fragment.")},w=e=>{switch(e.type){case "JSXIdentifier":return e.name;case "JSXNamespacedName":return `${e.namespace.name}:${e.name.name}`;case "JSXMemberExpression":return `${w(e.object)}.${e.property.name}`;default:return ""}},N=(e,t)=>{if(!e||typeof e!="object")return;let n=e;typeof n.type=="string"&&(t(n),Object.values(n).forEach(r=>{if(r){if(Array.isArray(r)){r.forEach(o=>N(o,t));return}typeof r=="object"&&N(r,t);}}));},oe=(e,t)=>{let n=Y(e);if(!n)return [];let r=[];ee.lastIndex=0;let o=0,s;for(;s=ee.exec(n);){let c=s.index,i=n.slice(o,c);i&&r.push(i);let p=s[0];t.has(p)?r.push(t.get(p)):r.push(p),o=c+p.length;}let a=n.slice(o);return a&&r.push(a),r},_e=(e,t)=>{let n=new Set;return N(e,r=>{r.type==="Identifier"&&t.placeholders.has(r.name)&&n.add(r.name);}),Array.from(n)},se=(e,t,n)=>{if(e.type==="JSXElement"||e.type==="JSXFragment")return n(e);if(!("range"in e)||!e.range)throw new Error("Unable to evaluate expression: missing source range information.");let[r,o]=e.range,s=t.source.slice(r,o),a=_e(e,t);try{let c=new Function(...a,`"use strict"; return (${s});`),i=a.map(p=>t.placeholders.get(p));return c(...i)}catch(c){throw new Error(`Failed to evaluate expression ${s}: ${c.message}`)}},He=e=>{let t=e.replace(/[^a-zA-Z0-9_$]/g,"");return t?/[A-Za-z_$]/.test(t[0])?t:`Component${t}`:"Component"},Fe=(e,t,n)=>{let r=n.get(e);if(r)return r;let o=e.displayName||e.name||`Component${t.length}`,s=He(o??""),a=s,c=1;for(;t.some(p=>p.name===a);)a=`${s}${c++}`;let i={name:a,value:e};return t.push(i),n.set(e,i),i},ae=(e,t)=>{let n=e.raw??e,r=new Map,o=[],s=new Map,a=n[0]??"",c=Oe++,i=0,p=[];for(let l=0;l<t.length;l++){let u=n[l]??"",d=n[l+1]??"",m=t[l],f=Pe.test(u)||$e.test(u),x;if(f&&typeof m=="function")x=Fe(m,o,s).name;else if(f&&typeof m=="string")x=m;else {let y=`${te}${c}_${i++}__`;r.set(y,m),x=y;}let E=a.length;a+=x;let g=a.length;p.push({index:l,sourceStart:E,sourceEnd:g}),a+=d;}return {source:a,placeholders:r,bindings:o,diagnostics:{expressionRanges:p}}};var ze=()=>{if(typeof document>"u"||typeof document.createElement!="function")throw new Error("The jsx template tag requires a DOM-like environment (document missing).")},Ge=e=>typeof Node>"u"?false:e instanceof Node||e instanceof DocumentFragment,Ke=e=>!e||typeof e=="string"?false:typeof e[Symbol.iterator]=="function",pe=e=>!e||typeof e!="object"&&typeof e!="function"?false:typeof e.then=="function",qe={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},ce=e=>{if(!(!e||e==="html"||e==="svg"))return qe[e]},Ze=e=>e==="svg"?svg:html,M=(e,t,n)=>{let r=ce(t.space),o=String(n);if(r){e.setAttributeNS(r,t.attribute,o);return}e.setAttribute(t.attribute,o);},ie=(e,t)=>{let n=ce(t.space);if(n){e.removeAttributeNS(n,t.attribute);return}e.removeAttribute(t.attribute);},R=(e,t)=>Array.isArray(e)?e.filter(Boolean).join(t):e,Ye=(e,t,n)=>t==="svg"||!n.property||n.property.includes(":")?false:n.property in e,Qe=(e,t,n,r)=>{if(n==null)return;if(t==="dangerouslySetInnerHTML"&&typeof n=="object"&&n&&"__html"in n){e.innerHTML=String(n.__html??"");return}if(t==="ref"){if(typeof n=="function"){n(e);return}if(n&&typeof n=="object"){n.current=e;return}}if(t==="style"&&typeof n=="object"&&n!==null){let p=n,l=e.style;if(!l)return;let u=l;Object.entries(p).forEach(([d,m])=>{if(m!=null){if(d.startsWith("--")){l.setProperty(d,String(m));return}u[d]=m;}});return}let o=F(t);if(o){let p=B(t,n);if(p){let l=p.options?{...p.options}:void 0;o.capture&&(l?l.capture=true:l={capture:true}),e.addEventListener(o.eventName,p.listener,l);return}}let s=find(Ze(r),t),a=e,c=Ye(e,r,s);if(s.mustUseProperty){let p=s.boolean?!!n:n;a[s.property]=p;return}if(s.boolean){let p=!!n;c&&(a[s.property]=p),p?M(e,s,""):ie(e,s);return}let i=n;if(s.spaceSeparated?i=R(n," "):s.commaSeparated?i=R(n,","):s.commaOrSpaceSeparated&&(i=R(n," ")),s.booleanish&&typeof i=="boolean"&&(i=i?"true":"false"),s.overloadedBoolean){if(i===false){ie(e,s);return}if(i===true){M(e,s,"");return}}if(c){a[s.property]=i;return}i!==false&&M(e,s,i);},h=(e,t)=>{if(t!=null&&typeof t!="boolean"){if(pe(t))throw new Error("Async values are not supported inside jsx template results.");if(Array.isArray(t)){t.forEach(n=>h(e,n));return}if(Ke(t)){for(let n of t)h(e,n);return}if(Ge(t)){e.appendChild(t);return}e.appendChild(document.createTextNode(String(t)));}},X=(e,t,n)=>se(e,t,r=>j(r,t,n)),le=P({getIdentifierName:w,evaluateExpressionWithNamespace:X}),et=(e,t,n,r)=>{let o=le(t,n,r);Object.entries(o).forEach(([s,a])=>{if(s!=="key"){if(s==="children"){h(e,a);return}Qe(e,s,a,r);}});},L=(e,t,n)=>{let r=[];return e.forEach(o=>{switch(o.type){case "JSXText":{oe(o.value,t.placeholders).forEach(a=>{r.push(a);});break}case "JSXExpressionContainer":{if(o.expression.type==="JSXEmptyExpression")break;r.push(X(o.expression,t,n));break}case "JSXSpreadChild":{let s=X(o.expression,t,n);s!=null&&r.push(s);break}case "JSXElement":case "JSXFragment":{r.push(j(o,t,n));break}}}),r},tt=(e,t,n,r)=>{let o=le(e.openingElement.attributes,t,r),s=L(e.children,t,r);s.length===1?o.children=s[0]:s.length>1&&(o.children=s);let a=n(o);if(pe(a))throw new Error("Async jsx components are not supported.");return a},nt=(e,t,n)=>{let r=e.openingElement,o=w(r.name),s=t.components.get(o);if(s)return tt(e,t,s,n);if(/[A-Z]/.test(o[0]??""))throw new Error(`Unknown component "${o}". Did you interpolate it with the template literal?`);let a=o==="svg"?"svg":n,c=o==="foreignObject"?null:a,i=a==="svg"?document.createElementNS("http://www.w3.org/2000/svg",o):document.createElement(o);return et(i,r.attributes,t,a),L(e.children,t,c).forEach(l=>h(i,l)),i},j=(e,t,n)=>{if(e.type==="JSXFragment"){let r=document.createDocumentFragment();return L(e.children,t,n).forEach(s=>h(r,s)),r}return nt(e,t,n)},me=(e,...t)=>{ze();let n=ae(e,t),r=parseSync("inline.jsx",n.source,ne);if(r.errors.length>0)throw new Error(v("jsx",e,n.diagnostics,r.errors[0]));let o=re(r.program),s={source:n.source,placeholders:n.placeholders,components:new Map(n.bindings.map(a=>[a.name,a.value]))};return j(o,s,null)};z({mode:"always"});Z();var Dt=me;
8
+ export{Dt as jsx};