native-document 1.0.164 → 1.0.166

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 (398) hide show
  1. package/components.d.ts +2 -0
  2. package/devtools/widget.js +1 -1
  3. package/dist/native-document.components.min.js +11074 -2735
  4. package/dist/native-document.dev.js +2269 -392
  5. package/dist/native-document.dev.js.map +1 -1
  6. package/dist/native-document.min.js +1 -1
  7. package/eslint.config.js +28 -33
  8. package/i18n.js +1 -1
  9. package/i18n.ts +2 -0
  10. package/index.js +4 -1
  11. package/package.json +3 -2
  12. package/src/components/$traits/has-draggable/HasDraggable.d.ts +4 -0
  13. package/src/components/$traits/has-draggable/HasDraggable.js +13 -0
  14. package/src/components/$traits/has-items/HasItems.d.ts +9 -0
  15. package/src/components/$traits/has-items/HasItems.js +6 -6
  16. package/src/components/$traits/has-position/HasFullPosition.d.ts +14 -0
  17. package/src/components/$traits/has-position/HasFullPosition.js +44 -0
  18. package/src/components/$traits/has-position/HasPosition.d.ts +7 -0
  19. package/src/components/$traits/has-position/HasPosition.js +23 -1
  20. package/src/components/$traits/has-resizable/HasResizable.d.ts +13 -0
  21. package/src/components/$traits/has-resizable/HasResizable.js +9 -0
  22. package/src/components/$traits/has-validation/HasValidation.d.ts +17 -0
  23. package/src/components/$traits/has-validation/HasValidation.js +54 -7
  24. package/src/components/BaseComponent.d.ts +32 -0
  25. package/src/components/BaseComponent.js +65 -9
  26. package/src/components/accordion/Accordion.js +39 -14
  27. package/src/components/accordion/AccordionItem.js +45 -14
  28. package/src/components/accordion/index.js +2 -2
  29. package/src/components/accordion/types/Accordion.d.ts +47 -0
  30. package/src/components/accordion/types/AccordionItem.d.ts +48 -0
  31. package/src/components/alert/Alert.js +70 -38
  32. package/src/components/alert/index.js +2 -2
  33. package/src/components/alert/types/Alert.d.ts +62 -0
  34. package/src/components/avatar/Avatar.js +49 -12
  35. package/src/components/avatar/AvatarGroup.js +50 -2
  36. package/src/components/avatar/index.js +2 -2
  37. package/src/components/avatar/types/Avatar.d.ts +74 -0
  38. package/src/components/avatar/types/AvatarGroup.d.ts +32 -0
  39. package/src/components/badge/Badge.js +125 -5
  40. package/src/components/badge/index.js +2 -2
  41. package/src/components/badge/types/Badge.d.ts +51 -0
  42. package/src/components/breadcrumb/BreadCrumb.js +61 -5
  43. package/src/components/breadcrumb/index.js +2 -2
  44. package/src/components/breadcrumb/types/BreadCrumb.d.ts +42 -0
  45. package/src/components/button/Button.js +164 -9
  46. package/src/components/button/index.js +1 -1
  47. package/src/components/button/types/Button.d.ts +62 -0
  48. package/src/components/card/Card.js +128 -10
  49. package/src/components/card/index.js +3 -3
  50. package/src/components/card/types/Card.d.ts +42 -0
  51. package/src/components/context-menu/ContextMenu.js +49 -5
  52. package/src/components/context-menu/ContextMenuGroup.js +15 -2
  53. package/src/components/context-menu/ContextMenuItem.js +14 -2
  54. package/src/components/context-menu/index.js +5 -5
  55. package/src/components/context-menu/types/ContextMenu.d.ts +30 -0
  56. package/src/components/context-menu/types/ContextMenuGroup.d.ts +18 -0
  57. package/src/components/context-menu/types/ContextMenuItem.d.ts +18 -0
  58. package/src/components/divider/Divider.js +120 -4
  59. package/src/components/divider/index.js +3 -3
  60. package/src/components/divider/types/Divider.d.ts +55 -0
  61. package/src/components/dropdown/Dropdown.js +239 -16
  62. package/src/components/dropdown/DropdownDivider.js +22 -2
  63. package/src/components/dropdown/DropdownGroup.js +44 -5
  64. package/src/components/dropdown/DropdownItem.js +76 -3
  65. package/src/components/dropdown/DropdownTrigger.js +49 -20
  66. package/src/components/dropdown/helpers.js +1 -1
  67. package/src/components/dropdown/index.js +6 -6
  68. package/src/components/dropdown/types/Dropdown.d.ts +88 -0
  69. package/src/components/dropdown/types/DropdownDivider.d.ts +20 -0
  70. package/src/components/dropdown/types/DropdownGroup.d.ts +25 -0
  71. package/src/components/dropdown/types/DropdownItem.d.ts +41 -0
  72. package/src/components/dropdown/types/DropdownTrigger.d.ts +32 -0
  73. package/src/components/form/FormControl.js +156 -13
  74. package/src/components/form/field/Field.js +172 -9
  75. package/src/components/form/field/FieldCollection.js +116 -12
  76. package/src/components/form/field/types/AutocompleteField.js +92 -2
  77. package/src/components/form/field/types/CheckboxField.js +43 -2
  78. package/src/components/form/field/types/CheckboxGroupField.js +83 -6
  79. package/src/components/form/field/types/ColorField.js +56 -3
  80. package/src/components/form/field/types/DateField.js +155 -4
  81. package/src/components/form/field/types/EmailField.js +54 -4
  82. package/src/components/form/field/types/FileField.js +140 -6
  83. package/src/components/form/field/types/HiddenField.js +27 -1
  84. package/src/components/form/field/types/ImageField.js +82 -3
  85. package/src/components/form/field/types/NumberField.js +97 -4
  86. package/src/components/form/field/types/PasswordField.js +103 -7
  87. package/src/components/form/field/types/RadioField.js +75 -4
  88. package/src/components/form/field/types/RangeField.js +67 -1
  89. package/src/components/form/field/types/SearchField.js +41 -2
  90. package/src/components/form/field/types/SelectField.js +133 -4
  91. package/src/components/form/field/types/StringField.js +91 -2
  92. package/src/components/form/field/types/TelField.js +55 -4
  93. package/src/components/form/field/types/TextAreaField.js +76 -2
  94. package/src/components/form/field/types/TimeField.js +120 -5
  95. package/src/components/form/field/types/UrlField.js +59 -4
  96. package/src/components/form/field/types/file-field-mode/FileAvatarMode.js +83 -4
  97. package/src/components/form/field/types/file-field-mode/FileDropzoneMode.js +61 -3
  98. package/src/components/form/field/types/file-field-mode/FileItemPreview.js +79 -3
  99. package/src/components/form/field/types/file-field-mode/FileNativeMode.js +24 -2
  100. package/src/components/form/field/types/file-field-mode/FileUploadButtonMode.js +64 -3
  101. package/src/components/form/field/types/file-field-mode/FileWallMode.js +56 -3
  102. package/src/components/form/index.js +28 -28
  103. package/src/components/form/types/Field.d.ts +73 -0
  104. package/src/components/form/types/FieldCollection.d.ts +53 -0
  105. package/src/components/form/types/FormControl.d.ts +64 -0
  106. package/src/components/form/types/fields/AutocompleteField.d.ts +48 -0
  107. package/src/components/form/types/fields/CheckboxField.d.ts +33 -0
  108. package/src/components/form/types/fields/CheckboxGroupField.d.ts +49 -0
  109. package/src/components/form/types/fields/ColorField.d.ts +37 -0
  110. package/src/components/form/types/fields/DateField.d.ts +70 -0
  111. package/src/components/form/types/fields/EmailField.d.ts +35 -0
  112. package/src/components/form/types/fields/FileAvatarMode.d.ts +46 -0
  113. package/src/components/form/types/fields/FileDropzoneMode.d.ts +28 -0
  114. package/src/components/form/types/fields/FileField.d.ts +56 -0
  115. package/src/components/form/types/fields/FileItemPreview.d.ts +35 -0
  116. package/src/components/form/types/fields/FileNativeMode.d.ts +21 -0
  117. package/src/components/form/types/fields/FileUploadButtonMode.d.ts +34 -0
  118. package/src/components/form/types/fields/FileWallMode.d.ts +32 -0
  119. package/src/components/form/types/fields/HiddenField.d.ts +26 -0
  120. package/src/components/form/types/fields/ImageField.d.ts +45 -0
  121. package/src/components/form/types/fields/NumberField.d.ts +48 -0
  122. package/src/components/form/types/fields/PasswordField.d.ts +46 -0
  123. package/src/components/form/types/fields/RadioField.d.ts +48 -0
  124. package/src/components/form/types/fields/RangeField.d.ts +44 -0
  125. package/src/components/form/types/fields/SearchField.d.ts +34 -0
  126. package/src/components/form/types/fields/SelectField.d.ts +71 -0
  127. package/src/components/form/types/fields/StringField.d.ts +48 -0
  128. package/src/components/form/types/fields/TelField.d.ts +37 -0
  129. package/src/components/form/types/fields/TextAreaField.d.ts +44 -0
  130. package/src/components/form/types/fields/TimeField.d.ts +51 -0
  131. package/src/components/form/types/fields/UrlField.d.ts +35 -0
  132. package/src/components/form/validation/Validation.js +54 -54
  133. package/src/components/index.d.ts +160 -0
  134. package/src/components/list/List.js +99 -15
  135. package/src/components/list/ListGroup.js +58 -8
  136. package/src/components/list/ListItem.js +79 -18
  137. package/src/components/list/index.js +5 -5
  138. package/src/components/list/types/List.d.ts +43 -0
  139. package/src/components/list/types/ListGroup.d.ts +37 -0
  140. package/src/components/list/types/ListItem.d.ts +42 -0
  141. package/src/components/menu/HasMenuItem.js +55 -6
  142. package/src/components/menu/Menu.js +113 -22
  143. package/src/components/menu/MenuDivider.js +18 -2
  144. package/src/components/menu/MenuGroup.js +61 -6
  145. package/src/components/menu/MenuItem.js +95 -11
  146. package/src/components/menu/MenuLink.js +27 -2
  147. package/src/components/menu/index.js +6 -6
  148. package/src/components/menu/types/Menu.d.ts +60 -0
  149. package/src/components/menu/types/MenuDivider.d.ts +19 -0
  150. package/src/components/menu/types/MenuGroup.d.ts +44 -0
  151. package/src/components/menu/types/MenuItem.d.ts +46 -0
  152. package/src/components/menu/types/MenuLink.d.ts +16 -0
  153. package/src/components/modal/Modal.js +258 -17
  154. package/src/components/modal/index.js +3 -3
  155. package/src/components/modal/types/Modal.d.ts +94 -0
  156. package/src/components/pagination/Pagination.js +155 -7
  157. package/src/components/pagination/index.js +3 -3
  158. package/src/components/pagination/types/Pagination.d.ts +68 -0
  159. package/src/components/popover/Popover.js +198 -11
  160. package/src/components/popover/PopoverFooter.js +33 -9
  161. package/src/components/popover/PopoverHeader.js +33 -8
  162. package/src/components/popover/index.js +4 -4
  163. package/src/components/popover/types/Popover.d.ts +83 -0
  164. package/src/components/popover/types/PopoverFooter.d.ts +24 -0
  165. package/src/components/popover/types/PopoverHeader.d.ts +26 -0
  166. package/src/components/progress/Progress.js +182 -13
  167. package/src/components/progress/index.js +3 -3
  168. package/src/components/progress/types/Progress.d.ts +77 -0
  169. package/src/components/skeleton/Skeleton.js +117 -49
  170. package/src/components/skeleton/index.js +3 -3
  171. package/src/components/skeleton/types/Skeleton.d.ts +55 -0
  172. package/src/components/slider/Slider.js +207 -10
  173. package/src/components/slider/index.js +2 -2
  174. package/src/components/slider/types/Slider.d.ts +82 -0
  175. package/src/components/spacer/Spacer.js +11 -2
  176. package/src/components/spacer/index.js +2 -2
  177. package/src/components/spacer/types/Spacer.d.ts +19 -0
  178. package/src/components/spinner/Spinner.js +180 -9
  179. package/src/components/spinner/index.js +3 -3
  180. package/src/components/spinner/types/Spinner.d.ts +71 -0
  181. package/src/components/splitter/Splitter.js +76 -13
  182. package/src/components/splitter/SplitterGutter.js +67 -5
  183. package/src/components/splitter/SplitterPanel.js +69 -2
  184. package/src/components/splitter/index.js +5 -5
  185. package/src/components/splitter/types/Splitter.d.ts +38 -0
  186. package/src/components/splitter/types/SplitterGutter.d.ts +38 -0
  187. package/src/components/splitter/types/SplitterPanel.d.ts +41 -0
  188. package/src/components/stacks/AbsoluteStack.js +23 -3
  189. package/src/components/stacks/FixedStack.js +23 -3
  190. package/src/components/stacks/HStack.js +24 -3
  191. package/src/components/stacks/PositionStack.js +111 -3
  192. package/src/components/stacks/RelativeStack.js +23 -3
  193. package/src/components/stacks/Stack.js +73 -2
  194. package/src/components/stacks/VStack.js +24 -4
  195. package/src/components/stacks/index.js +7 -7
  196. package/src/components/stacks/types/AbsoluteStack.d.ts +16 -0
  197. package/src/components/stacks/types/FixedStack.d.ts +16 -0
  198. package/src/components/stacks/types/HStack.d.ts +16 -0
  199. package/src/components/stacks/types/PositionStack.d.ts +54 -0
  200. package/src/components/stacks/types/RelativeStack.d.ts +17 -0
  201. package/src/components/stacks/types/Stack.d.ts +39 -0
  202. package/src/components/stacks/types/VStack.d.ts +16 -0
  203. package/src/components/stepper/Stepper.js +152 -12
  204. package/src/components/stepper/StepperStep.js +104 -3
  205. package/src/components/stepper/index.js +4 -4
  206. package/src/components/stepper/types/Stepper.d.ts +68 -0
  207. package/src/components/stepper/types/StepperStep.d.ts +54 -0
  208. package/src/components/switch/Switch.js +143 -6
  209. package/src/components/switch/index.js +1 -1
  210. package/src/components/switch/types/Switch.d.ts +55 -0
  211. package/src/components/table/Column.js +105 -6
  212. package/src/components/table/ColumnGroup.js +48 -3
  213. package/src/components/table/DataTable.js +256 -19
  214. package/src/components/table/SimpleTable.js +58 -4
  215. package/src/components/table/index.js +2 -2
  216. package/src/components/table/types/Column.d.ts +49 -0
  217. package/src/components/table/types/ColumnGroup.d.ts +28 -0
  218. package/src/components/table/types/DataTable.d.ts +97 -0
  219. package/src/components/table/types/SimpleTable.d.ts +40 -0
  220. package/src/components/tabs/Tabs.js +192 -5
  221. package/src/components/tabs/index.js +3 -3
  222. package/src/components/tabs/types/Tabs.d.ts +78 -0
  223. package/src/components/toast/Toast.js +133 -5
  224. package/src/components/toast/index.js +3 -3
  225. package/src/components/toast/types/Toast.d.ts +57 -0
  226. package/src/components/toast/types/ToastError.d.ts +7 -0
  227. package/src/components/toast/types/ToastInfo.d.ts +7 -0
  228. package/src/components/toast/types/ToastSuccess.d.ts +7 -0
  229. package/src/components/toast/types/ToastWarning.d.ts +7 -0
  230. package/src/components/tooltip/Tooltip.js +157 -13
  231. package/src/components/tooltip/index.js +2 -2
  232. package/src/components/tooltip/prototypes.js +1 -1
  233. package/src/components/tooltip/types/Tooltip.d.ts +65 -0
  234. package/src/core/data/MemoryManager.js +2 -2
  235. package/src/core/data/Observable.js +15 -18
  236. package/src/core/data/ObservableArray.js +118 -46
  237. package/src/core/data/ObservableChecker.js +2 -2
  238. package/src/core/data/ObservableItem.js +135 -21
  239. package/src/core/data/ObservableObject.js +126 -35
  240. package/src/core/data/ObservableResource.js +113 -3
  241. package/src/core/data/Store.js +142 -26
  242. package/src/core/data/observable-helpers/observable.is-to.js +196 -1
  243. package/src/core/data/observable-helpers/observable.prototypes.js +33 -8
  244. package/src/core/elements/anchor/anchor-with-sentinel.js +23 -2
  245. package/src/core/elements/anchor/anchor.js +16 -7
  246. package/src/core/elements/anchor/one-child-anchor-overwriting.js +2 -2
  247. package/src/core/elements/content-formatter.js +1 -1
  248. package/src/core/elements/control/for-each-array.js +9 -9
  249. package/src/core/elements/control/for-each.js +14 -14
  250. package/src/core/elements/control/show-if.js +11 -11
  251. package/src/core/elements/control/show-when.js +5 -5
  252. package/src/core/elements/control/switch.js +14 -14
  253. package/src/core/elements/description-list.js +1 -1
  254. package/src/core/elements/form.js +2 -2
  255. package/src/core/elements/fragment.js +1 -1
  256. package/src/core/elements/html5-semantics.js +1 -1
  257. package/src/core/elements/img.js +3 -3
  258. package/src/core/elements/interactive.js +1 -1
  259. package/src/core/elements/list.js +1 -1
  260. package/src/core/elements/medias.js +1 -1
  261. package/src/core/elements/meta-data.js +1 -1
  262. package/src/core/elements/svg.js +1 -1
  263. package/src/core/elements/table.js +1 -1
  264. package/src/core/errors/ArgTypesError.js +1 -1
  265. package/src/core/utils/HasEventEmitter.js +36 -2
  266. package/src/core/utils/args-types.js +9 -9
  267. package/src/core/utils/cache.js +1 -1
  268. package/src/core/utils/callback-handler.js +29 -0
  269. package/src/core/utils/debug-manager.js +6 -6
  270. package/src/core/utils/events.js +139 -139
  271. package/src/core/utils/filters/date.js +84 -3
  272. package/src/core/utils/filters/standard.js +136 -11
  273. package/src/core/utils/filters/strings.js +34 -2
  274. package/src/core/utils/filters/utils.js +40 -4
  275. package/src/core/utils/formatters.js +4 -4
  276. package/src/core/utils/helpers.js +39 -7
  277. package/src/core/utils/localstorage.js +11 -11
  278. package/src/core/utils/memoize.js +56 -3
  279. package/src/core/utils/plugins-manager.js +3 -3
  280. package/src/core/utils/property-accumulator.js +6 -6
  281. package/src/core/utils/prototypes.js +26 -1
  282. package/src/core/utils/shortcut-manager.js +2 -2
  283. package/src/core/utils/validator.js +8 -8
  284. package/src/core/wrappers/AttributesWrapper.js +32 -22
  285. package/src/core/wrappers/DocumentObserver.js +3 -3
  286. package/src/core/wrappers/ElementCreator.js +5 -5
  287. package/src/core/wrappers/HtmlElementWrapper.js +38 -12
  288. package/src/core/wrappers/NDElement.js +328 -22
  289. package/src/core/wrappers/NdPrototype.js +60 -16
  290. package/src/core/wrappers/SingletonView.js +50 -2
  291. package/src/core/wrappers/SvgElementWrapper.js +1 -1
  292. package/src/core/wrappers/constants.js +35 -2
  293. package/src/core/wrappers/prototypes/attributes-extensions.js +7 -7
  294. package/src/core/wrappers/prototypes/nd-element-extensions.js +72 -6
  295. package/src/core/wrappers/prototypes/nd-element.transition.extensions.js +42 -2
  296. package/src/core/wrappers/template-cloner/NodeCloner.js +53 -8
  297. package/src/core/wrappers/template-cloner/TemplateCloner.js +75 -6
  298. package/src/core/wrappers/template-cloner/attributes-hydrator.js +58 -2
  299. package/src/core/wrappers/template-cloner/utils.js +42 -6
  300. package/src/fetch/NativeFetch.js +3 -3
  301. package/src/i18n/bin/scan.js +6 -6
  302. package/src/i18n/index.d.ts +2 -0
  303. package/src/i18n/service/I18nService.d.ts +27 -0
  304. package/src/i18n/service/I18nService.js +5 -5
  305. package/src/i18n/service/functions.d.ts +22 -0
  306. package/src/i18n/service/functions.js +2 -2
  307. package/src/router/Route.js +3 -3
  308. package/src/router/RouteGroupHelper.js +2 -2
  309. package/src/router/Router.js +15 -15
  310. package/src/router/RouterComponent.js +33 -7
  311. package/src/router/link.js +4 -4
  312. package/src/router/modes/HashRouter.js +2 -2
  313. package/src/router/modes/HistoryRouter.js +2 -2
  314. package/src/router/modes/MemoryRouter.js +1 -1
  315. package/src/ui/components/accordion/AccordionItemRender.js +3 -3
  316. package/src/ui/components/accordion/AccordionRender.js +1 -1
  317. package/src/ui/components/alert/AlertRender.js +10 -10
  318. package/src/ui/components/avatar/avata-group/AvatarGroupRender.js +1 -1
  319. package/src/ui/components/avatar/avatar/AvatarRender.js +1 -1
  320. package/src/ui/components/breadcrumb/BreadcrumbRender.js +2 -2
  321. package/src/ui/components/button/ButtonRender.js +1 -1
  322. package/src/ui/components/contextmenu/ContextmenuRender.js +5 -5
  323. package/src/ui/components/dropdown/DropdownRender.js +8 -8
  324. package/src/ui/components/dropdown/group/DropdownGroupRender.js +2 -2
  325. package/src/ui/components/dropdown/item/DropdownItemRender.js +1 -1
  326. package/src/ui/components/form/FieldCollectionRender.js +2 -2
  327. package/src/ui/components/form/FormControlRender.js +5 -5
  328. package/src/ui/components/form/fields/AutocompleteFieldRender.js +3 -3
  329. package/src/ui/components/form/fields/CheckboxFieldRender.js +1 -1
  330. package/src/ui/components/form/fields/CheckboxGroupFieldRender.js +1 -1
  331. package/src/ui/components/form/fields/DateFieldRender.js +7 -7
  332. package/src/ui/components/form/fields/EmailFieldRender.js +1 -1
  333. package/src/ui/components/form/fields/FieldRender.js +4 -4
  334. package/src/ui/components/form/fields/FileFieldRender.js +1 -1
  335. package/src/ui/components/form/fields/PasswordFieldRender.js +2 -2
  336. package/src/ui/components/form/fields/RadioFieldRender.js +1 -1
  337. package/src/ui/components/form/fields/RangeFieldRender.js +1 -1
  338. package/src/ui/components/form/fields/SelectFieldRender.js +2 -2
  339. package/src/ui/components/form/fields/SliderFieldRender.js +6 -6
  340. package/src/ui/components/form/fields/StringFieldRender.js +1 -1
  341. package/src/ui/components/form/fields/TelFieldRender.js +1 -1
  342. package/src/ui/components/form/fields/TextAreaFieldRender.js +1 -1
  343. package/src/ui/components/form/fields/TimeFieldRender.js +3 -3
  344. package/src/ui/components/form/fields/UrlFieldRender.js +1 -1
  345. package/src/ui/components/form/file-upload-mode/FileAvatarModeRender.js +1 -1
  346. package/src/ui/components/form/file-upload-mode/FileDropzoneModeRender.js +2 -2
  347. package/src/ui/components/form/file-upload-mode/FileUploadButtonModeRender.js +2 -2
  348. package/src/ui/components/form/file-upload-mode/FileWallModeRender.js +1 -1
  349. package/src/ui/components/form/helpers.js +8 -8
  350. package/src/ui/components/form/index.js +27 -27
  351. package/src/ui/components/menu/MenuDividerRender.js +1 -1
  352. package/src/ui/components/menu/MenuGroupRender.js +3 -3
  353. package/src/ui/components/menu/MenuItemRender.js +2 -2
  354. package/src/ui/components/menu/MenuLinkRender.js +3 -3
  355. package/src/ui/components/menu/helpers.js +4 -4
  356. package/src/ui/components/modal/ModalRender.js +4 -4
  357. package/src/ui/components/pagination/PaginationRender.js +9 -9
  358. package/src/ui/components/popover/PopoverRender.js +7 -7
  359. package/src/ui/components/progress/ProgressRender.js +12 -12
  360. package/src/ui/components/skeleton/SkeletonRender.js +56 -0
  361. package/src/ui/components/splitter/SplitterGutterRender.js +1 -1
  362. package/src/ui/components/splitter/SplitterPanelRender.js +2 -2
  363. package/src/ui/components/stacks/PositionStackRender.js +1 -1
  364. package/src/ui/components/stacks/StackRender.js +1 -1
  365. package/src/ui/components/stacks/absolute-stack/AbsoluteStackRender.js +1 -1
  366. package/src/ui/components/stacks/fixed-stack/FixedStackRender.js +1 -1
  367. package/src/ui/components/stacks/h-stack/HStackRender.js +1 -1
  368. package/src/ui/components/stacks/index.js +5 -5
  369. package/src/ui/components/stacks/relative-stack/RelativeStackRender.js +1 -1
  370. package/src/ui/components/stacks/v-stack/VStackRender.js +1 -1
  371. package/src/ui/components/stepper/StepperRender.js +2 -2
  372. package/src/ui/components/stepper/StepperStepRender.js +4 -4
  373. package/src/ui/components/switch/SwitchRender.js +4 -4
  374. package/src/ui/components/table/data-table/DataTableRender.js +5 -5
  375. package/src/ui/components/table/data-table/bulk-actions.js +7 -7
  376. package/src/ui/components/table/data-table/pagination.js +6 -6
  377. package/src/ui/components/table/data-table/tables.js +25 -25
  378. package/src/ui/components/table/data-table/toolbar.js +3 -3
  379. package/src/ui/components/table/simple-table/SimpleTableRender.js +8 -8
  380. package/src/ui/components/tabs/TabsRender.js +11 -11
  381. package/src/ui/components/toast/ToastRender.js +3 -3
  382. package/src/ui/components/tooltip/TooltipRender.js +1 -1
  383. package/src/ui/index.js +36 -36
  384. package/types/elements.d.ts +163 -1037
  385. package/types/forms.d.ts +16 -20
  386. package/types/globals.d.ts +543 -0
  387. package/types/images.d.ts +2 -2
  388. package/types/observable-resource.d.ts +3 -0
  389. package/types/property-accumulator.d.ts +4 -4
  390. package/types/store.d.ts +26 -2
  391. package/types/validator.ts +3 -3
  392. package/ui.js +1 -0
  393. package/src/components/form/field/DefaultRender.js +0 -77
  394. package/src/components/form/field/FieldFactory.js +0 -107
  395. package/src/components/skeleton/SkeletonCard.js +0 -0
  396. package/src/components/skeleton/SkeletonList.js +0 -0
  397. package/src/components/skeleton/SkeletonParagraph.js +0 -0
  398. package/src/components/skeleton/SkeletonTable.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"native-document.dev.js","sources":["../src/core/utils/debug-manager.js","../src/core/errors/NativeDocumentError.js","../src/core/utils/validator.js","../src/core/wrappers/constants.js","../src/core/data/MemoryManager.js","../src/core/utils/plugins-manager.js","../src/core/utils/helpers.js","../src/core/utils/localstorage.js","../src/core/data/ObservableItem.js","../src/core/utils/filters/utils.js","../src/core/utils/filters/standard.js","../src/core/utils/filters/date.js","../src/core/utils/filters/strings.js","../src/core/data/ObservableArray.js","../src/core/data/ObservableObject.js","../src/core/data/observable-helpers/observable.is-to.js","../src/core/data/ObservableWhen.js","../src/core/data/ObservableChecker.js","../src/core/utils/formatters.js","../src/core/data/observable-helpers/observable.prototypes.js","../src/core/data/ObservableResource.js","../src/core/data/Observable.js","../src/core/wrappers/AttributesWrapper.js","../src/core/wrappers/ElementCreator.js","../src/core/elements/anchor/anchor-with-sentinel.js","../src/core/elements/anchor/one-child-anchor-overwriting.js","../src/core/elements/anchor/anchor.js","../src/core/errors/ArgTypesError.js","../src/core/utils/args-types.js","../src/core/wrappers/DocumentObserver.js","../src/core/wrappers/NDElement.js","../src/core/utils/events.js","../src/core/wrappers/NdPrototype.js","../src/core/utils/prototypes.js","../src/core/wrappers/TemplateBinding.js","../src/core/wrappers/prototypes/nd-element-extensions.js","../src/core/wrappers/prototypes/nd-element.transition.extensions.js","../src/core/wrappers/prototypes/attributes-extensions.js","../src/core/wrappers/HtmlElementWrapper.js","../src/core/wrappers/template-cloner/NodeCloner.js","../src/core/wrappers/template-cloner/utils.js","../src/core/wrappers/template-cloner/TemplateCloner.js","../src/core/wrappers/SingletonView.js","../src/core/utils/property-accumulator.js","../src/core/utils/memoize.js","../src/core/data/Store.js","../src/core/elements/control/for-each.js","../src/core/elements/control/for-each-array.js","../src/core/elements/control/show-if.js","../src/core/elements/control/show-when.js","../src/core/elements/control/switch.js","../src/core/elements/content-formatter.js","../src/core/elements/description-list.js","../src/core/elements/form.js","../src/core/elements/html5-semantics.js","../src/core/elements/img.js","../src/core/elements/interactive.js","../src/core/elements/list.js","../src/core/elements/medias.js","../src/core/elements/meta-data.js","../src/core/elements/table.js","../src/core/wrappers/SvgElementWrapper.js","../src/core/elements/svg.js","../src/core/elements/fragment.js","../src/router/Route.js","../src/router/errors/RouterError.js","../src/router/RouteGroupHelper.js","../src/router/modes/HashRouter.js","../src/router/modes/HistoryRouter.js","../src/router/modes/MemoryRouter.js","../src/router/RouterComponent.js","../src/router/Router.js","../src/router/link.js","../src/fetch/NativeFetch.js","../src/core/utils/cache.js"],"sourcesContent":["let DebugManager = {};\n\nif(process.env.NODE_ENV === 'development') {\n DebugManager = {\n enabled: true,\n\n enable() {\n DebugManager.log('🔍 NativeDocument Debug Mode enabled');\n },\n\n disable() {\n this.enabled = false;\n },\n\n log(category, message, data) {\n console.group(`🔍 [${category}] ${message}`);\n if (data) console.log(data);\n console.trace();\n console.groupEnd();\n },\n\n warn(category, message, data) {\n console.warn(`⚠️ [${category}] ${message}`, data);\n },\n\n error(category, message, error) {\n console.error(`❌ [${category}] ${message}`, error);\n }\n };\n\n}\nif(process.env.NODE_ENV === 'production') {\n DebugManager = {\n log() {},\n warn() {},\n error() {},\n disable() {}\n };\n}\nexport default DebugManager;","export default class NativeDocumentError extends Error {\n constructor(message, context = {}) {\n super(message);\n this.name = 'NativeDocumentError';\n this.context = context;\n this.timestamp = new Date().toISOString();\n }\n}","import DebugManager from \"./debug-manager\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\n\nconst COMMON_NODE_TYPES = {\n ELEMENT: 1,\n TEXT: 3,\n COMMENT: 8,\n DOCUMENT: 9,\n DOCUMENT_FRAGMENT: 11\n};\n\nexport const VALID_TYPES = [];\nVALID_TYPES[COMMON_NODE_TYPES.ELEMENT] = true;\nVALID_TYPES[COMMON_NODE_TYPES.TEXT] = true;\nVALID_TYPES[COMMON_NODE_TYPES.DOCUMENT_FRAGMENT] = true;\nVALID_TYPES[COMMON_NODE_TYPES.COMMENT] = true;\n\nconst Validator = {\n isObservable(value) {\n return value && (value.__$isObservable || value.__$Observable);\n },\n isTemplateBinding(value) {\n return value?.__$isTemplateBinding;\n },\n isObservableWhenResult(value) {\n return value && (value.__$isObservableWhen || (typeof value === 'object' && '$target' in value && '$observer' in value));\n },\n isArrayObservable(value) {\n return value?.__$isObservableArray;\n },\n isProxy(value) {\n return value?.__isProxy__\n },\n isObservableOrProxy(value) {\n return Validator.isObservable(value) || Validator.isProxy(value);\n },\n isAnchor(value) {\n return value?.__Anchor__\n },\n isObservableChecker(value) {\n return value?.__$isObservableChecker;\n },\n isArray(value) {\n return Array.isArray(value);\n },\n isString(value) {\n return typeof value === 'string';\n },\n isNumber(value) {\n return typeof value === 'number';\n },\n isBoolean(value) {\n return typeof value === 'boolean';\n },\n isFunction(value) {\n return typeof value === 'function';\n },\n isAsyncFunction(value) {\n return typeof value === 'function' && value.constructor.name === 'AsyncFunction';\n },\n isObject(value) {\n return typeof value === 'object' && value !== null;\n },\n isJson(value) {\n return !(typeof value !== 'object' || value === null || Array.isArray(value) || value.constructor.name !== 'Object')\n },\n isElement(value) {\n return value && VALID_TYPES[value.nodeType];\n },\n isDOMNode(value) {\n return VALID_TYPES[value.nodeType];\n },\n isFragment(value) {\n return value?.nodeType === COMMON_NODE_TYPES.DOCUMENT_FRAGMENT;\n },\n isStringOrObservable(value) {\n return this.isString(value) || this.isObservable(value);\n },\n isValidChild(child) {\n return child === null ||\n this.isElement(child) ||\n child.__$Observable ||\n child?.__$isNDElement ||\n ['string', 'number', 'boolean'].includes(typeof child);\n },\n isNDElement(child) {\n return child?.__$isNDElement;\n },\n isValidChildren(children) {\n if (!Array.isArray(children)) {\n children = [children];\n }\n\n const invalid = children.filter(child => !this.isValidChild(child));\n return invalid.length === 0;\n },\n validateChildren(children) {\n if (!Array.isArray(children)) {\n children = [children];\n }\n\n const invalid = children.filter(child => !this.isValidChild(child));\n if (invalid.length > 0) {\n throw new NativeDocumentError(`Invalid children detected: ${invalid.map(i => typeof i).join(', ')}`);\n }\n\n return children;\n },\n /**\n * Check if the data contains observables.\n * @param {Array|Object} data\n * @returns {boolean}\n */\n containsObservables(data) {\n if(!data) {\n return false;\n }\n return Validator.isObject(data)\n && Object.values(data).some(value => Validator.isObservable(value));\n },\n /**\n * Check if the data contains an observable reference.\n * @param {string} data\n * @returns {boolean}\n */\n containsObservableReference(data) {\n if(!data || typeof data !== 'string') {\n return false;\n }\n return /\\{\\{#ObItem::\\([0-9]+\\)\\}\\}/.test(data);\n },\n validateAttributes(attributes) {},\n\n validateEventCallback(callback) {\n if (typeof callback !== 'function') {\n throw new NativeDocumentError('Event callback must be a function');\n }\n }\n};\nif(process.env.NODE_ENV === 'development') {\n Validator.validateAttributes = function(attributes) {\n if (!attributes || typeof attributes !== 'object') {\n return attributes;\n }\n\n const reserved = [];\n const foundReserved = Object.keys(attributes).filter(key => reserved.includes(key));\n\n if (foundReserved.length > 0) {\n DebugManager.warn('Validator', `Reserved attributes found: ${foundReserved.join(', ')}`);\n }\n\n return attributes;\n };\n}\n\nexport default Validator;","\nexport const BOOLEAN_ATTRIBUTES = new Set([\n 'checked',\n 'selected',\n 'disabled',\n 'readonly',\n 'required',\n 'autofocus',\n 'multiple',\n 'autocomplete',\n 'hidden',\n 'contenteditable',\n 'spellcheck',\n 'translate',\n 'draggable',\n 'async',\n 'defer',\n 'autoplay',\n 'controls',\n 'loop',\n 'muted',\n 'download',\n 'reversed',\n 'open',\n 'default',\n 'formnovalidate',\n 'novalidate',\n 'scoped',\n 'itemscope',\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'playsinline'\n]);","import DebugManager from \"../../core/utils/debug-manager\";\n\n\nconst MemoryManager = (function() {\n\n let $nextObserverId = 0;\n const $observables = new Map();\n\n return {\n /**\n * Register an observable and return an id.\n *\n * @param {ObservableItem} observable\n * @param {Function} getListeners\n * @returns {number}\n */\n register(observable) {\n const id = ++$nextObserverId;\n $observables.set(id, new WeakRef(observable));\n return id;\n },\n unregister(id) {\n $observables.delete(id);\n },\n getObservableById(id) {\n return $observables.get(id)?.deref();\n },\n cleanup() {\n for (const [_, weakObservableRef] of $observables) {\n const observable = weakObservableRef.deref();\n if (observable) {\n observable.cleanup();\n }\n }\n $observables.clear();\n },\n /**\n * Clean observables that are not referenced anymore.\n * @param {number} threshold\n */\n cleanObservables(threshold) {\n if($observables.size < threshold) return;\n let cleanedCount = 0;\n for (const [id, weakObservableRef] of $observables) {\n if (!weakObservableRef.deref()) {\n $observables.delete(id);\n cleanedCount++;\n }\n }\n if (cleanedCount > 0) {\n DebugManager.log('Memory Auto Clean', `🧹 Cleaned ${cleanedCount} orphaned observables`);\n }\n }\n };\n}());\n\nexport default MemoryManager;","import DebugManager from \"./debug-manager\";\n\nlet PluginsManager = null;\n\nif(process.env.NODE_ENV === 'development') {\n PluginsManager = (function() {\n\n const $plugins = new Map();\n const $pluginByEvents = new Map();\n\n return {\n list() {\n return $pluginByEvents;\n },\n add(plugin, name){\n if (!plugin || typeof plugin !== 'object') {\n throw new Error(`Plugin ${name} must be an object`);\n }\n name = name || plugin.name;\n if (!name || typeof name !== 'string') {\n throw new Error(`Please, provide a valid plugin name`);\n }\n if($plugins.has(name)) {\n return;\n }\n\n plugin.$name = name;\n $plugins.set(name ,plugin);\n if(typeof plugin?.init === 'function') {\n plugin.init();\n }\n for(const methodName in plugin) {\n if(/^on[A-Z]/.test(methodName)) {\n const eventName = methodName.replace(/^on/, '');\n if(!$pluginByEvents.has(eventName)) {\n $pluginByEvents.set(eventName, new Set());\n }\n $pluginByEvents.get(eventName).add(plugin);\n }\n }\n },\n remove(pluginName){\n if(!$plugins.has(pluginName)) {\n return;\n }\n const plugin = $plugins.get(pluginName);\n if(typeof plugin.cleanup === 'function') {\n plugin.cleanup();\n }\n for(const [name, sets] of $pluginByEvents.entries() ) {\n if(sets.has(plugin)) {\n sets.delete(plugin);\n }\n if(sets.size === 0) {\n $pluginByEvents.delete(name);\n }\n }\n $plugins.delete(pluginName);\n },\n emit(eventName, ...data) {\n if(!$pluginByEvents.has(eventName)) {\n return;\n }\n const plugins = $pluginByEvents.get(eventName);\n\n for(const plugin of plugins) {\n const callback = plugin['on'+eventName];\n if(typeof callback === 'function') {\n try{\n callback.call(plugin, ...data);\n } catch (error) {\n DebugManager.error('Plugin Manager', `Error in plugin ${plugin.$name} for event ${eventName}`, error);\n }\n }\n }\n }\n };\n }());\n}\n\nexport default PluginsManager;","import Validator from \"./validator\";\n\nconst invoke = function(fn, args, context) {\n if(context) {\n fn.apply(context, args);\n } else {\n fn(...args);\n }\n};\n/**\n *\n * @param {Function} fn\n * @param {number} delay\n * @param {{leading?:Boolean, trailing?:Boolean, debounce?:Boolean, check: Function}}options\n * @returns {(function(...[*]): void)|*}\n */\nexport const debounce = function(fn, delay, options = {}) {\n let timer = null;\n let lastArgs = null;\n\n return function(...args) {\n const context = options.context === true ? this : null;\n let scopeDelay = delay;\n if(options.check) {\n const response = options.check(...args);\n if(typeof response === 'number') {\n scopeDelay = response;\n }\n }\n lastArgs = args;\n\n // debounce mode: reset the timer for each call\n clearTimeout(timer);\n timer = setTimeout(() => invoke(fn, lastArgs, context), delay);\n }\n};\n\nexport const nextTick = function(fn) {\n let pending = false;\n return function(...args) {\n if (pending) return;\n pending = true;\n\n Promise.resolve().then(() => {\n fn.apply(this, args);\n pending = false;\n });\n };\n};\n\n/**\n *\n * @param {*} item\n * @param {string|null} defaultKey\n * @param {?Function} key\n * @returns {*}\n */\nexport const getKey = (item, defaultKey, key) => {\n if (Validator.isString(key)) {\n const val = Validator.isObservable(item) ? item.val() : item;\n const result = val?.[key];\n return Validator.isObservable(result) ? result.val() : (result ?? defaultKey);\n }\n\n if (Validator.isFunction(key)) {\n return key(item, defaultKey);\n }\n\n const val = Validator.isObservable(item) ? item.val() : item;\n return val ?? defaultKey;\n};\n\nexport const trim = function(str, char) {\n return str.replace(new RegExp(`^[${char}]+|[${char}]+$`, 'g'), '');\n}\n\nexport const deepClone = (value, onObservableFound) => {\n try {\n if(window.structuredClone !== undefined) {\n return window.structuredClone(value);\n }\n } catch (e){}\n\n if (value === null || typeof value !== 'object') {\n return value;\n }\n\n // Dates\n if (value instanceof Date) {\n return new Date(value.getTime());\n }\n\n // Arrays\n if (Array.isArray(value)) {\n return value.map(item => deepClone(item));\n }\n\n // Observables - keep the référence\n if (Validator.isObservable(value)) {\n onObservableFound && onObservableFound(value);\n return value;\n }\n\n // Objects\n const cloned = {};\n for (const key in value) {\n if (Object.hasOwn(value, key)) {\n cloned[key] = deepClone(value[key]);\n }\n }\n return cloned;\n};","import NativeDocumentError from \"../errors/NativeDocumentError\";\n\nexport const LocalStorage = {\n getJson(key) {\n let value = localStorage.getItem(key);\n try {\n return JSON.parse(value);\n } catch (e) {\n throw new NativeDocumentError('invalid_json:'+key);\n }\n },\n getNumber(key) {\n return Number(this.get(key));\n },\n getBool(key) {\n const value = this.get(key);\n return value === 'true' || value === '1';\n },\n setJson(key, value) {\n localStorage.setItem(key, JSON.stringify(value));\n },\n setBool(key, value) {\n localStorage.setItem(key, value ? 'true' : 'false');\n },\n get(key, defaultValue = null) {\n return localStorage.getItem(key) || defaultValue;\n },\n set(key, value) {\n return localStorage.setItem(key, value);\n },\n remove(key) {\n localStorage.removeItem(key);\n },\n has(key) {\n return localStorage.getItem(key) != null;\n }\n}\n\nexport const $getFromStorage = (key, value) => {\n if(!LocalStorage.has(key)) {\n return value;\n }\n switch (typeof value) {\n case 'object': return LocalStorage.getJson(key) ?? value;\n case 'boolean': return LocalStorage.getBool(key) ?? value;\n case 'number': return LocalStorage.getNumber(key) ?? value;\n default: return LocalStorage.get(key, value) ?? value;\n }\n};\n\nexport const $saveToStorage = (value) => {\n switch (typeof value) {\n case 'object': return LocalStorage.setJson;\n case 'boolean': return LocalStorage.setBool;\n default: return LocalStorage.set;\n }\n};","import DebugManager from \"../../core/utils/debug-manager\";\nimport MemoryManager from \"./MemoryManager\";\nimport NativeDocumentError from \"../../core/errors/NativeDocumentError\";\nimport PluginsManager from \"../../core/utils/plugins-manager\";\nimport Validator from \"../../core/utils/validator\";\nimport {deepClone} from \"../utils/helpers\";\nimport {$getFromStorage, $saveToStorage} from \"../utils/localstorage\";\n\n/**\n *\n * @param {*} value\n * @param {{ propagation: boolean, reset: boolean} | null} configs\n * @class ObservableItem\n */\nexport default function ObservableItem(value, configs = null) {\n value = Validator.isObservable(value) ? value.val() : value;\n\n this.$previousValue = null;\n this.$currentValue = value;\n if(process.env.NODE_ENV === 'development') {\n this.$isCleanedUp = false;\n }\n\n this.$firstListener = null;\n this.$listeners = null;\n this.$watchers = null;\n\n this.$memoryId = null;\n\n if(configs) {\n this.configs = configs;\n if(configs.reset) {\n this.$initialValue = Validator.isObject(value) ? deepClone(value) : value;\n }\n }\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('CreateObservable', this);\n }\n}\n\nObject.defineProperty(ObservableItem.prototype, '$value', {\n get() {\n return this.$currentValue;\n },\n set(value) {\n this.set(value);\n },\n configurable: true,\n});\n\nObservableItem.prototype.__$Observable = true;\nObservableItem.prototype.__$isObservable = true;\nObservableItem.computed = () => {};\n\nconst DEFAULT_OPERATIONS = {};\nconst noneTrigger = function() {};\n\n/**\n * Intercepts and transforms values before they are set on the observable.\n * The interceptor can modify the value or return undefined to use the original value.\n *\n * @param {(value) => any} callback - Interceptor function that receives (newValue, currentValue) and returns the transformed value or undefined\n * @returns {ObservableItem} The observable instance for chaining\n * @example\n * const count = Observable(0);\n * count.intercept((newVal, oldVal) => Math.max(0, newVal)); // Prevent negative values\n */\nObservableItem.prototype.intercept = function(callback) {\n this.$interceptor = callback;\n this.set = this.$setWithInterceptor;\n return this;\n};\n\nObservableItem.prototype.interceptMutations = function(callback) {\n this.$mutationInterceptor = callback;\n return this;\n};\n\nObservableItem.prototype.triggerFirstListener = function(operations) {\n this.$firstListener(this.$currentValue, this.$previousValue, operations);\n};\n\nObservableItem.prototype.triggerListeners = function(operations) {\n const $listeners = this.$listeners;\n const $previousValue = this.$previousValue;\n const $currentValue = this.$currentValue;\n\n for(let i = 0, length = $listeners.length; i < length; i++) {\n $listeners[i]($currentValue, $previousValue, operations);\n }\n};\n\nObservableItem.prototype.triggerWatchers = function(operations) {\n const $watchers = this.$watchers;\n const $previousValue = this.$previousValue;\n const $currentValue = this.$currentValue;\n\n const $currentValueCallbacks = $watchers.get($currentValue);\n const $previousValueCallbacks = $watchers.get($previousValue);\n if($currentValueCallbacks) {\n $currentValueCallbacks(true, $previousValue, operations);\n }\n if($previousValueCallbacks) {\n $previousValueCallbacks(false, $currentValue, operations);\n }\n};\n\nObservableItem.prototype.triggerAll = function(operations) {\n this.triggerWatchers(operations);\n this.triggerListeners(operations);\n};\n\nObservableItem.prototype.triggerWatchersAndFirstListener = function(operations) {\n this.triggerWatchers(operations);\n this.triggerFirstListener(operations);\n};\n\nObservableItem.prototype.assocTrigger = function() {\n this.$firstListener = null;\n if(this.$watchers?.size && this.$listeners?.length) {\n this.$firstListener = this.$listeners[0];\n this.trigger = this.$firstListener.length === 0 ? this.$firstListener : this.triggerFirstListener\n this.trigger = (this.$listeners.length === 1) ? this.triggerWatchersAndFirstListener : this.triggerAll;\n return;\n }\n if(this.$listeners?.length) {\n if(this.$listeners.length === 1) {\n this.$firstListener = this.$listeners[0];\n this.trigger = this.$firstListener.length === 0 ? this.$firstListener : this.triggerFirstListener\n }\n else {\n this.trigger = this.triggerListeners;\n }\n return;\n }\n if(this.$watchers?.size) {\n this.trigger = this.triggerWatchers;\n return;\n }\n this.trigger = noneTrigger;\n};\nObservableItem.prototype.trigger = noneTrigger;\n\n\nconst $setOperation = { action: 'set' };\nObservableItem.prototype.$updateWithNewValue = function(newValue) {\n newValue = newValue?.__$isObservable ? newValue.val() : newValue;\n if(this.$currentValue === newValue) {\n return;\n }\n this.$previousValue = this.$currentValue;\n this.$currentValue = newValue;\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('ObservableBeforeChange', this);\n }\n this.trigger($setOperation);\n this.$previousValue = null;\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('ObservableAfterChange', this);\n }\n};\n\n/**\n * @param {*} data\n */\nObservableItem.prototype.$setWithInterceptor = function(data) {\n let newValue = (typeof data === 'function') ? data(this.$currentValue) : data;\n const result = this.$interceptor(newValue, this.$currentValue);\n\n if (result !== undefined) {\n newValue = result;\n }\n\n this.$updateWithNewValue(newValue);\n};\n\n\n/**\n * @param {*} data\n */\nObservableItem.prototype.$basicSet = function(data) {\n let newValue = (typeof data === 'function') ? data(this.$currentValue) : data;\n this.$updateWithNewValue(newValue);\n};\n\nObservableItem.prototype.set = ObservableItem.prototype.$basicSet;\n\nObservableItem.prototype.val = function() {\n return this.$currentValue;\n};\n\nObservableItem.prototype.disconnectAll = function() {\n this.$previousValue = null;\n this.$currentValue = null;\n this.$listeners = null;\n this.$watchers = null;\n this.trigger = noneTrigger;\n};\n\n/**\n * Registers a cleanup callback that will be executed when the observable is cleaned up.\n * Useful for disposing resources, removing event listeners, or other cleanup tasks.\n *\n * @param {Function} callback - Cleanup function to execute on observable disposal\n * @example\n * const obs = Observable(0);\n * obs.onCleanup(() => console.log('Cleaned up!'));\n * obs.cleanup(); // Logs: \"Cleaned up!\"\n */\nObservableItem.prototype.onCleanup = function(callback) {\n this.$cleanupListeners = this.$cleanupListeners ?? [];\n this.$cleanupListeners.push(callback);\n};\n\nObservableItem.prototype.cleanup = function() {\n if (this.$cleanupListeners) {\n for (let i = 0; i < this.$cleanupListeners.length; i++) {\n this.$cleanupListeners[i]();\n }\n this.$cleanupListeners = null;\n }\n MemoryManager.unregister(this.$memoryId);\n this.disconnectAll();\n if(process.env.NODE_ENV === 'development') {\n this.$isCleanedUp = true;\n }\n delete this.$value;\n};\n\n/**\n *\n * @param {Function} callback\n * @returns {(function(): void)}\n */\nObservableItem.prototype.subscribe = function(callback) {\n if(process.env.NODE_ENV === 'development') {\n if (this.$isCleanedUp) {\n DebugManager.warn('Observable subscription', '⚠️ Attempted to subscribe to a cleaned up observable.');\n return;\n }\n if (typeof callback !== 'function') {\n throw new NativeDocumentError('Callback must be a function');\n }\n }\n this.$listeners = this.$listeners ?? [];\n\n this.$listeners.push(callback);\n this.assocTrigger();\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('ObservableSubscribe', this);\n }\n};\n\n/**\n * Watches for a specific value and executes callback when the observable equals that value.\n * Creates a watcher that only triggers when the observable changes to the specified value.\n *\n * @param {*} value - The value to watch for\n * @param {(value) => void|ObservableItem} callback - Callback function or observable to set when value matches\n * @example\n * const status = Observable('idle');\n * status.on('loading', () => console.log('Started loading'));\n * status.on('error', isError); // Set another observable\n */\nObservableItem.prototype.on = function(value, callback) {\n this.$watchers = this.$watchers ?? new Map();\n\n let watchValueList = this.$watchers.get(value);\n\n if(callback.__$isObservable) {\n callback = callback.set.bind(callback);\n }\n\n if(!watchValueList) {\n watchValueList = callback;\n this.$watchers.set(value, callback);\n } else if(!Validator.isArray(watchValueList.list)) {\n watchValueList = [watchValueList, callback];\n callback = (value) => {\n for(let i = 0, length = watchValueList.length; i < length; i++) {\n watchValueList[i](value);\n }\n }\n callback.list = watchValueList;\n this.$watchers.set(value, callback);\n } else {\n watchValueList.list.push(callback);\n }\n\n this.assocTrigger();\n};\n\n/**\n * Removes a watcher for a specific value. If no callback is provided, removes all watchers for that value.\n *\n * @param {*} value - The value to stop watching\n * @param {Function} [callback] - Specific callback to remove. If omitted, removes all watchers for this value\n * @example\n * const status = Observable('idle');\n * const handler = () => console.log('Loading');\n * status.on('loading', handler);\n * status.off('loading', handler); // Remove specific handler\n * status.off('loading'); // Remove all handlers for 'loading'\n */\nObservableItem.prototype.off = function(value, callback) {\n if(!this.$watchers) return;\n\n const watchValueList = this.$watchers.get(value);\n if(!watchValueList) return;\n\n if(!callback || !Array.isArray(watchValueList.list)) {\n this.$watchers?.delete(value);\n this.assocTrigger();\n return;\n }\n const index = watchValueList.indexOf(callback);\n watchValueList?.splice(index, 1);\n if(watchValueList.length === 1) {\n this.$watchers.set(value, watchValueList[0]);\n }\n else if(watchValueList.length === 0) {\n this.$watchers?.delete(value);\n }\n this.assocTrigger();\n};\n\n/**\n * Subscribes to the observable but automatically unsubscribes after the first time the predicate matches.\n *\n * @param {(value) => Boolean|any} predicate - Value to match or function that returns true when condition is met\n * @param {(value) => void} callback - Callback to execute when predicate matches, receives the matched value\n * @example\n * const status = Observable('loading');\n * status.once('ready', (val) => console.log('Ready!'));\n * status.once(val => val === 'error', (val) => console.log('Error occurred'));\n */\nObservableItem.prototype.once = function(predicate, callback) {\n const fn = typeof predicate === 'function' ? predicate : (v) => v === predicate;\n\n const handler = (val) => {\n if (fn(val)) {\n this.unsubscribe(handler);\n callback(val);\n }\n };\n this.subscribe(handler);\n};\n\n/**\n * Unsubscribe from an observable.\n * @param {Function} callback\n */\nObservableItem.prototype.unsubscribe = function(callback) {\n if(!this.$listeners) return;\n const index = this.$listeners.indexOf(callback);\n if (index > -1) {\n this.$listeners.splice(index, 1);\n }\n this.assocTrigger();\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('ObservableUnsubscribe', this);\n }\n};\n\n\n\n\n/**\n * Gets a property value from the observable's current value.\n * If the property is an observable, returns its value.\n *\n * @param {string|number} key - Property key to retrieve\n * @returns {*} The value of the property, unwrapped if it's an observable\n * @example\n * const user = Observable({ name: 'John', age: Observable(25) });\n * user.get('name'); // 'John'\n * user.get('age'); // 25 (unwrapped from observable)\n */\nObservableItem.prototype.get = function(key) {\n const item = this.$currentValue[key];\n return Validator.isObservable(item) ? item.val() : item;\n};\n\n\n/**\n * Compares the observable's current value with another value or observable.\n *\n * @param {*|ObservableItem} other - Value or observable to compare against\n * @returns {boolean} True if values are equal\n * @example\n * const a = Observable(5);\n * const b = Observable(5);\n * a.equals(5); // true\n * a.equals(b); // true\n * a.equals(10); // false\n */\nObservableItem.prototype.equals = function(other) {\n if(Validator.isObservable(other)) {\n return this.$currentValue === other.$currentValue;\n }\n return this.$currentValue === other;\n};\n\n/**\n * Converts the observable's current value to a boolean.\n *\n * @returns {boolean} The boolean representation of the current value\n * @example\n * const count = Observable(0);\n * count.toBool(); // false\n * count.set(5);\n * count.toBool(); // true\n */\nObservableItem.prototype.toBool = function() {\n return !!this.$currentValue;\n};\n\n/**\n * Toggles the boolean value of the observable (false becomes true, true becomes false).\n *\n * @example\n * const isOpen = Observable(false);\n * isOpen.toggle(); // Now true\n * isOpen.toggle(); // Now false\n */\nObservableItem.prototype.toggle = function() {\n this.set(!this.$currentValue);\n};\n\n/**\n * Resets the observable to its initial value.\n * Only works if the observable was created with { reset: true } config.\n *\n * @example\n * const count = Observable(0, { reset: true });\n * count.set(10);\n * count.reset(); // Back to 0\n */\nObservableItem.prototype.reset = function() {\n if(!this.configs?.reset) {\n return;\n }\n const resetValue = (Validator.isObject(this.$initialValue))\n ? deepClone(this.$initialValue, (observable) => {\n observable.reset();\n })\n : this.$initialValue;\n this.set(resetValue)\n};\n\n/**\n * Returns a string representation of the observable's current value.\n *\n * @returns {string} String representation of the current value\n */\nObservableItem.prototype.toString = function() {\n return String(this.$currentValue);\n};\n\n/**\n * Returns the primitive value of the observable (its current value).\n * Called automatically in type coercion contexts.\n *\n * @returns {*} The current value of the observable\n */\nObservableItem.prototype.valueOf = function() {\n return this.$currentValue;\n};\n\n\n\nObservableItem.prototype.persist = function(key, options = {}) {\n let value = $getFromStorage(key, this.$currentValue);\n if(options.get) {\n value = options.get(value);\n }\n this.set(value);\n const saver = $saveToStorage(this.$currentValue);\n this.subscribe((newValue) => {\n saver(key, options.set ? options.set(newValue) : newValue);\n });\n return this;\n};\n\nObservableItem.prototype.clone = function() {\n let clonedValue = this.$currentValue;\n\n if(clonedValue && typeof clonedValue === 'object') {\n if(typeof clonedValue.clone === 'function') {\n clonedValue = clonedValue.clone();\n } else {\n clonedValue = structuredClone(clonedValue);\n }\n }\n\n return new ObservableItem(clonedValue);\n};","import Validator from \"../../utils/validator\";\n\nexport function toDate(value) {\n if (value instanceof Date) return value;\n return new Date(value);\n}\n\nexport function isSameDay(date1, date2) {\n const d1 = toDate(date1);\n const d2 = toDate(date2);\n return d1.getFullYear() === d2.getFullYear() &&\n d1.getMonth() === d2.getMonth() &&\n d1.getDate() === d2.getDate();\n}\n\nexport function getSecondsOfDay(date) {\n const d = toDate(date);\n return (d.getHours() * 3600) + (d.getMinutes() * 60) + d.getSeconds();\n}\n\nexport function createFilter(observableOrValue, callbackFn){\n const isObservable = Validator.isObservable(observableOrValue);\n\n return {\n dependencies: isObservable ? observableOrValue : null,\n callback: (value) => callbackFn(value, isObservable ? observableOrValue.val() : observableOrValue)\n };\n}\n\nexport function createMultiSourceFilter(sources, callbackFn){\n const observables = sources.filter(Validator.isObservable);\n\n const getValues = () => sources.map(src =>\n Validator.isObservable(src) ? src.val() : src\n );\n\n return {\n dependencies: observables.length > 0 ? observables : null,\n callback: (value) => callbackFn(value, getValues())\n };\n}","import Validator from \"../../utils/validator\";\nimport { createFilter, createMultiSourceFilter } from \"./utils\";\nimport DebugManager from \"../debug-manager\";\n\n\nexport function equals(observableOrValue){\n return createFilter(observableOrValue, (value, target) => value === target);\n}\n\nexport function notEquals(observableOrValue){\n return createFilter(observableOrValue, (value, target) => value !== target);\n}\n\nexport function greaterThan(observableOrValue){\n return createFilter(observableOrValue, (value, target) => value > target);\n}\n\nexport function greaterThanOrEqual(observableOrValue){\n return createFilter(observableOrValue, (value, target) => value >= target);\n}\n\nexport function lessThan(observableOrValue){\n return createFilter(observableOrValue, (value, target) => value < target);\n}\n\nexport function lessThanOrEqual(observableOrValue){\n return createFilter(observableOrValue, (value, target) => value <= target);\n}\n\nexport function between(minObservableOrValue, maxObservableOrValue){\n return createMultiSourceFilter(\n [minObservableOrValue, maxObservableOrValue],\n (value, [min, max]) => value >= min && value <= max\n );\n}\n\nexport function inArray(observableOrArray){\n return createFilter(observableOrArray, (value, arr) => arr.includes(value));\n}\n\nexport function notIn(observableOrArray){\n return createFilter(observableOrArray, (value, arr) => !arr.includes(value));\n}\n\nexport function isEmpty(observableOrValue = true){\n return createFilter(observableOrValue, (value, shouldBeEmpty) => {\n const isActuallyEmpty = !value || value === '' ||\n (Array.isArray(value) && value.length === 0);\n\n return shouldBeEmpty ? isActuallyEmpty : !isActuallyEmpty;\n });\n}\n\nexport function isNotEmpty(observableOrValue = true){\n return createFilter(observableOrValue, (value, shouldBeNotEmpty) => {\n const isActuallyNotEmpty = !!value && value !== '' &&\n (!Array.isArray(value) || value.length > 0);\n\n return shouldBeNotEmpty ? isActuallyNotEmpty : !isActuallyNotEmpty;\n });\n}\n\nexport function match(patternObservableOrValue, asRegexObservableOrValue = true, flagsObservableOrValue = ''){\n return createMultiSourceFilter(\n [patternObservableOrValue, asRegexObservableOrValue, flagsObservableOrValue],\n (value, [pattern, asRegex, flags]) => {\n if (!pattern) return true;\n\n if (asRegex){\n try {\n const regex = new RegExp(pattern, flags);\n return regex.test(String(value));\n } catch (error){\n DebugManager.warn('Invalid regex pattern:', pattern, error);\n return false;\n }\n }\n\n if (!flags || flags === ''){\n return String(value).toLowerCase().includes(String(pattern).toLowerCase());\n }\n return String(value).includes(String(pattern));\n }\n );\n}\n\nexport function and(...filters){\n const dependencies = filters\n .flatMap(f => f.dependencies ? (Array.isArray(f.dependencies) ? f.dependencies : [f.dependencies]) : [])\n .filter(Validator.isObservable);\n\n return {\n dependencies: dependencies.length > 0 ? dependencies : null,\n callback: (value) => filters.every(f => f.callback(value))\n };\n}\n\nexport function or(...filters){\n const dependencies = filters\n .flatMap(f => f.dependencies ? (Array.isArray(f.dependencies) ? f.dependencies : [f.dependencies]) : [])\n .filter(Validator.isObservable);\n\n return {\n dependencies: dependencies.length > 0 ? dependencies : null,\n callback: (value) => filters.some(f => f.callback(value))\n };\n}\n\nexport function not(filter){\n return {\n dependencies: filter.dependencies,\n callback: (value) => !filter.callback(value)\n };\n}\n\nexport function custom(callbackFn, ...observables){\n const dependencies = observables.filter(Validator.isObservable);\n\n return {\n dependencies: dependencies.length > 0 ? dependencies : null,\n callback: (value) => {\n const values = observables.map(o =>\n Validator.isObservable(o) ? o.val() : o\n );\n return callbackFn(value, ...values);\n }\n };\n}\n\nexport const gt = greaterThan;\nexport const gte = greaterThanOrEqual;\nexport const lt = lessThan;\nexport const lte = lessThanOrEqual;\nexport const eq = equals;\nexport const neq = notEquals;\nexport const all = and;\nexport const any = or;\n\n","import {createFilter, createMultiSourceFilter, getSecondsOfDay, isSameDay, toDate} from \"./utils\";\n\nexport const dateEquals = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return isSameDay(value, target);\n });\n};\n\nexport const dateBefore = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return toDate(value) < toDate(target);\n });\n};\n\nexport const dateAfter = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return toDate(value) > toDate(target);\n });\n};\n\nexport const dateBetween = (startObservableOrValue, endObservableOrValue) => {\n return createMultiSourceFilter(\n [startObservableOrValue, endObservableOrValue],\n (value, [start, end]) => {\n if (!value || !start || !end) return false;\n const date = toDate(value);\n return date >= toDate(start) && date <= toDate(end);\n }\n );\n};\n\nexport const timeEquals = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n const d1 = toDate(value);\n const d2 = toDate(target);\n return d1.getHours() === d2.getHours() &&\n d1.getMinutes() === d2.getMinutes() &&\n d1.getSeconds() === d2.getSeconds();\n });\n};\n\nexport const timeAfter = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return getSecondsOfDay(value) > getSecondsOfDay(target);\n });\n};\n\nexport const timeBefore = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return getSecondsOfDay(value) < getSecondsOfDay(target);\n });\n};\n\nexport const timeBetween = (startObservableOrValue, endObservableOrValue) => {\n return createMultiSourceFilter([startObservableOrValue, endObservableOrValue],\n (value, [start, end]) => {\n if (!value || !start || !end) return false;\n const date = getSecondsOfDay(value);\n return date >= getSecondsOfDay(start) && date <= getSecondsOfDay(end);\n }\n );\n};\n\nexport const dateTimeEquals = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return toDate(value).getTime() === toDate(target).getTime();\n });\n};\n\nexport const dateTimeAfter = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return toDate(value) > toDate(target);\n });\n};\n\nexport const dateTimeBefore = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return toDate(value) < toDate(target);\n });\n};\n\nexport const dateTimeBetween = (startObservableOrValue, endObservableOrValue) => {\n return createMultiSourceFilter([startObservableOrValue, endObservableOrValue], (value, [start, end]) => {\n if (!value || !start || !end) return false;\n const date = toDate(value);\n return date >= toDate(start) && date <= toDate(end);\n });\n};","import { createFilter, createMultiSourceFilter } from \"./utils\";\n\n\nexport function includes(observableOrValue, caseSensitive = false){\n return createFilter(observableOrValue, (value, query) => {\n if (!value) return false;\n if (!query) return true;\n if (!caseSensitive){\n return String(value).toLowerCase().includes(String(query).toLowerCase());\n }\n return String(value).includes(String(query));\n });\n}\n\nexport const contains = includes;\n\nexport function startsWith(observableOrValue, caseSensitive = false){\n return createFilter(observableOrValue, (value, query) => {\n if (!query) return true;\n if (!caseSensitive){\n return String(value).toLowerCase().startsWith(String(query).toLowerCase());\n }\n return String(value).startsWith(String(query));\n });\n}\n\nexport function endsWith(observableOrValue, caseSensitive = false){\n return createFilter(observableOrValue, (value, query) => {\n if (!query) return true;\n if (!caseSensitive){\n return String(value).toLowerCase().endsWith(String(query).toLowerCase());\n }\n return String(value).endsWith(String(query));\n });\n}","import {match} from \"../utils/filters/index\";\nimport Validator from \"../utils/validator\";\nimport ObservableItem from \"./ObservableItem.js\";\nimport PluginsManager from \"../utils/plugins-manager.js\";\nimport NativeDocumentError from \"../errors/NativeDocumentError.js\";\nimport {nextTick} from \"../utils/helpers\";\n\nconst mutationMethods = ['push', 'pop', 'shift', 'unshift', 'reverse', 'sort', 'splice'];\nconst noMutationMethods = ['map', 'forEach', 'filter', 'reduce', 'some', 'every', 'find', 'findIndex', 'concat', 'includes', 'indexOf'];\n\n/**\n *\n * @param target\n * @param {{propagation: boolean, deep: boolean, reset: boolean}|null} configs\n * @constructor\n */\nconst ObservableArray = function (target, configs = null) {\n if(!Array.isArray(target)) {\n throw new NativeDocumentError('Observable.array : target must be an array');\n }\n\n ObservableItem.call(this, target, configs);\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('CreateObservableArray', this);\n }\n};\n\nObservableArray.prototype = Object.create(ObservableItem.prototype);\nObservableArray.prototype.constructor = ObservableArray;\nObservableArray.prototype.__$isObservableArray = true;\n\n\nObject.defineProperty(ObservableArray.prototype, 'length', {\n get() {\n return this.$currentValue.length;\n }\n});\n\n\nObservableArray.prototype.$mutate = function(action, args, mutateFn) {\n if(this.$mutationInterceptor) {\n const value = this.$mutationInterceptor(args, { action });\n if(args !== undefined) {\n args = value;\n }\n }\n mutateFn(args);\n};\n\nmutationMethods.forEach((method) => {\n ObservableArray.prototype[method] = function(...values) {\n return this.$mutate(method, values, (argsToUse) => {\n const result = this.$currentValue[method].apply(this.$currentValue, argsToUse);\n this.trigger({ action: method, args: argsToUse, result });\n return result;\n })\n };\n});\n\nnoMutationMethods.forEach((method) => {\n ObservableArray.prototype[method] = function(...values) {\n return this.$currentValue[method].apply(this.$currentValue, values);\n };\n});\n\n\nconst $clearEvent = { action: 'clear' };\n\n/**\n * Removes all items from the array and triggers an update.\n *\n * @returns {boolean} True if array was cleared, false if it was already empty\n * @example\n * const items = Observable.array([1, 2, 3]);\n * items.clear(); // []\n */\nObservableArray.prototype.clear = function() {\n if(this.$currentValue.length === 0) {\n return;\n }\n this.$mutate('clear', [], () => {\n this.$currentValue.length = 0;\n this.trigger($clearEvent);\n });\n return true;\n};\n\n/**\n * Returns the element at the specified index in the array.\n *\n * @param {number} index - Zero-based index of the element to retrieve\n * @returns {*} The element at the specified index\n * @example\n * const items = Observable.array(['a', 'b', 'c']);\n * items.at(1); // 'b'\n */\nObservableArray.prototype.at = function(index) {\n return this.$currentValue[index];\n};\n\n\n/**\n * Merges multiple values into the array and triggers an update.\n * Similar to push but with a different operation name.\n *\n * @param {Array} values - Array of values to merge\n * @example\n * const items = Observable.array([1, 2]);\n * items.merge([3, 4]); // [1, 2, 3, 4]\n */\nObservableArray.prototype.merge = function(values) {\n this.$mutate('merge', values, (valuesToMerge) => {\n this.$currentValue.push.apply(this.$currentValue, valuesToMerge);\n this.trigger({ action: 'merge', args: valuesToMerge });\n });\n};\n\n/**\n * Counts the number of elements that satisfy the provided condition.\n *\n * @param {(value: *, index: number) => Boolean} condition - Function that tests each element (item, index) => boolean\n * @returns {number} The count of elements that satisfy the condition\n * @example\n * const numbers = Observable.array([1, 2, 3, 4, 5]);\n * numbers.count(n => n > 3); // 2\n */\nObservableArray.prototype.count = function(condition) {\n let count = 0;\n this.$currentValue.forEach((item, index) => {\n if(condition(item, index)) {\n count++;\n }\n });\n return count;\n};\n\n/**\n * Swaps two elements at the specified indices and triggers an update.\n *\n * @param {number} indexA - Index of the first element\n * @param {number} indexB - Index of the second element\n * @returns {boolean} True if swap was successful, false if indices are out of bounds\n * @example\n * const items = Observable.array(['a', 'b', 'c']);\n * items.swap(0, 2); // ['c', 'b', 'a']\n */\nObservableArray.prototype.swap = function(indexA, indexB) {\n this.$mutate('swap', [indexA, indexB], ([indexA, indexB]) => {\n const value = this.$currentValue;\n const length = value.length;\n if(indexB < indexA) {\n const temp = indexA;\n indexA = indexB;\n indexB = temp;\n }\n if(length < indexA || length < indexB) {\n return false;\n }\n const elementA = value[indexA];\n const elementB = value[indexB]\n\n value[indexA] = elementB;\n value[indexB] = elementA;\n this.trigger({ action: 'swap', args: [indexA, indexB], result: [elementA, elementB] });\n });\n return true;\n};\n\nObservableArray.prototype.swapItems = function(itemA, itemB) {\n const indexA = this.$currentValue.indexOf(itemA);\n const indexB = this.$currentValue.indexOf(itemB);\n\n return this.swap(indexA, indexB);\n};\n\nObservableArray.prototype.insertAfter = function(data, target) {\n const targetIndex = this.$currentValue.indexOf(target);\n return this.splice(targetIndex + 1, 0, data);\n};\n\n/**\n * Removes the element at the specified index and triggers an update.\n *\n * @param {number} index - Index of the element to remove\n * @returns {Array} Array containing the removed element, or empty array if index is invalid\n * @example\n * const items = Observable.array(['a', 'b', 'c']);\n * items.remove(1); // ['b'] - Array is now ['a', 'c']\n */\nObservableArray.prototype.remove = function(index) {\n let deleted = [];\n this.$mutate('remove', [index], ([idx]) => {\n deleted = this.$currentValue.splice(idx, 1);\n if(deleted.length === 0) {\n return;\n }\n this.trigger({action: 'remove', args: [idx], result: deleted[0]});\n });\n return deleted;\n};\n\n/**\n * Removes the first occurrence of the specified item from the array.\n *\n * @param {*} item - The item to remove\n * @returns {Array} Array containing the removed element, or empty array if item not found\n * @example\n * const items = Observable.array(['a', 'b', 'c']);\n * items.removeItem('b'); // ['b'] - Array is now ['a', 'c']\n */\nObservableArray.prototype.removeItem = function(item) {\n const indexOfItem = this.$currentValue.indexOf(item);\n if(indexOfItem === -1) {\n return [];\n }\n return this.remove(indexOfItem);\n};\n\n/**\n * Checks if the array is empty.\n *\n * @returns {boolean} True if array has no elements\n * @example\n * const items = Observable.array([]);\n * items.isEmpty(); // true\n */\nObservableArray.prototype.empty = function() {\n return this.$currentValue.length === 0;\n};\n\n/**\n * Triggers a populate operation with the current array, iteration count, and callback.\n * Used internally for rendering optimizations.\n *\n * @param {number} iteration - Iteration count for rendering\n * @param {Function} callback - Callback function for rendering items\n */\nObservableArray.prototype.populateAndRender = function(iteration, callback) {\n this.trigger({ action: 'populate', args: [this.$currentValue, iteration, callback] });\n};\n\n\n/**\n * Creates a filtered view of the array based on predicates.\n * The filtered array updates automatically when source data or predicates change.\n *\n * @param {Object} predicates - Object mapping property names to filter conditions or functions\n * @returns {ObservableArray} A new observable array containing filtered items\n * @example\n * const users = Observable.array([\n * { name: 'John', age: 25 },\n * { name: 'Jane', age: 30 }\n * ]);\n *\n * const adults = users.where({ age: (val) => val >= 18 });\n */\nObservableArray.prototype.where = function(predicates) {\n if(typeof predicates === 'function') {\n predicates = { _: predicates };\n }\n const sourceArray = this;\n const observableDependencies = [sourceArray];\n const filterCallbacks = {};\n\n for (const [key, rawPredicate] of Object.entries(predicates)) {\n const predicate = Validator.isObservable(rawPredicate) ? match(rawPredicate, false) : rawPredicate;\n if (predicate && typeof predicate === 'object' && 'callback' in predicate) {\n filterCallbacks[key] = predicate.callback;\n\n if (predicate.dependencies) {\n const deps = Array.isArray(predicate.dependencies)\n ? predicate.dependencies\n : [predicate.dependencies];\n observableDependencies.push.apply(observableDependencies, deps);\n }\n } else if(typeof predicate === 'function') {\n filterCallbacks[key] = predicate;\n } else {\n filterCallbacks[key] = (value) => value === predicate;\n }\n }\n\n const viewArray = new ObservableArray([]);\n\n const filters = Object.entries(filterCallbacks);\n const updateView = () => {\n const filtered = sourceArray.val().filter(item => {\n for (const [key, callback] of filters) {\n if(key === '_') {\n if (!callback(item)) return false;\n } else {\n if (!callback(item[key])) return false;\n }\n }\n return true;\n });\n\n viewArray.set(filtered);\n };\n\n observableDependencies.forEach(dep => dep.subscribe(updateView));\n\n updateView();\n\n return viewArray;\n};\n\n/**\n * Creates a filtered view where at least one of the specified fields matches the filter.\n *\n * @param {Array<string>} fields - Array of field names to check\n * @param {FilterResult} filter - Filter condition with callback and dependencies\n * @returns {ObservableArray} A new observable array containing filtered items\n * @example\n * const products = Observable.array([\n * { name: 'Apple', category: 'Fruit' },\n * { name: 'Carrot', category: 'Vegetable' }\n * ]);\n * const searchTerm = Observable('App');\n * const filtered = products.whereSome(['name', 'category'], match(searchTerm));\n */\nObservableArray.prototype.whereSome = function(fields, filter) {\n return this.where({\n _: {\n dependencies: filter.dependencies,\n callback: (item) => fields.some(field => filter.callback(item[field]))\n }\n });\n};\n\n/**\n * Creates a filtered view where all specified fields match the filter.\n *\n * @param {Array<string>} fields - Array of field names to check\n * @param {FilterResult} filter - Filter condition with callback and dependencies\n * @returns {ObservableArray} A new observable array containing filtered items\n * @example\n * const items = Observable.array([\n * { status: 'active', verified: true },\n * { status: 'active', verified: false }\n * ]);\n * const activeFilter = equals('active');\n * const filtered = items.whereEvery(['status', 'verified'], activeFilter);\n */\nObservableArray.prototype.whereEvery = function(fields, filter) {\n return this.where({\n _: {\n dependencies: filter.dependencies,\n callback: (item) => fields.every(field => filter.callback(item[field]))\n }\n });\n};\n\nObservableArray.prototype.deepSubscribe = function(callback) {\n const updatedValue = nextTick(() => callback(this.val()));\n const $listeners = new WeakMap();\n\n const bindItem = (item) => {\n if ($listeners.has(item)) {\n return;\n }\n if (item?.__$isObservableArray) {\n $listeners.set(item, item.deepSubscribe(updatedValue));\n return;\n }\n if (item?.__$isObservable) {\n item.subscribe(updatedValue);\n $listeners.set(item, () => item.unsubscribe(updatedValue));\n }\n };\n\n const unbindItem = (item) => {\n const unsub = $listeners.get(item);\n if (unsub) {\n unsub();\n $listeners.delete(item);\n }\n };\n\n this.$currentValue.forEach(bindItem);\n this.subscribe(updatedValue);\n\n this.subscribe((items, _, operations) => {\n switch (operations?.action) {\n case 'push':\n case 'unshift':\n operations.args.forEach(bindItem);\n break;\n\n case 'splice': {\n const [start, deleteCount, ...newItems] = operations.args;\n operations.result?.forEach(unbindItem);\n newItems.forEach(bindItem);\n break;\n }\n\n case 'remove':\n unbindItem(operations.result);\n break;\n\n case 'merge':\n operations.args.forEach(bindItem);\n break;\n\n case 'clear':\n this.$currentValue.forEach(unbindItem);\n break;\n\n case 'sort':\n case 'reverse':\n break;\n }\n });\n\n return () => {\n this.$currentValue.forEach(unbindItem);\n };\n};\n\n\nObservableArray.prototype.sync = function(targetObservable) {\n if (!targetObservable || !targetObservable.__$isObservableArray) {\n throw new NativeDocumentError('ObservableArray.sync : target must be an ObservableArray');\n }\n\n targetObservable.set([...this.$currentValue]);\n\n const sync = (currentValue, _, operations) => {\n if (!operations) {\n targetObservable.set([...currentValue]);\n return;\n }\n\n const { action, args } = operations;\n targetObservable[action].apply(targetObservable, args);\n };\n this.subscribe(sync);\n\n return () => this.unsubscribe(sync);\n};\n\nObservableArray.prototype.clone = function() {\n return new ObservableArray(this.resolve());\n};\n\nObservableArray.prototype.isNotEmpty = function () {\n return this.is((x) => x.length > 0);\n};\n\nexport default ObservableArray;","import ObservableItem from \"./ObservableItem\";\nimport Validator from \"../utils/validator\";\nimport {nextTick} from \"../utils/helpers\";\nimport ObservableArray from \"./ObservableArray\";\n\nexport const ObservableObject = function(target, configs) {\n ObservableItem.call(this, target);\n this.$observables = {};\n this.configs = configs;\n\n this.$load(target);\n\n for(const name in target) {\n if(!Object.hasOwn(this, name)) {\n Object.defineProperty(this, name, {\n get: () => this.$observables[name],\n set: (value) => this.$observables[name].set(value)\n });\n }\n }\n\n};\n\nObservableObject.prototype = Object.create(ObservableItem.prototype);\n\nObject.defineProperty(ObservableObject, '$value', {\n get() {\n return this.val();\n },\n set(value) {\n this.set(value);\n }\n})\n\nObservableObject.prototype.__$isObservableObject = true;\nObservableObject.prototype.__isProxy__ = true;\n\nObservableObject.prototype.$load = function(initialValue) {\n const configs = this.configs;\n for(const key in initialValue) {\n const itemValue = initialValue[key];\n if(Array.isArray(itemValue)) {\n if(configs?.deep !== false) {\n const mappedItemValue = itemValue.map(item => {\n if(Validator.isJson(item)) {\n return new ObservableObject(item, configs);\n }\n if(Validator.isArray(item)) {\n return new ObservableArray(item, configs);\n }\n return new ObservableItem(item, configs);\n });\n this.$observables[key] = new ObservableArray(mappedItemValue, configs);\n continue;\n }\n this.$observables[key] = new ObservableArray(itemValue, configs);\n continue;\n }\n if(Validator.isObservable(itemValue) || Validator.isProxy(itemValue)) {\n this.$observables[key] = itemValue;\n continue;\n }\n this.$observables[key] = (typeof itemValue === 'object') ? new ObservableObject(itemValue, configs) : new ObservableItem(itemValue, configs);\n }\n};\n\nObservableObject.prototype.val = function() {\n const result = {};\n for(const key in this.$observables) {\n const dataItem = this.$observables[key];\n if(Validator.isObservable(dataItem)) {\n let value = dataItem.val();\n if(Array.isArray(value)) {\n value = value.map(item => {\n if(Validator.isObservable(item)) {\n return item.val();\n }\n if(Validator.isProxy(item)) {\n return item.$value;\n }\n return item;\n });\n }\n result[key] = value;\n } else if(Validator.isProxy(dataItem)) {\n result[key] = dataItem.$value;\n } else {\n result[key] = dataItem;\n }\n }\n return result;\n};\nObservableObject.prototype.$val = ObservableObject.prototype.val;\n\nObservableObject.prototype.get = function(property) {\n const item = this.$observables[property];\n if(Validator.isObservable(item)) {\n return item.val();\n }\n if(Validator.isProxy(item)) {\n return item.$value;\n }\n return item;\n};\nObservableObject.prototype.$get = ObservableObject.prototype.get;\n\nObservableObject.prototype.set = function(newData) {\n const data = Validator.isProxy(newData) ? newData.$value : newData;\n const configs = this.configs;\n\n for(const key in data) {\n const targetItem = this.$observables[key];\n const newValueOrigin = newData[key];\n const newValue = data[key];\n\n if(Validator.isObservable(targetItem)) {\n if(!Validator.isArray(newValue)) {\n targetItem.set(newValue);\n continue;\n }\n const firstElementFromOriginalValue = newValueOrigin.at(0);\n if(Validator.isObservable(firstElementFromOriginalValue) || Validator.isProxy(firstElementFromOriginalValue)) {\n const newValues = newValue.map(item => {\n if(Validator.isProxy(firstElementFromOriginalValue)) {\n return new ObservableObject(item, configs);\n }\n return ObservableItem(item, configs);\n });\n targetItem.set(newValues);\n continue;\n }\n targetItem.set([...newValue]);\n continue;\n }\n if(Validator.isProxy(targetItem)) {\n targetItem.update(newValue);\n continue;\n }\n this[key] = newValue;\n }\n};\nObservableObject.prototype.$set = ObservableObject.prototype.set;\nObservableObject.prototype.$updateWith = ObservableObject.prototype.set;\n\nObservableObject.prototype.observables = function() {\n return Object.values(this.$observables);\n};\nObservableObject.prototype.$observables = ObservableObject.prototype.observables;\n\nObservableObject.prototype.keys = function() {\n return Object.keys(this.$observables);\n};\nObservableObject.prototype.$keys = ObservableObject.prototype.keys;\nObservableObject.prototype.clone = function() {\n return new ObservableObject(this.val(), this.configs);\n};\nObservableObject.prototype.$clone = ObservableObject.prototype.clone;\nObservableObject.prototype.reset = function() {\n for(const key in this.$observables) {\n this.$observables[key].reset();\n }\n};\nObservableObject.prototype.originalSubscribe = ObservableObject.prototype.subscribe;\nObservableObject.prototype.subscribe = function(callback) {\n const observables = this.observables();\n const updatedValue = nextTick(() => this.trigger());\n\n this.originalSubscribe(callback);\n\n for (let i = 0, length = observables.length; i < length; i++) {\n const observable = observables[i];\n if (observable.__$isObservableArray) {\n observable.deepSubscribe(updatedValue);\n continue\n }\n observable.subscribe(updatedValue);\n }\n};\nObservableObject.prototype.configs = function() {\n return this.configs;\n};\n\nObservableObject.prototype.update = ObservableObject.prototype.set;","import ObservableItem from \"../ObservableItem\";\n\nconst $computed = (fn, dependencies) => ObservableItem.computed(fn, dependencies);\nconst $checker = (obs, fn) => obs.transform(fn);\n\n//\n// is... -> ObservableChecker<boolean>\n//\n\nObservableItem.prototype.isEqualTo = function (value) {\n if (value?.__$Observable) {\n return $computed((a, b) => a === b, [this, value]);\n }\n return $checker(this, x => x === value);\n};\n\nObservableItem.prototype.isNotEqualTo = function (value) {\n if (value?.__$Observable) {\n return $computed((a, b) => a !== b, [this, value]);\n }\n return $checker(this, x => x !== value);\n};\n\nObservableItem.prototype.isGreaterThan = function (value) {\n if (value?.__$Observable) {\n return $computed((a, b) => a > b, [this, value]);\n }\n return $checker(this, x => x > value);\n};\n\nObservableItem.prototype.isGreaterThanOrEqualTo = function (value) {\n if (value?.__$Observable) {\n return $computed((a, b) => a >= b, [this, value]);\n }\n return $checker(this, x => x >= value);\n};\n\nObservableItem.prototype.isLessThan = function (value) {\n if (value?.__$Observable) {\n return $computed((a, b) => a < b, [this, value]);\n }\n return $checker(this, x => x < value);\n};\n\nObservableItem.prototype.isLessThanOrEqualTo = function (value) {\n if (value?.__$Observable) {\n return $computed((a, b) => a <= b, [this, value]);\n }\n return $checker(this, x => x <= value);\n};\n\nObservableItem.prototype.isBetween = function (min, max) {\n if (min.__$Observable && max.__$Observable) {\n return $computed((x, a, b) => x >= a && x <= b, [this, min, max]);\n }\n if (min.__$Observable) {\n return $computed((x, a) => x >= a && x <= max, [this, min]);\n }\n if (max.__$Observable) {\n return $computed((x, b) => x >= min && x <= b, [this, max]);\n }\n return $checker(this, x => x >= min && x <= max);\n};\n\nObservableItem.prototype.isNull = function () {\n return $checker(this, x => x == null);\n};\n\nObservableItem.prototype.isTruthy = function () {\n return $checker(this, x => !!x);\n};\n\nObservableItem.prototype.isFalsy = function () {\n return $checker(this, x => !x);\n};\n\nObservableItem.prototype.isStartingWith = function (str) {\n if (str?.__$Observable) {\n return $computed((a, b) => String(a).startsWith(b), [this, str]);\n }\n return $checker(this, x => String(x).startsWith(str));\n};\n\nObservableItem.prototype.isEndingWith = function (str) {\n if (str?.__$Observable) {\n return $computed((a, b) => String(a).endsWith(b), [this, str]);\n }\n return $checker(this, x => String(x).endsWith(str));\n};\n\nObservableItem.prototype.isMatchingPattern = function (regex) {\n if (regex?.__$Observable) {\n return $computed((a, b) => new RegExp(b).test(String(a)), [this, regex]);\n }\n return $checker(this, x => regex.test(String(x)));\n};\n\nObservableItem.prototype.isEmpty = function () {\n return $checker(this, x => x == null || x === '' || (Array.isArray(x) && x.length === 0));\n};\n\nObservableItem.prototype.isNotEmpty = function () {\n return $checker(this, x => x != null && x !== '' && !(Array.isArray(x) && x.length === 0));\n};\n\nObservableItem.prototype.isIncludes = function (value) {\n if (value?.__$Observable) {\n return $computed((a, b) => {\n if (Array.isArray(a)) return a.includes(b);\n return String(a).includes(String(b));\n }, [this, value]);\n }\n return $checker(this, x => {\n if (Array.isArray(x)) return x.includes(value);\n return String(x).includes(String(value));\n });\n};\n\nObservableItem.prototype.isIncludedIn = function (array) {\n if (array?.__$Observable) {\n return $computed((a, b) => b.includes(a), [this, array]);\n }\n return $checker(this, x => array.includes(x));\n};\n\nObservableItem.prototype.isOneOf = ObservableItem.prototype.isIncludedIn;\n\nObservableItem.prototype.isHaving = function (key) {\n if (key?.__$Observable) {\n return $computed((a, b) => b in Object(a), [this, key]);\n }\n return $checker(this, x => key in Object(x));\n};\n\n//\n// to... -> ObservableChecker<any>\n//\n\nObservableItem.prototype.toUpperCase = function () {\n return $checker(this, x => String(x).toUpperCase());\n};\n\nObservableItem.prototype.toLowerCase = function () {\n return $checker(this, x => String(x).toLowerCase());\n};\n\nObservableItem.prototype.toTrimmed = function () {\n return $checker(this, x => String(x).trim());\n};\n\nObservableItem.prototype.toBoolean = function () {\n return $checker(this, x => !!x);\n};\n\nObservableItem.prototype.toLiteral = function (template, placeholder = '${v}') {\n return $checker(this, x => template.replace(placeholder, x));\n};\n\nObservableItem.prototype.toFormatted = ObservableItem.prototype.toLiteral;\n\nObservableItem.prototype.toProperty = function (key) {\n const keys = key.split('.');\n return $checker(this, x => {\n let value = x;\n for (const k of keys) {\n if (value == null) return undefined;\n value = value[k];\n }\n return value;\n });\n};\n\nObservableItem.prototype.toLength = function () {\n return $checker(this, x => (x == null ? 0 : x.length));\n};\n\nObservableItem.prototype.toClamped = function (min, max) {\n if (min.__$Observable && max.__$Observable) {\n return $computed((x, a, b) => Math.min(Math.max(x, a), b), [this, min, max]);\n }\n if (min.__$Observable) {\n return $computed((x, a) => Math.min(Math.max(x, a), max), [this, min]);\n }\n if (max.__$Observable) {\n return $computed((x, b) => Math.min(Math.max(x, min), b), [this, max]);\n }\n return $checker(this, x => Math.min(Math.max(x, min), max));\n};\n\nObservableItem.prototype.toPercent = function (total) {\n if (total?.__$Observable) {\n return $computed((a, b) => (b === 0 ? 0 : (a / b) * 100), [this, total]);\n }\n return $checker(this, x => (total === 0 ? 0 : (x / total) * 100));\n};","\n/**\n * Creates an ObservableWhen that tracks whether an observable equals a specific value.\n *\n * @param {ObservableItem} observer - The observable to watch\n * @param {*} value - The value to compare against\n * @class ObservableWhen\n */\nexport const ObservableWhen = function(observer, value) {\n this.$target = value;\n this.$observer = observer;\n};\n\nObservableWhen.prototype.__$Observable = true;\nObservableWhen.prototype.__$isObservableWhen = true;\n\n/**\n * Subscribes to changes in the match status (true when observable equals target value).\n *\n * @param {Function} callback - Function called with boolean indicating if values match\n * @returns {Function} Unsubscribe function\n * @example\n * const status = Observable('idle');\n * const isLoading = status.when('loading');\n * isLoading.subscribe(active => console.log('Loading:', active));\n */\nObservableWhen.prototype.subscribe = function(callback) {\n return this.$observer.on(this.$target, callback);\n};\n\n/**\n * Returns true if the observable's current value equals the target value.\n *\n * @returns {boolean} True if observable value matches target value\n */\nObservableWhen.prototype.val = function() {\n return this.$observer.$currentValue === this.$target;\n};\n\n/**\n * Returns true if the observable's current value equals the target value.\n * Alias for val().\n *\n * @returns {boolean} True if observable value matches target value\n */\nObservableWhen.prototype.isMatch = ObservableWhen.prototype.val;\n\n/**\n * Returns true if the observable's current value equals the target value.\n * Alias for val().\n *\n * @returns {boolean} True if observable value matches target value\n */\nObservableWhen.prototype.isActive = ObservableWhen.prototype.val;","import ObservableItem from \"./ObservableItem\";\nimport PluginsManager from \"../utils/plugins-manager\";\n\n/**\n *\n * @param {ObservableItem} $observable\n * @param {Function} $checker\n * @class ObservableChecker\n */\nexport default function ObservableChecker($observable, $checker) {\n this.observable = $observable;\n\n ObservableItem.call(this);\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('CreateObservableChecker', this);\n }\n\n this.$mutation = $checker;\n\n $observable.subscribe((newValue) => {\n this.$updateWithMutation(newValue);\n });\n\n this.$updateWithMutation($observable.val());\n}\n\nObservableChecker.prototype = Object.create(ObservableItem.prototype);\nObservableChecker.prototype.constructor = ObservableChecker;\nObservableChecker.prototype.__$Observable = true;\nObservableChecker.prototype.__$isObservableChecker = true;\n\n\nexport const ObservablePipe = ObservableChecker;\nObservablePipe.prototype.constructor = ObservablePipe;\n\nObservableChecker.prototype.$updateWithMutation = function(newValue) {\n newValue = this.$mutation(newValue);\n return this.set(newValue);\n};","const $parseDateParts = (value, locale) => {\n const d = new Date(value);\n return {\n d,\n parts: new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'long',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n }).formatToParts(d).reduce((acc, { type, value }) => {\n acc[type] = value;\n return acc;\n }, {})\n };\n};\n\nconst $applyDatePattern = (pattern, d, parts) => {\n const pad = n => String(n).padStart(2, '0');\n return pattern\n .replace('YYYY', parts.year)\n .replace('YY', parts.year.slice(-2))\n .replace('MMMM', parts.month)\n .replace('MMM', parts.month.slice(0, 3))\n .replace('MM', pad(d.getMonth() + 1))\n .replace('DD', pad(d.getDate()))\n .replace('D', d.getDate())\n .replace('HH', parts.hour)\n .replace('mm', parts.minute)\n .replace('ss', parts.second);\n};\n\nexport const Formatters = {\n currency: (value, locale, { currency = 'XOF', notation, minimumFractionDigits, maximumFractionDigits } = {}) =>\n new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n notation,\n minimumFractionDigits,\n maximumFractionDigits\n }).format(value),\n\n number: (value, locale, { notation, minimumFractionDigits, maximumFractionDigits } = {}) =>\n new Intl.NumberFormat(locale, {\n notation,\n minimumFractionDigits,\n maximumFractionDigits\n }).format(value),\n\n percent: (value, locale, { decimals = 1 } = {}) =>\n new Intl.NumberFormat(locale, {\n style: 'percent',\n maximumFractionDigits: decimals\n }).format(value),\n\n date: (value, locale, { format, dateStyle = 'long' } = {}) => {\n if (format) {\n const { d, parts } = $parseDateParts(value, locale);\n return $applyDatePattern(format, d, parts);\n }\n return new Intl.DateTimeFormat(locale, { dateStyle }).format(new Date(value));\n },\n\n time: (value, locale, { format, hour = '2-digit', minute = '2-digit', second } = {}) => {\n if (format) {\n const { d, parts } = $parseDateParts(value, locale);\n return $applyDatePattern(format, d, parts);\n }\n return new Intl.DateTimeFormat(locale, { hour, minute, second }).format(new Date(value));\n },\n\n datetime: (value, locale, { format, dateStyle = 'long', hour = '2-digit', minute = '2-digit', second } = {}) => {\n if (format) {\n const { d, parts } = $parseDateParts(value, locale);\n return $applyDatePattern(format, d, parts);\n }\n return new Intl.DateTimeFormat(locale, { dateStyle, hour, minute, second }).format(new Date(value));\n },\n\n relative: (value, locale, { unit = 'day', numeric = 'auto' } = {}) => {\n const diff = Math.round((value - Date.now()) / (1000 * 60 * 60 * 24));\n return new Intl.RelativeTimeFormat(locale, { numeric }).format(diff, unit);\n },\n\n plural: (value, locale, { singular, plural } = {}) => {\n const rule = new Intl.PluralRules(locale).select(value);\n return `${value} ${rule === 'one' ? singular : plural}`;\n },\n};","/**\n * Creates an ObservableWhen that represents whether the observable equals a specific value.\n * Returns an object that can be subscribed to and will emit true/false.\n *\n * @param {*} value - The value to compare against\n * @returns {ObservableWhen} An ObservableWhen instance that tracks when the observable equals the value\n * @example\n * const status = Observable('idle');\n * const isLoading = status.when('loading');\n * isLoading.subscribe(active => console.log('Loading:', active));\n * status.set('loading'); // Logs: \"Loading: true\"\n */\nimport {ObservableWhen} from \"../ObservableWhen\";\nimport ObservableItem from \"../ObservableItem\";\nimport ObservableChecker from \"../ObservableChecker\";\nimport {Formatters} from \"../../utils/formatters\";\nimport NativeDocumentError from \"../../errors/NativeDocumentError\";\n\nObservableItem.prototype.when = function(value) {\n return new ObservableWhen(this, value);\n};\n\n\n\n/**\n * Create an Observable checker instance\n * @param callback\n * @returns {ObservableChecker}\n */\nObservableItem.prototype.check = function(callback) {\n return new ObservableChecker(this, callback)\n};\n\nObservableItem.prototype.transform = ObservableItem.prototype.check;\nObservableItem.prototype.pluck = function(property) {\n return new ObservableChecker(this, (value) => value[property]);\n};\nObservableItem.prototype.is = function(callbackOrValue) {\n if(typeof callbackOrValue === 'function') {\n return new ObservableChecker(this, callbackOrValue);\n }\n return new ObservableChecker(this, (value) => value === callbackOrValue);\n};\nObservableItem.prototype.select = ObservableItem.prototype.check;\n\n/**\n * Creates a derived observable that formats the current value using Intl.\n * Automatically reacts to both value changes and locale changes (Store.__nd.locale).\n *\n * @param {string | Function} type - Format type or custom formatter function\n * @param {Object} [options={}] - Options passed to the formatter\n * @returns {ObservableItem<string>}\n *\n * @example\n * // Currency\n * price.format('currency') // \"15 000 FCFA\"\n * price.format('currency', { currency: 'EUR' }) // \"15 000,00 €\"\n * price.format('currency', { notation: 'compact' }) // \"15 K FCFA\"\n *\n * // Number\n * count.format('number') // \"15 000\"\n *\n * // Percent\n * rate.format('percent') // \"15,0 %\"\n * rate.format('percent', { decimals: 2 }) // \"15,00 %\"\n *\n * // Date\n * date.format('date') // \"3 mars 2026\"\n * date.format('date', { dateStyle: 'full' }) // \"mardi 3 mars 2026\"\n * date.format('date', { format: 'DD/MM/YYYY' }) // \"03/03/2026\"\n * date.format('date', { format: 'DD MMM YYYY' }) // \"03 mar 2026\"\n * date.format('date', { format: 'DD MMMM YYYY' }) // \"03 mars 2026\"\n *\n * // Time\n * date.format('time') // \"20:30\"\n * date.format('time', { second: '2-digit' }) // \"20:30:00\"\n * date.format('time', { format: 'HH:mm:ss' }) // \"20:30:00\"\n *\n * // Datetime\n * date.format('datetime') // \"3 mars 2026, 20:30\"\n * date.format('datetime', { dateStyle: 'full' }) // \"mardi 3 mars 2026, 20:30\"\n * date.format('datetime', { format: 'DD/MM/YYYY HH:mm' }) // \"03/03/2026 20:30\"\n *\n * // Relative\n * date.format('relative') // \"dans 11 jours\"\n * date.format('relative', { unit: 'month' }) // \"dans 1 mois\"\n *\n * // Plural\n * count.format('plural', { singular: 'billet', plural: 'billets' }) // \"3 billets\"\n *\n * // Custom formatter\n * price.format(value => `${value.toLocaleString()} FCFA`)\n *\n * // Reacts to locale changes automatically\n * Store.setLocale('en-US');\n */\nObservableItem.prototype.format = function(type, options = {}) {\n const self = this;\n\n if (typeof type === 'function') {\n return new ObservableChecker(self, type);\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (!Formatters[type]) {\n throw new NativeDocumentError(\n `Observable.format : unknown type '${type}'. Available : ${Object.keys(Formatters).join(', ')}.`\n );\n }\n }\n\n const formatter = Formatters[type];\n const localeObservable = Formatters.locale;\n\n return ObservableItem.computed(() => formatter(self.val(), localeObservable.val(), options),\n [self, localeObservable]\n );\n};","import ObservableItem from \"./ObservableItem\";\nimport {debounce} from \"../utils/helpers\";\n\nconst STATE = {\n UNRESOLVED: 'unresolved',\n PENDING: 'pending',\n READY: 'ready',\n REFRESHING: 'refreshing',\n ERRORED: 'errored',\n};\n\nexport default function ObservableResource(fn, deps, config) {\n this.$fn = (config.debounce > 0) ? debounce(fn, config.debounce) : fn;\n this.$dependencies = deps;\n this.$config = config;\n this.$controller = null;\n this.$subscriptions = [];\n\n this.data = config.initial ?? new ObservableItem(null);\n this.error = new ObservableItem(null);\n this.state = new ObservableItem(STATE.UNRESOLVED);\n\n this.loading = ObservableItem.computed(\n (state) => state === STATE.PENDING || state === STATE.REFRESHING,\n [this.state]\n );\n\n if (config.auto) {\n if (deps.length > 0) {\n this.$watchDependencies();\n return;\n }\n this.fetch();\n }\n}\n\nObservableResource.prototype.$abort = function() {\n if (this.$controller) {\n this.$controller.abort();\n this.$controller = null;\n }\n};\n\nObservableResource.prototype.$runWithAbortController = function(isRefetch = false) {\n this.$abort();\n\n this.$controller = new AbortController();\n const signal = this.$controller.signal;\n\n const hasData = this.data.val() !== null;\n const nextState = isRefetch && hasData ? STATE.REFRESHING : STATE.PENDING;\n\n this.error.set(null);\n this.state.set(nextState);\n\n const depValues = this.$dependencies.map(dep => dep.val());\n const args = [...depValues, signal];\n\n Promise.resolve(this.$fn(...args))\n .then(result => {\n if (signal.aborted) {\n return;\n }\n this.data.set(result);\n this.error.set(null);\n this.state.set(STATE.READY);\n this.$controller = null;\n })\n .catch(err => {\n if (signal.aborted) {\n return;\n }\n this.error.set(err);\n this.state.set(STATE.ERRORED);\n this.$controller = null;\n });\n};\nObservableResource.prototype.$runWithoutAbortController = function(isRefetch = false) {\n const hasData = this.data.val() !== null;\n const nextState = isRefetch && hasData ? STATE.REFRESHING : STATE.PENDING;\n\n this.error.set(null);\n this.state.set(nextState);\n\n const args = this.$dependencies.map(dep => dep.val());\n\n Promise.resolve(this.$fn(...args))\n .then(result => {\n this.data.set(result);\n this.error.set(null);\n this.state.set(STATE.READY);\n })\n .catch(err => {\n this.error.set(err);\n this.state.set(STATE.ERRORED);\n });\n};\n\nObservableResource.prototype.$run = function(isRefetch = false) {\n const needsSignal = this.$fn.length > this.$dependencies.length;\n if(needsSignal) {\n this.$run = this.$runWithAbortController;\n return this.$runWithAbortController(isRefetch);\n }\n this.$run = this.$runWithoutAbortController;\n\n return this.$run(isRefetch);\n};\n\nObservableResource.prototype.$watchDependencies = function() {\n this.$subscriptions.forEach(unsub => unsub());\n this.$subscriptions = [];\n\n this.$dependencies.forEach(dep => {\n const callback = () => this.$run(true);\n dep.subscribe(callback);\n this.$subscriptions.push(() => dep.unsubscribe(callback));\n });\n if (!this.$config.lazy) {\n this.$run(false);\n }\n};\n\nObservableResource.prototype.fetch = function() {\n this.$run(false);\n return this;\n};\n\nObservableResource.prototype.refetch = function() {\n this.$run(true);\n return this;\n};\n\nObservableResource.prototype.mutate = function(value) {\n this.data.set(value);\n this.state.set(STATE.READY);\n return this;\n};\n\nObservableResource.prototype.destroy = function() {\n this.$abort();\n this.$subscriptions.forEach(unsub => unsub());\n this.$subscriptions = [];\n};\n\nObservableResource.prototype.isReady = function() {\n return this.state.isEqualTo(STATE.READY);\n};\n\nObservableResource.prototype.isPending = function() {\n return this.state.isEqualTo(STATE.PENDING);\n};\n\nObservableResource.prototype.isRefreshing = function() {\n return this.state.isEqualTo(STATE.REFRESHING);\n};\n\nObservableResource.prototype.isErrored = function() {\n return this.state.isEqualTo(STATE.ERRORED);\n};\n\nObservableResource.prototype.isUnresolved = function() {\n return this.state.isEqualTo(STATE.UNRESOLVED);\n};\n\nObservableResource.prototype.onSuccess = function(callback) {\n this.data.subscribe((value) => {\n if (this.state.val() === STATE.READY) {\n callback(value);\n }\n });\n return this;\n};\n\nObservableResource.prototype.onError = function(callback) {\n this.error.subscribe((err) => {\n if (err !== null) {\n callback(err);\n }\n });\n return this;\n};","import ObservableItem from './ObservableItem';\nimport MemoryManager from \"./MemoryManager\";\nimport NativeDocumentError from \"../../core/errors/NativeDocumentError\";\nimport ObservableArray from \"./ObservableArray\";\nimport Validator from \"../utils/validator\";\nimport {nextTick} from \"../utils/helpers\";\nimport PluginsManager from \"../utils/plugins-manager\";\nimport {ObservableObject} from \"./ObservableObject\";\n\nimport \"./observable-helpers/observable.is-to\";\nimport './observable-helpers/observable.prototypes';\nimport ObservableResource from \"./ObservableResource\";\nimport {Formatters} from \"../utils/formatters\";\n/**\n *\n * @param {*} value\n * @param {{ propagation: boolean, reset: boolean} | null} configs\n * @returns {ObservableItem}\n * @constructor\n */\nexport function Observable(value, configs = null) {\n return new ObservableItem(value, configs);\n}\n\nexport const $ = Observable;\nexport const obs = Observable;\n\n/**\n *\n * @param {string} propertyName\n */\nObservable.useValueProperty = function(propertyName = 'value') {\n Object.defineProperty(ObservableItem.prototype, propertyName, {\n get() {\n return this.$currentValue;\n },\n set(value) {\n this.set(value);\n },\n configurable: true,\n });\n};\n\nObservable.setLocale = function(locale) {\n Formatters.locale = locale.__$Observable ? locale : Observable(locale);\n};\n\n\n/**\n *\n * @param id\n * @returns {ObservableItem|null}\n */\nObservable.getById = function(id) {\n const item = MemoryManager.getObservableById(parseInt(id));\n if(!item) {\n throw new NativeDocumentError('Observable.getById : No observable found with id ' + id);\n }\n return item;\n};\n\n/**\n *\n * @param {ObservableItem} observable\n */\nObservable.cleanup = function(observable) {\n observable.cleanup();\n};\n\n/**\n * Enable auto cleanup of observables.\n * @param {Boolean} enable\n * @param {{interval:Boolean, threshold:number}} options\n */\nObservable.autoCleanup = function(enable = false, options = {}) {\n if(!enable) {\n return;\n }\n const { interval = 60000, threshold = 100 } = options;\n\n window.addEventListener('beforeunload', () => {\n MemoryManager.cleanup();\n });\n\n setInterval(() => MemoryManager.cleanObservables(threshold), interval);\n};\n\n\n/**\n * Creates an observable array with reactive array methods.\n * All mutations trigger updates automatically.\n *\n * @param {Array} [target=[]] - Initial array value\n * @param {Object|null} [configs=null] - Configuration options\n * // @param {boolean} [configs.propagation=true] - Whether to propagate changes to parent observables\n * // @param {boolean} [configs.deep=false] - Whether to make nested objects observable\n * @param {boolean} [configs.reset=false] - Whether to store initial value for reset()\n * @returns {ObservableArray} An observable array with reactive methods\n * @example\n * const items = Observable.array([1, 2, 3]);\n * items.push(4); // Triggers update\n * items.subscribe((arr) => console.log(arr));\n */\nObservable.array = function(target = [], configs = null) {\n return new ObservableArray(target, configs);\n};\n\n/**\n *\n * @param {Function} callback\n * @returns {Function}\n */\nObservable.batch = function(callback) {\n const $observer = Observable(0);\n const batch = function() {\n if(Validator.isAsyncFunction(callback)) {\n return (callback(...arguments)).then(() => {\n $observer.trigger();\n }).catch(error => { throw error; });\n }\n callback(...arguments);\n $observer.trigger();\n };\n batch.$observer = $observer;\n return batch;\n};\n\n\n/**\n * Creates a computed observable that automatically updates when its dependencies change.\n * The callback is re-executed whenever any dependency observable changes.\n *\n * @param {Function} callback - Function that returns the computed value\n * @param {Array<ObservableItem|ObservableChecker|ObservableProxy>|Function} [dependencies=[]] - Array of observables to watch, or batch function\n * @returns {ObservableItem} A new observable that updates automatically\n * @example\n * const firstName = Observable('John');\n * const lastName = Observable('Doe');\n * const fullName = Observable.computed(\n * () => `${firstName.val()} ${lastName.val()}`,\n * [firstName, lastName]\n * );\n *\n * // With batch function\n * const batch = Observable.batch(() => { ... });\n * const computed = Observable.computed(() => { ... }, batch);\n */\nObservable.computed = function(callback, dependencies = []) {\n const getValues = () => dependencies.map((item) => item.val());\n const initialValue = callback(...getValues());\n const observable = new ObservableItem(initialValue);\n const updatedValue = nextTick(() => observable.set(callback(...getValues())));\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('CreateObservableComputed', observable, dependencies);\n }\n\n if(Validator.isFunction(dependencies)) {\n if(!Validator.isObservable(dependencies.$observer)) {\n throw new NativeDocumentError('Observable.computed : dependencies must be valid batch function');\n }\n dependencies.$observer.subscribe(updatedValue);\n return observable;\n }\n\n dependencies.forEach(dependency => {\n if(Validator.isProxy(dependency)) {\n dependency.$observables.forEach((observable) => {\n observable.subscribe(updatedValue);\n });\n return;\n }\n dependency.subscribe(updatedValue);\n });\n\n return observable;\n};\nObservableItem.computed = Observable.computed;\n\n\nObservable.init = function(initialValue, configs = null) {\n return new ObservableObject(initialValue, configs)\n};\n\n/**\n *\n * @param {any[]} data\n * @return Proxy[]\n */\nObservable.arrayOfObject = function(data) {\n return data.map(item => Observable.object(item));\n}\n\n/**\n * Get the value of an observable or an object of observables.\n * @param {ObservableItem|Object<ObservableItem>} data\n * @returns {{}|*|null}\n */\nObservable.value = function(data) {\n if(data?.__$isObservableArray) {\n const result = [];\n for(let i = 0, length = data.length; i < length; i++) {\n const item = data.at(i);\n result.push(Observable.value(item));\n }\n return result;\n }\n if(data?.__$Observable) {\n return data.val();\n }\n if(Validator.isProxy(data)) {\n return data.$value;\n }\n return data;\n};\n\nObservable.object = Observable.init;\nObservable.json = Observable.init;\n\n\nObservable.resource = function(fn, deps = [], options = false) {\n const config = (typeof options === 'boolean')\n ? { auto: options, debounce: 0, lazy: false }\n : { auto: false, debounce: 0, lazy: false, ...options };\n\n return new ObservableResource(fn, deps, config);\n};\n\nObservableItem.prototype.resolve = function () {\n return Observable.value(this);\n};","import Validator from \"../utils/validator\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\nimport {BOOLEAN_ATTRIBUTES} from \"./constants.js\";\nimport {Observable} from \"../data/Observable\";\n\n/**\n *\n * @param {HTMLElement} element\n * @param {Object} data\n */\nexport const bindClassAttribute = (element, data) => {\n for(const className in data) {\n const value = data[className];\n if(value.__$Observable) {\n if(value.__$isObservableChecker) {\n let lastClass = value.val();\n if(typeof lastClass === \"string\") {\n element.classes.toggle(lastClass, true);\n value.subscribe((currentValue) => {\n element.classes.remove(lastClass);\n element.classes.toggle(currentValue, true);\n lastClass = currentValue;\n });\n continue;\n }\n }\n element.classes.toggle(className, value.val());\n value.subscribe((shouldAdd) => element.classes.toggle(className, shouldAdd));\n continue;\n }\n if(value.$hydrate) {\n value.$hydrate(element, className);\n continue;\n }\n element.classes.toggle(className, value)\n }\n}\n\n/**\n *\n * @param {HTMLElement} element\n * @param {Object} data\n */\nexport const bindStyleAttribute = (element, data) => {\n for(const styleName in data) {\n const value = data[styleName];\n const isCustomProperty = styleName.startsWith('--');\n\n if(value.__$Observable) {\n if(isCustomProperty) {\n element.style.setProperty(styleName, value.val());\n value.subscribe((newValue) => {\n if(newValue === false) {\n element.style.removeProperty(styleName);\n return;\n }\n element.style.setProperty(styleName, newValue)\n });\n } else {\n element.style[styleName] = value.val();\n value.subscribe((newValue) => {\n if(newValue === false) {\n element.style.removeProperty(styleName);\n return;\n }\n element.style[styleName] = newValue\n });\n }\n continue;\n }\n\n if(isCustomProperty) {\n element.style.setProperty(styleName, value);\n continue;\n }\n\n element.style[styleName] = value;\n }\n};\n\n/**\n *\n * @param {HTMLElement} element\n * @param {string} attributeName\n * @param {boolean|number|Observable} value\n */\nexport const bindBooleanAttribute = (element, attributeName, value) => {\n const isObservable = value.__$isObservable;\n const defaultValue = isObservable? value.val() : value;\n if(Validator.isBoolean(defaultValue)) {\n element[attributeName] = defaultValue;\n }\n else {\n element[attributeName] = defaultValue === element.value;\n }\n if(isObservable) {\n if(attributeName === 'checked') {\n if(typeof defaultValue === 'boolean') {\n element.addEventListener('input', () => value.set(element[attributeName]));\n }\n else {\n element.addEventListener('input', () => value.set(element.value));\n }\n value.subscribe((newValue) => element[attributeName] = newValue);\n return;\n }\n value.subscribe((newValue) => element[attributeName] = (newValue === element.value));\n }\n};\n\n\n/**\n *\n * @param {HTMLElement} element\n * @param {string} attributeName\n * @param {Observable} value\n */\nexport const bindAttributeWithObservable = (element, attributeName, value) => {\n const applyValue = attributeName === 'value' ? (newValue) => element.value = newValue : (newValue) => element.setAttribute(attributeName, newValue);\n value.subscribe(applyValue);\n\n if(attributeName === 'value') {\n element.value = value.val();\n element.addEventListener('input', () => value.set(element.value));\n return;\n }\n element.setAttribute(attributeName, value.val());\n}\n\n/**\n *\n * @param {HTMLElement} element\n * @param {Object} attributes\n */\nconst AttributesWrapper = (element, attributes) => {\n\n if(process.env.NODE_ENV === 'development') {\n Validator.validateAttributes(attributes);\n }\n\n for(const originalAttributeName in attributes) {\n const attributeName = originalAttributeName.toLowerCase();\n let value = attributes[originalAttributeName];\n if(value == null) {\n continue;\n }\n if(value.handleNdAttribute) {\n value.handleNdAttribute(element, attributeName, value)\n continue;\n }\n if(typeof value === 'object') {\n if(attributeName === 'class') {\n bindClassAttribute(element, value);\n continue;\n }\n if(attributeName === 'style') {\n bindStyleAttribute(element, value);\n continue;\n }\n }\n if(BOOLEAN_ATTRIBUTES.has(attributeName)) {\n bindBooleanAttribute(element, attributeName, value);\n continue;\n }\n\n element.setAttribute(attributeName, value);\n }\n return element;\n}\n\nexport default AttributesWrapper;","import Validator from \"../utils/validator\";\nimport AttributesWrapper, { bindClassAttribute, bindStyleAttribute } from \"./AttributesWrapper\";\nimport PluginsManager from \"../utils/plugins-manager\";\n\nlet $textNodeCache = null;\n\nexport const ElementCreator = {\n createTextNode() {\n if(!$textNodeCache) {\n $textNodeCache = document.createTextNode('');\n ElementCreator.createTextNode = () => $textNodeCache.cloneNode();\n }\n return $textNodeCache.cloneNode();\n },\n /**\n *\n * @param {HTMLElement|DocumentFragment} parent\n * @param {ObservableItem} observable\n * @returns {Text}\n */\n createObservableNode: (parent, observable) => {\n const text = ElementCreator.createTextNode();\n observable.subscribe(value => text.nodeValue = value);\n text.nodeValue = observable.val();\n parent && parent.appendChild(text);\n return text;\n },\n /**\n *\n * @param {HTMLElement|DocumentFragment} parent\n * @param {{$hydrate: Function}} item\n * @returns {Text}\n */\n createHydratableNode: (parent, item) => {\n const text = ElementCreator.createTextNode();\n item.$hydrate(text);\n return text;\n },\n\n /**\n *\n * @param {HTMLElement|DocumentFragment} parent\n * @param {*} value\n * @returns {Text}\n */\n createStaticTextNode: (parent, value) => {\n let text = ElementCreator.createTextNode();\n text.nodeValue = value;\n parent && parent.appendChild(text);\n return text;\n },\n /**\n *\n * @param {string} name\n * @returns {HTMLElement|DocumentFragment}\n */\n createElement: (name) => {\n const node = document.createElement(name);\n return node.cloneNode();\n },\n bindTextNode: (textNode, value) => {\n if(value?.__$isObservable) {\n value.subscribe(newValue => textNode.nodeValue = newValue);\n textNode.nodeValue = value.val();\n return;\n }\n textNode.nodeValue = value;\n },\n /**\n *\n * @param {*} children\n * @param {HTMLElement|DocumentFragment} parent\n */\n processChildren: (children, parent) => {\n if(children === null) return;\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('BeforeProcessChildren', parent);\n }\n let child = ElementCreator.getChild(children);\n if(child) {\n parent.appendChild(child);\n }\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('AfterProcessChildren', parent);\n }\n },\n async safeRemove(element) {\n await element.remove();\n\n },\n getChild: (child) => {\n if(child == null) {\n return null;\n }\n if(child.toNdElement) {\n do {\n child = child.toNdElement();\n if(Validator.isElement(child)) {\n return child;\n }\n } while (child.toNdElement);\n }\n\n return ElementCreator.createStaticTextNode(null, child);\n },\n /**\n *\n * @param {HTMLElement} element\n * @param {Object} attributes\n */\n processAttributes: (element, attributes) => {\n if (attributes) {\n AttributesWrapper(element, attributes);\n }\n },\n /**\n *\n * @param {HTMLElement} element\n * @param {Object} attributes\n */\n processAttributesDirect: AttributesWrapper,\n processClassAttribute: bindClassAttribute,\n processStyleAttribute: bindStyleAttribute,\n};","\n\n\nexport default function AnchorWithSentinel(name) {\n const instance = Reflect.construct(DocumentFragment, [], AnchorWithSentinel);\n const sentinel = document.createComment((name || '') + ' Anchor Sentinel');\n const anchorStart = document.createComment('Anchor Start : '+name);\n const anchorEnd = document.createComment('/ Anchor End '+name);\n const events = {};\n\n instance.append(anchorStart, sentinel, anchorEnd);\n\n const observer = new MutationObserver(() => {\n if (sentinel.parentNode !== instance && !(sentinel.parentNode instanceof DocumentFragment)) {\n events.connected && events.connected(sentinel.parentNode);\n }\n });\n\n observer.observe(document, { childList: true, subtree: true });\n\n\n instance.$sentinel = sentinel;\n instance.$start = anchorStart;\n instance.$end = anchorEnd;\n instance.$observer = observer;\n instance.$events = events;\n\n return instance;\n}\n\nAnchorWithSentinel.prototype = Object.create(DocumentFragment.prototype);\nAnchorWithSentinel.prototype.constructor = AnchorWithSentinel;\n\nAnchorWithSentinel.prototype.onConnected = function(callback) {\n this.$events.connected = callback;\n return this;\n};\n\nAnchorWithSentinel.prototype.onConnectedOnce = function(callback) {\n this.$events.connected = (parent) => {\n callback(parent);\n this.$observer.disconnect();\n this.$events.connectedOnce = null;\n };\n};\n","import Validator from \"../../utils/validator\";\nimport {ElementCreator} from \"../../wrappers/ElementCreator\";\n\n\nexport default function oneChildAnchorOverwriting(anchor, parent) {\n\n anchor.remove = () => {\n anchor.append.apply(anchor, parent.childNodes);\n };\n anchor.getParent = () => parent;\n\n anchor.appendChild = (child) => {\n child = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n parent.appendChild(child);\n };\n\n anchor.appendChildRaw = parent.appendChild.bind(parent);\n anchor.append = anchor.appendChild;\n anchor.appendRaw = anchor.appendChildRaw;\n\n anchor.insertAtStart = (child) => {\n child = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n parent.firstChild ? parent.insertBefore(child, parent.firstChild) : parent.appendChild(child);\n };\n anchor.insertAtStartRaw = (child) => {\n parent.firstChild ? parent.insertBefore(child, parent.firstChild) : parent.appendChild(child);\n };\n\n anchor.appendElement = anchor.appendChild;\n\n anchor.removeChildren = () => {\n parent.textContent = '';\n };\n\n anchor.replaceContent = function(content) {\n const child = Validator.isElement(content) ? content : ElementCreator.getChild(content);\n parent.replaceChildren(child);\n };\n\n anchor.replaceContentRaw = function(child) {\n parent.replaceChildren(child);\n };\n anchor.setContent = anchor.replaceContent;\n\n anchor.insertBefore = (child, anchor) => {\n child = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n parent.insertBefore(child, anchor);\n };\n anchor.insertBeforeRaw = (child, anchor) => {\n parent.insertBefore(child, anchor);\n };\n\n anchor.appendChildBefore = anchor.insertBefore;\n anchor.appendChildBeforeRaw = anchor.insertBeforeRaw;\n\n anchor.clear = anchor.remove;\n anchor.detach = anchor.remove;\n\n anchor.replaceChildren = function() {\n parent.replaceChildren(...arguments);\n };\n\n anchor.getByIndex = (index) => {\n return parent.childNodes[index];\n };\n}","import Validator from \"../../utils/validator\";\nimport {ElementCreator} from \"../../wrappers/ElementCreator\";\nimport AnchorWithSentinel from \"./anchor-with-sentinel\";\nimport oneChildAnchorOverwriting from \"./one-child-anchor-overwriting\";\n\nexport default function Anchor(name, isUniqueChild = false) {\n const anchorFragment = new AnchorWithSentinel(name);\n\n anchorFragment.onConnectedOnce((parent) => {\n if(isUniqueChild) {\n oneChildAnchorOverwriting(anchorFragment, parent);\n }\n });\n\n anchorFragment.__Anchor__ = true;\n\n const anchorStart = anchorFragment.$start;\n const anchorEnd = anchorFragment.$end;\n\n anchorFragment.nativeInsertBefore = anchorFragment.insertBefore;\n anchorFragment.nativeAppendChild = anchorFragment.appendChild;\n anchorFragment.nativeAppend = anchorFragment.append;\n\n const isParentUniqueChild = isUniqueChild\n ? () => true: (parent) => (parent.firstChild === anchorStart && parent.lastChild === anchorEnd)\n\n const insertBefore = (parent, child, target) => {\n const childElement = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n insertBeforeRaw(parent, childElement, target);\n };\n\n const insertBeforeRaw = (parent, child, target) => {\n if(parent === anchorFragment) {\n parent.nativeInsertBefore(child, target);\n return;\n }\n if(isParentUniqueChild(parent) && target === anchorEnd) {\n parent.append(child, target);\n return;\n }\n parent.insertBefore(child, target);\n };\n\n anchorFragment.appendElement = function(child) {\n const parentNode = anchorStart.parentNode;\n if(parentNode === anchorFragment) {\n parentNode.nativeInsertBefore(child, anchorEnd);\n return;\n }\n parentNode.insertBefore(child, anchorEnd);\n };\n\n anchorFragment.appendChild = function(child, before = null) {\n const parent = anchorEnd.parentNode;\n if(!parent) {\n DebugManager.error('Anchor', 'Anchor : parent not found', child);\n return;\n }\n before = before ?? anchorEnd;\n insertBefore(parent, child, before);\n };\n\n anchorFragment.appendChildRaw = function(child, before = null) {\n const parent = anchorEnd.parentNode;\n if(!parent) {\n DebugManager.error('Anchor', 'Anchor : parent not found', child);\n return;\n }\n before = before ?? anchorEnd;\n insertBeforeRaw(parent, child, before);\n };\n\n anchorFragment.getParent = () => anchorEnd.parentNode;\n anchorFragment.append = anchorFragment.appendChild;\n anchorFragment.appendRaw = anchorFragment.appendChildRaw;\n\n anchorFragment.insertAtStart = function(child) {\n child = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n anchorFragment.insertAtStartRaw(child);\n };\n\n anchorFragment.insertAtStartRaw = function(child) {\n const parentNode = anchorStart.parentNode;\n if(parentNode === anchorFragment) {\n parentNode.nativeInsertBefore(child, anchorStart);\n return;\n }\n parentNode.insertBefore(child, anchorStart);\n };\n\n anchorFragment.removeChildren = function() {\n const parent = anchorEnd.parentNode;\n if(parent === anchorFragment) {\n return;\n }\n if(isParentUniqueChild(parent)) {\n parent.replaceChildren(anchorStart, anchorEnd);\n return;\n }\n\n let itemToRemove = anchorStart.nextSibling, tempItem;\n while(itemToRemove && itemToRemove !== anchorEnd) {\n tempItem = itemToRemove.nextSibling;\n itemToRemove.remove();\n itemToRemove = tempItem;\n }\n };\n\n anchorFragment.remove = function() {\n const parent = anchorEnd.parentNode;\n if(parent === anchorFragment) {\n return;\n }\n if(isParentUniqueChild(parent)) {\n anchorFragment.nativeAppend.apply(anchorFragment, parent.childNodes);\n parent.replaceChildren(anchorStart, anchorEnd);\n return;\n }\n let itemToRemove = anchorStart.nextSibling, tempItem;\n while(itemToRemove && itemToRemove !== anchorEnd) {\n tempItem = itemToRemove.nextSibling;\n anchorFragment.nativeAppend(itemToRemove);\n itemToRemove = tempItem;\n }\n };\n\n anchorFragment.removeWithAnchors = function() {\n anchorFragment.removeChildren();\n anchorStart.remove();\n anchorEnd.remove();\n };\n anchorFragment.delete = anchorFragment.removeWithAnchors;\n\n anchorFragment.replaceContent = function(child) {\n const childElement = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n anchorFragment.replaceContentRaw(childElement);\n };\n\n anchorFragment.replaceContentRaw = function(child) {\n const parent = anchorEnd.parentNode;\n if(!parent) {\n return;\n }\n if(isParentUniqueChild(parent)) {\n parent.replaceChildren(anchorStart, child, anchorEnd);\n return;\n }\n anchorFragment.removeChildren();\n parent.insertBefore(child, anchorEnd);\n };\n\n anchorFragment.setContent = anchorFragment.replaceContent;\n anchorFragment.setContentRaw = anchorFragment.replaceContentRaw;\n\n anchorFragment.insertBefore = anchorFragment.appendChild;\n anchorFragment.insertBeforeRaw = anchorFragment.appendChildRaw;\n\n anchorFragment.endElement = function() {\n return anchorEnd;\n };\n\n anchorFragment.startElement = function() {\n return anchorStart;\n };\n\n anchorFragment.restore = function() {\n anchorFragment.appendChild(anchorFragment);\n };\n\n anchorFragment.clear = anchorFragment.remove;\n anchorFragment.detach = anchorFragment.remove;\n\n anchorFragment.getByIndex = function(index) {\n let currentNode = anchorStart;\n for(let i = 0; i <= index; i++) {\n if(!currentNode.nextSibling) {\n return null;\n }\n currentNode = currentNode.nextSibling;\n }\n return currentNode !== anchorStart ? currentNode : null;\n };\n\n return anchorFragment;\n};\n\n/**\n *\n * @param {HTMLElement|DocumentFragment|Text|String|Array} children\n * @param {{ parent?: HTMLElement, name?: String}} configs\n * @returns {DocumentFragment}\n */\nexport function createPortal(children, { parent, name = 'unnamed' } = {}) {\n const anchor = Anchor('Portal '+name);\n anchor.appendChild(ElementCreator.getChild(children));\n\n (parent || document.body).appendChild(anchor);\n return anchor;\n}\n\nDocumentFragment.prototype.setAttribute = () => {}","\n\nexport default class ArgTypesError extends Error {\n constructor(message, errors) {\n super(`${message}\\n\\n${errors.join(\"\\n\")}\\n\\n`);\n }\n}","import Validator from \"./validator\";\nimport ArgTypesError from \"../errors/ArgTypesError\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\n\nlet withValidation = (fn) => fn;\nlet ArgTypes = {};\n\n/**\n *\n * @type {{string: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * number: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * boolean: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * observable: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * element: (function(*): {name: *, type: string, validate: function(*): *}),\n * function: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * object: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * objectNotNull: (function(*): {name: *, type: string, validate: function(*): *}),\n * children: (function(*): {name: *, type: string, validate: function(*): *}),\n * attributes: (function(*): {name: *, type: string, validate: function(*): *}),\n * optional: (function(*): *&{optional: boolean}),\n * oneOf: (function(*, ...[*]): {name: *, type: string, types: *[],\n * validate: function(*): boolean})\n * }}\n */\nif(process.env.NODE_ENV === 'development') {\n ArgTypes = {\n string: (name) => ({ name, type: 'string', validate: (v) => Validator.isString(v) }),\n number: (name) => ({ name, type: 'number', validate: (v) => Validator.isNumber(v) }),\n boolean: (name) => ({ name, type: 'boolean', validate: (v) => Validator.isBoolean(v) }),\n observable: (name) => ({ name, type: 'observable', validate: (v) => Validator.isObservable(v) }),\n element: (name) => ({ name, type: 'element', validate: (v) => Validator.isElement(v) }),\n function: (name) => ({ name, type: 'function', validate: (v) => Validator.isFunction(v) }),\n object: (name) => ({ name, type: 'object', validate: (v) => (Validator.isObject(v)) }),\n objectNotNull: (name) => ({ name, type: 'object', validate: (v) => (Validator.isObject(v) && v !== null) }),\n children: (name) => ({ name, type: 'children', validate: (v) => Validator.validateChildren(v) }),\n attributes: (name) => ({ name, type: 'attributes', validate: (v) => Validator.validateAttributes(v) }),\n\n // Optional arguments\n optional: (argType) => ({ ...argType, optional: true }),\n\n // Union types\n oneOf: (name, ...argTypes) => ({\n name,\n type: 'oneOf',\n types: argTypes,\n validate: (v) => argTypes.some(type => type.validate(v))\n })\n };\n\n\n /**\n *\n * @param {Array} args\n * @param {Array} argSchema\n * @param {string} fnName\n */\n const validateArgs = (args, argSchema, fnName = 'Function') => {\n if (!argSchema) return;\n\n const errors = [];\n\n // Check the number of arguments\n const requiredCount = argSchema.filter(arg => !arg.optional).length;\n if (args.length < requiredCount) {\n errors.push(`${fnName}: Expected at least ${requiredCount} arguments, got ${args.length}`);\n }\n\n // Validate each argument\n argSchema.forEach((schema, index) => {\n const position = index + 1;\n const value = args[index];\n\n if (value === undefined) {\n if (!schema.optional) {\n errors.push(`${fnName}: Missing required argument '${schema.name}' at position ${position}`);\n }\n return;\n }\n\n if (!schema.validate(value)) {\n const valueTypeOf = value?.constructor?.name || typeof value;\n errors.push(`${fnName}: Invalid argument '${schema.name}' at position ${position}, expected ${schema.type}, got ${valueTypeOf}`);\n }\n });\n\n if (errors.length > 0) {\n throw new ArgTypesError(`Argument validation failed`, errors);\n }\n };\n\n\n\n /**\n * @param {Function} fn\n * @param {Array} argSchema\n * @param {string} fnName\n * @returns {Function}\n */\n withValidation = (fn, argSchema, fnName = 'Function') => {\n if(!Validator.isArray(argSchema)) {\n throw new NativeDocumentError('withValidation : argSchema must be an array');\n }\n return function(...args) {\n validateArgs(args, argSchema, fn.name || fnName);\n return fn.apply(this, args);\n };\n };\n}\nif(process.env.NODE_ENV === 'production') {\n ArgTypes = {\n string: () => true,\n number: () => true,\n boolean: () => true,\n observable: () => true,\n element: () => true,\n function: () => true,\n object: () => true,\n objectNotNull: () => true,\n children: () => true,\n attributes: () => true,\n\n // Optional arguments\n optional: () => true,\n\n // Union types\n oneOf: () => true\n };\n}\n\nexport const normalizeComponentArgs = function(props, children = null) {\n if(props && children) {\n return { props, children };\n }\n if(typeof props !== 'object' || Array.isArray(props) || props === null || props.constructor.name !== 'Object' || props.$hydrate) { // IF it's not a JSON\n return { props: children, children: props }\n }\n return { props, children };\n}\n\nexport { ArgTypes, withValidation };","const DocumentObserver = {\n mounted: new WeakMap(),\n beforeUnmount: new WeakMap(),\n mountedSupposedSize: 0,\n unmounted: new WeakMap(),\n unmountedSupposedSize: 0,\n observer: null,\n initObserver: () => {\n if(DocumentObserver.observer) {\n return;\n }\n DocumentObserver.observer = new MutationObserver(DocumentObserver.checkMutation);\n DocumentObserver.observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n },\n\n executeMountedCallback(node) {\n const data = DocumentObserver.mounted.get(node);\n if(!data) {\n return;\n }\n data.inDom = true;\n if(!data.mounted) {\n return;\n }\n if(Array.isArray(data.mounted)) {\n for(const cb of data.mounted) {\n cb(node);\n }\n return;\n }\n data.mounted(node);\n },\n\n executeUnmountedCallback(node) {\n const data = DocumentObserver.unmounted.get(node);\n if(!data) {\n return;\n }\n data.inDom = false;\n if(!data.unmounted) {\n return;\n }\n\n let shouldRemove = false;\n if(Array.isArray(data.unmounted)) {\n for(const cb of data.unmounted) {\n if(cb(node) === true) {\n shouldRemove = true;\n }\n }\n } else {\n shouldRemove = data.unmounted(node) === true;\n }\n\n if(shouldRemove) {\n data.disconnect();\n node.nd?.remove();\n }\n },\n\n checkMutation: function(mutationsList) {\n for(const mutation of mutationsList) {\n if(DocumentObserver.mountedSupposedSize > 0) {\n for(const node of mutation.addedNodes) {\n DocumentObserver.executeMountedCallback(node);\n if(!node.querySelectorAll) {\n continue;\n }\n const children = node.querySelectorAll('[data--nd-mounted]');\n for(const child of children) {\n DocumentObserver.executeMountedCallback(child);\n }\n }\n }\n\n if (DocumentObserver.unmountedSupposedSize > 0) {\n for (const node of mutation.removedNodes) {\n DocumentObserver.executeUnmountedCallback(node);\n if(!node.querySelectorAll) {\n continue;\n }\n const children = node.querySelectorAll('[data--nd-unmounted]');\n for(const child of children) {\n DocumentObserver.executeUnmountedCallback(child);\n }\n }\n }\n }\n },\n\n /**\n * @param {HTMLElement} element\n * @param {boolean} inDom\n * @returns {{ disconnect: Function, mounted: Function, unmounted: Function, off: Function }}\n */\n watch: function(element, inDom = false) {\n let mountedRegistered = false;\n let unmountedRegistered = false;\n\n DocumentObserver.initObserver();\n\n let data = {\n inDom,\n mounted: null,\n unmounted: null,\n disconnect: () => {\n if (mountedRegistered) {\n DocumentObserver.mounted.delete(element);\n DocumentObserver.mountedSupposedSize--;\n }\n if (unmountedRegistered) {\n DocumentObserver.unmounted.delete(element);\n DocumentObserver.unmountedSupposedSize--;\n }\n data = null;\n }\n };\n\n const addListener = (type, callback) => {\n if (!data[type]) {\n data[type] = callback;\n return;\n }\n if (!Array.isArray(data[type])) {\n data[type] = [data[type], callback];\n return;\n }\n data[type].push(callback);\n };\n\n const removeListener = (type, callback) => {\n if(!data?.[type]) {\n return;\n }\n if(Array.isArray(data[type])) {\n const index = data[type].indexOf(callback);\n if(index > -1) {\n data[type].splice(index, 1);\n }\n if(data[type].length === 1) {\n data[type] = data[type][0];\n }\n if(data[type].length === 0) {\n data[type] = null;\n }\n return;\n }\n data[type] = null;\n };\n\n return {\n disconnect: () => data?.disconnect(),\n\n mounted: (callback) => {\n addListener('mounted', callback);\n DocumentObserver.mounted.set(element, data);\n if (!mountedRegistered) {\n DocumentObserver.mountedSupposedSize++;\n mountedRegistered = true;\n }\n },\n\n unmounted: (callback) => {\n addListener('unmounted', callback);\n DocumentObserver.unmounted.set(element, data);\n if (!unmountedRegistered) {\n DocumentObserver.unmountedSupposedSize++;\n unmountedRegistered = true;\n }\n },\n\n off: (type, callback) => {\n removeListener(type, callback);\n }\n };\n }\n};\n\nexport default DocumentObserver;","import DocumentObserver from \"./DocumentObserver\";\nimport PluginsManager from \"../utils/plugins-manager\";\nimport NativeDocumentError from \"../errors/NativeDocumentError.js\";\nimport DebugManager from \"../utils/debug-manager.js\";\nimport attributesWrapper, {\n bindAttributeWithObservable,\n bindClassAttribute,\n bindStyleAttribute\n} from \"./AttributesWrapper\";\n\nexport function NDElement(element) {\n this.$element = element;\n this.$attachements = null;\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('NDElementCreated', element, this);\n }\n}\n\nNDElement.prototype.__$isNDElement = true;\n\nNDElement.$getChild = (el) => el;\n\nNDElement.prototype.ghostDom = function(element) {\n if(!this.$attachements) {\n this.$attachements = document.createDocumentFragment();\n }\n this.$attachements.appendChild(NDElement.$getChild(element));\n return this;\n};\n\nNDElement.prototype.valueOf = function() {\n return this.$element;\n};\n\nNDElement.prototype.ref = function(target, name) {\n target[name] = this.$element;\n return this;\n};\n\nNDElement.prototype.refSelf = function(target, name) {\n target[name] = this;\n // TODO: @DIM to check\n // target[name] = new NDElement(this.$element);\n return this;\n};\n\nNDElement.prototype.unmountChildren = function() {\n let element = this.$element;\n for(let i = 0, length = element.children.length; i < length; i++) {\n let elementChildren = element.children[i];\n if(!elementChildren.$ndProx) {\n elementChildren.nd?.remove();\n }\n elementChildren = null;\n }\n element = null;\n return this;\n};\n\nNDElement.prototype.remove = function() {\n let element = this.$element;\n element.nd.unmountChildren();\n element.$ndProx = null;\n\n $lifeCycleObservers.delete(element);\n\n element = null;\n return this;\n};\n\nconst $lifeCycleObservers = new WeakMap();\nNDElement.prototype.lifecycle = function(states) {\n const el = this.$element;\n if (!$lifeCycleObservers.has(el)) {\n $lifeCycleObservers.set(el, DocumentObserver.watch(el));\n }\n const observer = $lifeCycleObservers.get(el);\n\n if(states.mounted) {\n this.$element.setAttribute('data--nd-mounted', '1');\n observer.mounted(states.mounted);\n }\n if(states.unmounted) {\n this.$element.setAttribute('data--nd-unmounted', '1');\n observer.unmounted(states.unmounted);\n }\n return this;\n};\n\nNDElement.prototype.destroyOnUnmount = function() {\n this.unmounted(() => {\n this.$element?.querySelectorAll('[data--nd-before-unmount]').forEach(child => {\n child.remove();\n child.__$controller?.abort();\n child.__$controller = null;\n $lifeCycleObservers.delete(child);\n });\n\n this.$element.__$controller?.abort();\n this.$element.__$controller = null;\n $lifeCycleObservers.delete(this.$element);\n this.$element = null;\n });\n return this;\n};\n\nNDElement.prototype.mounted = function(callback) {\n return this.lifecycle({ mounted: callback });\n};\n\nNDElement.prototype.unmounted = function(callback) {\n return this.lifecycle({ unmounted: callback });\n};\n\nNDElement.prototype.beforeUnmount = function(id, callback) {\n const el = this.$element;\n\n if(!DocumentObserver.beforeUnmount.has(el)) {\n DocumentObserver.beforeUnmount.set(el, new Map());\n const originalRemove = el.remove.bind(el);\n\n let $isUnmounting = false;\n this.$element.setAttribute('data--nd-before-unmount', '1');\n\n el.remove = async () => {\n if($isUnmounting) {\n return;\n }\n $isUnmounting = true;\n\n try {\n const callbacks = DocumentObserver.beforeUnmount.get(el);\n for (const cb of callbacks.values()) {\n await cb.call(this, el);\n }\n } finally {\n originalRemove();\n $isUnmounting = false;\n }\n };\n }\n\n DocumentObserver.beforeUnmount.get(el).set(id, callback);\n return this;\n};\n\nNDElement.prototype.htmlElement = function() {\n return this.$element;\n};\n\nNDElement.prototype.node = NDElement.prototype.htmlElement;\n\nNDElement.prototype.shadow = function(mode, style = null) {\n const $element = this.$element;\n const children = Array.from($element.childNodes)\n const shadowRoot = $element.attachShadow({ mode });\n if(style) {\n const styleNode = document.createElement(\"style\");\n styleNode.textContent = style;\n shadowRoot.appendChild(styleNode);\n }\n $element.append = shadowRoot.append.bind(shadowRoot);\n $element.appendChild = shadowRoot.appendChild.bind(shadowRoot);\n shadowRoot.append(...children);\n\n return this;\n};\n\nNDElement.prototype.openShadow = function(style = null) {\n return this.shadow('open', style);\n};\n\nNDElement.prototype.closedShadow = function(style = null) {\n return this.shadow('closed', style);\n};\n\n/**\n * Extends the current NDElement instance with custom methods.\n * Methods are bound to the instance and available for chaining.\n *\n * @param {Object} methods - Object containing method definitions\n * @returns {this} The NDElement instance with added methods for chaining\n * @example\n * element.nd.with({\n * highlight() {\n * this.$element.style.background = 'yellow';\n * return this;\n * }\n * }).highlight().onClick(() => console.log('Clicked'));\n */\nNDElement.prototype.with = function(methods) {\n if (!methods || typeof methods !== 'object') {\n throw new NativeDocumentError('extend() requires an object of methods');\n }\n if(process.env.NODE_ENV === 'development') {\n if (!this.$localExtensions) {\n this.$localExtensions = new Map();\n }\n }\n\n for (const name in methods) {\n const method = methods[name];\n\n if (typeof method !== 'function') {\n DebugManager.warn(`⚠️ extends(): \"${name}\" is not a function, skipping`);\n continue;\n }\n if(process.env.NODE_ENV === 'development') {\n if (this[name] && !this.$localExtensions.has(name)) {\n DebugManager.warn('NDElement.extend', `Method \"${name}\" already exists and will be overwritten`);\n }\n this.$localExtensions.set(name, method);\n }\n\n this[name] = method.bind(this);\n }\n\n return this;\n};\n\n\nNDElement.prototype.attr = function(name, value) {\n if(value?.__$Observable) {\n bindAttributeWithObservable(this.$element, name, value);\n return this;\n }\n this.$element.setAttribute(name, value);\n return this;\n};\n\nNDElement.prototype.attrs = function(attrs) {\n attributesWrapper(this.$element, attrs);\n return this;\n};\n\nNDElement.prototype.class = function(classes) {\n bindClassAttribute(this.$element, classes);\n return this;\n};\n\nNDElement.prototype.style = function(style) {\n bindStyleAttribute(this.$element, style);\n return this;\n};\n\n\n/**\n * Extends the NDElement prototype with new methods available to all NDElement instances.\n * Use this to add global methods to all NDElements.\n *\n * @param {Object} methods - Object containing method definitions to add to prototype\n * @returns {typeof NDElement} The NDElement constructor\n * @throws {NativeDocumentError} If methods is not an object or contains non-function values\n * @example\n * NDElement.extend({\n * fadeIn() {\n * this.$element.style.opacity = '1';\n * return this;\n * }\n * });\n * // Now all NDElements have .fadeIn() method\n * Div().nd.fadeIn();\n */\nNDElement.extend = function(methods) {\n if (!methods || typeof methods !== 'object') {\n throw new NativeDocumentError('NDElement.extend() requires an object of methods');\n }\n\n if (Array.isArray(methods)) {\n throw new NativeDocumentError('NDElement.extend() requires an object, not an array');\n }\n\n const protectedMethods = new Set([\n 'constructor', 'valueOf', '$element', '$observer',\n 'ref', 'remove', 'cleanup', 'with', 'extend', 'attach',\n 'lifecycle', 'mounted', 'unmounted', 'unmountChildren'\n ]);\n\n for (const name in methods) {\n if (!Object.hasOwn(methods, name)) {\n continue;\n }\n\n const method = methods[name];\n\n if (typeof method !== 'function') {\n DebugManager.warn('NDElement.extend', `\"${name}\" is not a function, skipping`);\n continue;\n }\n\n if (protectedMethods.has(name)) {\n DebugManager.error('NDElement.extend', `Cannot override protected method \"${name}\"`);\n throw new NativeDocumentError(`Cannot override protected method \"${name}\"`);\n }\n\n if (NDElement.prototype[name]) {\n DebugManager.warn('NDElement.extend', `Overwriting existing prototype method \"${name}\"`);\n }\n\n NDElement.prototype[name] = method;\n }\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('NDElementExtended', methods);\n }\n\n return NDElement;\n};","export const EVENTS = [\n \"Click\",\n \"DblClick\",\n \"MouseDown\",\n \"MouseEnter\",\n \"MouseLeave\",\n \"MouseMove\",\n \"MouseOut\",\n \"MouseOver\",\n \"MouseUp\",\n \"Wheel\",\n \"KeyDown\",\n \"KeyPress\",\n \"KeyUp\",\n \"Blur\",\n \"Change\",\n \"Focus\",\n \"Input\",\n \"Invalid\",\n \"Reset\",\n \"Search\",\n \"Select\",\n \"Submit\",\n \"Drag\",\n \"DragEnd\",\n \"DragEnter\",\n \"DragLeave\",\n \"DragOver\",\n \"DragStart\",\n \"Drop\",\n \"AfterPrint\",\n \"BeforePrint\",\n \"BeforeUnload\",\n \"Error\",\n \"HashChange\",\n \"Load\",\n \"Offline\",\n \"Online\",\n \"PageHide\",\n \"PageShow\",\n \"Resize\",\n \"Scroll\",\n \"Unload\",\n \"Abort\",\n \"CanPlay\",\n \"CanPlayThrough\",\n \"DurationChange\",\n \"Emptied\",\n \"Ended\",\n \"LoadedData\",\n \"LoadedMetadata\",\n \"LoadStart\",\n \"Pause\",\n \"Play\",\n \"Playing\",\n \"Progress\",\n \"RateChange\",\n \"Seeked\",\n \"Seeking\",\n \"Stalled\",\n \"Suspend\",\n \"TimeUpdate\",\n \"VolumeChange\",\n \"Waiting\",\n\n \"TouchCancel\",\n \"TouchEnd\",\n \"TouchMove\",\n \"TouchStart\",\n \"AnimationEnd\",\n \"AnimationIteration\",\n \"AnimationStart\",\n \"TransitionEnd\",\n \"Copy\",\n \"Cut\",\n \"Paste\",\n \"FocusIn\",\n \"FocusOut\",\n \"ContextMenu\"\n];\n\nexport const EVENTS_WITH_PREVENT = [\n \"Click\",\n \"DblClick\",\n \"MouseDown\",\n \"MouseUp\",\n \"Wheel\",\n \"KeyDown\",\n \"KeyPress\",\n \"Invalid\",\n \"Reset\",\n \"Submit\",\n \"DragOver\",\n \"Drop\",\n \"BeforeUnload\",\n \"TouchCancel\",\n \"TouchEnd\",\n \"TouchMove\",\n \"TouchStart\",\n \"Copy\",\n \"Cut\",\n \"Paste\",\n \"ContextMenu\"\n];\n\nexport const EVENTS_WITH_STOP = [\n \"Click\",\n \"DblClick\",\n \"MouseDown\",\n \"MouseMove\",\n \"MouseOut\",\n \"MouseOver\",\n \"MouseUp\",\n \"Wheel\",\n \"KeyDown\",\n \"KeyPress\",\n \"KeyUp\",\n \"Change\",\n \"Input\",\n \"Invalid\",\n \"Reset\",\n \"Search\",\n \"Select\",\n \"Submit\",\n \"Drag\",\n \"DragEnd\",\n \"DragEnter\",\n \"DragLeave\",\n \"DragOver\",\n \"DragStart\",\n \"Drop\",\n \"BeforeUnload\",\n \"HashChange\",\n \"TouchCancel\",\n \"TouchEnd\",\n \"TouchMove\",\n \"TouchStart\",\n \"AnimationEnd\",\n \"AnimationIteration\",\n \"AnimationStart\",\n \"TransitionEnd\",\n \"Copy\",\n \"Cut\",\n \"Paste\",\n \"FocusIn\",\n \"FocusOut\",\n \"ContextMenu\"\n];","import { NDElement } from \"./NDElement\";\nimport {EVENTS, EVENTS_WITH_PREVENT, EVENTS_WITH_STOP} from \"../utils/events\";\n\nconst property = {\n configurable: true,\n get() {\n return new NDElement(this);\n }\n};\n\nObject.defineProperty(HTMLElement.prototype, 'nd', property);\n\nObject.defineProperty(DocumentFragment.prototype, 'nd', property);\n\nObject.defineProperty(NDElement.prototype, 'nd', {\n configurable: true,\n get: function() {\n return this;\n }\n});\n\n\n\n// ----------------------------------------------------------------\n// Events helpers\n// ----------------------------------------------------------------\nEVENTS.forEach(eventSourceName => {\n const eventName = eventSourceName.toLowerCase();\n NDElement.prototype['on'+eventSourceName] = function(callback = null, options = {}) {\n this.$element.addEventListener(eventName, callback, {\n signal: this.$getSignal(),\n ...options\n });\n return this;\n };\n})\n\nEVENTS_WITH_STOP.forEach(eventSourceName => {\n const eventName = eventSourceName.toLowerCase();\n NDElement.prototype['onStop'+eventSourceName] = function(callback = null, options = {}) {\n _stop(this.$element, eventName, callback, {\n signal: this.$getSignal(),\n ...options\n });\n return this;\n };\n NDElement.prototype['onPreventStop'+eventSourceName] = function(callback = null, options = {}) {\n _preventStop(this.$element, eventName, callback, {\n signal: this.$getSignal(),\n ...options\n });\n return this;\n };\n});\n\nEVENTS_WITH_PREVENT.forEach(eventSourceName => {\n const eventName = eventSourceName.toLowerCase();\n NDElement.prototype['onPrevent'+eventSourceName] = function(callback = null, options = {}) {\n _prevent(this.$element, eventName, callback, {\n signal: this.$getSignal(),\n ...options\n });\n return this;\n };\n});\n\nNDElement.prototype.$getSignal = function() {\n if(!this.$element.__$controller) {\n this.$element.__$controller = new AbortController();\n }\n return this.$element.__$controller.signal;\n};\n\nNDElement.prototype.on = function(name, callback, options) {\n this.$element.addEventListener(name.toLowerCase(), callback, {\n signal: this.$getSignal(),\n ...options\n });\n return this;\n};\n\nNDElement.prototype.off = function(name, callback) {\n this.$element.removeEventListener(name.toLowerCase(), callback);\n return this;\n};\n\nNDElement.prototype.once = function(name, callback) {\n this.$element.addEventListener(name.toLowerCase(), callback, {\n signal: this.$getSignal(),\n once: true\n });\n return this;\n};\n\nNDElement.prototype.emit = function(name, detail = null) {\n const event = new CustomEvent(name, {\n detail,\n bubbles: true,\n cancelable: true,\n });\n this.$element.dispatchEvent(event);\n return this;\n};\n\nconst _prevent = function(element, eventName, callback, options) {\n const handler = (event) => {\n event.preventDefault();\n callback && callback.call(element, event);\n };\n element.addEventListener(eventName, handler, options);\n return this;\n}\n\nconst _stop = function(element, eventName, callback, options) {\n const handler = (event) => {\n event.stopPropagation();\n callback && callback.call(element, event);\n };\n element.addEventListener(eventName, handler, options);\n return this;\n};\n\nconst _preventStop = function(element, eventName, callback, options) {\n const handler = (event) => {\n event.stopPropagation();\n event.preventDefault();\n callback && callback.call(element, event);\n };\n element.addEventListener(eventName, handler, options);\n return this;\n};\n\n\n\n// ----------------------------------------------------------------\n// Class attributes binder\n// ----------------------------------------------------------------\nconst classListMethods = {\n getClasses() {\n return this.$element.className?.split(' ').filter(Boolean);\n },\n add(value) {\n const classes = this.getClasses();\n if(classes.indexOf(value) >= 0) {\n return;\n }\n classes.push(value);\n this.$element.className = classes.join(' ');\n },\n remove(value) {\n const classes = this.getClasses();\n const index = classes.indexOf(value);\n if(index < 0) {\n return;\n }\n classes.splice(index, 1);\n this.$element.className = classes.join(' ');\n },\n toggle(value, force = undefined) {\n const classes = this.getClasses();\n const index = classes.indexOf(value);\n if(index >= 0) {\n if(force === true) {\n return;\n }\n classes.splice(index, 1);\n }\n else {\n if(force === false) {\n return;\n }\n classes.push(value);\n }\n this.$element.className = classes.join(' ');\n },\n contains(value) {\n return this.getClasses().indexOf(value) >= 0;\n }\n}\n\nObject.defineProperty(HTMLElement.prototype, 'classes', {\n configurable: true,\n get() {\n return {\n $element: this,\n ...classListMethods\n };\n }\n});","import {withValidation} from \"./args-types.js\";\n\n\nDocumentFragment.prototype.__IS_FRAGMENT = true;\n\nFunction.prototype.args = function(...args) {\n return withValidation(this, args);\n};\n\nFunction.prototype.errorBoundary = function(callback) {\n const handler = (...args) => {\n try {\n return this.apply(this, args);\n } catch(e) {\n return callback(e, {caller: handler, args: args });\n }\n };\n return handler;\n};\n","\n\nexport default function TemplateBinding(hydrate) {\n this.$hydrate = hydrate;\n}\n\nTemplateBinding.prototype.__$isTemplateBinding = true;","import ObservableItem from \"../../data/ObservableItem\";\nimport {NDElement} from \"../NDElement\";\nimport TemplateBinding from \"../TemplateBinding\";\nimport {ElementCreator} from \"../ElementCreator\";\nimport PluginsManager from \"../../utils/plugins-manager\";\nimport ObservableChecker from \"../../data/ObservableChecker\";\n\n\nNDElement.$getChild = ElementCreator.getChild;\n\nString.prototype.toNdElement = function () {\n return ElementCreator.createStaticTextNode(null, this);\n};\n\nNumber.prototype.toNdElement = function () {\n return ElementCreator.createStaticTextNode(null, this.toString());\n};\n\nElement.prototype.toNdElement = function () {\n return this;\n};\nText.prototype.toNdElement = function () {\n return this;\n};\nComment.prototype.toNdElement = function () {\n return this;\n};\nDocument.prototype.toNdElement = function () {\n return this;\n};\nDocumentFragment.prototype.toNdElement = function () {\n return this;\n};\n\nObservableItem.prototype.toNdElement = function () {\n return ElementCreator.createObservableNode(null, this);\n};\n\nObservableChecker.prototype.toNdElement = ObservableItem.prototype.toNdElement;\n\nNDElement.prototype.toNdElement = function () {\n const element = this.$element ?? this.$build?.() ?? this.build?.() ?? null;\n if(this.$attachements) {\n if(!this.$attachements.contains(this.$element)) {\n this.$attachements.append(this.$element);\n }\n return this.$attachements;\n }\n return element;\n};\n\nArray.prototype.toNdElement = function () {\n const fragment = document.createDocumentFragment();\n for(let i = 0, length = this.length; i < length; i++) {\n const child = ElementCreator.getChild(this[i]);\n if(child === null) continue;\n fragment.appendChild(child);\n }\n return fragment;\n};\n\nFunction.prototype.toNdElement = function () {\n const child = this;\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('BeforeProcessComponent', child);\n }\n return ElementCreator.getChild(child());\n};\n\nTemplateBinding.prototype.toNdElement = function () {\n return ElementCreator.createHydratableNode(null, this);\n};\n","import {NDElement} from \"../NDElement\";\n\n/**\n * @param {HTMLElement} el\n * @param {number} timeout\n */\nconst waitForVisualEnd = (el, timeout = 1000) => {\n return new Promise((resolve) => {\n let isResolved = false;\n\n const cleanupAndResolve = (e) => {\n if (e && e.target !== el) return;\n if (isResolved) return;\n\n isResolved = true;\n el.removeEventListener('transitionend', cleanupAndResolve);\n el.removeEventListener('animationend', cleanupAndResolve);\n clearTimeout(timer);\n resolve();\n };\n\n el.addEventListener('transitionend', cleanupAndResolve);\n el.addEventListener('animationend', cleanupAndResolve);\n\n const timer = setTimeout(cleanupAndResolve, timeout);\n\n const style = window.getComputedStyle(el);\n const hasTransition = style.transitionDuration !== '0s';\n const hasAnimation = style.animationDuration !== '0s';\n\n if (!hasTransition && !hasAnimation) {\n cleanupAndResolve();\n }\n });\n};\n\nNDElement.prototype.transitionOut = function(transitionName) {\n const exitClass = transitionName + '-exit';\n const el = this.$element;\n this.beforeUnmount('transition-exit', async function() {\n el.classes.add(exitClass);\n await waitForVisualEnd(el);\n el.classes.remove(exitClass);\n });\n return this;\n};\n\nNDElement.prototype.transitionIn = function(transitionName) {\n const startClass = transitionName + '-enter-from';\n const endClass = transitionName + '-enter-to';\n\n const el = this.$element;\n\n el.classes.add(startClass);\n\n this.mounted(() => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n el.classes.remove(startClass);\n el.classes.add(endClass);\n\n waitForVisualEnd(el).then(() => {\n el.classes.remove(endClass);\n });\n });\n });\n });\n return this;\n};\n\n\nNDElement.prototype.transition = function (transitionName) {\n this.transitionIn(transitionName);\n this.transitionOut(transitionName);\n return this;\n};\n\nNDElement.prototype.animate = function(animationName) {\n const el = this.$element;\n el.classes.add(animationName);\n\n waitForVisualEnd(el).then(() => {\n el.classes.remove(animationName);\n });\n\n return this;\n};","import {\n bindAttributeWithObservable,\n bindBooleanAttribute\n} from \"../AttributesWrapper\";\nimport ObservableItem from \"../../data/ObservableItem\";\nimport TemplateBinding from \"../TemplateBinding\";\nimport {BOOLEAN_ATTRIBUTES} from \"../constants\";\nimport ObservableChecker from \"../../data/ObservableChecker\";\n\n\nObservableItem.prototype.handleNdAttribute = function(element, attributeName) {\n if(BOOLEAN_ATTRIBUTES.has(attributeName)) {\n bindBooleanAttribute(element, attributeName, this);\n return;\n }\n\n bindAttributeWithObservable(element, attributeName, this);\n};\n\nObservableChecker.prototype.handleNdAttribute = ObservableItem.prototype.handleNdAttribute;\n\n TemplateBinding.prototype.handleNdAttribute = function(element, attributeName) {\n this.$hydrate(element, attributeName);\n};\n","import Anchor from \"../elements/anchor/anchor\";\nimport {ElementCreator} from \"./ElementCreator\";\nimport {normalizeComponentArgs} from \"../utils/args-types\";\nimport './NdPrototype';\n\nimport './NdPrototype';\nimport '../../core/utils/prototypes.js';\nimport '../wrappers/prototypes/nd-element-extensions';\nimport '../wrappers/prototypes/bind-class-extensions';\nimport '../wrappers/prototypes/nd-element.transition.extensions';\nimport '../wrappers/prototypes/attributes-extensions';\n\n/**\n *\n * @param {*} value\n * @returns {Text}\n */\nexport const createTextNode = (value) => {\n if(value) {\n return value.toNdElement();\n }\n return ElementCreator.createTextNode();\n};\n\n\nexport const createHtmlElement = (element, _attributes, _children = null) => {\n let { props: attributes, children = null } = normalizeComponentArgs(_attributes, _children);\n\n ElementCreator.processAttributes(element, attributes);\n ElementCreator.processChildren(children, element);\n return element;\n}\n\n/**\n *\n * @param {string} name\n * @param {?Function=} customWrapper\n * @returns {Function}\n */\nexport default function HtmlElementWrapper(name, customWrapper = null) {\n if(name) {\n if(customWrapper) {\n let node = null;\n let createElement = (attr, children) => {\n node = document.createElement(name);\n createElement = (attr, children) => {\n return createHtmlElement(customWrapper(node.cloneNode()), attr, children);\n };\n return createHtmlElement(customWrapper(node.cloneNode()), attr, children);;\n };\n\n return (attr, children) => createElement(attr, children)\n }\n\n let node = null;\n let createElement = (attr, children) => {\n node = document.createElement(name);\n createElement = (attr, children) => {\n return createHtmlElement(node.cloneNode(), attr, children);\n };\n return createHtmlElement(node.cloneNode(), attr, children);\n };\n\n return (attr, children) => createElement(attr, children)\n }\n return (children, name = '') => {\n const anchor = Anchor(name);\n anchor.append(children);\n return anchor;\n };\n};\n\n","import {ElementCreator} from \"../ElementCreator\";\nimport {createTextNode} from \"../HtmlElementWrapper\";\nimport {NDElement} from \"../NDElement\";\n\nexport default function NodeCloner($element) {\n this.$element = $element;\n this.$classes = null;\n this.$styles = null;\n this.$attrs = null;\n this.$ndMethods = null;\n}\n\n\n/**\n * Attaches a template binding to the element by hydrating it with the specified method.\n *\n * @param {string} methodName - Name of the hydration method to call\n * @param {BindingHydrator} bindingHydrator - Template binding with $hydrate method\n * @returns {HTMLElement} The underlying HTML element\n * @example\n * const onClick = $binder.attach((event, data) => console.log(data));\n * element.nd.attach('onClick', onClick);\n */\nNDElement.prototype.attach = function(methodName, bindingHydrator) {\n if(typeof bindingHydrator === 'function') {\n const element = this.$element;\n element.nodeCloner = element.nodeCloner || new NodeCloner(element);\n element.nodeCloner.attach(methodName, bindingHydrator);\n return element;\n }\n bindingHydrator.$hydrate(this.$element, methodName);\n return this.$element;\n};\n\nNodeCloner.prototype.__$isNodeCloner = true;\n\nconst buildProperties = (cache, properties, data) => {\n for(const key in properties) {\n cache[key] = properties[key].apply(null, data);\n }\n return cache;\n};\n\nNodeCloner.prototype.resolve = function() {\n if(this.$content) {\n return;\n }\n const steps = [];\n if(this.$ndMethods) {\n const methods = Object.keys(this.$ndMethods);\n if(methods.length === 1) {\n const methodName = methods[0];\n const callback = this.$ndMethods[methodName];\n steps.push((clonedNode, data) => {\n clonedNode.nd[methodName](callback.bind(clonedNode, ...data));\n });\n } else {\n steps.push((clonedNode, data) => {\n const nd = clonedNode.nd;\n for(const methodName in this.$ndMethods) {\n nd[methodName](this.$ndMethods[methodName].bind(clonedNode, ...data));\n }\n });\n }\n }\n if(this.$classes) {\n const cache = {};\n const keys = Object.keys(this.$classes);\n\n if(keys.length === 1) {\n const key = keys[0];\n const callback = this.$classes[key];\n steps.push((clonedNode, data) => {\n cache[key] = callback.apply(null, data);\n ElementCreator.processClassAttribute(clonedNode, cache);\n });\n } else {\n steps.push((clonedNode, data) => {\n ElementCreator.processClassAttribute(clonedNode, buildProperties(cache, this.$classes, data));\n });\n }\n }\n if(this.$styles) {\n const cache = {};\n const keys = Object.keys(this.$styles);\n\n if(keys.length === 1) {\n const key = keys[0];\n const callback = this.$styles[key];\n steps.push((clonedNode, data) => {\n cache[key] = callback.apply(null, data);\n ElementCreator.processStyleAttribute(clonedNode, cache);\n });\n } else {\n steps.push((clonedNode, data) => {\n ElementCreator.processStyleAttribute(clonedNode, buildProperties(cache, this.$styles, data));\n });\n }\n }\n if(this.$attrs) {\n const cache = {};\n const keys = Object.keys(this.$attrs);\n\n if(keys.length === 1) {\n const key = keys[0];\n const callback = this.$attrs[key];\n steps.push((clonedNode, data) => {\n cache[key] = callback.apply(null, data);\n ElementCreator.processAttributes(clonedNode, cache);\n });\n } else {\n steps.push((clonedNode, data) => {\n ElementCreator.processAttributes(clonedNode, buildProperties(cache, this.$attrs, data));\n });\n }\n }\n\n const stepsCount = steps.length;\n const $element = this.$element;\n\n this.cloneNode = (data) => {\n const clonedNode = $element.cloneNode(false);\n for(let i = 0; i < stepsCount; i++) {\n steps[i](clonedNode, data);\n }\n return clonedNode;\n };\n};\n\nNodeCloner.prototype.cloneNode = function(data) {\n return this.$element.cloneNode(false);\n};\n\nNodeCloner.prototype.attach = function(methodName, callback) {\n this.$ndMethods = this.$ndMethods || {};\n this.$ndMethods[methodName] = callback;\n return this;\n};\n\nNodeCloner.prototype.text = function(value) {\n this.$content = value;\n if(typeof value === 'function') {\n this.cloneNode = (data) => createTextNode(value.apply(null, data));\n return this;\n }\n this.cloneNode = (data) => createTextNode(data[0][value]);\n return this;\n};\n\nNodeCloner.prototype.attr = function(attrName, value) {\n if(attrName === 'class') {\n this.$classes = this.$classes || {};\n this.$classes[value.property] = value.value;\n return this;\n }\n if(attrName === 'style') {\n this.$styles = this.$styles || {};\n this.$styles[value.property] = value.value;\n return this;\n }\n this.$attrs = this.$attrs || {};\n this.$attrs[attrName] = value.value;\n return this;\n};","import { ElementCreator } from \"../ElementCreator\";\nimport NodeCloner from \"./NodeCloner\";\n\nconst pathProcess = (target, path, data) => {\n if(path.HYDRATE_TEXT) {\n const value = path.value;\n ElementCreator.bindTextNode(target, path.isString ? data[0][value] : value.apply(null, data));\n return;\n }\n if(path.ATTACH_METHOD) {\n const bindingData = path.bindingData;\n for(let i = 0, length = bindingData._attachLength; i < length; i++) {\n const method = bindingData.attach[i];\n target.nd[method.methodName](function() {\n method.fn.call(this, ...data, ...arguments);\n });\n }\n }\n if(path.HYDRATE_ATTRIBUTES) {\n path.hydrator(target, path.bindingData, data);\n }\n};\n\nconst buildAttributesCache = (bindDingData) => {\n const cache = { };\n if(bindDingData.attributes) cache.attributes = {};\n if(bindDingData.classes) cache.class = {};\n if(bindDingData.styles) cache.style = {};\n bindDingData._cache = cache;\n};\n\nconst prepareBindingMetadata = (bindDingData) => {\n const attributes = [];\n const classAndStyles = [];\n\n if(bindDingData.attributes) {\n for (const attr in bindDingData.attributes) {\n attributes.push({\n name: attr,\n value: bindDingData.attributes[attr]\n });\n }\n }\n\n if(bindDingData.classes) {\n for (const className in bindDingData.classes) {\n bindDingData._hasClassAttribute = true;\n classAndStyles.push({\n name: 'class',\n key: className,\n value: bindDingData.classes[className]\n });\n }\n }\n\n if(bindDingData.styles) {\n for (const property in bindDingData.styles) {\n bindDingData._hasStyleAttribute = true;\n classAndStyles.push({\n name: 'style',\n key: property,\n value: bindDingData.styles[property]\n });\n }\n }\n\n bindDingData._flatAttributes = attributes;\n bindDingData._flatAttributesLength = attributes.length;\n bindDingData._flatDynamique = classAndStyles;\n bindDingData._flatDynamiqueLength = classAndStyles.length;\n bindDingData._attachLength = bindDingData.attach.length;\n};\n\n\nexport const $hydrateFn = function(value, targetType, element, property) {\n element.nodeCloner = element.nodeCloner || new NodeCloner(element);\n if(targetType === 'value') {\n element.nodeCloner.text(value);\n return;\n }\n if(targetType === 'attach') {\n element.nodeCloner.attach(property, value);\n return;\n }\n element.nodeCloner.attr(targetType, { property, value });\n};\n\nexport const bindAttachMethods = (node, bindDingData, data) => {\n for(let i = 0, length = bindDingData._attachLength; i < length; i++) {\n const method = bindDingData.attach[i];\n node.nd[method.methodName](function() {\n method.fn.call(this, ...data, ...arguments);\n });\n }\n};\n\nexport const optimizeBindingData = (bindDingData) => {\n buildAttributesCache(bindDingData);\n prepareBindingMetadata(bindDingData);\n};\n\n\nconst $applyBindingParents = [];\nexport const hydrateClonedNode = (root, data, paths, pathSize) => {\n const rootPath = paths[pathSize];\n $applyBindingParents[rootPath.id] = root;\n pathProcess(root, rootPath, data);\n\n let target = null, path = null;\n for(let i = 0; i < pathSize; i++) {\n path = paths[i];\n target = $applyBindingParents[path.parentId].childNodes[path.index];\n $applyBindingParents[path.id] = target;\n\n if(path.HYDRATE_TEXT) {\n const value = path.value;\n ElementCreator.bindTextNode(target, path.isString ? data[0][value] : value.apply(null, data));\n continue;\n }\n if(path.ATTACH_METHOD) {\n const bindingData = path.bindingData;\n for(let i = 0, length = bindingData._attachLength; i < length; i++) {\n const method = bindingData.attach[i];\n target.nd[method.methodName](function() {\n method.fn.call(this, ...data, ...arguments);\n });\n }\n }\n if(path.HYDRATE_ATTRIBUTES) {\n path.hydrator(target, path.bindingData, data);\n }\n }\n\n for (let i = 0; i <= pathSize; i++) {\n $applyBindingParents[i] = null;\n }\n};","import TemplateBinding from \"../TemplateBinding\";\nimport { $hydrateFn} from './utils';\nimport NodeCloner from \"./NodeCloner\";\n\nexport function TemplateCloner($fn) {\n let $node = null;\n\n const assignClonerToNode = ($node) => {\n const childNodes = $node.childNodes;\n let containDynamicNode = !!$node.nodeCloner;\n const childNodesLength = childNodes.length;\n for(let i = 0; i < childNodesLength; i++) {\n const child = childNodes[i];\n if(child.nodeCloner) {\n containDynamicNode = true;\n }\n const localContainDynamicNode = assignClonerToNode(child);\n if(localContainDynamicNode) {\n containDynamicNode = true;\n }\n }\n\n if(!containDynamicNode) {\n $node.dynamicCloneNode = $node.cloneNode.bind($node, true);\n } else {\n if($node.nodeCloner) {\n $node.nodeCloner.resolve();\n $node.dynamicCloneNode = (data) => {\n const clonedNode = $node.nodeCloner.cloneNode(data);\n for(let i = 0; i < childNodesLength; i++) {\n clonedNode.appendChild(childNodes[i].dynamicCloneNode(data));\n }\n return clonedNode;\n };\n } else {\n $node.dynamicCloneNode = (data) => {\n const clonedNode = $node.cloneNode();\n for(let i = 0; i < childNodesLength; i++) {\n clonedNode.appendChild(childNodes[i].dynamicCloneNode(data));\n }\n return clonedNode;\n };\n }\n }\n\n return containDynamicNode;\n };\n\n this.clone = (data) => {\n const binder = createTemplateCloner(this);\n $node = $fn(binder);\n if(!$node.nodeCloner) {\n $node.nodeCloner = new NodeCloner($node);\n }\n assignClonerToNode($node);\n this.clone = $node.dynamicCloneNode;\n return $node.dynamicCloneNode(data);\n };\n\n\n const createBinding = (hydrateFunction, targetType) => {\n return new TemplateBinding((element, property) => {\n $hydrateFn(hydrateFunction, targetType, element, property)\n });\n };\n\n this.style = (fn) => {\n return createBinding(fn, 'style');\n };\n this.class = (fn) => {\n return createBinding(fn, 'class');\n };\n this.property = (propertyName) => {\n return this.value(propertyName);\n }\n this.value = (callbackOrProperty) => {\n return createBinding(callbackOrProperty, 'value');\n };\n this.text = this.value;\n this.attr = (fn) => {\n return createBinding(fn, 'attributes');\n };\n this.attach = (fn) => {\n return createBinding(fn, 'attach');\n };\n this.callback = this.attach;\n}\n\n\nconst createTemplateCloner = ($binder) => {\n return new Proxy($binder, {\n get(target, prop) {\n if(prop in target) {\n return target[prop];\n }\n if (typeof prop === 'symbol') return target[prop];\n return target.value(prop);\n }\n });\n}\n\nexport function useCache(fn) {\n let $cache = null;\n\n let wrapper = (args) => {\n $cache = new TemplateCloner(fn);\n\n const node = $cache.clone(args);\n wrapper = $cache.clone;\n return node;\n };\n\n if(fn.length < 2) {\n return (...args) => {\n return wrapper(args);\n };\n }\n return (_, __, ...args) => {\n return wrapper([_, __, ...args]);\n };\n}\n\nexport const template = useCache;","import Anchor from \"../elements/anchor/anchor\";\n\n\nexport function SingletonView($viewCreator) {\n let $cacheNode = null;\n let $components = null;\n\n this.render = (data) => {\n if(!$cacheNode) {\n $cacheNode = $viewCreator(this);\n }\n if(!$components) return $cacheNode;\n\n const updates = data[0];\n if(updates && typeof updates === 'object') {\n for(const key in updates) {\n if($components[key]) {\n $components[key](updates[key]);\n }\n }\n }\n return $cacheNode;\n };\n\n this.createSection = (name, fn) => {\n $components = $components || {};\n const anchor = Anchor('Component ' + name);\n\n $components[name] = function(content) {\n anchor.removeChildren();\n if(!fn) {\n anchor.append(content);\n return;\n }\n anchor.appendChild(fn(content));\n };\n return anchor;\n };\n}\n\n\nexport function useSingleton(fn) {\n let $cache = null;\n\n return function(...args) {\n if(!$cache) {\n $cache = new SingletonView(fn);\n }\n return $cache.render(args);\n };\n}","import Validator from \"./validator\";\n\nexport const cssPropertyAccumulator = function(initialValue = {}) {\n let data = Validator.isString(initialValue) ? initialValue.split(';').filter(Boolean) : initialValue;\n\n return {\n add(key, value) {\n if(Array.isArray(data)) {\n data.push(key+': '+value);\n return;\n }\n if(Validator.isObject(key)) {\n value = key;\n for(const property in value) {\n data[property] = value[property];\n }\n return;\n }\n data[key] = value;\n },\n value() {\n if(Array.isArray(data)) {\n return data.join(';').concat(';');\n }\n return { ...data };\n },\n };\n}\n\nexport const classPropertyAccumulator = function(initialValue = []) {\n let data = Validator.isString(initialValue) ? initialValue.split(\" \").filter(Boolean) : initialValue;\n\n return {\n add(key, value = true) {\n if(Validator.isJson(key)) {\n for(const property in key) {\n if(key[property]) {\n data[property] = key[property];\n }\n }\n return;\n }\n if(value != null || key.__$Observable) {\n if(Array.isArray(data)) {\n data = data.reduce((acc, item) => {\n acc[item] = true;\n return acc;\n }, {});\n }\n if(key.__$Observable) {\n const uniqueId = `obs-${Math.random().toString(36).substr(2, 9)}`\n data[uniqueId] = key;\n }\n else {\n data[key] = value;\n }\n return;\n }\n if(Array.isArray(data)) {\n data.push(key);\n return;\n }\n data[key] = value;\n },\n value() {\n if(Array.isArray(data)) {\n return data.join(' ');\n }\n return { ...data };\n },\n };\n}","\n\nexport const once = (fn) => {\n let result = null;\n return (...args) => {\n if(result != null) {\n return result;\n }\n result = fn(...args);\n return result;\n };\n};\n\nexport const autoOnce = (fn) => {\n let target = null;\n return new Proxy({}, {\n get: (_, key) => {\n if(target) {\n return target[key];\n }\n target = fn();\n return target[key];\n }\n });\n};\n\nexport const memoize = (fn) => {\n const cache = new Map();\n return (...args) => {\n const [key, ...rest] = args;\n const cached = cache.get(key);\n if(cached) {\n return cached;\n }\n const result = fn(...rest);\n cache.set(key, result);\n return result;\n };\n};\n\nexport const autoMemoize = (fn) => {\n const cache = new Map();\n return new Proxy({}, {\n get: (_, key) => {\n const cached = cache.get(key);\n if(cached) {\n return cached;\n }\n\n if(fn.length > 0) {\n return (...args) => {\n const result = fn(...args, key);\n cache.set(key, result);\n return result;\n }\n }\n const result = fn(key);\n cache.set(key, result);\n return result;\n }\n });\n};","import { Observable } from \"./Observable\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\nimport DebugManager from \"../utils/debug-manager\";\nimport {$getFromStorage, $saveToStorage, LocalStorage} from \"../utils/localstorage\";\n\nexport const StoreFactory = function() {\n\n const $stores = new Map();\n const $followersCache = new Map();\n\n /**\n * Internal helper — retrieves a store entry or throws if not found.\n */\n const $getStoreOrThrow = (method, name) => {\n const item = $stores.get(name);\n if (!item) {\n DebugManager.error('Store', `Store.${method}('${name}') : store not found. Did you call Store.create('${name}') first?`);\n throw new NativeDocumentError(\n `Store.${method}('${name}') : store not found.`\n );\n }\n return item;\n };\n\n /**\n * Internal helper — blocks write operations on a read-only observer.\n */\n const $applyReadOnly = (observer, name, context) => {\n const readOnlyError = (method) => () => {\n DebugManager.error('Store', `Store.${context}('${name}') is read-only. '${method}()' is not allowed.`);\n throw new NativeDocumentError(\n `Store.${context}('${name}') is read-only.`\n );\n };\n observer.set = readOnlyError('set');\n observer.toggle = readOnlyError('toggle');\n observer.reset = readOnlyError('reset');\n };\n\n const $createObservable = (value, options = {}) => {\n if(Array.isArray(value)) {\n return Observable.array(value, options);\n }\n if(typeof value === 'object') {\n return Observable.object(value, options);\n }\n return Observable(value, options);\n }\n\n const $api = {\n /**\n * Create a new state and return the observer.\n * Throws if a store with the same name already exists.\n *\n * @param {string} name\n * @param {*} value\n * @returns {ObservableItem}\n */\n create(name, value) {\n if ($stores.has(name)) {\n DebugManager.warn('Store', `Store.create('${name}') : a store with this name already exists. Use Store.get('${name}') to retrieve it.`);\n throw new NativeDocumentError(\n `Store.create('${name}') : a store with this name already exists.`\n );\n }\n const observer = $createObservable(value)\n $stores.set(name, { observer, subscribers: new Set(), resettable: false, composed: false });\n return observer;\n },\n\n /**\n * Create a new resettable state and return the observer.\n * The store can be reset to its initial value via Store.reset(name).\n * Throws if a store with the same name already exists.\n *\n * @param {string} name\n * @param {*} value\n * @returns {ObservableItem}\n */\n createResettable(name, value) {\n if ($stores.has(name)) {\n DebugManager.warn('Store', `Store.createResettable('${name}') : a store with this name already exists.`);\n throw new NativeDocumentError(\n `Store.createResettable('${name}') : a store with this name already exists.`\n );\n }\n const observer = $createObservable(value, { reset: true });\n $stores.set(name, { observer, subscribers: new Set(), resettable: true, composed: false });\n return observer;\n },\n\n /**\n * Create a computed store derived from other stores.\n * The value is automatically recalculated when any dependency changes.\n * This store is read-only — Store.use() and Store.set() will throw.\n * Throws if a store with the same name already exists.\n *\n * @param {string} name\n * @param {() => *} computation - Function that returns the computed value\n * @param {string[]} dependencies - Names of the stores to watch\n * @returns {ObservableItem}\n *\n * @example\n * Store.create('products', [{ id: 1, price: 10 }]);\n * Store.create('cart', [{ productId: 1, quantity: 2 }]);\n *\n * Store.createComposed('total', () => {\n * const products = Store.get('products').val();\n * const cart = Store.get('cart').val();\n * return cart.reduce((sum, item) => {\n * const product = products.find(p => p.id === item.productId);\n * return sum + (product.price * item.quantity);\n * }, 0);\n * }, ['products', 'cart']);\n */\n createComposed(name, computation, dependencies) {\n if ($stores.has(name)) {\n DebugManager.warn('Store', `Store.createComposed('${name}') : a store with this name already exists.`);\n throw new NativeDocumentError(\n `Store.createComposed('${name}') : a store with this name already exists.`\n );\n }\n if (typeof computation !== 'function') {\n throw new NativeDocumentError(\n `Store.createComposed('${name}') : computation must be a function.`\n );\n }\n if (!Array.isArray(dependencies) || dependencies.length === 0) {\n throw new NativeDocumentError(\n `Store.createComposed('${name}') : dependencies must be a non-empty array of store names.`\n );\n }\n\n // Resolve dependency observers\n const depObservers = dependencies.map(depName => {\n if(typeof depName !== 'string') {\n return depName;\n }\n const depItem = $stores.get(depName);\n if (!depItem) {\n DebugManager.error('Store', `Store.createComposed('${name}') : dependency '${depName}' not found. Create it first.`);\n throw new NativeDocumentError(\n `Store.createComposed('${name}') : dependency store '${depName}' not found.`\n );\n }\n return depItem.observer;\n });\n\n // Create computed observable from dependency observers\n const observer = Observable.computed(computation, depObservers);\n\n $stores.set(name, { observer, subscribers: new Set(), resettable: false, composed: true });\n return observer;\n },\n\n /**\n * Returns true if a store with the given name exists.\n *\n * @param {string} name\n * @returns {boolean}\n */\n has(name) {\n return $stores.has(name);\n },\n\n /**\n * Resets a resettable store to its initial value and notifies all subscribers.\n * Throws if the store was not created with createResettable().\n *\n * @param {string} name\n */\n reset(name) {\n const item = $getStoreOrThrow('reset', name);\n if (item.composed) {\n DebugManager.error('Store', `Store.reset('${name}') : composed stores cannot be reset. Their value is derived from dependencies.`);\n throw new NativeDocumentError(\n `Store.reset('${name}') : composed stores cannot be reset.`\n );\n }\n if (!item.resettable) {\n DebugManager.error('Store', `Store.reset('${name}') : this store is not resettable. Use Store.createResettable('${name}', value) instead of Store.create().`);\n throw new NativeDocumentError(\n `Store.reset('${name}') : this store is not resettable. Use Store.createResettable('${name}', value) instead of Store.create().`\n );\n }\n item.observer.reset();\n },\n\n /**\n * Returns a two-way synchronized follower of the store.\n * Writing to the follower propagates the value back to the store and all its subscribers.\n * Throws if called on a composed store — use Store.follow() instead.\n * Call follower.destroy() or follower.dispose() to unsubscribe.\n *\n * @param {string} name\n * @returns {ObservableItem}\n */\n use(name) {\n const item = $getStoreOrThrow('use', name);\n\n if (item.composed) {\n DebugManager.error('Store', `Store.use('${name}') : composed stores are read-only. Use Store.follow('${name}') instead.`);\n throw new NativeDocumentError(\n `Store.use('${name}') : composed stores are read-only. Use Store.follow('${name}') instead.`\n );\n }\n\n const { observer: originalObserver, subscribers } = item;\n const observerFollower = $createObservable(originalObserver.val());\n\n const onStoreChange = value => observerFollower.set(value);\n const onFollowerChange = value => originalObserver.set(value);\n\n originalObserver.subscribe(onStoreChange);\n observerFollower.subscribe(onFollowerChange);\n\n observerFollower.destroy = () => {\n originalObserver.unsubscribe(onStoreChange);\n observerFollower.unsubscribe(onFollowerChange);\n subscribers.delete(observerFollower);\n observerFollower.cleanup();\n };\n observerFollower.dispose = observerFollower.destroy;\n\n subscribers.add(observerFollower);\n return observerFollower;\n },\n\n /**\n * Returns a read-only follower of the store.\n * The follower reflects store changes but cannot write back to the store.\n * Any attempt to call .set(), .toggle() or .reset() will throw.\n * Call follower.destroy() or follower.dispose() to unsubscribe.\n *\n * @param {string} name\n * @returns {ObservableItem}\n */\n follow(name) {\n const { observer: originalObserver, subscribers } = $getStoreOrThrow('follow', name);\n const observerFollower = $createObservable(originalObserver.val());\n\n const onStoreChange = value => observerFollower.set(value);\n originalObserver.subscribe(onStoreChange);\n\n $applyReadOnly(observerFollower, name, 'follow');\n\n observerFollower.destroy = () => {\n originalObserver.unsubscribe(onStoreChange);\n subscribers.delete(observerFollower);\n observerFollower.cleanup();\n };\n observerFollower.dispose = observerFollower.destroy;\n\n subscribers.add(observerFollower);\n return observerFollower;\n },\n\n /**\n * Returns the raw store observer directly (no follower, no cleanup contract).\n * Use this for direct read access when you don't need to unsubscribe.\n * WARNING : mutations on this observer impact all subscribers immediately.\n *\n * @param {string} name\n * @returns {ObservableItem|null}\n */\n get(name) {\n const item = $stores.get(name);\n if (!item) {\n DebugManager.warn('Store', `Store.get('${name}') : store not found.`);\n return null;\n }\n return item.observer;\n },\n\n /**\n * @param {string} name\n * @returns {{ observer: ObservableItem, subscribers: Set } | null}\n */\n getWithSubscribers(name) {\n return $stores.get(name) ?? null;\n },\n\n /**\n * Destroys a store : cleans up the observer, destroys all followers, and removes the entry.\n *\n * @param {string} name\n */\n delete(name) {\n const item = $stores.get(name);\n if (!item) {\n DebugManager.warn('Store', `Store.delete('${name}') : store not found, nothing to delete.`);\n return;\n }\n item.subscribers.forEach(follower => follower.destroy());\n item.subscribers.clear();\n item.observer.cleanup();\n $stores.delete(name);\n },\n /**\n * Creates an isolated store group with its own state namespace.\n * Each group is a fully independent StoreFactory instance —\n * no key conflicts, no shared state with the parent store.\n *\n * @param {string | ((group: ReturnType<typeof StoreFactory>) => void)} name - Group name for debugging, or setup callback if no name is provided\n * @param {((group: ReturnType<typeof StoreFactory>) => void)} [callback] - Setup function receiving the isolated store instance\n * @returns {ReturnType<typeof StoreFactory>}\n *\n * @example\n * // With name (recommended)\n * const EventStore = Store.group('events', (group) => {\n * group.create('catalog', []);\n * group.create('filters', { category: null, date: null });\n * group.createResettable('selected', null);\n * group.createComposed('filtered', () => {\n * const catalog = EventStore.get('catalog').val();\n * const filters = EventStore.get('filters').val();\n * return catalog.filter(event => {\n * if (filters.category && event.category !== filters.category) return false;\n * return true;\n * });\n * }, ['catalog', 'filters']);\n * });\n *\n * // Without name\n * const CartStore = Store.group((group) => {\n * group.create('items', []);\n * });\n *\n * // Usage\n * EventStore.use('catalog'); // two-way follower\n * EventStore.follow('filtered'); // read-only follower\n * EventStore.get('filters'); // raw observable\n *\n * // Cross-group composed\n * const OrderStore = Store.group('orders', (group) => {\n * group.createComposed('summary', () => {\n * const items = CartStore.get('items').val();\n * const events = EventStore.get('catalog').val();\n * return { items, events };\n * }, [CartStore.get('items'), EventStore.get('catalog')]);\n * });\n */\n group(name, callback) {\n if (typeof name === 'function') {\n callback = name;\n name = 'anonymous';\n }\n const store = StoreFactory();\n callback && callback(store);\n return store;\n },\n createPersistent(name, value, localstorage_key) {\n localstorage_key = localstorage_key || name;\n const observer = this.create(name, $getFromStorage(localstorage_key, value));\n const saver = $saveToStorage(value)\n\n observer.subscribe((val) => saver(localstorage_key, val));\n return observer;\n },\n createPersistentResettable(name, value, localstorage_key) {\n localstorage_key = localstorage_key || name;\n const observer = this.createResettable(name, $getFromStorage(localstorage_key, value));\n const saver = $saveToStorage(value)\n observer.subscribe((val) => saver(localstorage_key, val));\n\n const originalReset = observer.reset.bind(observer);\n observer.reset = () => {\n LocalStorage.remove(localstorage_key);\n originalReset();\n };\n\n return observer;\n }\n };\n\n\n return new Proxy($api, {\n get(target, prop) {\n if (typeof prop === 'symbol' || prop.startsWith('$') || prop in target) {\n return target[prop];\n }\n if (target.has(prop)) {\n if ($followersCache.has(prop)) {\n return $followersCache.get(prop);\n }\n const follower = target.follow(prop);\n $followersCache.set(prop, follower);\n return follower;\n }\n return undefined;\n },\n set(target, prop, value) {\n DebugManager.error('Store', `Forbidden: You cannot overwrite the store key '${String(prop)}'. Use .use('${String(prop)}').set(value) instead.`);\n throw new NativeDocumentError(`Store structure is immutable. Use .set() on the observable.`);\n },\n deleteProperty(target, prop) {\n throw new NativeDocumentError(`Store keys cannot be deleted.`);\n }\n });\n};\n\nexport const Store = StoreFactory();\n\nStore.create('locale', navigator.language.split('-')[0] || 'en');","import {Observable} from \"../../data/Observable\";\nimport Validator from \"../../utils/validator\";\nimport Anchor from \"../anchor/anchor\";\nimport DebugManager from \"../../utils/debug-manager\";\nimport {getKey} from \"../../utils/helpers\";\nimport { ElementCreator } from \"../../wrappers/ElementCreator\";\nimport NativeDocumentError from \"../../errors/NativeDocumentError\";\n\nconst SELF_RENDER = (item) => item;\n\n/**\n * Renders a list of items from an observable array or object, automatically updating when data changes.\n * Efficiently manages DOM updates by tracking items with keys.\n *\n * @param {ObservableItem<Array|Object>} data - Observable containing array or object to iterate over\n * @param {((item: *, index: null|ObservableItem) => NdChild)?} callback - Function that renders each item (item, index) => ValidChild\n * @param {(string|Function)?} [key] - Property name or function to generate unique keys for items\n * @param {Object?} [options={}] - Configuration options\n * @param {boolean} [options.shouldKeepItemsInCache=false] - Whether to cache rendered items\n * @returns {AnchorDocumentFragment} Fragment managing the list rendering\n * @example\n * const users = Observable([\n * { id: 1, name: 'John' },\n * { id: 2, name: 'Jane' }\n * ]);\n * ForEach(users, (user) => Div({}, user.name), 'id');\n *\n * // With function key\n * ForEach(items, (item) => Div({}, item), (item) => item.id);\n */\nexport function ForEach(data, callback, key, { shouldKeepItemsInCache = false } = {}) {\n callback = callback || SELF_RENDER;\n const element = Anchor('ForEach');\n const blockEnd = element.endElement();\n const blockStart = element.startElement();\n\n let cache = new Map();\n let lastKeyOrder = null;\n const keyIds = new Set();\n\n const clear = () => {\n element.removeChildren();\n cleanCache();\n };\n\n const cleanCache = (parent) => {\n if(shouldKeepItemsInCache) {\n return;\n }\n for(const [keyId, cacheItem] of cache.entries()) {\n if(keyIds.has(keyId)) {\n continue;\n }\n const child = cacheItem.child?.deref();\n if(parent && child) {\n child.remove();\n }\n cacheItem.indexObserver?.cleanup();\n cacheItem.child = null;\n cacheItem.indexObserver = null;\n cache.delete(cacheItem.keyId);\n lastKeyOrder && lastKeyOrder.delete(cacheItem.keyId);\n }\n };\n\n const handleContentItem = (item, indexKey) => {\n const keyId = getKey(item, indexKey, key);\n\n if(cache.has(keyId)) {\n const cacheItem = cache.get(keyId);\n cacheItem.indexObserver?.set(indexKey);\n cacheItem.isNew = false;\n if(cacheItem.child?.deref()) {\n return keyId;\n }\n cache.delete(keyId);\n }\n\n try {\n const indexObserver = callback.length >= 2 ? Observable(indexKey) : null;\n let child = ElementCreator.getChild(callback(item, indexObserver));\n if(!child) {\n throw new NativeDocumentError(\"ForEach child can't be null or undefined!\");\n }\n cache.set(keyId, { keyId, isNew: true, child: new WeakRef(child), indexObserver});\n } catch (e) {\n DebugManager.error('ForEach', `Error creating element for key ${keyId}` , e);\n throw e;\n }\n return keyId;\n };\n\n const batchDOMUpdates = (parent) => {\n const fragment = document.createDocumentFragment();\n for(const itemKey of keyIds) {\n const cacheItem = cache.get(itemKey);\n if(!cacheItem) {\n continue;\n }\n const child = cacheItem.child?.deref();\n child && fragment.appendChild(child);\n }\n parent.insertBefore(fragment, blockEnd);\n }\n\n const diffingDOMUpdates = (parent) => {\n const operations = [];\n let fragment = document.createDocumentFragment();\n const newKeys = Array.from(keyIds);\n const oldKeys = Array.from(lastKeyOrder);\n\n let currentPosition = blockStart;\n\n for(const index in newKeys) {\n const itemKey = newKeys[index];\n const cacheItem = cache.get(itemKey);\n if(!cacheItem) {\n continue;\n }\n const child = cacheItem.child.deref();\n if(!child) {\n continue;\n }\n fragment.appendChild(child);\n }\n element.replaceContent(fragment);\n };\n\n const buildContent = () => {\n const parent = blockEnd.parentNode;\n if(!parent) {\n return;\n }\n\n const items = (Validator.isObservable(data)) ? data.val() : data;\n keyIds.clear();\n if(Array.isArray(items)) {\n for(let i = 0, length = items.length; i < length; i++) {\n const keyId = handleContentItem(items[i], i);\n keyIds.add(keyId);\n }\n } else {\n for(const indexKey in items) {\n const keyId = handleContentItem(items[indexKey], indexKey);\n keyIds.add(keyId);\n }\n }\n\n if(keyIds.size === 0) {\n clear();\n lastKeyOrder?.clear();\n return;\n }\n\n cleanCache(parent);\n if(!lastKeyOrder || lastKeyOrder.size === 0) {\n batchDOMUpdates(parent);\n } else {\n diffingDOMUpdates(parent);\n }\n lastKeyOrder?.clear();\n lastKeyOrder = new Set([...keyIds]);\n };\n\n buildContent();\n if(Validator.isObservable(data)) {\n data.subscribe(buildContent)\n }\n return element;\n}\n","import Anchor from \"../anchor/anchor\";\nimport { ElementCreator } from \"../../wrappers/ElementCreator\";\nimport NativeDocumentError from \"../../errors/NativeDocumentError\";\n\n\nconst CREATE_AND_CACHE_ACTIONS = new Set(['clear', 'push', 'unshift', 'replace']);\n\nconst SELF_RENDER = (item) => item;\n\n/**\n * Renders items from an ObservableArray with optimized array-specific updates.\n * Provides index observables and handles array mutations efficiently.\n *\n * @param {ObservableArray} data - ObservableArray to iterate over\n * @param {((item: *, index: null|ObservableItem) => NdChild)?} callback - Function that renders each item (item, indexObservable) => ValidChild\n * @param {Object?} [configs={}] - Configuration options\n * @param {boolean} [configs.shouldKeepItemsInCache] - Whether to cache rendered items\n * @param {boolean} [configs.isParentUniqueChild] - When it's the only child of the parent\n * @returns {AnchorDocumentFragment} Fragment managing the list rendering\n * @example\n * const items = Observable.array([1, 2, 3]);\n * ForEachArray(items, (item, index) =>\n * Div({}, `Item ${item} at index ${index.val()}`)\n * );\n *\n * items.push(4); // Automatically updates DOM\n */\nexport function ForEachArray(data, callback, configs = {}) {\n callback = callback || SELF_RENDER;\n const element = Anchor('ForEach Array', configs.isParentUniqueChild);\n const blockEnd = element.endElement();\n\n let cache = new Map();\n let lastNumberOfItems = 0;\n const isIndexRequired = callback.length >= 2;\n\n const clear = (items) => {\n element.removeChildren();\n cleanCache(items);\n lastNumberOfItems = 0;\n };\n\n const getItemChild = (item) => {\n return cache.get(item)?.child;\n };\n\n const removeCacheItem = (item, removeChild = true) => {\n const cacheItem = cache.get(item);\n if(!cacheItem) {\n return;\n }\n if(removeChild) {\n const child = cacheItem.child;\n child?.remove();\n cache.delete(item);\n }\n cacheItem.indexObserver?.cleanup();\n };\n\n const createAndCache = (item) => {\n const child = ElementCreator.getChild(callback(item, null));\n if(process.env.NODE_ENV === 'development') {\n if(!child) {\n throw new NativeDocumentError(\"ForEachArray child can't be null or undefined!\");\n }\n }\n cache.set(item, { child, indexObserver: null });\n return child;\n };\n\n let createWithIndexAndCache = (item, indexKey) => {\n const indexObserver = data.transform((items) => items.indexOf(item));\n const child = ElementCreator.getChild(callback(item, indexObserver));\n if(process.env.NODE_ENV === 'development') {\n if(!child) {\n throw new NativeDocumentError(\"ForEachArray child can't be null or undefined!\");\n }\n }\n cache.set(item, { child, indexObserver });\n return child;\n };\n if(!data.__$Observable) {\n createWithIndexAndCache = (item, indexKey) => {\n const child = ElementCreator.getChild(callback(item, indexKey));\n if(process.env.NODE_ENV === 'development') {\n if(!child) {\n throw new NativeDocumentError(\"ForEachArray child can't be null or undefined!\");\n }\n }\n cache.set(item, { child, indexObserver: null });\n return child;\n };\n }\n\n const getOrCreate = (item, indexKey) => {\n const cacheItem = cache.get(item);\n if(cacheItem) {\n cacheItem.indexObserver?.set(indexKey);\n return cacheItem.child;\n }\n return createAndCache(item, indexKey);\n };\n\n let buildItem = createAndCache;\n const selectBuildStrategy = (action = null) => {\n if(CREATE_AND_CACHE_ACTIONS.has(action)) {\n buildItem = isIndexRequired ? createWithIndexAndCache : createAndCache;\n return;\n }\n buildItem = cache.size ? getOrCreate : (isIndexRequired ? createWithIndexAndCache : createAndCache);\n };\n\n\n let cleanCache;\n\n if(!isIndexRequired) {\n cleanCache = cache.clear.bind(cache);\n }\n else if(configs.shouldKeepItemsInCache) {\n cleanCache = () => {};\n } else {\n cleanCache = (items) => {\n for (const [itemAsKey, _] of cache.entries()) {\n if(items && items.includes(itemAsKey)) {\n continue;\n }\n removeCacheItem(itemAsKey, false);\n }\n };\n }\n\n const removeByItem = (item, fragment) => {\n const cacheItem = cache.get(item);\n if(!cacheItem) {\n return null;\n }\n const child = cacheItem.child;\n if(!child) {\n return null;\n }\n\n if(fragment) {\n fragment.appendChild(child);\n return;\n }\n child.remove();\n };\n\n let set = null;\n if(Array.isArray(data)) {\n set = () => {\n clear(data);\n element.appendChildRaw(Actions.toFragment(data));\n };\n }\n else {\n set = () => {\n const items = data.val();\n clear(items);\n element.appendChildRaw(Actions.toFragment(items));\n };\n }\n\n const Actions = {\n toFragment: (items) =>{\n const fragment = document.createDocumentFragment();\n for(let i = 0, length = items.length; i < length; i++) {\n fragment.appendChild(buildItem(items[i], lastNumberOfItems));\n lastNumberOfItems++;\n }\n return fragment;\n },\n add: (items) => {\n element.appendChildRaw(Actions.toFragment(items));\n },\n replace: (items) => {\n clear(items);\n element.appendChildRaw(Actions.toFragment(items));\n },\n set,\n reOrder: (items) => {\n let child = null;\n const fragment = document.createDocumentFragment();\n for(const item of items) {\n child = getItemChild(item);\n if(child) {\n fragment.appendChild(child);\n }\n }\n child = null;\n element.appendChildRaw(fragment);\n },\n removeOne: (element, index) => {\n removeCacheItem(element, true);\n },\n clear,\n populate: ([target, iteration, callback]) => {\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < iteration; i++) {\n const data = callback(i);\n target.push(data);\n fragment.append(buildItem(data, i));\n lastNumberOfItems++;\n }\n element.appendChildRaw(fragment);\n fragment.replaceChildren();\n },\n unshift: (values) => {\n element.insertAtStartRaw(Actions.toFragment(values));\n },\n splice: (args, deleted) => {\n const [start, deleteCount, ...values] = args;\n let elementBeforeFirst = null;\n const garbageFragment = document.createDocumentFragment();\n\n if(deleted.length > 0) {\n let firstItem = deleted[0];\n if(deleted.length === 1) {\n removeByItem(firstItem, garbageFragment);\n } else if(deleted.length > 1) {\n const firstChildRemoved = getItemChild(deleted[0]);\n elementBeforeFirst = firstChildRemoved?.previousSibling;\n\n for(let i = 0; i < deleted.length; i++) {\n removeByItem(deleted[i], garbageFragment);\n }\n }\n } else {\n const indexBefore = (start - 1 >= 0) ? start - 1 : start;\n const itemAtStart = data.at(indexBefore);\n elementBeforeFirst = getItemChild(itemAtStart) || blockEnd.previousSibling;\n }\n garbageFragment.replaceChildren();\n\n if(values && values.length && elementBeforeFirst) {\n element.insertBeforeRaw(Actions.toFragment(values), elementBeforeFirst.nextSibling);\n }\n\n },\n reverse: (_, reversed) => {\n Actions.reOrder(reversed);\n },\n sort: (_, sorted) => {\n Actions.reOrder(sorted);\n },\n remove: (_, deleted)=> {\n Actions.removeOne(deleted);\n },\n pop: (_, deleted) => {\n Actions.removeOne(deleted);\n },\n shift: (_, deleted) => {\n Actions.removeOne(deleted);\n },\n swap: (args, elements) => {\n const parent = element.getParent();\n\n let childA = getItemChild(elements[0]);\n let childB = getItemChild(elements[1]);\n if(!childA || !childB) {\n return;\n }\n\n const childBNext = childB.nextSibling;\n parent.insertBefore(childB, childA);\n parent.insertBefore(childA, childBNext);\n childA = null;\n childB = null;\n }\n };\n Actions.merge = Actions.add;\n Actions.push = Actions.add;\n\n const buildContent = (items, _, operations = {}) => {\n selectBuildStrategy(operations.action);\n\n if(Actions[operations.action]) {\n Actions[operations.action](operations.args, operations.result);\n }\n };\n\n if(Array.isArray(data)) {\n buildContent(data, null, { action: 'set' });\n return element;\n }\n\n if(data.val().length) {\n buildContent(data.val(), null, { action: 'set' });\n }\n data.subscribe(buildContent);\n return element;\n}","import { Observable } from \"../../data/Observable\";\nimport Validator from \"../../utils/validator\";\nimport DebugManager from \"../../utils/debug-manager.js\";\nimport Anchor from \"../anchor/anchor\";\nimport {ElementCreator} from \"../../wrappers/ElementCreator\";\n\n/**\n * Conditionally shows an element based on an observable condition.\n * The element is mounted/unmounted from the DOM as the condition changes.\n *\n * @param {ObservableItem<boolean>|ObservableChecker<boolean>|ObservableWhen} condition - Observable condition to watch\n * @param {NdChild|(() => NdChild)} child - Element or content to show/hide\n * @param {Object} [options={}] - Configuration options\n * @param {string|null} [options.comment=null] - Comment for debugging\n * @param {boolean} [options.shouldKeepInCache=true] - Whether to cache the element when hidden\n * @returns {AnchorDocumentFragment} Anchor fragment managing the conditional content\n * @example\n * const isVisible = Observable(false);\n * ShowIf(isVisible, Div({}, 'Hello World'));\n */\nexport const ShowIf = function(condition, child, { comment = null, shouldKeepInCache = true} = {}) {\n if(!Validator.isObservable(condition)) {\n if(typeof condition === \"boolean\") {\n return condition ? ElementCreator.getChild(child) : null;\n }\n\n return DebugManager.warn('ShowIf', \"ShowIf : condition must be an Observable or boolean / \"+comment, condition);\n }\n const element = Anchor('Show if : '+(comment || ''));\n\n let childElement = null;\n const getChildElement = () => {\n if(childElement && shouldKeepInCache) {\n return childElement;\n }\n childElement = ElementCreator.getChild(child);\n if(Validator.isFragment(childElement)) {\n childElement = Array.from(childElement.childNodes);\n }\n return childElement;\n };\n\n const currentValue = condition.val();\n\n if(currentValue) {\n element.appendChild(getChildElement());\n }\n\n condition.subscribe((value) => {\n if(!!value) {\n element.appendChild(getChildElement());\n return;\n }\n element.remove();\n });\n\n return element;\n}\n\n/**\n * Conditionally hides an element when the observable condition is true.\n * Inverse of ShowIf - element is shown when condition is false.\n *\n * @param {ObservableItem<boolean>|ObservableChecker<boolean>} condition - Observable condition to watch\n * @param {NdChild|(() => NdChild)} child - Element or content to show/hide\n * @param {Object} [configs] - Configuration options\n * @param {string|null} [configs.comment] - Comment for debugging\n * @param {boolean} [configs.shouldKeepInCache] - Whether to cache element when hidden\n * @returns {AnchorDocumentFragment} Anchor fragment managing the conditional content\n * @example\n * const hasError = Observable(false);\n * HideIf(hasError, Div({}, 'Content'));\n */\nexport const HideIf = function(condition, child, configs) {\n const hideCondition = Observable(!condition.val());\n condition.subscribe(value => hideCondition.set(!value));\n\n return ShowIf(hideCondition, child, configs);\n}\n\n/**\n * Conditionally hides an element when the observable condition is false.\n * Same as ShowIf - element is shown when condition is true.\n *\n * @param {ObservableItem<boolean>|ObservableChecker<boolean>|ObservableWhen} condition - Observable condition to watch\n * @param {NdChild|(() => NdChild)} child - Element or content to show/hide\n * @param {Object} [configs] - Configuration options\n * @param {string|null} [configs.comment] - Comment for debugging\n * @param {boolean} [configs.shouldKeepInCache] - Whether to cache element when hidden\n * @returns {AnchorDocumentFragment} Anchor fragment managing the conditional content\n */\nexport const HideIfNot = function(condition, child, configs) {\n return ShowIf(condition, child, configs);\n}","import Validator from \"../../utils/validator.js\";\nimport NativeDocumentError from \"../../errors/NativeDocumentError.js\";\nimport {ShowIf} from \"./show-if.js\";\n\n/**\n * Shows content when an observable equals a specific value.\n * Can be called with 2 or 3 arguments.\n *\n * @overload\n * @param {ObservableWhen} observerWhenResult - Result from observable.when(value)\n * @param {NdChild|(() => NdChild)} view - Content to show when condition matches\n * @returns {AnchorDocumentFragment}\n *\n * @overload\n * @param {ObservableItem} observer - Observable to watch\n * @param {*} target - Value to match\n * @param {NdChild|(() => NdChild)} view - Content to show when observable equals target\n * @returns {AnchorDocumentFragment}\n *\n * @example\n * // 2 arguments\n * const status = Observable('idle');\n * ShowWhen(status.when('loading'), LoadingSpinner());\n *\n * // 3 arguments\n * ShowWhen(status, 'loading', LoadingSpinner());\n */\nexport const ShowWhen = function() {\n if(arguments.length === 2) {\n const [observer, target] = arguments;\n if(!Validator.isObservableWhenResult(observer)) {\n throw new NativeDocumentError('showWhen observer must be an ObservableWhenResult', {\n data: observer,\n 'help': 'Use observer.when(target) to create an ObservableWhenResult'\n });\n }\n return ShowIf(observer, target);\n }\n if(arguments.length === 3) {\n const [observer, target, view] = arguments;\n if(!Validator.isObservable(observer)) {\n throw new NativeDocumentError('showWhen observer must be an Observable', {\n data: observer,\n });\n }\n return ShowIf(observer.when(target), view);\n }\n throw new NativeDocumentError('showWhen must have 2 or 3 arguments', {\n data: [\n 'showWhen(observer, target, view)',\n 'showWhen(observerWhenResult, view)',\n ]\n });\n};","import NativeDocumentError from \"../../errors/NativeDocumentError\";\nimport Validator from \"../../utils/validator\";\nimport Anchor from \"../anchor/anchor\";\nimport {ElementCreator} from \"../../wrappers/ElementCreator\";\n\n\n\n/**\n * Displays different content based on the current value of an observable.\n * Like a switch statement for UI - shows the content corresponding to current value.\n *\n * @param {ObservableItem|ObservableChecker} $condition - Observable to watch\n * @param {Object<string|number, NdChild|(() => NdChild)>} values - Map of values to their corresponding content\n * @param {boolean} [shouldKeepInCache=true] - Whether to cache rendered views\n * @returns {AnchorDocumentFragment & {add: Function, remove: Function}} Fragment with dynamic methods\n * @example\n * const status = Observable('idle');\n * const view = Match(status, {\n * idle: Div({}, 'Ready'),\n * loading: Div({}, 'Loading...'),\n * error: Div({}, 'Error occurred')\n * });\n *\n * // Dynamic addition\n * view.add('success', Div({}, 'Success!'));\n * view.remove('idle');\n */\nexport const Match = function($condition, values, shouldKeepInCache = true) {\n\n if(!Validator.isObservable($condition)) {\n throw new NativeDocumentError(\"Toggle : condition must be an Observable\");\n }\n\n const anchor = Anchor('Match');\n const cache = new Map();\n\n const getItem = function(key) {\n if(shouldKeepInCache && cache.has(key)) {\n return cache.get(key);\n }\n let item = values[key];\n if(!item) {\n return null;\n }\n item = ElementCreator.getChild(item);\n if(Validator.isFragment(item)) {\n item = Array.from(item.children);\n }\n shouldKeepInCache && cache.set(key, item);\n return item;\n }\n\n const defaultValue = $condition.val();\n const defaultContent = getItem(defaultValue);\n if(defaultContent) {\n anchor.appendChild(defaultContent);\n }\n\n $condition.subscribe(value => {\n const content = getItem(value);\n anchor.remove();\n if(content) {\n anchor.appendChild(content);\n }\n });\n\n return anchor.nd.with({\n add(key, view, shouldFocusOn = false) {\n values[key] = view;\n if(shouldFocusOn) {\n $condition.set(key);\n }\n },\n remove(key) {\n shouldKeepInCache && cache.delete(key);\n $condition.set([...cache.keys()].at(-1) ?? '');\n delete values[key];\n }\n });\n}\n\n\n/**\n * Displays one of two views based on a boolean observable condition.\n * Simplified version of Match for true/false cases.\n *\n * @param {ObservableItem<boolean>|ObservableChecker<boolean>} $condition - Boolean observable to watch\n * @param {ValidChild} onTrue - Content to show when condition is true\n * @param {ValidChild} onFalse - Content to show when condition is false\n * @returns {AnchorDocumentFragment} Fragment managing the conditional content\n * @example\n * const isLoggedIn = Observable(false);\n * Switch(isLoggedIn,\n * Div({}, 'Welcome back!'),\n * Div({}, 'Please login')\n * );\n */\nexport const Switch = function ($condition, onTrue, onFalse) {\n if(!Validator.isObservable($condition)) {\n throw new NativeDocumentError(\"Toggle : condition must be an Observable\");\n }\n\n return Match($condition.toBoolean(), {\n true: onTrue,\n false: onFalse,\n });\n}\n\n/**\n * Provides a fluent API for conditional rendering with show/otherwise pattern.\n *\n * @param {ObservableItem<boolean>|ObservableChecker<boolean>} $condition - Boolean observable to watch\n * @returns {{show: Function, otherwise: Function}} Object with fluent methods\n * @example\n * const isLoading = Observable(false);\n * When(isLoading)\n * .show(LoadingSpinner())\n * .otherwise(Content());\n */\nexport const When = function($condition) {\n if(!Validator.isObservable($condition)) {\n throw new NativeDocumentError(\"When : condition must be an Observable\");\n }\n\n let $onTrue = null;\n let $onFalse = null;\n\n return {\n show(onTrue) {\n $onTrue = onTrue;\n return this;\n },\n otherwise(onFalse) {\n $onFalse = onFalse;\n return Switch($condition, $onTrue, $onFalse);\n },\n toNdElement() {\n return Switch($condition, $onTrue, $onFalse);\n }\n }\n}","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\n/**\n * Creates a `<div>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLDivElement}\n */\nexport const Div = HtmlElementWrapper('div');\n\n/**\n * Creates a `<span>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLSpanElement}\n */\nexport const Span = HtmlElementWrapper('span');\n\n/**\n * Creates a `<label>` element.\n * @type {function(LabelAttributes=, NdChild|NdChild[]=): HTMLLabelElement}\n */\nexport const Label = HtmlElementWrapper('label');\n\n/**\n * Creates a `<p>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLParagraphElement}\n */\nexport const P = HtmlElementWrapper('p');\n\n/**\n * Alias for {@link P}.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLParagraphElement}\n */\nexport const Paragraph = P;\n\n/**\n * Creates a `<strong>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Strong = HtmlElementWrapper('strong');\n\n/**\n * Creates a `<h1>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLHeadingElement}\n */\nexport const H1 = HtmlElementWrapper('h1');\n\n/**\n * Creates a `<h2>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLHeadingElement}\n */\nexport const H2 = HtmlElementWrapper('h2');\n\n/**\n * Creates a `<h3>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLHeadingElement}\n */\nexport const H3 = HtmlElementWrapper('h3');\n\n/**\n * Creates a `<h4>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLHeadingElement}\n */\nexport const H4 = HtmlElementWrapper('h4');\n\n/**\n * Creates a `<h5>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLHeadingElement}\n */\nexport const H5 = HtmlElementWrapper('h5');\n\n/**\n * Creates a `<h6>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLHeadingElement}\n */\nexport const H6 = HtmlElementWrapper('h6');\n\n/**\n * Creates a `<br>` element.\n * @type {function(GlobalAttributes=): HTMLBRElement}\n */\nexport const Br = HtmlElementWrapper('br');\n\n/**\n * Creates an `<a>` element.\n * @type {function(AnchorAttributes=, NdChild|NdChild[]=): HTMLAnchorElement}\n */\nexport const Link = HtmlElementWrapper('a');\n\n/**\n * Creates a `<pre>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLPreElement}\n */\nexport const Pre = HtmlElementWrapper('pre');\n\n/**\n * Creates a `<code>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Code = HtmlElementWrapper('code');\n\n/**\n * Creates a `<blockquote>` element.\n * @type {function(GlobalAttributes & { cite?: string }=, NdChild|NdChild[]=): HTMLQuoteElement}\n */\nexport const Blockquote = HtmlElementWrapper('blockquote');\n\n/**\n * Creates an `<hr>` element.\n * @type {function(GlobalAttributes=): HTMLHRElement}\n */\nexport const Hr = HtmlElementWrapper('hr');\n\n/**\n * Creates an `<em>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Em = HtmlElementWrapper('em');\n\n/**\n * Creates a `<small>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Small = HtmlElementWrapper('small');\n\n/**\n * Creates a `<mark>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Mark = HtmlElementWrapper('mark');\n\n/**\n * Creates a `<del>` element.\n * @type {function(ModAttributes=, NdChild|NdChild[]=): HTMLModElement}\n */\nexport const Del = HtmlElementWrapper('del');\n\n/**\n * Creates an `<ins>` element.\n * @type {function(ModAttributes=, NdChild|NdChild[]=): HTMLModElement}\n */\nexport const Ins = HtmlElementWrapper('ins');\n\n/**\n * Creates a `<sub>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Sub = HtmlElementWrapper('sub');\n\n/**\n * Creates a `<sup>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Sup = HtmlElementWrapper('sup');\n\n/**\n * Creates an `<abbr>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Abbr = HtmlElementWrapper('abbr');\n\n/**\n * Creates a `<cite>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Cite = HtmlElementWrapper('cite');\n\n/**\n * Creates a `<q>` element.\n * @type {function(GlobalAttributes & { cite?: string }=, NdChild|NdChild[]=): HTMLQuoteElement}\n */\nexport const Quote = HtmlElementWrapper('q');\n","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\n/**\n * Creates a `<dl>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLDListElement}\n */\nexport const Dl = HtmlElementWrapper('dl');\n\n/**\n * Creates a `<dt>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Dt = HtmlElementWrapper('dt');\n\n/**\n * Creates a `<dd>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Dd = HtmlElementWrapper('dd');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\n\n/**\n * Creates a `<form>` element.\n * Extended with fluent methods: `.submit()`, `.post()`, `.get()`, `.multipartFormData()`.\n * @type {function(FormAttributes=, NdChild|NdChild[]=): HTMLFormElement & {\n * submit: (actionOrFn: string | ((e: SubmitEvent) => void)) => HTMLFormElement,\n * post: (action: string) => HTMLFormElement,\n * get: (action: string) => HTMLFormElement,\n * multipartFormData: () => HTMLFormElement,\n * }}\n */\nexport const Form = HtmlElementWrapper('form', (el) => {\n\n el.submit = function(action) {\n if(typeof action === 'function') {\n el.onSubmit((e) => {\n e.preventDefault();\n action(e);\n });\n return el;\n }\n this.setAttribute('action', action);\n return el;\n };\n el.multipartFormData = function() {\n this.setAttribute('enctype', 'multipart/form-data');\n return el;\n }\n el.post = function(action) {\n this.setAttribute('method', 'post');\n this.setAttribute('action', action);\n return el;\n };\n el.get = function(action) {\n this.setAttribute('method', 'get');\n this.setAttribute('action', action);\n };\n return el;\n});\n\n/**\n * Creates an `<input>` element.\n * @type {function(InputAttributes=): HTMLInputElement}\n */\nexport const Input = HtmlElementWrapper('input');\n\n/**\n * Creates a `<textarea>` element.\n * @type {function(TextAreaAttributes=, NdChild|NdChild[]=): HTMLTextAreaElement}\n */\nexport const TextArea = HtmlElementWrapper('textarea');\n\n/**\n * Alias for {@link TextArea}.\n * @type {function(TextAreaAttributes=, NdChild|NdChild[]=): HTMLTextAreaElement}\n */\nexport const TextInput = TextArea;\n\n/**\n * Creates a `<select>` element.\n * @type {function(SelectAttributes=, NdChild|NdChild[]=): HTMLSelectElement}\n */\nexport const Select = HtmlElementWrapper('select');\n\n/**\n * Creates a `<fieldset>` element.\n * @type {function(GlobalAttributes & { disabled?: Observable<boolean>|boolean }=, NdChild|NdChild[]=): HTMLFieldSetElement}\n */\nexport const FieldSet = HtmlElementWrapper('fieldset');\n\n/**\n * Creates an `<option>` element.\n * @type {function(OptionAttributes=, NdChild|NdChild[]=): HTMLOptionElement}\n */\nexport const Option = HtmlElementWrapper('option');\n\n/**\n * Creates a `<legend>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLLegendElement}\n */\nexport const Legend = HtmlElementWrapper('legend');\n\n/**\n * Creates a `<datalist>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLDataListElement}\n */\nexport const Datalist = HtmlElementWrapper('datalist');\n\n/**\n * Creates an `<output>` element.\n * @type {function(OutputAttributes=, NdChild|NdChild[]=): HTMLOutputElement}\n */\nexport const Output = HtmlElementWrapper('output');\n\n/**\n * Creates a `<progress>` element.\n * @type {function(ProgressAttributes=, NdChild|NdChild[]=): HTMLProgressElement}\n */\nexport const Progress = HtmlElementWrapper('progress');\n\n/**\n * Creates a `<meter>` element.\n * @type {function(MeterAttributes=, NdChild|NdChild[]=): HTMLMeterElement}\n */\nexport const Meter = HtmlElementWrapper('meter');\n\n/**\n * Creates an `<input readonly>` element.\n * @param {Omit<InputAttributes, 'type'|'readonly'|'readOnly'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const ReadonlyInput = (attributes) => Input({ readonly: true, ...attributes });\n\n/**\n * Creates an `<input type=\"hidden\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const HiddenInput = (attributes) => Input({ type: 'hidden', ...attributes });\n\n/**\n * Creates an `<input type=\"file\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const FileInput = (attributes) => Input({ type: 'file', ...attributes });\n\n/**\n * Creates an `<input type=\"password\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const PasswordInput = (attributes) => Input({ type: 'password', ...attributes });\n\n/**\n * Creates an `<input type=\"checkbox\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const Checkbox = (attributes) => Input({ type: 'checkbox', ...attributes });\n\n/**\n * Creates an `<input type=\"radio\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const Radio = (attributes) => Input({ type: 'radio', ...attributes });\n\n/**\n * Creates an `<input type=\"range\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const RangeInput = (attributes) => Input({ type: 'range', ...attributes });\n\n/**\n * Creates an `<input type=\"color\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const ColorInput = (attributes) => Input({ type: 'color', ...attributes });\n\n/**\n * Creates an `<input type=\"date\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const DateInput = (attributes) => Input({ type: 'date', ...attributes });\n\n/**\n * Creates an `<input type=\"time\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const TimeInput = (attributes) => Input({ type: 'time', ...attributes });\n\n/**\n * Creates an `<input type=\"datetime-local\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const DateTimeInput = (attributes) => Input({ type: 'datetime-local', ...attributes });\n\n/**\n * Creates an `<input type=\"week\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const WeekInput = (attributes) => Input({ type: 'week', ...attributes });\n\n/**\n * Creates an `<input type=\"month\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const MonthInput = (attributes) => Input({ type: 'month', ...attributes });\n\n/**\n * Creates an `<input type=\"search\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const SearchInput = (attributes) => Input({ type: 'search', ...attributes });\n\n/**\n * Creates an `<input type=\"tel\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const TelInput = (attributes) => Input({ type: 'tel', ...attributes });\n\n/**\n * Creates an `<input type=\"url\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const UrlInput = (attributes) => Input({ type: 'url', ...attributes });\n\n/**\n * Creates an `<input type=\"email\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const EmailInput = (attributes) => Input({ type: 'email', ...attributes });\n\n/**\n * Creates an `<input type=\"number\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const NumberInput = (attributes) => Input({ type: 'number', ...attributes });\n\n/**\n * Creates a `<button>` element.\n * @type {function(ButtonAttributes=, NdChild|NdChild[]=): HTMLButtonElement}\n */\nexport const Button = HtmlElementWrapper('button');\n\n/**\n * Creates a `<button type=\"button\">` element.\n * @param {NdChild|NdChild[]} [child]\n * @param {Omit<ButtonAttributes, 'type'>} [attributes]\n * @returns {HTMLButtonElement}\n */\nexport const SimpleButton = (child, attributes) => Button(child, { type: 'button', ...attributes });\n\n/**\n * Creates a `<button type=\"submit\">` element.\n * @param {NdChild|NdChild[]} [child]\n * @param {Omit<ButtonAttributes, 'type'>} [attributes]\n * @returns {HTMLButtonElement}\n */\nexport const SubmitButton = (child, attributes) => Button(child, { type: 'submit', ...attributes });","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\n/**\n * Creates a `<main>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Main = HtmlElementWrapper('main');\n\n/**\n * Creates a `<section>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Section = HtmlElementWrapper('section');\n\n/**\n * Creates an `<article>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Article = HtmlElementWrapper('article');\n\n/**\n * Creates an `<aside>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Aside = HtmlElementWrapper('aside');\n\n/**\n * Creates a `<nav>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Nav = HtmlElementWrapper('nav');\n\n/**\n * Creates a `<figure>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Figure = HtmlElementWrapper('figure');\n\n/**\n * Creates a `<figcaption>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const FigCaption = HtmlElementWrapper('figcaption');\n\n/**\n * Creates a `<header>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Header = HtmlElementWrapper('header');\n\n/**\n * Creates a `<footer>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Footer = HtmlElementWrapper('footer');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\"\nimport Validator from \"../utils/validator\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\n\n/**\n * Creates an `<img>` element.\n * @type {function(ImgAttributes=): HTMLImageElement}\n */\nexport const BaseImage = HtmlElementWrapper('img');\n\n/**\n * Creates an `<img>` element.\n * @param {Observable<string>|string} src\n * @param {Omit<ImgAttributes, 'src'>} [attributes]\n * @returns {HTMLImageElement}\n */\nexport const Img = function(src, attributes) {\n return BaseImage({ src, ...attributes });\n};\n\n/**\n * Creates an `<img>` that loads asynchronously, showing a placeholder until the image is ready.\n * Supports reactive `src` — automatically updates when the observable changes.\n * @param {Observable<string>|string} src - Final image URL\n * @param {string|null} defaultImage - Placeholder shown while loading\n * @param {Omit<ImgAttributes, 'src'>} attributes\n * @param {(error: NativeDocumentError|null, img: HTMLImageElement) => void} [callback]\n * @returns {HTMLImageElement}\n */\nexport const AsyncImg = function(src, defaultImage, attributes, callback) {\n const defaultSrc = Validator.isObservable(src) ? src.val() : src;\n const image = Img(defaultImage || defaultSrc, attributes);\n const img = new Image();\n\n img.onload = () => {\n Validator.isFunction(callback) && callback(null, image);\n image.src = Validator.isObservable(src) ? src.val() : src;\n };\n img.onerror = () => {\n Validator.isFunction(callback) && callback(new NativeDocumentError('Image not found'));\n };\n if(Validator.isObservable(src)) {\n src.subscribe(newSrc => {\n img.src = newSrc;\n });\n }\n img.src = defaultSrc;\n return image;\n};\n\n/**\n * Creates an `<img loading=\"lazy\">` element.\n * @param {Observable<string>|string} src\n * @param {Omit<ImgAttributes, 'src'|'loading'>} [attributes]\n * @returns {HTMLImageElement}\n */\nexport const LazyImg = function(src, attributes) {\n return Img(src, { ...attributes, loading: 'lazy' });\n};","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\n/**\n * Creates a `<details>` element.\n * @type {function(DetailsAttributes=, NdChild|NdChild[]=): HTMLDetailsElement}\n */\nexport const Details = HtmlElementWrapper('details');\n\n/**\n * Creates a `<summary>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Summary = HtmlElementWrapper('summary');\n\n/**\n * Creates a `<dialog>` element.\n * @type {function(DialogAttributes=, NdChild|NdChild[]=): HTMLDialogElement}\n */\nexport const Dialog = HtmlElementWrapper('dialog');\n\n/**\n * Creates a `<menu>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLMenuElement}\n */\nexport const Menu = HtmlElementWrapper('menu');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\n/**\n * Creates an `<ol>` element.\n * @type {function(OlAttributes=, NdChild|NdChild[]=): HTMLOListElement}\n */\nexport const OrderedList = HtmlElementWrapper('ol');\n\n/**\n * Creates a `<ul>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLUListElement}\n */\nexport const UnorderedList = HtmlElementWrapper('ul');\n\n/**\n * Creates a `<li>` element.\n * @type {function(GlobalAttributes & { value?: number }=, NdChild|NdChild[]=): HTMLLIElement}\n */\nexport const ListItem = HtmlElementWrapper('li');\n\n/**\n * Alias for {@link ListItem}.\n * @type {typeof ListItem}\n */\nexport const Li = ListItem;\n\n/**\n * Alias for {@link OrderedList}.\n * @type {typeof OrderedList}\n */\nexport const Ol = OrderedList;\n\n/**\n * Alias for {@link UnorderedList}.\n * @type {typeof UnorderedList}\n */\nexport const Ul = UnorderedList;\n","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\n/**\n * Creates an `<audio>` element.\n * @type {function(AudioAttributes=, NdChild|NdChild[]=): HTMLAudioElement}\n */\nexport const Audio = HtmlElementWrapper('audio');\n\n/**\n * Creates a `<video>` element.\n * @type {function(VideoAttributes=, NdChild|NdChild[]=): HTMLVideoElement}\n */\nexport const Video = HtmlElementWrapper('video');\n\n/**\n * Creates a `<source>` element.\n * @type {function(SourceAttributes=): HTMLSourceElement}\n */\nexport const Source = HtmlElementWrapper('source');\n\n/**\n * Creates a `<track>` element.\n * @type {function(TrackAttributes=): HTMLTrackElement}\n */\nexport const Track = HtmlElementWrapper('track');\n\n/**\n * Creates a `<canvas>` element.\n * @type {function(CanvasAttributes=, NdChild|NdChild[]=): HTMLCanvasElement}\n */\nexport const Canvas = HtmlElementWrapper('canvas');\n\n/**\n * Creates an `<svg>` element.\n * @type {function(SvgAttributes=, NdChild|NdChild[]=): SVGSVGElement}\n */\nexport const Svg = HtmlElementWrapper('svg');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\n/**\n * Creates a `<time>` element.\n * @type {function(TimeAttributes=, NdChild|NdChild[]=): HTMLTimeElement}\n */\nexport const Time = HtmlElementWrapper('time');\n\n/**\n * Creates a `<data>` element.\n * @type {function(GlobalAttributes & { value?: Observable<string>|string }=, NdChild|NdChild[]=): HTMLDataElement}\n */\nexport const Data = HtmlElementWrapper('data');\n\n/**\n * Creates an `<address>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Address = HtmlElementWrapper('address');\n\n/**\n * Creates a `<kbd>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Kbd = HtmlElementWrapper('kbd');\n\n/**\n * Creates a `<samp>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Samp = HtmlElementWrapper('samp');\n\n/**\n * Creates a `<var>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Var = HtmlElementWrapper('var');\n\n/**\n * Creates a `<wbr>` element.\n * @type {function(GlobalAttributes=): HTMLElement}\n */\nexport const Wbr = HtmlElementWrapper('wbr');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\n/**\n * Creates a `<caption>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLTableCaptionElement}\n */\nexport const Caption = HtmlElementWrapper('caption');\n\n/**\n * Creates a `<table>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLTableElement}\n */\nexport const Table = HtmlElementWrapper('table');\n\n/**\n * Creates a `<thead>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLTableSectionElement}\n */\nexport const THead = HtmlElementWrapper('thead');\n\n/**\n * Creates a `<tfoot>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLTableSectionElement}\n */\nexport const TFoot = HtmlElementWrapper('tfoot');\n\n/**\n * Creates a `<tbody>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLTableSectionElement}\n */\nexport const TBody = HtmlElementWrapper('tbody');\n\n/**\n * Creates a `<tr>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLTableRowElement}\n */\nexport const Tr = HtmlElementWrapper('tr');\n\n/**\n * Alias for {@link Tr}.\n * @type {typeof Tr}\n */\nexport const TRow = Tr;\n\n/**\n * Creates a `<th>` element.\n * @type {function(ThAttributes=, NdChild|NdChild[]=): HTMLTableCellElement}\n */\nexport const Th = HtmlElementWrapper('th');\n\n/**\n * Alias for {@link Th}.\n * @type {typeof Th}\n */\nexport const THeadCell = Th;\n\n/**\n * Alias for {@link Th}.\n * @type {typeof Th}\n */\nexport const TFootCell = Th;\n\n/**\n * Creates a `<td>` element.\n * @type {function(TdAttributes=, NdChild|NdChild[]=): HTMLTableCellElement}\n */\nexport const Td = HtmlElementWrapper('td');\n\n/**\n * Alias for {@link Td}.\n * @type {typeof Td}\n */\nexport const TBodyCell = Td;","import {createHtmlElement} from \"./HtmlElementWrapper\";\n\nexport default function SvgElementWrapper(name) {\n let node = null;\n\n let createElement = (attr, children) => {\n node = document.createElementNS('http://www.w3.org/2000/svg', name);\n createElement = (attr, children) => {\n return createHtmlElement(node.cloneNode(), attr, children);\n };\n return createHtmlElement(node.cloneNode(), attr, children);\n };\n\n return (attr, children) => createElement(attr, children);\n}","import SvgElementWrapper from \"../wrappers/SvgElementWrapper\";\n\nexport const SvgSvg = SvgElementWrapper('svg');\nexport const SvgCircle = SvgElementWrapper('circle');\nexport const SvgRect = SvgElementWrapper('rect');\nexport const SvgEllipse = SvgElementWrapper('ellipse');\nexport const SvgLine = SvgElementWrapper('line');\nexport const SvgPolyline = SvgElementWrapper('polyline');\nexport const SvgPolygon = SvgElementWrapper('polygon');\nexport const SvgPath = SvgElementWrapper('path');\nexport const SvgText = SvgElementWrapper('text');\nexport const SvgTSpan = SvgElementWrapper('tspan');\nexport const SvgTextPath = SvgElementWrapper('textPath');\nexport const SvgG = SvgElementWrapper('g');\nexport const SvgDefs = SvgElementWrapper('defs');\nexport const SvgUse = SvgElementWrapper('use');\nexport const SvgSymbol = SvgElementWrapper('symbol');\nexport const SvgClipPath = SvgElementWrapper('clipPath');\nexport const SvgMask = SvgElementWrapper('mask');\nexport const SvgMarker = SvgElementWrapper('marker');\nexport const SvgPattern = SvgElementWrapper('pattern');\nexport const SvgImage = SvgElementWrapper('image');\nexport const SvgForeignObject = SvgElementWrapper('foreignObject');\nexport const SvgSwitch = SvgElementWrapper('switch');\nexport const SvgLinearGradient = SvgElementWrapper('linearGradient');\nexport const SvgRadialGradient = SvgElementWrapper('radialGradient');\nexport const SvgStop = SvgElementWrapper('stop');\nexport const SvgFilter = SvgElementWrapper('filter');\nexport const SvgFEBlend = SvgElementWrapper('feBlend');\nexport const SvgFEColorMatrix = SvgElementWrapper('feColorMatrix');\nexport const SvgFEComposite = SvgElementWrapper('feComposite');\nexport const SvgFEFlood = SvgElementWrapper('feFlood');\nexport const SvgFEGaussianBlur = SvgElementWrapper('feGaussianBlur');\nexport const SvgFEMerge = SvgElementWrapper('feMerge');\nexport const SvgFEMergeNode = SvgElementWrapper('feMergeNode');\nexport const SvgFEOffset = SvgElementWrapper('feOffset');\nexport const SvgFETurbulence = SvgElementWrapper('feTurbulence');\nexport const SvgFEDisplacementMap = SvgElementWrapper('feDisplacementMap');\nexport const SvgFEDiffuseLighting = SvgElementWrapper('feDiffuseLighting');\nexport const SvgFESpecularLighting = SvgElementWrapper('feSpecularLighting');\nexport const SvgFEDistantLight = SvgElementWrapper('feDistantLight');\nexport const SvgFEPointLight = SvgElementWrapper('fePointLight');\nexport const SvgFESpotLight = SvgElementWrapper('feSpotLight');\nexport const SvgFEMorphology = SvgElementWrapper('feMorphology');\nexport const SvgFEConvolveMatrix = SvgElementWrapper('feConvolveMatrix');\nexport const SvgFEComponentTransfer = SvgElementWrapper('feComponentTransfer');\nexport const SvgFEFuncR = SvgElementWrapper('feFuncR');\nexport const SvgFEFuncG = SvgElementWrapper('feFuncG');\nexport const SvgFEFuncB = SvgElementWrapper('feFuncB');\nexport const SvgFEFuncA = SvgElementWrapper('feFuncA');\nexport const SvgAnimate = SvgElementWrapper('animate');\nexport const SvgAnimateTransform = SvgElementWrapper('animateTransform');\nexport const SvgAnimateMotion = SvgElementWrapper('animateMotion');\nexport const SvgMPath = SvgElementWrapper('mpath');\nexport const SvgSet = SvgElementWrapper('set');\nexport const SvgDesc = SvgElementWrapper('desc');\nexport const SvgTitle = SvgElementWrapper('title');\nexport const SvgMetadata = SvgElementWrapper('metadata');\nexport const SvgView = SvgElementWrapper('view');\nexport const SvgStyle = SvgElementWrapper('style');\nexport const SvgScript = SvgElementWrapper('script');","import HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\n/**\n * Creates an empty `DocumentFragment` wrapper.\n * Useful for grouping elements without adding a DOM node.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): DocumentFragment}\n */\nexport const Fragment = HtmlElementWrapper('');\n","import {trim} from \"../core/utils/helpers.js\";\n\nexport const RouteParamPatterns = {\n id: '[0-9]+',\n uuid: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',\n slug: '[a-z0-9]+(?:-[a-z0-9]+)*',\n hash: '[a-f0-9]{32,64}',\n\n alpha: '[a-zA-Z]+',\n alphanum: '[a-zA-Z0-9]+',\n string: '[^/]+',\n any: '.*',\n\n int: '[0-9]+',\n float: '[0-9]+\\\\.[0-9]+',\n number: '[0-9]+(\\\\.[0-9]+)?',\n positive: '[1-9][0-9]*',\n\n locale: '[a-z]{2}(-[A-Z]{2})?',\n lang: '[a-z]{2}',\n\n token: '[A-Za-z0-9_\\\\-]+',\n};\n\n/**\n * Creates a new Route instance.\n *\n * @param {string} $path - URL pattern with optional parameters (e.g., '/user/{id:number}')\n * @param {Function} $component - Component function that returns HTMLElement or DocumentFragment\n * @param {Object} [$options={}] - Route configuration options\n * @param {string} [$options.name] - Unique name for the route (used for navigation)\n * @param {Function[]} [$options.middlewares] - Array of middleware functions\n * @param {boolean} [$options.shouldRebuild] - Whether to rebuild component on each navigation\n * @param {Object} [$options.with] - Custom parameter validation patterns\n * @param {Function} [$options.layout] - Layout component wrapper function\n */\nexport function Route($path, $component, $options = {}) {\n\n $path = '/'+trim($path, '/').replace(/\\/+/, '/');\n\n let $pattern = null;\n let $name = $options.name || null;\n\n const $middlewares = $options.middlewares || [];\n const $shouldRebuild = $options.shouldRebuild || false;\n const $paramsValidators = $options.with || {};\n const $layout = $options.layout || null;\n\n const $params = {};\n const $paramsNames = [];\n\n\n const paramsExtractor = (description) => {\n if(!description) return null;\n const [name, type] = description.split(':');\n\n let pattern = $paramsValidators[name];\n if(!pattern && type) {\n pattern = RouteParamPatterns[type];\n }\n if(!pattern) {\n pattern = '[^/]+';\n }\n\n pattern = pattern.replace('(', '(?:');\n\n return { name, pattern: `(${pattern})` };\n };\n\n const getPattern = () => {\n if($pattern) {\n return $pattern;\n }\n\n const patternDescription = $path.replace(/\\{(.*?)}/ig, (block, definition) => {\n const description = paramsExtractor(definition);\n if(!description || !description.pattern) return block;\n $params[description.name] = description.pattern;\n $paramsNames.push(description.name);\n return description.pattern;\n });\n\n $pattern = new RegExp('^'+patternDescription+'$');\n return $pattern;\n };\n\n this.name = () => $name;\n this.component = () => $component;\n this.middlewares = () => $middlewares;\n this.shouldRebuild = () => $shouldRebuild;\n this.path = () => $path;\n this.layout = () => $layout;\n\n /**\n *\n * @param {string} path\n */\n this.match = function(path) {\n path = '/'+trim(path, '/');\n const match = getPattern().exec(path);\n if(!match) return false;\n const params = {};\n\n getPattern().exec(path).forEach((value, index) => {\n if(index < 1) return;\n const name = $paramsNames[index - 1];\n params[name] = value;\n });\n\n return params;\n };\n /**\n * @param {{params: ?Object, query: ?Object, basePath: ?string}} configs\n */\n this.url = function(configs) {\n const path = $path.replace(/\\{(.*?)}/ig, (block, definition) => {\n const description = paramsExtractor(definition);\n if(configs.params && configs.params[description.name]) {\n return configs.params[description.name];\n }\n throw new Error(`Missing parameter '${description.name}'`);\n });\n\n const queryString = (typeof configs.query === 'object') ? (new URLSearchParams(configs.query)).toString() : null;\n return (configs.basePath ? configs.basePath : '') + (queryString ? `${path}?${queryString}` : path);\n }\n}","\n\nexport default class RouterError extends Error {\n constructor(message, context) {\n super(message);\n this.context = context;\n }\n}","import {trim} from \"../core/utils/helpers.js\";\n\nexport const RouteGroupHelper = {\n /**\n *\n * @param {{suffix: string, options: {middlewares: Function[], name: string}}[]} $groupTree\n * @param {string} path\n * @returns {string}\n */\n fullPath: ($groupTree, path) => {\n const fullPath = [];\n $groupTree.forEach(group => {\n fullPath.push(trim(group.suffix, '/'));\n });\n fullPath.push(trim(path, '/'));\n return fullPath.join('/');\n },\n /**\n *\n * @param {{suffix: string, options: {middlewares: Function[], name: string}}[]} $groupTree\n * @param {Function[]} middlewares\n * @returns {Function[]}\n */\n fullMiddlewares: ($groupTree, middlewares) => {\n const fullMiddlewares = [];\n $groupTree.forEach(group => {\n if(group.options.middlewares) {\n fullMiddlewares.push(...group.options.middlewares);\n }\n });\n if(middlewares) {\n fullMiddlewares.push(...middlewares);\n }\n return fullMiddlewares;\n },\n /**\n *\n * @param {{suffix: string, options: {middlewares: Function[], name: string}}[]} $groupTree\n * @param {string} name\n * @returns {string}\n */\n fullName: ($groupTree, name) => {\n const fullName = [];\n $groupTree.forEach(group => {\n if(group.options?.name) {\n fullName.push(group.options.name);\n }\n });\n name && fullName.push(name);\n return fullName.join('.');\n },\n layout: ($groupTree) => {\n for(let i = $groupTree.length - 1; i >= 0; i--) {\n if($groupTree[i]?.options?.layout) {\n return $groupTree[i].options.layout;\n }\n }\n return null;\n }\n};","\n\nexport default function HashRouter() {\n\n const $history = [];\n let $currentIndex = 0;\n\n /**\n *\n * @param {number} delta\n */\n const go = (delta) => {\n const index = $currentIndex + delta;\n if(!$history[index]) {\n return;\n }\n $currentIndex = index;\n const { route, params, query, path } = $history[index];\n setHash(path);\n };\n\n const canGoBack = function() {\n return $currentIndex > 0;\n };\n const canGoForward = function() {\n return $currentIndex < $history.length - 1;\n };\n\n /**\n *\n * @param {string} path\n */\n const setHash = (path) => {\n window.location.replace(`${window.location.pathname}${window.location.search}#${path}`);\n }\n\n const getCurrentHash = () => window.location.hash.slice(1);\n\n /**\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.push = function(target) {\n const { route, params, query, path } = this.resolve(target);\n if(path === getCurrentHash()) {\n return;\n }\n $history.splice($currentIndex + 1);\n $history.push({ route, params, query, path });\n $currentIndex++;\n setHash(path);\n };\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.replace = function(target) {\n const { route, params, query, path } = this.resolve(target);\n if(path === getCurrentHash()) {\n return;\n }\n $history[$currentIndex] = { route, params, query, path };\n };\n this.forward = function() {\n return canGoForward() && go(1);\n };\n this.back = function() {\n return canGoBack() && go(-1);\n };\n\n /**\n * @param {string} defaultPath\n */\n this.init = function(defaultPath) {\n window.addEventListener('hashchange', () => {\n const { route, params, query, path } = this.resolve(getCurrentHash());\n this.handleRouteChange(route, params, query, path);\n });\n const { route, params, query, path } = this.resolve(defaultPath || getCurrentHash());\n $history.push({ route, params, query, path });\n $currentIndex = 0;\n this.handleRouteChange(route, params, query, path);\n }\n};","import DebugManager from \"../../core/utils/debug-manager.js\";\n\nexport default function HistoryRouter() {\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.push = function(target) {\n try {\n const { route, path, params, query } = this.resolve(target);\n if(window.history.state && window.history.state.path === path) {\n return;\n }\n window.history.pushState({ name: route.name(), params, path}, route.name() || path , path);\n this.handleRouteChange(route, params, query, path);\n } catch (e) {\n DebugManager.error('HistoryRouter', 'Error in pushState', e);\n }\n };\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.replace = function(target) {\n const { route, path, params } = this.resolve(target);\n try {\n window.history.replaceState({ name: route.name(), params, path}, route.name() || path , path);\n this.handleRouteChange(route, params, {}, path);\n } catch(e) {\n DebugManager.error('HistoryRouter', 'Error in replaceState', e);\n }\n };\n this.forward = function() {\n window.history.forward();\n };\n\n this.back = function() {\n window.history.back();\n };\n\n /**\n * @param {string} defaultPath\n */\n this.init = function(defaultPath) {\n window.addEventListener('popstate', (event) => {\n try {\n if(!event.state || !event.state.path) {\n return;\n }\n const statePath = event.state.path;\n const {route, params, query, path} = this.resolve(statePath);\n if(!route) {\n return;\n }\n this.handleRouteChange(route, params, query, path);\n } catch(e) {\n DebugManager.error('HistoryRouter', 'Error in popstate event', e);\n }\n });\n const { route, params, query, path } = this.resolve(defaultPath || (window.location.pathname+window.location.search));\n this.handleRouteChange(route, params, query, path);\n }\n\n};","\nexport default function MemoryRouter() {\n const $history = [];\n let $currentIndex = 0;\n\n /**\n *\n * @param {number} delta\n */\n const go = (delta) => {\n const index = $currentIndex + delta;\n if(!$history[index]) {\n return;\n }\n $currentIndex = index;\n const { route, params, query, path } = $history[index];\n this.handleRouteChange(route, params, query, path);\n };\n\n const canGoBack = function() {\n return $currentIndex > 0;\n };\n const canGoForward = function() {\n return $currentIndex < $history.length - 1;\n };\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.push = function(target) {\n const { route, params, query, path} = this.resolve(target);\n if($history[$currentIndex] && $history[$currentIndex].path === path) {\n return;\n }\n $history.splice($currentIndex + 1);\n $history.push({ route, params, query, path });\n $currentIndex++;\n this.handleRouteChange(route, params, query, path);\n };\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.replace = function(target) {\n const { route, params, query, path} = this.resolve(target);\n $history[$currentIndex] = { route, params, query, path };\n this.handleRouteChange(route, params, query, path);\n };\n\n this.forward = function() {\n return canGoForward() && go(1);\n };\n\n this.back = function() {\n return canGoBack() && go(-1);\n };\n\n /**\n * @param {string} defaultPath\n */\n this.init = function(defaultPath) {\n const currentPath = defaultPath || (window.location.pathname + window.location.search);\n const { route, params, query, path } = this.resolve(currentPath);\n $history.push({ route, params, query, path });\n $currentIndex = 0;\n\n this.handleRouteChange(route, params, query, path);\n }\n};","import Validator from \"../core/utils/validator\";\nimport {Anchor} from \"../../elements\";\nimport {ElementCreator} from \"../core/wrappers/ElementCreator\";\n\n/**\n *\n * @param {Router} router\n * @param {?HTMLElement} container\n */\nexport function RouterComponent(router, container) {\n\n const $cache = new Map();\n const $layoutCache = new WeakMap();\n const $routeInstanceAnchors = new WeakMap();\n let $currentLayout = null;\n\n let $lastNodeInserted = null;\n\n const getNodeAnchorForLayout = (node, path) => {\n const existingAnchor = $routeInstanceAnchors.get(node);\n if(existingAnchor) {\n return existingAnchor;\n }\n\n let anchor = node;\n if(!Validator.isAnchor(node)) {\n anchor = Anchor(path);\n anchor.appendChild(node);\n }\n $routeInstanceAnchors.set(node, anchor);\n return anchor;\n };\n\n const removeLastNodeInserted = () => {\n $lastNodeInserted?.remove();\n };\n\n const cleanContainer = () => {\n container.nodeValue = '';\n removeLastNodeInserted();\n\n if($currentLayout) {\n $currentLayout.remove();\n }\n };\n\n const getNodeToInsert = (node) => {\n let nodeToInsert = node;\n if(Validator.isNDElement(node)) {\n nodeToInsert = node.node();\n }\n return nodeToInsert;\n };\n\n const updateContainerByLayout = (layout, node, route, path) => {\n let nodeToInsert = getNodeToInsert(node);\n\n const cachedLayout = $layoutCache.get(nodeToInsert);\n if(cachedLayout) {\n if(cachedLayout === $currentLayout) {\n const layoutAnchor = getNodeAnchorForLayout(nodeToInsert, path);\n removeLastNodeInserted();\n $lastNodeInserted = nodeToInsert;\n layoutAnchor.replaceContent(nodeToInsert);\n return;\n }\n cleanContainer();\n $lastNodeInserted = nodeToInsert;\n $currentLayout = cachedLayout;\n const layoutAnchor = getNodeAnchorForLayout(nodeToInsert, path);\n layoutAnchor.replaceContent(nodeToInsert);\n container.appendChild($currentLayout);\n return;\n }\n cleanContainer();\n $lastNodeInserted = nodeToInsert;\n const anchor = getNodeAnchorForLayout(nodeToInsert, path);\n\n $currentLayout = ElementCreator.getChild(layout(anchor));\n $layoutCache.set(nodeToInsert, $currentLayout);\n container.appendChild($currentLayout);\n }\n\n const updateContainer = function(node, route, path) {\n const layout = route.layout();\n if(layout) {\n updateContainerByLayout(layout, node, route, path);\n return;\n }\n let nodeToInsert = getNodeToInsert(node);\n\n cleanContainer();\n container.appendChild(nodeToInsert);\n $lastNodeInserted = node;\n };\n\n const handleCurrentRouterState = function(state) {\n if(!state.route) {\n return;\n }\n const { route, params, query, path } = state;\n if($cache.has(path)) {\n const cacheNode = $cache.get(path);\n updateContainer(cacheNode, route);\n return;\n }\n const Component = route.component();\n const node = Component({ params, query });\n $cache.set(path, node);\n updateContainer(node, route, path);\n };\n\n router.subscribe(handleCurrentRouterState);\n\n handleCurrentRouterState(router.currentState());\n return container;\n}","import {Route} from \"./Route.js\";\nimport Validator from \"../core/utils/validator.js\";\nimport RouterError from \"./errors/RouterError.js\";\nimport {RouteGroupHelper} from \"./RouteGroupHelper.js\";\nimport {trim} from \"../core/utils/helpers.js\";\nimport HashRouter from \"./modes/HashRouter.js\";\nimport HistoryRouter from \"./modes/HistoryRouter.js\";\nimport MemoryRouter from \"./modes/MemoryRouter.js\";\nimport DebugManager from \"../core/utils/debug-manager.js\";\nimport {RouterComponent} from \"./RouterComponent.js\";\n\nexport const DEFAULT_ROUTER_NAME = 'default';\n\n/**\n *\n * @param {{mode: 'memory'|'history'|'hash'}} $options\n * @class\n */\nexport default function Router($options = {}) {\n\n /** @type {Route[]} */\n const $routes = [];\n /** @type {{[string]: Route}} */\n const $routesByName = {};\n const $groupTree = [];\n const $listeners = [];\n const $currentState = { route: null, params: null, query: null, path: null, hash: null };\n\n if($options.mode === 'hash') {\n HashRouter.apply(this, []);\n } else if($options.mode === 'history') {\n HistoryRouter.apply(this, []);\n } else if($options.mode === 'memory') {\n MemoryRouter.apply(this, []);\n } else {\n throw new RouterError('Invalid router mode '+$options.mode);\n }\n\n const trigger = function(request, next) {\n for(const listener of $listeners) {\n try {\n listener(request);\n next && next(request);\n } catch (e) {\n DebugManager.warn('Route Listener', 'Error in listener:', e);\n }\n }\n }\n\n this.routes = () => [...$routes];\n this.currentState = () => ({ ...$currentState });\n\n /**\n *\n * @param {string} path\n * @param {Function} component\n * @param {{name:?string, middlewares:Function[], shouldRebuild:Boolean, with: Object, layout: Function }} options\n * @returns {this}\n */\n this.add = function(path, component, options) {\n const route = new Route(RouteGroupHelper.fullPath($groupTree, path), component, {\n ...options,\n middlewares: RouteGroupHelper.fullMiddlewares($groupTree, options?.middlewares || []),\n name: options?.name ? RouteGroupHelper.fullName($groupTree, options.name) : null,\n layout: options?.layout || RouteGroupHelper.layout($groupTree)\n });\n $routes.push(route);\n if(route.name()) {\n $routesByName[route.name()] = route;\n }\n return this;\n };\n\n /**\n * Groups routes under a common path prefix with shared options.\n *\n * @param {string} suffix - Path prefix to prepend to all routes in the group\n * @param {Object} options - Group configuration options\n * @param {Function[]} [options.middlewares] - Middlewares applied to all routes in group\n * @param {string} [options.name] - Name prefix for all routes in group\n * @param {Function} [options.layout] - Layout component for all routes in group\n * @param {Function} callback - Function that defines routes within the group\n * @returns {this} Router instance for chaining\n * @example\n * router.group('/admin', { middlewares: [authMiddleware], layout: AdminLayout }, () => {\n * router.add('/users', UsersPage, { name: 'users' });\n * router.add('/settings', SettingsPage, { name: 'settings' });\n * });\n */\n this.group = function(suffix, options, callback) {\n if(!Validator.isFunction(callback)) {\n throw new RouterError('Callback must be a function');\n }\n $groupTree.push({suffix, options});\n callback();\n $groupTree.pop();\n return this;\n };\n\n /**\n *\n * @param {string} name\n * @param {Object}params\n * @param {Object} query\n * @returns {*}\n */\n this.generateUrl = function(name, params = {}, query = {}) {\n const route = $routesByName[name];\n if(!route) {\n throw new RouterError(`Route not found for name: ${name}`);\n }\n return route.url({ params, query });\n };\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n * @returns {{route:Route, params:Object, query:Object, path:string}}\n */\n this.resolve = function(target) {\n if(typeof target === 'string') {\n const route = $routesByName[target];\n if(route) {\n return {\n route,\n params: [],\n query: [],\n path: route.url({ name: target })\n };\n }\n }\n if(Validator.isJson(target)) {\n const route = $routesByName[target.name];\n if(!route) {\n throw new RouterError(`Route not found for name: ${target.name}`);\n }\n return {\n route,\n params: target.params,\n query: target.query,\n path: route.url({ ...target })\n };\n }\n\n const [urlPath, urlQuery] = target.split('?');\n const path = '/'+trim(urlPath, '/');\n let routeFound = null, params;\n\n for(const route of $routes) {\n params = route.match(path);\n if(params) {\n routeFound = route;\n break;\n }\n }\n if(!routeFound) {\n throw new RouterError(`Route not found for url: ${urlPath}`);\n }\n const queryParams = {};\n if(urlQuery) {\n const queries = new URLSearchParams(urlQuery).entries();\n for (const [key, value] of queries) {\n queryParams[key] = value;\n }\n }\n\n return { route: routeFound, params, query: queryParams, path: target };\n };\n\n /**\n *\n * @param {Function} listener\n * @returns {(function(): void)|*}\n */\n this.subscribe = function(listener) {\n if(!Validator.isFunction(listener)) {\n throw new RouterError('Listener must be a function');\n }\n $listeners.push(listener);\n return () => {\n $listeners.splice($listeners.indexOf(listener), 1);\n };\n };\n\n /**\n *\n * @param {Route} route\n * @param {Object} params\n * @param {Object} query\n * @param {string} path\n */\n this.handleRouteChange = function(route, params, query, path) {\n $currentState.route = route;\n $currentState.params = params;\n $currentState.query = query;\n $currentState.path = path;\n\n const middlewares = [...route.middlewares(), trigger];\n let currentIndex = 0;\n const request = { ...$currentState };\n\n const next = (editableRequest) => {\n currentIndex++;\n if(currentIndex >= middlewares.length) {\n return;\n }\n return middlewares[currentIndex](editableRequest || request, next);\n };\n return middlewares[currentIndex](request, next);\n };\n\n}\n\nRouter.routers = {};\n\n/**\n * Creates and initializes a new router instance.\n *\n * @param {Object} options - Router configuration\n * @param {'memory'|'history'|'hash'} options.mode - Routing mode\n * @param {string} [options.name] - Router name for multi-router apps\n * @param {string} [options.entry] - Initial route path\n * @param {Function} callback - Setup function that receives the router instance\n * @returns {Router} The configured router instance with mount() method\n * @example\n * const router = Router.create({ mode: 'history' }, (r) => {\n * r.add('/home', HomePage, { name: 'home' });\n * r.add('/about', AboutPage, { name: 'about' });\n * });\n * router.mount('#app');\n */\nRouter.create = function(options, callback) {\n if(!Validator.isFunction(callback)) {\n DebugManager.error('Router', 'Callback must be a function');\n throw new RouterError('Callback must be a function');\n }\n const router = new Router(options);\n Router.routers[options.name || DEFAULT_ROUTER_NAME] = router;\n callback(router);\n\n router.init(options.entry);\n\n router.mount = function(container) {\n if(Validator.isString(container)) {\n const mountContainer = document.querySelector(container);\n if(!mountContainer) {\n throw new RouterError(`Container not found for selector: ${container}`);\n }\n container = mountContainer;\n } else if(!Validator.isElement(container)) {\n throw new RouterError('Container must be a string or an Element');\n }\n\n return RouterComponent(router, container);\n };\n\n return router;\n};\n\nRouter.get = function(name) {\n const router = Router.routers[name || DEFAULT_ROUTER_NAME];\n if(!router) {\n throw new RouterError(`Router not found for name: ${name}`);\n }\n return router;\n};\n\nRouter.push = function(target, name = null) {\n return Router.get(name).push(target);\n};\n\nRouter.replace = function(target, name = null) {\n return Router.get(name).replace(target);\n};\n\nRouter.forward = function(name = null) {\n return Router.get(name).forward();\n};\nRouter.back = function(name = null) {\n return Router.get(name).back();\n};\n\nRouter.redirectTo = function(pathOrRouteName, params = null, name = null) {\n let target = pathOrRouteName;\n const router = Router.get(name);\n const route = router.resolve({ name: pathOrRouteName, params });\n if(route) {\n target = { name: pathOrRouteName, params}\n }\n return router.push(target);\n};\n","import Validator from \"../core/utils/validator\";\nimport {Link as NativeLink} from \"../../elements\";\nimport Router, {DEFAULT_ROUTER_NAME} from \"./Router\";\nimport RouterError from \"./errors/RouterError\";\n\n\nexport function Link(options, children){\n const { to, href, ...attributes } = options;\n if(href) {\n const router = Router.get();\n return NativeLink({ ...attributes, href}, children).nd.onPreventClick(() => {\n router.push(href);\n });\n }\n const target = typeof to === 'string' ? { name: to } : to;\n const routerName = target.router || DEFAULT_ROUTER_NAME;\n const router = Router.get(routerName);\n if(!router) {\n throw new RouterError('Router not found \"'+routerName+'\" for link \"'+target.name+'\"');\n }\n const url = router.generateUrl(target.name, target.params, target.query);\n return NativeLink({ ...attributes, href: url }, children).nd.onPreventClick(() => {\n router.push(url);\n });\n}\n\nLink.blank = function(attributes, children){\n return NativeLink({ ...attributes, target: '_blank'}, children);\n};","export default function NativeFetch($baseUrl) {\n\n const $interceptors = {\n request: [],\n response: []\n };\n\n this.interceptors = {\n response: (callback) => {\n $interceptors.response.push(callback);\n },\n request: (callback) => {\n $interceptors.request.push(callback);\n }\n };\n\n this.fetch = async function(method, endpoint, params = {}, options = {}) {\n if(options.formData) {\n const formData = new FormData();\n for(const key in params) {\n formData.append(key, params[key]);\n }\n params = formData;\n }\n if(!endpoint.startsWith('http')) {\n endpoint = ($baseUrl.endsWith('/') ? $baseUrl : $baseUrl+'/') + endpoint;\n }\n let configs = {\n method,\n headers: {\n ...(options.headers || {})\n },\n };\n if(params) {\n if(params instanceof FormData) {\n configs.body = params;\n }\n else {\n if(method !== 'GET') {\n configs.headers['Content-Type'] = 'application/json';\n configs.body = JSON.stringify(params);\n } else {\n const queryString = new URLSearchParams(params).toString();\n if (queryString) {\n endpoint = endpoint + (endpoint.includes('?') ? '&' : '?') + queryString;\n }\n }\n }\n }\n\n for(const interceptor of $interceptors.request) {\n configs = (await interceptor(configs, endpoint)) || configs;\n }\n\n let response = await fetch(endpoint, configs);\n\n for(const interceptor of $interceptors.response) {\n response = (await interceptor(response, endpoint)) || response;\n }\n\n const contentType = response.headers.get('content-type') || '';\n const data = contentType.includes('application/json')\n ? await response.json()\n : await response.text();\n\n if(!response.ok) {\n const error = new Error(data?.message || response.statusText);\n error.status = response.status;\n error.data = data;\n throw error;\n }\n\n return data;\n };\n\n\n this.post = function (endpoint, params = {}, options = {}) {\n return this.fetch('POST', endpoint, params, options);\n };\n this.put = function (endpoint, params = {}, options = {}) {\n return this.fetch('PUT', endpoint, params, options);\n };\n this.delete = function (endpoint, params = {}, options = {}) {\n return this.fetch('DELETE', endpoint, params, options);\n };\n this.get = function (endpoint, params = {}, options = {}) {\n return this.fetch('GET', endpoint, params, options);\n };\n};","import { once as _once, autoMemoize, autoOnce } from \"./memoize.js\";\n\nexport const once = fn => autoOnce(fn);\nexport const singleton = fn => _once(fn);\nexport const memoize = fn => autoMemoize(fn);"],"names":["DebugManager","PluginsManager","withValidation","ArgTypes","attributesWrapper","once","memoize","SELF_RENDER","Link","NativeLink","_once"],"mappings":"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"}
1
+ {"version":3,"file":"native-document.dev.js","sources":["../src/core/utils/debug-manager.js","../src/core/errors/NativeDocumentError.js","../src/core/utils/validator.js","../src/core/wrappers/constants.js","../src/core/data/MemoryManager.js","../src/core/utils/plugins-manager.js","../src/core/utils/helpers.js","../src/core/utils/localstorage.js","../src/core/data/ObservableItem.js","../src/core/utils/filters/utils.js","../src/core/utils/filters/standard.js","../src/core/utils/filters/date.js","../src/core/utils/filters/strings.js","../src/core/data/ObservableArray.js","../src/core/data/ObservableObject.js","../src/core/data/observable-helpers/observable.is-to.js","../src/core/data/ObservableWhen.js","../src/core/data/ObservableChecker.js","../src/core/utils/formatters.js","../src/core/data/observable-helpers/observable.prototypes.js","../src/core/data/ObservableResource.js","../src/core/data/Observable.js","../src/core/wrappers/AttributesWrapper.js","../src/core/wrappers/ElementCreator.js","../src/core/elements/anchor/anchor-with-sentinel.js","../src/core/elements/anchor/one-child-anchor-overwriting.js","../src/core/elements/anchor/anchor.js","../src/core/errors/ArgTypesError.js","../src/core/utils/args-types.js","../src/core/wrappers/DocumentObserver.js","../src/core/wrappers/NDElement.js","../src/core/utils/events.js","../src/core/wrappers/NdPrototype.js","../src/core/utils/prototypes.js","../src/core/wrappers/TemplateBinding.js","../src/core/wrappers/prototypes/nd-element-extensions.js","../src/core/wrappers/prototypes/nd-element.transition.extensions.js","../src/core/wrappers/prototypes/attributes-extensions.js","../src/core/wrappers/HtmlElementWrapper.js","../src/core/wrappers/template-cloner/NodeCloner.js","../src/core/wrappers/template-cloner/utils.js","../src/core/wrappers/template-cloner/TemplateCloner.js","../src/core/wrappers/SingletonView.js","../src/core/utils/property-accumulator.js","../src/core/utils/memoize.js","../src/core/data/Store.js","../src/core/elements/control/for-each.js","../src/core/elements/control/for-each-array.js","../src/core/elements/control/show-if.js","../src/core/elements/control/show-when.js","../src/core/elements/control/switch.js","../src/core/elements/content-formatter.js","../src/core/elements/description-list.js","../src/core/elements/form.js","../src/core/elements/html5-semantics.js","../src/core/elements/img.js","../src/core/elements/interactive.js","../src/core/elements/list.js","../src/core/elements/medias.js","../src/core/elements/meta-data.js","../src/core/elements/table.js","../src/core/wrappers/SvgElementWrapper.js","../src/core/elements/svg.js","../src/core/elements/fragment.js","../src/router/Route.js","../src/router/errors/RouterError.js","../src/router/RouteGroupHelper.js","../src/router/modes/HashRouter.js","../src/router/modes/HistoryRouter.js","../src/router/modes/MemoryRouter.js","../src/router/RouterComponent.js","../src/router/Router.js","../src/router/link.js","../src/fetch/NativeFetch.js","../src/core/utils/cache.js"],"sourcesContent":["let DebugManager = {};\n\nif(process.env.NODE_ENV === 'development') {\n DebugManager = {\n enabled: true,\n\n enable() {\n DebugManager.log('NativeDocument Debug Mode enabled');\n },\n\n disable() {\n this.enabled = false;\n },\n\n log(category, message, data) {\n console.group(`[${category}] ${message}`);\n if (data) console.log(data);\n console.trace();\n console.groupEnd();\n },\n\n warn(category, message, data) {\n console.warn(`[${category}] ${message}`, data);\n },\n\n error(category, message, error) {\n console.error(`[${category}] ${message}`, error);\n },\n };\n\n}\nif(process.env.NODE_ENV === 'production') {\n DebugManager = {\n log() {},\n warn() {},\n error() {},\n disable() {},\n };\n}\nexport default DebugManager;","export default class NativeDocumentError extends Error {\n constructor(message, context = {}) {\n super(message);\n this.name = 'NativeDocumentError';\n this.context = context;\n this.timestamp = new Date().toISOString();\n }\n}","import DebugManager from './debug-manager';\nimport NativeDocumentError from '../errors/NativeDocumentError';\n\nconst COMMON_NODE_TYPES = {\n ELEMENT: 1,\n TEXT: 3,\n COMMENT: 8,\n DOCUMENT: 9,\n DOCUMENT_FRAGMENT: 11,\n};\n\nexport const VALID_TYPES = [];\nVALID_TYPES[COMMON_NODE_TYPES.ELEMENT] = true;\nVALID_TYPES[COMMON_NODE_TYPES.TEXT] = true;\nVALID_TYPES[COMMON_NODE_TYPES.DOCUMENT_FRAGMENT] = true;\nVALID_TYPES[COMMON_NODE_TYPES.COMMENT] = true;\n\nconst Validator = {\n isObservable(value) {\n return value && (value.__$isObservable || value.__$Observable);\n },\n isTemplateBinding(value) {\n return value?.__$isTemplateBinding;\n },\n isObservableWhenResult(value) {\n return value && (value.__$isObservableWhen || (typeof value === 'object' && '$target' in value && '$observer' in value));\n },\n isArrayObservable(value) {\n return value?.__$isObservableArray;\n },\n isProxy(value) {\n return value?.__isProxy__;\n },\n isObservableOrProxy(value) {\n return value?.__$Observable;\n },\n isAnchor(value) {\n return value?.__Anchor__;\n },\n isObservableChecker(value) {\n return value?.__$isObservableChecker;\n },\n isArray(value) {\n return Array.isArray(value);\n },\n isString(value) {\n return typeof value === 'string';\n },\n isNumber(value) {\n return typeof value === 'number';\n },\n isBoolean(value) {\n return typeof value === 'boolean';\n },\n isFunction(value) {\n return typeof value === 'function';\n },\n isAsyncFunction(value) {\n return typeof value === 'function' && value.constructor.name === 'AsyncFunction';\n },\n isObject(value) {\n return typeof value === 'object' && value !== null;\n },\n isJson(value) {\n return !(typeof value !== 'object' || value === null || Array.isArray(value) || value.constructor.name !== 'Object');\n },\n isElement(value) {\n return value && VALID_TYPES[value.nodeType];\n },\n isDOMNode(value) {\n return VALID_TYPES[value.nodeType];\n },\n isFragment(value) {\n return value?.nodeType === COMMON_NODE_TYPES.DOCUMENT_FRAGMENT;\n },\n isStringOrObservable(value) {\n return this.isString(value) || this.isObservable(value);\n },\n isValidChild(child) {\n return child === null ||\n this.isElement(child) ||\n child.__$Observable ||\n child?.__$isNDElement ||\n ['string', 'number', 'boolean'].includes(typeof child);\n },\n isNDElement(child) {\n return child?.__$isNDElement;\n },\n isValidChildren(children) {\n if (!Array.isArray(children)) {\n children = [children];\n }\n\n const invalid = children.filter(child => !this.isValidChild(child));\n return invalid.length === 0;\n },\n validateChildren(children) {\n if (!Array.isArray(children)) {\n children = [children];\n }\n\n const invalid = children.filter(child => !this.isValidChild(child));\n if (invalid.length > 0) {\n throw new NativeDocumentError(`Invalid children detected: ${invalid.map(i => typeof i).join(', ')}`);\n }\n\n return children;\n },\n /**\n * Check if the data contains observables.\n * @param {Array|Object} data\n * @returns {boolean}\n */\n containsObservables(data) {\n if(!data) {\n return false;\n }\n return Validator.isObject(data)\n && Object.values(data).some(value => Validator.isObservable(value));\n },\n /**\n * Check if the data contains an observable reference.\n * @param {string} data\n * @returns {boolean}\n */\n containsObservableReference(data) {\n if(!data || typeof data !== 'string') {\n return false;\n }\n return /\\{\\{#ObItem::\\([0-9]+\\)\\}\\}/.test(data);\n },\n validateAttributes(attributes) {},\n\n validateEventCallback(callback) {\n if (typeof callback !== 'function') {\n throw new NativeDocumentError('Event callback must be a function');\n }\n },\n};\nif(process.env.NODE_ENV === 'development') {\n Validator.validateAttributes = function(attributes) {\n if (!attributes || typeof attributes !== 'object') {\n return attributes;\n }\n\n const reserved = [];\n const foundReserved = Object.keys(attributes).filter(key => reserved.includes(key));\n\n if (foundReserved.length > 0) {\n DebugManager.warn('Validator', `Reserved attributes found: ${foundReserved.join(', ')}`);\n }\n\n return attributes;\n };\n}\n\nexport default Validator;","\nexport const BOOLEAN_ATTRIBUTES = new Set([\n 'checked',\n 'selected',\n 'disabled',\n 'readonly',\n 'required',\n 'autofocus',\n 'multiple',\n 'autocomplete',\n 'hidden',\n 'contenteditable',\n 'spellcheck',\n 'translate',\n 'draggable',\n 'async',\n 'defer',\n 'autoplay',\n 'controls',\n 'loop',\n 'muted',\n 'download',\n 'reversed',\n 'open',\n 'default',\n 'formnovalidate',\n 'novalidate',\n 'scoped',\n 'itemscope',\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'playsinline',\n]);\n\nexport const BOOL_ATTRIBUTES_NAME = {\n 'allowfullscreen': 'allowFullscreen',\n 'allowpaymentrequest': 'allowPaymentRequest',\n 'async': 'async',\n 'autocomplete': 'autocomplete',\n 'autofocus': 'autofocus',\n 'autoplay': 'autoplay',\n 'checked': 'checked',\n 'controls': 'controls',\n 'default': 'default',\n 'defer': 'defer',\n 'disabled': 'disabled',\n 'download': 'download',\n 'draggable': 'draggable',\n 'formnovalidate': 'formNoValidate',\n 'contenteditable': 'contentEditable',\n 'hidden': 'hidden',\n 'itemscope': 'itemScope',\n 'loop': 'loop',\n 'multiple': 'multiple',\n 'muted': 'muted',\n 'novalidate': 'noValidate',\n 'open': 'open',\n 'playsinline': 'playsInline',\n 'readonly': 'readOnly',\n 'required': 'required',\n 'reversed': 'reversed',\n 'scoped': 'scoped',\n 'selected': 'selected',\n 'spellcheck': 'spellcheck',\n 'translate': 'translate',\n};\n","import DebugManager from '../../core/utils/debug-manager';\n\n\nconst MemoryManager = (function() {\n\n let $nextObserverId = 0;\n const $observables = new Map();\n\n return {\n /**\n * Register an observable and return an id.\n *\n * @param {ObservableItem} observable\n * @param {Function} getListeners\n * @returns {number}\n */\n register(observable) {\n const id = ++$nextObserverId;\n $observables.set(id, new WeakRef(observable));\n return id;\n },\n unregister(id) {\n $observables.delete(id);\n },\n getObservableById(id) {\n return $observables.get(id)?.deref();\n },\n cleanup() {\n for (const [_, weakObservableRef] of $observables) {\n const observable = weakObservableRef.deref();\n if (observable) {\n observable.cleanup();\n }\n }\n $observables.clear();\n },\n /**\n * Clean observables that are not referenced anymore.\n * @param {number} threshold\n */\n cleanObservables(threshold) {\n if($observables.size < threshold) return;\n let cleanedCount = 0;\n for (const [id, weakObservableRef] of $observables) {\n if (!weakObservableRef.deref()) {\n $observables.delete(id);\n cleanedCount++;\n }\n }\n if (cleanedCount > 0) {\n DebugManager.log('Memory Auto Clean', `🧹 Cleaned ${cleanedCount} orphaned observables`);\n }\n },\n };\n}());\n\nexport default MemoryManager;","import DebugManager from './debug-manager';\n\nlet PluginsManager = null;\n\nif(process.env.NODE_ENV === 'development') {\n PluginsManager = (function() {\n\n const $plugins = new Map();\n const $pluginByEvents = new Map();\n\n return {\n list() {\n return $pluginByEvents;\n },\n add(plugin, name){\n if (!plugin || typeof plugin !== 'object') {\n throw new Error(`Plugin ${name} must be an object`);\n }\n name = name || plugin.name;\n if (!name || typeof name !== 'string') {\n throw new Error('Please, provide a valid plugin name');\n }\n if($plugins.has(name)) {\n return;\n }\n\n plugin.$name = name;\n $plugins.set(name ,plugin);\n if(typeof plugin?.init === 'function') {\n plugin.init();\n }\n for(const methodName in plugin) {\n if(/^on[A-Z]/.test(methodName)) {\n const eventName = methodName.replace(/^on/, '');\n if(!$pluginByEvents.has(eventName)) {\n $pluginByEvents.set(eventName, new Set());\n }\n $pluginByEvents.get(eventName).add(plugin);\n }\n }\n },\n remove(pluginName){\n if(!$plugins.has(pluginName)) {\n return;\n }\n const plugin = $plugins.get(pluginName);\n if(typeof plugin.cleanup === 'function') {\n plugin.cleanup();\n }\n for(const [name, sets] of $pluginByEvents.entries() ) {\n if(sets.has(plugin)) {\n sets.delete(plugin);\n }\n if(sets.size === 0) {\n $pluginByEvents.delete(name);\n }\n }\n $plugins.delete(pluginName);\n },\n emit(eventName, ...data) {\n if(!$pluginByEvents.has(eventName)) {\n return;\n }\n const plugins = $pluginByEvents.get(eventName);\n\n for(const plugin of plugins) {\n const callback = plugin['on'+eventName];\n if(typeof callback === 'function') {\n try{\n callback.call(plugin, ...data);\n } catch (error) {\n DebugManager.error('Plugin Manager', `Error in plugin ${plugin.$name} for event ${eventName}`, error);\n }\n }\n }\n },\n };\n }());\n}\n\nexport default PluginsManager;","import Validator from './validator';\n\n/**\n * Calls a function with the given arguments and optional context.\n *\n * @internal\n * @param {Function} fn - Function to invoke\n * @param {Array} args - Arguments to pass\n * @param {Object|null} [context] - `this` context, or null to call without binding\n */\nconst invoke = function(fn, args, context) {\n if(context) {\n fn.apply(context, args);\n } else {\n fn(...args);\n }\n};\n/**\n *\n * @param {Function} fn\n * @param {number} delay\n * @param {{leading?:Boolean, trailing?:Boolean, debounce?:Boolean, check: Function}}options\n * @returns {(function(...[*]): void)|*}\n */\nexport const debounce = function(fn, delay, options = {}) {\n let timer = null;\n let lastArgs = null;\n\n return function(...args) {\n const context = options.context === true ? this : null;\n let scopeDelay = delay;\n if(options.check) {\n const response = options.check(...args);\n if(typeof response === 'number') {\n scopeDelay = response;\n }\n }\n lastArgs = args;\n\n // debounce mode: reset the timer for each call\n clearTimeout(timer);\n timer = setTimeout(() => invoke(fn, lastArgs, context), delay);\n };\n};\n\nexport const nextTick = function(fn) {\n let pending = false;\n return function(...args) {\n if (pending) return;\n pending = true;\n\n Promise.resolve().then(() => {\n fn.apply(this, args);\n pending = false;\n });\n };\n};\n\n\n/**\n * Returns the unique key for a given item, used by ForEach and ForEachArray for DOM diffing.\n * Resolution order:\n * 1. If key is a function: calls key(item, defaultKey)\n * 2. If key is a string: reads item[key] (unwrapping observables)\n * 3. Otherwise: returns item value or defaultKey\n *\n * @param {*} item - The item to extract a key from\n * @param {string|number} defaultKey - Fallback key (usually the array index)\n * @param {string|Function|null} key - Key property name or custom key function\n * @returns {string|number} The resolved unique key\n */\nexport const getKey = (item, defaultKey, key) => {\n if (Validator.isString(key)) {\n const val = Validator.isObservable(item) ? item.val() : item;\n const result = val?.[key];\n return Validator.isObservable(result) ? result.val() : (result ?? defaultKey);\n }\n\n if (Validator.isFunction(key)) {\n return key(item, defaultKey);\n }\n\n const val = Validator.isObservable(item) ? item.val() : item;\n return val ?? defaultKey;\n};\n\n/**\n * Trims all leading and trailing occurrences of char from str.\n *\n * @param {string} str - String to trim\n * @param {string} char - Character to remove from both ends\n * @returns {string} Trimmed string\n * @example\n * trim('/foo/bar/', '/'); // 'foo/bar'\n */\nexport const trim = function(str, char) {\n return str.replace(new RegExp(`^[${char}]+|[${char}]+$`, 'g'), '');\n};\n\n/**\n * Deep clones a value. Uses structuredClone when available.\n * Handles: primitives, Dates, Arrays, plain Objects.\n * Observables are kept by reference (not cloned); onObservableFound is called for each.\n *\n * @param {*} value - Value to clone\n * @param {((observable: ObservableItem) => void)?} [onObservableFound] - Called for each observable encountered\n * @returns {*} Deep clone of the value\n */\nexport const deepClone = (value, onObservableFound) => {\n try {\n if(window.structuredClone !== undefined) {\n return window.structuredClone(value);\n }\n } catch (e){}\n\n if (value === null || typeof value !== 'object') {\n return value;\n }\n\n // Dates\n if (value instanceof Date) {\n return new Date(value.getTime());\n }\n\n // Arrays\n if (Array.isArray(value)) {\n return value.map(item => deepClone(item));\n }\n\n // Observables - keep the référence\n if (Validator.isObservable(value)) {\n onObservableFound && onObservableFound(value);\n return value;\n }\n\n // Objects\n const cloned = {};\n for (const key in value) {\n if (Object.hasOwn(value, key)) {\n cloned[key] = deepClone(value[key]);\n }\n }\n return cloned;\n};","import NativeDocumentError from '../errors/NativeDocumentError';\n\nexport const LocalStorage = {\n getJson(key) {\n const value = localStorage.getItem(key);\n try {\n return JSON.parse(value);\n } catch (e) {\n throw new NativeDocumentError('invalid_json:'+key);\n }\n },\n getNumber(key) {\n return Number(this.get(key));\n },\n getBool(key) {\n const value = this.get(key);\n return value === 'true' || value === '1';\n },\n setJson(key, value) {\n localStorage.setItem(key, JSON.stringify(value));\n },\n setBool(key, value) {\n localStorage.setItem(key, value ? 'true' : 'false');\n },\n get(key, defaultValue = null) {\n return localStorage.getItem(key) || defaultValue;\n },\n set(key, value) {\n return localStorage.setItem(key, value);\n },\n remove(key) {\n localStorage.removeItem(key);\n },\n has(key) {\n return localStorage.getItem(key) != null;\n },\n};\n\nexport const $getFromStorage = (key, value) => {\n if(!LocalStorage.has(key)) {\n return value;\n }\n switch (typeof value) {\n case 'object': return LocalStorage.getJson(key) ?? value;\n case 'boolean': return LocalStorage.getBool(key) ?? value;\n case 'number': return LocalStorage.getNumber(key) ?? value;\n default: return LocalStorage.get(key, value) ?? value;\n }\n};\n\nexport const $saveToStorage = (value) => {\n switch (typeof value) {\n case 'object': return LocalStorage.setJson;\n case 'boolean': return LocalStorage.setBool;\n default: return LocalStorage.set;\n }\n};","import DebugManager from '../../core/utils/debug-manager';\nimport MemoryManager from './MemoryManager';\nimport NativeDocumentError from '../../core/errors/NativeDocumentError';\nimport PluginsManager from '../../core/utils/plugins-manager';\nimport Validator from '../../core/utils/validator';\nimport {deepClone} from '../utils/helpers';\nimport {$getFromStorage, $saveToStorage} from '../utils/localstorage';\n\n/**\n * Reactive primitive value container.\n * Notifies subscribers whenever its value changes.\n * The core building block of NativeDocument's reactivity system.\n *\n * @constructor\n * @param {*} value - Initial value of the observable\n * @param {{ propagation?: boolean, reset?: boolean, deep?: boolean } | null} [configs=null] - Optional configuration\n * @param {boolean} [configs.reset] - If true, stores the initial value for later reset via .reset()\n * @param {boolean} [configs.propagation] - Controls whether changes propagate to parent observables\n * @example\n * const count = new ObservableItem(0);\n * const name = new ObservableItem('John', { reset: true });\n */\nexport default function ObservableItem(value, configs = null) {\n value = Validator.isObservable(value) ? value.val() : value;\n\n this.$previousValue = null;\n this.$currentValue = value;\n if(process.env.NODE_ENV === 'development') {\n this.$isCleanedUp = false;\n }\n\n this.$firstListener = null;\n this.$listeners = null;\n this.$watchers = null;\n\n this.$memoryId = null;\n\n if(configs) {\n this.configs = configs;\n if(configs.reset) {\n this.$initialValue = Validator.isObject(value) ? deepClone(value) : value;\n }\n }\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('CreateObservable', this);\n }\n}\n\nObject.defineProperty(ObservableItem.prototype, '$value', {\n get() {\n return this.$currentValue;\n },\n set(value) {\n this.set(value);\n },\n configurable: true,\n});\n\nObservableItem.prototype.__$Observable = true;\nObservableItem.prototype.__$isObservable = true;\nObservableItem.computed = () => {};\n\nconst DEFAULT_OPERATIONS = {};\nconst noneTrigger = function() {};\n\n/**\n * Intercepts and transforms values before they are set on the observable.\n * The interceptor can modify the value or return undefined to use the original value.\n *\n * @param {(value) => any} callback - Interceptor function that receives (newValue, currentValue) and returns the transformed value or undefined\n * @returns {ObservableItem} The observable instance for chaining\n * @example\n * const count = Observable(0);\n * count.intercept((newVal, oldVal) => Math.max(0, newVal)); // Prevent negative values\n */\nObservableItem.prototype.intercept = function(callback) {\n this.$interceptor = callback;\n this.set = this.$setWithInterceptor;\n return this;\n};\n\n/**\n * Intercepts mutations of the array observable before they are applied.\n * Allows transforming or cancelling array operations.\n *\n * @param {(operation: { action: string, args: any[] }) => void} callback - Called before each mutation with the operation details\n * @returns {ObservableItem} this\n */\nObservableItem.prototype.interceptMutations = function(callback) {\n this.$mutationInterceptor = callback;\n return this;\n};\n\n/**\n * Calls the first registered subscriber directly (internal optimisation).\n *\n * @internal\n * @param {{ action?: string, args?: any[], result?: any }} [operations] - Mutation metadata\n */\nObservableItem.prototype.triggerFirstListener = function(operations) {\n this.$firstListener(this.$currentValue, this.$previousValue, operations);\n};\n\n/**\n * Calls all registered subscribers (internal).\n *\n * @internal\n * @param {{ action?: string, args?: any[], result?: any }} [operations] - Mutation metadata\n */\nObservableItem.prototype.triggerListeners = function(operations) {\n const $listeners = this.$listeners;\n const $previousValue = this.$previousValue;\n const $currentValue = this.$currentValue;\n\n for(let i = 0, length = $listeners.length; i < length; i++) {\n $listeners[i]($currentValue, $previousValue, operations);\n }\n};\n\n/**\n * Triggers callbacks registered via .on() for the current and previous values (internal).\n *\n * @internal\n * @param {{ action?: string, args?: any[], result?: any }} [operations] - Mutation metadata\n */\nObservableItem.prototype.triggerWatchers = function(operations) {\n const $watchers = this.$watchers;\n const $previousValue = this.$previousValue;\n const $currentValue = this.$currentValue;\n\n const $currentValueCallbacks = $watchers.get($currentValue);\n const $previousValueCallbacks = $watchers.get($previousValue);\n if($currentValueCallbacks) {\n $currentValueCallbacks(true, $previousValue, operations);\n }\n if($previousValueCallbacks) {\n $previousValueCallbacks(false, $currentValue, operations);\n }\n};\n\n/**\n * Triggers both watchers and all subscribers (internal).\n *\n * @internal\n * @param {{ action?: string, args?: any[], result?: any }} [operations] - Mutation metadata\n */\nObservableItem.prototype.triggerAll = function(operations) {\n this.triggerWatchers(operations);\n this.triggerListeners(operations);\n};\n\n/**\n * Triggers both watchers and the first subscriber only (internal optimization).\n *\n * @internal\n * @param {{ action?: string, args?: any[], result?: any }} [operations] - Mutation metadata\n */\nObservableItem.prototype.triggerWatchersAndFirstListener = function(operations) {\n this.triggerWatchers(operations);\n this.triggerFirstListener(operations);\n};\n\n/**\n * Selects and assigns the optimal trigger strategy based on the current\n * combination of listeners and watchers (internal).\n * Called automatically after every subscribe / unsubscribe / on / off.\n *\n * @internal\n */\nObservableItem.prototype.assocTrigger = function() {\n this.$firstListener = null;\n if(this.$watchers?.size && this.$listeners?.length) {\n this.$firstListener = this.$listeners[0];\n this.trigger = this.$firstListener.length === 0 ? this.$firstListener : this.triggerFirstListener;\n this.trigger = (this.$listeners.length === 1) ? this.triggerWatchersAndFirstListener : this.triggerAll;\n return;\n }\n if(this.$listeners?.length) {\n if(this.$listeners.length === 1) {\n this.$firstListener = this.$listeners[0];\n this.trigger = this.$firstListener.length === 0 ? this.$firstListener : this.triggerFirstListener;\n }\n else {\n this.trigger = this.triggerListeners;\n }\n return;\n }\n if(this.$watchers?.size) {\n this.trigger = this.triggerWatchers;\n return;\n }\n this.trigger = noneTrigger;\n};\nObservableItem.prototype.trigger = noneTrigger;\n\n\nconst $setOperation = { action: 'set' };\nObservableItem.prototype.$updateWithNewValue = function(newValue) {\n newValue = newValue?.__$isObservable ? newValue.val() : newValue;\n if(this.$currentValue === newValue) {\n return;\n }\n this.$previousValue = this.$currentValue;\n this.$currentValue = newValue;\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('ObservableBeforeChange', this);\n }\n this.trigger($setOperation);\n this.$previousValue = null;\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('ObservableAfterChange', this);\n }\n};\n\n/**\n * @param {*} data\n */\nObservableItem.prototype.$setWithInterceptor = function(data) {\n let newValue = (typeof data === 'function') ? data(this.$currentValue) : data;\n const result = this.$interceptor(newValue, this.$currentValue);\n\n if (result !== undefined) {\n newValue = result;\n }\n\n this.$updateWithNewValue(newValue);\n};\n\n\n/**\n * @param {*} data\n */\nObservableItem.prototype.$basicSet = function(data) {\n const newValue = (typeof data === 'function') ? data(this.$currentValue) : data;\n this.$updateWithNewValue(newValue);\n};\n\nObservableItem.prototype.set = ObservableItem.prototype.$basicSet;\n\n/**\n * Returns the current value of the observable.\n *\n * @returns {*} The current value\n * @example\n * const count = Observable(42);\n * count.val(); // 42\n */\nObservableItem.prototype.val = function() {\n return this.$currentValue;\n};\n\n/**\n * Disconnects all listeners and watchers and nullifies internal state.\n * Does not trigger cleanup callbacks. Prefer .cleanup() for full disposal.\n *\n * @returns {void}\n */\nObservableItem.prototype.disconnectAll = function() {\n this.$previousValue = null;\n this.$currentValue = null;\n this.$listeners = null;\n this.$watchers = null;\n this.trigger = noneTrigger;\n};\n\n/**\n * Registers a cleanup callback that will be executed when the observable is cleaned up.\n * Useful for disposing resources, removing event listeners, or other cleanup tasks.\n *\n * @param {Function} callback - Cleanup function to execute on observable disposal\n * @example\n * const obs = Observable(0);\n * obs.onCleanup(() => console.log('Cleaned up!'));\n * obs.cleanup(); // Logs: \"Cleaned up!\"\n */\nObservableItem.prototype.onCleanup = function(callback) {\n this.$cleanupListeners = this.$cleanupListeners ?? [];\n this.$cleanupListeners.push(callback);\n};\n\n/**\n * Disposes the observable: runs cleanup callbacks, unregisters from MemoryManager,\n * disconnects all listeners and removes the $value property.\n *\n * @returns {void}\n * @example\n * const obs = Observable(0);\n * obs.onCleanup(() => console.log('disposed'));\n * obs.cleanup(); // logs 'disposed', frees memory\n */\nObservableItem.prototype.cleanup = function() {\n if (this.$cleanupListeners) {\n for (let i = 0; i < this.$cleanupListeners.length; i++) {\n this.$cleanupListeners[i]();\n }\n this.$cleanupListeners = null;\n }\n MemoryManager.unregister(this.$memoryId);\n this.disconnectAll();\n if(process.env.NODE_ENV === 'development') {\n this.$isCleanedUp = true;\n }\n delete this.$value;\n};\n\n\n/**\n * Subscribes to value changes. The callback is called every time the value changes.\n * Returns nothing — use .unsubscribe(callback) to remove the listener.\n *\n * @param {(current: *, previous: *, operations?: { action?: string }) => void} callback - Called on each value change\n * @example\n * const count = Observable(0);\n * count.subscribe((val) => console.log('New value:', val));\n * count.$value++; // logs 'New value: 1'\n */\nObservableItem.prototype.subscribe = function(callback) {\n if(process.env.NODE_ENV === 'development') {\n if (this.$isCleanedUp) {\n DebugManager.warn('Observable subscription', '⚠️ Attempted to subscribe to a cleaned up observable.');\n return;\n }\n if (typeof callback !== 'function') {\n throw new NativeDocumentError('Callback must be a function');\n }\n }\n this.$listeners = this.$listeners ?? [];\n\n this.$listeners.push(callback);\n this.assocTrigger();\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('ObservableSubscribe', this);\n }\n};\n\n/**\n * Watches for a specific value and executes callback when the observable equals that value.\n * Creates a watcher that only triggers when the observable changes to the specified value.\n *\n * @param {*} value - The value to watch for\n * @param {(value) => void|ObservableItem} callback - Callback function or observable to set when value matches\n * @example\n * const status = Observable('idle');\n * status.on('loading', () => console.log('Started loading'));\n * status.on('error', isError); // Set another observable\n */\nObservableItem.prototype.on = function(value, callback) {\n this.$watchers = this.$watchers ?? new Map();\n\n let watchValueList = this.$watchers.get(value);\n\n if(callback.__$isObservable) {\n callback = callback.set.bind(callback);\n }\n\n if(!watchValueList) {\n watchValueList = callback;\n this.$watchers.set(value, callback);\n } else if(!Validator.isArray(watchValueList.list)) {\n watchValueList = [watchValueList, callback];\n callback = (value) => {\n for(let i = 0, length = watchValueList.length; i < length; i++) {\n watchValueList[i](value);\n }\n };\n callback.list = watchValueList;\n this.$watchers.set(value, callback);\n } else {\n watchValueList.list.push(callback);\n }\n\n this.assocTrigger();\n};\n\n/**\n * Removes a watcher for a specific value. If no callback is provided, removes all watchers for that value.\n *\n * @param {*} value - The value to stop watching\n * @param {Function} [callback] - Specific callback to remove. If omitted, removes all watchers for this value\n * @example\n * const status = Observable('idle');\n * const handler = () => console.log('Loading');\n * status.on('loading', handler);\n * status.off('loading', handler); // Remove specific handler\n * status.off('loading'); // Remove all handlers for 'loading'\n */\nObservableItem.prototype.off = function(value, callback) {\n if(!this.$watchers) return;\n\n const watchValueList = this.$watchers.get(value);\n if(!watchValueList) return;\n\n if(!callback || !Array.isArray(watchValueList.list)) {\n this.$watchers?.delete(value);\n this.assocTrigger();\n return;\n }\n const index = watchValueList.indexOf(callback);\n watchValueList?.splice(index, 1);\n if(watchValueList.length === 1) {\n this.$watchers.set(value, watchValueList[0]);\n }\n else if(watchValueList.length === 0) {\n this.$watchers?.delete(value);\n }\n this.assocTrigger();\n};\n\n/**\n * Subscribes to the observable but automatically unsubscribes after the first time the predicate matches.\n *\n * @param {(value) => Boolean|any} predicate - Value to match or function that returns true when condition is met\n * @param {(value) => void} callback - Callback to execute when predicate matches, receives the matched value\n * @example\n * const status = Observable('loading');\n * status.once('ready', (val) => console.log('Ready!'));\n * status.once(val => val === 'error', (val) => console.log('Error occurred'));\n */\nObservableItem.prototype.once = function(predicate, callback) {\n const fn = typeof predicate === 'function' ? predicate : (v) => v === predicate;\n\n const handler = (val) => {\n if (fn(val)) {\n this.unsubscribe(handler);\n callback(val);\n }\n };\n this.subscribe(handler);\n};\n\n\n/**\n * Removes a previously registered subscriber.\n *\n * @param {Function} callback - The exact function reference passed to .subscribe()\n * @returns {void}\n * @example\n * const handler = (val) => console.log(val);\n * count.subscribe(handler);\n * count.unsubscribe(handler);\n */\nObservableItem.prototype.unsubscribe = function(callback) {\n if(!this.$listeners) return;\n const index = this.$listeners.indexOf(callback);\n if (index > -1) {\n this.$listeners.splice(index, 1);\n }\n this.assocTrigger();\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('ObservableUnsubscribe', this);\n }\n};\n\n\n\n\n/**\n * Gets a property value from the observable's current value.\n * If the property is an observable, returns its value.\n *\n * @param {string|number} key - Property key to retrieve\n * @returns {*} The value of the property, unwrapped if it's an observable\n * @example\n * const user = Observable({ name: 'John', age: Observable(25) });\n * user.get('name'); // 'John'\n * user.get('age'); // 25 (unwrapped from observable)\n */\nObservableItem.prototype.get = function(key) {\n const item = this.$currentValue[key];\n return Validator.isObservable(item) ? item.val() : item;\n};\n\n\n/**\n * Compares the observable's current value with another value or observable.\n *\n * @param {*|ObservableItem} other - Value or observable to compare against\n * @returns {boolean} True if values are equal\n * @example\n * const a = Observable(5);\n * const b = Observable(5);\n * a.equals(5); // true\n * a.equals(b); // true\n * a.equals(10); // false\n */\nObservableItem.prototype.equals = function(other) {\n if(Validator.isObservable(other)) {\n return this.$currentValue === other.$currentValue;\n }\n return this.$currentValue === other;\n};\n\n/**\n * Converts the observable's current value to a boolean.\n *\n * @returns {boolean} The boolean representation of the current value\n * @example\n * const count = Observable(0);\n * count.toBool(); // false\n * count.set(5);\n * count.toBool(); // true\n */\nObservableItem.prototype.toBool = function() {\n return !!this.$currentValue;\n};\n\n/**\n * Toggles the boolean value of the observable (false becomes true, true becomes false).\n *\n * @example\n * const isOpen = Observable(false);\n * isOpen.toggle(); // Now true\n * isOpen.toggle(); // Now false\n */\nObservableItem.prototype.toggle = function() {\n this.set(!this.$currentValue);\n};\n\n/**\n * Resets the observable to its initial value.\n * Only works if the observable was created with { reset: true } config.\n *\n * @example\n * const count = Observable(0, { reset: true });\n * count.set(10);\n * count.reset(); // Back to 0\n */\nObservableItem.prototype.reset = function() {\n if(!this.configs?.reset) {\n return;\n }\n const resetValue = (Validator.isObject(this.$initialValue))\n ? deepClone(this.$initialValue, (observable) => {\n observable.reset();\n })\n : this.$initialValue;\n this.set(resetValue);\n};\n\n/**\n * Returns a string representation of the observable's current value.\n *\n * @returns {string} String representation of the current value\n */\nObservableItem.prototype.toString = function() {\n return String(this.$currentValue);\n};\n\n/**\n * Returns the primitive value of the observable (its current value).\n * Called automatically in type coercion contexts.\n *\n * @returns {*} The current value of the observable\n */\nObservableItem.prototype.valueOf = function() {\n return this.$currentValue;\n};\n\n/**\n * Syncs this observable's value to localStorage and restores it on load.\n * Optionally transforms values on get and set.\n *\n * @param {string} key - localStorage key\n * @param {{ get?: (stored: any) => T, set?: (value: T) => any }} [options={}] - Transform options\n * @param {Function} [options.get] - Transform the stored value before applying it\n * @param {Function} [options.set] - Transform the value before saving it\n * @returns {ObservableItem} this — chainable\n * @example\n * const theme = Observable('light').persist('app-theme');\n * const count = Observable(0).persist('count', {\n * get: (v) => parseInt(v),\n * set: (v) => String(v),\n * });\n */\nObservableItem.prototype.persist = function(key, options = {}) {\n let value = $getFromStorage(key, this.$currentValue);\n if(options.get) {\n value = options.get(value);\n }\n this.set(value);\n const saver = $saveToStorage(this.$currentValue);\n this.subscribe((newValue) => {\n saver(key, options.set ? options.set(newValue) : newValue);\n });\n return this;\n};\n\n/**\n * Creates a new ObservableItem with a deep clone of the current value.\n * For objects implementing a .clone() method, delegates to that method.\n *\n * @returns {ObservableItem} A new independent observable with the cloned value\n * @example\n * const original = Observable({ x: 1 });\n * const copy = original.clone();\n * copy.set({ x: 99 });\n * original.val(); // { x: 1 } — untouched\n */\nObservableItem.prototype.clone = function() {\n let clonedValue = this.$currentValue;\n\n if(clonedValue && typeof clonedValue === 'object') {\n if(typeof clonedValue.clone === 'function') {\n clonedValue = clonedValue.clone();\n } else {\n clonedValue = structuredClone(clonedValue);\n }\n }\n\n return new ObservableItem(clonedValue);\n};","import Validator from '../../utils/validator';\n\n/**\n * Converts a value to a Date object. Returns the value as-is if it's already a Date.\n *\n * @param {Date|number|string} value - Value to convert\n * @returns {Date}\n */\nexport function toDate(value) {\n if (value instanceof Date) return value;\n return new Date(value);\n}\n\n/**\n * Returns true if two date values fall on the same calendar day (year, month, day).\n *\n * @param {Date|number|string} date1 - First date\n * @param {Date|number|string} date2 - Second date\n * @returns {boolean}\n */\nexport function isSameDay(date1, date2) {\n const d1 = toDate(date1);\n const d2 = toDate(date2);\n return d1.getFullYear() === d2.getFullYear() &&\n d1.getMonth() === d2.getMonth() &&\n d1.getDate() === d2.getDate();\n}\n\n/**\n * Returns the total number of seconds elapsed since midnight for the given date's time component.\n * Used internally for time range comparisons.\n *\n * @param {Date|number|string} date - Date value to extract time from\n * @returns {number} Seconds since midnight (0–86399)\n */\nexport function getSecondsOfDay(date) {\n const d = toDate(date);\n return (d.getHours() * 3600) + (d.getMinutes() * 60) + d.getSeconds();\n}\n\n/**\n * Creates a FilterResult from a single observable or static value and a comparison callback.\n * If the value is an observable, it is registered as a dependency so the filter reacts to changes.\n *\n * @param {*|ObservableItem} observableOrValue - Observable or static value used as the comparison target\n * @param {(value: *, target: *) => boolean} callbackFn - Filter function receiving (item value, target value)\n * @returns {{ dependencies: ObservableItem|null, callback: (value: *) => boolean }} FilterResult\n */\nexport function createFilter(observableOrValue, callbackFn){\n const isObservable = Validator.isObservable(observableOrValue);\n\n return {\n dependencies: isObservable ? observableOrValue : null,\n callback: (value) => callbackFn(value, isObservable ? observableOrValue.val() : observableOrValue),\n };\n}\n\n/**\n * Creates a FilterResult from multiple observable or static sources and a multi-value comparison callback.\n * All observable sources are registered as dependencies.\n *\n * @param {Array<*|ObservableItem>} sources - Array of observables or static values\n * @param {(value: *, targets: any[]) => boolean} callbackFn - Filter function receiving (item value, array of resolved source values)\n * @returns {{ dependencies: ObservableItem[]|null, callback: (value: *) => boolean }} FilterResult\n */\nexport function createMultiSourceFilter(sources, callbackFn){\n const observables = sources.filter(Validator.isObservable);\n\n const getValues = () => sources.map(src =>\n Validator.isObservable(src) ? src.val() : src,\n );\n\n return {\n dependencies: observables.length > 0 ? observables : null,\n callback: (value) => callbackFn(value, getValues()),\n };\n}","import Validator from '../../utils/validator';\nimport { createFilter, createMultiSourceFilter } from './utils';\nimport DebugManager from '../debug-manager';\n\n/**\n * Creates a filter that passes values strictly equal to the target.\n *\n * @param {*|ObservableItem} observableOrValue - Static value or observable to compare against\n * @returns {FilterResult}\n * @example\n * const statusFilter = equals('active');\n * users.where({ status: statusFilter });\n */\nexport function equals(observableOrValue){\n return createFilter(observableOrValue, (value, target) => value === target);\n}\n\n/**\n * Creates a filter that passes values not strictly equal to the target.\n *\n * @param {*|ObservableItem} observableOrValue - Static value or observable\n * @returns {FilterResult}\n */\nexport function notEquals(observableOrValue){\n return createFilter(observableOrValue, (value, target) => value !== target);\n}\n\n/**\n * Creates a filter that passes values greater than the target.\n *\n * @param {number|ObservableItem<number>} observableOrValue - Threshold value or observable\n * @returns {FilterResult}\n */\nexport function greaterThan(observableOrValue){\n return createFilter(observableOrValue, (value, target) => value > target);\n}\n\n/**\n * Creates a filter that passes values greater than or equal to the target.\n *\n * @param {number|ObservableItem<number>} observableOrValue - Threshold value or observable\n * @returns {FilterResult}\n */\nexport function greaterThanOrEqual(observableOrValue){\n return createFilter(observableOrValue, (value, target) => value >= target);\n}\n\n/**\n * Creates a filter that passes values less than the target.\n *\n * @param {number|ObservableItem<number>} observableOrValue - Threshold value or observable\n * @returns {FilterResult}\n */\nexport function lessThan(observableOrValue){\n return createFilter(observableOrValue, (value, target) => value < target);\n}\n\n/**\n * Creates a filter that passes values less than or equal to the target.\n *\n * @param {number|ObservableItem<number>} observableOrValue - Threshold value or observable\n * @returns {FilterResult}\n */\nexport function lessThanOrEqual(observableOrValue){\n return createFilter(observableOrValue, (value, target) => value <= target);\n}\n\n/**\n * Creates a filter that passes values between min and max (inclusive).\n * Both min and max can be static values or observables.\n *\n * @param {number|ObservableItem<number>} minObservableOrValue - Lower bound\n * @param {number|ObservableItem<number>} maxObservableOrValue - Upper bound\n * @returns {FilterResult}\n * @example\n * items.where({ age: between(18, 65) });\n */\nexport function between(minObservableOrValue, maxObservableOrValue){\n return createMultiSourceFilter(\n [minObservableOrValue, maxObservableOrValue],\n (value, [min, max]) => value >= min && value <= max,\n );\n}\n\n/**\n * Creates a filter that passes values included in the given array.\n *\n * @param {Array|ObservableItem<Array>} observableOrArray - Array to check membership in\n * @returns {FilterResult}\n * @example\n * items.where({ role: inArray(['admin', 'editor']) });\n */\nexport function inArray(observableOrArray){\n return createFilter(observableOrArray, (value, arr) => arr.includes(value));\n}\n\n/**\n * Creates a filter that passes values not included in the given array.\n *\n * @param {Array|ObservableItem<Array>} observableOrArray - Array to check exclusion from\n * @returns {FilterResult}\n */\nexport function notIn(observableOrArray){\n return createFilter(observableOrArray, (value, arr) => !arr.includes(value));\n}\n\n/**\n * Creates a filter that passes when the value is empty (null, undefined, empty string, or empty array).\n * Pass false as the argument to filter for non-empty values instead.\n *\n * @param {boolean|ObservableItem<boolean>} [observableOrValue=true] - If true, filters empty values; if false, filters non-empty\n * @returns {FilterResult}\n */\nexport function isEmpty(observableOrValue = true){\n return createFilter(observableOrValue, (value, shouldBeEmpty) => {\n const isActuallyEmpty = !value || value === '' ||\n (Array.isArray(value) && value.length === 0);\n\n return shouldBeEmpty ? isActuallyEmpty : !isActuallyEmpty;\n });\n}\n\n/**\n * Creates a filter that passes when the value is not empty.\n * Pass false as the argument to filter for empty values instead.\n *\n * @param {boolean|ObservableItem<boolean>} [observableOrValue=true] - If true, filters non-empty values\n * @returns {FilterResult}\n */\nexport function isNotEmpty(observableOrValue = true){\n return createFilter(observableOrValue, (value, shouldBeNotEmpty) => {\n const isActuallyNotEmpty = !!value && value !== '' &&\n (!Array.isArray(value) || value.length > 0);\n\n return shouldBeNotEmpty ? isActuallyNotEmpty : !isActuallyNotEmpty;\n });\n}\n\n/**\n * Creates a filter that tests the value against a pattern (string or regex).\n *\n * @param {string|RegExp|ObservableItem} patternObservableOrValue - Pattern to match against\n * @param {boolean|ObservableItem<boolean>} [asRegexObservableOrValue=true] - If true, treat pattern as a regex; if false, use case-insensitive substring match\n * @param {string|ObservableItem<string>} [flagsObservableOrValue=''] - Regex flags (e.g. 'i', 'g')\n * @returns {FilterResult}\n * @example\n * const search = Observable('john');\n * users.where({ name: match(search) }); // regex match, reactive\n * users.where({ name: match('john', false) }); // case-insensitive substring\n */\nexport function match(patternObservableOrValue, asRegexObservableOrValue = true, flagsObservableOrValue = ''){\n return createMultiSourceFilter(\n [patternObservableOrValue, asRegexObservableOrValue, flagsObservableOrValue],\n (value, [pattern, asRegex, flags]) => {\n if (!pattern) return true;\n\n if (asRegex){\n try {\n const regex = new RegExp(pattern, flags);\n return regex.test(String(value));\n } catch (error){\n DebugManager.warn('Invalid regex pattern:', pattern, error);\n return false;\n }\n }\n\n if (!flags || flags === ''){\n return String(value).toLowerCase().includes(String(pattern).toLowerCase());\n }\n return String(value).includes(String(pattern));\n },\n );\n}\n\n/**\n * Combines multiple filters with AND logic — all filters must pass.\n * Merges dependencies from all child filters automatically.\n *\n * @param {...FilterResult} filters - Filters to combine\n * @returns {FilterResult}\n * @example\n * items.where({ _: and(greaterThan(18), lessThan(65)) });\n */\nexport function and(...filters){\n const dependencies = filters\n .flatMap(f => f.dependencies ? (Array.isArray(f.dependencies) ? f.dependencies : [f.dependencies]) : [])\n .filter(Validator.isObservable);\n\n return {\n dependencies: dependencies.length > 0 ? dependencies : null,\n callback: (value) => filters.every(f => f.callback(value)),\n };\n}\n\n/**\n * Combines multiple filters with OR logic — at least one filter must pass.\n * Merges dependencies from all child filters automatically.\n *\n * @param {...FilterResult} filters - Filters to combine\n * @returns {FilterResult}\n * @example\n * items.where({ _: or(equals('admin'), equals('editor')) });\n */\nexport function or(...filters){\n const dependencies = filters\n .flatMap(f => f.dependencies ? (Array.isArray(f.dependencies) ? f.dependencies : [f.dependencies]) : [])\n .filter(Validator.isObservable);\n\n return {\n dependencies: dependencies.length > 0 ? dependencies : null,\n callback: (value) => filters.some(f => f.callback(value)),\n };\n}\n\n/**\n * Negates a filter — passes when the given filter does not pass.\n *\n * @param {FilterResult} filter - Filter to negate\n * @returns {FilterResult}\n * @example\n * items.where({ status: not(equals('deleted')) });\n */\nexport function not(filter){\n return {\n dependencies: filter.dependencies,\n callback: (value) => !filter.callback(value),\n };\n}\n\n/**\n * Creates a custom filter from a callback and a list of observable dependencies.\n * The callback receives the item value followed by the current values of all observables.\n *\n * @param {(value: *, ...depValues: any[]) => boolean} callbackFn - Filter function\n * @param {...ObservableItem} observables - Observable dependencies passed as extra arguments to callback\n * @returns {FilterResult}\n * @example\n * const minAge = Observable(18);\n * items.where({ age: custom((age, min) => age >= min, minAge) });\n */\nexport function custom(callbackFn, ...observables){\n const dependencies = observables.filter(Validator.isObservable);\n\n return {\n dependencies: dependencies.length > 0 ? dependencies : null,\n callback: (value) => {\n const values = observables.map(o =>\n Validator.isObservable(o) ? o.val() : o,\n );\n return callbackFn(value, ...values);\n },\n };\n}\n\nexport const gt = greaterThan;\nexport const gte = greaterThanOrEqual;\nexport const lt = lessThan;\nexport const lte = lessThanOrEqual;\nexport const eq = equals;\nexport const neq = notEquals;\nexport const all = and;\nexport const any = or;\n\n","import {createFilter, createMultiSourceFilter, getSecondsOfDay, isSameDay, toDate} from './utils';\n\n/**\n * Creates a filter that passes when the date value is on the same day as the target date.\n * Accepts Date objects, timestamps, or ISO strings.\n *\n * @param {Date|number|string|ObservableItem} observableOrValue - Target date to compare against\n * @returns {FilterResult}\n * @example\n * const today = new Date();\n * events.where({ date: dateEquals(today) });\n */\nexport const dateEquals = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return isSameDay(value, target);\n });\n};\n\n/**\n * Creates a filter that passes when the date value is strictly before the target date (day comparison).\n *\n * @param {Date|number|string|ObservableItem} observableOrValue - Target date\n * @returns {FilterResult}\n */\nexport const dateBefore = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return toDate(value) < toDate(target);\n });\n};\n\n/**\n * Creates a filter that passes when the date value is strictly after the target date (day comparison).\n *\n * @param {Date|number|string|ObservableItem} observableOrValue - Target date\n * @returns {FilterResult}\n */\nexport const dateAfter = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return toDate(value) > toDate(target);\n });\n};\n\n/**\n * Creates a filter that passes when the date value falls within the given date range (inclusive, day comparison).\n *\n * @param {Date|number|string|ObservableItem} startObservableOrValue - Start of the range\n * @param {Date|number|string|ObservableItem} endObservableOrValue - End of the range\n * @returns {FilterResult}\n * @example\n * events.where({ date: dateBetween(startDate, endDate) });\n */\nexport const dateBetween = (startObservableOrValue, endObservableOrValue) => {\n return createMultiSourceFilter(\n [startObservableOrValue, endObservableOrValue],\n (value, [start, end]) => {\n if (!value || !start || !end) return false;\n const date = toDate(value);\n return date >= toDate(start) && date <= toDate(end);\n },\n );\n};\n\n/**\n * Creates a filter that passes when the time component (HH:MM:SS) equals the target time.\n *\n * @param {Date|number|string|ObservableItem} observableOrValue - Target time\n * @returns {FilterResult}\n */\nexport const timeEquals = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n const d1 = toDate(value);\n const d2 = toDate(target);\n return d1.getHours() === d2.getHours() &&\n d1.getMinutes() === d2.getMinutes() &&\n d1.getSeconds() === d2.getSeconds();\n });\n};\n\n/**\n * Creates a filter that passes when the time component is strictly after the target time.\n *\n * @param {Date|number|string|ObservableItem} observableOrValue - Target time\n * @returns {FilterResult}\n */\nexport const timeAfter = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return getSecondsOfDay(value) > getSecondsOfDay(target);\n });\n};\n\n/**\n * Creates a filter that passes when the time component is strictly before the target time.\n *\n * @param {Date|number|string|ObservableItem} observableOrValue - Target time\n * @returns {FilterResult}\n */\nexport const timeBefore = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return getSecondsOfDay(value) < getSecondsOfDay(target);\n });\n};\n\n/**\n * Creates a filter that passes when the time component falls within the given time range (inclusive).\n *\n * @param {Date|number|string|ObservableItem} startObservableOrValue - Start time\n * @param {Date|number|string|ObservableItem} endObservableOrValue - End time\n * @returns {FilterResult}\n */\nexport const timeBetween = (startObservableOrValue, endObservableOrValue) => {\n return createMultiSourceFilter([startObservableOrValue, endObservableOrValue],\n (value, [start, end]) => {\n if (!value || !start || !end) return false;\n const date = getSecondsOfDay(value);\n return date >= getSecondsOfDay(start) && date <= getSecondsOfDay(end);\n },\n );\n};\n\n/**\n * Creates a filter that passes when the full datetime (date + time) equals the target exactly.\n *\n * @param {Date|number|string|ObservableItem} observableOrValue - Target datetime\n * @returns {FilterResult}\n */\nexport const dateTimeEquals = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return toDate(value).getTime() === toDate(target).getTime();\n });\n};\n\n/**\n * Creates a filter that passes when the full datetime is strictly after the target.\n *\n * @param {Date|number|string|ObservableItem} observableOrValue - Target datetime\n * @returns {FilterResult}\n */\nexport const dateTimeAfter = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return toDate(value) > toDate(target);\n });\n};\n\n/**\n * Creates a filter that passes when the full datetime is strictly before the target.\n *\n * @param {Date|number|string|ObservableItem} observableOrValue - Target datetime\n * @returns {FilterResult}\n */\nexport const dateTimeBefore = (observableOrValue) => {\n return createFilter(observableOrValue, (value, target) => {\n if (!value || !target) return false;\n return toDate(value) < toDate(target);\n });\n};\n\n/**\n * Creates a filter that passes when the full datetime falls within the given range (inclusive).\n *\n * @param {Date|number|string|ObservableItem} startObservableOrValue - Start of the range\n * @param {Date|number|string|ObservableItem} endObservableOrValue - End of the range\n * @returns {FilterResult}\n */\nexport const dateTimeBetween = (startObservableOrValue, endObservableOrValue) => {\n return createMultiSourceFilter([startObservableOrValue, endObservableOrValue], (value, [start, end]) => {\n if (!value || !start || !end) return false;\n const date = toDate(value);\n return date >= toDate(start) && date <= toDate(end);\n });\n};","import { createFilter, createMultiSourceFilter } from './utils';\n\n/**\n * Creates a filter that passes when the value includes the given query string.\n * Case-insensitive by default.\n * Alias: contains\n *\n * @param {string|ObservableItem<string>} observableOrValue - Substring to search for\n * @param {boolean} [caseSensitive=false] - If true, comparison is case-sensitive\n * @returns {FilterResult}\n * @example\n * const search = Observable('john');\n * users.where({ name: includes(search) }); // reactive, case-insensitive\n * users.where({ name: includes('John', true) }); // case-sensitive\n */\nexport function includes(observableOrValue, caseSensitive = false){\n return createFilter(observableOrValue, (value, query) => {\n if (!value) return false;\n if (!query) return true;\n if (!caseSensitive){\n return String(value).toLowerCase().includes(String(query).toLowerCase());\n }\n return String(value).includes(String(query));\n });\n}\n\nexport const contains = includes;\n\n/**\n * Creates a filter that passes when the value starts with the given query string.\n * Case-insensitive by default.\n *\n * @param {string|ObservableItem<string>} observableOrValue - Prefix to search for\n * @param {boolean} [caseSensitive=false] - If true, comparison is case-sensitive\n * @returns {FilterResult}\n * @example\n * users.where({ name: startsWith('Jo') });\n */\nexport function startsWith(observableOrValue, caseSensitive = false){\n return createFilter(observableOrValue, (value, query) => {\n if (!query) return true;\n if (!caseSensitive){\n return String(value).toLowerCase().startsWith(String(query).toLowerCase());\n }\n return String(value).startsWith(String(query));\n });\n}\n\n/**\n * Creates a filter that passes when the value ends with the given query string.\n * Case-insensitive by default.\n *\n * @param {string|ObservableItem<string>} observableOrValue - Suffix to search for\n * @param {boolean} [caseSensitive=false] - If true, comparison is case-sensitive\n * @returns {FilterResult}\n * @example\n * files.where({ name: endsWith('.js') });\n */\nexport function endsWith(observableOrValue, caseSensitive = false){\n return createFilter(observableOrValue, (value, query) => {\n if (!query) return true;\n if (!caseSensitive){\n return String(value).toLowerCase().endsWith(String(query).toLowerCase());\n }\n return String(value).endsWith(String(query));\n });\n}","import {match} from '../utils/filters/index';\nimport Validator from '../utils/validator';\nimport ObservableItem from './ObservableItem.js';\nimport PluginsManager from '../utils/plugins-manager.js';\nimport NativeDocumentError from '../errors/NativeDocumentError.js';\nimport {nextTick} from '../utils/helpers';\n\nconst mutationMethods = ['push', 'pop', 'shift', 'unshift', 'reverse', 'sort', 'splice'];\nconst noMutationMethods = ['map', 'forEach', 'filter', 'reduce', 'some', 'every', 'find', 'findIndex', 'concat', 'includes', 'indexOf'];\n\n/**\n * Reactive array container extending ObservableItem.\n * Wraps a native array and triggers reactivity on mutations (push, pop, splice, etc.).\n * Use Observable.array() rather than instantiating directly.\n *\n * @constructor\n * @param {Array} target - Initial array value\n * @param {{ propagation?: boolean, deep?: boolean, reset?: boolean }|null} [configs=null] - Configuration\n * @param {boolean} [configs.deep] - If false, nested arrays are not wrapped in ObservableArray\n * @param {boolean} [configs.reset] - If true, stores initial value for .reset()\n * @example\n * const items = Observable.array([1, 2, 3]);\n * items.push(4); // triggers reactivity\n */\nconst ObservableArray = function (target, configs = null) {\n if(!Array.isArray(target)) {\n throw new NativeDocumentError('Observable.array : target must be an array');\n }\n\n ObservableItem.call(this, target, configs);\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('CreateObservableArray', this);\n }\n};\n\nObservableArray.prototype = Object.create(ObservableItem.prototype);\nObservableArray.prototype.constructor = ObservableArray;\nObservableArray.prototype.__$isObservableArray = true;\n\n\nObject.defineProperty(ObservableArray.prototype, 'length', {\n get() {\n return this.$currentValue.length;\n },\n});\n\n\nObservableArray.prototype.$mutate = function(action, args, mutateFn) {\n if(this.$mutationInterceptor) {\n const value = this.$mutationInterceptor(args, { action });\n if(args !== undefined) {\n args = value;\n }\n }\n mutateFn(args);\n};\n\nmutationMethods.forEach((method) => {\n ObservableArray.prototype[method] = function(...values) {\n return this.$mutate(method, values, (argsToUse) => {\n const result = this.$currentValue[method].apply(this.$currentValue, argsToUse);\n this.trigger({ action: method, args: argsToUse, result });\n return result;\n });\n };\n});\n\nnoMutationMethods.forEach((method) => {\n ObservableArray.prototype[method] = function(...values) {\n return this.$currentValue[method].apply(this.$currentValue, values);\n };\n});\n\n\nconst $clearEvent = { action: 'clear' };\n\n/**\n * Removes all items from the array and triggers an update.\n *\n * @returns {boolean} True if array was cleared, false if it was already empty\n * @example\n * const items = Observable.array([1, 2, 3]);\n * items.clear(); // []\n */\nObservableArray.prototype.clear = function() {\n if(this.$currentValue.length === 0) {\n return;\n }\n this.$mutate('clear', [], () => {\n this.$currentValue.length = 0;\n this.trigger($clearEvent);\n });\n return true;\n};\n\n/**\n * Returns the element at the specified index in the array.\n *\n * @param {number} index - Zero-based index of the element to retrieve\n * @returns {*} The element at the specified index\n * @example\n * const items = Observable.array(['a', 'b', 'c']);\n * items.at(1); // 'b'\n */\nObservableArray.prototype.at = function(index) {\n return this.$currentValue[index];\n};\n\n\n/**\n * Merges multiple values into the array and triggers an update.\n * Similar to push but with a different operation name.\n *\n * @param {Array} values - Array of values to merge\n * @example\n * const items = Observable.array([1, 2]);\n * items.merge([3, 4]); // [1, 2, 3, 4]\n */\nObservableArray.prototype.merge = function(values) {\n this.$mutate('merge', values, (valuesToMerge) => {\n this.$currentValue.push.apply(this.$currentValue, valuesToMerge);\n this.trigger({ action: 'merge', args: valuesToMerge });\n });\n};\n\n/**\n * Counts the number of elements that satisfy the provided condition.\n *\n * @param {(value: *, index: number) => Boolean} condition - Function that tests each element (item, index) => boolean\n * @returns {number} The count of elements that satisfy the condition\n * @example\n * const numbers = Observable.array([1, 2, 3, 4, 5]);\n * numbers.count(n => n > 3); // 2\n */\nObservableArray.prototype.count = function(condition) {\n let count = 0;\n this.$currentValue.forEach((item, index) => {\n if(condition(item, index)) {\n count++;\n }\n });\n return count;\n};\n\n/**\n * Swaps two elements at the specified indices and triggers an update.\n *\n * @param {number} indexA - Index of the first element\n * @param {number} indexB - Index of the second element\n * @returns {boolean} True if swap was successful, false if indices are out of bounds\n * @example\n * const items = Observable.array(['a', 'b', 'c']);\n * items.swap(0, 2); // ['c', 'b', 'a']\n */\nObservableArray.prototype.swap = function(indexA, indexB) {\n this.$mutate('swap', [indexA, indexB], ([indexA, indexB]) => {\n const value = this.$currentValue;\n const length = value.length;\n if(indexB < indexA) {\n const temp = indexA;\n indexA = indexB;\n indexB = temp;\n }\n if(length < indexA || length < indexB) {\n return false;\n }\n const elementA = value[indexA];\n const elementB = value[indexB];\n\n value[indexA] = elementB;\n value[indexB] = elementA;\n this.trigger({ action: 'swap', args: [indexA, indexB], result: [elementA, elementB] });\n });\n return true;\n};\n\n/**\n * Swaps two items by reference (not by index).\n * Finds indices of both items and delegates to .swap().\n *\n * @param {*} itemA - First item (by reference)\n * @param {*} itemB - Second item (by reference)\n * @returns {boolean} True if swap was successful\n * @example\n * const items = Observable.array(['a', 'b', 'c']);\n * items.swapItems('a', 'c'); // ['c', 'b', 'a']\n */\nObservableArray.prototype.swapItems = function(itemA, itemB) {\n const indexA = this.$currentValue.indexOf(itemA);\n const indexB = this.$currentValue.indexOf(itemB);\n\n return this.swap(indexA, indexB);\n};\n\n/**\n * Inserts an item immediately after the target item in the array.\n *\n * @param {*} data - Item to insert\n * @param {*} target - Existing item after which data is inserted\n * @returns {Array} Result of the underlying splice call\n * @example\n * const items = Observable.array(['a', 'c']);\n * items.insertAfter('b', 'a'); // ['a', 'b', 'c']\n */\nObservableArray.prototype.insertAfter = function(data, target) {\n const targetIndex = this.$currentValue.indexOf(target);\n return this.splice(targetIndex + 1, 0, data);\n};\n\n/**\n * Removes the element at the specified index and triggers an update.\n *\n * @param {number} index - Index of the element to remove\n * @returns {Array} Array containing the removed element, or empty array if index is invalid\n * @example\n * const items = Observable.array(['a', 'b', 'c']);\n * items.remove(1); // ['b'] - Array is now ['a', 'c']\n */\nObservableArray.prototype.remove = function(index) {\n let deleted = [];\n this.$mutate('remove', [index], ([idx]) => {\n deleted = this.$currentValue.splice(idx, 1);\n if(deleted.length === 0) {\n return;\n }\n this.trigger({action: 'remove', args: [idx], result: deleted[0]});\n });\n return deleted;\n};\n\n/**\n * Removes the first occurrence of the specified item from the array.\n *\n * @param {*} item - The item to remove\n * @returns {Array} Array containing the removed element, or empty array if item not found\n * @example\n * const items = Observable.array(['a', 'b', 'c']);\n * items.removeItem('b'); // ['b'] - Array is now ['a', 'c']\n */\nObservableArray.prototype.removeItem = function(item) {\n const indexOfItem = this.$currentValue.indexOf(item);\n if(indexOfItem === -1) {\n return [];\n }\n return this.remove(indexOfItem);\n};\n\n\n/**\n * Checks if the array has no elements.\n * Semantic alias for length === 0. Different from .clear() which empties the array.\n *\n * @returns {boolean} True if the array contains no elements\n * @example\n * const items = Observable.array([]);\n * items.empty(); // true\n */\nObservableArray.prototype.empty = function() {\n return this.$currentValue.length === 0;\n};\n\n\n/**\n * Triggers a 'populate' operation used internally by ForEachArray for batch rendering.\n * Not intended for direct use in application code.\n *\n * @internal\n * @param {number} iteration - Number of items to render\n * @param {Function} callback - Render callback for each item\n */\nObservableArray.prototype.populateAndRender = function(iteration, callback) {\n this.trigger({ action: 'populate', args: [this.$currentValue, iteration, callback] });\n};\n\n\n/**\n * Creates a filtered view of the array based on predicates.\n * The filtered array updates automatically when source data or predicates change.\n *\n * @param {Object} predicates - Object mapping property names to filter conditions or functions\n * @returns {ObservableArray} A new observable array containing filtered items\n * @example\n * const users = Observable.array([\n * { name: 'John', age: 25 },\n * { name: 'Jane', age: 30 }\n * ]);\n *\n * const adults = users.where({ age: (val) => val >= 18 });\n */\nObservableArray.prototype.where = function(predicates) {\n if(typeof predicates === 'function') {\n predicates = { _: predicates };\n }\n const sourceArray = this;\n const observableDependencies = [sourceArray];\n const filterCallbacks = {};\n\n for (const [key, rawPredicate] of Object.entries(predicates)) {\n const predicate = Validator.isObservable(rawPredicate) ? match(rawPredicate, false) : rawPredicate;\n if (predicate && typeof predicate === 'object' && 'callback' in predicate) {\n filterCallbacks[key] = predicate.callback;\n\n if (predicate.dependencies) {\n const deps = Array.isArray(predicate.dependencies)\n ? predicate.dependencies\n : [predicate.dependencies];\n observableDependencies.push.apply(observableDependencies, deps);\n }\n } else if(typeof predicate === 'function') {\n filterCallbacks[key] = predicate;\n } else {\n filterCallbacks[key] = (value) => value === predicate;\n }\n }\n\n const viewArray = new ObservableArray([]);\n\n const filters = Object.entries(filterCallbacks);\n const updateView = () => {\n const filtered = sourceArray.val().filter(item => {\n for (const [key, callback] of filters) {\n if(key === '_') {\n if (!callback(item)) return false;\n } else {\n if (!callback(item[key])) return false;\n }\n }\n return true;\n });\n\n viewArray.set(filtered);\n };\n\n observableDependencies.forEach(dep => dep.subscribe(updateView));\n\n updateView();\n\n return viewArray;\n};\n\n/**\n * Creates a filtered view where at least one of the specified fields matches the filter.\n *\n * @param {Array<string>} fields - Array of field names to check\n * @param {FilterResult} filter - Filter condition with callback and dependencies\n * @returns {ObservableArray} A new observable array containing filtered items\n * @example\n * const products = Observable.array([\n * { name: 'Apple', category: 'Fruit' },\n * { name: 'Carrot', category: 'Vegetable' }\n * ]);\n * const searchTerm = Observable('App');\n * const filtered = products.whereSome(['name', 'category'], match(searchTerm));\n */\nObservableArray.prototype.whereSome = function(fields, filter) {\n return this.where({\n _: {\n dependencies: filter.dependencies,\n callback: (item) => fields.some(field => filter.callback(item[field])),\n },\n });\n};\n\n/**\n * Creates a filtered view where all specified fields match the filter.\n *\n * @param {Array<string>} fields - Array of field names to check\n * @param {FilterResult} filter - Filter condition with callback and dependencies\n * @returns {ObservableArray} A new observable array containing filtered items\n * @example\n * const items = Observable.array([\n * { status: 'active', verified: true },\n * { status: 'active', verified: false }\n * ]);\n * const activeFilter = equals('active');\n * const filtered = items.whereEvery(['status', 'verified'], activeFilter);\n */\nObservableArray.prototype.whereEvery = function(fields, filter) {\n return this.where({\n _: {\n dependencies: filter.dependencies,\n callback: (item) => fields.every(field => filter.callback(item[field])),\n },\n });\n};\n\n/**\n * Subscribes deeply to all observable items within the array.\n * Automatically binds and unbinds listeners as items are added or removed.\n * Returns an unsubscribe function.\n *\n * @param {(value: Array) => void} callback - Called whenever any nested observable changes\n * @returns {() => void} Unsubscribe function\n * @example\n * const users = Observable.array([Observable({ name: 'John' })]);\n * const unsub = users.deepSubscribe((items) => console.log('changed', items));\n * unsub(); // stop listening\n */\nObservableArray.prototype.deepSubscribe = function(callback) {\n const updatedValue = nextTick(() => callback(this.val()));\n const $listeners = new WeakMap();\n\n const bindItem = (item) => {\n if ($listeners.has(item)) {\n return;\n }\n if (item?.__$isObservableArray) {\n $listeners.set(item, item.deepSubscribe(updatedValue));\n return;\n }\n if (item?.__$isObservable) {\n item.subscribe(updatedValue);\n $listeners.set(item, () => item.unsubscribe(updatedValue));\n }\n };\n\n const unbindItem = (item) => {\n const unsub = $listeners.get(item);\n if (unsub) {\n unsub();\n $listeners.delete(item);\n }\n };\n\n this.$currentValue.forEach(bindItem);\n this.subscribe(updatedValue);\n\n this.subscribe((items, _, operations) => {\n switch (operations?.action) {\n case 'push':\n case 'unshift':\n operations.args.forEach(bindItem);\n break;\n\n case 'splice': {\n const [start, deleteCount, ...newItems] = operations.args;\n operations.result?.forEach(unbindItem);\n newItems.forEach(bindItem);\n break;\n }\n\n case 'remove':\n unbindItem(operations.result);\n break;\n\n case 'merge':\n operations.args.forEach(bindItem);\n break;\n\n case 'clear':\n this.$currentValue.forEach(unbindItem);\n break;\n\n case 'sort':\n case 'reverse':\n break;\n }\n });\n\n return () => {\n this.$currentValue.forEach(unbindItem);\n };\n};\n\n/**\n * Keeps this array in sync with another ObservableArray.\n * All mutations are mirrored to the target array in real time.\n *\n * @param {ObservableArray} targetObservable - The array to sync into\n * @returns {() => void} Unsubscribe function to stop syncing\n * @example\n * const source = Observable.array([1, 2, 3]);\n * const target = Observable.array([]);\n * const unsync = source.sync(target);\n * source.push(4); // target is now [1, 2, 3, 4]\n * unsync();\n */\nObservableArray.prototype.sync = function(targetObservable) {\n if (!targetObservable || !targetObservable.__$isObservableArray) {\n throw new NativeDocumentError('ObservableArray.sync : target must be an ObservableArray');\n }\n\n targetObservable.set([...this.$currentValue]);\n\n const sync = (currentValue, _, operations) => {\n if (!operations) {\n targetObservable.set([...currentValue]);\n return;\n }\n\n const { action, args } = operations;\n targetObservable[action].apply(targetObservable, args);\n };\n this.subscribe(sync);\n\n return () => this.unsubscribe(sync);\n};\n\n/**\n * Creates a new ObservableArray with a shallow clone of the current array.\n *\n * @returns {ObservableArray} New independent ObservableArray with same items\n */\nObservableArray.prototype.clone = function() {\n return new ObservableArray(this.resolve());\n};\n\n/**\n * Returns a derived ObservableChecker that emits true when the array has at least one item.\n *\n * @returns {ObservableChecker<boolean>}\n * @example\n * const items = Observable.array([]);\n * items.isNotEmpty().val(); // false\n * items.push(1);\n * items.isNotEmpty().val(); // true\n */\nObservableArray.prototype.isNotEmpty = function () {\n return this.is((x) => x.length > 0);\n};\n\nexport default ObservableArray;","import ObservableItem from './ObservableItem';\nimport Validator from '../utils/validator';\nimport {nextTick} from '../utils/helpers';\nimport ObservableArray from './ObservableArray';\n\n/**\n * Reactive object container extending ObservableItem.\n * Each property of the target object becomes an individual ObservableItem (or ObservableArray/ObservableObject for nested structures).\n * Use Observable.object() or Observable.init() rather than instantiating directly.\n *\n * @constructor\n * @param {Record<string, *>} target - Plain object to make reactive\n * @param {{ deep?: boolean, reset?: boolean, propagation?: boolean }|null} [configs] - Configuration\n * @param {boolean} [configs.deep] - If false, nested objects and arrays are not wrapped recursively (default: true)\n * @example\n * const user = Observable.object({ name: 'John', age: 25 });\n * user.name.$value = 'Jane'; // triggers reactivity on name only\n */\nexport const ObservableObject = function(target, configs) {\n ObservableItem.call(this, target);\n this.$observables = {};\n this.configs = configs;\n\n for(const key in target) {\n if(!Object.hasOwn(this, key)) {\n Object.defineProperty(this, key, {\n get: () => this.$observables[key],\n set: (value) => {\n this.$observables[key].set(value);\n },\n configurable: true,\n enumerable: true,\n });\n }\n }\n\n this.$load(target);\n\n Object.defineProperty(this, '$currentValue', {\n get: function() {\n return this.val();\n },\n set(value) {\n this.set(value);\n }\n });\n};\n\nObservableObject.prototype = Object.create(ObservableItem.prototype);\n\nObject.defineProperty(ObservableObject, '$value', {\n get() {\n return this.val();\n },\n set(value) {\n this.set(value);\n },\n});\n\nObservableObject.prototype.__$isObservableObject = true;\nObservableObject.prototype.__isProxy__ = true;\n\n/**\n * Initialises (or reinitialize) the internal observables map from a plain object.\n * Called automatically in the constructor.\n *\n * @internal\n * @param {Record<string, *>} initialValue - Object whose properties are turned into observables\n */\nObservableObject.prototype.$load = function(initialValue) {\n const configs = this.configs;\n for(const key in initialValue) {\n const itemValue = initialValue[key];\n if(Array.isArray(itemValue)) {\n if(configs?.deep !== false) {\n const mappedItemValue = itemValue.map(item => {\n if(Validator.isJson(item)) {\n return new ObservableObject(item, configs);\n }\n if(Validator.isArray(item)) {\n return new ObservableArray(item, configs);\n }\n return new ObservableItem(item, configs);\n });\n this.$observables[key] = new ObservableArray(mappedItemValue, configs);\n continue;\n }\n this.$observables[key] = new ObservableArray(itemValue, configs);\n continue;\n }\n if(itemValue?.__$Observable) {\n this.$observables[key] = itemValue;\n continue;\n }\n this.$observables[key] = (Validator.isJson(itemValue)) ? new ObservableObject(itemValue, configs) : new ObservableItem(itemValue, configs);\n }\n};\n\n/**\n * Returns a plain snapshot of all observable values.\n * Unwraps nested ObservableItem, ObservableArray, and ObservableObject recursively.\n * Alias: $val()\n *\n * @returns {Record<string, *>} Plain object with current values\n * @example\n * const user = Observable.object({ name: 'John', age: 25 });\n * user.val(); // { name: 'John', age: 25 }\n */\nObservableObject.prototype.val = function() {\n const result = {};\n for(const key in this.$observables) {\n const dataItem = this.$observables[key];\n if(dataItem?.__$Observable) {\n let value = dataItem.val();\n if(Array.isArray(value)) {\n value = value.map(item => {\n if(item.__$Observable) {\n return item.val();\n }\n return item;\n });\n }\n result[key] = value;\n } else {\n result[key] = dataItem;\n }\n }\n return result;\n};\nObservableObject.prototype.$val = ObservableObject.prototype.val;\n\n/**\n * Returns the current value of a single property, unwrapped from its observable.\n * Alias: $get(property)\n *\n * @param {string} property - Property name\n * @returns {*} The current value of that property\n * @example\n * const user = Observable.object({ name: 'John' });\n * user.get('name'); // 'John'\n */\nObservableObject.prototype.get = function(property) {\n const item = this.$observables[property];\n if(item?.__$Observable) {\n return item.val();\n }\n return item;\n};\nObservableObject.prototype.$get = ObservableObject.prototype.get;\n\n/**\n * Updates one or more properties with new values.\n * Supports partial updates — only provided keys are changed.\n * Aliases: $set(newData), $updateWith(newData), update(newData)\n *\n * @param {Partial<Record<string, *>>} newData - Object with properties to update\n * @example\n * const user = Observable.object({ name: 'John', age: 25 });\n * user.set({ name: 'Jane' }); // Only name changes, age stays 25\n */\nObservableObject.prototype.set = function(newData) {\n const data = newData?.__$Observable ? newData.$value : newData;\n const configs = this.configs;\n\n for(const key in data) {\n const targetItem = this.$observables[key];\n const newValueOrigin = newData[key];\n const newValue = data[key];\n\n if(targetItem?.__$Observable) {\n if(targetItem.__$isObservableObject) {\n targetItem.update(newValue);\n continue;\n }\n if(!Validator.isArray(newValue)) {\n targetItem.set(newValue);\n continue;\n }\n const firstElementFromOriginalValue = newValueOrigin.at(0);\n if(firstElementFromOriginalValue?.__$Observable) {\n const newValues = newValue.map(item => {\n if(firstElementFromOriginalValue.__$isObservableObject) {\n return new ObservableObject(item, configs);\n }\n return ObservableItem(item, configs);\n });\n targetItem.set(newValues);\n continue;\n }\n targetItem.set([...newValue]);\n continue;\n }\n this[key] = newValue;\n }\n};\nObservableObject.prototype.$set = ObservableObject.prototype.set;\nObservableObject.prototype.$updateWith = ObservableObject.prototype.set;\n\n/**\n * Returns an array of all internal observable instances (one per property).\n * Alias: $observables()\n *\n * @returns {ObservableItem[]} Array of observable instances\n */\nObservableObject.prototype.observables = function() {\n return Object.values(this.$observables);\n};\nObservableObject.prototype.$observables = ObservableObject.prototype.observables;\n\n/**\n * Returns all property names of the observable object.\n * Alias: $keys()\n *\n * @returns {string[]} Array of property names\n */\nObservableObject.prototype.keys = function() {\n return Object.keys(this.$observables);\n};\nObservableObject.prototype.$keys = ObservableObject.prototype.keys;\n\n/**\n * Creates a new ObservableObject with a snapshot of the current values.\n * Changes to the clone do not affect the original.\n * Alias: $clone()\n *\n * @returns {ObservableObject} New independent ObservableObject with the same structure and values\n */\nObservableObject.prototype.clone = function() {\n return new ObservableObject(this.val(), this.configs);\n};\nObservableObject.prototype.$clone = ObservableObject.prototype.clone;\n\n/**\n * Resets all properties to their initial values by calling .reset() on each child observable.\n * Only works if observables were created with { reset: true }.\n */\nObservableObject.prototype.reset = function() {\n for(const key in this.$observables) {\n this.$observables[key].reset();\n }\n};\nObservableObject.prototype.originalSubscribe = ObservableObject.prototype.subscribe;\n\n/**\n * Subscribes to changes across all nested observables.\n * The callback is called whenever any property (or nested value) changes.\n * Internally uses debouncing (nextTick) to batch multiple simultaneous changes.\n *\n * @param {(value: Record<string, *>) => void} callback - Called on any nested change\n * @example\n * const user = Observable.object({ name: 'John', age: 25 });\n * user.subscribe(() => console.log('user changed:', user.val()));\n * user.name.$value = 'Jane'; // logs 'user changed: { name: \"Jane\", age: 25 }'\n */\nObservableObject.prototype.subscribe = function(callback) {\n const observables = this.observables();\n const updatedValue = nextTick(() => this.trigger());\n\n this.originalSubscribe(callback);\n\n for (let i = 0, length = observables.length; i < length; i++) {\n const observable = observables[i];\n if (observable.__$isObservableArray) {\n observable.deepSubscribe(updatedValue);\n continue;\n }\n observable.subscribe(updatedValue);\n }\n};\nObservableObject.prototype.configs = function() {\n return this.configs;\n};\n\nObservableObject.prototype.update = ObservableObject.prototype.set;","import ObservableItem from '../ObservableItem';\n\nconst $computed = (fn, dependencies) => ObservableItem.computed(fn, dependencies);\nconst $checker = (obs, fn) => obs.transform(fn);\n\n//\n// is... -> ObservableChecker<boolean>\n//\n\n/**\n * Returns a derived observable that emits true when the value strictly equals the given value.\n * Supports reactive comparison when an ObservableItem is passed.\n *\n * @param {*|ObservableItem} value - Static value or observable to compare against\n * @returns {ObservableChecker<boolean>}\n * @example\n * const age = Observable(25);\n * age.isEqualTo(25).val(); // true\n * age.isEqualTo(Observable(25)).val(); // true\n */\nObservableItem.prototype.isEqualTo = function (value) {\n if (value?.__$Observable) {\n return $computed((a, b) => a === b, [this, value]);\n }\n return $checker(this, x => x === value);\n};\n\n/**\n * Returns a derived observable that emits true when the value does not strictly equal the given value.\n *\n * @param {*|ObservableItem} value - Static value or observable to compare against\n * @returns {ObservableChecker<boolean>}\n */\nObservableItem.prototype.isNotEqualTo = function (value) {\n if (value?.__$Observable) {\n return $computed((a, b) => a !== b, [this, value]);\n }\n return $checker(this, x => x !== value);\n};\n\n/**\n * Returns a derived observable that emits true when the value is greater than the given value.\n *\n * @param {number|ObservableItem<number>} value - Threshold value or observable\n * @returns {ObservableChecker<boolean>}\n */\nObservableItem.prototype.isGreaterThan = function (value) {\n if (value?.__$Observable) {\n return $computed((a, b) => a > b, [this, value]);\n }\n return $checker(this, x => x > value);\n};\n\n/**\n * Returns a derived observable that emits true when the value is greater than or equal to the given value.\n *\n * @param {number|ObservableItem<number>} value - Threshold value or observable\n * @returns {ObservableChecker<boolean>}\n */\nObservableItem.prototype.isGreaterThanOrEqualTo = function (value) {\n if (value?.__$Observable) {\n return $computed((a, b) => a >= b, [this, value]);\n }\n return $checker(this, x => x >= value);\n};\n\n/**\n * Returns a derived observable that emits true when the value is less than the given value.\n *\n * @param {number|ObservableItem<number>} value - Threshold value or observable\n * @returns {ObservableChecker<boolean>}\n */\nObservableItem.prototype.isLessThan = function (value) {\n if (value?.__$Observable) {\n return $computed((a, b) => a < b, [this, value]);\n }\n return $checker(this, x => x < value);\n};\n\n/**\n * Returns a derived observable that emits true when the value is less than or equal to the given value.\n *\n * @param {number|ObservableItem<number>} value - Threshold value or observable\n * @returns {ObservableChecker<boolean>}\n */\nObservableItem.prototype.isLessThanOrEqualTo = function (value) {\n if (value?.__$Observable) {\n return $computed((a, b) => a <= b, [this, value]);\n }\n return $checker(this, x => x <= value);\n};\n\n/**\n * Returns a derived observable that emits true when the value is between min and max (inclusive).\n * All combinations of static and observable min/max are supported.\n *\n * @param {number|ObservableItem<number>} min - Lower bound (inclusive)\n * @param {number|ObservableItem<number>} max - Upper bound (inclusive)\n * @returns {ObservableChecker<boolean>}\n * @example\n * const age = Observable(25);\n * age.isBetween(18, 65).val(); // true\n * age.isBetween(Observable(18), Observable(65)).val(); // true\n */\nObservableItem.prototype.isBetween = function (min, max) {\n if (min.__$Observable && max.__$Observable) {\n return $computed((x, a, b) => x >= a && x <= b, [this, min, max]);\n }\n if (min.__$Observable) {\n return $computed((x, a) => x >= a && x <= max, [this, min]);\n }\n if (max.__$Observable) {\n return $computed((x, b) => x >= min && x <= b, [this, max]);\n }\n return $checker(this, x => x >= min && x <= max);\n};\n\n/**\n * Returns a derived observable that emits true when the value is null or undefined.\n *\n * @returns {ObservableChecker<boolean>}\n */\nObservableItem.prototype.isNull = function () {\n return $checker(this, x => x == null);\n};\n\n/**\n * Returns a derived observable that emits true when the value is truthy.\n *\n * @returns {ObservableChecker<boolean>}\n */\nObservableItem.prototype.isTruthy = function () {\n return $checker(this, x => !!x);\n};\n\n/**\n * Returns a derived observable that emits true when the value is falsy.\n *\n * @returns {ObservableChecker<boolean>}\n */\nObservableItem.prototype.isFalsy = function () {\n return $checker(this, x => !x);\n};\n\n/**\n * Returns a derived observable that emits true when the string value starts with the given string.\n *\n * @param {string|ObservableItem<string>} str - Prefix to check for\n * @returns {ObservableChecker<boolean>}\n */\nObservableItem.prototype.isStartingWith = function (str) {\n if (str?.__$Observable) {\n return $computed((a, b) => String(a).startsWith(b), [this, str]);\n }\n return $checker(this, x => String(x).startsWith(str));\n};\n\n/**\n * Returns a derived observable that emits true when the string value ends with the given string.\n *\n * @param {string|ObservableItem<string>} str - Suffix to check for\n * @returns {ObservableChecker<boolean>}\n */\nObservableItem.prototype.isEndingWith = function (str) {\n if (str?.__$Observable) {\n return $computed((a, b) => String(a).endsWith(b), [this, str]);\n }\n return $checker(this, x => String(x).endsWith(str));\n};\n\n/**\n * Returns a derived observable that emits true when the string value matches the given regex.\n *\n * @param {RegExp|ObservableItem<RegExp>} regex - Pattern to test against\n * @returns {ObservableChecker<boolean>}\n */\nObservableItem.prototype.isMatchingPattern = function (regex) {\n if (regex?.__$Observable) {\n return $computed((a, b) => new RegExp(b).test(String(a)), [this, regex]);\n }\n return $checker(this, x => regex.test(String(x)));\n};\n\n/**\n * Returns a derived observable that emits true when the value is empty.\n * Empty means: null, undefined, empty string, or empty array.\n *\n * @returns {ObservableChecker<boolean>}\n */\nObservableItem.prototype.isEmpty = function () {\n return $checker(this, x => x == null || x === '' || (Array.isArray(x) && x.length === 0));\n};\n\n/**\n * Returns a derived observable that emits true when the value is not empty.\n * Not empty means: not null, not undefined, not empty string, not empty array.\n *\n * @returns {ObservableChecker<boolean>}\n */\nObservableItem.prototype.isNotEmpty = function () {\n return $checker(this, x => x != null && x !== '' && !(Array.isArray(x) && x.length === 0));\n};\n\n/**\n * Returns a derived observable that emits true when the value includes the given value.\n * Works for both arrays (includes check) and strings (substring check).\n *\n * @param {*|ObservableItem} value - Value to search for\n * @returns {ObservableChecker<boolean>}\n * @example\n * Observable([1, 2, 3]).isIncludes(2).val(); // true\n * Observable('hello world').isIncludes('world').val(); // true\n */\nObservableItem.prototype.isIncludes = function (value) {\n if (value?.__$Observable) {\n return $computed((a, b) => {\n if (Array.isArray(a)) return a.includes(b);\n return String(a).includes(String(b));\n }, [this, value]);\n }\n return $checker(this, x => {\n if (Array.isArray(x)) return x.includes(value);\n return String(x).includes(String(value));\n });\n};\n\n/**\n * Returns a derived observable that emits true when the value is included in the given array.\n * Alias: isOneOf\n *\n * @param {Array|ObservableItem<Array>} array - Array to check membership in\n * @returns {ObservableChecker<boolean>}\n * @example\n * const role = Observable('admin');\n * role.isIncludedIn(['admin', 'editor']).val(); // true\n */\nObservableItem.prototype.isIncludedIn = function (array) {\n if (array?.__$Observable) {\n return $computed((a, b) => b.includes(a), [this, array]);\n }\n return $checker(this, x => array.includes(x));\n};\n\nObservableItem.prototype.isOneOf = ObservableItem.prototype.isIncludedIn;\n\n/**\n * Returns a derived observable that emits true when the given key exists in the value object.\n *\n * @param {string|ObservableItem<string>} key - Property key to check for\n * @returns {ObservableChecker<boolean>}\n * @example\n * const user = Observable({ name: 'John' });\n * user.isHaving('name').val(); // true\n */\nObservableItem.prototype.isHaving = function (key) {\n if (key?.__$Observable) {\n return $computed((a, b) => b in Object(a), [this, key]);\n }\n return $checker(this, x => key in Object(x));\n};\n\n//\n// to... -> ObservableChecker<any>\n//\n\n/**\n * Returns a derived observable that emits the string value converted to uppercase.\n *\n * @returns {ObservableChecker<string>}\n */\nObservableItem.prototype.toUpperCase = function () {\n return $checker(this, x => String(x).toUpperCase());\n};\n\n/**\n * Returns a derived observable that emits the string value converted to lowercase.\n *\n * @returns {ObservableChecker<string>}\n */\nObservableItem.prototype.toLowerCase = function () {\n return $checker(this, x => String(x).toLowerCase());\n};\n\n/**\n * Returns a derived observable that emits the string value trimmed of whitespace.\n *\n * @returns {ObservableChecker<string>}\n */\nObservableItem.prototype.toTrimmed = function () {\n return $checker(this, x => String(x).trim());\n};\n\n/**\n * Returns a derived observable that emits the value coerced to boolean.\n *\n * @returns {ObservableChecker<boolean>}\n */\nObservableItem.prototype.toBoolean = function () {\n return $checker(this, x => !!x);\n};\n\n/**\n * Returns a derived observable that emits a string with the placeholder replaced by the current value.\n * Alias: toFormatted\n *\n * @param {string} template - Template string containing the placeholder\n * @param {string} [placeholder='${v}'] - Placeholder string to replace with the value\n * @returns {ObservableChecker<string>}\n * @example\n * const count = Observable(5);\n * count.toLiteral('You have ${v} items').val(); // 'You have 5 items'\n */\nObservableItem.prototype.toLiteral = function (template, placeholder = '${v}') {\n return $checker(this, x => template.replace(placeholder, x));\n};\n\nObservableItem.prototype.toFormatted = ObservableItem.prototype.toLiteral;\n\n/**\n * Returns a derived observable that emits a nested property value resolved via dot notation.\n *\n * @param {string} key - Dot-notation path to the property (e.g. 'user.address.city')\n * @returns {ObservableChecker<*>}\n * @example\n * const state = Observable({ user: { name: 'John' } });\n * state.toProperty('user.name').val(); // 'John'\n */\nObservableItem.prototype.toProperty = function (key) {\n const keys = key.split('.');\n return $checker(this, x => {\n let value = x;\n for (const k of keys) {\n if (value == null) return undefined;\n value = value[k];\n }\n return value;\n });\n};\n\n/**\n * Returns a derived observable that emits the length of the current value.\n * Returns 0 if the value is null or undefined.\n *\n * @returns {ObservableChecker<number>}\n */\nObservableItem.prototype.toLength = function () {\n return $checker(this, x => (x == null ? 0 : x.length));\n};\n\n/**\n * Returns a derived observable that emits the value clamped between min and max.\n * All combinations of static and observable min/max are supported.\n *\n * @param {number|ObservableItem<number>} min - Minimum bound\n * @param {number|ObservableItem<number>} max - Maximum bound\n * @returns {ObservableChecker<number>}\n * @example\n * const volume = Observable(150);\n * volume.toClamped(0, 100).val(); // 100\n */\nObservableItem.prototype.toClamped = function (min, max) {\n if (min.__$Observable && max.__$Observable) {\n return $computed((x, a, b) => Math.min(Math.max(x, a), b), [this, min, max]);\n }\n if (min.__$Observable) {\n return $computed((x, a) => Math.min(Math.max(x, a), max), [this, min]);\n }\n if (max.__$Observable) {\n return $computed((x, b) => Math.min(Math.max(x, min), b), [this, max]);\n }\n return $checker(this, x => Math.min(Math.max(x, min), max));\n};\n\n/**\n * Returns a derived observable that emits the value expressed as a percentage of total.\n * Returns 0 if total is 0.\n *\n * @param {number|ObservableItem<number>} total - The total value representing 100%\n * @returns {ObservableChecker<number>}\n * @example\n * const score = Observable(75);\n * score.toPercent(100).val(); // 75\n * score.toPercent(200).val(); // 37.5\n */\nObservableItem.prototype.toPercent = function (total) {\n if (total?.__$Observable) {\n return $computed((a, b) => (b === 0 ? 0 : (a / b) * 100), [this, total]);\n }\n return $checker(this, x => (total === 0 ? 0 : (x / total) * 100));\n};","\n/**\n * Creates an ObservableWhen that tracks whether an observable equals a specific value.\n *\n * @param {ObservableItem} observer - The observable to watch\n * @param {*} value - The value to compare against\n * @class ObservableWhen\n */\nexport const ObservableWhen = function(observer, value) {\n this.$target = value;\n this.$observer = observer;\n};\n\nObservableWhen.prototype.__$Observable = true;\nObservableWhen.prototype.__$isObservableWhen = true;\n\n/**\n * Subscribes to changes in the match status (true when observable equals target value).\n *\n * @param {Function} callback - Function called with boolean indicating if values match\n * @returns {Function} Unsubscribe function\n * @example\n * const status = Observable('idle');\n * const isLoading = status.when('loading');\n * isLoading.subscribe(active => console.log('Loading:', active));\n */\nObservableWhen.prototype.subscribe = function(callback) {\n return this.$observer.on(this.$target, callback);\n};\n\n/**\n * Returns true if the observable's current value equals the target value.\n *\n * @returns {boolean} True if observable value matches target value\n */\nObservableWhen.prototype.val = function() {\n return this.$observer.$currentValue === this.$target;\n};\n\n/**\n * Returns true if the observable's current value equals the target value.\n * Alias for val().\n *\n * @returns {boolean} True if observable value matches target value\n */\nObservableWhen.prototype.isMatch = ObservableWhen.prototype.val;\n\n/**\n * Returns true if the observable's current value equals the target value.\n * Alias for val().\n *\n * @returns {boolean} True if observable value matches target value\n */\nObservableWhen.prototype.isActive = ObservableWhen.prototype.val;","import ObservableItem from './ObservableItem';\nimport PluginsManager from '../utils/plugins-manager';\n\n/**\n *\n * @param {ObservableItem} $observable\n * @param {Function} $checker\n * @class ObservableChecker\n */\nexport default function ObservableChecker($observable, $checker) {\n this.observable = $observable;\n\n ObservableItem.call(this);\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('CreateObservableChecker', this);\n }\n\n this.$mutation = $checker;\n\n $observable.subscribe((newValue) => {\n this.$updateWithMutation(newValue);\n });\n\n this.$updateWithMutation($observable.val());\n}\n\nObservableChecker.prototype = Object.create(ObservableItem.prototype);\nObservableChecker.prototype.constructor = ObservableChecker;\nObservableChecker.prototype.__$Observable = true;\nObservableChecker.prototype.__$isObservableChecker = true;\n\n\nexport const ObservablePipe = ObservableChecker;\nObservablePipe.prototype.constructor = ObservablePipe;\n\nObservableChecker.prototype.$updateWithMutation = function(newValue) {\n newValue = this.$mutation(newValue);\n return this.set(newValue);\n};","const $parseDateParts = (value, locale) => {\n const d = new Date(value);\n return {\n d,\n parts: new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'long',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n }).formatToParts(d).reduce((acc, { type, value }) => {\n acc[type] = value;\n return acc;\n }, {}),\n };\n};\n\nconst $applyDatePattern = (pattern, d, parts) => {\n const pad = n => String(n).padStart(2, '0');\n return pattern\n .replace('YYYY', parts.year)\n .replace('YY', parts.year.slice(-2))\n .replace('MMMM', parts.month)\n .replace('MMM', parts.month.slice(0, 3))\n .replace('MM', pad(d.getMonth() + 1))\n .replace('DD', pad(d.getDate()))\n .replace('D', d.getDate())\n .replace('HH', parts.hour)\n .replace('mm', parts.minute)\n .replace('ss', parts.second);\n};\n\nexport const Formatters = {\n currency: (value, locale, { currency = 'XOF', notation, minimumFractionDigits, maximumFractionDigits } = {}) =>\n new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n notation,\n minimumFractionDigits,\n maximumFractionDigits,\n }).format(value),\n\n number: (value, locale, { notation, minimumFractionDigits, maximumFractionDigits } = {}) =>\n new Intl.NumberFormat(locale, {\n notation,\n minimumFractionDigits,\n maximumFractionDigits,\n }).format(value),\n\n percent: (value, locale, { decimals = 1 } = {}) =>\n new Intl.NumberFormat(locale, {\n style: 'percent',\n maximumFractionDigits: decimals,\n }).format(value),\n\n date: (value, locale, { format, dateStyle = 'long' } = {}) => {\n if (format) {\n const { d, parts } = $parseDateParts(value, locale);\n return $applyDatePattern(format, d, parts);\n }\n return new Intl.DateTimeFormat(locale, { dateStyle }).format(new Date(value));\n },\n\n time: (value, locale, { format, hour = '2-digit', minute = '2-digit', second } = {}) => {\n if (format) {\n const { d, parts } = $parseDateParts(value, locale);\n return $applyDatePattern(format, d, parts);\n }\n return new Intl.DateTimeFormat(locale, { hour, minute, second }).format(new Date(value));\n },\n\n datetime: (value, locale, { format, dateStyle = 'long', hour = '2-digit', minute = '2-digit', second } = {}) => {\n if (format) {\n const { d, parts } = $parseDateParts(value, locale);\n return $applyDatePattern(format, d, parts);\n }\n return new Intl.DateTimeFormat(locale, { dateStyle, hour, minute, second }).format(new Date(value));\n },\n\n relative: (value, locale, { unit = 'day', numeric = 'auto' } = {}) => {\n const diff = Math.round((value - Date.now()) / (1000 * 60 * 60 * 24));\n return new Intl.RelativeTimeFormat(locale, { numeric }).format(diff, unit);\n },\n\n plural: (value, locale, { singular, plural } = {}) => {\n const rule = new Intl.PluralRules(locale).select(value);\n return `${value} ${rule === 'one' ? singular : plural}`;\n },\n};","/**\n * Creates an ObservableWhen that represents whether the observable equals a specific value.\n * Returns an object that can be subscribed to and will emit true/false.\n *\n * @param {*} value - The value to compare against\n * @returns {ObservableWhen} An ObservableWhen instance that tracks when the observable equals the value\n * @example\n * const status = Observable('idle');\n * const isLoading = status.when('loading');\n * isLoading.subscribe(active => console.log('Loading:', active));\n * status.set('loading'); // Logs: \"Loading: true\"\n */\nimport {ObservableWhen} from '../ObservableWhen';\nimport ObservableItem from '../ObservableItem';\nimport ObservableChecker from '../ObservableChecker';\nimport {Formatters} from '../../utils/formatters';\nimport NativeDocumentError from '../../errors/NativeDocumentError';\n\nObservableItem.prototype.when = function(value) {\n return new ObservableWhen(this, value);\n};\n\n\n\n/**\n * Create an Observable checker instance\n * @param callback\n * @returns {ObservableChecker}\n */\nObservableItem.prototype.check = function(callback) {\n return new ObservableChecker(this, callback);\n};\n\nObservableItem.prototype.transform = ObservableItem.prototype.check;\n\n/**\n * Returns a derived observable that emits the value of a nested property.\n * Alias for .check(value => value[property]).\n *\n * @param {string} property - Property name to extract\n * @returns {ObservableChecker<*>}\n * @example\n * const user = Observable({ name: 'John', age: 25 });\n * user.pluck('name').val(); // 'John'\n */\nObservableItem.prototype.pluck = function(property) {\n return new ObservableChecker(this, (value) => value[property]);\n};\n\n/**\n * Creates a derived observable using a callback or checks equality with a static value.\n * - If callback is a function: equivalent to .check(callback)\n * - If callback is a value: equivalent to .check(v => v === value)\n * Alias: .select()\n *\n * @param {Function|*} callbackOrValue - Transform function or value to compare\n * @returns {ObservableChecker<*>}\n * @example\n * const count = Observable(5);\n * count.is(v => v > 3).val(); // true\n * count.is(5).val(); // true\n */\nObservableItem.prototype.is = function(callbackOrValue) {\n if(typeof callbackOrValue === 'function') {\n return new ObservableChecker(this, callbackOrValue);\n }\n return new ObservableChecker(this, (value) => value === callbackOrValue);\n};\nObservableItem.prototype.select = ObservableItem.prototype.check;\n\n/**\n * Creates a derived observable that formats the current value using Intl.\n * Automatically reacts to both value changes and locale changes (Store.__nd.locale).\n *\n * @param {string | Function} type - Format type or custom formatter function\n * @param {Object} [options={}] - Options passed to the formatter\n * @returns {ObservableItem<string>}\n *\n * @example\n * // Currency\n * price.format('currency') // \"15 000 FCFA\"\n * price.format('currency', { currency: 'EUR' }) // \"15 000,00 €\"\n * price.format('currency', { notation: 'compact' }) // \"15 K FCFA\"\n *\n * // Number\n * count.format('number') // \"15 000\"\n *\n * // Percent\n * rate.format('percent') // \"15,0 %\"\n * rate.format('percent', { decimals: 2 }) // \"15,00 %\"\n *\n * // Date\n * date.format('date') // \"3 mars 2026\"\n * date.format('date', { dateStyle: 'full' }) // \"mardi 3 mars 2026\"\n * date.format('date', { format: 'DD/MM/YYYY' }) // \"03/03/2026\"\n * date.format('date', { format: 'DD MMM YYYY' }) // \"03 mar 2026\"\n * date.format('date', { format: 'DD MMMM YYYY' }) // \"03 mars 2026\"\n *\n * // Time\n * date.format('time') // \"20:30\"\n * date.format('time', { second: '2-digit' }) // \"20:30:00\"\n * date.format('time', { format: 'HH:mm:ss' }) // \"20:30:00\"\n *\n * // Datetime\n * date.format('datetime') // \"3 mars 2026, 20:30\"\n * date.format('datetime', { dateStyle: 'full' }) // \"mardi 3 mars 2026, 20:30\"\n * date.format('datetime', { format: 'DD/MM/YYYY HH:mm' }) // \"03/03/2026 20:30\"\n *\n * // Relative\n * date.format('relative') // \"dans 11 jours\"\n * date.format('relative', { unit: 'month' }) // \"dans 1 mois\"\n *\n * // Plural\n * count.format('plural', { singular: 'billet', plural: 'billets' }) // \"3 billets\"\n *\n * // Custom formatter\n * price.format(value => `${value.toLocaleString()} FCFA`)\n *\n * // Reacts to locale changes automatically\n * Store.setLocale('en-US');\n */\nObservableItem.prototype.format = function(type, options = {}) {\n const self = this;\n\n if (typeof type === 'function') {\n return new ObservableChecker(self, type);\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (!Formatters[type]) {\n throw new NativeDocumentError(\n `Observable.format : unknown type '${type}'. Available : ${Object.keys(Formatters).join(', ')}.`,\n );\n }\n }\n\n const formatter = Formatters[type];\n const localeObservable = Formatters.locale;\n\n return ObservableItem.computed(() => formatter(self.val(), localeObservable.val(), options),\n [self, localeObservable],\n );\n};","import ObservableItem from './ObservableItem';\nimport {debounce} from '../utils/helpers';\n\nconst STATE = {\n UNRESOLVED: 'unresolved',\n PENDING: 'pending',\n READY: 'ready',\n REFRESHING: 'refreshing',\n ERRORED: 'errored',\n};\n\n/**\n * Reactive async data fetcher with built-in state management.\n * Tracks loading, ready, refreshing, and error states automatically.\n * Use Observable.resource() rather than instantiating directly.\n *\n * @constructor\n * @param {(...depValues: any[], signal?: AbortSignal) => Promise<*>} fn - Async function to fetch data. Receives dependency values as arguments. If its arity exceeds the number of dependencies, an AbortSignal is passed as the last argument.\n * @param {ObservableItem[]} deps - Observable dependencies — resource re-fetches when any changes\n * @param {{ auto?: boolean, lazy?: boolean, debounce?: number, into?: ObservableItem, apply?: Function }} config - Configuration\n * @param {boolean} [config.auto=false] - If true, fetch runs automatically on creation (or when deps change)\n * @param {boolean} [config.lazy=false] - If true with deps, does not fetch immediately — waits for first dep change\n * @param {number} [config.debounce=0] - Debounce delay in ms for dependency-triggered re-fetches\n * @param {ObservableItem} [config.into] - Observable to write results into instead of creating a new one\n * @param {Function} [config.apply] - Custom function to apply the result to this.data\n * @example\n * const userId = Observable(1);\n * const user = Observable.resource(\n * async (id, signal) => fetch(`/api/users/${id}`, { signal }).then(r => r.json()),\n * [userId],\n * { auto: true }\n * );\n */\nexport default function ObservableResource(fn, deps, config) {\n this.$fn = (config.debounce > 0) ? debounce(fn, config.debounce) : fn;\n this.$dependencies = deps;\n this.$config = config;\n this.$controller = null;\n this.$subscriptions = [];\n\n this.data = config.into ?? new ObservableItem(null);\n this.error = new ObservableItem(null);\n this.state = new ObservableItem(STATE.UNRESOLVED);\n\n this.loading = ObservableItem.computed(\n (state) => state === STATE.PENDING || state === STATE.REFRESHING,\n [this.state],\n );\n\n if (config.auto) {\n if (deps.length > 0) {\n this.$watchDependencies();\n return;\n }\n this.fetch();\n }\n}\n\nObservableResource.prototype.$applyResult = function(result) {\n if(this.$config.apply) {\n this.$config.apply(result, this.data);\n return;\n }\n this.data.set(result);\n};\n\nObservableResource.prototype.$abort = function() {\n if (this.$controller) {\n this.$controller.abort();\n this.$controller = null;\n }\n};\n\nObservableResource.prototype.$runWithAbortController = function(isRefetch = false) {\n this.$abort();\n\n this.$controller = new AbortController();\n const signal = this.$controller.signal;\n\n const hasData = this.data.val() !== null;\n const nextState = isRefetch && hasData ? STATE.REFRESHING : STATE.PENDING;\n\n this.error.set(null);\n this.state.set(nextState);\n\n const depValues = this.$dependencies.map(dep => dep.val());\n const args = [...depValues, signal];\n\n Promise.resolve(this.$fn(...args))\n .then(result => {\n if (signal.aborted) {\n return;\n }\n this.$applyResult(result);\n this.error.set(null);\n this.state.set(STATE.READY);\n this.$controller = null;\n })\n .catch(err => {\n if (signal.aborted) {\n return;\n }\n this.error.set(err);\n this.state.set(STATE.ERRORED);\n this.$controller = null;\n });\n};\nObservableResource.prototype.$runWithoutAbortController = function(isRefetch = false) {\n const hasData = this.data.val() !== null;\n const nextState = isRefetch && hasData ? STATE.REFRESHING : STATE.PENDING;\n\n this.error.set(null);\n this.state.set(nextState);\n\n const args = this.$dependencies.map(dep => dep.val());\n\n Promise.resolve(this.$fn(...args))\n .then(result => {\n this.$applyResult(result);\n this.error.set(null);\n this.state.set(STATE.READY);\n })\n .catch(err => {\n this.error.set(err);\n this.state.set(STATE.ERRORED);\n });\n};\n\nObservableResource.prototype.$run = function(isRefetch = false) {\n const needsSignal = this.$fn.length > this.$dependencies.length;\n if(needsSignal) {\n this.$run = this.$runWithAbortController;\n return this.$runWithAbortController(isRefetch);\n }\n this.$run = this.$runWithoutAbortController;\n\n return this.$run(isRefetch);\n};\n\nObservableResource.prototype.$watchDependencies = function() {\n this.$subscriptions.forEach(unsub => unsub());\n this.$subscriptions = [];\n\n this.$dependencies.forEach(dep => {\n const callback = () => this.$run(true);\n dep.subscribe(callback);\n this.$subscriptions.push(() => dep.unsubscribe(callback));\n });\n if (!this.$config.lazy) {\n this.$run(false);\n }\n};\n\n/**\n * Sets a custom function to apply fetched results to this.data.\n * Useful when the raw response needs transformation before storing.\n *\n * @param {(result: *, data: ObservableItem) => void} fn - Function receiving the result and the data observable\n * @returns {this}\n * @example\n * resource.apply((result, data) => data.set(result.items));\n */\nObservableResource.prototype.apply = function(fn) {\n this.$config.apply = fn;\n return this;\n};\n\n/**\n * Redirects fetched results into an existing ObservableItem instead of the default internal one.\n * Updates both this.data reference and config.into.\n *\n * @param {ObservableItem} $observable - Target observable to write results into\n * @returns {this}\n * @example\n * const items = Observable([]);\n * resource.into(items);\n */\nObservableResource.prototype.into = function($observable) {\n this.$config.into = $observable;\n this.data = $observable;\n return this;\n};\n\n/**\n * Triggers a fresh fetch (state transitions to 'pending').\n * Use when no prior data exists or when a full reload is needed.\n *\n * @returns {this}\n */\nObservableResource.prototype.fetch = function() {\n this.$run(false);\n return this;\n};\n\n/**\n * Triggers a re-fetch (state transitions to 'refreshing' if data already exists).\n * Use when you want to reload while keeping the previous data visible.\n *\n * @returns {this}\n */\nObservableResource.prototype.refetch = function() {\n this.$run(true);\n return this;\n};\n\n/**\n * Manually sets the data value and marks the state as 'ready'.\n * Useful for optimistic updates or seeding initial data without a network call.\n *\n * @param {*} value - New value to set on this.data\n * @returns {this}\n * @example\n * resource.mutate([...resource.data.val(), newItem]);\n */\nObservableResource.prototype.mutate = function(value) {\n this.data.set(value);\n this.state.set(STATE.READY);\n return this;\n};\n\n/**\n * Cancels any pending request, unsubscribes from all dependencies, and clears subscriptions.\n * Call this when the component using this resource is unmounted.\n *\n * @returns {void}\n */\nObservableResource.prototype.destroy = function() {\n this.$abort();\n this.$subscriptions.forEach(unsub => unsub());\n this.$subscriptions = [];\n};\n\n/**\n * Returns a derived observable that emits true when the state is 'ready'.\n *\n * @returns {ObservableChecker<boolean>}\n */\nObservableResource.prototype.isReady = function() {\n return this.state.isEqualTo(STATE.READY);\n};\n\n/**\n * Returns a derived observable that emits true when the state is 'pending' (initial load).\n *\n * @returns {ObservableChecker<boolean>}\n */\nObservableResource.prototype.isPending = function() {\n return this.state.isEqualTo(STATE.PENDING);\n};\n\n/**\n * Returns a derived observable that emits true when the state is 'refreshing' (reload with existing data).\n *\n * @returns {ObservableChecker<boolean>}\n */\nObservableResource.prototype.isRefreshing = function() {\n return this.state.isEqualTo(STATE.REFRESHING);\n};\n\n/**\n * Returns a derived observable that emits true when the state is 'errored'.\n *\n * @returns {ObservableChecker<boolean>}\n */\nObservableResource.prototype.isErrored = function() {\n return this.state.isEqualTo(STATE.ERRORED);\n};\n\n/**\n * Returns a derived observable that emits true when no fetch has been triggered yet.\n *\n * @returns {ObservableChecker<boolean>}\n */\nObservableResource.prototype.isUnresolved = function() {\n return this.state.isEqualTo(STATE.UNRESOLVED);\n};\n\n/**\n * Registers a callback that is called every time a fetch completes successfully.\n *\n * @param {(value: *) => void} callback - Called with the fetched data value\n * @returns {this}\n * @example\n * resource.onSuccess((data) => console.log('Loaded:', data));\n */\nObservableResource.prototype.onSuccess = function(callback) {\n this.data.subscribe((value) => {\n if (this.state.val() === STATE.READY) {\n callback(value);\n }\n });\n return this;\n};\n\n/**\n * Registers a callback called every time a fetch fails.\n *\n * @param {(error: Error) => void} callback - Called with the error object\n * @returns {this}\n * @example\n * resource.onError((err) => console.error('Failed:', err.message));\n */\nObservableResource.prototype.onError = function(callback) {\n this.error.subscribe((err) => {\n if (err !== null) {\n callback(err);\n }\n });\n return this;\n};","import ObservableItem from './ObservableItem';\nimport MemoryManager from './MemoryManager';\nimport NativeDocumentError from '../../core/errors/NativeDocumentError';\nimport ObservableArray from './ObservableArray';\nimport Validator from '../utils/validator';\nimport {nextTick} from '../utils/helpers';\nimport PluginsManager from '../utils/plugins-manager';\nimport {ObservableObject} from './ObservableObject';\n\nimport './observable-helpers/observable.is-to';\nimport './observable-helpers/observable.prototypes';\nimport ObservableResource from './ObservableResource';\nimport {Formatters} from '../utils/formatters';\n/**\n *\n * @param {*} value\n * @param {{ propagation: boolean, reset: boolean} | null} configs\n * @returns {ObservableItem}\n * @constructor\n */\nexport function Observable(value, configs = null) {\n return new ObservableItem(value, configs);\n}\n\nexport const $ = Observable;\nexport const obs = Observable;\n\n/**\n *\n * @param {string} propertyName\n */\nObservable.useValueProperty = function(propertyName = 'value') {\n Object.defineProperty(ObservableItem.prototype, propertyName, {\n get() {\n return this.$currentValue;\n },\n set(value) {\n this.set(value);\n },\n configurable: true,\n });\n};\n\nObservable.setLocale = function(locale) {\n Formatters.locale = locale.__$Observable ? locale : Observable(locale);\n};\n\n\n/**\n *\n * @param id\n * @returns {ObservableItem|null}\n */\nObservable.getById = function(id) {\n const item = MemoryManager.getObservableById(parseInt(id));\n if(!item) {\n throw new NativeDocumentError('Observable.getById : No observable found with id ' + id);\n }\n return item;\n};\n\n/**\n *\n * @param {ObservableItem} observable\n */\nObservable.cleanup = function(observable) {\n observable.cleanup();\n};\n\n/**\n * Enable auto cleanup of observables.\n * @param {Boolean} enable\n * @param {{interval:Boolean, threshold:number}} options\n */\nObservable.autoCleanup = function(enable = false, options = {}) {\n if(!enable) {\n return;\n }\n const { interval = 60000, threshold = 100 } = options;\n\n window.addEventListener('beforeunload', () => {\n MemoryManager.cleanup();\n });\n\n setInterval(() => MemoryManager.cleanObservables(threshold), interval);\n};\n\n\n/**\n * Creates an observable array with reactive array methods.\n * All mutations trigger updates automatically.\n *\n * @param {Array} [target=[]] - Initial array value\n * @param {Object|null} [configs=null] - Configuration options\n * // @param {boolean} [configs.propagation=true] - Whether to propagate changes to parent observables\n * // @param {boolean} [configs.deep=false] - Whether to make nested objects observable\n * @param {boolean} [configs.reset=false] - Whether to store initial value for reset()\n * @returns {ObservableArray} An observable array with reactive methods\n * @example\n * const items = Observable.array([1, 2, 3]);\n * items.push(4); // Triggers update\n * items.subscribe((arr) => console.log(arr));\n */\nObservable.array = function(target = [], configs = null) {\n return new ObservableArray(target, configs);\n};\n\n/**\n *\n * @param {Function} callback\n * @returns {Function}\n */\nObservable.batch = function(callback) {\n const $observer = Observable(0);\n const batch = function() {\n if(Validator.isAsyncFunction(callback)) {\n return (callback(...arguments)).then(() => {\n $observer.trigger();\n }).catch(error => { throw error; });\n }\n callback(...arguments);\n $observer.trigger();\n };\n batch.$observer = $observer;\n return batch;\n};\n\n\n/**\n * Creates a computed observable that automatically updates when its dependencies change.\n * The callback is re-executed whenever any dependency observable changes.\n *\n * @param {Function} callback - Function that returns the computed value\n * @param {Array<ObservableItem|ObservableChecker|ObservableProxy>|Function} [dependencies=[]] - Array of observables to watch, or batch function\n * @returns {ObservableItem} A new observable that updates automatically\n * @example\n * const firstName = Observable('John');\n * const lastName = Observable('Doe');\n * const fullName = Observable.computed(\n * () => `${firstName.val()} ${lastName.val()}`,\n * [firstName, lastName]\n * );\n *\n * // With batch function\n * const batch = Observable.batch(() => { ... });\n * const computed = Observable.computed(() => { ... }, batch);\n */\nObservable.computed = function(callback, dependencies = []) {\n const getValues = () => dependencies.map((item) => item.val());\n const initialValue = callback(...getValues());\n const observable = new ObservableItem(initialValue);\n const updatedValue = nextTick(() => observable.set(callback(...getValues())));\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('CreateObservableComputed', observable, dependencies);\n }\n\n if(Validator.isFunction(dependencies)) {\n if(!Validator.isObservable(dependencies.$observer)) {\n throw new NativeDocumentError('Observable.computed : dependencies must be valid batch function');\n }\n dependencies.$observer.subscribe(updatedValue);\n return observable;\n }\n\n dependencies.forEach(dependency => {\n if(dependency.__$isObservableObject) {\n dependency.observables().forEach((observable) => {\n observable.subscribe(updatedValue);\n });\n return;\n }\n dependency.subscribe(updatedValue);\n });\n\n return observable;\n};\nObservableItem.computed = Observable.computed;\n\n\nObservable.init = function(initialValue, configs = null) {\n return new ObservableObject(initialValue, configs);\n};\n\n/**\n *\n * @param {any[]} data\n * @return Proxy[]\n */\nObservable.arrayOfObject = function(data) {\n return data.map(item => Observable.object(item));\n};\n\n/**\n * Get the value of an observable or an object of observables.\n * @param {ObservableItem|Object<ObservableItem>} data\n * @returns {{}|*|null}\n */\nObservable.value = function(data) {\n if(data?.__$isObservableArray) {\n const result = [];\n for(let i = 0, length = data.length; i < length; i++) {\n const item = data.at(i);\n result.push(Observable.value(item));\n }\n return result;\n }\n if(data?.__$Observable) {\n return data.val();\n }\n return data;\n};\n\nObservable.object = Observable.init;\nObservable.json = Observable.init;\n\n\nObservable.resource = function(fn, deps = [], options = false) {\n const config = (typeof options === 'boolean')\n ? { auto: options, debounce: 0, lazy: false }\n : { auto: false, debounce: 0, lazy: false, ...options };\n\n return new ObservableResource(fn, deps, config);\n};\n\nObservableItem.prototype.resolve = function () {\n return Observable.value(this);\n};","import Validator from '../utils/validator';\nimport NativeDocumentError from '../errors/NativeDocumentError';\nimport {BOOL_ATTRIBUTES_NAME, BOOLEAN_ATTRIBUTES} from './constants.js';\nimport {Observable} from '../data/Observable';\n\n/**\n * Applies a reactive class map to an HTMLElement.\n * Each key is a CSS class name; each value is a boolean or ObservableItem<boolean>.\n * If the value is an ObservableChecker emitting a string, toggles the class name dynamically.\n *\n * @param {HTMLElement} element - Target element\n * @param {Record<string, boolean|ObservableItem<boolean>|ObservableChecker<boolean|string>>} data - Class map\n */\nexport const bindClassAttribute = (element, data) => {\n for(const className in data) {\n const value = data[className];\n if(value.__$Observable) {\n if(value.__$isObservableChecker) {\n let lastClass = value.val();\n if(typeof lastClass === 'string') {\n element.classes.toggle(lastClass, true);\n value.subscribe((currentValue) => {\n element.classes.remove(lastClass);\n element.classes.toggle(currentValue, true);\n lastClass = currentValue;\n });\n continue;\n }\n }\n element.classes.toggle(className, value.val());\n value.subscribe((shouldAdd) => element.classes.toggle(className, shouldAdd));\n continue;\n }\n if(value.$hydrate) {\n value.$hydrate(element, className);\n continue;\n }\n element.classes.toggle(className, value);\n }\n};\n\n/**\n * Applies a reactive style map to an HTMLElement.\n * Each key is a CSS property name (camelCase or CSS custom property `--var`);\n * each value is a string or ObservableItem<string>.\n * CSS custom properties are set via element.style.setProperty().\n *\n * @param {HTMLElement} element - Target element\n * @param {Record<string, string|ObservableItem<string>>} data - Style map\n */\nexport const bindStyleAttribute = (element, data) => {\n for(const styleName in data) {\n const value = data[styleName];\n const isCustomProperty = styleName.startsWith('--');\n\n if(value.__$Observable) {\n if(isCustomProperty) {\n element.style.setProperty(styleName, value.val());\n value.subscribe((newValue) => {\n if(newValue === false) {\n element.style.removeProperty(styleName);\n return;\n }\n element.style.setProperty(styleName, newValue);\n });\n } else {\n element.style[styleName] = value.val();\n value.subscribe((newValue) => {\n if(newValue === false) {\n element.style.removeProperty(styleName);\n return;\n }\n element.style[styleName] = newValue;\n });\n }\n continue;\n }\n\n if(isCustomProperty) {\n element.style.setProperty(styleName, value);\n continue;\n }\n\n element.style[styleName] = value;\n }\n};\n\n/**\n *\n * @param {HTMLElement} element\n * @param {string} attributeName\n * @param {boolean|number|Observable} value\n */\nexport const bindBooleanAttribute = (element, attributeName, value) => {\n const isObservable = value.__$isObservable;\n const defaultValue = isObservable? value.val() : value;\n\n const attributeRealName = BOOL_ATTRIBUTES_NAME[attributeName];\n\n if(Validator.isBoolean(defaultValue)) {\n element[attributeRealName] = defaultValue;\n }\n else {\n element[attributeRealName] = defaultValue === element.value;\n }\n if(isObservable) {\n if(attributeName === 'checked') {\n if(typeof defaultValue === 'boolean') {\n element.addEventListener('input', () => value.set(element[attributeRealName]));\n }\n else {\n element.addEventListener('input', () => value.set(element.value));\n }\n value.subscribe((newValue) => element[attributeRealName] = newValue);\n return;\n }\n value.subscribe((newValue) => element[attributeRealName] = (newValue === element.value));\n }\n};\n\n\n/**\n *\n * @param {HTMLElement} element\n * @param {string} attributeName\n * @param {Observable} value\n */\nexport const bindAttributeWithObservable = (element, attributeName, value) => {\n const applyValue = attributeName === 'value' ? (newValue) => element.value = newValue : (newValue) => element.setAttribute(attributeName, newValue);\n value.subscribe(applyValue);\n\n if(attributeName === 'value') {\n element.value = value.val();\n element.addEventListener('input', () => value.set(element.value));\n return;\n }\n element.setAttribute(attributeName, value.val());\n};\n\n/**\n *\n * @param {HTMLElement} element\n * @param {Object} attributes\n */\nconst AttributesWrapper = (element, attributes) => {\n\n if(process.env.NODE_ENV === 'development') {\n Validator.validateAttributes(attributes);\n }\n\n for(const originalAttributeName in attributes) {\n const attributeName = originalAttributeName.toLowerCase();\n const value = attributes[originalAttributeName];\n if(value == null) {\n continue;\n }\n if(value.handleNdAttribute) {\n value.handleNdAttribute(element, attributeName, value);\n continue;\n }\n if(typeof value === 'object') {\n if(attributeName === 'class') {\n bindClassAttribute(element, value);\n continue;\n }\n if(attributeName === 'style') {\n bindStyleAttribute(element, value);\n continue;\n }\n }\n if(BOOLEAN_ATTRIBUTES.has(attributeName)) {\n bindBooleanAttribute(element, attributeName, value);\n continue;\n }\n\n element.setAttribute(attributeName, value);\n }\n return element;\n};\n\nexport default AttributesWrapper;","import Validator from '../utils/validator';\nimport AttributesWrapper, { bindClassAttribute, bindStyleAttribute } from './AttributesWrapper';\nimport PluginsManager from '../utils/plugins-manager';\n\nlet $textNodeCache = null;\n\nexport const ElementCreator = {\n createTextNode() {\n if(!$textNodeCache) {\n $textNodeCache = document.createTextNode('');\n ElementCreator.createTextNode = () => $textNodeCache.cloneNode();\n }\n return $textNodeCache.cloneNode();\n },\n /**\n *\n * @param {HTMLElement|DocumentFragment} parent\n * @param {ObservableItem} observable\n * @returns {Text}\n */\n createObservableNode: (parent, observable) => {\n const text = ElementCreator.createTextNode();\n observable.subscribe(value => text.nodeValue = value);\n text.nodeValue = observable.val();\n parent && parent.appendChild(text);\n return text;\n },\n /**\n *\n * @param {HTMLElement|DocumentFragment} parent\n * @param {{$hydrate: Function}} item\n * @returns {Text}\n */\n createHydratableNode: (parent, item) => {\n const text = ElementCreator.createTextNode();\n item.$hydrate(text);\n return text;\n },\n\n /**\n *\n * @param {HTMLElement|DocumentFragment} parent\n * @param {*} value\n * @returns {Text}\n */\n createStaticTextNode: (parent, value) => {\n const text = ElementCreator.createTextNode();\n text.nodeValue = value;\n parent && parent.appendChild(text);\n return text;\n },\n /**\n *\n * @param {string} name\n * @returns {HTMLElement|DocumentFragment}\n */\n createElement: (name) => {\n const node = document.createElement(name);\n return node.cloneNode();\n },\n bindTextNode: (textNode, value) => {\n if(value?.__$isObservable) {\n value.subscribe(newValue => textNode.nodeValue = newValue);\n textNode.nodeValue = value.val();\n return;\n }\n textNode.nodeValue = value;\n },\n /**\n *\n * @param {*} children\n * @param {HTMLElement|DocumentFragment} parent\n */\n processChildren: (children, parent) => {\n if(children === null) return;\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('BeforeProcessChildren', parent);\n }\n const child = ElementCreator.getChild(children);\n if(child) {\n parent.appendChild(child);\n }\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('AfterProcessChildren', parent);\n }\n },\n async safeRemove(element) {\n await element.remove();\n\n },\n getChild: (child) => {\n if(child == null) {\n return null;\n }\n if(child.toNdElement) {\n do {\n child = child.toNdElement();\n if(Validator.isElement(child)) {\n return child;\n }\n } while (child.toNdElement);\n }\n\n return ElementCreator.createStaticTextNode(null, child);\n },\n /**\n *\n * @param {HTMLElement} element\n * @param {Object} attributes\n */\n processAttributes: (element, attributes) => {\n if (attributes) {\n AttributesWrapper(element, attributes);\n }\n },\n /**\n *\n * @param {HTMLElement} element\n * @param {Object} attributes\n */\n processAttributesDirect: AttributesWrapper,\n processClassAttribute: bindClassAttribute,\n processStyleAttribute: bindStyleAttribute,\n};","\n/**\n * Creates an augmented DocumentFragment with comment sentinel nodes and a MutationObserver\n * that fires when the fragment is inserted into the live DOM.\n * Used as the base for Anchor — not intended for direct use in application code.\n *\n * @internal\n * @constructor\n * @param {string} name - Debug label used in comment node text content\n * @returns {AnchorWithSentinel} Augmented DocumentFragment instance\n */\nexport default function AnchorWithSentinel(name) {\n const instance = Reflect.construct(DocumentFragment, [], AnchorWithSentinel);\n const sentinel = document.createComment((name || '') + ' Anchor Sentinel');\n const anchorStart = document.createComment('Anchor Start : '+name);\n const anchorEnd = document.createComment('/ Anchor End '+name);\n const events = {};\n\n instance.append(anchorStart, sentinel, anchorEnd);\n\n const observer = new MutationObserver(() => {\n if (sentinel.parentNode !== instance && !(sentinel.parentNode instanceof DocumentFragment)) {\n events.connected && events.connected(sentinel.parentNode);\n }\n });\n\n observer.observe(document, { childList: true, subtree: true });\n\n\n instance.$sentinel = sentinel;\n instance.$start = anchorStart;\n instance.$end = anchorEnd;\n instance.$observer = observer;\n instance.$events = events;\n\n return instance;\n}\n\nAnchorWithSentinel.prototype = Object.create(DocumentFragment.prototype);\nAnchorWithSentinel.prototype.constructor = AnchorWithSentinel;\n\n/**\n * Registers a callback to call every time the sentinel is connected to the live DOM.\n * The callback receives the parent node as its argument.\n *\n * @param {(parent: Node) => void} callback - Called each time the fragment is inserted\n * @returns {this}\n */\nAnchorWithSentinel.prototype.onConnected = function(callback) {\n this.$events.connected = callback;\n return this;\n};\n\n/**\n * Registers a callback to call the first time the sentinel is connected to the live DOM.\n * After the first connection, the MutationObserver is disconnected automatically.\n *\n * @param {(parent: Node) => void} callback - Called once on first insertion\n */\nAnchorWithSentinel.prototype.onConnectedOnce = function(callback) {\n this.$events.connected = (parent) => {\n callback(parent);\n this.$observer.disconnect();\n this.$events.connectedOnce = null;\n };\n};\n","import Validator from '../../utils/validator';\nimport {ElementCreator} from '../../wrappers/ElementCreator';\n\n\nexport default function oneChildAnchorOverwriting(anchor, parent) {\n\n anchor.remove = () => {\n anchor.append.apply(anchor, parent.childNodes);\n };\n anchor.getParent = () => parent;\n\n anchor.appendChild = (child) => {\n child = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n parent.appendChild(child);\n };\n\n anchor.appendChildRaw = parent.appendChild.bind(parent);\n anchor.append = anchor.appendChild;\n anchor.appendRaw = anchor.appendChildRaw;\n\n anchor.insertAtStart = (child) => {\n child = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n parent.firstChild ? parent.insertBefore(child, parent.firstChild) : parent.appendChild(child);\n };\n anchor.insertAtStartRaw = (child) => {\n parent.firstChild ? parent.insertBefore(child, parent.firstChild) : parent.appendChild(child);\n };\n\n anchor.appendElement = anchor.appendChild;\n\n anchor.removeChildren = () => {\n parent.textContent = '';\n };\n\n anchor.replaceContent = function(content) {\n const child = Validator.isElement(content) ? content : ElementCreator.getChild(content);\n parent.replaceChildren(child);\n };\n\n anchor.replaceContentRaw = function(child) {\n parent.replaceChildren(child);\n };\n anchor.setContent = anchor.replaceContent;\n\n anchor.insertBefore = (child, anchor) => {\n child = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n parent.insertBefore(child, anchor);\n };\n anchor.insertBeforeRaw = (child, anchor) => {\n parent.insertBefore(child, anchor);\n };\n\n anchor.appendChildBefore = anchor.insertBefore;\n anchor.appendChildBeforeRaw = anchor.insertBeforeRaw;\n\n anchor.clear = anchor.remove;\n anchor.detach = anchor.remove;\n\n anchor.replaceChildren = function() {\n parent.replaceChildren(...arguments);\n };\n\n anchor.getByIndex = (index) => {\n return parent.childNodes[index];\n };\n}","import Validator from '../../utils/validator';\nimport {ElementCreator} from '../../wrappers/ElementCreator';\nimport AnchorWithSentinel from './anchor-with-sentinel';\nimport oneChildAnchorOverwriting from './one-child-anchor-overwriting';\n\n/**\n * Creates an anchor fragment — a managed DocumentFragment delimited by comment sentinels.\n * Used internally by ForEach, ShowIf, Switch, Match and other control-flow directives\n * to manage dynamic DOM regions without a real container element.\n *\n * @param {string} name - Debug name for the anchor (visible as HTML comments in the DOM)\n * @param {boolean} [isUniqueChild=false] - If true, optimises rendering when this anchor is the only child of its parent\n * @returns {AnchorDocumentFragment} An augmented DocumentFragment with anchor management methods\n */\nexport default function Anchor(name, isUniqueChild = false) {\n const anchorFragment = new AnchorWithSentinel(name);\n\n anchorFragment.onConnectedOnce((parent) => {\n if(isUniqueChild) {\n oneChildAnchorOverwriting(anchorFragment, parent);\n }\n });\n\n anchorFragment.__Anchor__ = true;\n\n const anchorStart = anchorFragment.$start;\n const anchorEnd = anchorFragment.$end;\n\n anchorFragment.nativeInsertBefore = anchorFragment.insertBefore;\n anchorFragment.nativeAppendChild = anchorFragment.appendChild;\n anchorFragment.nativeAppend = anchorFragment.append;\n\n const isParentUniqueChild = isUniqueChild\n ? () => true: (parent) => (parent.firstChild === anchorStart && parent.lastChild === anchorEnd);\n\n const insertBefore = (parent, child, target) => {\n const childElement = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n insertBeforeRaw(parent, childElement, target);\n };\n\n const insertBeforeRaw = (parent, child, target) => {\n if(parent === anchorFragment) {\n parent.nativeInsertBefore(child, target);\n return;\n }\n if(isParentUniqueChild(parent) && target === anchorEnd) {\n parent.append(child, target);\n return;\n }\n parent.insertBefore(child, target);\n };\n\n anchorFragment.appendElement = function(child) {\n const parentNode = anchorStart.parentNode;\n if(parentNode === anchorFragment) {\n parentNode.nativeInsertBefore(child, anchorEnd);\n return;\n }\n parentNode.insertBefore(child, anchorEnd);\n };\n\n anchorFragment.appendChild = function(child, before = null) {\n const parent = anchorEnd.parentNode;\n if(!parent) {\n DebugManager.error('Anchor', 'Anchor : parent not found', child);\n return;\n }\n before = before ?? anchorEnd;\n insertBefore(parent, child, before);\n };\n\n anchorFragment.appendChildRaw = function(child, before = null) {\n const parent = anchorEnd.parentNode;\n if(!parent) {\n DebugManager.error('Anchor', 'Anchor : parent not found', child);\n return;\n }\n before = before ?? anchorEnd;\n insertBeforeRaw(parent, child, before);\n };\n\n anchorFragment.getParent = () => anchorEnd.parentNode;\n anchorFragment.append = anchorFragment.appendChild;\n anchorFragment.appendRaw = anchorFragment.appendChildRaw;\n\n anchorFragment.insertAtStart = function(child) {\n child = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n anchorFragment.insertAtStartRaw(child);\n };\n\n anchorFragment.insertAtStartRaw = function(child) {\n const parentNode = anchorStart.parentNode;\n if(parentNode === anchorFragment) {\n parentNode.nativeInsertBefore(child, anchorStart);\n return;\n }\n parentNode.insertBefore(child, anchorStart.nextSibling);\n };\n\n anchorFragment.removeChildren = function() {\n const parent = anchorEnd.parentNode;\n if(parent === anchorFragment) {\n return;\n }\n if(isParentUniqueChild(parent)) {\n parent.replaceChildren(anchorStart, anchorEnd);\n return;\n }\n\n let itemToRemove = anchorStart.nextSibling, tempItem;\n while(itemToRemove && itemToRemove !== anchorEnd) {\n tempItem = itemToRemove.nextSibling;\n itemToRemove.remove();\n itemToRemove = tempItem;\n }\n };\n\n anchorFragment.remove = function() {\n const parent = anchorEnd.parentNode;\n if(parent === anchorFragment) {\n return;\n }\n if(isParentUniqueChild(parent)) {\n anchorFragment.nativeAppend.apply(anchorFragment, parent.childNodes);\n parent.replaceChildren(anchorStart, anchorEnd);\n return;\n }\n let itemToRemove = anchorStart.nextSibling, tempItem;\n while(itemToRemove && itemToRemove !== anchorEnd) {\n tempItem = itemToRemove.nextSibling;\n anchorFragment.nativeAppend(itemToRemove);\n itemToRemove = tempItem;\n }\n };\n\n anchorFragment.removeWithAnchors = function() {\n anchorFragment.removeChildren();\n anchorStart.remove();\n anchorEnd.remove();\n };\n anchorFragment.delete = anchorFragment.removeWithAnchors;\n\n anchorFragment.replaceContent = function(child) {\n const childElement = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n anchorFragment.replaceContentRaw(childElement);\n };\n\n anchorFragment.replaceContentRaw = function(child) {\n const parent = anchorEnd.parentNode;\n if(!parent) {\n return;\n }\n if(isParentUniqueChild(parent)) {\n parent.replaceChildren(anchorStart, child, anchorEnd);\n return;\n }\n anchorFragment.removeChildren();\n parent.insertBefore(child, anchorEnd);\n };\n\n anchorFragment.setContent = anchorFragment.replaceContent;\n anchorFragment.setContentRaw = anchorFragment.replaceContentRaw;\n\n anchorFragment.insertBefore = anchorFragment.appendChild;\n anchorFragment.insertBeforeRaw = anchorFragment.appendChildRaw;\n\n anchorFragment.endElement = function() {\n return anchorEnd;\n };\n\n anchorFragment.startElement = function() {\n return anchorStart;\n };\n\n anchorFragment.restore = function() {\n anchorFragment.appendChild(anchorFragment);\n };\n\n anchorFragment.clear = anchorFragment.remove;\n anchorFragment.detach = anchorFragment.remove;\n\n anchorFragment.getByIndex = function(index) {\n let currentNode = anchorStart;\n for(let i = 0; i <= index; i++) {\n if(!currentNode.nextSibling) {\n return null;\n }\n currentNode = currentNode.nextSibling;\n }\n return currentNode !== anchorStart ? currentNode : null;\n };\n\n return anchorFragment;\n};\n\n/**\n *\n * @param {HTMLElement|DocumentFragment|Text|String|Array} children\n * @param {{ parent?: HTMLElement, name?: String}} configs\n * @returns {DocumentFragment}\n */\nexport function createPortal(children, { parent, name = 'unnamed' } = {}) {\n const anchor = Anchor('Portal '+name);\n anchor.appendChild(ElementCreator.getChild(children));\n\n (parent || document.body).appendChild(anchor);\n return anchor;\n}\n\nDocumentFragment.prototype.setAttribute = () => {};","\n\nexport default class ArgTypesError extends Error {\n constructor(message, errors) {\n super(`${message}\\n\\n${errors.join('\\n')}\\n\\n`);\n }\n}","import Validator from './validator';\nimport ArgTypesError from '../errors/ArgTypesError';\nimport NativeDocumentError from '../errors/NativeDocumentError';\n\nlet withValidation = (fn) => fn;\nlet ArgTypes = {};\n\n/**\n *\n * @type {{string: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * number: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * boolean: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * observable: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * element: (function(*): {name: *, type: string, validate: function(*): *}),\n * function: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * object: (function(*): {name: *, type: string, validate: function(*): boolean}),\n * objectNotNull: (function(*): {name: *, type: string, validate: function(*): *}),\n * children: (function(*): {name: *, type: string, validate: function(*): *}),\n * attributes: (function(*): {name: *, type: string, validate: function(*): *}),\n * optional: (function(*): *&{optional: boolean}),\n * oneOf: (function(*, ...[*]): {name: *, type: string, types: *[],\n * validate: function(*): boolean})\n * }}\n */\nif(process.env.NODE_ENV === 'development') {\n ArgTypes = {\n string: (name) => ({ name, type: 'string', validate: (v) => Validator.isString(v) }),\n number: (name) => ({ name, type: 'number', validate: (v) => Validator.isNumber(v) }),\n boolean: (name) => ({ name, type: 'boolean', validate: (v) => Validator.isBoolean(v) }),\n observable: (name) => ({ name, type: 'observable', validate: (v) => Validator.isObservable(v) }),\n element: (name) => ({ name, type: 'element', validate: (v) => Validator.isElement(v) }),\n function: (name) => ({ name, type: 'function', validate: (v) => Validator.isFunction(v) }),\n object: (name) => ({ name, type: 'object', validate: (v) => (Validator.isObject(v)) }),\n objectNotNull: (name) => ({ name, type: 'object', validate: (v) => (Validator.isObject(v) && v !== null) }),\n children: (name) => ({ name, type: 'children', validate: (v) => Validator.validateChildren(v) }),\n attributes: (name) => ({ name, type: 'attributes', validate: (v) => Validator.validateAttributes(v) }),\n\n // Optional arguments\n optional: (argType) => ({ ...argType, optional: true }),\n\n // Union types\n oneOf: (name, ...argTypes) => ({\n name,\n type: 'oneOf',\n types: argTypes,\n validate: (v) => argTypes.some(type => type.validate(v)),\n }),\n };\n\n\n /**\n *\n * @param {Array} args\n * @param {Array} argSchema\n * @param {string} fnName\n */\n const validateArgs = (args, argSchema, fnName = 'Function') => {\n if (!argSchema) return;\n\n const errors = [];\n\n // Check the number of arguments\n const requiredCount = argSchema.filter(arg => !arg.optional).length;\n if (args.length < requiredCount) {\n errors.push(`${fnName}: Expected at least ${requiredCount} arguments, got ${args.length}`);\n }\n\n // Validate each argument\n argSchema.forEach((schema, index) => {\n const position = index + 1;\n const value = args[index];\n\n if (value === undefined) {\n if (!schema.optional) {\n errors.push(`${fnName}: Missing required argument '${schema.name}' at position ${position}`);\n }\n return;\n }\n\n if (!schema.validate(value)) {\n const valueTypeOf = value?.constructor?.name || typeof value;\n errors.push(`${fnName}: Invalid argument '${schema.name}' at position ${position}, expected ${schema.type}, got ${valueTypeOf}`);\n }\n });\n\n if (errors.length > 0) {\n throw new ArgTypesError('Argument validation failed', errors);\n }\n };\n\n\n\n /**\n * @param {Function} fn\n * @param {Array} argSchema\n * @param {string} fnName\n * @returns {Function}\n */\n withValidation = (fn, argSchema, fnName = 'Function') => {\n if(!Validator.isArray(argSchema)) {\n throw new NativeDocumentError('withValidation : argSchema must be an array');\n }\n return function(...args) {\n validateArgs(args, argSchema, fn.name || fnName);\n return fn.apply(this, args);\n };\n };\n}\nif(process.env.NODE_ENV === 'production') {\n ArgTypes = {\n string: () => true,\n number: () => true,\n boolean: () => true,\n observable: () => true,\n element: () => true,\n function: () => true,\n object: () => true,\n objectNotNull: () => true,\n children: () => true,\n attributes: () => true,\n\n // Optional arguments\n optional: () => true,\n\n // Union types\n oneOf: () => true,\n };\n}\n\nexport const normalizeComponentArgs = function(props, children = null) {\n if(props && children) {\n return { props, children };\n }\n if(typeof props !== 'object' || Array.isArray(props) || props === null || props.constructor.name !== 'Object' || props.$hydrate) { // IF it's not a JSON\n return { props: children, children: props };\n }\n return { props, children };\n};\n\nexport { ArgTypes, withValidation };","const DocumentObserver = {\n mounted: new WeakMap(),\n beforeUnmount: new WeakMap(),\n mountedSupposedSize: 0,\n unmounted: new WeakMap(),\n unmountedSupposedSize: 0,\n observer: null,\n initObserver: () => {\n if(DocumentObserver.observer) {\n return;\n }\n DocumentObserver.observer = new MutationObserver(DocumentObserver.checkMutation);\n DocumentObserver.observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n },\n\n executeMountedCallback(node) {\n const data = DocumentObserver.mounted.get(node);\n if(!data) {\n return;\n }\n data.inDom = true;\n if(!data.mounted) {\n return;\n }\n if(Array.isArray(data.mounted)) {\n for(const cb of data.mounted) {\n cb(node);\n }\n return;\n }\n data.mounted(node);\n },\n\n executeUnmountedCallback(node) {\n const data = DocumentObserver.unmounted.get(node);\n if(!data) {\n return;\n }\n data.inDom = false;\n if(!data.unmounted) {\n return;\n }\n\n let shouldRemove = false;\n if(Array.isArray(data.unmounted)) {\n for(const cb of data.unmounted) {\n if(cb(node) === true) {\n shouldRemove = true;\n }\n }\n } else {\n shouldRemove = data.unmounted(node) === true;\n }\n\n if(shouldRemove) {\n data.disconnect();\n node.nd?.remove();\n }\n },\n\n checkMutation: function(mutationsList) {\n for(const mutation of mutationsList) {\n if(DocumentObserver.mountedSupposedSize > 0) {\n for(const node of mutation.addedNodes) {\n DocumentObserver.executeMountedCallback(node);\n if(!node.querySelectorAll) {\n continue;\n }\n const children = node.querySelectorAll('[data--nd-mounted]');\n for(const child of children) {\n DocumentObserver.executeMountedCallback(child);\n }\n }\n }\n\n if (DocumentObserver.unmountedSupposedSize > 0) {\n for (const node of mutation.removedNodes) {\n DocumentObserver.executeUnmountedCallback(node);\n if(!node.querySelectorAll) {\n continue;\n }\n const children = node.querySelectorAll('[data--nd-unmounted]');\n for(const child of children) {\n DocumentObserver.executeUnmountedCallback(child);\n }\n }\n }\n }\n },\n\n /**\n * @param {HTMLElement} element\n * @param {boolean} inDom\n * @returns {{ disconnect: Function, mounted: Function, unmounted: Function, off: Function }}\n */\n watch: function(element, inDom = false) {\n let mountedRegistered = false;\n let unmountedRegistered = false;\n\n DocumentObserver.initObserver();\n\n let data = {\n inDom,\n mounted: null,\n unmounted: null,\n disconnect: () => {\n if (mountedRegistered) {\n DocumentObserver.mounted.delete(element);\n DocumentObserver.mountedSupposedSize--;\n }\n if (unmountedRegistered) {\n DocumentObserver.unmounted.delete(element);\n DocumentObserver.unmountedSupposedSize--;\n }\n data = null;\n },\n };\n\n const addListener = (type, callback) => {\n if (!data[type]) {\n data[type] = callback;\n return;\n }\n if (!Array.isArray(data[type])) {\n data[type] = [data[type], callback];\n return;\n }\n data[type].push(callback);\n };\n\n const removeListener = (type, callback) => {\n if(!data?.[type]) {\n return;\n }\n if(Array.isArray(data[type])) {\n const index = data[type].indexOf(callback);\n if(index > -1) {\n data[type].splice(index, 1);\n }\n if(data[type].length === 1) {\n data[type] = data[type][0];\n }\n if(data[type].length === 0) {\n data[type] = null;\n }\n return;\n }\n data[type] = null;\n };\n\n return {\n disconnect: () => data?.disconnect(),\n\n mounted: (callback) => {\n addListener('mounted', callback);\n DocumentObserver.mounted.set(element, data);\n if (!mountedRegistered) {\n DocumentObserver.mountedSupposedSize++;\n mountedRegistered = true;\n }\n },\n\n unmounted: (callback) => {\n addListener('unmounted', callback);\n DocumentObserver.unmounted.set(element, data);\n if (!unmountedRegistered) {\n DocumentObserver.unmountedSupposedSize++;\n unmountedRegistered = true;\n }\n },\n\n off: (type, callback) => {\n removeListener(type, callback);\n },\n };\n },\n};\n\nexport default DocumentObserver;","import DocumentObserver from './DocumentObserver';\nimport PluginsManager from '../utils/plugins-manager';\nimport NativeDocumentError from '../errors/NativeDocumentError.js';\nimport DebugManager from '../utils/debug-manager.js';\nimport attributesWrapper, {\n bindAttributeWithObservable,\n bindClassAttribute,\n bindStyleAttribute,\n} from './AttributesWrapper';\n\n/**\n * Wraps an HTMLElement with NativeDocument's reactivity and lifecycle API.\n * Created automatically by HtmlElementWrapper — not intended to be instantiated directly.\n *\n * @constructor\n * @param {HTMLElement} element - The underlying HTML element to wrap\n */\nexport function NDElement(element) {\n this.$element = element;\n this.$attachements = null;\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('NDElementCreated', element, this);\n }\n}\n\n\nNDElement.prototype.__$isNDElement = true;\n\nNDElement.$getChild = (el) => el;\n\n/**\n * Appends a child element to an internal DocumentFragment (ghost DOM),\n * keeping it detached from the main document until explicitly mounted.\n *\n * @param {HTMLElement|DocumentFragment|NDElement} element - Element to append\n * @returns {this}\n */\nNDElement.prototype.ghostDom = function(element) {\n if(!this.$attachements) {\n this.$attachements = document.createDocumentFragment();\n }\n this.$attachements.appendChild(NDElement.$getChild(element));\n return this;\n};\n\n/**\n * Returns the underlying HTMLElement. Used internally for type coercion.\n *\n * @returns {HTMLElement}\n */\nNDElement.prototype.valueOf = function() {\n return this.$element;\n};\n\n/**\n * Stores the underlying HTMLElement in target[name].\n * Use this to keep a reference to the raw DOM node.\n *\n * @param {Record<string, any>} target - Object to store the reference in\n * @param {string} name - Property name to assign on the target object\n * @returns {this}\n * @example\n * const refs = {};\n * Input({ type: 'text' }).nd.ref(refs, 'emailInput');\n * refs.emailInput.focus();\n */\nNDElement.prototype.ref = function(target, name) {\n target[name] = this.$element;\n return this;\n};\n\n/**\n * Stores the NDElement instance itself in target[name].\n * Use this to expose a component's public API to a parent (via .with()).\n *\n * @param {Record<string, any>} target - Object to store the reference in\n * @param {string} name - Property name to assign on the target object\n * @returns {this}\n * @example\n * const refs = {};\n * Counter()\n * .nd.with({ increment() { count.$value++; return this; } })\n * .refSelf(refs, 'counter');\n *\n * refs.counter.increment();\n */\nNDElement.prototype.refSelf = function(target, name) {\n target[name] = this;\n // TODO: @DIM to check\n // target[name] = new NDElement(this.$element);\n return this;\n};\n\n/**\n * Calls .nd.remove() on all child NDElements before removing this element.\n * Used to propagate lifecycle cleanup through the component tree.\n *\n * @returns {this}\n */\nNDElement.prototype.unmountChildren = function() {\n let element = this.$element;\n for(let i = 0, length = element.children.length; i < length; i++) {\n let elementChildren = element.children[i];\n if(!elementChildren.$ndProx) {\n elementChildren.nd?.remove();\n }\n elementChildren = null;\n }\n element = null;\n return this;\n};\n\n/**\n * Removes the element from the DOM and cleans up its lifecycle observers.\n * Also calls unmountChildren() recursively.\n *\n * @returns {this}\n */\nNDElement.prototype.remove = function() {\n let element = this.$element;\n element.nd.unmountChildren();\n element.$ndProx = null;\n\n $lifeCycleObservers.delete(element);\n\n element = null;\n return this;\n};\n\nconst $lifeCycleObservers = new WeakMap();\n\n/**\n * Registers mounted and/or unmounted lifecycle callbacks for this element.\n * Uses MutationObserver internally to detect DOM insertion and removal.\n *\n * @param {{ mounted?: (el: HTMLElement) => void, unmounted?: (el: HTMLElement) => boolean|void }} states - Lifecycle hooks\n * @returns {this}\n * @example\n * Div({}).nd.lifecycle({\n * mounted: (el) => console.log('mounted', el),\n * unmounted: (el) => console.log('unmounted', el),\n * });\n */\nNDElement.prototype.lifecycle = function(states) {\n const el = this.$element;\n if (!$lifeCycleObservers.has(el)) {\n $lifeCycleObservers.set(el, DocumentObserver.watch(el));\n }\n const observer = $lifeCycleObservers.get(el);\n\n if(states.mounted) {\n this.$element.setAttribute('data--nd-mounted', '1');\n observer.mounted(states.mounted);\n }\n if(states.unmounted) {\n this.$element.setAttribute('data--nd-unmounted', '1');\n observer.unmounted(states.unmounted);\n }\n return this;\n};\n\n/**\n * Registers an unmounted callback that cleans up all beforeUnmount handlers\n * and aborts any pending async operations on this element and its children.\n *\n * @returns {this}\n */\nNDElement.prototype.destroyOnUnmount = function() {\n this.unmounted(() => this.destroy());\n return this;\n};\n\n/**\n * aborts any pending async operations on this element and its children.\n *\n * @returns {this}\n */\nNDElement.prototype.destroy = function() {\n this.$element?.querySelectorAll('[data--nd-before-unmount]').forEach(child => {\n child.remove();\n child.__$controller?.abort();\n child.__$controller = null;\n $lifeCycleObservers.delete(child);\n });\n\n this.$element.__$controller?.abort();\n this.$element.__$controller = null;\n $lifeCycleObservers.delete(this.$element);\n this.$element = null;\n};\n\n/**\n * Shorthand for lifecycle({ mounted: callback }).\n *\n * @param {(el: HTMLElement) => void} callback - Called when element is inserted into the DOM\n * @returns {this}\n */\nNDElement.prototype.mounted = function(callback) {\n return this.lifecycle({ mounted: callback });\n};\n\n/**\n * Shorthand for lifecycle({ unmounted: callback }).\n *\n * @param {(el: HTMLElement) => boolean|void} callback - Called when element is removed from the DOM\n * @returns {this}\n */\nNDElement.prototype.unmounted = function(callback) {\n return this.lifecycle({ unmounted: callback });\n};\n\n/**\n * Registers an async callback to run before this element is removed from the DOM.\n * The element's .remove() is delayed until all beforeUnmount callbacks resolve.\n *\n * @param {string} id - Unique identifier for this callback (allows overwriting)\n * @param {(this: NDElement, el: HTMLElement) => void|Promise<void>} callback - Async-compatible callback\n * @returns {this}\n * @example\n * Div({}).nd.beforeUnmount('fade-out', async (el) => {\n * await el.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 300 }).finished;\n * });\n */\nNDElement.prototype.beforeUnmount = function(id, callback) {\n const el = this.$element;\n\n if(!DocumentObserver.beforeUnmount.has(el)) {\n DocumentObserver.beforeUnmount.set(el, new Map());\n const originalRemove = el.remove.bind(el);\n\n let $isUnmounting = false;\n this.$element.setAttribute('data--nd-before-unmount', '1');\n\n el.remove = async () => {\n if($isUnmounting) {\n return;\n }\n $isUnmounting = true;\n\n try {\n const callbacks = DocumentObserver.beforeUnmount.get(el);\n for (const cb of callbacks.values()) {\n await cb.call(this, el);\n }\n } finally {\n originalRemove();\n $isUnmounting = false;\n }\n };\n }\n\n DocumentObserver.beforeUnmount.get(el).set(id, callback);\n return this;\n};\n\n/**\n * Returns the underlying HTMLElement.\n * Alias: .node()\n *\n * @returns {HTMLElement}\n */\nNDElement.prototype.htmlElement = function() {\n return this.$element;\n};\n\nNDElement.prototype.node = NDElement.prototype.htmlElement;\n\n/**\n * Attaches a Shadow DOM to this element, redirecting all child appends to the shadow root.\n *\n * @param {'open'|'closed'} mode - Shadow DOM encapsulation mode\n * @param {string|null} [style=null] - Optional CSS string to inject into the shadow root\n * @returns {this}\n */\nNDElement.prototype.shadow = function(mode, style = null) {\n const $element = this.$element;\n const children = Array.from($element.childNodes);\n const shadowRoot = $element.attachShadow({ mode });\n if(style) {\n const styleNode = document.createElement('style');\n styleNode.textContent = style;\n shadowRoot.appendChild(styleNode);\n }\n $element.append = shadowRoot.append.bind(shadowRoot);\n $element.appendChild = shadowRoot.appendChild.bind(shadowRoot);\n shadowRoot.append(...children);\n\n return this;\n};\n\n/**\n * Shorthand for .shadow('open', style).\n *\n * @param {string|null} [style=null] - Optional CSS string to inject into the shadow root\n * @returns {this}\n */\nNDElement.prototype.openShadow = function(style = null) {\n return this.shadow('open', style);\n};\n\n/**\n * Shorthand for .shadow('closed', style).\n *\n * @param {string|null} [style=null] - Optional CSS string to inject into the shadow root\n * @returns {this}\n */\nNDElement.prototype.closedShadow = function(style = null) {\n return this.shadow('closed', style);\n};\n\n/**\n * Extends the current NDElement instance with custom methods.\n * Methods are bound to the instance and available for chaining.\n *\n * @param {Object} methods - Object containing method definitions\n * @returns {this} The NDElement instance with added methods for chaining\n * @example\n * element.nd.with({\n * highlight() {\n * this.$element.style.background = 'yellow';\n * return this;\n * }\n * }).highlight().onClick(() => console.log('Clicked'));\n */\nNDElement.prototype.with = function(methods) {\n if (!methods || typeof methods !== 'object') {\n throw new NativeDocumentError('extend() requires an object of methods');\n }\n if(process.env.NODE_ENV === 'development') {\n if (!this.$localExtensions) {\n this.$localExtensions = new Map();\n }\n }\n\n for (const name in methods) {\n const method = methods[name];\n\n if (typeof method !== 'function') {\n DebugManager.warn(`⚠️ extends(): \"${name}\" is not a function, skipping`);\n continue;\n }\n if(process.env.NODE_ENV === 'development') {\n if (this[name] && !this.$localExtensions.has(name)) {\n DebugManager.warn('NDElement.extend', `Method \"${name}\" already exists and will be overwritten`);\n }\n this.$localExtensions.set(name, method);\n }\n\n this[name] = method.bind(this);\n }\n\n return this;\n};\n\n/**\n * Sets a single attribute on the element.\n * If value is an ObservableItem, the attribute is updated reactively.\n *\n * @param {string} name - Attribute name\n * @param {string|ObservableItem<string>} value - Attribute value, static or reactive\n * @returns {this}\n * @example\n * Input({}).nd.attr('placeholder', label); // reactive placeholder\n */\nNDElement.prototype.attr = function(name, value) {\n if(value?.__$Observable) {\n bindAttributeWithObservable(this.$element, name, value);\n return this;\n }\n this.$element.setAttribute(name, value);\n return this;\n};\n\n/**\n * Applies a batch of attributes to the element via AttributesWrapper.\n * Supports reactive values, class maps, and style maps.\n *\n * @param {Object} attrs - Attributes object (same format as HtmlElementWrapper props)\n * @returns {this}\n */\nNDElement.prototype.attrs = function(attrs) {\n attributesWrapper(this.$element, attrs);\n return this;\n};\n\n/**\n * Applies a reactive class map to the element.\n * Each key is a class name; each value is a boolean or ObservableItem<boolean>.\n *\n * @param {Record<string, boolean|ObservableItem<boolean>>} classes - Class map\n * @returns {this}\n */\nNDElement.prototype.class = function(classes) {\n bindClassAttribute(this.$element, classes);\n return this;\n};\n\n/**\n * Applies a reactive style map to the element.\n * Each key is a CSS property; each value is a string or ObservableItem<string>.\n *\n * @param {Record<string, string|ObservableItem<string>>} style - Style map\n * @returns {this}\n */\nNDElement.prototype.style = function(style) {\n bindStyleAttribute(this.$element, style);\n return this;\n};\n\n\n/**\n * Extends the NDElement prototype with new methods available to all NDElement instances.\n * Use this to add global methods to all NDElements.\n *\n * @param {Object} methods - Object containing method definitions to add to prototype\n * @returns {typeof NDElement} The NDElement constructor\n * @throws {NativeDocumentError} If methods is not an object or contains non-function values\n * @example\n * NDElement.extend({\n * fadeIn() {\n * this.$element.style.opacity = '1';\n * return this;\n * }\n * });\n * // Now all NDElements have .fadeIn() method\n * Div().nd.fadeIn();\n */\nNDElement.extend = function(methods) {\n if (!methods || typeof methods !== 'object') {\n throw new NativeDocumentError('NDElement.extend() requires an object of methods');\n }\n\n if (Array.isArray(methods)) {\n throw new NativeDocumentError('NDElement.extend() requires an object, not an array');\n }\n\n const protectedMethods = new Set([\n 'constructor', 'valueOf', '$element', '$observer',\n 'ref', 'remove', 'cleanup', 'with', 'extend', 'attach',\n 'lifecycle', 'mounted', 'unmounted', 'unmountChildren',\n ]);\n\n for (const name in methods) {\n if (!Object.hasOwn(methods, name)) {\n continue;\n }\n\n const method = methods[name];\n\n if (typeof method !== 'function') {\n DebugManager.warn('NDElement.extend', `\"${name}\" is not a function, skipping`);\n continue;\n }\n\n if (protectedMethods.has(name)) {\n DebugManager.error('NDElement.extend', `Cannot override protected method \"${name}\"`);\n throw new NativeDocumentError(`Cannot override protected method \"${name}\"`);\n }\n\n if (NDElement.prototype[name]) {\n DebugManager.warn('NDElement.extend', `Overwriting existing prototype method \"${name}\"`);\n }\n\n NDElement.prototype[name] = method;\n }\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('NDElementExtended', methods);\n }\n\n return NDElement;\n};\n\n\n/**\n * The global sanitizer function used by nd.html() when sanitize option is enabled.\n * Must be set via NDElement.setSanitizer() before using {sanitize: true}.\n *\n * @type {Function|null}\n */\nNDElement.$sanitizer = null;\n\n/**\n * Configures the global sanitizer for nd.html().\n * The sanitizer function receives the HTML string and an optional config object.\n * Designed to be decoupled from any specific sanitizer library.\n *\n * @param {Function} sanitizerFn - Sanitizer function (html, config) => string\n * @returns {typeof NDElement}\n * @throws {NativeDocumentError} If sanitizerFn is not a function\n * @example\n * import DOMPurify from 'dompurify';\n * NDElement.setSanitizer((html, config) => DOMPurify.sanitize(html, config));\n */\nNDElement.setSanitizer = function(sanitizerFn) {\n if(typeof sanitizerFn !== 'function') {\n throw new NativeDocumentError('NDElement.setSanitizer() expects a function');\n }\n NDElement.$sanitizer = sanitizerFn;\n return NDElement;\n};\n\n/**\n * Sets the inner HTML of the element.\n * Requires either {unsafe: true} to bypass security checks,\n * or {sanitize: true|Object|Function} to sanitize the content.\n * Supports Observable values for reactive HTML updates.\n *\n * @param {string|ObservableItem} content - HTML string or Observable<string>\n * @param {Object} [options={}]\n * @param {boolean} [options.unsafe=false] - Bypass security check. Use only with trusted content.\n * @param {boolean|Object|Function} [options.sanitize=false] - Sanitize strategy:\n * - true: use global sanitizer with default config\n * - Object: use global sanitizer with custom config\n * - Function: use this function directly as sanitizer (html) => string\n * @returns {this}\n * @throws {NativeDocumentError} If sanitize is true/Object but no global sanitizer is configured\n * @example\n * // Unsafe — trusted content only\n * el.nd.html('<strong>Hello</strong>', {unsafe: true})\n *\n * // Global sanitizer with default config\n * el.nd.html($userContent, {sanitize: true})\n *\n * // Global sanitizer with custom config\n * el.nd.html($userContent, {sanitize: {\n * ALLOWED_TAGS: ['b', 'i', 'strong', 'a'],\n * ALLOWED_ATTR: ['href'],\n * }})\n *\n * // Custom sanitizer function for this specific case\n * el.nd.html($userContent, {sanitize: (html) => myCustomSanitizer(html)})\n *\n * // Reactive with sanitize\n * el.nd.html($content, {sanitize: true})\n */\nNDElement.prototype.html = function(content, {unsafe = false, sanitize = false} = {}) {\n const $element = this.$element;\n const apply = (value) => {\n if(sanitize) {\n if(typeof sanitize === 'function') {\n $element.innerHTML = sanitize(value);\n return;\n }\n\n if(!NDElement.$sanitizer) {\n throw new NativeDocumentError('nd.html() — no sanitizer configured. Call NDElement.setSanitizer() first.');\n }\n const config = sanitize === true ? {} : sanitize;\n $element.innerHTML = NDElement.$sanitizer(value, config);\n return;\n }\n\n if(!unsafe) {\n console.warn('nd.html() — use {unsafe: true} or {sanitize: true|Object|Function}');\n return;\n }\n\n $element.innerHTML = value;\n };\n\n if(content?.__$Observable) {\n content.subscribe(apply);\n apply(content.val());\n return this;\n }\n\n apply(content);\n return this;\n};\n\n/**\n * Makes the element content editable and binds it to an Observable.\n * Changes in the DOM update the Observable, and changes to the Observable\n * update the DOM (only when the element is not focused to avoid cursor issues).\n *\n * @param {ObservableItem} $obs - Observable to bind to the element content\n * @param {Object} [options={}]\n * @param {string} [options.format='html'] - 'html' uses innerHTML, 'text' uses innerText\n * @returns {this}\n * @example\n * // Basic usage\n * const $content = $('<b>Hello</b>');\n * Div({}).nd.contentEditable($content)\n *\n * // Text only\n * Div({}).nd.contentEditable($content, {format: 'text'})\n */\nNDElement.prototype.contentEditable = function($obs, {format = 'html'} = {}) {\n this.$element.contentEditable = true;\n\n const getValue = format === 'text'\n ? () => this.$element.innerText\n : () => this.$element.innerHTML;\n\n const setValue = format === 'text'\n ? (value) => { this.$element.innerText = value; }\n : (value) => { this.$element.innerHTML = value; };\n\n if($obs?.__$Observable) {\n $obs.subscribe((value) => {\n if(document.activeElement !== this.$element) {\n setValue(value);\n }\n });\n setValue($obs.val() || '');\n }\n\n this.$element.addEventListener('input', () => {\n $obs?.set(getValue());\n }, { signal: this.$getSignal() });\n\n return this;\n};","export const EVENTS = [\n 'Click',\n 'DblClick',\n 'MouseDown',\n 'MouseEnter',\n 'MouseLeave',\n 'MouseMove',\n 'MouseOut',\n 'MouseOver',\n 'MouseUp',\n 'Wheel',\n 'KeyDown',\n 'KeyPress',\n 'KeyUp',\n 'Blur',\n 'Change',\n 'Focus',\n 'Input',\n 'Invalid',\n 'Reset',\n 'Search',\n 'Select',\n 'Submit',\n 'Drag',\n 'DragEnd',\n 'DragEnter',\n 'DragLeave',\n 'DragOver',\n 'DragStart',\n 'Drop',\n 'AfterPrint',\n 'BeforePrint',\n 'BeforeUnload',\n 'Error',\n 'HashChange',\n 'Load',\n 'Offline',\n 'Online',\n 'PageHide',\n 'PageShow',\n 'Resize',\n 'Scroll',\n 'Unload',\n 'Abort',\n 'CanPlay',\n 'CanPlayThrough',\n 'DurationChange',\n 'Emptied',\n 'Ended',\n 'LoadedData',\n 'LoadedMetadata',\n 'LoadStart',\n 'Pause',\n 'Play',\n 'Playing',\n 'Progress',\n 'RateChange',\n 'Seeked',\n 'Seeking',\n 'Stalled',\n 'Suspend',\n 'TimeUpdate',\n 'VolumeChange',\n 'Waiting',\n\n 'TouchCancel',\n 'TouchEnd',\n 'TouchMove',\n 'TouchStart',\n 'AnimationEnd',\n 'AnimationIteration',\n 'AnimationStart',\n 'TransitionEnd',\n 'Copy',\n 'Cut',\n 'Paste',\n 'FocusIn',\n 'FocusOut',\n 'ContextMenu',\n];\n\nexport const EVENTS_WITH_PREVENT = [\n 'Click',\n 'DblClick',\n 'MouseDown',\n 'MouseUp',\n 'Wheel',\n 'KeyDown',\n 'KeyPress',\n 'Invalid',\n 'Reset',\n 'Submit',\n 'DragOver',\n 'Drop',\n 'BeforeUnload',\n 'TouchCancel',\n 'TouchEnd',\n 'TouchMove',\n 'TouchStart',\n 'Copy',\n 'Cut',\n 'Paste',\n 'ContextMenu',\n];\n\nexport const EVENTS_WITH_STOP = [\n 'Click',\n 'DblClick',\n 'MouseDown',\n 'MouseMove',\n 'MouseOut',\n 'MouseOver',\n 'MouseUp',\n 'Wheel',\n 'KeyDown',\n 'KeyPress',\n 'KeyUp',\n 'Change',\n 'Input',\n 'Invalid',\n 'Reset',\n 'Search',\n 'Select',\n 'Submit',\n 'Drag',\n 'DragEnd',\n 'DragEnter',\n 'DragLeave',\n 'DragOver',\n 'DragStart',\n 'Drop',\n 'BeforeUnload',\n 'HashChange',\n 'TouchCancel',\n 'TouchEnd',\n 'TouchMove',\n 'TouchStart',\n 'AnimationEnd',\n 'AnimationIteration',\n 'AnimationStart',\n 'TransitionEnd',\n 'Copy',\n 'Cut',\n 'Paste',\n 'FocusIn',\n 'FocusOut',\n 'ContextMenu',\n];","import { NDElement } from './NDElement';\nimport {EVENTS, EVENTS_WITH_PREVENT, EVENTS_WITH_STOP} from '../utils/events';\n\nconst property = {\n configurable: true,\n get() {\n return new NDElement(this);\n },\n};\n\nObject.defineProperty(HTMLElement.prototype, 'nd', property);\n\nObject.defineProperty(DocumentFragment.prototype, 'nd', property);\n\nObject.defineProperty(NDElement.prototype, 'nd', {\n configurable: true,\n get: function() {\n return this;\n },\n});\n\n\n\n// ----------------------------------------------------------------\n// Events helpers\n// ----------------------------------------------------------------\nEVENTS.forEach(eventSourceName => {\n const eventName = eventSourceName.toLowerCase();\n NDElement.prototype['on'+eventSourceName] = function(callback = null, options = {}) {\n this.$element.addEventListener(eventName, callback, {\n signal: this.$getSignal(),\n ...options,\n });\n return this;\n };\n});\n\nEVENTS_WITH_STOP.forEach(eventSourceName => {\n const eventName = eventSourceName.toLowerCase();\n NDElement.prototype['onStop'+eventSourceName] = function(callback = null, options = {}) {\n _stop(this.$element, eventName, callback, {\n signal: this.$getSignal(),\n ...options,\n });\n return this;\n };\n NDElement.prototype['onPreventStop'+eventSourceName] = function(callback = null, options = {}) {\n _preventStop(this.$element, eventName, callback, {\n signal: this.$getSignal(),\n ...options,\n });\n return this;\n };\n});\n\nEVENTS_WITH_PREVENT.forEach(eventSourceName => {\n const eventName = eventSourceName.toLowerCase();\n NDElement.prototype['onPrevent'+eventSourceName] = function(callback = null, options = {}) {\n _prevent(this.$element, eventName, callback, {\n signal: this.$getSignal(),\n ...options,\n });\n return this;\n };\n});\n\n/**\n * Retrieves or creates an AbortController signal tied to this element's lifecycle.\n * The signal is automatically aborted when the element is removed via .nd.remove().\n * Used internally by all event listeners (onClick, onInput, etc.) to auto-cleanup on unmount.\n *\n * @internal\n * @returns {AbortSignal} The signal for this element's AbortController\n */\nNDElement.prototype.$getSignal = function() {\n if(!this.$element.__$controller) {\n this.$element.__$controller = new AbortController();\n }\n return this.$element.__$controller.signal;\n};\n\n\n/**\n * Adds a native event listener to the underlying HTMLElement.\n * The listener is automatically removed when the element is unmounted (via AbortSignal).\n *\n * @param {string} name - Event name (case-insensitive, e.g. 'click', 'input')\n * @param {EventListener} callback - Handler to call when the event fires\n * @param {boolean|AddEventListenerOptions} [options] - Listener options merged with the element's AbortSignal\n * @returns {this}\n */\nNDElement.prototype.on = function(name, callback, options) {\n this.$element.addEventListener(name.toLowerCase(), callback, {\n signal: this.$getSignal(),\n ...options,\n });\n return this;\n};\n\n/**\n * Removes a previously registered event listener from the underlying HTMLElement.\n *\n * @param {string} name - Event name (case-insensitive)\n * @param {EventListener} callback - The exact handler reference to remove\n * @returns {this}\n */\nNDElement.prototype.off = function(name, callback) {\n this.$element.removeEventListener(name.toLowerCase(), callback);\n return this;\n};\n\n/**\n * Adds a one-time event listener that removes itself after the first call.\n * Uses the element's AbortSignal for lifecycle-safe cleanup.\n *\n * @param {string} name - Event name (case-insensitive)\n * @param {EventListener} callback - Handler called once when the event fires\n * @returns {this}\n */\nNDElement.prototype.once = function(name, callback) {\n this.$element.addEventListener(name.toLowerCase(), callback, {\n signal: this.$getSignal(),\n once: true,\n });\n return this;\n};\n\n/**\n * Dispatches a custom event on the underlying HTMLElement.\n * The event bubbles and is cancelable by default.\n *\n * @param {string} name - Custom event name\n * @param {*} [detail=null] - Data passed in event.detail\n * @returns {this}\n * @example\n * Button('Save').nd.emit('saved', { id: 42 });\n * // Triggers: element.addEventListener('saved', e => console.log(e.detail.id))\n */\nNDElement.prototype.emit = function(name, detail = null) {\n const event = new CustomEvent(name, {\n detail,\n bubbles: true,\n cancelable: true,\n });\n this.$element.dispatchEvent(event);\n return this;\n};\n\nconst _prevent = function(element, eventName, callback, options) {\n const handler = (event) => {\n event.preventDefault();\n callback && callback.call(element, event);\n };\n element.addEventListener(eventName, handler, options);\n return this;\n};\n\nconst _stop = function(element, eventName, callback, options) {\n const handler = (event) => {\n event.stopPropagation();\n callback && callback.call(element, event);\n };\n element.addEventListener(eventName, handler, options);\n return this;\n};\n\nconst _preventStop = function(element, eventName, callback, options) {\n const handler = (event) => {\n event.stopPropagation();\n event.preventDefault();\n callback && callback.call(element, event);\n };\n element.addEventListener(eventName, handler, options);\n return this;\n};\n\n\n\n// ----------------------------------------------------------------\n// Class attributes binder\n// ----------------------------------------------------------------\nconst classListMethods = {\n getClasses() {\n return this.$element.className?.split(' ').filter(Boolean);\n },\n add(value) {\n const classes = this.getClasses();\n if(classes.indexOf(value) >= 0) {\n return;\n }\n classes.push(value);\n this.$element.className = classes.join(' ');\n },\n remove(value) {\n const classes = this.getClasses();\n const index = classes.indexOf(value);\n if(index < 0) {\n return;\n }\n classes.splice(index, 1);\n this.$element.className = classes.join(' ');\n },\n toggle(value, force = undefined) {\n const classes = this.getClasses();\n const index = classes.indexOf(value);\n if(index >= 0) {\n if(force === true) {\n return;\n }\n classes.splice(index, 1);\n }\n else {\n if(force === false) {\n return;\n }\n classes.push(value);\n }\n this.$element.className = classes.join(' ');\n },\n contains(value) {\n return this.getClasses().indexOf(value) >= 0;\n },\n};\n\nObject.defineProperty(HTMLElement.prototype, 'classes', {\n configurable: true,\n get() {\n return {\n $element: this,\n ...classListMethods,\n };\n },\n});","import {withValidation} from './args-types.js';\n\n\nDocumentFragment.prototype.__IS_FRAGMENT = true;\n\n/**\n * Wraps a function with argument validation based on an ArgTypes schema.\n * Throws an ArgTypesError if the arguments don't match the schema.\n *\n * @param {...ArgType} args - ArgType descriptors defining expected argument types\n * @returns {Function} Wrapped function that validates its arguments before executing\n * @example\n * function greet(name, age) { ... }\n * const safeGreet = greet.args(ArgTypes.string('name'), ArgTypes.number('age'));\n * safeGreet('John', 25); // OK\n * safeGreet('John', 'old'); // throws ArgTypesError\n */\nFunction.prototype.args = function(...args) {\n return withValidation(this, args);\n};\n\n\n/**\n * Wraps a function with a try/catch error boundary.\n * If the function throws, the callback is called with the error and context instead.\n *\n * @param {(error: Error, context: { caller: Function, args: any[] }) => *} callback - Error handler\n * @returns {Function} Wrapped function with error boundary\n * @example\n * const safeRender = render.errorBoundary((err, { args }) => {\n * console.error('Render failed:', err.message);\n * return Div({}, 'Error');\n * });\n */\nFunction.prototype.errorBoundary = function(callback) {\n const handler = (...args) => {\n try {\n return this.apply(this, args);\n } catch(e) {\n return callback(e, {caller: handler, args: args });\n }\n };\n return handler;\n};\n","\n\nexport default function TemplateBinding(hydrate) {\n this.$hydrate = hydrate;\n}\n\nTemplateBinding.prototype.__$isTemplateBinding = true;","import ObservableItem from '../../data/ObservableItem';\nimport {NDElement} from '../NDElement';\nimport TemplateBinding from '../TemplateBinding';\nimport {ElementCreator} from '../ElementCreator';\nimport PluginsManager from '../../utils/plugins-manager';\nimport ObservableChecker from '../../data/ObservableChecker';\n\n\nNDElement.$getChild = ElementCreator.getChild;\n\n/**\n * Converts a string to a reactive text node.\n *\n * @returns {Text} Static text node containing the string value\n */\nString.prototype.toNdElement = function () {\n return ElementCreator.createStaticTextNode(null, this);\n};\n\n/**\n * Converts a number to a static text node.\n *\n * @returns {Text} Static text node containing the number as a string\n */\nNumber.prototype.toNdElement = function () {\n return ElementCreator.createStaticTextNode(null, this.toString());\n};\n\n/**\n * Returns the element itself (identity for DOM compatibility).\n *\n * @returns {Element} this\n */\nElement.prototype.toNdElement = function () {\n return this;\n};\n\n/**\n * Returns the text node itself (identity for DOM compatibility).\n *\n * @returns {Text} this\n */\nText.prototype.toNdElement = function () {\n return this;\n};\n\n/**\n * Returns the comment node itself (identity for DOM compatibility).\n *\n * @returns {Comment} this\n */\nComment.prototype.toNdElement = function () {\n return this;\n};\n\n/**\n * Returns the document itself (identity for DOM compatibility).\n *\n * @returns {Document} this\n */\nDocument.prototype.toNdElement = function () {\n return this;\n};\n\n/**\n * Returns the document fragment itself (identity for DOM compatibility).\n *\n * @returns {DocumentFragment} this\n */\nDocumentFragment.prototype.toNdElement = function () {\n return this;\n};\n\n/**\n * Converts the ObservableItem to a reactive text node that updates automatically when the value changes.\n *\n * @returns {Text} Reactive text node bound to this observable\n */\nObservableItem.prototype.toNdElement = function () {\n return ElementCreator.createObservableNode(null, this);\n};\n\nObservableChecker.prototype.toNdElement = ObservableItem.prototype.toNdElement;\n\n/**\n * Converts the NDElement to its underlying HTMLElement (or ghost DOM fragment if ghostDom was used).\n *\n * @returns {HTMLElement|DocumentFragment} The underlying DOM node\n */\nNDElement.prototype.toNdElement = function () {\n const element = this.$element ?? this.$build?.() ?? this.build?.() ?? null;\n if(this.$attachements) {\n if(!this.$attachements.contains(this.$element)) {\n this.$attachements.append(this.$element);\n }\n return this.$attachements;\n }\n return element;\n};\n\n/**\n * Converts the array to a DocumentFragment containing all elements.\n * Each item is processed through ElementCreator.getChild().\n *\n * @returns {DocumentFragment} Fragment containing all array children\n */\nArray.prototype.toNdElement = function () {\n const fragment = document.createDocumentFragment();\n for(let i = 0, length = this.length; i < length; i++) {\n const child = ElementCreator.getChild(this[i]);\n if(child === null) continue;\n fragment.appendChild(child);\n }\n return fragment;\n};\n\n/**\n * Calls the function and converts its return value to a DOM node.\n * Used internally by ElementCreator to process function-based children.\n *\n * @returns {Node} The DOM node returned by the function\n */\nFunction.prototype.toNdElement = function () {\n const child = this;\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('BeforeProcessComponent', child);\n }\n return ElementCreator.getChild(child());\n};\n\n/**\n * Converts the TemplateBinding to a hydratable DOM node for use in TemplateCloner.\n *\n * @returns {Node} Hydratable node\n */\nTemplateBinding.prototype.toNdElement = function () {\n return ElementCreator.createHydratableNode(null, this);\n};\n","import {NDElement} from '../NDElement';\n\n/**\n * @param {HTMLElement} el\n * @param {number} timeout\n */\nconst waitForVisualEnd = (el, timeout = 1000) => {\n return new Promise((resolve) => {\n let isResolved = false;\n\n const cleanupAndResolve = (e) => {\n if (e && e.target !== el) return;\n if (isResolved) return;\n\n isResolved = true;\n el.removeEventListener('transitionend', cleanupAndResolve);\n el.removeEventListener('animationend', cleanupAndResolve);\n clearTimeout(timer);\n resolve();\n };\n\n el.addEventListener('transitionend', cleanupAndResolve);\n el.addEventListener('animationend', cleanupAndResolve);\n\n const timer = setTimeout(cleanupAndResolve, timeout);\n\n const style = window.getComputedStyle(el);\n const hasTransition = style.transitionDuration !== '0s';\n const hasAnimation = style.animationDuration !== '0s';\n\n if (!hasTransition && !hasAnimation) {\n cleanupAndResolve();\n }\n });\n};\n\n/**\n * Registers a beforeUnmount hook that plays an exit CSS transition before the element is removed.\n * Adds the class `{transitionName}-exit`, waits for the transition/animation to end, then removes it.\n *\n * @param {string} transitionName - CSS class prefix for the exit transition\n * @returns {this}\n * @example\n * Div({ class: 'modal' }).nd.transitionOut('fade');\n * // Adds 'fade-exit' before removal, waits for transitionend/animationend\n */\nNDElement.prototype.transitionOut = function(transitionName) {\n const exitClass = transitionName + '-exit';\n const el = this.$element;\n this.beforeUnmount('transition-exit', async function() {\n el.classes.add(exitClass);\n await waitForVisualEnd(el);\n el.classes.remove(exitClass);\n });\n return this;\n};\n\n/**\n * Plays an enter CSS transition when the element is mounted into the DOM.\n * Adds `{transitionName}-enter-from` immediately, then swaps to `{transitionName}-enter-to`\n * on the next animation frame, and cleans up after the transition ends.\n *\n * @param {string} transitionName - CSS class prefix for the enter transition\n * @returns {this}\n * @example\n * Div({ class: 'modal' }).nd.transitionIn('fade');\n * // On mount: adds 'fade-enter-from', then swaps to 'fade-enter-to'\n */\nNDElement.prototype.transitionIn = function(transitionName) {\n const startClass = transitionName + '-enter-from';\n const endClass = transitionName + '-enter-to';\n\n const el = this.$element;\n\n el.classes.add(startClass);\n\n this.mounted(() => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n el.classes.remove(startClass);\n el.classes.add(endClass);\n\n waitForVisualEnd(el).then(() => {\n el.classes.remove(endClass);\n });\n });\n });\n });\n return this;\n};\n\n/**\n * Applies both enter and exit transitions to the element.\n * Shorthand for calling .transitionIn(name) and .transitionOut(name).\n *\n * @param {string} transitionName - CSS class prefix for both enter and exit transitions\n * @returns {this}\n * @example\n * Div({}).nd.transition('slide');\n * // On mount: enter transition; on unmount: exit transition\n */\nNDElement.prototype.transition = function (transitionName) {\n this.transitionIn(transitionName);\n this.transitionOut(transitionName);\n return this;\n};\n\n/**\n * Immediately applies a CSS animation class to the element.\n * Removes the class automatically once the animation ends.\n *\n * @param {string} animationName - CSS animation class name to add\n * @returns {this}\n * @example\n * Button('Click me').nd.animate('shake');\n * // Adds 'shake' class, removes it when animationend fires\n */\nNDElement.prototype.animate = function(animationName) {\n const el = this.$element;\n el.classes.add(animationName);\n\n waitForVisualEnd(el).then(() => {\n el.classes.remove(animationName);\n });\n\n return this;\n};","import {\n bindAttributeWithObservable,\n bindBooleanAttribute,\n} from '../AttributesWrapper';\nimport ObservableItem from '../../data/ObservableItem';\nimport TemplateBinding from '../TemplateBinding';\nimport {BOOLEAN_ATTRIBUTES} from '../constants';\nimport ObservableChecker from '../../data/ObservableChecker';\n\n\nObservableItem.prototype.handleNdAttribute = function(element, attributeName) {\n if(BOOLEAN_ATTRIBUTES.has(attributeName)) {\n bindBooleanAttribute(element, attributeName, this);\n return;\n }\n\n bindAttributeWithObservable(element, attributeName, this);\n};\n\nObservableChecker.prototype.handleNdAttribute = ObservableItem.prototype.handleNdAttribute;\n\nTemplateBinding.prototype.handleNdAttribute = function(element, attributeName) {\n this.$hydrate(element, attributeName);\n};\n","import Anchor from '../elements/anchor/anchor';\nimport {ElementCreator} from './ElementCreator';\nimport {normalizeComponentArgs} from '../utils/args-types';\nimport './NdPrototype';\n\nimport './NdPrototype';\nimport '../../core/utils/prototypes.js';\nimport '../wrappers/prototypes/nd-element-extensions';\nimport '../wrappers/prototypes/bind-class-extensions';\nimport '../wrappers/prototypes/nd-element.transition.extensions';\nimport '../wrappers/prototypes/attributes-extensions';\n\n\n/**\n * Creates a reactive or static text node from the given value.\n * If the value has a .toNdElement() method, delegates to it.\n * Otherwise creates an empty text node.\n *\n * @param {string|number|ObservableItem|*} value - Value to convert to a text node\n * @returns {Text} Text node, reactive if value is an ObservableItem\n */\nexport const createTextNode = (value) => {\n if(value) {\n return value.toNdElement();\n }\n return ElementCreator.createTextNode();\n};\n\n\n/**\n * Applies attributes and children to an existing HTMLElement.\n * Used internally by HtmlElementWrapper on each cloned node.\n *\n * @internal\n * @param {HTMLElement} element - Element to configure\n * @param {Object|null} _attributes - Attributes object or children if no attrs provided\n * @param {ValidChild|null} [_children=null] - Children to append\n * @returns {HTMLElement} The configured element\n */\nexport const createHtmlElement = (element, _attributes, _children = null) => {\n const { props: attributes, children = null } = normalizeComponentArgs(_attributes, _children);\n\n ElementCreator.processAttributes(element, attributes);\n ElementCreator.processChildren(children, element);\n return element;\n};\n\n/**\n * Creates a reusable element factory function for the given HTML tag.\n * The factory clones a cached template node on each call for performance.\n * Optionally wraps the created element with a custom wrapper function.\n *\n * @param {string} name - HTML tag name (e.g. 'div', 'button', 'input'). Pass empty string to create a Fragment.\n * @param {((element: HTMLElement) => HTMLElement)|null} [customWrapper=null] - Optional function to augment the element before returning\n * @returns {(attr?: Object, children?: ValidChild) => HTMLElement} Element factory function\n * @example\n * const Div = HtmlElementWrapper('div');\n * Div({ class: 'container' }, 'Hello');\n *\n * // With custom wrapper\n * const Form = HtmlElementWrapper('form', (el) => {\n * el.submit = (action) => { ... };\n * return el;\n * });\n */\nexport default function HtmlElementWrapper(name, customWrapper = null) {\n if(name) {\n if(customWrapper) {\n let node = null;\n let createElement = (attr, children) => {\n node = document.createElement(name);\n createElement = (attr, children) => {\n return createHtmlElement(customWrapper(node.cloneNode()), attr, children);\n };\n return createHtmlElement(customWrapper(node.cloneNode()), attr, children);;\n };\n\n return (attr, children) => createElement(attr, children);\n }\n\n let node = null;\n let createElement = (attr, children) => {\n node = document.createElement(name);\n createElement = (attr, children) => {\n return createHtmlElement(node.cloneNode(), attr, children);\n };\n return createHtmlElement(node.cloneNode(), attr, children);\n };\n\n return (attr, children) => createElement(attr, children);\n }\n return (children, name = '') => {\n const anchor = Anchor(name);\n anchor.append(children);\n return anchor;\n };\n};\n\n","import {ElementCreator} from '../ElementCreator';\nimport {createTextNode} from '../HtmlElementWrapper';\nimport {NDElement} from '../NDElement';\n\n/**\n * Stores deferred attribute, class, style, and event bindings for a cloneable element.\n * Used internally by TemplateCloner to apply per-instance data to cloned DOM nodes.\n * Not intended for direct use in application code.\n *\n * @internal\n * @constructor\n * @param {HTMLElement} $element - The template element to clone\n */\nexport default function NodeCloner($element) {\n this.$element = $element;\n this.$classes = null;\n this.$styles = null;\n this.$attrs = null;\n this.$ndMethods = null;\n}\n\n\n/**\n * Attaches a template binding to the element by hydrating it with the specified method.\n *\n * @param {string} methodName - Name of the hydration method to call\n * @param {BindingHydrator} bindingHydrator - Template binding with $hydrate method\n * @returns {HTMLElement} The underlying HTML element\n * @example\n * const onClick = $binder.attach((event, data) => console.log(data));\n * element.nd.attach('onClick', onClick);\n */\nNDElement.prototype.attach = function(methodName, bindingHydrator) {\n if(typeof bindingHydrator === 'function') {\n const element = this.$element;\n element.nodeCloner = element.nodeCloner || new NodeCloner(element);\n element.nodeCloner.attach(methodName, bindingHydrator);\n return element;\n }\n bindingHydrator.$hydrate(this.$element, methodName);\n return this.$element;\n};\n\nNodeCloner.prototype.__$isNodeCloner = true;\n\nconst buildProperties = (cache, properties, data) => {\n for(const key in properties) {\n cache[key] = properties[key].apply(null, data);\n }\n return cache;\n};\n\n/**\n * Pre-compiles all registered bindings into a sequence of optimised steps.\n * Called once before the first clone operation. Subsequent calls are no-ops.\n *\n * @internal\n */\nNodeCloner.prototype.resolve = function() {\n if(this.$content) {\n return;\n }\n const steps = [];\n if(this.$ndMethods) {\n const methods = Object.keys(this.$ndMethods);\n if(methods.length === 1) {\n const methodName = methods[0];\n const callback = this.$ndMethods[methodName];\n steps.push((clonedNode, data) => {\n clonedNode.nd[methodName](callback.bind(clonedNode, ...data));\n });\n } else {\n steps.push((clonedNode, data) => {\n const nd = clonedNode.nd;\n for(const methodName in this.$ndMethods) {\n nd[methodName](this.$ndMethods[methodName].bind(clonedNode, ...data));\n }\n });\n }\n }\n if(this.$classes) {\n const cache = {};\n const keys = Object.keys(this.$classes);\n\n if(keys.length === 1) {\n const key = keys[0];\n const callback = this.$classes[key];\n steps.push((clonedNode, data) => {\n cache[key] = callback.apply(null, data);\n ElementCreator.processClassAttribute(clonedNode, cache);\n });\n } else {\n steps.push((clonedNode, data) => {\n ElementCreator.processClassAttribute(clonedNode, buildProperties(cache, this.$classes, data));\n });\n }\n }\n if(this.$styles) {\n const cache = {};\n const keys = Object.keys(this.$styles);\n\n if(keys.length === 1) {\n const key = keys[0];\n const callback = this.$styles[key];\n steps.push((clonedNode, data) => {\n cache[key] = callback.apply(null, data);\n ElementCreator.processStyleAttribute(clonedNode, cache);\n });\n } else {\n steps.push((clonedNode, data) => {\n ElementCreator.processStyleAttribute(clonedNode, buildProperties(cache, this.$styles, data));\n });\n }\n }\n if(this.$attrs) {\n const cache = {};\n const keys = Object.keys(this.$attrs);\n\n if(keys.length === 1) {\n const key = keys[0];\n const callback = this.$attrs[key];\n steps.push((clonedNode, data) => {\n cache[key] = callback.apply(null, data);\n ElementCreator.processAttributes(clonedNode, cache);\n });\n } else {\n steps.push((clonedNode, data) => {\n ElementCreator.processAttributes(clonedNode, buildProperties(cache, this.$attrs, data));\n });\n }\n }\n\n const stepsCount = steps.length;\n const $element = this.$element;\n\n this.cloneNode = (data) => {\n const clonedNode = $element.cloneNode(false);\n for(let i = 0; i < stepsCount; i++) {\n steps[i](clonedNode, data);\n }\n return clonedNode;\n };\n};\n\n/**\n * Clones the template element and applies all compiled binding steps with the given data.\n *\n * @internal\n * @param {Array} data - Data array passed to each binding callback\n * @returns {HTMLElement} The cloned and hydrated element\n */\nNodeCloner.prototype.cloneNode = function(data) {\n return this.$element.cloneNode(false);\n};\n\n/**\n * Registers an NDElement method binding (e.g. onClick, onInput) to be applied on each clone.\n *\n * @internal\n * @param {string} methodName - Name of the NDElement method to call (e.g. 'onClick')\n * @param {Function} callback - Callback function to pass to the method\n * @returns {NodeCloner} this\n */\nNodeCloner.prototype.attach = function(methodName, callback) {\n this.$ndMethods = this.$ndMethods || {};\n this.$ndMethods[methodName] = callback;\n return this;\n};\n\n/**\n * Registers a reactive text content binding for the element.\n *\n * @internal\n * @param {Function} valueorProperty - Function receiving data and returning the text content\n * @returns {NodeCloner} this\n */\nNodeCloner.prototype.text = function(valueorProperty) {\n this.$content = valueorProperty;\n if(typeof valueorProperty === 'function') {\n this.cloneNode = (data) => createTextNode(valueorProperty.apply(null, data));\n return this;\n }\n this.cloneNode = (data) => createTextNode(data[0][valueorProperty]);\n return this;\n};\n\n/**\n * Registers an attribute binding to be applied on each clone.\n *\n * @internal\n * @param {string} attrName - Attribute name\n * @param {{property: string, value: *}} value - Function receiving data and returning the attribute value\n * @returns {NodeCloner} this\n */\nNodeCloner.prototype.attr = function(attrName, value) {\n if(attrName === 'class') {\n this.$classes = this.$classes || {};\n this.$classes[value.property] = value.value;\n return this;\n }\n if(attrName === 'style') {\n this.$styles = this.$styles || {};\n this.$styles[value.property] = value.value;\n return this;\n }\n this.$attrs = this.$attrs || {};\n this.$attrs[attrName] = value.value;\n return this;\n};","import { ElementCreator } from '../ElementCreator';\nimport NodeCloner from './NodeCloner';\n\nconst pathProcess = (target, path, data) => {\n if(path.HYDRATE_TEXT) {\n const value = path.value;\n ElementCreator.bindTextNode(target, path.isString ? data[0][value] : value.apply(null, data));\n return;\n }\n if(path.ATTACH_METHOD) {\n const bindingData = path.bindingData;\n for(let i = 0, length = bindingData._attachLength; i < length; i++) {\n const method = bindingData.attach[i];\n target.nd[method.methodName](function() {\n method.fn.call(this, ...data, ...arguments);\n });\n }\n }\n if(path.HYDRATE_ATTRIBUTES) {\n path.hydrator(target, path.bindingData, data);\n }\n};\n\nconst buildAttributesCache = (bindDingData) => {\n const cache = { };\n if(bindDingData.attributes) cache.attributes = {};\n if(bindDingData.classes) cache.class = {};\n if(bindDingData.styles) cache.style = {};\n bindDingData._cache = cache;\n};\n\nconst prepareBindingMetadata = (bindDingData) => {\n const attributes = [];\n const classAndStyles = [];\n\n if(bindDingData.attributes) {\n for (const attr in bindDingData.attributes) {\n attributes.push({\n name: attr,\n value: bindDingData.attributes[attr],\n });\n }\n }\n\n if(bindDingData.classes) {\n for (const className in bindDingData.classes) {\n bindDingData._hasClassAttribute = true;\n classAndStyles.push({\n name: 'class',\n key: className,\n value: bindDingData.classes[className],\n });\n }\n }\n\n if(bindDingData.styles) {\n for (const property in bindDingData.styles) {\n bindDingData._hasStyleAttribute = true;\n classAndStyles.push({\n name: 'style',\n key: property,\n value: bindDingData.styles[property],\n });\n }\n }\n\n bindDingData._flatAttributes = attributes;\n bindDingData._flatAttributesLength = attributes.length;\n bindDingData._flatDynamique = classAndStyles;\n bindDingData._flatDynamiqueLength = classAndStyles.length;\n bindDingData._attachLength = bindDingData.attach.length;\n};\n\n/**\n * Applies a binding to a DOM node via its NodeCloner, routing to the correct binding type.\n * Called internally by TemplateCloner's binder methods (text, style, class, attr, event).\n *\n * @internal\n * @param {Function|string} value - Binding callback or property name\n * @param {'value'|'style'|'class'|'attach'|string} targetType - Binding type determining which NodeCloner method to call\n * @param {HTMLElement} element - Target DOM element\n * @param {string} property - Attribute name or method name (used for 'attach' and 'attr' types)\n */\nexport const $hydrateFn = function(value, targetType, element, property) {\n element.nodeCloner = element.nodeCloner || new NodeCloner(element);\n if(targetType === 'value') {\n element.nodeCloner.text(value);\n return;\n }\n if(targetType === 'attach') {\n element.nodeCloner.attach(property, value);\n return;\n }\n element.nodeCloner.attr(targetType, { property, value });\n};\n\n/**\n * Attaches all event handler bindings from a BindingData object to a cloned DOM node.\n *\n * @internal\n * @param {HTMLElement} node - Cloned DOM node\n * @param {BindingData} bindDingData - Pre-compiled binding metadata containing attachment definitions\n * @param {Array} data - Data array passed to each attachment callback\n */\nexport const bindAttachMethods = (node, bindDingData, data) => {\n for(let i = 0, length = bindDingData._attachLength; i < length; i++) {\n const method = bindDingData.attach[i];\n node.nd[method.methodName](function() {\n method.fn.call(this, ...data, ...arguments);\n });\n }\n};\n\n/**\n * Prepares a BindingData object for efficient hydration by building attribute caches\n * and flattening binding lists into indexed arrays.\n * Called once per template during compilation.\n *\n * @internal\n * @param {BindingData} bindDingData - Binding metadata object to optimise in-place\n */\nexport const optimizeBindingData = (bindDingData) => {\n buildAttributesCache(bindDingData);\n prepareBindingMetadata(bindDingData);\n};\n\n\nconst $applyBindingParents = [];\n\n/**\n * Traverses a cloned DOM tree and applies all compiled binding steps to each matching node.\n * Uses a pre-built path index for O(n) traversal without querySelector.\n *\n * @internal\n * @param {HTMLElement} root - Root cloned node\n * @param {Array} data - Data array passed to each binding callback\n * @param {Array} paths - Pre-compiled binding paths from template analysis\n * @param {number} pathSize - Number of paths to process (paths.length - 1)\n */\nexport const hydrateClonedNode = (root, data, paths, pathSize) => {\n const rootPath = paths[pathSize];\n $applyBindingParents[rootPath.id] = root;\n pathProcess(root, rootPath, data);\n\n let target = null, path = null;\n for(let i = 0; i < pathSize; i++) {\n path = paths[i];\n target = $applyBindingParents[path.parentId].childNodes[path.index];\n $applyBindingParents[path.id] = target;\n\n if(path.HYDRATE_TEXT) {\n const value = path.value;\n ElementCreator.bindTextNode(target, path.isString ? data[0][value] : value.apply(null, data));\n continue;\n }\n if(path.ATTACH_METHOD) {\n const bindingData = path.bindingData;\n for(let i = 0, length = bindingData._attachLength; i < length; i++) {\n const method = bindingData.attach[i];\n target.nd[method.methodName](function() {\n method.fn.call(this, ...data, ...arguments);\n });\n }\n }\n if(path.HYDRATE_ATTRIBUTES) {\n path.hydrator(target, path.bindingData, data);\n }\n }\n\n for (let i = 0; i <= pathSize; i++) {\n $applyBindingParents[i] = null;\n }\n};","import TemplateBinding from '../TemplateBinding';\nimport { $hydrateFn} from './utils';\nimport NodeCloner from './NodeCloner';\n\n/**\n * Creates a high-performance template cloner for repeated rendering of the same structure.\n * On the first call, builds the template by calling $fn with a binder object.\n * On subsequent calls, clones the compiled template and hydrates it with new data.\n * Used internally by ForEachArray and other list renderers.\n *\n * @constructor\n * @param {(binder: TemplateCloner) => HTMLElement} $fn - Function that builds the template using binder methods\n * @example\n * const cloner = new TemplateCloner((t) =>\n * Div({},\n * Span(t.text((item) => item.name)),\n * Button({}, 'Delete').nd.onClick(t.event((item) => () => list.removeItem(item)))\n * )\n * );\n * cloner.clone([item]); // returns a hydrated clone\n */\nexport function TemplateCloner($fn) {\n let $node = null;\n\n const assignClonerToNode = ($node) => {\n const childNodes = $node.childNodes;\n let containDynamicNode = !!$node.nodeCloner;\n const childNodesLength = childNodes.length;\n for(let i = 0; i < childNodesLength; i++) {\n const child = childNodes[i];\n if(child.nodeCloner) {\n containDynamicNode = true;\n }\n const localContainDynamicNode = assignClonerToNode(child);\n if(localContainDynamicNode) {\n containDynamicNode = true;\n }\n }\n\n if(!containDynamicNode) {\n $node.dynamicCloneNode = $node.cloneNode.bind($node, true);\n } else {\n if($node.nodeCloner) {\n $node.nodeCloner.resolve();\n $node.dynamicCloneNode = (data) => {\n const clonedNode = $node.nodeCloner.cloneNode(data);\n for(let i = 0; i < childNodesLength; i++) {\n clonedNode.appendChild(childNodes[i].dynamicCloneNode(data));\n }\n return clonedNode;\n };\n } else {\n $node.dynamicCloneNode = (data) => {\n const clonedNode = $node.cloneNode();\n for(let i = 0; i < childNodesLength; i++) {\n clonedNode.appendChild(childNodes[i].dynamicCloneNode(data));\n }\n return clonedNode;\n };\n }\n }\n\n return containDynamicNode;\n };\n\n\n /**\n * Clones the compiled template and hydrates it with the given data.\n * On the first call, also compiles the template (builds and optimizes binding steps).\n *\n * @param {Array} data - Data array passed to all binding callbacks\n * @returns {HTMLElement} Cloned and hydrated DOM node\n */\n this.clone = (data) => {\n const binder = createTemplateCloner(this);\n $node = $fn(binder);\n if(!$node.nodeCloner) {\n $node.nodeCloner = new NodeCloner($node);\n }\n assignClonerToNode($node);\n this.clone = $node.dynamicCloneNode;\n return $node.dynamicCloneNode(data);\n };\n\n\n const createBinding = (hydrateFunction, targetType) => {\n return new TemplateBinding((element, property) => {\n $hydrateFn(hydrateFunction, targetType, element, property);\n });\n };\n\n /**\n * Creates a style binding — the result of fn(data) is applied as inline styles.\n *\n * @param {((...data: any[]) => Record<string, string>)} fn - Function returning a style object\n * @returns {TemplateBinding}\n */\n this.style = (fn) => {\n return createBinding(fn, 'style');\n };\n\n /**\n * Creates a class binding — the result of fn(data) is applied as a class map.\n *\n * @param {((...data: any[]) => Record<string, boolean>)} fn - Function returning a class map\n * @returns {TemplateBinding}\n */\n this.class = (fn) => {\n return createBinding(fn, 'class');\n };\n\n this.property = (propertyName) => {\n return this.value(propertyName);\n };\n\n /**\n * Creates a text/value binding — the result is set as text content or input value.\n * Alias: .text()\n *\n * @param {string|(((...data: any[]) => string))} callbackOrProperty - Property name (string) or callback returning the value\n * @returns {TemplateBinding}\n */\n this.value = (callbackOrProperty) => {\n return createBinding(callbackOrProperty, 'value');\n };\n\n /**\n * Alias for .value() — creates a text content binding.\n *\n * @param {string|(((...data: any[]) => string))} callbackOrProperty\n * @returns {TemplateBinding}\n */\n this.text = this.value;\n\n /**\n * Creates an attribute binding — the result of fn(data) is set as an attribute value.\n *\n * @param {((...data: any[]) => string)} fn - Function returning the attribute value\n * @returns {TemplateBinding}\n */\n this.attr = (fn) => {\n return createBinding(fn, 'attributes');\n };\n\n /**\n * Creates an event binding — fn(data) returns the event handler to attach.\n *\n * @param {((...data: any[]) => EventListener)} fn - Function returning the event callback\n * @returns {TemplateBinding}\n */\n this.attach = (fn) => {\n return createBinding(fn, 'attach');\n };\n\n this.callback = this.attach;\n}\n\n\nconst createTemplateCloner = ($binder) => {\n return new Proxy($binder, {\n get(target, prop) {\n if(prop in target) {\n return target[prop];\n }\n if (typeof prop === 'symbol') return target[prop];\n return target.value(prop);\n },\n });\n};\n\nexport function useCache(fn) {\n let $cache = null;\n\n let wrapper = (args) => {\n $cache = new TemplateCloner(fn);\n\n const node = $cache.clone(args);\n wrapper = $cache.clone;\n return node;\n };\n\n if(fn.length < 2) {\n return (...args) => {\n return wrapper(args);\n };\n }\n return (_, __, ...args) => {\n return wrapper([_, __, ...args]);\n };\n}\n\nexport const template = useCache;","import Anchor from '../elements/anchor/anchor';\n\n/**\n * Creates a singleton view — a component that is instantiated only once,\n * then reused across multiple renders. Useful for performance-critical components\n * that are frequently shown/hidden or repeated in lists.\n *\n * @constructor\n * @param {(instance: SingletonView) => Node} $viewCreator - Function that builds the view once and returns the root node.\n * Receives the SingletonView instance so it can call .createSection().\n * @example\n * const Card = useSingleton((view) => {\n * const nameSection = view.createSection('name');\n * return Div({ class: 'card' }, nameSection);\n * });\n * Card([{ name: 'John' }]); // Renders once, reused on subsequent calls\n */\nexport function SingletonView($viewCreator) {\n let $cacheNode = null;\n let $components = null;\n\n\n /**\n * Renders the singleton view with the given data.\n * On the first call, create the view by calling $viewCreator.\n * On later calls, updates registered sections via their update functions.\n *\n * @param {Array} data - Array where data[0] is an object mapping section names to new content\n * @returns {Node} The cached root node\n */\n this.render = (data) => {\n if(!$cacheNode) {\n $cacheNode = $viewCreator(this);\n }\n if(!$components) return $cacheNode;\n\n const updates = data[0];\n if(updates && typeof updates === 'object') {\n for(const key in updates) {\n if($components[key]) {\n $components[key](updates[key]);\n }\n }\n }\n return $cacheNode;\n };\n\n\n /**\n * Creates a named anchor section inside the singleton view.\n * The section can be updated later by passing new content through .render().\n *\n * @param {string} name - Unique section name used as the update key\n * @param {((content: *) => Node)?} [fn] - Optional transform function applied to new content before inserting\n * @returns {AnchorDocumentFragment} Anchor fragment to place inside the view's DOM\n * @example\n * const nameSection = view.createSection('name');\n * // Later: Card([{ name: 'Jane' }]); // replaces content in nameSection\n */\n this.createSection = (name, fn) => {\n $components = $components || {};\n const anchor = Anchor('Component ' + name);\n\n $components[name] = function(content) {\n anchor.removeChildren();\n if(!fn) {\n anchor.append(content);\n return;\n }\n anchor.appendChild(fn(content));\n };\n return anchor;\n };\n}\n\n\n/**\n * Creates a memoized factory that returns a SingletonView instance.\n * The singleton is created on the first call and reused for all subsequent calls.\n *\n * @param {(instance: SingletonView) => Node} fn - View creator function passed to SingletonView\n * @returns {(...args: any[]) => Node} Function that renders the singleton with the given data\n * @example\n * const Card = useSingleton((view) => {\n * const title = view.createSection('title');\n * return Div({}, title);\n * });\n * Card([{ title: 'Hello' }]);\n */\nexport function useSingleton(fn) {\n let $cache = null;\n\n return function(...args) {\n if(!$cache) {\n $cache = new SingletonView(fn);\n }\n return $cache.render(args);\n };\n}","import Validator from './validator';\n\nexport const cssPropertyAccumulator = function(initialValue = {}) {\n const data = Validator.isString(initialValue) ? initialValue.split(';').filter(Boolean) : initialValue;\n\n return {\n add(key, value) {\n if(Array.isArray(data)) {\n data.push(key+': '+value);\n return;\n }\n if(Validator.isObject(key)) {\n value = key;\n for(const property in value) {\n data[property] = value[property];\n }\n return;\n }\n data[key] = value;\n },\n value() {\n if(Array.isArray(data)) {\n return data.join(';').concat(';');\n }\n return { ...data };\n },\n };\n};\n\nexport const classPropertyAccumulator = function(initialValue = []) {\n let data = Validator.isString(initialValue) ? initialValue.split(' ').filter(Boolean) : initialValue;\n\n return {\n add(key, value = true) {\n if(Validator.isJson(key)) {\n for(const property in key) {\n if(key[property]) {\n data[property] = key[property];\n }\n }\n return;\n }\n if(value != null || key.__$Observable) {\n if(Array.isArray(data)) {\n data = data.reduce((acc, item) => {\n acc[item] = true;\n return acc;\n }, {});\n }\n if(key.__$Observable) {\n const uniqueId = `obs-${Math.random().toString(36).substr(2, 9)}`;\n data[uniqueId] = key;\n }\n else {\n data[key] = value;\n }\n return;\n }\n if(Array.isArray(data)) {\n data.push(key);\n return;\n }\n data[key] = value;\n },\n value() {\n if(Array.isArray(data)) {\n return data.join(' ');\n }\n return { ...data };\n },\n };\n};","\n\n/**\n * Wraps a function so it executes at most once.\n * Later calls return the cached result without re-executing the function.\n *\n * @template T\n * @param {(...args: any[]) => T} fn - Function to wrap\n * @returns {(...args: any[]) => T} Memoized function\n * @example\n * const init = once(() => expensiveSetup());\n * init(); // runs setup\n * init(); // returns cached result\n */\nexport const once = (fn) => {\n let result = null;\n return (...args) => {\n if(result != null) {\n return result;\n }\n result = fn(...args);\n return result;\n };\n};\n\n/**\n * Creates a lazy proxy that calls fn() once on first property access,\n * then returns properties from the cached result for all later accesses.\n *\n * @template T\n * @param {() => T} fn - Factory function to call once\n * @returns {T} Proxy to the lazily created object\n * @example\n * const store = autoOnce(() => createExpensiveStore());\n * store.count; // triggers createExpensiveStore() on first access\n * store.name; // uses a cached result\n */\nexport const autoOnce = (fn) => {\n let target = null;\n return new Proxy({}, {\n get: (_, key) => {\n if(target) {\n return target[key];\n }\n target = fn();\n return target[key];\n },\n });\n};\n\n/**\n * Wraps a function with key-based memoization.\n * The first argument is used as the cache key; later arguments are passed to fn.\n *\n * @template T\n * @param {(...args: any[]) => T} fn - Function to memoize\n * @returns {(key: any, ...args: any[]) => T} Memoized function\n * @example\n * const getUser = memoize((id) => fetchUser(id));\n * getUser('user-1', 1); // fetches\n * getUser('user-1', 1); // returns cached\n */\nexport const memoize = (fn) => {\n const cache = new Map();\n return (...args) => {\n const [key, ...rest] = args;\n const cached = cache.get(key);\n if(cached) {\n return cached;\n }\n const result = fn(...rest);\n cache.set(key, result);\n return result;\n };\n};\n\n/**\n * Creates a proxy where each property access memorizes the result of calling fn with the property key.\n * If fn accepts arguments (fn.length > 0), the proxy returns a memoized function instead.\n *\n * @template T\n * @param {((key: string|symbol, ...args?: any[]) => T)} fn - Factory function\n * @returns {Record<string|symbol, T>} Proxy with per-key memoized results\n * @example\n * // fn with no args — result memoized by key\n * const icons = autoMemoize((name) => loadIcon(name));\n * icons.home; // calls loadIcon('home'), caches result\n * icons.home; // returns cached\n *\n * // fn with args — returns a memoized function per key\n * const formatters = autoMemoize((locale, value) => format(value, locale));\n * formatters.fr('hello'); // calls format('hello', 'fr'), caches under 'fr'\n */\nexport const autoMemoize = (fn) => {\n const cache = new Map();\n return new Proxy({}, {\n get: (_, key) => {\n const cached = cache.get(key);\n if(cached) {\n return cached;\n }\n\n if(fn.length > 0) {\n return (...args) => {\n const result = fn(...args, key);\n cache.set(key, result);\n return result;\n };\n }\n const result = fn(key);\n cache.set(key, result);\n return result;\n },\n });\n};","import { Observable } from './Observable';\nimport NativeDocumentError from '../errors/NativeDocumentError';\nimport DebugManager from '../utils/debug-manager';\nimport {$getFromStorage, $saveToStorage, LocalStorage} from '../utils/localstorage';\nimport Validator from '../utils/validator';\n\n\nconst WRITE_METHODS = [\n 'use', 'get', 'create', 'createResettable', 'createComposed',\n 'createPersistent', 'createPersistentResettable', 'delete', 'reset',\n];\n\nexport const StoreFactory = function() {\n\n const $stores = new Map();\n const $followersCache = new Map();\n\n /**\n * Internal helper — retrieves a store entry or throws if not found.\n */\n const $getStoreOrThrow = (method, name) => {\n const item = $stores.get(name);\n if (!item) {\n DebugManager.error('Store', `Store.${method}('${name}') : store not found. Did you call Store.create('${name}') first?`);\n throw new NativeDocumentError(\n `Store.${method}('${name}') : store not found.`,\n );\n }\n return item;\n };\n\n /**\n * Internal helper — blocks write operations on a read-only observer.\n */\n const $applyReadOnly = (observer, name, context) => {\n const readOnlyError = (method) => () => {\n DebugManager.error('Store', `Store.${context}('${name}') is read-only. '${method}()' is not allowed.`);\n throw new NativeDocumentError(\n `Store.${context}('${name}') is read-only.`,\n );\n };\n observer.set = readOnlyError('set');\n observer.toggle = readOnlyError('toggle');\n observer.reset = readOnlyError('reset');\n };\n\n const $createObservable = (value, options = {}) => {\n if(Array.isArray(value)) {\n return Observable.array(value, options);\n }\n if(Validator.isJson(value)) {\n return Observable.object(value, options);\n }\n return Observable(value, options);\n };\n\n const $api = {\n /**\n * Create a new state and return the observer.\n * Throws if a store with the same name already exists.\n *\n * @param {string} name\n * @param {*} value\n * @returns {ObservableItem}\n */\n create(name, value) {\n if ($stores.has(name)) {\n DebugManager.warn('Store', `Store.create('${name}') : a store with this name already exists. Use Store.get('${name}') to retrieve it.`);\n throw new NativeDocumentError(\n `Store.create('${name}') : a store with this name already exists.`,\n );\n }\n const observer = $createObservable(value);\n $stores.set(name, { observer, subscribers: new Set(), resettable: false, composed: false });\n return observer;\n },\n\n /**\n * Create a new resettable state and return the observer.\n * The store can be reset to its initial value via Store.reset(name).\n * Throws if a store with the same name already exists.\n *\n * @param {string} name\n * @param {*} value\n * @returns {ObservableItem}\n */\n createResettable(name, value) {\n if ($stores.has(name)) {\n DebugManager.warn('Store', `Store.createResettable('${name}') : a store with this name already exists.`);\n throw new NativeDocumentError(\n `Store.createResettable('${name}') : a store with this name already exists.`,\n );\n }\n const observer = $createObservable(value, { reset: true });\n $stores.set(name, { observer, subscribers: new Set(), resettable: true, composed: false });\n return observer;\n },\n\n /**\n * Create a computed store derived from other stores.\n * The value is automatically recalculated when any dependency changes.\n * This store is read-only — Store.use() and Store.set() will throw.\n * Throws if a store with the same name already exists.\n *\n * @param {string} name\n * @param {() => *} computation - Function that returns the computed value\n * @param {string[]} dependencies - Names of the stores to watch\n * @returns {ObservableItem}\n *\n * @example\n * Store.create('products', [{ id: 1, price: 10 }]);\n * Store.create('cart', [{ productId: 1, quantity: 2 }]);\n *\n * Store.createComposed('total', () => {\n * const products = Store.get('products').val();\n * const cart = Store.get('cart').val();\n * return cart.reduce((sum, item) => {\n * const product = products.find(p => p.id === item.productId);\n * return sum + (product.price * item.quantity);\n * }, 0);\n * }, ['products', 'cart']);\n */\n createComposed(name, computation, dependencies) {\n if ($stores.has(name)) {\n DebugManager.warn('Store', `Store.createComposed('${name}') : a store with this name already exists.`);\n throw new NativeDocumentError(\n `Store.createComposed('${name}') : a store with this name already exists.`,\n );\n }\n if (typeof computation !== 'function') {\n throw new NativeDocumentError(\n `Store.createComposed('${name}') : computation must be a function.`,\n );\n }\n if (!Array.isArray(dependencies) || dependencies.length === 0) {\n throw new NativeDocumentError(\n `Store.createComposed('${name}') : dependencies must be a non-empty array of store names.`,\n );\n }\n\n // Resolve dependency observers\n const depObservers = dependencies.map(depName => {\n if(typeof depName !== 'string') {\n return depName;\n }\n const depItem = $stores.get(depName);\n if (!depItem) {\n DebugManager.error('Store', `Store.createComposed('${name}') : dependency '${depName}' not found. Create it first.`);\n throw new NativeDocumentError(\n `Store.createComposed('${name}') : dependency store '${depName}' not found.`,\n );\n }\n return depItem.observer;\n });\n\n // Create computed observable from dependency observers\n const observer = Observable.computed(computation, depObservers);\n\n $stores.set(name, { observer, subscribers: new Set(), resettable: false, composed: true });\n return observer;\n },\n\n /**\n * Returns true if a store with the given name exists.\n *\n * @param {string} name\n * @returns {boolean}\n */\n has(name) {\n return $stores.has(name);\n },\n\n /**\n * Resets a resettable store to its initial value and notifies all subscribers.\n * Throws if the store was not created with createResettable().\n *\n * @param {string} name\n */\n reset(name) {\n const item = $getStoreOrThrow('reset', name);\n if (item.composed) {\n DebugManager.error('Store', `Store.reset('${name}') : composed stores cannot be reset. Their value is derived from dependencies.`);\n throw new NativeDocumentError(\n `Store.reset('${name}') : composed stores cannot be reset.`,\n );\n }\n if (!item.resettable) {\n DebugManager.error('Store', `Store.reset('${name}') : this store is not resettable. Use Store.createResettable('${name}', value) instead of Store.create().`);\n throw new NativeDocumentError(\n `Store.reset('${name}') : this store is not resettable. Use Store.createResettable('${name}', value) instead of Store.create().`,\n );\n }\n item.observer.reset();\n },\n\n /**\n * Returns a two-way synchronized follower of the store.\n * Writing to the follower propagates the value back to the store and all its subscribers.\n * Throws if called on a composed store — use Store.follow() instead.\n * Call follower.destroy() or follower.dispose() to unsubscribe.\n *\n * @param {string} name\n * @returns {ObservableItem}\n */\n use(name) {\n const item = $getStoreOrThrow('use', name);\n\n if (item.composed) {\n DebugManager.error('Store', `Store.use('${name}') : composed stores are read-only. Use Store.follow('${name}') instead.`);\n throw new NativeDocumentError(\n `Store.use('${name}') : composed stores are read-only. Use Store.follow('${name}') instead.`,\n );\n }\n\n const { observer: originalObserver, subscribers } = item;\n const observerFollower = $createObservable(originalObserver.val());\n\n const onStoreChange = value => observerFollower.set(value);\n const onFollowerChange = value => originalObserver.set(value);\n\n originalObserver.subscribe(onStoreChange);\n observerFollower.subscribe(onFollowerChange);\n\n observerFollower.destroy = () => {\n originalObserver.unsubscribe(onStoreChange);\n observerFollower.unsubscribe(onFollowerChange);\n subscribers.delete(observerFollower);\n observerFollower.cleanup();\n };\n observerFollower.dispose = observerFollower.destroy;\n\n subscribers.add(observerFollower);\n return observerFollower;\n },\n\n /**\n * Returns a read-only follower of the store.\n * The follower reflects store changes but cannot write back to the store.\n * Any attempt to call .set(), .toggle() or .reset() will throw.\n * Call follower.destroy() or follower.dispose() to unsubscribe.\n *\n * @param {string} name\n * @returns {ObservableItem}\n */\n follow(name) {\n const { observer: originalObserver, subscribers } = $getStoreOrThrow('follow', name);\n const observerFollower = $createObservable(originalObserver.val());\n\n const originalSet = observerFollower.set.bind(observerFollower);\n const onStoreChange = value => originalSet(value);\n\n originalObserver.subscribe(onStoreChange);\n\n $applyReadOnly(observerFollower, name, 'follow');\n\n observerFollower.destroy = () => {\n originalObserver.unsubscribe(onStoreChange);\n subscribers.delete(observerFollower);\n observerFollower.cleanup();\n };\n observerFollower.dispose = observerFollower.destroy;\n\n subscribers.add(observerFollower);\n return observerFollower;\n },\n\n /**\n * Returns the raw store observer directly (no follower, no cleanup contract).\n * Use this for direct read access when you don't need to unsubscribe.\n * WARNING : mutations on this observer impact all subscribers immediately.\n *\n * @param {string} name\n * @returns {ObservableItem|null}\n */\n get(name) {\n const item = $stores.get(name);\n if (!item) {\n DebugManager.warn('Store', `Store.get('${name}') : store not found.`);\n return null;\n }\n return item.observer;\n },\n\n /**\n * @param {string} name\n * @returns {{ observer: ObservableItem, subscribers: Set } | null}\n */\n getWithSubscribers(name) {\n return $stores.get(name) ?? null;\n },\n\n /**\n * Destroys a store : cleans up the observer, destroys all followers, and removes the entry.\n *\n * @param {string} name\n */\n delete(name) {\n const item = $stores.get(name);\n if (!item) {\n DebugManager.warn('Store', `Store.delete('${name}') : store not found, nothing to delete.`);\n return;\n }\n item.subscribers.forEach(follower => follower.destroy());\n item.subscribers.clear();\n item.observer.cleanup();\n $stores.delete(name);\n $followersCache.delete(name);\n },\n /**\n * Creates an isolated store group with its own state namespace.\n * Each group is a fully independent StoreFactory instance —\n * no key conflicts, no shared state with the parent store.\n *\n * @param {string | ((group: ReturnType<typeof StoreFactory>) => void)} name - Group name for debugging, or setup callback if no name is provided\n * @param {((group: ReturnType<typeof StoreFactory>) => void)} [callback] - Setup function receiving the isolated store instance\n * @returns {ReturnType<typeof StoreFactory>}\n *\n * @example\n * // With name (recommended)\n * const EventStore = Store.group('events', (group) => {\n * group.create('catalog', []);\n * group.create('filters', { category: null, date: null });\n * group.createResettable('selected', null);\n * group.createComposed('filtered', () => {\n * const catalog = EventStore.get('catalog').val();\n * const filters = EventStore.get('filters').val();\n * return catalog.filter(event => {\n * if (filters.category && event.category !== filters.category) return false;\n * return true;\n * });\n * }, ['catalog', 'filters']);\n * });\n *\n * // Without name\n * const CartStore = Store.group((group) => {\n * group.create('items', []);\n * });\n *\n * // Usage\n * EventStore.use('catalog'); // two-way follower\n * EventStore.follow('filtered'); // read-only follower\n * EventStore.get('filters'); // raw observable\n *\n * // Cross-group composed\n * const OrderStore = Store.group('orders', (group) => {\n * group.createComposed('summary', () => {\n * const items = CartStore.get('items').val();\n * const events = EventStore.get('catalog').val();\n * return { items, events };\n * }, [CartStore.get('items'), EventStore.get('catalog')]);\n * });\n */\n group(name, callback) {\n if (typeof name === 'function') {\n callback = name;\n name = 'anonymous';\n }\n const store = StoreFactory();\n callback && callback(store);\n return store;\n },\n\n /**\n * Creates a store that is automatically persisted to localStorage.\n * On creation, the store is initialized with the value from localStorage\n * if it exists, otherwise falls back to the provided default value.\n * Every mutation is automatically saved to localStorage.\n *\n * @param {string} name - Store name\n * @param {*} value - Default value if nothing is found in localStorage\n * @param {string} [localstorage_key] - Custom localStorage key. Defaults to the store name.\n * @returns {ObservableItem}\n *\n * @example\n * const $theme = Store.createPersistent('theme', 'light');\n *\n * $theme.set('dark'); // saved to localStorage automatically\n *\n * // With a custom key\n * const $lang = Store.createPersistent('language', 'en', 'nd:lang');\n */\n createPersistent(name, value, localstorage_key) {\n localstorage_key = localstorage_key || name;\n const observer = this.create(name, $getFromStorage(localstorage_key, value));\n const saver = $saveToStorage(value);\n\n observer.subscribe((val) => saver(localstorage_key, val));\n return observer;\n },\n\n /**\n * Creates a resettable store that is automatically persisted to localStorage.\n * On creation, the store is initialized with the value from localStorage\n * if it exists, otherwise falls back to the provided default value.\n * Every mutation is automatically saved to localStorage.\n * Calling reset() restores the initial value AND removes the localStorage entry.\n *\n * @param {string} name - Store name\n * @param {*} value - Default value if nothing is found in localStorage\n * @param {string} [localstorage_key] - Custom localStorage key. Defaults to the store name.\n * @returns {ObservableItem}\n *\n * @example\n * const $filters = Store.createPersistentResettable('filters', { category: null, date: null });\n *\n * $filters.set({ category: 'news', date: '2024-01-01' }); // saved to localStorage\n * $filters.reset(); // restored to { category: null, date: null } + localStorage entry removed\n *\n * // With a custom key\n * const $prefs = Store.createPersistentResettable('preferences', { lang: 'en' }, 'nd:prefs');\n */\n createPersistentResettable(name, value, localstorage_key) {\n localstorage_key = localstorage_key || name;\n const observer = this.createResettable(name, $getFromStorage(localstorage_key, value));\n const saver = $saveToStorage(value);\n observer.subscribe((val) => saver(localstorage_key, val));\n\n const originalReset = observer.reset.bind(observer);\n observer.reset = () => {\n LocalStorage.remove(localstorage_key);\n originalReset();\n };\n\n return observer;\n },\n /**\n * Returns a read-only proxy of this store.\n * All write operations (use, get, create, createResettable, createComposed,\n * createPersistent, createPersistentResettable, delete, reset) will throw.\n * Property access returns a read-only follower via follow().\n *\n * The recommended pattern is to keep the original store private\n * and export only the protected version as the public contract.\n *\n * @returns {Proxy}\n *\n * @example\n * // store/user.store.js\n *\n * const PrivateUserStore = Store.group('user', (group) => {\n * group.create('profile', null);\n * group.create('role', 'viewer');\n * group.create('token', null);\n * });\n *\n * // Only the read-only version is exported\n * export const UserStore = PrivateUserStore.protected();\n *\n * // --- In any other module ---\n *\n * import { UserStore } from './store/user.store.js';\n *\n * UserStore.profile // ✅ follower read-only\n * UserStore.follow('role') // ✅\n * UserStore.has('token') // ✅\n *\n * UserStore.use('profile') // ❌ throws — read-only store\n * UserStore.get('profile') // ❌ throws — read-only store\n * UserStore.create('x', 1) // ❌ throws — read-only store\n */\n protected() {\n return new Proxy($api, {\n get(target, prop) {\n if (typeof prop === 'symbol' || prop.startsWith('$')) {\n return target[prop];\n }\n if (WRITE_METHODS.includes(prop)) {\n return () => {\n throw new NativeDocumentError(\n `Store.${prop}() is not allowed on a read-only store. Use the original store reference instead.`\n );\n };\n }\n if (target.has(prop)) {\n return target.follow(prop);\n }\n return target[prop];\n },\n set() {\n throw new NativeDocumentError('This store is read-only.');\n },\n deleteProperty() {\n throw new NativeDocumentError('This store is read-only.');\n },\n });\n },\n };\n\n\n return new Proxy($api, {\n get(target, prop) {\n if (typeof prop === 'symbol' || prop.startsWith('$') || prop in target) {\n return target[prop];\n }\n if (target.has(prop)) {\n if ($followersCache.has(prop)) {\n return $followersCache.get(prop);\n }\n const follower = target.follow(prop);\n $followersCache.set(prop, follower);\n return follower;\n }\n return undefined;\n },\n set(target, prop, value) {\n DebugManager.error('Store', `Forbidden: You cannot overwrite the store key '${String(prop)}'. Use .use('${String(prop)}').set(value) instead.`);\n throw new NativeDocumentError('Store structure is immutable. Use .set() on the observable.');\n },\n deleteProperty(target, prop) {\n throw new NativeDocumentError('Store keys cannot be deleted.');\n },\n });\n};\n\nexport const Store = StoreFactory();\n\nStore.create(\n 'locale',\n (typeof navigator !== 'undefined' ? navigator.language.split('-')[0] : 'en') || 'en'\n);","import {Observable} from '../../data/Observable';\nimport Validator from '../../utils/validator';\nimport Anchor from '../anchor/anchor';\nimport DebugManager from '../../utils/debug-manager';\nimport {getKey} from '../../utils/helpers';\nimport { ElementCreator } from '../../wrappers/ElementCreator';\nimport NativeDocumentError from '../../errors/NativeDocumentError';\n\nconst SELF_RENDER = (item) => item;\n\n/**\n * Renders a list of items from an observable array or object, automatically updating when data changes.\n * Efficiently manages DOM updates by tracking items with keys.\n *\n * @param {ObservableItem<Array|Object>} data - Observable containing array or object to iterate over\n * @param {((item: *, index: null|ObservableItem) => NdChild)?} callback - Function that renders each item (item, index) => ValidChild\n * @param {(string|Function)?} [key] - Property name or function to generate unique keys for items\n * @param {Object?} [options={}] - Configuration options\n * @param {boolean} [options.shouldKeepItemsInCache=false] - Whether to cache rendered items\n * @returns {AnchorDocumentFragment} Fragment managing the list rendering\n * @example\n * const users = Observable([\n * { id: 1, name: 'John' },\n * { id: 2, name: 'Jane' }\n * ]);\n * ForEach(users, (user) => Div({}, user.name), 'id');\n *\n * // With function key\n * ForEach(items, (item) => Div({}, item), (item) => item.id);\n */\nexport function ForEach(data, callback, key, { shouldKeepItemsInCache = false } = {}) {\n callback = callback || SELF_RENDER;\n const element = Anchor('ForEach');\n const blockEnd = element.endElement();\n const blockStart = element.startElement();\n\n const cache = new Map();\n let lastKeyOrder = null;\n const keyIds = new Set();\n\n const clear = () => {\n element.removeChildren();\n cleanCache();\n };\n\n const cleanCache = (parent) => {\n if(shouldKeepItemsInCache) {\n return;\n }\n for(const [keyId, cacheItem] of cache.entries()) {\n if(keyIds.has(keyId)) {\n continue;\n }\n const child = cacheItem.child?.deref();\n if(parent && child) {\n child.remove();\n }\n cacheItem.indexObserver?.cleanup();\n cacheItem.child = null;\n cacheItem.indexObserver = null;\n cache.delete(cacheItem.keyId);\n lastKeyOrder && lastKeyOrder.delete(cacheItem.keyId);\n }\n };\n\n const handleContentItem = (item, indexKey) => {\n const keyId = getKey(item, indexKey, key);\n\n if(cache.has(keyId)) {\n const cacheItem = cache.get(keyId);\n cacheItem.indexObserver?.set(indexKey);\n cacheItem.isNew = false;\n if(cacheItem.child?.deref()) {\n return keyId;\n }\n cache.delete(keyId);\n }\n\n try {\n const indexObserver = callback.length >= 2 ? Observable(indexKey) : null;\n const child = ElementCreator.getChild(callback(item, indexObserver));\n if(!child) {\n throw new NativeDocumentError('ForEach child can\\'t be null or undefined!');\n }\n cache.set(keyId, { keyId, isNew: true, child: new WeakRef(child), indexObserver});\n } catch (e) {\n DebugManager.error('ForEach', `Error creating element for key ${keyId}` , e);\n throw e;\n }\n return keyId;\n };\n\n const batchDOMUpdates = (parent) => {\n const fragment = document.createDocumentFragment();\n for(const itemKey of keyIds) {\n const cacheItem = cache.get(itemKey);\n if(!cacheItem) {\n continue;\n }\n const child = cacheItem.child?.deref();\n child && fragment.appendChild(child);\n }\n parent.insertBefore(fragment, blockEnd);\n };\n\n const diffingDOMUpdates = (parent) => {\n const operations = [];\n const fragment = document.createDocumentFragment();\n const newKeys = Array.from(keyIds);\n const oldKeys = Array.from(lastKeyOrder);\n\n const currentPosition = blockStart;\n\n for(const index in newKeys) {\n const itemKey = newKeys[index];\n const cacheItem = cache.get(itemKey);\n if(!cacheItem) {\n continue;\n }\n const child = cacheItem.child.deref();\n if(!child) {\n continue;\n }\n fragment.appendChild(child);\n }\n element.replaceContent(fragment);\n };\n\n const buildContent = () => {\n const parent = blockEnd.parentNode;\n if(!parent) {\n return;\n }\n\n const items = (Validator.isObservable(data)) ? data.val() : data;\n keyIds.clear();\n if(Array.isArray(items)) {\n for(let i = 0, length = items.length; i < length; i++) {\n const keyId = handleContentItem(items[i], i);\n keyIds.add(keyId);\n }\n } else {\n for(const indexKey in items) {\n const keyId = handleContentItem(items[indexKey], indexKey);\n keyIds.add(keyId);\n }\n }\n\n if(keyIds.size === 0) {\n clear();\n lastKeyOrder?.clear();\n return;\n }\n\n cleanCache(parent);\n if(!lastKeyOrder || lastKeyOrder.size === 0) {\n batchDOMUpdates(parent);\n } else {\n diffingDOMUpdates(parent);\n }\n lastKeyOrder?.clear();\n lastKeyOrder = new Set([...keyIds]);\n };\n\n buildContent();\n if(Validator.isObservable(data)) {\n data.subscribe(buildContent);\n }\n return element;\n}\n","import Anchor from '../anchor/anchor';\nimport { ElementCreator } from '../../wrappers/ElementCreator';\nimport NativeDocumentError from '../../errors/NativeDocumentError';\n\n\nconst CREATE_AND_CACHE_ACTIONS = new Set(['clear', 'push', 'unshift', 'replace']);\n\nconst SELF_RENDER = (item) => item;\n\n/**\n * Renders items from an ObservableArray with optimized array-specific updates.\n * Provides index observables and handles array mutations efficiently.\n *\n * @param {ObservableArray} data - ObservableArray to iterate over\n * @param {((item: *, index: null|ObservableItem) => NdChild)?} callback - Function that renders each item (item, indexObservable) => ValidChild\n * @param {Object?} [configs={}] - Configuration options\n * @param {boolean} [configs.shouldKeepItemsInCache] - Whether to cache rendered items\n * @param {boolean} [configs.isParentUniqueChild] - When it's the only child of the parent\n * @returns {AnchorDocumentFragment} Fragment managing the list rendering\n * @example\n * const items = Observable.array([1, 2, 3]);\n * ForEachArray(items, (item, index) =>\n * Div({}, `Item ${item} at index ${index.val()}`)\n * );\n *\n * items.push(4); // Automatically updates DOM\n */\nexport function ForEachArray(data, callback, configs = {}) {\n callback = callback || SELF_RENDER;\n const element = Anchor('ForEach Array', configs.isParentUniqueChild);\n const blockEnd = element.endElement();\n\n const cache = new Map();\n let lastNumberOfItems = 0;\n const isIndexRequired = callback.length >= 2;\n\n const clear = (items) => {\n element.removeChildren();\n cleanCache(items);\n lastNumberOfItems = 0;\n };\n\n const getItemChild = (item) => {\n return cache.get(item)?.child;\n };\n\n const removeCacheItem = (item, removeChild = true) => {\n const cacheItem = cache.get(item);\n if(!cacheItem) {\n return;\n }\n if(removeChild) {\n const child = cacheItem.child;\n child?.remove();\n cache.delete(item);\n }\n cacheItem.indexObserver?.cleanup();\n };\n\n const createAndCache = (item) => {\n const child = ElementCreator.getChild(callback(item, null));\n if(process.env.NODE_ENV === 'development') {\n if(!child) {\n throw new NativeDocumentError('ForEachArray child can\\'t be null or undefined!');\n }\n }\n cache.set(item, { child, indexObserver: null });\n return child;\n };\n\n let createWithIndexAndCache = (item, indexKey) => {\n const indexObserver = data.transform((items) => items.indexOf(item));\n const child = ElementCreator.getChild(callback(item, indexObserver));\n if(process.env.NODE_ENV === 'development') {\n if(!child) {\n throw new NativeDocumentError('ForEachArray child can\\'t be null or undefined!');\n }\n }\n cache.set(item, { child, indexObserver });\n return child;\n };\n if(!data.__$Observable) {\n createWithIndexAndCache = (item, indexKey) => {\n const child = ElementCreator.getChild(callback(item, indexKey));\n if(process.env.NODE_ENV === 'development') {\n if(!child) {\n throw new NativeDocumentError('ForEachArray child can\\'t be null or undefined!');\n }\n }\n cache.set(item, { child, indexObserver: null });\n return child;\n };\n }\n\n const getOrCreate = (item, indexKey) => {\n const cacheItem = cache.get(item);\n if(cacheItem) {\n cacheItem.indexObserver?.set(indexKey);\n return cacheItem.child;\n }\n return createAndCache(item, indexKey);\n };\n\n let buildItem = createAndCache;\n const selectBuildStrategy = (action = null) => {\n if(CREATE_AND_CACHE_ACTIONS.has(action)) {\n buildItem = isIndexRequired ? createWithIndexAndCache : createAndCache;\n return;\n }\n buildItem = cache.size ? getOrCreate : (isIndexRequired ? createWithIndexAndCache : createAndCache);\n };\n\n\n let cleanCache;\n\n if(!isIndexRequired) {\n cleanCache = cache.clear.bind(cache);\n }\n else if(configs.shouldKeepItemsInCache) {\n cleanCache = () => {};\n } else {\n cleanCache = (items) => {\n for (const [itemAsKey, _] of cache.entries()) {\n if(items && items.includes(itemAsKey)) {\n continue;\n }\n removeCacheItem(itemAsKey, false);\n }\n };\n }\n\n const removeByItem = (item, fragment) => {\n const cacheItem = cache.get(item);\n if(!cacheItem) {\n return null;\n }\n const child = cacheItem.child;\n if(!child) {\n return null;\n }\n\n if(fragment) {\n fragment.appendChild(child);\n return;\n }\n child.remove();\n };\n\n let set = null;\n if(Array.isArray(data)) {\n set = () => {\n clear(data);\n element.appendChildRaw(Actions.toFragment(data));\n };\n }\n else {\n set = () => {\n const items = data.val();\n clear(items);\n element.appendChildRaw(Actions.toFragment(items));\n };\n }\n\n const Actions = {\n toFragment: (items) =>{\n const fragment = document.createDocumentFragment();\n for(let i = 0, length = items.length; i < length; i++) {\n fragment.appendChild(buildItem(items[i], lastNumberOfItems));\n lastNumberOfItems++;\n }\n return fragment;\n },\n add: (items) => {\n element.appendChildRaw(Actions.toFragment(items));\n },\n replace: (items) => {\n clear(items);\n element.appendChildRaw(Actions.toFragment(items));\n },\n set,\n reOrder: (items) => {\n let child = null;\n const fragment = document.createDocumentFragment();\n for(const item of items) {\n child = getItemChild(item);\n if(child) {\n fragment.appendChild(child);\n }\n }\n child = null;\n element.appendChildRaw(fragment);\n },\n removeOne: (element, index) => {\n removeCacheItem(element, true);\n },\n clear,\n populate: ([target, iteration, callback]) => {\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < iteration; i++) {\n const data = callback(i);\n target.push(data);\n fragment.append(buildItem(data, i));\n lastNumberOfItems++;\n }\n element.appendChildRaw(fragment);\n fragment.replaceChildren();\n },\n unshift: (values) => {\n element.insertAtStartRaw(Actions.toFragment(values));\n },\n splice: (args, deleted) => {\n const [start, deleteCount, ...values] = args;\n let elementBeforeFirst = null;\n const garbageFragment = document.createDocumentFragment();\n\n if(deleted.length > 0) {\n const firstItem = deleted[0];\n if(deleted.length === 1) {\n removeByItem(firstItem, garbageFragment);\n } else if(deleted.length > 1) {\n const firstChildRemoved = getItemChild(deleted[0]);\n elementBeforeFirst = firstChildRemoved?.previousSibling;\n\n for(let i = 0; i < deleted.length; i++) {\n removeByItem(deleted[i], garbageFragment);\n }\n }\n } else {\n const indexBefore = (start - 1 >= 0) ? start - 1 : start;\n const itemAtStart = data.at(indexBefore);\n elementBeforeFirst = getItemChild(itemAtStart) || blockEnd.previousSibling;\n }\n garbageFragment.replaceChildren();\n\n if(values && values.length && elementBeforeFirst) {\n element.insertBeforeRaw(Actions.toFragment(values), elementBeforeFirst.nextSibling);\n }\n\n },\n reverse: (_, reversed) => {\n Actions.reOrder(reversed);\n },\n sort: (_, sorted) => {\n Actions.reOrder(sorted);\n },\n remove: (_, deleted)=> {\n Actions.removeOne(deleted);\n },\n pop: (_, deleted) => {\n Actions.removeOne(deleted);\n },\n shift: (_, deleted) => {\n Actions.removeOne(deleted);\n },\n swap: (args, elements) => {\n const parent = element.getParent();\n\n let childA = getItemChild(elements[0]);\n let childB = getItemChild(elements[1]);\n if(!childA || !childB) {\n return;\n }\n\n const childBNext = childB.nextSibling;\n parent.insertBefore(childB, childA);\n parent.insertBefore(childA, childBNext);\n childA = null;\n childB = null;\n },\n };\n Actions.merge = Actions.add;\n Actions.push = Actions.add;\n\n const buildContent = (items, _, operations = {}) => {\n selectBuildStrategy(operations.action);\n\n if(Actions[operations.action]) {\n Actions[operations.action](operations.args, operations.result);\n }\n };\n\n if(Array.isArray(data)) {\n buildContent(data, null, { action: 'set' });\n return element;\n }\n\n if(data.val().length) {\n buildContent(data.val(), null, { action: 'set' });\n }\n data.subscribe(buildContent);\n return element;\n}","import { Observable } from '../../data/Observable';\nimport Validator from '../../utils/validator';\nimport DebugManager from '../../utils/debug-manager.js';\nimport Anchor from '../anchor/anchor';\nimport {ElementCreator} from '../../wrappers/ElementCreator';\n\n/**\n * Conditionally shows an element based on an observable condition.\n * The element is mounted/unmounted from the DOM as the condition changes.\n *\n * @param {ObservableItem<boolean>|ObservableChecker<boolean>|ObservableWhen} condition - Observable condition to watch\n * @param {NdChild|(() => NdChild)} child - Element or content to show/hide\n * @param {Object} [options={}] - Configuration options\n * @param {string|null} [options.comment=null] - Comment for debugging\n * @param {boolean} [options.shouldKeepInCache=true] - Whether to cache the element when hidden\n * @returns {AnchorDocumentFragment} Anchor fragment managing the conditional content\n * @example\n * const isVisible = Observable(false);\n * ShowIf(isVisible, Div({}, 'Hello World'));\n */\nexport const ShowIf = function(condition, child, { comment = null, shouldKeepInCache = true} = {}) {\n if(!Validator.isObservable(condition)) {\n if(typeof condition === 'boolean') {\n return condition ? ElementCreator.getChild(child) : null;\n }\n\n return DebugManager.warn('ShowIf', 'ShowIf : condition must be an Observable or boolean / '+comment, condition);\n }\n const element = Anchor('Show if : '+(comment || ''));\n\n let childElement = null;\n const getChildElement = () => {\n if(childElement && shouldKeepInCache) {\n return childElement;\n }\n childElement = ElementCreator.getChild(child);\n if(Validator.isFragment(childElement)) {\n childElement = Array.from(childElement.childNodes);\n }\n return childElement;\n };\n\n const currentValue = condition.val();\n\n if(currentValue) {\n element.appendChild(getChildElement());\n }\n\n condition.subscribe((value) => {\n if(value) {\n element.appendChild(getChildElement());\n return;\n }\n element.remove();\n });\n\n return element;\n};\n\n/**\n * Conditionally hides an element when the observable condition is true.\n * Inverse of ShowIf - element is shown when condition is false.\n *\n * @param {ObservableItem<boolean>|ObservableChecker<boolean>} condition - Observable condition to watch\n * @param {NdChild|(() => NdChild)} child - Element or content to show/hide\n * @param {Object} [configs] - Configuration options\n * @param {string|null} [configs.comment] - Comment for debugging\n * @param {boolean} [configs.shouldKeepInCache] - Whether to cache element when hidden\n * @returns {AnchorDocumentFragment} Anchor fragment managing the conditional content\n * @example\n * const hasError = Observable(false);\n * HideIf(hasError, Div({}, 'Content'));\n */\nexport const HideIf = function(condition, child, configs) {\n const hideCondition = Observable(!condition.val());\n condition.subscribe(value => hideCondition.set(!value));\n\n return ShowIf(hideCondition, child, configs);\n};\n\n/**\n * Conditionally hides an element when the observable condition is false.\n * Same as ShowIf - element is shown when condition is true.\n *\n * @param {ObservableItem<boolean>|ObservableChecker<boolean>|ObservableWhen} condition - Observable condition to watch\n * @param {NdChild|(() => NdChild)} child - Element or content to show/hide\n * @param {Object} [configs] - Configuration options\n * @param {string|null} [configs.comment] - Comment for debugging\n * @param {boolean} [configs.shouldKeepInCache] - Whether to cache element when hidden\n * @returns {AnchorDocumentFragment} Anchor fragment managing the conditional content\n */\nexport const HideIfNot = function(condition, child, configs) {\n return ShowIf(condition, child, configs);\n};","import Validator from '../../utils/validator.js';\nimport NativeDocumentError from '../../errors/NativeDocumentError.js';\nimport {ShowIf} from './show-if.js';\n\n/**\n * Shows content when an observable equals a specific value.\n * Can be called with 2 or 3 arguments.\n *\n * @overload\n * @param {ObservableWhen} observerWhenResult - Result from observable.when(value)\n * @param {NdChild|(() => NdChild)} view - Content to show when condition matches\n * @returns {AnchorDocumentFragment}\n *\n * @overload\n * @param {ObservableItem} observer - Observable to watch\n * @param {*} target - Value to match\n * @param {NdChild|(() => NdChild)} view - Content to show when observable equals target\n * @returns {AnchorDocumentFragment}\n *\n * @example\n * // 2 arguments\n * const status = Observable('idle');\n * ShowWhen(status.when('loading'), LoadingSpinner());\n *\n * // 3 arguments\n * ShowWhen(status, 'loading', LoadingSpinner());\n */\nexport const ShowWhen = function() {\n if(arguments.length === 2) {\n const [observer, target] = arguments;\n if(!Validator.isObservableWhenResult(observer)) {\n throw new NativeDocumentError('showWhen observer must be an ObservableWhenResult', {\n data: observer,\n 'help': 'Use observer.when(target) to create an ObservableWhenResult',\n });\n }\n return ShowIf(observer, target);\n }\n if(arguments.length === 3) {\n const [observer, target, view] = arguments;\n if(!Validator.isObservable(observer)) {\n throw new NativeDocumentError('showWhen observer must be an Observable', {\n data: observer,\n });\n }\n return ShowIf(observer.when(target), view);\n }\n throw new NativeDocumentError('showWhen must have 2 or 3 arguments', {\n data: [\n 'showWhen(observer, target, view)',\n 'showWhen(observerWhenResult, view)',\n ],\n });\n};","import NativeDocumentError from '../../errors/NativeDocumentError';\nimport Validator from '../../utils/validator';\nimport Anchor from '../anchor/anchor';\nimport {ElementCreator} from '../../wrappers/ElementCreator';\n\n\n\n/**\n * Displays different content based on the current value of an observable.\n * Like a switch statement for UI - shows the content corresponding to current value.\n *\n * @param {ObservableItem|ObservableChecker} $condition - Observable to watch\n * @param {Object<string|number, NdChild|(() => NdChild)>} values - Map of values to their corresponding content\n * @param {boolean} [shouldKeepInCache=true] - Whether to cache rendered views\n * @returns {AnchorDocumentFragment & {add: Function, remove: Function}} Fragment with dynamic methods\n * @example\n * const status = Observable('idle');\n * const view = Match(status, {\n * idle: Div({}, 'Ready'),\n * loading: Div({}, 'Loading...'),\n * error: Div({}, 'Error occurred')\n * });\n *\n * // Dynamic addition\n * view.add('success', Div({}, 'Success!'));\n * view.remove('idle');\n */\nexport const Match = function($condition, values, shouldKeepInCache = true) {\n\n if(!Validator.isObservable($condition)) {\n throw new NativeDocumentError('Toggle : condition must be an Observable');\n }\n\n const anchor = Anchor('Match');\n const cache = new Map();\n\n const getItem = function(key) {\n if(shouldKeepInCache && cache.has(key)) {\n return cache.get(key);\n }\n let item = values[key];\n if(!item) {\n return null;\n }\n item = ElementCreator.getChild(item);\n if(Validator.isFragment(item)) {\n item = Array.from(item.children);\n }\n shouldKeepInCache && cache.set(key, item);\n return item;\n };\n\n const defaultValue = $condition.val();\n const defaultContent = getItem(defaultValue);\n if(defaultContent) {\n anchor.appendChild(defaultContent);\n }\n\n $condition.subscribe(value => {\n const content = getItem(value);\n anchor.remove();\n if(content) {\n anchor.appendChild(content);\n }\n });\n\n return anchor.nd.with({\n add(key, view, shouldFocusOn = false) {\n values[key] = view;\n if(shouldFocusOn) {\n $condition.set(key);\n }\n },\n remove(key) {\n shouldKeepInCache && cache.delete(key);\n $condition.set([...cache.keys()].at(-1) ?? '');\n delete values[key];\n },\n });\n};\n\n\n/**\n * Displays one of two views based on a boolean observable condition.\n * Simplified version of Match for true/false cases.\n *\n * @param {ObservableItem<boolean>|ObservableChecker<boolean>} $condition - Boolean observable to watch\n * @param {ValidChild} onTrue - Content to show when condition is true\n * @param {ValidChild} onFalse - Content to show when condition is false\n * @returns {AnchorDocumentFragment} Fragment managing the conditional content\n * @example\n * const isLoggedIn = Observable(false);\n * Switch(isLoggedIn,\n * Div({}, 'Welcome back!'),\n * Div({}, 'Please login')\n * );\n */\nexport const Switch = function ($condition, onTrue, onFalse) {\n if(!Validator.isObservable($condition)) {\n throw new NativeDocumentError('Toggle : condition must be an Observable');\n }\n\n return Match($condition.toBoolean(), {\n true: onTrue,\n false: onFalse,\n });\n};\n\n/**\n * Provides a fluent API for conditional rendering with show/otherwise pattern.\n *\n * @param {ObservableItem<boolean>|ObservableChecker<boolean>} $condition - Boolean observable to watch\n * @returns {{show: Function, otherwise: Function}} Object with fluent methods\n * @example\n * const isLoading = Observable(false);\n * When(isLoading)\n * .show(LoadingSpinner())\n * .otherwise(Content());\n */\nexport const When = function($condition) {\n if(!Validator.isObservable($condition)) {\n throw new NativeDocumentError('When : condition must be an Observable');\n }\n\n let $onTrue = null;\n let $onFalse = null;\n\n return {\n show(onTrue) {\n $onTrue = onTrue;\n return this;\n },\n otherwise(onFalse) {\n $onFalse = onFalse;\n return Switch($condition, $onTrue, $onFalse);\n },\n toNdElement() {\n return Switch($condition, $onTrue, $onFalse);\n },\n };\n};","import HtmlElementWrapper from '../wrappers/HtmlElementWrapper';\n\n/**\n * Creates a `<div>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLDivElement}\n */\nexport const Div = HtmlElementWrapper('div');\n\n/**\n * Creates a `<span>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLSpanElement}\n */\nexport const Span = HtmlElementWrapper('span');\n\n/**\n * Creates a `<label>` element.\n * @type {function(LabelAttributes=, NdChild|NdChild[]=): HTMLLabelElement}\n */\nexport const Label = HtmlElementWrapper('label');\n\n/**\n * Creates a `<p>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLParagraphElement}\n */\nexport const P = HtmlElementWrapper('p');\n\n/**\n * Alias for {@link P}.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLParagraphElement}\n */\nexport const Paragraph = P;\n\n/**\n * Creates a `<strong>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Strong = HtmlElementWrapper('strong');\n\n/**\n * Creates a `<h1>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLHeadingElement}\n */\nexport const H1 = HtmlElementWrapper('h1');\n\n/**\n * Creates a `<h2>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLHeadingElement}\n */\nexport const H2 = HtmlElementWrapper('h2');\n\n/**\n * Creates a `<h3>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLHeadingElement}\n */\nexport const H3 = HtmlElementWrapper('h3');\n\n/**\n * Creates a `<h4>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLHeadingElement}\n */\nexport const H4 = HtmlElementWrapper('h4');\n\n/**\n * Creates a `<h5>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLHeadingElement}\n */\nexport const H5 = HtmlElementWrapper('h5');\n\n/**\n * Creates a `<h6>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLHeadingElement}\n */\nexport const H6 = HtmlElementWrapper('h6');\n\n/**\n * Creates a `<br>` element.\n * @type {function(GlobalAttributes=): HTMLBRElement}\n */\nexport const Br = HtmlElementWrapper('br');\n\n/**\n * Creates an `<a>` element.\n * @type {function(AnchorAttributes=, NdChild|NdChild[]=): HTMLAnchorElement}\n */\nexport const Link = HtmlElementWrapper('a');\n\n/**\n * Creates a `<pre>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLPreElement}\n */\nexport const Pre = HtmlElementWrapper('pre');\n\n/**\n * Creates a `<code>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Code = HtmlElementWrapper('code');\n\n/**\n * Creates a `<blockquote>` element.\n * @type {function(GlobalAttributes & { cite?: string }=, NdChild|NdChild[]=): HTMLQuoteElement}\n */\nexport const Blockquote = HtmlElementWrapper('blockquote');\n\n/**\n * Creates an `<hr>` element.\n * @type {function(GlobalAttributes=): HTMLHRElement}\n */\nexport const Hr = HtmlElementWrapper('hr');\n\n/**\n * Creates an `<em>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Em = HtmlElementWrapper('em');\n\n/**\n * Creates a `<small>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Small = HtmlElementWrapper('small');\n\n/**\n * Creates a `<mark>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Mark = HtmlElementWrapper('mark');\n\n/**\n * Creates a `<del>` element.\n * @type {function(ModAttributes=, NdChild|NdChild[]=): HTMLModElement}\n */\nexport const Del = HtmlElementWrapper('del');\n\n/**\n * Creates an `<ins>` element.\n * @type {function(ModAttributes=, NdChild|NdChild[]=): HTMLModElement}\n */\nexport const Ins = HtmlElementWrapper('ins');\n\n/**\n * Creates a `<sub>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Sub = HtmlElementWrapper('sub');\n\n/**\n * Creates a `<sup>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Sup = HtmlElementWrapper('sup');\n\n/**\n * Creates an `<abbr>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Abbr = HtmlElementWrapper('abbr');\n\n/**\n * Creates a `<cite>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Cite = HtmlElementWrapper('cite');\n\n/**\n * Creates a `<q>` element.\n * @type {function(GlobalAttributes & { cite?: string }=, NdChild|NdChild[]=): HTMLQuoteElement}\n */\nexport const Quote = HtmlElementWrapper('q');\n","import HtmlElementWrapper from '../wrappers/HtmlElementWrapper';\n\n/**\n * Creates a `<dl>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLDListElement}\n */\nexport const Dl = HtmlElementWrapper('dl');\n\n/**\n * Creates a `<dt>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Dt = HtmlElementWrapper('dt');\n\n/**\n * Creates a `<dd>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Dd = HtmlElementWrapper('dd');","import HtmlElementWrapper from '../wrappers/HtmlElementWrapper';\n\n\n/**\n * Creates a `<form>` element.\n * Extended with fluent methods: `.submit()`, `.post()`, `.get()`, `.multipartFormData()`.\n * @type {function(FormAttributes=, NdChild|NdChild[]=): HTMLFormElement & {\n * submit: (actionOrFn: string | ((e: SubmitEvent) => void)) => HTMLFormElement,\n * post: (action: string) => HTMLFormElement,\n * get: (action: string) => HTMLFormElement,\n * multipartFormData: () => HTMLFormElement,\n * }}\n */\nexport const Form = HtmlElementWrapper('form', (el) => {\n\n el.submit = function(action) {\n if(typeof action === 'function') {\n el.onSubmit((e) => {\n e.preventDefault();\n action(e);\n });\n return el;\n }\n this.setAttribute('action', action);\n return el;\n };\n el.multipartFormData = function() {\n this.setAttribute('enctype', 'multipart/form-data');\n return el;\n };\n el.post = function(action) {\n this.setAttribute('method', 'post');\n this.setAttribute('action', action);\n return el;\n };\n el.get = function(action) {\n this.setAttribute('method', 'get');\n this.setAttribute('action', action);\n };\n return el;\n});\n\n/**\n * Creates an `<input>` element.\n * @type {function(InputAttributes=): HTMLInputElement}\n */\nexport const Input = HtmlElementWrapper('input');\n\n/**\n * Creates a `<textarea>` element.\n * @type {function(TextAreaAttributes=, NdChild|NdChild[]=): HTMLTextAreaElement}\n */\nexport const TextArea = HtmlElementWrapper('textarea');\n\n/**\n * Alias for {@link TextArea}.\n * @type {function(TextAreaAttributes=, NdChild|NdChild[]=): HTMLTextAreaElement}\n */\nexport const TextInput = TextArea;\n\n/**\n * Creates a `<select>` element.\n * @type {function(SelectAttributes=, NdChild|NdChild[]=): HTMLSelectElement}\n */\nexport const Select = HtmlElementWrapper('select');\n\n/**\n * Creates a `<fieldset>` element.\n * @type {function(GlobalAttributes & { disabled?: Observable<boolean>|boolean }=, NdChild|NdChild[]=): HTMLFieldSetElement}\n */\nexport const FieldSet = HtmlElementWrapper('fieldset');\n\n/**\n * Creates an `<option>` element.\n * @type {function(OptionAttributes=, NdChild|NdChild[]=): HTMLOptionElement}\n */\nexport const Option = HtmlElementWrapper('option');\n\n/**\n * Creates a `<legend>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLLegendElement}\n */\nexport const Legend = HtmlElementWrapper('legend');\n\n/**\n * Creates a `<datalist>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLDataListElement}\n */\nexport const Datalist = HtmlElementWrapper('datalist');\n\n/**\n * Creates an `<output>` element.\n * @type {function(OutputAttributes=, NdChild|NdChild[]=): HTMLOutputElement}\n */\nexport const Output = HtmlElementWrapper('output');\n\n/**\n * Creates a `<progress>` element.\n * @type {function(ProgressAttributes=, NdChild|NdChild[]=): HTMLProgressElement}\n */\nexport const Progress = HtmlElementWrapper('progress');\n\n/**\n * Creates a `<meter>` element.\n * @type {function(MeterAttributes=, NdChild|NdChild[]=): HTMLMeterElement}\n */\nexport const Meter = HtmlElementWrapper('meter');\n\n/**\n * Creates an `<input readonly>` element.\n * @param {Omit<InputAttributes, 'type'|'readonly'|'readOnly'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const ReadonlyInput = (attributes) => Input({ readonly: true, ...attributes });\n\n/**\n * Creates an `<input type=\"hidden\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const HiddenInput = (attributes) => Input({ type: 'hidden', ...attributes });\n\n/**\n * Creates an `<input type=\"file\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const FileInput = (attributes) => Input({ type: 'file', ...attributes });\n\n/**\n * Creates an `<input type=\"password\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const PasswordInput = (attributes) => Input({ type: 'password', ...attributes });\n\n/**\n * Creates an `<input type=\"checkbox\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const Checkbox = (attributes) => Input({ type: 'checkbox', ...attributes });\n\n/**\n * Creates an `<input type=\"radio\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const Radio = (attributes) => Input({ type: 'radio', ...attributes });\n\n/**\n * Creates an `<input type=\"range\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const RangeInput = (attributes) => Input({ type: 'range', ...attributes });\n\n/**\n * Creates an `<input type=\"color\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const ColorInput = (attributes) => Input({ type: 'color', ...attributes });\n\n/**\n * Creates an `<input type=\"date\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const DateInput = (attributes) => Input({ type: 'date', ...attributes });\n\n/**\n * Creates an `<input type=\"time\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const TimeInput = (attributes) => Input({ type: 'time', ...attributes });\n\n/**\n * Creates an `<input type=\"datetime-local\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const DateTimeInput = (attributes) => Input({ type: 'datetime-local', ...attributes });\n\n/**\n * Creates an `<input type=\"week\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const WeekInput = (attributes) => Input({ type: 'week', ...attributes });\n\n/**\n * Creates an `<input type=\"month\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const MonthInput = (attributes) => Input({ type: 'month', ...attributes });\n\n/**\n * Creates an `<input type=\"search\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const SearchInput = (attributes) => Input({ type: 'search', ...attributes });\n\n/**\n * Creates an `<input type=\"tel\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const TelInput = (attributes) => Input({ type: 'tel', ...attributes });\n\n/**\n * Creates an `<input type=\"url\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const UrlInput = (attributes) => Input({ type: 'url', ...attributes });\n\n/**\n * Creates an `<input type=\"email\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const EmailInput = (attributes) => Input({ type: 'email', ...attributes });\n\n/**\n * Creates an `<input type=\"number\">` element.\n * @param {Omit<InputAttributes, 'type'>} [attributes]\n * @returns {HTMLInputElement}\n */\nexport const NumberInput = (attributes) => Input({ type: 'number', ...attributes });\n\n/**\n * Creates a `<button>` element.\n * @type {function(ButtonAttributes=, NdChild|NdChild[]=): HTMLButtonElement}\n */\nexport const Button = HtmlElementWrapper('button');\n\n/**\n * Creates a `<button type=\"button\">` element.\n * @param {NdChild|NdChild[]} [child]\n * @param {Omit<ButtonAttributes, 'type'>} [attributes]\n * @returns {HTMLButtonElement}\n */\nexport const SimpleButton = (child, attributes) => Button(child, { type: 'button', ...attributes });\n\n/**\n * Creates a `<button type=\"submit\">` element.\n * @param {NdChild|NdChild[]} [child]\n * @param {Omit<ButtonAttributes, 'type'>} [attributes]\n * @returns {HTMLButtonElement}\n */\nexport const SubmitButton = (child, attributes) => Button(child, { type: 'submit', ...attributes });","import HtmlElementWrapper from '../wrappers/HtmlElementWrapper';\n\n/**\n * Creates a `<main>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Main = HtmlElementWrapper('main');\n\n/**\n * Creates a `<section>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Section = HtmlElementWrapper('section');\n\n/**\n * Creates an `<article>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Article = HtmlElementWrapper('article');\n\n/**\n * Creates an `<aside>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Aside = HtmlElementWrapper('aside');\n\n/**\n * Creates a `<nav>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Nav = HtmlElementWrapper('nav');\n\n/**\n * Creates a `<figure>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Figure = HtmlElementWrapper('figure');\n\n/**\n * Creates a `<figcaption>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const FigCaption = HtmlElementWrapper('figcaption');\n\n/**\n * Creates a `<header>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Header = HtmlElementWrapper('header');\n\n/**\n * Creates a `<footer>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Footer = HtmlElementWrapper('footer');","import HtmlElementWrapper from '../wrappers/HtmlElementWrapper';\nimport Validator from '../utils/validator';\nimport NativeDocumentError from '../errors/NativeDocumentError';\n\n/**\n * Creates an `<img>` element.\n * @type {function(ImgAttributes=): HTMLImageElement}\n */\nexport const BaseImage = HtmlElementWrapper('img');\n\n/**\n * Creates an `<img>` element.\n * @param {Observable<string>|string} src\n * @param {Omit<ImgAttributes, 'src'>} [attributes]\n * @returns {HTMLImageElement}\n */\nexport const Img = function(src, attributes) {\n return BaseImage({ src, ...attributes });\n};\n\n/**\n * Creates an `<img>` that loads asynchronously, showing a placeholder until the image is ready.\n * Supports reactive `src` — automatically updates when the observable changes.\n * @param {Observable<string>|string} src - Final image URL\n * @param {string|null} defaultImage - Placeholder shown while loading\n * @param {Omit<ImgAttributes, 'src'>} attributes\n * @param {(error: NativeDocumentError|null, img: HTMLImageElement) => void} [callback]\n * @returns {HTMLImageElement}\n */\nexport const AsyncImg = function(src, defaultImage, attributes, callback) {\n const defaultSrc = Validator.isObservable(src) ? src.val() : src;\n const image = Img(defaultImage || defaultSrc, attributes);\n const img = new Image();\n\n img.onload = () => {\n Validator.isFunction(callback) && callback(null, image);\n image.src = Validator.isObservable(src) ? src.val() : src;\n };\n img.onerror = () => {\n Validator.isFunction(callback) && callback(new NativeDocumentError('Image not found'));\n };\n if(Validator.isObservable(src)) {\n src.subscribe(newSrc => {\n img.src = newSrc;\n });\n }\n img.src = defaultSrc;\n return image;\n};\n\n/**\n * Creates an `<img loading=\"lazy\">` element.\n * @param {Observable<string>|string} src\n * @param {Omit<ImgAttributes, 'src'|'loading'>} [attributes]\n * @returns {HTMLImageElement}\n */\nexport const LazyImg = function(src, attributes) {\n return Img(src, { ...attributes, loading: 'lazy' });\n};","import HtmlElementWrapper from '../wrappers/HtmlElementWrapper';\n\n/**\n * Creates a `<details>` element.\n * @type {function(DetailsAttributes=, NdChild|NdChild[]=): HTMLDetailsElement}\n */\nexport const Details = HtmlElementWrapper('details');\n\n/**\n * Creates a `<summary>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Summary = HtmlElementWrapper('summary');\n\n/**\n * Creates a `<dialog>` element.\n * @type {function(DialogAttributes=, NdChild|NdChild[]=): HTMLDialogElement}\n */\nexport const Dialog = HtmlElementWrapper('dialog');\n\n/**\n * Creates a `<menu>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLMenuElement}\n */\nexport const Menu = HtmlElementWrapper('menu');","import HtmlElementWrapper from '../wrappers/HtmlElementWrapper';\n\n/**\n * Creates an `<ol>` element.\n * @type {function(OlAttributes=, NdChild|NdChild[]=): HTMLOListElement}\n */\nexport const OrderedList = HtmlElementWrapper('ol');\n\n/**\n * Creates a `<ul>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLUListElement}\n */\nexport const UnorderedList = HtmlElementWrapper('ul');\n\n/**\n * Creates a `<li>` element.\n * @type {function(GlobalAttributes & { value?: number }=, NdChild|NdChild[]=): HTMLLIElement}\n */\nexport const ListItem = HtmlElementWrapper('li');\n\n/**\n * Alias for {@link ListItem}.\n * @type {typeof ListItem}\n */\nexport const Li = ListItem;\n\n/**\n * Alias for {@link OrderedList}.\n * @type {typeof OrderedList}\n */\nexport const Ol = OrderedList;\n\n/**\n * Alias for {@link UnorderedList}.\n * @type {typeof UnorderedList}\n */\nexport const Ul = UnorderedList;\n","import HtmlElementWrapper from '../wrappers/HtmlElementWrapper';\n\n/**\n * Creates an `<audio>` element.\n * @type {function(AudioAttributes=, NdChild|NdChild[]=): HTMLAudioElement}\n */\nexport const Audio = HtmlElementWrapper('audio');\n\n/**\n * Creates a `<video>` element.\n * @type {function(VideoAttributes=, NdChild|NdChild[]=): HTMLVideoElement}\n */\nexport const Video = HtmlElementWrapper('video');\n\n/**\n * Creates a `<source>` element.\n * @type {function(SourceAttributes=): HTMLSourceElement}\n */\nexport const Source = HtmlElementWrapper('source');\n\n/**\n * Creates a `<track>` element.\n * @type {function(TrackAttributes=): HTMLTrackElement}\n */\nexport const Track = HtmlElementWrapper('track');\n\n/**\n * Creates a `<canvas>` element.\n * @type {function(CanvasAttributes=, NdChild|NdChild[]=): HTMLCanvasElement}\n */\nexport const Canvas = HtmlElementWrapper('canvas');\n\n/**\n * Creates an `<svg>` element.\n * @type {function(SvgAttributes=, NdChild|NdChild[]=): SVGSVGElement}\n */\nexport const Svg = HtmlElementWrapper('svg');","import HtmlElementWrapper from '../wrappers/HtmlElementWrapper';\n\n/**\n * Creates a `<time>` element.\n * @type {function(TimeAttributes=, NdChild|NdChild[]=): HTMLTimeElement}\n */\nexport const Time = HtmlElementWrapper('time');\n\n/**\n * Creates a `<data>` element.\n * @type {function(GlobalAttributes & { value?: Observable<string>|string }=, NdChild|NdChild[]=): HTMLDataElement}\n */\nexport const Data = HtmlElementWrapper('data');\n\n/**\n * Creates an `<address>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Address = HtmlElementWrapper('address');\n\n/**\n * Creates a `<kbd>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Kbd = HtmlElementWrapper('kbd');\n\n/**\n * Creates a `<samp>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Samp = HtmlElementWrapper('samp');\n\n/**\n * Creates a `<var>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLElement}\n */\nexport const Var = HtmlElementWrapper('var');\n\n/**\n * Creates a `<wbr>` element.\n * @type {function(GlobalAttributes=): HTMLElement}\n */\nexport const Wbr = HtmlElementWrapper('wbr');","import HtmlElementWrapper from '../wrappers/HtmlElementWrapper';\n\n/**\n * Creates a `<caption>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLTableCaptionElement}\n */\nexport const Caption = HtmlElementWrapper('caption');\n\n/**\n * Creates a `<table>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLTableElement}\n */\nexport const Table = HtmlElementWrapper('table');\n\n/**\n * Creates a `<thead>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLTableSectionElement}\n */\nexport const THead = HtmlElementWrapper('thead');\n\n/**\n * Creates a `<tfoot>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLTableSectionElement}\n */\nexport const TFoot = HtmlElementWrapper('tfoot');\n\n/**\n * Creates a `<tbody>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLTableSectionElement}\n */\nexport const TBody = HtmlElementWrapper('tbody');\n\n/**\n * Creates a `<tr>` element.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): HTMLTableRowElement}\n */\nexport const Tr = HtmlElementWrapper('tr');\n\n/**\n * Alias for {@link Tr}.\n * @type {typeof Tr}\n */\nexport const TRow = Tr;\n\n/**\n * Creates a `<th>` element.\n * @type {function(ThAttributes=, NdChild|NdChild[]=): HTMLTableCellElement}\n */\nexport const Th = HtmlElementWrapper('th');\n\n/**\n * Alias for {@link Th}.\n * @type {typeof Th}\n */\nexport const THeadCell = Th;\n\n/**\n * Alias for {@link Th}.\n * @type {typeof Th}\n */\nexport const TFootCell = Th;\n\n/**\n * Creates a `<td>` element.\n * @type {function(TdAttributes=, NdChild|NdChild[]=): HTMLTableCellElement}\n */\nexport const Td = HtmlElementWrapper('td');\n\n/**\n * Alias for {@link Td}.\n * @type {typeof Td}\n */\nexport const TBodyCell = Td;","import {createHtmlElement} from './HtmlElementWrapper';\n\nexport default function SvgElementWrapper(name) {\n let node = null;\n\n let createElement = (attr, children) => {\n node = document.createElementNS('http://www.w3.org/2000/svg', name);\n createElement = (attr, children) => {\n return createHtmlElement(node.cloneNode(), attr, children);\n };\n return createHtmlElement(node.cloneNode(), attr, children);\n };\n\n return (attr, children) => createElement(attr, children);\n}","import SvgElementWrapper from '../wrappers/SvgElementWrapper';\n\nexport const SvgSvg = SvgElementWrapper('svg');\nexport const SvgCircle = SvgElementWrapper('circle');\nexport const SvgRect = SvgElementWrapper('rect');\nexport const SvgEllipse = SvgElementWrapper('ellipse');\nexport const SvgLine = SvgElementWrapper('line');\nexport const SvgPolyline = SvgElementWrapper('polyline');\nexport const SvgPolygon = SvgElementWrapper('polygon');\nexport const SvgPath = SvgElementWrapper('path');\nexport const SvgText = SvgElementWrapper('text');\nexport const SvgTSpan = SvgElementWrapper('tspan');\nexport const SvgTextPath = SvgElementWrapper('textPath');\nexport const SvgG = SvgElementWrapper('g');\nexport const SvgDefs = SvgElementWrapper('defs');\nexport const SvgUse = SvgElementWrapper('use');\nexport const SvgSymbol = SvgElementWrapper('symbol');\nexport const SvgClipPath = SvgElementWrapper('clipPath');\nexport const SvgMask = SvgElementWrapper('mask');\nexport const SvgMarker = SvgElementWrapper('marker');\nexport const SvgPattern = SvgElementWrapper('pattern');\nexport const SvgImage = SvgElementWrapper('image');\nexport const SvgForeignObject = SvgElementWrapper('foreignObject');\nexport const SvgSwitch = SvgElementWrapper('switch');\nexport const SvgLinearGradient = SvgElementWrapper('linearGradient');\nexport const SvgRadialGradient = SvgElementWrapper('radialGradient');\nexport const SvgStop = SvgElementWrapper('stop');\nexport const SvgFilter = SvgElementWrapper('filter');\nexport const SvgFEBlend = SvgElementWrapper('feBlend');\nexport const SvgFEColorMatrix = SvgElementWrapper('feColorMatrix');\nexport const SvgFEComposite = SvgElementWrapper('feComposite');\nexport const SvgFEFlood = SvgElementWrapper('feFlood');\nexport const SvgFEGaussianBlur = SvgElementWrapper('feGaussianBlur');\nexport const SvgFEMerge = SvgElementWrapper('feMerge');\nexport const SvgFEMergeNode = SvgElementWrapper('feMergeNode');\nexport const SvgFEOffset = SvgElementWrapper('feOffset');\nexport const SvgFETurbulence = SvgElementWrapper('feTurbulence');\nexport const SvgFEDisplacementMap = SvgElementWrapper('feDisplacementMap');\nexport const SvgFEDiffuseLighting = SvgElementWrapper('feDiffuseLighting');\nexport const SvgFESpecularLighting = SvgElementWrapper('feSpecularLighting');\nexport const SvgFEDistantLight = SvgElementWrapper('feDistantLight');\nexport const SvgFEPointLight = SvgElementWrapper('fePointLight');\nexport const SvgFESpotLight = SvgElementWrapper('feSpotLight');\nexport const SvgFEMorphology = SvgElementWrapper('feMorphology');\nexport const SvgFEConvolveMatrix = SvgElementWrapper('feConvolveMatrix');\nexport const SvgFEComponentTransfer = SvgElementWrapper('feComponentTransfer');\nexport const SvgFEFuncR = SvgElementWrapper('feFuncR');\nexport const SvgFEFuncG = SvgElementWrapper('feFuncG');\nexport const SvgFEFuncB = SvgElementWrapper('feFuncB');\nexport const SvgFEFuncA = SvgElementWrapper('feFuncA');\nexport const SvgAnimate = SvgElementWrapper('animate');\nexport const SvgAnimateTransform = SvgElementWrapper('animateTransform');\nexport const SvgAnimateMotion = SvgElementWrapper('animateMotion');\nexport const SvgMPath = SvgElementWrapper('mpath');\nexport const SvgSet = SvgElementWrapper('set');\nexport const SvgDesc = SvgElementWrapper('desc');\nexport const SvgTitle = SvgElementWrapper('title');\nexport const SvgMetadata = SvgElementWrapper('metadata');\nexport const SvgView = SvgElementWrapper('view');\nexport const SvgStyle = SvgElementWrapper('style');\nexport const SvgScript = SvgElementWrapper('script');","import HtmlElementWrapper from '../wrappers/HtmlElementWrapper';\n\n/**\n * Creates an empty `DocumentFragment` wrapper.\n * Useful for grouping elements without adding a DOM node.\n * @type {function(GlobalAttributes=, NdChild|NdChild[]=): DocumentFragment}\n */\nexport const Fragment = HtmlElementWrapper('');\n","import {trim} from '../core/utils/helpers.js';\n\nexport const RouteParamPatterns = {\n id: '[0-9]+',\n uuid: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',\n slug: '[a-z0-9]+(?:-[a-z0-9]+)*',\n hash: '[a-f0-9]{32,64}',\n\n alpha: '[a-zA-Z]+',\n alphanum: '[a-zA-Z0-9]+',\n string: '[^/]+',\n any: '.*',\n\n int: '[0-9]+',\n float: '[0-9]+\\\\.[0-9]+',\n number: '[0-9]+(\\\\.[0-9]+)?',\n positive: '[1-9][0-9]*',\n\n locale: '[a-z]{2}(-[A-Z]{2})?',\n lang: '[a-z]{2}',\n\n token: '[A-Za-z0-9_\\\\-]+',\n};\n\n/**\n * Creates a new Route instance.\n *\n * @param {string} $path - URL pattern with optional parameters (e.g., '/user/{id:number}')\n * @param {Function} $component - Component function that returns HTMLElement or DocumentFragment\n * @param {Object} [$options={}] - Route configuration options\n * @param {string} [$options.name] - Unique name for the route (used for navigation)\n * @param {Function[]} [$options.middlewares] - Array of middleware functions\n * @param {boolean} [$options.shouldRebuild] - Whether to rebuild component on each navigation\n * @param {Object} [$options.with] - Custom parameter validation patterns\n * @param {Function} [$options.layout] - Layout component wrapper function\n */\nexport function Route($path, $component, $options = {}) {\n\n $path = '/'+trim($path, '/').replace(/\\/+/, '/');\n\n let $pattern = null;\n const $name = $options.name || null;\n\n const $middlewares = $options.middlewares || [];\n const $shouldRebuild = $options.shouldRebuild || false;\n const $paramsValidators = $options.with || {};\n const $layout = $options.layout || null;\n\n const $params = {};\n const $paramsNames = [];\n\n\n const paramsExtractor = (description) => {\n if(!description) return null;\n const [name, type] = description.split(':');\n\n let pattern = $paramsValidators[name];\n if(!pattern && type) {\n pattern = RouteParamPatterns[type];\n }\n if(!pattern) {\n pattern = '[^/]+';\n }\n\n pattern = pattern.replace('(', '(?:');\n\n return { name, pattern: `(${pattern})` };\n };\n\n const getPattern = () => {\n if($pattern) {\n return $pattern;\n }\n\n const patternDescription = $path.replace(/\\{(.*?)}/ig, (block, definition) => {\n const description = paramsExtractor(definition);\n if(!description || !description.pattern) return block;\n $params[description.name] = description.pattern;\n $paramsNames.push(description.name);\n return description.pattern;\n });\n\n $pattern = new RegExp('^'+patternDescription+'$');\n return $pattern;\n };\n\n this.name = () => $name;\n this.component = () => $component;\n this.middlewares = () => $middlewares;\n this.shouldRebuild = () => $shouldRebuild;\n this.path = () => $path;\n this.layout = () => $layout;\n\n /**\n *\n * @param {string} path\n */\n this.match = function(path) {\n path = '/'+trim(path, '/');\n const match = getPattern().exec(path);\n if(!match) return false;\n const params = {};\n\n getPattern().exec(path).forEach((value, index) => {\n if(index < 1) return;\n const name = $paramsNames[index - 1];\n params[name] = value;\n });\n\n return params;\n };\n /**\n * @param {{params: ?Object, query: ?Object, basePath: ?string}} configs\n */\n this.url = function(configs) {\n const path = $path.replace(/\\{(.*?)}/ig, (block, definition) => {\n const description = paramsExtractor(definition);\n if(configs.params && configs.params[description.name]) {\n return configs.params[description.name];\n }\n throw new Error(`Missing parameter '${description.name}'`);\n });\n\n const queryString = (typeof configs.query === 'object') ? (new URLSearchParams(configs.query)).toString() : null;\n return (configs.basePath ? configs.basePath : '') + (queryString ? `${path}?${queryString}` : path);\n };\n}","\n\nexport default class RouterError extends Error {\n constructor(message, context) {\n super(message);\n this.context = context;\n }\n}","import {trim} from '../core/utils/helpers.js';\n\nexport const RouteGroupHelper = {\n /**\n *\n * @param {{suffix: string, options: {middlewares: Function[], name: string}}[]} $groupTree\n * @param {string} path\n * @returns {string}\n */\n fullPath: ($groupTree, path) => {\n const fullPath = [];\n $groupTree.forEach(group => {\n fullPath.push(trim(group.suffix, '/'));\n });\n fullPath.push(trim(path, '/'));\n return fullPath.join('/');\n },\n /**\n *\n * @param {{suffix: string, options: {middlewares: Function[], name: string}}[]} $groupTree\n * @param {Function[]} middlewares\n * @returns {Function[]}\n */\n fullMiddlewares: ($groupTree, middlewares) => {\n const fullMiddlewares = [];\n $groupTree.forEach(group => {\n if(group.options.middlewares) {\n fullMiddlewares.push(...group.options.middlewares);\n }\n });\n if(middlewares) {\n fullMiddlewares.push(...middlewares);\n }\n return fullMiddlewares;\n },\n /**\n *\n * @param {{suffix: string, options: {middlewares: Function[], name: string}}[]} $groupTree\n * @param {string} name\n * @returns {string}\n */\n fullName: ($groupTree, name) => {\n const fullName = [];\n $groupTree.forEach(group => {\n if(group.options?.name) {\n fullName.push(group.options.name);\n }\n });\n name && fullName.push(name);\n return fullName.join('.');\n },\n layout: ($groupTree) => {\n for(let i = $groupTree.length - 1; i >= 0; i--) {\n if($groupTree[i]?.options?.layout) {\n return $groupTree[i].options.layout;\n }\n }\n return null;\n },\n};","\n\nexport default function HashRouter() {\n\n const $history = [];\n let $currentIndex = 0;\n\n /**\n *\n * @param {number} delta\n */\n const go = (delta) => {\n const index = $currentIndex + delta;\n if(!$history[index]) {\n return;\n }\n $currentIndex = index;\n const { route, params, query, path } = $history[index];\n setHash(path);\n };\n\n const canGoBack = function() {\n return $currentIndex > 0;\n };\n const canGoForward = function() {\n return $currentIndex < $history.length - 1;\n };\n\n /**\n *\n * @param {string} path\n */\n const setHash = (path) => {\n window.location.replace(`${window.location.pathname}${window.location.search}#${path}`);\n };\n\n const getCurrentHash = () => window.location.hash.slice(1);\n\n /**\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.push = function(target) {\n const { route, params, query, path } = this.resolve(target);\n if(path === getCurrentHash()) {\n return;\n }\n $history.splice($currentIndex + 1);\n $history.push({ route, params, query, path });\n $currentIndex++;\n setHash(path);\n };\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.replace = function(target) {\n const { route, params, query, path } = this.resolve(target);\n if(path === getCurrentHash()) {\n return;\n }\n $history[$currentIndex] = { route, params, query, path };\n };\n this.forward = function() {\n return canGoForward() && go(1);\n };\n this.back = function() {\n return canGoBack() && go(-1);\n };\n\n /**\n * @param {string} defaultPath\n */\n this.init = function(defaultPath) {\n window.addEventListener('hashchange', () => {\n const { route, params, query, path } = this.resolve(getCurrentHash());\n this.handleRouteChange(route, params, query, path);\n });\n const { route, params, query, path } = this.resolve(defaultPath || getCurrentHash());\n $history.push({ route, params, query, path });\n $currentIndex = 0;\n this.handleRouteChange(route, params, query, path);\n };\n};","import DebugManager from '../../core/utils/debug-manager.js';\n\nexport default function HistoryRouter() {\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.push = function(target) {\n try {\n const { route, path, params, query } = this.resolve(target);\n if(window.history.state && window.history.state.path === path) {\n return;\n }\n window.history.pushState({ name: route.name(), params, path}, route.name() || path , path);\n this.handleRouteChange(route, params, query, path);\n } catch (e) {\n DebugManager.error('HistoryRouter', 'Error in pushState', e);\n }\n };\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.replace = function(target) {\n const { route, path, params } = this.resolve(target);\n try {\n window.history.replaceState({ name: route.name(), params, path}, route.name() || path , path);\n this.handleRouteChange(route, params, {}, path);\n } catch(e) {\n DebugManager.error('HistoryRouter', 'Error in replaceState', e);\n }\n };\n this.forward = function() {\n window.history.forward();\n };\n\n this.back = function() {\n window.history.back();\n };\n\n /**\n * @param {string} defaultPath\n */\n this.init = function(defaultPath) {\n window.addEventListener('popstate', (event) => {\n try {\n if(!event.state || !event.state.path) {\n return;\n }\n const statePath = event.state.path;\n const {route, params, query, path} = this.resolve(statePath);\n if(!route) {\n return;\n }\n this.handleRouteChange(route, params, query, path);\n } catch(e) {\n DebugManager.error('HistoryRouter', 'Error in popstate event', e);\n }\n });\n const { route, params, query, path } = this.resolve(defaultPath || (window.location.pathname+window.location.search));\n this.handleRouteChange(route, params, query, path);\n };\n\n};","\nexport default function MemoryRouter() {\n const $history = [];\n let $currentIndex = 0;\n\n /**\n *\n * @param {number} delta\n */\n const go = (delta) => {\n const index = $currentIndex + delta;\n if(!$history[index]) {\n return;\n }\n $currentIndex = index;\n const { route, params, query, path } = $history[index];\n this.handleRouteChange(route, params, query, path);\n };\n\n const canGoBack = function() {\n return $currentIndex > 0;\n };\n const canGoForward = function() {\n return $currentIndex < $history.length - 1;\n };\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.push = function(target) {\n const { route, params, query, path} = this.resolve(target);\n if($history[$currentIndex] && $history[$currentIndex].path === path) {\n return;\n }\n $history.splice($currentIndex + 1);\n $history.push({ route, params, query, path });\n $currentIndex++;\n this.handleRouteChange(route, params, query, path);\n };\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n */\n this.replace = function(target) {\n const { route, params, query, path} = this.resolve(target);\n $history[$currentIndex] = { route, params, query, path };\n this.handleRouteChange(route, params, query, path);\n };\n\n this.forward = function() {\n return canGoForward() && go(1);\n };\n\n this.back = function() {\n return canGoBack() && go(-1);\n };\n\n /**\n * @param {string} defaultPath\n */\n this.init = function(defaultPath) {\n const currentPath = defaultPath || (window.location.pathname + window.location.search);\n const { route, params, query, path } = this.resolve(currentPath);\n $history.push({ route, params, query, path });\n $currentIndex = 0;\n\n this.handleRouteChange(route, params, query, path);\n };\n};","import Validator from '../core/utils/validator';\nimport {Anchor} from '../../elements';\nimport {ElementCreator} from '../core/wrappers/ElementCreator';\n\n/**\n *\n * @param {Router} router\n * @param {?HTMLElement} container\n */\nexport function RouterComponent(router, container) {\n\n const $cache = new Map();\n const $layoutCache = new WeakMap();\n const $routeInstanceAnchors = new WeakMap();\n let $currentLayout = null;\n\n let $lastNodeInserted = null;\n\n const $lifecycles = new Map();\n let $currentPath = null;\n\n const getNodeAnchorForLayout = (node, path) => {\n const existingAnchor = $routeInstanceAnchors.get(node);\n if(existingAnchor) {\n return existingAnchor;\n }\n\n let anchor = node;\n if(!Validator.isAnchor(node)) {\n anchor = Anchor(path);\n anchor.appendChild(node);\n }\n $routeInstanceAnchors.set(node, anchor);\n return anchor;\n };\n\n const removeLastNodeInserted = () => {\n $lastNodeInserted?.remove();\n };\n\n const cleanContainer = () => {\n container.nodeValue = '';\n removeLastNodeInserted();\n\n if($currentLayout) {\n $currentLayout.remove();\n }\n };\n\n const getNodeToInsert = (node) => {\n let nodeToInsert = node;\n if(Validator.isNDElement(node)) {\n nodeToInsert = node.node();\n }\n return nodeToInsert;\n };\n\n const updateContainerByLayout = (layout, node, route, path) => {\n const nodeToInsert = getNodeToInsert(node);\n\n const cachedLayout = $layoutCache.get(nodeToInsert);\n if(cachedLayout) {\n if(cachedLayout === $currentLayout) {\n const layoutAnchor = getNodeAnchorForLayout(nodeToInsert, path);\n removeLastNodeInserted();\n $lastNodeInserted = nodeToInsert;\n layoutAnchor.replaceContent(nodeToInsert);\n return;\n }\n cleanContainer();\n $lastNodeInserted = nodeToInsert;\n $currentLayout = cachedLayout;\n const layoutAnchor = getNodeAnchorForLayout(nodeToInsert, path);\n layoutAnchor.replaceContent(nodeToInsert);\n container.appendChild($currentLayout);\n return;\n }\n cleanContainer();\n $lastNodeInserted = nodeToInsert;\n const anchor = getNodeAnchorForLayout(nodeToInsert, path);\n\n $currentLayout = ElementCreator.getChild(layout(anchor));\n $layoutCache.set(nodeToInsert, $currentLayout);\n container.appendChild($currentLayout);\n };\n\n const updateContainer = function(node, route, path) {\n const layout = route.layout();\n if(layout) {\n updateContainerByLayout(layout, node, route, path);\n return;\n }\n const nodeToInsert = getNodeToInsert(node);\n\n cleanContainer();\n container.appendChild(nodeToInsert);\n $lastNodeInserted = node;\n };\n\n const handleCurrentRouterState = function(state) {\n if(!state.route) {\n return;\n }\n\n const { route, params, query, path } = state;\n\n if($currentPath && $currentPath !== path) {\n $lifecycles.get($currentPath)?.onLeave?.();\n }\n\n if($cache.has(path)) {\n const cacheNode = $cache.get(path);\n updateContainer(cacheNode, route);\n\n $lifecycles.get(path)?.onEnter?.(params, query);\n $currentPath = path;\n\n return;\n }\n const pathLifecycles = {};\n $lifecycles.set(path, pathLifecycles);\n\n\n\n const Component = route.component();\n const node = Component({\n params,\n query,\n onEnter: (cb) => { pathLifecycles.onEnter = cb; },\n onLeave: (cb) => { pathLifecycles.onLeave = cb; },\n });\n $cache.set(path, node);\n updateContainer(node, route, path);\n\n pathLifecycles.onEnter?.(params, query);\n $currentPath = path;\n };\n\n router.subscribe(handleCurrentRouterState);\n\n handleCurrentRouterState(router.currentState());\n return container;\n}","import {Route} from './Route.js';\nimport Validator from '../core/utils/validator.js';\nimport RouterError from './errors/RouterError.js';\nimport {RouteGroupHelper} from './RouteGroupHelper.js';\nimport {trim} from '../core/utils/helpers.js';\nimport HashRouter from './modes/HashRouter.js';\nimport HistoryRouter from './modes/HistoryRouter.js';\nimport MemoryRouter from './modes/MemoryRouter.js';\nimport DebugManager from '../core/utils/debug-manager.js';\nimport {RouterComponent} from './RouterComponent.js';\n\nexport const DEFAULT_ROUTER_NAME = 'default';\n\n/**\n *\n * @param {{mode: 'memory'|'history'|'hash'}} $options\n * @class\n */\nexport default function Router($options = {}) {\n\n /** @type {Route[]} */\n const $routes = [];\n /** @type {{[string]: Route}} */\n const $routesByName = {};\n const $groupTree = [];\n const $listeners = [];\n const $currentState = { route: null, params: null, query: null, path: null, hash: null };\n\n if($options.mode === 'hash') {\n HashRouter.apply(this, []);\n } else if($options.mode === 'history') {\n HistoryRouter.apply(this, []);\n } else if($options.mode === 'memory') {\n MemoryRouter.apply(this, []);\n } else {\n throw new RouterError('Invalid router mode '+$options.mode);\n }\n\n const trigger = function(request, next) {\n for(const listener of $listeners) {\n try {\n listener(request);\n next && next(request);\n } catch (e) {\n DebugManager.warn('Route Listener', 'Error in listener:', e);\n }\n }\n };\n\n this.routes = () => [...$routes];\n this.currentState = () => ({ ...$currentState });\n\n /**\n *\n * @param {string} path\n * @param {Function} component\n * @param {{name:?string, middlewares:Function[], shouldRebuild:Boolean, with: Object, layout: Function }} options\n * @returns {this}\n */\n this.add = function(path, component, options) {\n const route = new Route(RouteGroupHelper.fullPath($groupTree, path), component, {\n ...options,\n middlewares: RouteGroupHelper.fullMiddlewares($groupTree, options?.middlewares || []),\n name: options?.name ? RouteGroupHelper.fullName($groupTree, options.name) : null,\n layout: options?.layout || RouteGroupHelper.layout($groupTree),\n });\n $routes.push(route);\n if(route.name()) {\n $routesByName[route.name()] = route;\n }\n return this;\n };\n\n /**\n * Groups routes under a common path prefix with shared options.\n *\n * @param {string} suffix - Path prefix to prepend to all routes in the group\n * @param {Object} options - Group configuration options\n * @param {Function[]} [options.middlewares] - Middlewares applied to all routes in group\n * @param {string} [options.name] - Name prefix for all routes in group\n * @param {Function} [options.layout] - Layout component for all routes in group\n * @param {Function} callback - Function that defines routes within the group\n * @returns {this} Router instance for chaining\n * @example\n * router.group('/admin', { middlewares: [authMiddleware], layout: AdminLayout }, () => {\n * router.add('/users', UsersPage, { name: 'users' });\n * router.add('/settings', SettingsPage, { name: 'settings' });\n * });\n */\n this.group = function(suffix, options, callback) {\n if(!Validator.isFunction(callback)) {\n throw new RouterError('Callback must be a function');\n }\n $groupTree.push({suffix, options});\n callback();\n $groupTree.pop();\n return this;\n };\n\n /**\n *\n * @param {string} name\n * @param {Object}params\n * @param {Object} query\n * @returns {*}\n */\n this.generateUrl = function(name, params = {}, query = {}) {\n const route = $routesByName[name];\n if(!route) {\n throw new RouterError(`Route not found for name: ${name}`);\n }\n return route.url({ params, query });\n };\n\n /**\n *\n * @param {string|{name:string,params?:Object, query?:Object }} target\n * @returns {{route:Route, params:Object, query:Object, path:string}}\n */\n this.resolve = function(target) {\n if(typeof target === 'string') {\n const route = $routesByName[target];\n if(route) {\n return {\n route,\n params: [],\n query: [],\n path: route.url({ name: target }),\n };\n }\n }\n if(Validator.isJson(target)) {\n const route = $routesByName[target.name];\n if(!route) {\n throw new RouterError(`Route not found for name: ${target.name}`);\n }\n return {\n route,\n params: target.params,\n query: target.query,\n path: route.url({ ...target }),\n };\n }\n\n const [urlPath, urlQuery] = target.split('?');\n const path = '/'+trim(urlPath, '/');\n let routeFound = null, params;\n\n for(const route of $routes) {\n params = route.match(path);\n if(params) {\n routeFound = route;\n break;\n }\n }\n if(!routeFound) {\n throw new RouterError(`Route not found for url: ${urlPath}`);\n }\n const queryParams = {};\n if(urlQuery) {\n const queries = new URLSearchParams(urlQuery).entries();\n for (const [key, value] of queries) {\n queryParams[key] = value;\n }\n }\n\n return { route: routeFound, params, query: queryParams, path: target };\n };\n\n /**\n *\n * @param {Function} listener\n * @returns {(function(): void)|*}\n */\n this.subscribe = function(listener) {\n if(!Validator.isFunction(listener)) {\n throw new RouterError('Listener must be a function');\n }\n $listeners.push(listener);\n return () => {\n $listeners.splice($listeners.indexOf(listener), 1);\n };\n };\n\n /**\n *\n * @param {Route} route\n * @param {Object} params\n * @param {Object} query\n * @param {string} path\n */\n this.handleRouteChange = function(route, params, query, path) {\n $currentState.route = route;\n $currentState.params = params;\n $currentState.query = query;\n $currentState.path = path;\n\n const middlewares = [...route.middlewares(), trigger];\n let currentIndex = 0;\n const request = { ...$currentState };\n\n const next = (editableRequest) => {\n currentIndex++;\n if(currentIndex >= middlewares.length) {\n return;\n }\n return middlewares[currentIndex](editableRequest || request, next);\n };\n return middlewares[currentIndex](request, next);\n };\n\n}\n\nRouter.routers = {};\n\n/**\n * Creates and initializes a new router instance.\n *\n * @param {Object} options - Router configuration\n * @param {'memory'|'history'|'hash'} options.mode - Routing mode\n * @param {string} [options.name] - Router name for multi-router apps\n * @param {string} [options.entry] - Initial route path\n * @param {Function} callback - Setup function that receives the router instance\n * @returns {Router} The configured router instance with mount() method\n * @example\n * const router = Router.create({ mode: 'history' }, (r) => {\n * r.add('/home', HomePage, { name: 'home' });\n * r.add('/about', AboutPage, { name: 'about' });\n * });\n * router.mount('#app');\n */\nRouter.create = function(options, callback) {\n if(!Validator.isFunction(callback)) {\n DebugManager.error('Router', 'Callback must be a function');\n throw new RouterError('Callback must be a function');\n }\n const router = new Router(options);\n Router.routers[options.name || DEFAULT_ROUTER_NAME] = router;\n callback(router);\n\n router.init(options.entry);\n\n router.mount = function(container) {\n if(Validator.isString(container)) {\n const mountContainer = document.querySelector(container);\n if(!mountContainer) {\n throw new RouterError(`Container not found for selector: ${container}`);\n }\n container = mountContainer;\n } else if(!Validator.isElement(container)) {\n throw new RouterError('Container must be a string or an Element');\n }\n\n return RouterComponent(router, container);\n };\n\n return router;\n};\n\nRouter.get = function(name) {\n const router = Router.routers[name || DEFAULT_ROUTER_NAME];\n if(!router) {\n throw new RouterError(`Router not found for name: ${name}`);\n }\n return router;\n};\n\nRouter.push = function(target, name = null) {\n return Router.get(name).push(target);\n};\n\nRouter.replace = function(target, name = null) {\n return Router.get(name).replace(target);\n};\n\nRouter.forward = function(name = null) {\n return Router.get(name).forward();\n};\nRouter.back = function(name = null) {\n return Router.get(name).back();\n};\n\nRouter.redirectTo = function(pathOrRouteName, params = null, name = null) {\n let target = pathOrRouteName;\n const router = Router.get(name);\n const route = router.resolve({ name: pathOrRouteName, params });\n if(route) {\n target = { name: pathOrRouteName, params};\n }\n return router.push(target);\n};\n","import Validator from '../core/utils/validator';\nimport {Link as NativeLink} from '../../elements';\nimport Router, {DEFAULT_ROUTER_NAME} from './Router';\nimport RouterError from './errors/RouterError';\n\n\nexport function Link(options, children){\n const { to, href, ...attributes } = options;\n if(href) {\n const router = Router.get();\n return NativeLink({ ...attributes, href}, children).nd.onPreventClick(() => {\n router.push(href);\n });\n }\n const target = typeof to === 'string' ? { name: to } : to;\n const routerName = target.router || DEFAULT_ROUTER_NAME;\n const router = Router.get(routerName);\n if(!router) {\n throw new RouterError('Router not found \"'+routerName+'\" for link \"'+target.name+'\"');\n }\n const url = router.generateUrl(target.name, target.params, target.query);\n return NativeLink({ ...attributes, href: url }, children).nd.onPreventClick(() => {\n router.push(url);\n });\n}\n\nLink.blank = function(attributes, children){\n return NativeLink({ ...attributes, target: '_blank'}, children);\n};","export default function NativeFetch($baseUrl) {\n\n const $interceptors = {\n request: [],\n response: [],\n };\n\n this.interceptors = {\n response: (callback) => {\n $interceptors.response.push(callback);\n },\n request: (callback) => {\n $interceptors.request.push(callback);\n },\n };\n\n this.fetch = async function(method, endpoint, params = {}, options = {}) {\n if(options.formData) {\n const formData = new FormData();\n for(const key in params) {\n formData.append(key, params[key]);\n }\n params = formData;\n }\n if(!endpoint.startsWith('http')) {\n endpoint = ($baseUrl.endsWith('/') ? $baseUrl : $baseUrl+'/') + endpoint;\n }\n let configs = {\n method,\n headers: {\n ...(options.headers || {}),\n },\n };\n if(params) {\n if(params instanceof FormData) {\n configs.body = params;\n }\n else {\n if(method !== 'GET') {\n configs.headers['Content-Type'] = 'application/json';\n configs.body = JSON.stringify(params);\n } else {\n const queryString = new URLSearchParams(params).toString();\n if (queryString) {\n endpoint = endpoint + (endpoint.includes('?') ? '&' : '?') + queryString;\n }\n }\n }\n }\n\n for(const interceptor of $interceptors.request) {\n configs = (await interceptor(configs, endpoint)) || configs;\n }\n\n let response = await fetch(endpoint, configs);\n\n for(const interceptor of $interceptors.response) {\n response = (await interceptor(response, endpoint)) || response;\n }\n\n const contentType = response.headers.get('content-type') || '';\n const data = contentType.includes('application/json')\n ? await response.json()\n : await response.text();\n\n if(!response.ok) {\n const error = new Error(data?.message || response.statusText);\n error.status = response.status;\n error.data = data;\n throw error;\n }\n\n return data;\n };\n\n\n this.post = function (endpoint, params = {}, options = {}) {\n return this.fetch('POST', endpoint, params, options);\n };\n this.put = function (endpoint, params = {}, options = {}) {\n return this.fetch('PUT', endpoint, params, options);\n };\n this.delete = function (endpoint, params = {}, options = {}) {\n return this.fetch('DELETE', endpoint, params, options);\n };\n this.get = function (endpoint, params = {}, options = {}) {\n return this.fetch('GET', endpoint, params, options);\n };\n};","import { once as _once, autoMemoize, autoOnce } from './memoize.js';\n\nexport const once = fn => autoOnce(fn);\nexport const singleton = fn => _once(fn);\nexport const memoize = fn => autoMemoize(fn);"],"names":["DebugManager","PluginsManager","withValidation","ArgTypes","attributesWrapper","once","memoize","SELF_RENDER","Link","NativeLink","_once"],"mappings":"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"}