@geajs/ui 0.2.4 → 0.2.9

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 (170) hide show
  1. package/dist/accordion.d.mts +2 -2
  2. package/dist/accordion.mjs +92 -122
  3. package/dist/accordion.mjs.map +1 -1
  4. package/dist/alert.d.mts +3 -3
  5. package/dist/alert.mjs +45 -107
  6. package/dist/alert.mjs.map +1 -1
  7. package/dist/avatar.d.mts +2 -2
  8. package/dist/avatar.mjs +38 -62
  9. package/dist/avatar.mjs.map +1 -1
  10. package/dist/badge.d.mts +1 -1
  11. package/dist/badge.mjs +18 -43
  12. package/dist/badge.mjs.map +1 -1
  13. package/dist/bind.mjs +130 -0
  14. package/dist/bind.mjs.map +1 -0
  15. package/dist/button.d.mts +3 -2
  16. package/dist/button.mjs +30 -85
  17. package/dist/button.mjs.map +1 -1
  18. package/dist/card.d.mts +6 -6
  19. package/dist/card.mjs +82 -194
  20. package/dist/card.mjs.map +1 -1
  21. package/dist/checkbox.d.mts +2 -2
  22. package/dist/checkbox.mjs +30 -31
  23. package/dist/checkbox.mjs.map +1 -1
  24. package/dist/clipboard.d.mts +2 -2
  25. package/dist/clipboard.mjs +49 -55
  26. package/dist/clipboard.mjs.map +1 -1
  27. package/dist/collapsible.d.mts +2 -2
  28. package/dist/collapsible.mjs +18 -45
  29. package/dist/collapsible.mjs.map +1 -1
  30. package/dist/combobox.d.mts +2 -2
  31. package/dist/combobox.mjs +322 -261
  32. package/dist/combobox.mjs.map +1 -1
  33. package/dist/compiled-component.mjs +119 -0
  34. package/dist/compiled-component.mjs.map +1 -0
  35. package/dist/compiled-reactive-component.mjs +337 -0
  36. package/dist/compiled-reactive-component.mjs.map +1 -0
  37. package/dist/component-id.mjs +10 -0
  38. package/dist/component-id.mjs.map +1 -0
  39. package/dist/conditional-truthy.mjs +48 -0
  40. package/dist/conditional-truthy.mjs.map +1 -0
  41. package/dist/conditional.mjs +54 -0
  42. package/dist/conditional.mjs.map +1 -0
  43. package/dist/delegate-event.mjs +53 -0
  44. package/dist/delegate-event.mjs.map +1 -0
  45. package/dist/dialog.d.mts +4 -3
  46. package/dist/dialog.mjs +57 -70
  47. package/dist/dialog.mjs.map +1 -1
  48. package/dist/dirty-symbols.mjs +7 -0
  49. package/dist/dirty-symbols.mjs.map +1 -0
  50. package/dist/disposer.mjs +46 -0
  51. package/dist/disposer.mjs.map +1 -0
  52. package/dist/dnd-manager.d.mts +9 -1
  53. package/dist/dnd-manager.mjs +67 -29
  54. package/dist/dnd-manager.mjs.map +1 -1
  55. package/dist/drag-drop-context.d.mts +1 -1
  56. package/dist/drag-drop-context.mjs +17 -33
  57. package/dist/drag-drop-context.mjs.map +1 -1
  58. package/dist/draggable.d.mts +1 -1
  59. package/dist/draggable.mjs +2 -91
  60. package/dist/draggable2.mjs +321 -0
  61. package/dist/draggable2.mjs.map +1 -0
  62. package/dist/droppable.d.mts +1 -1
  63. package/dist/droppable.mjs +20 -44
  64. package/dist/droppable.mjs.map +1 -1
  65. package/dist/file-upload.d.mts +2 -2
  66. package/dist/file-upload.mjs +337 -122
  67. package/dist/file-upload.mjs.map +1 -1
  68. package/dist/hover-card.d.mts +2 -2
  69. package/dist/hover-card.mjs +24 -59
  70. package/dist/hover-card.mjs.map +1 -1
  71. package/dist/index.mjs +3 -3
  72. package/dist/input.d.mts +1 -1
  73. package/dist/input.mjs +1 -93
  74. package/dist/input2.mjs +56 -0
  75. package/dist/input2.mjs.map +1 -0
  76. package/dist/internal-symbols.mjs +9 -0
  77. package/dist/internal-symbols.mjs.map +1 -0
  78. package/dist/item-obs.mjs +68 -0
  79. package/dist/item-obs.mjs.map +1 -0
  80. package/dist/keyed-list-symbols.mjs +6 -0
  81. package/dist/keyed-list-symbols.mjs.map +1 -0
  82. package/dist/keyed-list.mjs +487 -0
  83. package/dist/keyed-list.mjs.map +1 -0
  84. package/dist/label.d.mts +1 -1
  85. package/dist/label.mjs +20 -45
  86. package/dist/label.mjs.map +1 -1
  87. package/dist/menu.d.mts +2 -2
  88. package/dist/menu.mjs +87 -41
  89. package/dist/menu.mjs.map +1 -1
  90. package/dist/number-input.d.mts +2 -2
  91. package/dist/number-input.mjs +28 -32
  92. package/dist/number-input.mjs.map +1 -1
  93. package/dist/pagination.d.mts +2 -2
  94. package/dist/pagination.mjs +12 -35
  95. package/dist/pagination.mjs.map +1 -1
  96. package/dist/patch.mjs +21 -0
  97. package/dist/patch.mjs.map +1 -0
  98. package/dist/pin-input.d.mts +2 -2
  99. package/dist/pin-input.mjs +88 -87
  100. package/dist/pin-input.mjs.map +1 -1
  101. package/dist/popover.d.mts +2 -2
  102. package/dist/popover.mjs +45 -67
  103. package/dist/popover.mjs.map +1 -1
  104. package/dist/progress.d.mts +2 -2
  105. package/dist/progress.mjs +37 -43
  106. package/dist/progress.mjs.map +1 -1
  107. package/dist/radio-group.d.mts +2 -2
  108. package/dist/radio-group.mjs +99 -140
  109. package/dist/radio-group.mjs.map +1 -1
  110. package/dist/rating-group.d.mts +2 -2
  111. package/dist/rating-group.mjs +91 -99
  112. package/dist/rating-group.mjs.map +1 -1
  113. package/dist/reactive-attr.mjs +13 -0
  114. package/dist/reactive-attr.mjs.map +1 -0
  115. package/dist/reactive-bool.mjs +13 -0
  116. package/dist/reactive-bool.mjs.map +1 -0
  117. package/dist/reactive-class-name.mjs +15 -0
  118. package/dist/reactive-class-name.mjs.map +1 -0
  119. package/dist/reactive-class.mjs +53 -0
  120. package/dist/reactive-class.mjs.map +1 -0
  121. package/dist/reactive-style.mjs +21 -0
  122. package/dist/reactive-style.mjs.map +1 -0
  123. package/dist/reactive-text.mjs +62 -0
  124. package/dist/reactive-text.mjs.map +1 -0
  125. package/dist/select.d.mts +2 -2
  126. package/dist/select.mjs +106 -186
  127. package/dist/select.mjs.map +1 -1
  128. package/dist/separator.d.mts +1 -1
  129. package/dist/separator.mjs +19 -45
  130. package/dist/separator.mjs.map +1 -1
  131. package/dist/skeleton.d.mts +1 -1
  132. package/dist/skeleton.mjs +11 -35
  133. package/dist/skeleton.mjs.map +1 -1
  134. package/dist/slider.d.mts +2 -2
  135. package/dist/slider.mjs +31 -32
  136. package/dist/slider.mjs.map +1 -1
  137. package/dist/switch.d.mts +2 -2
  138. package/dist/switch.mjs +30 -31
  139. package/dist/switch.mjs.map +1 -1
  140. package/dist/tabs.d.mts +7 -2
  141. package/dist/tabs.mjs +180 -147
  142. package/dist/tabs.mjs.map +1 -1
  143. package/dist/tags-input.d.mts +2 -2
  144. package/dist/tags-input.mjs +102 -188
  145. package/dist/tags-input.mjs.map +1 -1
  146. package/dist/textarea.d.mts +1 -1
  147. package/dist/textarea.mjs +32 -75
  148. package/dist/textarea.mjs.map +1 -1
  149. package/dist/theme.css +4 -5
  150. package/dist/toast.d.mts +1 -1
  151. package/dist/toast.mjs +14 -34
  152. package/dist/toast.mjs.map +1 -1
  153. package/dist/toggle-group.d.mts +2 -2
  154. package/dist/toggle-group.mjs +78 -85
  155. package/dist/toggle-group.mjs.map +1 -1
  156. package/dist/tooltip.d.mts +2 -2
  157. package/dist/tooltip.mjs +23 -43
  158. package/dist/tooltip.mjs.map +1 -1
  159. package/dist/tree-view.d.mts +2 -2
  160. package/dist/tree-view.mjs +32 -50
  161. package/dist/tree-view.mjs.map +1 -1
  162. package/dist/types.d.mts +9 -0
  163. package/dist/zag-component.d.mts +25 -3
  164. package/dist/zag-component.mjs +63 -16
  165. package/dist/zag-component.mjs.map +1 -1
  166. package/package.json +4 -3
  167. package/dist/cn.mjs +0 -10
  168. package/dist/cn.mjs.map +0 -1
  169. package/dist/draggable.mjs.map +0 -1
  170. package/dist/input.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"hover-card.mjs","names":["Component","geaSanitizeAttr","geaEscapeHtml","GEA_ON_PROP_CHANGE","GEA_ELEMENT","GEA_PATCH_NODE","GEA_INSTANTIATE_CHILD_COMPONENTS","GEA_MOUNT_COMPILED_CHILD_COMPONENTS","hoverCard","normalizeProps","ZagComponent","HoverCard","__geaTagName","open","createMachine","_props","machine","getMachineProps","props","id","defaultOpen","openDelay","closeDelay","positioning","onOpenChange","details","OpenChangeDetails","connectApi","service","connect","getSpreadMap","syncState","api","template","__id","_register","class","String","trim","href","triggerLabel","children","key","value","__el","__boundValue","__newClass","replace","className","__e0","__gid","__av","undefined","removeAttribute","__newAttr","__sanitizeAttr","getAttribute","setAttribute","__e1","textContent","__e2","__tw","document","createElement","innerHTML","__newEl","content","firstElementChild","__existEl","childNodes","length","constructor","parentComponent","__resetEls"],"sources":["../src/components/hover-card.tsx"],"sourcesContent":["import * as hoverCard from '@zag-js/hover-card'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class HoverCard extends ZagComponent {\n declare open: boolean\n\n createMachine(_props: any): any {\n return hoverCard.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n open: props.open,\n defaultOpen: props.defaultOpen,\n openDelay: props.openDelay,\n closeDelay: props.closeDelay,\n positioning: props.positioning,\n onOpenChange: (details: hoverCard.OpenChangeDetails) => {\n this.open = details.open\n props.onOpenChange?.(details)\n },\n }\n }\n\n connectApi(service: any) {\n return hoverCard.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=\"arrow\"]': 'getArrowProps',\n '[data-part=\"arrow-tip\"]': 'getArrowTipProps',\n }\n }\n\n syncState(api: any) {\n this.open = api.open\n }\n\n template(props: any) {\n return (\n <div class={props.class || ''} style={{ display: 'inline-block' }}>\n <a data-part=\"trigger\" href={props.href || '#'} class=\"hover-card-trigger inline-block\">\n {props.triggerLabel || 'Hover me'}\n </a>\n <div data-part=\"positioner\" class=\"hover-card-positioner\">\n <div\n data-part=\"content\"\n class=\"hover-card-content z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden\"\n >\n {props.children}\n </div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"hover-card.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveStyle","reactiveAttr","reactiveTextValue","reactiveText","hoverCard","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","HoverCard","open","createMachine","_props","machine","getMachineProps","props","id","defaultOpen","openDelay","closeDelay","positioning","onOpenChange","details","OpenChangeDetails","connectApi","service","connect","getSpreadMap","syncState","api","d","root","cloneNode","el0","el1","el2","marker3","marker4","childNodes","class","display","href","t3","triggerLabel","t4","children"],"sources":["../src/components/hover-card.tsx"],"sourcesContent":["import * as hoverCard from '@zag-js/hover-card'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class HoverCard extends ZagComponent {\n declare open: boolean\n\n createMachine(_props: any): any {\n return hoverCard.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n open: props.open,\n defaultOpen: props.defaultOpen,\n openDelay: props.openDelay,\n closeDelay: props.closeDelay,\n positioning: props.positioning,\n onOpenChange: (details: hoverCard.OpenChangeDetails) => {\n this.open = details.open\n props.onOpenChange?.(details)\n },\n }\n }\n\n connectApi(service: any) {\n return hoverCard.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=\"arrow\"]': 'getArrowProps',\n '[data-part=\"arrow-tip\"]': 'getArrowTipProps',\n }\n }\n\n syncState(api: any) {\n this.open = api.open\n }\n\n template(props: any) {\n return (\n <div class={props.class || ''} style={{ display: 'inline-block' }}>\n <a data-part=\"trigger\" href={props.href || '#'} class=\"hover-card-trigger inline-block\">\n {props.triggerLabel || 'Hover me'}\n </a>\n <div data-part=\"positioner\" class=\"hover-card-positioner\">\n <div\n data-part=\"content\"\n class=\"hover-card-content z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden\"\n >\n {props.children}\n </div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":";;;;;;;;;AAIA,IAAIS,aAAa;AACjB,SAASC,eAAe;CACtB,MAAMC,IAAIC,SAASC,cAAc,WAAW;AAC5CF,GAAEG,YAAY;AACd,QAAOH,EAAEI,QAAQC;;AAEnB,IAAqBC,YAArB,cAAuCT,aAAa;CAElDW,cAAcC,QAAkB;AAC9B,SAAOd,UAAUe;;CAEnBC,gBAAgBC,OAAY;AAC1B,SAAO;GACLC,IAAI,KAAKA;GACTN,MAAMK,MAAML;GACZO,aAAaF,MAAME;GACnBC,WAAWH,MAAMG;GACjBC,YAAYJ,MAAMI;GAClBC,aAAaL,MAAMK;GACnBC,eAAeC,YAAyC;AACtD,SAAKZ,OAAOY,QAAQZ;AACpBK,UAAMM,eAAeC,QAAQ;;GAEhC;;CAEHE,WAAWC,SAAc;AACvB,SAAO3B,UAAU4B,QAAQD,SAAS1B,eAAe;;CAEnD4B,eAAe;AACb,SAAO;GACL,2BAAyB;GACzB,8BAA4B;GAC5B,2BAAyB;GACzB,yBAAuB;GACvB,6BAA2B;GAC5B;;CAEHC,UAAUC,KAAU;AAClB,OAAKnB,OAAOmB,IAAInB;;CAElB,CAAClB,qBAAqBsC,GAAG;EACvB,MAAMC,QAAQ9B,eAAeA,aAAaC,cAAc,GAAG8B,UAAU,KAAK;EAC1E,MAAMC,MAAMF;EACZ,MAAMG,MAAMD;EACZ,MAAME,MAAMJ,KAAKvB;EACjB,MAAM4B,UAAUL,KAAKvB,WAAWA;EAChC,MAAM6B,UAAUN,KAAKO,WAAW,GAAG9B,WAAWA;AAC9Cf,gBAAcwC,KAAKH,GAAG,YAAY,KAAKf,MAAMwB,SAAS,GAAG;AACzD7C,gBAAcwC,KAAKJ,GAAG,aAAa,EACjCU,SAAS,gBACV,EAAE;AACH7C,eAAawC,KAAKL,GAAG,MAAM,cAAc,KAAKf,MAAM0B,QAAQ,IAAI;AAEhE7C,oBAAkB8C,SAAIZ,GAAG,YAAY,KAAKf,MAAM4B,gBAAgB,WAAW;AAE3E9C,eAAa+C,SAAId,GAAG,YAAY,KAAKf,MAAM8B,SAAS;AACpD,SAAOd"}
package/dist/index.mjs CHANGED
@@ -1,5 +1,7 @@
1
1
  import { t as ZagComponent } from "./zag-component.mjs";
2
- import { t as cn } from "./cn.mjs";
2
+ import { n as cn } from "./compiled-component.mjs";
3
+ import { t as Draggable } from "./draggable2.mjs";
4
+ import { t as Input } from "./input2.mjs";
3
5
  import Accordion from "./accordion.mjs";
4
6
  import Avatar from "./avatar.mjs";
5
7
  import Checkbox from "./checkbox.mjs";
@@ -28,7 +30,6 @@ import Tooltip from "./tooltip.mjs";
28
30
  import TreeView from "./tree-view.mjs";
29
31
  import Button from "./button.mjs";
30
32
  import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "./card.mjs";
31
- import Input from "./input.mjs";
32
33
  import Textarea from "./textarea.mjs";
33
34
  import Label from "./label.mjs";
34
35
  import Badge from "./badge.mjs";
@@ -36,7 +37,6 @@ import { Alert, AlertDescription, AlertTitle } from "./alert.mjs";
36
37
  import Separator from "./separator.mjs";
37
38
  import Skeleton from "./skeleton.mjs";
38
39
  import { dndManager } from "./dnd-manager.mjs";
39
- import Draggable from "./draggable.mjs";
40
40
  import Droppable from "./droppable.mjs";
41
41
  import DragDropContext from "./drag-drop-context.mjs";
42
42
  export { Accordion, Alert, AlertDescription, AlertTitle, Avatar, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Clipboard, Collapsible, Combobox, Dialog, DragDropContext, Draggable, Droppable, FileUpload, HoverCard, Input, Label, Menu, NumberInput, Pagination, PinInput, Popover, Progress, RadioGroup, RatingGroup, Select, Separator, Skeleton, Slider, Switch, Tabs, TagsInput, Textarea, ToastStore, Toaster, ToggleGroup, Tooltip, TreeView, ZagComponent, cn, dndManager };
package/dist/input.d.mts CHANGED
@@ -2,7 +2,7 @@ import { Component } from "@geajs/core";
2
2
 
3
3
  //#region src/components/input.d.ts
4
4
  declare class Input extends Component {
5
- template(props: any): string;
5
+ template(props: any): any;
6
6
  }
7
7
  //#endregion
8
8
  export { Input as default };
package/dist/input.mjs CHANGED
@@ -1,94 +1,2 @@
1
- import { t as cn } from "./cn.mjs";
2
- import { Component, GEA_ELEMENT, GEA_ON_PROP_CHANGE } from "@geajs/core";
3
- //#region src/components/input.tsx
4
- var Input = class extends Component {
5
- static {
6
- this.__geaTagName = "gea-input";
7
- }
8
- template(props) {
9
- const __id = this.id;
10
- return `<input id="${props.inputId}" data-gcc="${__id}"${cn("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", props.class) == null || cn("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", props.class) === false ? "" : ` class="${(cn("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", props.class) != null ? String(cn("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", props.class)) : "").trim()}"`}${(props.type || "text") == null || (props.type || "text") === false ? "" : ` type="${props.type || "text"}"`}${props.placeholder == null || props.placeholder === false ? "" : ` placeholder="${props.placeholder}"`}${props.value == null || props.value === false ? "" : ` value="${props.value}"`}${props.disabled == null || props.disabled === false ? "" : ` disabled="${props.disabled}"`}${props.name == null || props.name === false ? "" : ` name="${props.name}"`} />`;
11
- }
12
- get events() {
13
- if (this.__evts && this[GEA_ELEMENT]) return this.__evts;
14
- const __geaEvtsResult = { input: { [`#${this.props.inputId}`]: this.__event_input_0 } };
15
- if (this[GEA_ELEMENT]) this.__evts = __geaEvtsResult;
16
- return __geaEvtsResult;
17
- }
18
- __event_input_0(e, targetComponent) {
19
- this.props.onInput?.(e);
20
- }
21
- [GEA_ON_PROP_CHANGE](key, value) {
22
- if (key === "class") {
23
- const __el = this[GEA_ELEMENT];
24
- this.props;
25
- const __boundValue = cn("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", value);
26
- if (__el) {
27
- const __newClass = String(__boundValue ?? "").trim().replace(/\s+/g, " ");
28
- if (__el.className !== __newClass) __el.className = __newClass;
29
- }
30
- }
31
- if (key === "type") {
32
- const __el = this[GEA_ELEMENT];
33
- this.props;
34
- const __boundValue = value || "text";
35
- if (__el) {
36
- var __av = __boundValue;
37
- if (__av == null || __av === false) __el.removeAttribute("type");
38
- else {
39
- const __newAttr = String(__av);
40
- if (__el.getAttribute("type") !== __newAttr) __el.setAttribute("type", __newAttr);
41
- }
42
- }
43
- }
44
- if (key === "placeholder") {
45
- const __el = this[GEA_ELEMENT];
46
- if (__el) {
47
- var __av = value;
48
- if (__av == null || __av === false) __el.removeAttribute("placeholder");
49
- else {
50
- const __newAttr = String(__av);
51
- if (__el.getAttribute("placeholder") !== __newAttr) __el.setAttribute("placeholder", __newAttr);
52
- }
53
- }
54
- }
55
- if (key === "value") {
56
- const __el = this[GEA_ELEMENT];
57
- if (__el) __el.value = value == null ? "" : String(value);
58
- }
59
- if (key === "disabled") {
60
- const __el = this[GEA_ELEMENT];
61
- if (__el) if (!value) __el.removeAttribute("disabled");
62
- else {
63
- const __newAttr = "";
64
- if (__el.getAttribute("disabled") !== __newAttr) __el.setAttribute("disabled", __newAttr);
65
- }
66
- }
67
- if (key === "name") {
68
- const __el = this[GEA_ELEMENT];
69
- if (__el) {
70
- var __av = value;
71
- if (__av == null || __av === false) __el.removeAttribute("name");
72
- else {
73
- const __newAttr = String(__av);
74
- if (__el.getAttribute("name") !== __newAttr) __el.setAttribute("name", __newAttr);
75
- }
76
- }
77
- }
78
- if (key === "inputId") {
79
- const __el = this[GEA_ELEMENT];
80
- if (__el) {
81
- var __av = value;
82
- if (__av == null || __av === false) __el.removeAttribute("id");
83
- else {
84
- const __newAttr = String(__av);
85
- if (__el.getAttribute("id") !== __newAttr) __el.setAttribute("id", __newAttr);
86
- }
87
- }
88
- }
89
- }
90
- };
91
- //#endregion
1
+ import { t as Input } from "./input2.mjs";
92
2
  export { Input as default };
93
-
94
- //# sourceMappingURL=input.mjs.map
@@ -0,0 +1,56 @@
1
+ import { n as cn, t as CompiledComponent } from "./compiled-component.mjs";
2
+ import { o as GEA_CREATE_TEMPLATE, t as bind } from "./bind.mjs";
3
+ import { t as reactiveAttr } from "./reactive-attr.mjs";
4
+ import { t as reactiveBoolAttr } from "./reactive-bool.mjs";
5
+ import { t as reactiveClass } from "./reactive-class.mjs";
6
+ import { t as delegateEvent } from "./delegate-event.mjs";
7
+ //#region ../gea/src/runtime/reactive-value.ts
8
+ const reactiveValueRead = (el, d, root, pathOrGetter) => {
9
+ let controlled = false;
10
+ const apply = (v) => {
11
+ if (v === void 0 && !controlled) return;
12
+ controlled = true;
13
+ const s = v == null ? "" : String(v);
14
+ if (el.value !== s) el.value = s;
15
+ };
16
+ bind(d, root, pathOrGetter, apply);
17
+ };
18
+ //#endregion
19
+ //#region src/components/input.tsx
20
+ function _tpl0_create() {
21
+ return document.createElement("input");
22
+ }
23
+ var Input = class extends CompiledComponent {
24
+ [GEA_CREATE_TEMPLATE](d) {
25
+ const root = _tpl0_create();
26
+ const el0 = root;
27
+ const el1 = el0;
28
+ const el2 = el0;
29
+ const el3 = el0;
30
+ const el4 = el0;
31
+ const el5 = el0;
32
+ const el6 = el0;
33
+ const evt7 = el0;
34
+ reactiveClass(el0, d, this, () => cn("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", this.props.class));
35
+ reactiveAttr(el1, d, this, "type", () => this.props.type || "text");
36
+ reactiveAttr(el2, d, this, "placeholder", () => this.props.placeholder);
37
+ reactiveValueRead(el3, d, this, () => this.props.value);
38
+ reactiveBoolAttr(el4, d, this, "disabled", () => this.props.disabled);
39
+ reactiveAttr(el5, d, this, "name", () => this.props.name);
40
+ reactiveAttr(el6, d, this, "id", () => this.props.inputId);
41
+ const h7 = (e) => {
42
+ ((e) => this.props.onInput?.(e))(e);
43
+ const __v = this.props.value;
44
+ if (__v !== void 0) {
45
+ const __s = __v == null ? "" : String(__v);
46
+ if (evt7.value !== __s) evt7.value = __s;
47
+ }
48
+ };
49
+ delegateEvent(root, "input", [[evt7, h7]], d);
50
+ return root;
51
+ }
52
+ };
53
+ //#endregion
54
+ export { Input as t };
55
+
56
+ //# sourceMappingURL=input2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input2.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveAttr","reactiveValueRead","reactiveBoolAttr","delegateEvent","CompiledComponent","Component","cn","_tpl0_create","e","document","createElement","Input","d","root","el0","el1","el2","el3","el4","el5","el6","evt7","props","class","type","placeholder","value","disabled","name","inputId","h7","Event","onInput","__v","undefined","__s","String"],"sources":["../../gea/src/runtime/reactive-value.ts","../src/components/input.tsx"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\n\ntype InputLike = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement\n\nexport const reactiveValueRead = (\n el: InputLike,\n d: Disposer,\n root: any,\n pathOrGetter: readonly string[] | (() => unknown),\n): void => {\n let controlled = false\n const apply = (v: unknown): void => {\n if (v === undefined && !controlled) return\n controlled = true\n const s = v == null ? '' : String(v)\n if (el.value !== s) el.value = s\n }\n bind(d, root, pathOrGetter, apply)\n}\n\nexport const reactiveValue = (\n el: InputLike,\n d: Disposer,\n root: any,\n pathOrGetter: readonly string[] | (() => unknown),\n writeBack?: (v: string) => void,\n): void => {\n reactiveValueRead(el, d, root, pathOrGetter)\n if (writeBack) {\n const onInput = (): void => {\n writeBack(el.value)\n }\n el.addEventListener('input', onInput)\n d.add(() => el.removeEventListener('input', onInput))\n }\n}\n","import { Component } from '@geajs/core'\nimport { cn } from '../utils/cn'\n\nexport default class Input extends Component {\n template(props: any) {\n return (\n <input\n class={cn(\n 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n props.class,\n )}\n type={props.type || 'text'}\n placeholder={props.placeholder}\n value={props.value}\n disabled={props.disabled}\n name={props.name}\n id={props.inputId}\n input={(e: Event) => props.onInput?.(e)}\n />\n )\n }\n}\n"],"mappings":";;;;;;;AAKA,MAAa,qBACX,IACA,GACA,MACA,iBACS;CACT,IAAI,aAAa;CACjB,MAAM,SAAS,MAAqB;AAClC,MAAI,MAAM,KAAA,KAAa,CAAC,WAAY;AACpC,eAAa;EACb,MAAM,IAAI,KAAK,OAAO,KAAK,OAAO,EAAE;AACpC,MAAI,GAAG,UAAU,EAAG,IAAG,QAAQ;;AAEjC,MAAK,GAAG,MAAM,cAAc,MAAM;;;;ACfpC,SAASS,eAAe;AAEtB,QADUE,SAASC,cAAc,QACzB;;AAEV,IAAqBC,QAArB,cAAmCP,kBAAkB;CACnD,CAACN,qBAAqBc,GAAG;EACvB,MAAMC,OAAON,cAAc;EAC3B,MAAMO,MAAMD;EACZ,MAAME,MAAMD;EACZ,MAAME,MAAMF;EACZ,MAAMG,MAAMH;EACZ,MAAMI,MAAMJ;EACZ,MAAMK,MAAML;EACZ,MAAMM,MAAMN;EACZ,MAAMO,OAAOP;AACbf,gBAAce,KAAKF,GAAG,YAAYN,GAAG,6WAA6W,KAAKgB,MAAMC,MAAM,CAAC;AACpavB,eAAae,KAAKH,GAAG,MAAM,cAAc,KAAKU,MAAME,QAAQ,OAAO;AACnExB,eAAagB,KAAKJ,GAAG,MAAM,qBAAqB,KAAKU,MAAMG,YAAY;AACvExB,oBAAkBgB,KAAKL,GAAG,YAAY,KAAKU,MAAMI,MAAM;AACvDxB,mBAAiBgB,KAAKN,GAAG,MAAM,kBAAkB,KAAKU,MAAMK,SAAS;AACrE3B,eAAamB,KAAKP,GAAG,MAAM,cAAc,KAAKU,MAAMM,KAAK;AACzD5B,eAAaoB,KAAKR,GAAG,MAAM,YAAY,KAAKU,MAAMO,QAAQ;EAC1D,MAAMC,MAAKtB,MAAK;AACd,KAAEA,MAAa,KAAKc,MAAMU,UAAUxB,EAAE,EAAEA,EAAE;GAC1C,MAAMyB,MAAM,KAAKX,MAAMI;AACvB,OAAIO,QAAQC,KAAAA,GAAW;IACrB,MAAMC,MAAMF,OAAO,OAAO,KAAKG,OAAOH,IAAI;AAC1C,QAAIZ,KAAKK,UAAUS,IACjBd,MAAKK,QAAQS;;;AAInBhC,gBAAcU,MAAM,SAAS,CAAC,CAACQ,MAAMS,GAAG,CAAC,EAAElB,EAAE;AAC7C,SAAOC"}
@@ -0,0 +1,9 @@
1
+ //#region ../gea/src/runtime/internal-symbols.ts
2
+ const GEA_SET_PROPS = Symbol.for("gea.component.setProps");
3
+ const GEA_DISPOSER = Symbol();
4
+ const GEA_CREATED_CALLED = Symbol();
5
+ const GEA_OBSERVE_DIRECT = Symbol();
6
+ //#endregion
7
+ export { GEA_SET_PROPS as i, GEA_DISPOSER as n, GEA_OBSERVE_DIRECT as r, GEA_CREATED_CALLED as t };
8
+
9
+ //# sourceMappingURL=internal-symbols.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-symbols.mjs","names":[],"sources":["../../gea/src/runtime/internal-symbols.ts"],"sourcesContent":["export const GEA_SET_PROPS = Symbol.for('gea.component.setProps')\nexport const GEA_DISPOSER = Symbol()\nexport const GEA_CREATED_CALLED = Symbol()\nexport const GEA_OBSERVE_DIRECT = Symbol()\nexport const GEA_ROOT_PROXY_HANDLER_FACTORY = Symbol.for('gea.store.rootProxyHandlerFactory')\nexport const GEA_NO_STORE_PROXY = Symbol()\n"],"mappings":";AAAA,MAAa,gBAAgB,OAAO,IAAI,yBAAyB;AACjE,MAAa,eAAe,QAAQ;AACpC,MAAa,qBAAqB,QAAQ;AAC1C,MAAa,qBAAqB,QAAQ"}
@@ -0,0 +1,68 @@
1
+ import { n as trackRead, u as GEA_PROXY_RAW } from "./bind.mjs";
2
+ //#region ../gea/src/runtime/keyed-list/item-obs.ts
3
+ /**
4
+ * Per-item observable for keyed-list rows that have item-rooted reactive
5
+ * bindings NOT extractable into patchRow (e.g., destructured item params,
6
+ * reactive getters referencing `item` inside createItem). Each row gets
7
+ * one `ItemObservable` and one Proxy wrapping it so that `trackRead` picks
8
+ * up a dep on the current item value.
9
+ *
10
+ * Elided at the keyed-list level when `cfg.noItemProxy` is true — the
11
+ * compiler sets that flag when it proves createItem has no such bindings.
12
+ */
13
+ var ItemObs = class {
14
+ constructor(initial) {
15
+ this._o = [];
16
+ this.current = initial;
17
+ }
18
+ observe(_path, fn) {
19
+ const o = this._o;
20
+ const idx = o.length;
21
+ o.push(fn);
22
+ return () => {
23
+ o[idx] = null;
24
+ };
25
+ }
26
+ _fire() {
27
+ const o = this._o;
28
+ for (let i = 0; i < o.length; i++) {
29
+ const fn = o[i];
30
+ if (fn) fn();
31
+ }
32
+ }
33
+ };
34
+ function createItemObservable(initial) {
35
+ return new ItemObs(initial);
36
+ }
37
+ function createItemProxy(obs) {
38
+ return new Proxy({}, {
39
+ get(_t, prop) {
40
+ if (prop === GEA_PROXY_RAW) return obs.current;
41
+ trackRead(obs, "current");
42
+ const cur = obs.current;
43
+ if (cur == null) return void 0;
44
+ return cur[prop];
45
+ },
46
+ has(_t, prop) {
47
+ const cur = obs.current;
48
+ return cur != null && prop in Object(cur);
49
+ },
50
+ ownKeys() {
51
+ const cur = obs.current;
52
+ return cur != null ? Reflect.ownKeys(Object(cur)) : [];
53
+ },
54
+ getOwnPropertyDescriptor(_t, prop) {
55
+ const cur = obs.current;
56
+ if (cur == null) return void 0;
57
+ return Object.getOwnPropertyDescriptor(Object(cur), prop) ?? {
58
+ enumerable: true,
59
+ configurable: true,
60
+ value: cur[prop]
61
+ };
62
+ }
63
+ });
64
+ }
65
+ //#endregion
66
+ export { createItemProxy as n, createItemObservable as t };
67
+
68
+ //# sourceMappingURL=item-obs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item-obs.mjs","names":[],"sources":["../../gea/src/runtime/keyed-list/item-obs.ts"],"sourcesContent":["/**\n * Per-item observable for keyed-list rows that have item-rooted reactive\n * bindings NOT extractable into patchRow (e.g., destructured item params,\n * reactive getters referencing `item` inside createItem). Each row gets\n * one `ItemObservable` and one Proxy wrapping it so that `trackRead` picks\n * up a dep on the current item value.\n *\n * Elided at the keyed-list level when `cfg.noItemProxy` is true — the\n * compiler sets that flag when it proves createItem has no such bindings.\n */\nimport { GEA_PROXY_RAW } from '../../symbols'\nimport { trackRead } from '../with-tracking'\nimport type { ItemObservable } from './types'\n\n// Class-based (prototype shares observe/_fire) + tombstone-array observer\n// list. Per-row savings: no per-instance method closures (was 2 per row),\n// and O(1) unsubscribe for teardown (was Set.delete hop + hash probe per\n// binding × rows on 09_clear1k).\nclass ItemObs implements ItemObservable {\n current: any\n _o: Array<(() => void) | null> = []\n constructor(initial: any) {\n this.current = initial\n }\n observe(_path: string | string[], fn: () => void): () => void {\n const o = this._o\n const idx = o.length\n o.push(fn)\n return () => {\n o[idx] = null\n }\n }\n _fire(): void {\n const o = this._o\n for (let i = 0; i < o.length; i++) {\n const fn = o[i]\n if (fn) fn()\n }\n }\n}\n\nexport function createItemObservable(initial: any): ItemObservable {\n return new ItemObs(initial)\n}\n\nexport function createItemProxy(obs: ItemObservable): any {\n return new Proxy(\n {},\n {\n get(_t, prop) {\n if (prop === GEA_PROXY_RAW) return obs.current\n trackRead(obs as any, 'current')\n const cur = obs.current\n if (cur == null) return undefined\n return (cur as any)[prop as any]\n },\n has(_t, prop) {\n const cur = obs.current\n return cur != null && prop in Object(cur)\n },\n ownKeys() {\n const cur = obs.current\n return cur != null ? Reflect.ownKeys(Object(cur)) : []\n },\n getOwnPropertyDescriptor(_t, prop) {\n const cur = obs.current\n if (cur == null) return undefined\n return (\n Object.getOwnPropertyDescriptor(Object(cur), prop) ?? {\n enumerable: true,\n configurable: true,\n value: (cur as any)[prop as any],\n }\n )\n },\n },\n )\n}\n"],"mappings":";;;;;;;;;;;;AAkBA,IAAM,UAAN,MAAwC;CAGtC,YAAY,SAAc;YADO,EAAE;AAEjC,OAAK,UAAU;;CAEjB,QAAQ,OAA0B,IAA4B;EAC5D,MAAM,IAAI,KAAK;EACf,MAAM,MAAM,EAAE;AACd,IAAE,KAAK,GAAG;AACV,eAAa;AACX,KAAE,OAAO;;;CAGb,QAAc;EACZ,MAAM,IAAI,KAAK;AACf,OAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;GACjC,MAAM,KAAK,EAAE;AACb,OAAI,GAAI,KAAI;;;;AAKlB,SAAgB,qBAAqB,SAA8B;AACjE,QAAO,IAAI,QAAQ,QAAQ;;AAG7B,SAAgB,gBAAgB,KAA0B;AACxD,QAAO,IAAI,MACT,EAAE,EACF;EACE,IAAI,IAAI,MAAM;AACZ,OAAI,SAAS,cAAe,QAAO,IAAI;AACvC,aAAU,KAAY,UAAU;GAChC,MAAM,MAAM,IAAI;AAChB,OAAI,OAAO,KAAM,QAAO,KAAA;AACxB,UAAQ,IAAY;;EAEtB,IAAI,IAAI,MAAM;GACZ,MAAM,MAAM,IAAI;AAChB,UAAO,OAAO,QAAQ,QAAQ,OAAO,IAAI;;EAE3C,UAAU;GACR,MAAM,MAAM,IAAI;AAChB,UAAO,OAAO,OAAO,QAAQ,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE;;EAExD,yBAAyB,IAAI,MAAM;GACjC,MAAM,MAAM,IAAI;AAChB,OAAI,OAAO,KAAM,QAAO,KAAA;AACxB,UACE,OAAO,yBAAyB,OAAO,IAAI,EAAE,KAAK,IAAI;IACpD,YAAY;IACZ,cAAc;IACd,OAAQ,IAAY;IACrB;;EAGN,CACF"}
@@ -0,0 +1,6 @@
1
+ //#region ../gea/src/runtime/keyed-list-symbols.ts
2
+ const GEA_DOM_ITEM = Symbol();
3
+ //#endregion
4
+ export { GEA_DOM_ITEM as t };
5
+
6
+ //# sourceMappingURL=keyed-list-symbols.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyed-list-symbols.mjs","names":[],"sources":["../../gea/src/runtime/keyed-list-symbols.ts"],"sourcesContent":["/** Symbols used by keyed-list row roots and compiler/runtime compatibility. */\nexport const GEA_DOM_KEY = Symbol()\nexport const GEA_DOM_ITEM = Symbol()\n"],"mappings":";AAEA,MAAa,eAAe,QAAQ"}