@geajs/ui 0.2.9 → 0.2.10

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 (55) hide show
  1. package/dist/bind.mjs +74 -35
  2. package/dist/bind.mjs.map +1 -1
  3. package/dist/combobox.mjs +74 -6
  4. package/dist/combobox.mjs.map +1 -1
  5. package/dist/compiled-component.mjs +11 -9
  6. package/dist/compiled-component.mjs.map +1 -1
  7. package/dist/compiled-reactive-component.mjs +129 -31
  8. package/dist/compiled-reactive-component.mjs.map +1 -1
  9. package/dist/component-id.mjs +12 -1
  10. package/dist/component-id.mjs.map +1 -1
  11. package/dist/conditional.mjs.map +1 -1
  12. package/dist/delegate-event.mjs +9 -9
  13. package/dist/delegate-event.mjs.map +1 -1
  14. package/dist/disposer.mjs +30 -11
  15. package/dist/disposer.mjs.map +1 -1
  16. package/dist/draggable2.mjs +135 -32
  17. package/dist/draggable2.mjs.map +1 -1
  18. package/dist/file-upload.mjs +74 -6
  19. package/dist/file-upload.mjs.map +1 -1
  20. package/dist/hover-card.mjs +2 -2
  21. package/dist/hover-card.mjs.map +1 -1
  22. package/dist/input2.mjs +2 -2
  23. package/dist/input2.mjs.map +1 -1
  24. package/dist/item-obs.mjs +11 -48
  25. package/dist/item-obs.mjs.map +1 -1
  26. package/dist/keyed-list.mjs +90 -39
  27. package/dist/keyed-list.mjs.map +1 -1
  28. package/dist/menu.mjs +7 -7
  29. package/dist/menu.mjs.map +1 -1
  30. package/dist/pin-input.mjs +6 -6
  31. package/dist/pin-input.mjs.map +1 -1
  32. package/dist/progress.mjs +2 -2
  33. package/dist/progress.mjs.map +1 -1
  34. package/dist/rating-group.mjs +8 -8
  35. package/dist/rating-group.mjs.map +1 -1
  36. package/dist/reactive-attr.mjs +2 -2
  37. package/dist/reactive-attr.mjs.map +1 -1
  38. package/dist/reactive-bool.mjs +2 -2
  39. package/dist/reactive-bool.mjs.map +1 -1
  40. package/dist/reactive-class-name.mjs +2 -2
  41. package/dist/reactive-class-name.mjs.map +1 -1
  42. package/dist/reactive-class.mjs +5 -4
  43. package/dist/reactive-class.mjs.map +1 -1
  44. package/dist/reactive-style.mjs +15 -12
  45. package/dist/reactive-style.mjs.map +1 -1
  46. package/dist/reactive-text.mjs +4 -4
  47. package/dist/reactive-text.mjs.map +1 -1
  48. package/dist/tags-input.mjs +10 -10
  49. package/dist/tags-input.mjs.map +1 -1
  50. package/dist/tooltip.mjs +3 -3
  51. package/dist/tooltip.mjs.map +1 -1
  52. package/dist/zag-component.d.mts +1 -0
  53. package/dist/zag-component.mjs +10 -1
  54. package/dist/zag-component.mjs.map +1 -1
  55. package/package.json +1 -1
package/dist/menu.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"menu.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveTextValue","reactiveAttr","createItemObservable","createItemProxy","GEA_PROXY_RAW","_rescue","keyedList","menu","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","_tpl1_root","_tpl1_create","_tpl2_root","_tpl2_create","__rq_L0","Map","Menu","open","createMachine","_props","machine","getMachineProps","props","id","defaultOpen","closeOnSelect","loopFocus","positioning","onOpenChange","details","OpenChangeDetails","onSelect","connectApi","service","connect","getSpreadMap","[data-part=\"item\"]","api","el","getItemProps","value","HTMLElement","dataset","[data-part=\"item-group\"]","getItemGroupProps","groupId","[data-part=\"item-group-label\"]","getItemGroupLabelProps","htmlFor","syncState","d","items","root","cloneNode","el0","marker1","anchor2","childNodes","class","t1","triggerLabel","__ki_L0","item","i","type","el1","marker2","t2","label","container","parentNode","anchor","disposer","pending","path","key","createEntry","idx","__k","__r","String","__raw","__prev","obs","current","_fire","__rd","child","__obs","__li","__el","element","patchEntry","e","newItem","newIdx"],"sources":["../src/components/menu.tsx"],"sourcesContent":["import * as menu from '@zag-js/menu'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class Menu extends ZagComponent {\n declare open: boolean\n\n createMachine(_props: any): any {\n return menu.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n open: props.open,\n defaultOpen: props.defaultOpen,\n closeOnSelect: props.closeOnSelect ?? true,\n loopFocus: props.loopFocus ?? false,\n positioning: props.positioning,\n onOpenChange: (details: menu.OpenChangeDetails) => {\n this.open = details.open\n props.onOpenChange?.(details)\n },\n onSelect: props.onSelect,\n }\n }\n\n connectApi(service: any) {\n return menu.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"trigger\"]': 'getTriggerProps',\n '[data-part=\"positioner\"]': 'getPositionerProps',\n '[data-part=\"content\"]': 'getContentProps',\n '[data-part=\"separator\"]': 'getSeparatorProps',\n '[data-part=\"item\"]': (api, el) => api.getItemProps({ value: (el as HTMLElement).dataset.value }),\n '[data-part=\"item-group\"]': (api, el) => api.getItemGroupProps({ id: (el as HTMLElement).dataset.groupId }),\n '[data-part=\"item-group-label\"]': (api, el) =>\n api.getItemGroupLabelProps({ htmlFor: (el as HTMLElement).dataset.htmlFor }),\n }\n }\n\n syncState(api: any) {\n this.open = api.open\n }\n\n template(props: any) {\n const items = props.items || []\n return (\n <div class={props.class || ''}>\n <button\n data-part=\"trigger\"\n class=\"menu-trigger inline-flex items-center justify-center gap-1 rounded-md border border-input bg-background px-4 py-2 text-sm font-medium shadow-xs hover:bg-accent hover:text-accent-foreground\"\n >\n {props.triggerLabel || 'Menu'}\n </button>\n <div data-part=\"positioner\" class=\"menu-positioner\">\n <div\n data-part=\"content\"\n class=\"menu-content z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\"\n >\n {items.map((item: any, i: number) =>\n item.type === 'separator' ? (\n <div key={`sep-${i}`} data-part=\"separator\" class=\"menu-separator -mx-1 my-1 h-px bg-muted\"></div>\n ) : (\n <div\n key={item.value}\n data-part=\"item\"\n data-value={item.value}\n class=\"menu-item relative flex cursor-pointer select-none items-center rounded-xs px-2 py-1.5 text-sm outline-hidden data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n {item.label}\n </div>\n ),\n )}\n </div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"menu.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveTextValue","reactiveAttr","createItemObservable","readItem","GEA_PROXY_RAW","_rescue","keyedList","menu","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","_tpl1_root","_tpl1_create","_tpl2_root","_tpl2_create","__rq_L0","Map","Menu","open","createMachine","_props","machine","getMachineProps","props","id","defaultOpen","closeOnSelect","loopFocus","positioning","onOpenChange","details","OpenChangeDetails","onSelect","connectApi","service","connect","getSpreadMap","[data-part=\"item\"]","api","el","getItemProps","value","HTMLElement","dataset","[data-part=\"item-group\"]","getItemGroupProps","groupId","[data-part=\"item-group-label\"]","getItemGroupLabelProps","htmlFor","syncState","d","items","root","cloneNode","el0","marker1","anchor2","childNodes","class","t1","triggerLabel","__ki_L0","__geaItemObservable","i","type","el1","marker2","t2","label","container","parentNode","anchor","disposer","pending","path","key","item","createEntry","idx","__k","__r","String","__raw","__prev","obs","current","_fire","__rd","child","__obs","__li","__el","element","patchEntry","e","newItem","newIdx"],"sources":["../src/components/menu.tsx"],"sourcesContent":["import * as menu from '@zag-js/menu'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class Menu extends ZagComponent {\n declare open: boolean\n\n createMachine(_props: any): any {\n return menu.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n open: props.open,\n defaultOpen: props.defaultOpen,\n closeOnSelect: props.closeOnSelect ?? true,\n loopFocus: props.loopFocus ?? false,\n positioning: props.positioning,\n onOpenChange: (details: menu.OpenChangeDetails) => {\n this.open = details.open\n props.onOpenChange?.(details)\n },\n onSelect: props.onSelect,\n }\n }\n\n connectApi(service: any) {\n return menu.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"trigger\"]': 'getTriggerProps',\n '[data-part=\"positioner\"]': 'getPositionerProps',\n '[data-part=\"content\"]': 'getContentProps',\n '[data-part=\"separator\"]': 'getSeparatorProps',\n '[data-part=\"item\"]': (api, el) => api.getItemProps({ value: (el as HTMLElement).dataset.value }),\n '[data-part=\"item-group\"]': (api, el) => api.getItemGroupProps({ id: (el as HTMLElement).dataset.groupId }),\n '[data-part=\"item-group-label\"]': (api, el) =>\n api.getItemGroupLabelProps({ htmlFor: (el as HTMLElement).dataset.htmlFor }),\n }\n }\n\n syncState(api: any) {\n this.open = api.open\n }\n\n template(props: any) {\n const items = props.items || []\n return (\n <div class={props.class || ''}>\n <button\n data-part=\"trigger\"\n class=\"menu-trigger inline-flex items-center justify-center gap-1 rounded-md border border-input bg-background px-4 py-2 text-sm font-medium shadow-xs hover:bg-accent hover:text-accent-foreground\"\n >\n {props.triggerLabel || 'Menu'}\n </button>\n <div data-part=\"positioner\" class=\"menu-positioner\">\n <div\n data-part=\"content\"\n class=\"menu-content z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\"\n >\n {items.map((item: any, i: number) =>\n item.type === 'separator' ? (\n <div key={`sep-${i}`} data-part=\"separator\" class=\"menu-separator -mx-1 my-1 h-px bg-muted\"></div>\n ) : (\n <div\n key={item.value}\n data-part=\"item\"\n data-value={item.value}\n class=\"menu-item relative flex cursor-pointer select-none items-center rounded-xs px-2 py-1.5 text-sm outline-hidden data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n {item.label}\n </div>\n ),\n )}\n </div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":";;;;;;;;;;AAIA,IAAIY,aAAa;AACjB,SAASC,eAAe;CACtB,MAAMC,IAAIC,SAASC,cAAc,WAAW;AAC5CF,GAAEG,YAAY;AACd,QAAOH,EAAEI,QAAQC;;AAEnB,IAAIC,aAAa;AACjB,SAASC,eAAe;CACtB,MAAMP,IAAIC,SAASC,cAAc,WAAW;AAC5CF,GAAEG,YAAY;AACd,QAAOH,EAAEI,QAAQC;;AAEnB,IAAIG,aAAa;AACjB,SAASC,eAAe;CACtB,MAAMT,IAAIC,SAASC,cAAc,WAAW;AAC5CF,GAAEG,YAAY;AACd,QAAOH,EAAEI,QAAQC;;AAEnB,MAAMK,0BAAU,IAAIC,KAAK;AACzB,IAAqBC,OAArB,cAAkCf,aAAa;CAE7CiB,cAAcC,QAAkB;AAC9B,SAAOpB,KAAKqB;;CAEdC,gBAAgBC,OAAY;AAC1B,SAAO;GACLC,IAAI,KAAKA;GACTN,MAAMK,MAAML;GACZO,aAAaF,MAAME;GACnBC,eAAeH,MAAMG,iBAAiB;GACtCC,WAAWJ,MAAMI,aAAa;GAC9BC,aAAaL,MAAMK;GACnBC,eAAeC,YAAoC;AACjD,SAAKZ,OAAOY,QAAQZ;AACpBK,UAAMM,eAAeC,QAAQ;;GAE/BE,UAAUT,MAAMS;GACjB;;CAEHC,WAAWC,SAAc;AACvB,SAAOlC,KAAKmC,QAAQD,SAASjC,eAAe;;CAE9CmC,eAAe;AACb,SAAO;GACL,2BAAyB;GACzB,8BAA4B;GAC5B,2BAAyB;GACzB,6BAA2B;GAC3B,yBAAuBE,KAAKC,OAAOD,IAAIE,aAAa,EAClDC,OAAQF,GAAmBI,QAAQF,OACpC,CAAC;GACF,+BAA6BH,KAAKC,OAAOD,IAAIO,kBAAkB,EAC7DrB,IAAKe,GAAmBI,QAAQG,SACjC,CAAC;GACF,qCAAmCR,KAAKC,OAAOD,IAAIU,uBAAuB,EACxEC,SAAUV,GAAmBI,QAAQM,SACtC,CAAA;GACF;;CAEHC,UAAUZ,KAAU;AAClB,OAAKpB,OAAOoB,IAAIpB;;CAElB,CAAC3B,qBAAqB4D,GAAG;AACT,OAAK5B,MAAM6B;EACzB,MAAMC,QAAQlD,eAAeA,aAAaC,cAAc,GAAGkD,UAAU,KAAK;EAC1E,MAAMC,MAAMF;EACZ,MAAMG,UAAUH,KAAK3C,WAAWA;EAChC,MAAM+C,UAAUJ,KAAKK,WAAW,GAAGhD,WAAWA;AAC9ClB,gBAAc+D,KAAKJ,GAAG,YAAY,KAAK5B,MAAMoC,SAAS,GAAG;AAEzDlE,oBAAkBmE,SAAIT,GAAG,YAAY,KAAK5B,MAAMsC,gBAAgB,OAAO;EACvE,MAAMC,WAAWC,qBAAqBC,GAAWb,MAAM;AACrD,OAAIvD,SAASmE,oBAAoB,CAACE,SAAS,aAAa;IACtD,MAAMZ,QAAQ1C,eAAeA,aAAaC,cAAc,GAAG0C,UAAU,KAAK;AAE1E5D,iBAAa6D,MAAKJ,GAAG,MAAM,aAAa,OAAOa,IAAI;AACnD,WAAOX;UACF;IACL,MAAMA,QAAQxC,eAAeA,aAAaC,cAAc,GAAGwC,UAAU,KAAK;IAC1E,MAAMC,MAAMF;IACZ,MAAMa,MAAMX;IACZ,MAAMY,UAAUd,KAAK3C;AACrBhB,iBAAa6D,KAAKJ,GAAG,MAAM,aAAavD,SAASmE,oBAAoB,CAACtB,MAAM;AAC5E/C,iBAAawE,KAAKf,GAAG,MAAM,oBAAoBvD,SAASmE,oBAAoB,CAACtB,MAAM;AAEnFhD,sBAAkB2E,SAAIjB,GAAG,YAAYvD,SAASmE,oBAAoB,CAACM,MAAM;AACzE,WAAOhB;;;AAGXtD,YAAU;GACRuE,WAAWb,QAAQc;GACnBC,QAAQf;GACRgB,UAAUtB;GACVE,MAAM;GACNqB,SAAS3D;GACT4D,YAAY,KAAKpD,MAAM6B,SAAS,EAAE;GAClCwB,MAAMC,MAAWb,MAAca,MAAMrD,MAAMqD,QAAQb;GACnDc,cAAcD,MAAME,QAAQ;IAC1B,MAAMC,MAAMH,MAAMrD,MAAMqD,QAAQE;IAChC,MAAME,MAAMnF,QAAQiB,SAASmE,OAAOF,IAAI,EAAEH,KAAK;AAC/C,QAAII,KAAK;KACP,MAAME,QAAQN,QAAQA,KAAKhF,kBAAkBgF;AAC7C,SAAII,IAAIJ,SAASM,OAAO;AACPF,UAAIJ;AACnBI,UAAIJ,OAAOM;AACXF,UAAII,IAAIC,UAAUT;AAClBI,UAAII,IAAIE,OAAO;;AAEjB,YAAON;;IAET,MAAMO,OAAOrC,EAAEsC,OAAO;IACtB,MAAMC,QAAQ/F,qBAAqBkF,KAAK;IAExC,MAAMe,OAAO9B,QAAQ6B,OAAMZ,KAAKS,KAAK;AACrC,WAAO;KACLZ,KAAKI;KACLH,MAAMA,QAAQA,KAAKhF,kBAAkBgF;KACrCgB,SAASD;KACTnB,UAAUe;KACVH,KAAKK;KACN;;GAEHI,aAAaC,GAAGC,SAASC,WAAW;AAElCF,MAAElB,OADYmB,WAAWA,QAAQnG,kBAAkBmG;AAEnDD,MAAEV,IAAIC,UAAUU;AAChBD,MAAEV,IAAIE,OAAO;;GAEhB,CAAC;AACF,SAAOlC"}
@@ -6,7 +6,7 @@ import { t as reactiveClass } from "./reactive-class.mjs";
6
6
  import { t as conditionalTruthy } from "./conditional-truthy.mjs";
7
7
  import { n as _rescue, t as keyedList } from "./keyed-list.mjs";
8
8
  import { t as GEA_DOM_ITEM } from "./keyed-list-symbols.mjs";
9
- import { n as createItemProxy, t as createItemObservable } from "./item-obs.mjs";
9
+ import { n as readItem, t as createItemObservable } from "./item-obs.mjs";
10
10
  import { normalizeProps } from "@zag-js/vanilla";
11
11
  import * as pinInput from "@zag-js/pin-input";
12
12
  //#region src/components/pin-input.tsx
@@ -92,13 +92,13 @@ var PinInput = class extends ZagComponent {
92
92
  reactiveTextValue(t0, d, this, () => this.props.label);
93
93
  return root;
94
94
  });
95
- const __ki_L0 = (i, idx, d) => {
95
+ const __ki_L0 = (__geaItemObservable, idx, d) => {
96
96
  const root = (_tpl2_root || (_tpl2_root = _tpl2_create())).cloneNode(true);
97
97
  const el0 = root;
98
98
  const el1 = el0;
99
- reactiveAttr(el0, d, this, "key", () => i);
100
- reactiveAttr(el1, d, this, "data-index", () => String(i));
101
- root[GEA_DOM_ITEM] = i;
99
+ reactiveAttr(el0, d, this, "key", () => readItem(__geaItemObservable));
100
+ reactiveAttr(el1, d, this, "data-index", () => String(readItem(__geaItemObservable)));
101
+ root[GEA_DOM_ITEM] = readItem(__geaItemObservable);
102
102
  return root;
103
103
  };
104
104
  keyedList({
@@ -124,7 +124,7 @@ var PinInput = class extends ZagComponent {
124
124
  }
125
125
  const __rd = d.child();
126
126
  const __obs = createItemObservable(item);
127
- const __el = __ki_L0(item !== null && typeof item === "object" ? createItemProxy(__obs) : item, idx, __rd);
127
+ const __el = __ki_L0(__obs, idx, __rd);
128
128
  return {
129
129
  key: __k,
130
130
  item: item && item[GEA_PROXY_RAW] || item,
@@ -1 +1 @@
1
- {"version":3,"file":"pin-input.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveTextValue","conditionalTruthy","reactiveAttr","GEA_DOM_ITEM","createItemObservable","createItemProxy","GEA_PROXY_RAW","_rescue","keyedList","pinInput","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","_tpl1_root","_tpl1_create","_tpl2_root","_tpl2_create","__rq_L0","Map","PinInput","value","valueAsString","createMachine","_props","machine","getMachineProps","props","id","defaultValue","count","type","otp","mask","placeholder","disabled","readOnly","invalid","name","form","blurOnComplete","autoFocus","onValueChange","details","ValueChangeDetails","onValueComplete","onValueInvalid","connectApi","service","connect","getSpreadMap","[data-part=\"input\"]","api","el","index","parseInt","HTMLElement","dataset","getInputProps","syncState","d","inputs","Array","from","length","_","i","root","cloneNode","el0","anchor1","anchor2","childNodes","class","parentNode","label","marker0","t0","__ki_L0","idx","el1","String","container","anchor","disposer","pending","path","key","createEntry","item","__k","__r","__raw","__prev","obs","current","_fire","__rd","child","__obs","__li","__el","element","patchEntry","e","newItem","newIdx"],"sources":["../src/components/pin-input.tsx"],"sourcesContent":["import * as pinInput from '@zag-js/pin-input'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class PinInput extends ZagComponent {\n declare value: string[]\n declare valueAsString: string\n\n createMachine(_props: any): any {\n return pinInput.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n value: props.value,\n defaultValue: props.defaultValue,\n count: props.count ?? 4,\n type: props.type ?? 'numeric',\n otp: props.otp ?? false,\n mask: props.mask ?? false,\n placeholder: props.placeholder ?? '○',\n disabled: props.disabled,\n readOnly: props.readOnly,\n invalid: props.invalid,\n name: props.name,\n form: props.form,\n blurOnComplete: props.blurOnComplete ?? false,\n autoFocus: props.autoFocus,\n onValueChange: (details: pinInput.ValueChangeDetails) => {\n this.value = details.value\n this.valueAsString = details.valueAsString\n props.onValueChange?.(details)\n },\n onValueComplete: props.onValueComplete,\n onValueInvalid: props.onValueInvalid,\n }\n }\n\n connectApi(service: any) {\n return pinInput.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"control\"]': 'getControlProps',\n '[data-part=\"hidden-input\"]': 'getHiddenInputProps',\n '[data-part=\"input\"]': (api, el) => {\n const index = parseInt((el as HTMLElement).dataset.index || '0', 10)\n return api.getInputProps({ index })\n },\n }\n }\n\n syncState(api: any) {\n this.value = api.value\n this.valueAsString = api.valueAsString\n }\n\n template(props: any) {\n const count = props.count ?? 4\n const inputs = Array.from({ length: count }, (_, i) => i)\n return (\n <div data-part=\"root\" class={props.class || ''}>\n {props.label && (\n <label data-part=\"label\" class=\"pin-input-label text-sm font-medium mb-2 block\">\n {props.label}\n </label>\n )}\n <div data-part=\"control\" class=\"pin-input-control flex gap-2\">\n {inputs.map((i: number) => (\n <input\n key={i}\n data-part=\"input\"\n data-index={String(i)}\n class=\"pin-input-field h-9 w-9 rounded-md border border-input bg-transparent text-center text-sm shadow-xs focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring\"\n />\n ))}\n </div>\n <input data-part=\"hidden-input\" type=\"hidden\" />\n </div>\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"pin-input.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveTextValue","conditionalTruthy","reactiveAttr","GEA_DOM_ITEM","createItemObservable","readItem","GEA_PROXY_RAW","_rescue","keyedList","pinInput","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","_tpl1_root","_tpl1_create","_tpl2_root","_tpl2_create","__rq_L0","Map","PinInput","value","valueAsString","createMachine","_props","machine","getMachineProps","props","id","defaultValue","count","type","otp","mask","placeholder","disabled","readOnly","invalid","name","form","blurOnComplete","autoFocus","onValueChange","details","ValueChangeDetails","onValueComplete","onValueInvalid","connectApi","service","connect","getSpreadMap","[data-part=\"input\"]","api","el","index","parseInt","HTMLElement","dataset","getInputProps","syncState","d","inputs","Array","from","length","_","i","root","cloneNode","el0","anchor1","anchor2","childNodes","class","parentNode","label","marker0","t0","__ki_L0","__geaItemObservable","idx","el1","String","container","anchor","disposer","pending","path","key","createEntry","item","__k","__r","__raw","__prev","obs","current","_fire","__rd","child","__obs","__li","__el","element","patchEntry","e","newItem","newIdx"],"sources":["../src/components/pin-input.tsx"],"sourcesContent":["import * as pinInput from '@zag-js/pin-input'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class PinInput extends ZagComponent {\n declare value: string[]\n declare valueAsString: string\n\n createMachine(_props: any): any {\n return pinInput.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n value: props.value,\n defaultValue: props.defaultValue,\n count: props.count ?? 4,\n type: props.type ?? 'numeric',\n otp: props.otp ?? false,\n mask: props.mask ?? false,\n placeholder: props.placeholder ?? '○',\n disabled: props.disabled,\n readOnly: props.readOnly,\n invalid: props.invalid,\n name: props.name,\n form: props.form,\n blurOnComplete: props.blurOnComplete ?? false,\n autoFocus: props.autoFocus,\n onValueChange: (details: pinInput.ValueChangeDetails) => {\n this.value = details.value\n this.valueAsString = details.valueAsString\n props.onValueChange?.(details)\n },\n onValueComplete: props.onValueComplete,\n onValueInvalid: props.onValueInvalid,\n }\n }\n\n connectApi(service: any) {\n return pinInput.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"control\"]': 'getControlProps',\n '[data-part=\"hidden-input\"]': 'getHiddenInputProps',\n '[data-part=\"input\"]': (api, el) => {\n const index = parseInt((el as HTMLElement).dataset.index || '0', 10)\n return api.getInputProps({ index })\n },\n }\n }\n\n syncState(api: any) {\n this.value = api.value\n this.valueAsString = api.valueAsString\n }\n\n template(props: any) {\n const count = props.count ?? 4\n const inputs = Array.from({ length: count }, (_, i) => i)\n return (\n <div data-part=\"root\" class={props.class || ''}>\n {props.label && (\n <label data-part=\"label\" class=\"pin-input-label text-sm font-medium mb-2 block\">\n {props.label}\n </label>\n )}\n <div data-part=\"control\" class=\"pin-input-control flex gap-2\">\n {inputs.map((i: number) => (\n <input\n key={i}\n data-part=\"input\"\n data-index={String(i)}\n class=\"pin-input-field h-9 w-9 rounded-md border border-input bg-transparent text-center text-sm shadow-xs focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring\"\n />\n ))}\n </div>\n <input data-part=\"hidden-input\" type=\"hidden\" />\n </div>\n )\n }\n}\n"],"mappings":"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"}
package/dist/progress.mjs CHANGED
@@ -2,7 +2,7 @@ import { t as ZagComponent } from "./zag-component.mjs";
2
2
  import { o as GEA_CREATE_TEMPLATE } from "./bind.mjs";
3
3
  import { n as reactiveTextValue } from "./reactive-text.mjs";
4
4
  import { t as reactiveClass } from "./reactive-class.mjs";
5
- import { t as reactiveStyle } from "./reactive-style.mjs";
5
+ import { t as reactiveStyleProp } from "./reactive-style.mjs";
6
6
  import { t as conditionalTruthy } from "./conditional-truthy.mjs";
7
7
  import { normalizeProps } from "@zag-js/vanilla";
8
8
  import * as progress from "@zag-js/progress";
@@ -70,7 +70,7 @@ var Progress = class extends ZagComponent {
70
70
  const t2 = document.createTextNode("");
71
71
  marker2.replaceWith(t2);
72
72
  reactiveTextValue(t2, d, this, ["percent"]);
73
- reactiveStyle(el3, d, this, () => ({ width: `${this.percent}%` }));
73
+ reactiveStyleProp(el3, d, this, "width", () => `${this.percent}%`);
74
74
  return root;
75
75
  }
76
76
  };
@@ -1 +1 @@
1
- {"version":3,"file":"progress.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveTextValue","conditionalTruthy","reactiveStyle","progress","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","_tpl1_root","_tpl1_create","Progress","value","percent","createMachine","_props","machine","getMachineProps","props","id","defaultValue","min","max","orientation","onValueChange","connectApi","service","connect","getSpreadMap","syncState","api","d","root","cloneNode","el0","anchor1","marker2","childNodes","el3","class","parentNode","label","marker0","t0","t2","createTextNode","replaceWith","width"],"sources":["../src/components/progress.tsx"],"sourcesContent":["import * as progress from '@zag-js/progress'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class Progress extends ZagComponent {\n declare value: number | null\n percent = 0\n\n createMachine(_props: any): any {\n return progress.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n value: props.value,\n defaultValue: props.defaultValue ?? 0,\n min: props.min ?? 0,\n max: props.max ?? 100,\n orientation: props.orientation,\n onValueChange: props.onValueChange,\n }\n }\n\n connectApi(service: any) {\n return progress.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"track\"]': 'getTrackProps',\n '[data-part=\"range\"]': 'getRangeProps',\n '[data-part=\"value-text\"]': 'getValueTextProps',\n }\n }\n\n syncState(api: any) {\n this.value = api.value\n this.percent = api.percent\n }\n\n template(props: any) {\n return (\n <div data-part=\"root\" class={props.class || ''}>\n <div class=\"flex justify-between mb-1\">\n {props.label && (\n <span data-part=\"label\" class=\"progress-label text-sm font-medium\">\n {props.label}\n </span>\n )}\n <span data-part=\"value-text\" class=\"progress-value-text text-sm text-muted-foreground\">\n {this.percent}%\n </span>\n </div>\n <div data-part=\"track\" class=\"progress-track relative h-2 w-full overflow-hidden rounded-full bg-primary/20\">\n <div\n data-part=\"range\"\n class=\"progress-range h-full w-full flex-1 bg-primary transition-all\"\n style={{ width: `${this.percent}%` }}\n ></div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":";;;;;;;;;AAIA,IAAIQ,aAAa;AACjB,SAASC,eAAe;CACtB,MAAMC,IAAIC,SAASC,cAAc,WAAW;AAC5CF,GAAEG,YAAY;AACd,QAAOH,EAAEI,QAAQC;;AAEnB,IAAIC,aAAa;AACjB,SAASC,eAAe;CACtB,MAAMP,IAAIC,SAASC,cAAc,WAAW;AAC5CF,GAAEG,YAAY;AACd,QAAOH,EAAEI,QAAQC;;AAEnB,IAAqBG,WAArB,cAAsCX,aAAa;;;iBAEvC;;CACVc,cAAcC,QAAkB;AAC9B,SAAOjB,SAASkB;;CAElBC,gBAAgBC,OAAY;AAC1B,SAAO;GACLC,IAAI,KAAKA;GACTP,OAAOM,MAAMN;GACbQ,cAAcF,MAAME,gBAAgB;GACpCC,KAAKH,MAAMG,OAAO;GAClBC,KAAKJ,MAAMI,OAAO;GAClBC,aAAaL,MAAMK;GACnBC,eAAeN,MAAMM;GACtB;;CAEHC,WAAWC,SAAc;AACvB,SAAO5B,SAAS6B,QAAQD,SAAS3B,eAAe;;CAElD6B,eAAe;AACb,SAAO;GACL,wBAAsB;GACtB,yBAAuB;GACvB,yBAAuB;GACvB,yBAAuB;GACvB,8BAA4B;GAC7B;;CAEHC,UAAUC,KAAU;AAClB,OAAKlB,QAAQkB,IAAIlB;AACjB,OAAKC,UAAUiB,IAAIjB;;CAErB,CAACpB,qBAAqBsC,GAAG;EACvB,MAAMC,QAAQ/B,eAAeA,aAAaC,cAAc,GAAG+B,UAAU,KAAK;EAC1E,MAAMC,MAAMF;EACZ,MAAMG,UAAUH,KAAKxB,WAAWA;EAChC,MAAM4B,UAAUJ,KAAKxB,WAAW6B,WAAW,GAAG7B;EAC9C,MAAM8B,MAAMN,KAAKK,WAAW,GAAG7B;AAC/Bd,gBAAcwC,KAAKH,GAAG,YAAY,KAAKb,MAAMqB,SAAS,GAAG;AACzD3C,oBAAkBuC,QAAQK,YAAYL,SAASJ,GAAG,YAAY,KAAKb,MAAMuB,QAAOV,MAAK;GACnF,MAAMC,QAAQvB,eAAeA,aAAaC,cAAc,GAAGuB,UAAU,KAAK;GAE1E,MAAMU,KADUX,KAAKxB;AAErBb,qBAAkBgD,IAAIZ,GAAG,YAAY,KAAKb,MAAMuB,MAAM;AACtD,UAAOT;IACP;EACF,MAAMY,KAAKxC,SAASyC,eAAe,GAAG;AACtCT,UAAQU,YAAYF,GAAG;AACvBjD,oBAAkBiD,IAAIb,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3ClC,gBAAcyC,KAAKP,GAAG,aAAa,EACjCgB,OAAO,GAAG,KAAKlC,QAAO,IACvB,EAAE;AACH,SAAOmB"}
1
+ {"version":3,"file":"progress.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveTextValue","conditionalTruthy","reactiveStyleProp","progress","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","_tpl1_root","_tpl1_create","Progress","value","percent","createMachine","_props","machine","getMachineProps","props","id","defaultValue","min","max","orientation","onValueChange","connectApi","service","connect","getSpreadMap","syncState","api","d","root","cloneNode","el0","anchor1","marker2","childNodes","el3","class","parentNode","label","marker0","t0","t2","createTextNode","replaceWith"],"sources":["../src/components/progress.tsx"],"sourcesContent":["import * as progress from '@zag-js/progress'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class Progress extends ZagComponent {\n declare value: number | null\n percent = 0\n\n createMachine(_props: any): any {\n return progress.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n value: props.value,\n defaultValue: props.defaultValue ?? 0,\n min: props.min ?? 0,\n max: props.max ?? 100,\n orientation: props.orientation,\n onValueChange: props.onValueChange,\n }\n }\n\n connectApi(service: any) {\n return progress.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"track\"]': 'getTrackProps',\n '[data-part=\"range\"]': 'getRangeProps',\n '[data-part=\"value-text\"]': 'getValueTextProps',\n }\n }\n\n syncState(api: any) {\n this.value = api.value\n this.percent = api.percent\n }\n\n template(props: any) {\n return (\n <div data-part=\"root\" class={props.class || ''}>\n <div class=\"flex justify-between mb-1\">\n {props.label && (\n <span data-part=\"label\" class=\"progress-label text-sm font-medium\">\n {props.label}\n </span>\n )}\n <span data-part=\"value-text\" class=\"progress-value-text text-sm text-muted-foreground\">\n {this.percent}%\n </span>\n </div>\n <div data-part=\"track\" class=\"progress-track relative h-2 w-full overflow-hidden rounded-full bg-primary/20\">\n <div\n data-part=\"range\"\n class=\"progress-range h-full w-full flex-1 bg-primary transition-all\"\n style={{ width: `${this.percent}%` }}\n ></div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":";;;;;;;;;AAIA,IAAIQ,aAAa;AACjB,SAASC,eAAe;CACtB,MAAMC,IAAIC,SAASC,cAAc,WAAW;AAC5CF,GAAEG,YAAY;AACd,QAAOH,EAAEI,QAAQC;;AAEnB,IAAIC,aAAa;AACjB,SAASC,eAAe;CACtB,MAAMP,IAAIC,SAASC,cAAc,WAAW;AAC5CF,GAAEG,YAAY;AACd,QAAOH,EAAEI,QAAQC;;AAEnB,IAAqBG,WAArB,cAAsCX,aAAa;;;iBAEvC;;CACVc,cAAcC,QAAkB;AAC9B,SAAOjB,SAASkB;;CAElBC,gBAAgBC,OAAY;AAC1B,SAAO;GACLC,IAAI,KAAKA;GACTP,OAAOM,MAAMN;GACbQ,cAAcF,MAAME,gBAAgB;GACpCC,KAAKH,MAAMG,OAAO;GAClBC,KAAKJ,MAAMI,OAAO;GAClBC,aAAaL,MAAMK;GACnBC,eAAeN,MAAMM;GACtB;;CAEHC,WAAWC,SAAc;AACvB,SAAO5B,SAAS6B,QAAQD,SAAS3B,eAAe;;CAElD6B,eAAe;AACb,SAAO;GACL,wBAAsB;GACtB,yBAAuB;GACvB,yBAAuB;GACvB,yBAAuB;GACvB,8BAA4B;GAC7B;;CAEHC,UAAUC,KAAU;AAClB,OAAKlB,QAAQkB,IAAIlB;AACjB,OAAKC,UAAUiB,IAAIjB;;CAErB,CAACpB,qBAAqBsC,GAAG;EACvB,MAAMC,QAAQ/B,eAAeA,aAAaC,cAAc,GAAG+B,UAAU,KAAK;EAC1E,MAAMC,MAAMF;EACZ,MAAMG,UAAUH,KAAKxB,WAAWA;EAChC,MAAM4B,UAAUJ,KAAKxB,WAAW6B,WAAW,GAAG7B;EAC9C,MAAM8B,MAAMN,KAAKK,WAAW,GAAG7B;AAC/Bd,gBAAcwC,KAAKH,GAAG,YAAY,KAAKb,MAAMqB,SAAS,GAAG;AACzD3C,oBAAkBuC,QAAQK,YAAYL,SAASJ,GAAG,YAAY,KAAKb,MAAMuB,QAAOV,MAAK;GACnF,MAAMC,QAAQvB,eAAeA,aAAaC,cAAc,GAAGuB,UAAU,KAAK;GAE1E,MAAMU,KADUX,KAAKxB;AAErBb,qBAAkBgD,IAAIZ,GAAG,YAAY,KAAKb,MAAMuB,MAAM;AACtD,UAAOT;IACP;EACF,MAAMY,KAAKxC,SAASyC,eAAe,GAAG;AACtCT,UAAQU,YAAYF,GAAG;AACvBjD,oBAAkBiD,IAAIb,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3ClC,oBAAkByC,KAAKP,GAAG,MAAM,eAAe,GAAG,KAAKlB,QAAO,GAAI;AAClE,SAAOmB"}
@@ -3,11 +3,11 @@ import { o as GEA_CREATE_TEMPLATE, u as GEA_PROXY_RAW } from "./bind.mjs";
3
3
  import { n as reactiveTextValue } from "./reactive-text.mjs";
4
4
  import { t as reactiveAttr } from "./reactive-attr.mjs";
5
5
  import { t as reactiveClass } from "./reactive-class.mjs";
6
- import { t as reactiveStyle } from "./reactive-style.mjs";
6
+ import { t as reactiveStyleProp } from "./reactive-style.mjs";
7
7
  import { t as conditionalTruthy } from "./conditional-truthy.mjs";
8
8
  import { n as _rescue, t as keyedList } from "./keyed-list.mjs";
9
9
  import { t as GEA_DOM_ITEM } from "./keyed-list-symbols.mjs";
10
- import { n as createItemProxy, t as createItemObservable } from "./item-obs.mjs";
10
+ import { n as readItem, t as createItemObservable } from "./item-obs.mjs";
11
11
  import { normalizeProps } from "@zag-js/vanilla";
12
12
  import * as ratingGroup from "@zag-js/rating-group";
13
13
  //#region src/components/rating-group.tsx
@@ -111,15 +111,15 @@ var RatingGroup = class extends ZagComponent {
111
111
  reactiveTextValue(t0, d, this, () => this.props.label);
112
112
  return root;
113
113
  });
114
- const __ki_L0 = (i, idx, d) => {
114
+ const __ki_L0 = (__geaItemObservable, idx, d) => {
115
115
  const root = (_tpl2_root || (_tpl2_root = _tpl2_create())).cloneNode(true);
116
116
  const el0 = root;
117
117
  const el1 = el0;
118
118
  const el2 = el0;
119
- reactiveAttr(el0, d, this, "key", () => i);
120
- reactiveAttr(el1, d, this, "data-index", () => String(i));
121
- reactiveStyle(el2, d, this, () => ({ lineHeight: 1 }));
122
- root[GEA_DOM_ITEM] = i;
119
+ reactiveAttr(el0, d, this, "key", () => readItem(__geaItemObservable));
120
+ reactiveAttr(el1, d, this, "data-index", () => String(readItem(__geaItemObservable)));
121
+ reactiveStyleProp(el2, d, this, "line-height", () => 1);
122
+ root[GEA_DOM_ITEM] = readItem(__geaItemObservable);
123
123
  return root;
124
124
  };
125
125
  keyedList({
@@ -145,7 +145,7 @@ var RatingGroup = class extends ZagComponent {
145
145
  }
146
146
  const __rd = d.child();
147
147
  const __obs = createItemObservable(item);
148
- const __el = __ki_L0(item !== null && typeof item === "object" ? createItemProxy(__obs) : item, idx, __rd);
148
+ const __el = __ki_L0(__obs, idx, __rd);
149
149
  return {
150
150
  key: __k,
151
151
  item: item && item[GEA_PROXY_RAW] || item,
@@ -1 +1 @@
1
- {"version":3,"file":"rating-group.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveTextValue","conditionalTruthy","reactiveAttr","reactiveStyle","GEA_DOM_ITEM","createItemObservable","createItemProxy","GEA_PROXY_RAW","_rescue","keyedList","ratingGroup","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","_tpl1_root","_tpl1_create","_tpl2_root","_tpl2_create","__rq_L0","Map","RatingGroup","value","_allowHalf","createMachine","_props","machine","getMachineProps","props","allowHalf","id","defaultValue","count","readOnly","disabled","name","form","onValueChange","details","ValueChangeDetails","connectApi","service","connect","getSpreadMap","[data-part=\"item\"]","api","el","htmlEl","HTMLElement","index","parseInt","dataset","getItemProps","onpointerdown","e","PointerEvent","rect","getBoundingClientRect","isLeftHalf","clientX","left","width","setValue","syncState","_applyAllSpreads","_api","items","querySelectorAll","i","length","state","getItemState","half","style","background","backgroundClip","setProperty","d","Array","from","_","root","cloneNode","el0","anchor1","anchor2","childNodes","class","parentNode","label","marker0","t0","__ki_L0","idx","el1","el2","String","lineHeight","container","anchor","disposer","pending","path","key","createEntry","item","__k","__r","__raw","__prev","obs","current","_fire","__rd","child","__obs","__li","__el","element","patchEntry","newItem","newIdx"],"sources":["../src/components/rating-group.tsx"],"sourcesContent":["import * as ratingGroup from '@zag-js/rating-group'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class RatingGroup extends ZagComponent {\n declare value: number\n declare _allowHalf: boolean\n\n createMachine(_props: any): any {\n return ratingGroup.machine\n }\n\n getMachineProps(props: any) {\n this._allowHalf = !!props.allowHalf\n return {\n id: this.id,\n value: props.value,\n defaultValue: props.defaultValue,\n count: props.count ?? 5,\n allowHalf: !!props.allowHalf,\n readOnly: props.readOnly,\n disabled: props.disabled,\n name: props.name,\n form: props.form,\n onValueChange: (details: ratingGroup.ValueChangeDetails) => {\n this.value = details.value\n props.onValueChange?.(details)\n },\n }\n }\n\n connectApi(service: any) {\n return ratingGroup.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"control\"]': 'getControlProps',\n '[data-part=\"hidden-input\"]': 'getHiddenInputProps',\n '[data-part=\"item\"]': (api, el) => {\n const htmlEl = el as HTMLElement\n const index = parseInt(htmlEl.dataset.index || '0', 10)\n const props = api.getItemProps({ index })\n if (this._allowHalf) {\n props.onpointerdown = (e: PointerEvent) => {\n const rect = htmlEl.getBoundingClientRect()\n const isLeftHalf = e.clientX - rect.left < rect.width / 2\n api.setValue(isLeftHalf ? index - 0.5 : index)\n }\n }\n return props\n },\n }\n }\n\n syncState(api: any) {\n this.value = api.value\n }\n\n _applyAllSpreads() {\n super._applyAllSpreads()\n if (!this._api || !this.el) return\n const items = this.el.querySelectorAll('[data-part=\"item\"]')\n for (let i = 0; i < items.length; i++) {\n const el = items[i] as HTMLElement\n const index = parseInt(el.dataset.index || '0', 10)\n const state = this._api.getItemState({ index })\n if (state.half) {\n el.style.background = 'linear-gradient(90deg, #facc15 50%, hsl(var(--muted-foreground)) 50%)'\n el.style.backgroundClip = 'text'\n el.style.setProperty('-webkit-background-clip', 'text')\n el.style.setProperty('-webkit-text-fill-color', 'transparent')\n } else {\n el.style.background = ''\n el.style.backgroundClip = ''\n el.style.setProperty('-webkit-background-clip', '')\n el.style.setProperty('-webkit-text-fill-color', '')\n }\n }\n }\n\n template(props: any) {\n const count = props.count ?? 5\n const items = Array.from({ length: count }, (_, i) => i + 1)\n return (\n <div data-part=\"root\" class={props.class || ''}>\n {props.label && (\n <label data-part=\"label\" class=\"rating-group-label text-sm font-medium mb-1 block\">\n {props.label}\n </label>\n )}\n <div data-part=\"control\" class=\"rating-group-control flex gap-0.5\">\n {items.map((i: number) => (\n <span\n key={i}\n data-part=\"item\"\n data-index={String(i)}\n class=\"rating-group-item cursor-pointer text-2xl text-muted-foreground data-[highlighted]:text-yellow-400 data-[checked]:text-yellow-400\"\n style={{ lineHeight: 1 }}\n >\n &#x2605;\n </span>\n ))}\n </div>\n <input data-part=\"hidden-input\" type=\"hidden\" />\n </div>\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"rating-group.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveTextValue","conditionalTruthy","reactiveAttr","reactiveStyleProp","GEA_DOM_ITEM","createItemObservable","readItem","GEA_PROXY_RAW","_rescue","keyedList","ratingGroup","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","_tpl1_root","_tpl1_create","_tpl2_root","_tpl2_create","__rq_L0","Map","RatingGroup","value","_allowHalf","createMachine","_props","machine","getMachineProps","props","allowHalf","id","defaultValue","count","readOnly","disabled","name","form","onValueChange","details","ValueChangeDetails","connectApi","service","connect","getSpreadMap","[data-part=\"item\"]","api","el","htmlEl","HTMLElement","index","parseInt","dataset","getItemProps","onpointerdown","e","PointerEvent","rect","getBoundingClientRect","isLeftHalf","clientX","left","width","setValue","syncState","_applyAllSpreads","_api","items","querySelectorAll","i","length","state","getItemState","half","style","background","backgroundClip","setProperty","d","Array","from","_","root","cloneNode","el0","anchor1","anchor2","childNodes","class","parentNode","label","marker0","t0","__ki_L0","__geaItemObservable","idx","el1","el2","String","container","anchor","disposer","pending","path","key","createEntry","item","__k","__r","__raw","__prev","obs","current","_fire","__rd","child","__obs","__li","__el","element","patchEntry","newItem","newIdx"],"sources":["../src/components/rating-group.tsx"],"sourcesContent":["import * as ratingGroup from '@zag-js/rating-group'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class RatingGroup extends ZagComponent {\n declare value: number\n declare _allowHalf: boolean\n\n createMachine(_props: any): any {\n return ratingGroup.machine\n }\n\n getMachineProps(props: any) {\n this._allowHalf = !!props.allowHalf\n return {\n id: this.id,\n value: props.value,\n defaultValue: props.defaultValue,\n count: props.count ?? 5,\n allowHalf: !!props.allowHalf,\n readOnly: props.readOnly,\n disabled: props.disabled,\n name: props.name,\n form: props.form,\n onValueChange: (details: ratingGroup.ValueChangeDetails) => {\n this.value = details.value\n props.onValueChange?.(details)\n },\n }\n }\n\n connectApi(service: any) {\n return ratingGroup.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"control\"]': 'getControlProps',\n '[data-part=\"hidden-input\"]': 'getHiddenInputProps',\n '[data-part=\"item\"]': (api, el) => {\n const htmlEl = el as HTMLElement\n const index = parseInt(htmlEl.dataset.index || '0', 10)\n const props = api.getItemProps({ index })\n if (this._allowHalf) {\n props.onpointerdown = (e: PointerEvent) => {\n const rect = htmlEl.getBoundingClientRect()\n const isLeftHalf = e.clientX - rect.left < rect.width / 2\n api.setValue(isLeftHalf ? index - 0.5 : index)\n }\n }\n return props\n },\n }\n }\n\n syncState(api: any) {\n this.value = api.value\n }\n\n _applyAllSpreads() {\n super._applyAllSpreads()\n if (!this._api || !this.el) return\n const items = this.el.querySelectorAll('[data-part=\"item\"]')\n for (let i = 0; i < items.length; i++) {\n const el = items[i] as HTMLElement\n const index = parseInt(el.dataset.index || '0', 10)\n const state = this._api.getItemState({ index })\n if (state.half) {\n el.style.background = 'linear-gradient(90deg, #facc15 50%, hsl(var(--muted-foreground)) 50%)'\n el.style.backgroundClip = 'text'\n el.style.setProperty('-webkit-background-clip', 'text')\n el.style.setProperty('-webkit-text-fill-color', 'transparent')\n } else {\n el.style.background = ''\n el.style.backgroundClip = ''\n el.style.setProperty('-webkit-background-clip', '')\n el.style.setProperty('-webkit-text-fill-color', '')\n }\n }\n }\n\n template(props: any) {\n const count = props.count ?? 5\n const items = Array.from({ length: count }, (_, i) => i + 1)\n return (\n <div data-part=\"root\" class={props.class || ''}>\n {props.label && (\n <label data-part=\"label\" class=\"rating-group-label text-sm font-medium mb-1 block\">\n {props.label}\n </label>\n )}\n <div data-part=\"control\" class=\"rating-group-control flex gap-0.5\">\n {items.map((i: number) => (\n <span\n key={i}\n data-part=\"item\"\n data-index={String(i)}\n class=\"rating-group-item cursor-pointer text-2xl text-muted-foreground data-[highlighted]:text-yellow-400 data-[checked]:text-yellow-400\"\n style={{ lineHeight: 1 }}\n >\n &#x2605;\n </span>\n ))}\n </div>\n <input data-part=\"hidden-input\" type=\"hidden\" />\n </div>\n )\n }\n}\n"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { t as bind } from "./bind.mjs";
2
2
  import { t as patch } from "./patch.mjs";
3
3
  //#region ../gea/src/runtime/reactive-attr.ts
4
- const reactiveAttr = (el, d, root, attrName, pathOrGetter) => {
4
+ function reactiveAttr(el, d, root, attrName, pathOrGetter) {
5
5
  let prev = void 0;
6
6
  bind(d, root, pathOrGetter, (v) => {
7
7
  prev = patch(el, "attr", prev, v, attrName);
8
8
  });
9
- };
9
+ }
10
10
  //#endregion
11
11
  export { reactiveAttr as t };
12
12
 
@@ -1 +1 @@
1
- {"version":3,"file":"reactive-attr.mjs","names":[],"sources":["../../gea/src/runtime/reactive-attr.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\nimport { patch } from './patch'\n\nexport const reactiveAttr = (\n el: Element,\n d: Disposer,\n root: any,\n attrName: string,\n pathOrGetter: readonly string[] | (() => unknown),\n): void => {\n let prev: unknown = undefined\n bind(d, root, pathOrGetter, (v) => {\n prev = patch(el, 'attr', prev, v, attrName)\n })\n}\n"],"mappings":";;;AAIA,MAAa,gBACX,IACA,GACA,MACA,UACA,iBACS;CACT,IAAI,OAAgB,KAAA;AACpB,MAAK,GAAG,MAAM,eAAe,MAAM;AACjC,SAAO,MAAM,IAAI,QAAQ,MAAM,GAAG,SAAS;GAC3C"}
1
+ {"version":3,"file":"reactive-attr.mjs","names":[],"sources":["../../gea/src/runtime/reactive-attr.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\nimport { patch } from './patch'\n\nexport function reactiveAttr(\n el: Element,\n d: Disposer,\n root: any,\n attrName: string,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n let prev: unknown = undefined\n bind(d, root, pathOrGetter, (v) => {\n prev = patch(el, 'attr', prev, v, attrName)\n })\n}\n"],"mappings":";;;AAIA,SAAgB,aACd,IACA,GACA,MACA,UACA,cACM;CACN,IAAI,OAAgB,KAAA;AACpB,MAAK,GAAG,MAAM,eAAe,MAAM;AACjC,SAAO,MAAM,IAAI,QAAQ,MAAM,GAAG,SAAS;GAC3C"}
@@ -1,12 +1,12 @@
1
1
  import { t as bind } from "./bind.mjs";
2
2
  import { t as patch } from "./patch.mjs";
3
3
  //#region ../gea/src/runtime/reactive-bool.ts
4
- const reactiveBoolAttr = (el, d, root, target, pathOrGetter) => {
4
+ function reactiveBoolAttr(el, d, root, target, pathOrGetter) {
5
5
  let prev = void 0;
6
6
  bind(d, root, pathOrGetter, (v) => {
7
7
  prev = patch(el, "bool", prev, v, target);
8
8
  });
9
- };
9
+ }
10
10
  //#endregion
11
11
  export { reactiveBoolAttr as t };
12
12
 
@@ -1 +1 @@
1
- {"version":3,"file":"reactive-bool.mjs","names":[],"sources":["../../gea/src/runtime/reactive-bool.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\nimport { patch } from './patch'\n\nexport const reactiveBoolAttr = (\n el: Element,\n d: Disposer,\n root: any,\n target: string,\n pathOrGetter: readonly string[] | (() => unknown),\n): void => {\n let prev: unknown = undefined\n bind(d, root, pathOrGetter, (v) => {\n prev = patch(el, 'bool', prev, v, target)\n })\n}\n\nexport const reactiveBool = (\n el: Element,\n d: Disposer,\n root: any,\n target: string,\n pathOrGetter: readonly string[] | (() => unknown),\n mode: 'attr' | 'visible' = 'attr',\n): void => {\n if (mode === 'attr') {\n reactiveBoolAttr(el, d, root, target, pathOrGetter)\n return\n }\n let prev: unknown = undefined\n bind(d, root, pathOrGetter, (v) => {\n const b = !!v\n if (b === prev) return\n ;(el as HTMLElement).style.display = b ? '' : 'none'\n prev = b\n })\n}\n"],"mappings":";;;AAIA,MAAa,oBACX,IACA,GACA,MACA,QACA,iBACS;CACT,IAAI,OAAgB,KAAA;AACpB,MAAK,GAAG,MAAM,eAAe,MAAM;AACjC,SAAO,MAAM,IAAI,QAAQ,MAAM,GAAG,OAAO;GACzC"}
1
+ {"version":3,"file":"reactive-bool.mjs","names":[],"sources":["../../gea/src/runtime/reactive-bool.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\nimport { patch } from './patch'\n\nexport function reactiveBoolAttr(\n el: Element,\n d: Disposer,\n root: any,\n target: string,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n let prev: unknown = undefined\n bind(d, root, pathOrGetter, (v) => {\n prev = patch(el, 'bool', prev, v, target)\n })\n}\n\nexport function reactiveBool(\n el: Element,\n d: Disposer,\n root: any,\n target: string,\n pathOrGetter: readonly string[] | (() => unknown),\n mode: 'attr' | 'visible' = 'attr',\n): void {\n if (mode === 'attr') {\n reactiveBoolAttr(el, d, root, target, pathOrGetter)\n return\n }\n let prev: unknown = undefined\n bind(d, root, pathOrGetter, (v) => {\n const b = !!v\n if (b === prev) return\n ;(el as HTMLElement).style.display = b ? '' : 'none'\n prev = b\n })\n}\n"],"mappings":";;;AAIA,SAAgB,iBACd,IACA,GACA,MACA,QACA,cACM;CACN,IAAI,OAAgB,KAAA;AACpB,MAAK,GAAG,MAAM,eAAe,MAAM;AACjC,SAAO,MAAM,IAAI,QAAQ,MAAM,GAAG,OAAO;GACzC"}
@@ -1,6 +1,6 @@
1
1
  import { t as bind } from "./bind.mjs";
2
2
  //#region ../gea/src/runtime/reactive-class-name.ts
3
- const reactiveClassName = (el, d, root, pathOrGetter) => {
3
+ function reactiveClassName(el, d, root, pathOrGetter) {
4
4
  let prev;
5
5
  bind(d, root, pathOrGetter, (v) => {
6
6
  const next = v == null || v === false ? "" : String(v);
@@ -8,7 +8,7 @@ const reactiveClassName = (el, d, root, pathOrGetter) => {
8
8
  el.setAttribute("class", next);
9
9
  prev = next;
10
10
  });
11
- };
11
+ }
12
12
  //#endregion
13
13
  export { reactiveClassName as t };
14
14
 
@@ -1 +1 @@
1
- {"version":3,"file":"reactive-class-name.mjs","names":[],"sources":["../../gea/src/runtime/reactive-class-name.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\n\nexport const reactiveClassName = (\n el: Element,\n d: Disposer,\n root: any,\n pathOrGetter: readonly string[] | (() => unknown),\n): void => {\n let prev: string | undefined\n bind(d, root, pathOrGetter, (v) => {\n const next = v == null || v === false ? '' : String(v)\n if (next === prev) return\n el.setAttribute('class', next)\n prev = next\n })\n}\n"],"mappings":";;AAGA,MAAa,qBACX,IACA,GACA,MACA,iBACS;CACT,IAAI;AACJ,MAAK,GAAG,MAAM,eAAe,MAAM;EACjC,MAAM,OAAO,KAAK,QAAQ,MAAM,QAAQ,KAAK,OAAO,EAAE;AACtD,MAAI,SAAS,KAAM;AACnB,KAAG,aAAa,SAAS,KAAK;AAC9B,SAAO;GACP"}
1
+ {"version":3,"file":"reactive-class-name.mjs","names":[],"sources":["../../gea/src/runtime/reactive-class-name.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\n\nexport function reactiveClassName(\n el: Element,\n d: Disposer,\n root: object,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n let prev: string | undefined\n bind(d, root, pathOrGetter, (v) => {\n const next = v == null || v === false ? '' : String(v)\n if (next === prev) return\n el.setAttribute('class', next)\n prev = next\n })\n}\n"],"mappings":";;AAGA,SAAgB,kBACd,IACA,GACA,MACA,cACM;CACN,IAAI;AACJ,MAAK,GAAG,MAAM,eAAe,MAAM;EACjC,MAAM,OAAO,KAAK,QAAQ,MAAM,QAAQ,KAAK,OAAO,EAAE;AACtD,MAAI,SAAS,KAAM;AACnB,KAAG,aAAa,SAAS,KAAK;AAC9B,SAAO;GACP"}
@@ -11,11 +11,12 @@ import { t as bind } from "./bind.mjs";
11
11
  *
12
12
  * Slow path (multi-token strings, arrays, objects) still uses Set-diff.
13
13
  */
14
- const reactiveClass = (el, d, root, pathOrGetter) => {
14
+ function reactiveClass(el, d, root, pathOrGetter) {
15
15
  let prev = null;
16
16
  bind(d, root, pathOrGetter, (v) => {
17
- if (v == null || v === false || v === "" || typeof v === "string" && v.indexOf(" ") === -1) {
18
- const next = v == null || v === false ? "" : v;
17
+ const text = typeof v === "string" ? v : "";
18
+ if (v == null || v === false || v === "" || typeof v === "string" && text.indexOf(" ") === -1) {
19
+ const next = v == null || v === false ? "" : text;
19
20
  if (typeof prev === "string") {
20
21
  if (prev === next) return;
21
22
  if (prev) el.classList.remove(prev);
@@ -46,7 +47,7 @@ const reactiveClass = (el, d, root, pathOrGetter) => {
46
47
  if (next.size === 0 && !el.hasAttribute("class")) el.setAttribute("class", "");
47
48
  prev = next;
48
49
  });
49
- };
50
+ }
50
51
  //#endregion
51
52
  export { reactiveClass as t };
52
53
 
@@ -1 +1 @@
1
- {"version":3,"file":"reactive-class.mjs","names":[],"sources":["../../gea/src/runtime/reactive-class.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\n\n/**\n * Reactive class binding.\n *\n * Fast path: when the value is a single token (string without whitespace, or\n * null/false/empty), skip Set allocation. The JSX pattern\n * `class={cond ? 'danger' : ''}` dominates keyed-list rows; under the old\n * per-fire Set allocation it burned 1000 Sets per 04_select1k click. Now:\n * single-token → direct classList.add/remove with a string `prev`.\n *\n * Slow path (multi-token strings, arrays, objects) still uses Set-diff.\n */\nexport const reactiveClass = (\n el: Element,\n d: Disposer,\n root: any,\n pathOrGetter: readonly string[] | (() => unknown),\n): void => {\n let prev: string | Set<string> | null = null\n bind(d, root, pathOrGetter, (v) => {\n // Single-token fast path: null/false/empty or whitespace-free string.\n if (v == null || v === false || v === '' || (typeof v === 'string' && v.indexOf(' ') === -1)) {\n const next = v == null || v === false ? '' : (v as string)\n if (typeof prev === 'string') {\n if (prev === next) return\n if (prev) el.classList.remove(prev)\n if (next) el.classList.add(next)\n } else {\n if (prev) for (const c of prev) el.classList.remove(c)\n if (next) el.classList.add(next)\n }\n if (!next && !el.hasAttribute('class')) el.setAttribute('class', '')\n prev = next\n return\n }\n // Slow path: multi-token string / array / object → Set diff.\n const next = new Set<string>()\n if (typeof v === 'string') {\n for (const t of v.split(/\\s+/)) if (t) next.add(t)\n } else if (Array.isArray(v)) {\n for (const t of v) if (t) next.add(String(t))\n } else if (typeof v === 'object') {\n for (const k in v as Record<string, unknown>) {\n if ((v as Record<string, unknown>)[k]) next.add(k)\n }\n }\n if (typeof prev === 'string') {\n if (prev) el.classList.remove(prev)\n } else if (prev) {\n for (const c of prev) if (!next.has(c)) el.classList.remove(c)\n }\n if (typeof prev === 'string' || !prev) {\n for (const c of next) el.classList.add(c)\n } else {\n for (const c of next) if (!prev.has(c)) el.classList.add(c)\n }\n if (next.size === 0 && !el.hasAttribute('class')) el.setAttribute('class', '')\n prev = next\n })\n}\n"],"mappings":";;;;;;;;;;;;;AAcA,MAAa,iBACX,IACA,GACA,MACA,iBACS;CACT,IAAI,OAAoC;AACxC,MAAK,GAAG,MAAM,eAAe,MAAM;AAEjC,MAAI,KAAK,QAAQ,MAAM,SAAS,MAAM,MAAO,OAAO,MAAM,YAAY,EAAE,QAAQ,IAAI,KAAK,IAAK;GAC5F,MAAM,OAAO,KAAK,QAAQ,MAAM,QAAQ,KAAM;AAC9C,OAAI,OAAO,SAAS,UAAU;AAC5B,QAAI,SAAS,KAAM;AACnB,QAAI,KAAM,IAAG,UAAU,OAAO,KAAK;AACnC,QAAI,KAAM,IAAG,UAAU,IAAI,KAAK;UAC3B;AACL,QAAI,KAAM,MAAK,MAAM,KAAK,KAAM,IAAG,UAAU,OAAO,EAAE;AACtD,QAAI,KAAM,IAAG,UAAU,IAAI,KAAK;;AAElC,OAAI,CAAC,QAAQ,CAAC,GAAG,aAAa,QAAQ,CAAE,IAAG,aAAa,SAAS,GAAG;AACpE,UAAO;AACP;;EAGF,MAAM,uBAAO,IAAI,KAAa;AAC9B,MAAI,OAAO,MAAM;QACV,MAAM,KAAK,EAAE,MAAM,MAAM,CAAE,KAAI,EAAG,MAAK,IAAI,EAAE;aACzC,MAAM,QAAQ,EAAE;QACpB,MAAM,KAAK,EAAG,KAAI,EAAG,MAAK,IAAI,OAAO,EAAE,CAAC;aACpC,OAAO,MAAM;QACjB,MAAM,KAAK,EACd,KAAK,EAA8B,GAAI,MAAK,IAAI,EAAE;;AAGtD,MAAI,OAAO,SAAS;OACd,KAAM,IAAG,UAAU,OAAO,KAAK;aAC1B;QACJ,MAAM,KAAK,KAAM,KAAI,CAAC,KAAK,IAAI,EAAE,CAAE,IAAG,UAAU,OAAO,EAAE;;AAEhE,MAAI,OAAO,SAAS,YAAY,CAAC,KAC/B,MAAK,MAAM,KAAK,KAAM,IAAG,UAAU,IAAI,EAAE;MAEzC,MAAK,MAAM,KAAK,KAAM,KAAI,CAAC,KAAK,IAAI,EAAE,CAAE,IAAG,UAAU,IAAI,EAAE;AAE7D,MAAI,KAAK,SAAS,KAAK,CAAC,GAAG,aAAa,QAAQ,CAAE,IAAG,aAAa,SAAS,GAAG;AAC9E,SAAO;GACP"}
1
+ {"version":3,"file":"reactive-class.mjs","names":[],"sources":["../../gea/src/runtime/reactive-class.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\n\n/**\n * Reactive class binding.\n *\n * Fast path: when the value is a single token (string without whitespace, or\n * null/false/empty), skip Set allocation. The JSX pattern\n * `class={cond ? 'danger' : ''}` dominates keyed-list rows; under the old\n * per-fire Set allocation it burned 1000 Sets per 04_select1k click. Now:\n * single-token → direct classList.add/remove with a string `prev`.\n *\n * Slow path (multi-token strings, arrays, objects) still uses Set-diff.\n */\nexport function reactiveClass(\n el: Element,\n d: Disposer,\n root: object,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n let prev: string | Set<string> | null = null\n bind(d, root, pathOrGetter, (v) => {\n // Single-token fast path: null/false/empty or whitespace-free string.\n // `text` carries the narrowed string in its own `string` slot so `indexOf`\n // has an exact string receiver; calling it on `v` — declared `unknown` —\n // leaves the intrinsic without one. Equivalent: every branch that reaches\n // `next` has `v` either nullish/false (→ '') or a string (→ `text`).\n const text = typeof v === 'string' ? (v as string) : ''\n if (v == null || v === false || v === '' || (typeof v === 'string' && text.indexOf(' ') === -1)) {\n const next = v == null || v === false ? '' : text\n if (typeof prev === 'string') {\n if (prev === next) return\n if (prev) el.classList.remove(prev)\n if (next) el.classList.add(next)\n } else {\n if (prev) for (const c of prev) el.classList.remove(c)\n if (next) el.classList.add(next)\n }\n if (!next && !el.hasAttribute('class')) el.setAttribute('class', '')\n prev = next\n return\n }\n // Slow path: multi-token string / array / object → Set diff.\n const next = new Set<string>()\n if (typeof v === 'string') {\n for (const t of v.split(/\\s+/)) if (t) next.add(t)\n } else if (Array.isArray(v)) {\n for (const t of v) if (t) next.add(String(t))\n } else if (typeof v === 'object') {\n for (const k in v as Record<string, unknown>) {\n if ((v as Record<string, unknown>)[k]) next.add(k)\n }\n }\n if (typeof prev === 'string') {\n if (prev) el.classList.remove(prev)\n } else if (prev) {\n for (const c of prev) if (!next.has(c)) el.classList.remove(c)\n }\n if (typeof prev === 'string' || !prev) {\n for (const c of next) el.classList.add(c)\n } else {\n for (const c of next) if (!prev.has(c)) el.classList.add(c)\n }\n if (next.size === 0 && !el.hasAttribute('class')) el.setAttribute('class', '')\n prev = next\n })\n}\n"],"mappings":";;;;;;;;;;;;;AAcA,SAAgB,cACd,IACA,GACA,MACA,cACM;CACN,IAAI,OAAoC;AACxC,MAAK,GAAG,MAAM,eAAe,MAAM;EAMjC,MAAM,OAAO,OAAO,MAAM,WAAY,IAAe;AACrD,MAAI,KAAK,QAAQ,MAAM,SAAS,MAAM,MAAO,OAAO,MAAM,YAAY,KAAK,QAAQ,IAAI,KAAK,IAAK;GAC/F,MAAM,OAAO,KAAK,QAAQ,MAAM,QAAQ,KAAK;AAC7C,OAAI,OAAO,SAAS,UAAU;AAC5B,QAAI,SAAS,KAAM;AACnB,QAAI,KAAM,IAAG,UAAU,OAAO,KAAK;AACnC,QAAI,KAAM,IAAG,UAAU,IAAI,KAAK;UAC3B;AACL,QAAI,KAAM,MAAK,MAAM,KAAK,KAAM,IAAG,UAAU,OAAO,EAAE;AACtD,QAAI,KAAM,IAAG,UAAU,IAAI,KAAK;;AAElC,OAAI,CAAC,QAAQ,CAAC,GAAG,aAAa,QAAQ,CAAE,IAAG,aAAa,SAAS,GAAG;AACpE,UAAO;AACP;;EAGF,MAAM,uBAAO,IAAI,KAAa;AAC9B,MAAI,OAAO,MAAM;QACV,MAAM,KAAK,EAAE,MAAM,MAAM,CAAE,KAAI,EAAG,MAAK,IAAI,EAAE;aACzC,MAAM,QAAQ,EAAE;QACpB,MAAM,KAAK,EAAG,KAAI,EAAG,MAAK,IAAI,OAAO,EAAE,CAAC;aACpC,OAAO,MAAM;QACjB,MAAM,KAAK,EACd,KAAK,EAA8B,GAAI,MAAK,IAAI,EAAE;;AAGtD,MAAI,OAAO,SAAS;OACd,KAAM,IAAG,UAAU,OAAO,KAAK;aAC1B;QACJ,MAAM,KAAK,KAAM,KAAI,CAAC,KAAK,IAAI,EAAE,CAAE,IAAG,UAAU,OAAO,EAAE;;AAEhE,MAAI,OAAO,SAAS,YAAY,CAAC,KAC/B,MAAK,MAAM,KAAK,KAAM,IAAG,UAAU,IAAI,EAAE;MAEzC,MAAK,MAAM,KAAK,KAAM,KAAI,CAAC,KAAK,IAAI,EAAE,CAAE,IAAG,UAAU,IAAI,EAAE;AAE7D,MAAI,KAAK,SAAS,KAAK,CAAC,GAAG,aAAa,QAAQ,CAAE,IAAG,aAAa,SAAS,GAAG;AAC9E,SAAO;GACP"}
@@ -1,21 +1,24 @@
1
1
  import { t as bind } from "./bind.mjs";
2
2
  //#region ../gea/src/runtime/reactive-style.ts
3
- const kebab = (k) => k.replace(/[A-Z]/g, (m) => "-" + m.toLowerCase());
4
- const reactiveStyle = (el, d, root, pathOrGetter) => {
5
- let prev = {};
3
+ function reactiveStyleProp(el, d, root, prop, pathOrGetter) {
6
4
  const style = el.style;
5
+ let prev;
7
6
  bind(d, root, pathOrGetter, (v) => {
8
- const next = {};
9
- if (v && typeof v === "object") for (const k in v) {
10
- const val = v[k];
11
- if (val != null && val !== false) next[kebab(k)] = String(val);
7
+ if (v == null || v === false) {
8
+ if (prev !== void 0) {
9
+ style.removeProperty(prop);
10
+ prev = void 0;
11
+ }
12
+ return;
13
+ }
14
+ const next = String(v);
15
+ if (next !== prev) {
16
+ style.setProperty(prop, next);
17
+ prev = next;
12
18
  }
13
- for (const k in prev) if (!(k in next)) style.removeProperty(k);
14
- for (const k in next) if (next[k] !== prev[k]) style.setProperty(k, next[k]);
15
- prev = next;
16
19
  });
17
- };
20
+ }
18
21
  //#endregion
19
- export { reactiveStyle as t };
22
+ export { reactiveStyleProp as t };
20
23
 
21
24
  //# sourceMappingURL=reactive-style.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"reactive-style.mjs","names":[],"sources":["../../gea/src/runtime/reactive-style.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\n\nconst kebab = (k: string): string => k.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase())\n\nexport const reactiveStyle = (\n el: Element,\n d: Disposer,\n root: any,\n pathOrGetter: readonly string[] | (() => unknown),\n): void => {\n let prev: Record<string, string> = {}\n const style = (el as HTMLElement).style\n bind(d, root, pathOrGetter, (v) => {\n const next: Record<string, string> = {}\n if (v && typeof v === 'object') {\n for (const k in v as Record<string, unknown>) {\n const val = (v as Record<string, unknown>)[k]\n if (val != null && val !== false) next[kebab(k)] = String(val)\n }\n }\n for (const k in prev) if (!(k in next)) style.removeProperty(k)\n for (const k in next) if (next[k] !== prev[k]) style.setProperty(k, next[k])\n prev = next\n })\n}\n"],"mappings":";;AAGA,MAAM,SAAS,MAAsB,EAAE,QAAQ,WAAW,MAAM,MAAM,EAAE,aAAa,CAAC;AAEtF,MAAa,iBACX,IACA,GACA,MACA,iBACS;CACT,IAAI,OAA+B,EAAE;CACrC,MAAM,QAAS,GAAmB;AAClC,MAAK,GAAG,MAAM,eAAe,MAAM;EACjC,MAAM,OAA+B,EAAE;AACvC,MAAI,KAAK,OAAO,MAAM,SACpB,MAAK,MAAM,KAAK,GAA8B;GAC5C,MAAM,MAAO,EAA8B;AAC3C,OAAI,OAAO,QAAQ,QAAQ,MAAO,MAAK,MAAM,EAAE,IAAI,OAAO,IAAI;;AAGlE,OAAK,MAAM,KAAK,KAAM,KAAI,EAAE,KAAK,MAAO,OAAM,eAAe,EAAE;AAC/D,OAAK,MAAM,KAAK,KAAM,KAAI,KAAK,OAAO,KAAK,GAAI,OAAM,YAAY,GAAG,KAAK,GAAG;AAC5E,SAAO;GACP"}
1
+ {"version":3,"file":"reactive-style.mjs","names":[],"sources":["../../gea/src/runtime/reactive-style.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\n\nfunction kebab(k: string): string {\n return k.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase())\n}\n\nexport function reactiveStyle(\n el: Element,\n d: Disposer,\n root: object,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n let prev: Record<string, string> = {}\n const style = (el as HTMLElement).style\n bind(d, root, pathOrGetter, (v) => {\n const next: Record<string, string> = {}\n if (v && typeof v === 'object') {\n for (const k in v as Record<string, unknown>) {\n const val = (v as Record<string, unknown>)[k]\n if (val != null && val !== false) next[kebab(k)] = String(val)\n }\n }\n for (const k in prev) if (!(k in next)) style.removeProperty(k)\n for (const k in next) if (next[k] !== prev[k]) style.setProperty(k, next[k])\n prev = next\n })\n}\n\n// Typed single-property style binding. Used by the compiler for static-key style\n// objects (e.g. a moving sprite's `{ left, top, backgroundColor }`): each property\n// binds on its own channel with a compile-time-kebabed name, so there is no boxed\n// `next`/`prev` record allocation, no runtime kebab-casing, and tracking is\n// per-property (only the property that actually changed re-applies). The generic\n// `reactiveStyle` above stays for dynamic/spread style objects.\nexport function reactiveStyleProp(\n el: Element,\n d: Disposer,\n root: object,\n prop: string,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n const style = (el as HTMLElement).style\n let prev: string | undefined\n bind(d, root, pathOrGetter, (v) => {\n if (v == null || v === false) {\n if (prev !== undefined) {\n style.removeProperty(prop)\n prev = undefined\n }\n return\n }\n const next = String(v)\n if (next !== prev) {\n style.setProperty(prop, next)\n prev = next\n }\n })\n}\n"],"mappings":";;AAmCA,SAAgB,kBACd,IACA,GACA,MACA,MACA,cACM;CACN,MAAM,QAAS,GAAmB;CAClC,IAAI;AACJ,MAAK,GAAG,MAAM,eAAe,MAAM;AACjC,MAAI,KAAK,QAAQ,MAAM,OAAO;AAC5B,OAAI,SAAS,KAAA,GAAW;AACtB,UAAM,eAAe,KAAK;AAC1B,WAAO,KAAA;;AAET;;EAEF,MAAM,OAAO,OAAO,EAAE;AACtB,MAAI,SAAS,MAAM;AACjB,SAAM,YAAY,MAAM,KAAK;AAC7B,UAAO;;GAET"}
@@ -1,13 +1,13 @@
1
1
  import { t as bind } from "./bind.mjs";
2
2
  import { t as patch } from "./patch.mjs";
3
3
  //#region ../gea/src/runtime/reactive-text.ts
4
- const reactiveTextValue = (node, d, root, pathOrGetter) => {
4
+ function reactiveTextValue(node, d, root, pathOrGetter) {
5
5
  let prev = void 0;
6
6
  bind(d, root, pathOrGetter, (v) => {
7
7
  prev = patch(node, "text", prev, v);
8
8
  });
9
- };
10
- const reactiveText = (node, d, root, pathOrGetter) => {
9
+ }
10
+ function reactiveText(node, d, root, pathOrGetter) {
11
11
  let prev = void 0;
12
12
  let live = node;
13
13
  let liveChildren = null;
@@ -55,7 +55,7 @@ const reactiveText = (node, d, root, pathOrGetter) => {
55
55
  }
56
56
  prev = patch(live, "text", prev, v);
57
57
  });
58
- };
58
+ }
59
59
  //#endregion
60
60
  export { reactiveTextValue as n, reactiveText as t };
61
61
 
@@ -1 +1 @@
1
- {"version":3,"file":"reactive-text.mjs","names":[],"sources":["../../gea/src/runtime/reactive-text.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\nimport { patch } from './patch'\n\nexport const reactiveTextValue = (\n node: Text | Element,\n d: Disposer,\n root: any,\n pathOrGetter: readonly string[] | (() => unknown),\n): void => {\n let prev: unknown = undefined\n bind(d, root, pathOrGetter, (v) => {\n prev = patch(node, 'text', prev, v)\n })\n}\n\nexport const reactiveText = (\n node: Text | Element,\n d: Disposer,\n root: any,\n pathOrGetter: readonly string[] | (() => unknown),\n): void => {\n let prev: unknown = undefined\n let live: Node = node\n // For array children (`.map(...)` returning DOM nodes), remember the live\n // set so we can replace on subsequent renders.\n let liveChildren: Node[] | null = null\n bind(d, root, pathOrGetter, (v) => {\n // Array of Nodes (e.g. from `.map(item => <Node/>)`) → wrap in a fragment.\n if (Array.isArray(v)) {\n const frag = document.createDocumentFragment()\n const nodes: Node[] = []\n for (const item of v) {\n if (item == null) continue\n if (typeof (item as any).nodeType === 'number') {\n frag.appendChild(item as Node)\n nodes.push(item as Node)\n } else {\n const tn = document.createTextNode(String(item))\n frag.appendChild(tn)\n nodes.push(tn)\n }\n }\n // Tear down previous array.\n if (liveChildren) {\n for (const n of liveChildren) if (n.parentNode) n.parentNode.removeChild(n)\n liveChildren = null\n }\n const parent = live.parentNode\n if (parent) parent.insertBefore(frag, live)\n liveChildren = nodes\n return\n }\n // Scalar value arriving after an array — clear the array first.\n if (liveChildren) {\n for (const n of liveChildren) if (n.parentNode) n.parentNode.removeChild(n)\n liveChildren = null\n }\n if (v && typeof (v as any).nodeType === 'number') {\n if (v === live) return\n const p = live.parentNode\n if (p) p.replaceChild(v as Node, live)\n live = v as Node\n prev = v\n return\n }\n if (live.nodeType !== 3 && live.nodeType !== 8 && live !== node) {\n const text = document.createTextNode('')\n if (live.parentNode) live.parentNode.replaceChild(text, live)\n live = text\n prev = undefined\n }\n prev = patch(live, 'text', prev, v)\n })\n}\n"],"mappings":";;;AAIA,MAAa,qBACX,MACA,GACA,MACA,iBACS;CACT,IAAI,OAAgB,KAAA;AACpB,MAAK,GAAG,MAAM,eAAe,MAAM;AACjC,SAAO,MAAM,MAAM,QAAQ,MAAM,EAAE;GACnC;;AAGJ,MAAa,gBACX,MACA,GACA,MACA,iBACS;CACT,IAAI,OAAgB,KAAA;CACpB,IAAI,OAAa;CAGjB,IAAI,eAA8B;AAClC,MAAK,GAAG,MAAM,eAAe,MAAM;AAEjC,MAAI,MAAM,QAAQ,EAAE,EAAE;GACpB,MAAM,OAAO,SAAS,wBAAwB;GAC9C,MAAM,QAAgB,EAAE;AACxB,QAAK,MAAM,QAAQ,GAAG;AACpB,QAAI,QAAQ,KAAM;AAClB,QAAI,OAAQ,KAAa,aAAa,UAAU;AAC9C,UAAK,YAAY,KAAa;AAC9B,WAAM,KAAK,KAAa;WACnB;KACL,MAAM,KAAK,SAAS,eAAe,OAAO,KAAK,CAAC;AAChD,UAAK,YAAY,GAAG;AACpB,WAAM,KAAK,GAAG;;;AAIlB,OAAI,cAAc;AAChB,SAAK,MAAM,KAAK,aAAc,KAAI,EAAE,WAAY,GAAE,WAAW,YAAY,EAAE;AAC3E,mBAAe;;GAEjB,MAAM,SAAS,KAAK;AACpB,OAAI,OAAQ,QAAO,aAAa,MAAM,KAAK;AAC3C,kBAAe;AACf;;AAGF,MAAI,cAAc;AAChB,QAAK,MAAM,KAAK,aAAc,KAAI,EAAE,WAAY,GAAE,WAAW,YAAY,EAAE;AAC3E,kBAAe;;AAEjB,MAAI,KAAK,OAAQ,EAAU,aAAa,UAAU;AAChD,OAAI,MAAM,KAAM;GAChB,MAAM,IAAI,KAAK;AACf,OAAI,EAAG,GAAE,aAAa,GAAW,KAAK;AACtC,UAAO;AACP,UAAO;AACP;;AAEF,MAAI,KAAK,aAAa,KAAK,KAAK,aAAa,KAAK,SAAS,MAAM;GAC/D,MAAM,OAAO,SAAS,eAAe,GAAG;AACxC,OAAI,KAAK,WAAY,MAAK,WAAW,aAAa,MAAM,KAAK;AAC7D,UAAO;AACP,UAAO,KAAA;;AAET,SAAO,MAAM,MAAM,QAAQ,MAAM,EAAE;GACnC"}
1
+ {"version":3,"file":"reactive-text.mjs","names":[],"sources":["../../gea/src/runtime/reactive-text.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\nimport { patch } from './patch'\n\nexport function reactiveTextValue(\n node: Text | Element,\n d: Disposer,\n root: object,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n let prev: unknown = undefined\n bind(d, root, pathOrGetter, (v) => {\n prev = patch(node, 'text', prev, v)\n })\n}\n\nexport function reactiveText(\n node: Text | Element,\n d: Disposer,\n root: object,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n let prev: unknown = undefined\n let live: Node = node\n // For array children (`.map(...)` returning DOM nodes), remember the live\n // set so we can replace on subsequent renders.\n let liveChildren: Node[] | null = null\n bind(d, root, pathOrGetter, (v) => {\n // Array of Nodes (e.g. from `.map(item => <Node/>)`) → wrap in a fragment.\n if (Array.isArray(v)) {\n const frag = document.createDocumentFragment()\n const nodes: Node[] = []\n for (const item of v) {\n if (item == null) continue\n if (typeof (item as Node).nodeType === 'number') {\n frag.appendChild(item as Node)\n nodes.push(item as Node)\n } else {\n const tn = document.createTextNode(String(item))\n frag.appendChild(tn)\n nodes.push(tn)\n }\n }\n // Tear down previous array.\n if (liveChildren) {\n for (const n of liveChildren) if (n.parentNode) n.parentNode.removeChild(n)\n liveChildren = null\n }\n const parent = live.parentNode\n if (parent) parent.insertBefore(frag, live)\n liveChildren = nodes\n return\n }\n // Scalar value arriving after an array — clear the array first.\n if (liveChildren) {\n for (const n of liveChildren) if (n.parentNode) n.parentNode.removeChild(n)\n liveChildren = null\n }\n if (v && typeof (v as Node).nodeType === 'number') {\n if (v === live) return\n const p = live.parentNode\n if (p) p.replaceChild(v as Node, live)\n live = v as Node\n prev = v\n return\n }\n if (live.nodeType !== 3 && live.nodeType !== 8 && live !== node) {\n const text = document.createTextNode('')\n if (live.parentNode) live.parentNode.replaceChild(text, live)\n live = text\n prev = undefined\n }\n prev = patch(live, 'text', prev, v)\n })\n}\n"],"mappings":";;;AAIA,SAAgB,kBACd,MACA,GACA,MACA,cACM;CACN,IAAI,OAAgB,KAAA;AACpB,MAAK,GAAG,MAAM,eAAe,MAAM;AACjC,SAAO,MAAM,MAAM,QAAQ,MAAM,EAAE;GACnC;;AAGJ,SAAgB,aACd,MACA,GACA,MACA,cACM;CACN,IAAI,OAAgB,KAAA;CACpB,IAAI,OAAa;CAGjB,IAAI,eAA8B;AAClC,MAAK,GAAG,MAAM,eAAe,MAAM;AAEjC,MAAI,MAAM,QAAQ,EAAE,EAAE;GACpB,MAAM,OAAO,SAAS,wBAAwB;GAC9C,MAAM,QAAgB,EAAE;AACxB,QAAK,MAAM,QAAQ,GAAG;AACpB,QAAI,QAAQ,KAAM;AAClB,QAAI,OAAQ,KAAc,aAAa,UAAU;AAC/C,UAAK,YAAY,KAAa;AAC9B,WAAM,KAAK,KAAa;WACnB;KACL,MAAM,KAAK,SAAS,eAAe,OAAO,KAAK,CAAC;AAChD,UAAK,YAAY,GAAG;AACpB,WAAM,KAAK,GAAG;;;AAIlB,OAAI,cAAc;AAChB,SAAK,MAAM,KAAK,aAAc,KAAI,EAAE,WAAY,GAAE,WAAW,YAAY,EAAE;AAC3E,mBAAe;;GAEjB,MAAM,SAAS,KAAK;AACpB,OAAI,OAAQ,QAAO,aAAa,MAAM,KAAK;AAC3C,kBAAe;AACf;;AAGF,MAAI,cAAc;AAChB,QAAK,MAAM,KAAK,aAAc,KAAI,EAAE,WAAY,GAAE,WAAW,YAAY,EAAE;AAC3E,kBAAe;;AAEjB,MAAI,KAAK,OAAQ,EAAW,aAAa,UAAU;AACjD,OAAI,MAAM,KAAM;GAChB,MAAM,IAAI,KAAK;AACf,OAAI,EAAG,GAAE,aAAa,GAAW,KAAK;AACtC,UAAO;AACP,UAAO;AACP;;AAEF,MAAI,KAAK,aAAa,KAAK,KAAK,aAAa,KAAK,SAAS,MAAM;GAC/D,MAAM,OAAO,SAAS,eAAe,GAAG;AACxC,OAAI,KAAK,WAAY,MAAK,WAAW,aAAa,MAAM,KAAK;AAC7D,UAAO;AACP,UAAO,KAAA;;AAET,SAAO,MAAM,MAAM,QAAQ,MAAM,EAAE;GACnC"}
@@ -6,7 +6,7 @@ import { t as reactiveClass } from "./reactive-class.mjs";
6
6
  import { t as conditionalTruthy } from "./conditional-truthy.mjs";
7
7
  import { n as _rescue, t as keyedList } from "./keyed-list.mjs";
8
8
  import { t as GEA_DOM_ITEM } from "./keyed-list-symbols.mjs";
9
- import { n as createItemProxy, t as createItemObservable } from "./item-obs.mjs";
9
+ import { n as readItem, t as createItemObservable } from "./item-obs.mjs";
10
10
  import { normalizeProps } from "@zag-js/vanilla";
11
11
  import * as tagsInput from "@zag-js/tags-input";
12
12
  //#region src/components/tags-input.tsx
@@ -113,7 +113,7 @@ var TagsInput = class extends ZagComponent {
113
113
  reactiveTextValue(t0, d, this, () => this.props.label);
114
114
  return root;
115
115
  });
116
- const __ki_L0 = (tag, i, d) => {
116
+ const __ki_L0 = (__geaItemObservable, i, d) => {
117
117
  const root = (_tpl2_root || (_tpl2_root = _tpl2_create())).cloneNode(true);
118
118
  const el0 = root;
119
119
  const el1 = el0;
@@ -125,17 +125,17 @@ var TagsInput = class extends ZagComponent {
125
125
  const marker7 = root.firstChild.firstChild.firstChild;
126
126
  const el8 = root.childNodes[1];
127
127
  const el9 = el8;
128
- reactiveAttr(el0, d, this, "key", () => `${tag}-${i}`);
128
+ reactiveAttr(el0, d, this, "key", () => `${readItem(__geaItemObservable)}-${i}`);
129
129
  reactiveAttr(el1, d, this, "data-index", () => String(i));
130
- reactiveAttr(el2, d, this, "data-value", () => tag);
130
+ reactiveAttr(el2, d, this, "data-value", () => readItem(__geaItemObservable));
131
131
  reactiveAttr(el3, d, this, "data-index", () => String(i));
132
- reactiveAttr(el4, d, this, "data-value", () => tag);
132
+ reactiveAttr(el4, d, this, "data-value", () => readItem(__geaItemObservable));
133
133
  reactiveAttr(el5, d, this, "data-index", () => String(i));
134
- reactiveAttr(el6, d, this, "data-value", () => tag);
135
- reactiveTextValue(marker7, d, this, () => tag);
134
+ reactiveAttr(el6, d, this, "data-value", () => readItem(__geaItemObservable));
135
+ reactiveTextValue(marker7, d, this, () => readItem(__geaItemObservable));
136
136
  reactiveAttr(el8, d, this, "data-index", () => String(i));
137
- reactiveAttr(el9, d, this, "data-value", () => tag);
138
- root[GEA_DOM_ITEM] = tag;
137
+ reactiveAttr(el9, d, this, "data-value", () => readItem(__geaItemObservable));
138
+ root[GEA_DOM_ITEM] = readItem(__geaItemObservable);
139
139
  return root;
140
140
  };
141
141
  keyedList({
@@ -161,7 +161,7 @@ var TagsInput = class extends ZagComponent {
161
161
  }
162
162
  const __rd = d.child();
163
163
  const __obs = createItemObservable(item);
164
- const __el = __ki_L0(item !== null && typeof item === "object" ? createItemProxy(__obs) : item, idx, __rd);
164
+ const __el = __ki_L0(__obs, idx, __rd);
165
165
  return {
166
166
  key: __k,
167
167
  item: item && item[GEA_PROXY_RAW] || item,