native-document 1.0.117 → 1.0.118
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/native-document.components.min.js +1136 -1095
- package/dist/native-document.dev.js +1125 -1086
- package/dist/native-document.dev.js.map +1 -1
- package/dist/native-document.min.js +1 -1
- package/package.json +1 -1
- package/src/core/data/ObservableItem.js +1 -2
- package/src/core/wrappers/AttributesWrapper.js +0 -1
- package/src/core/wrappers/template-cloner/NodeCloner.js +55 -13
- package/src/core/wrappers/template-cloner/TemplateCloner.js +2 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-document.dev.js","sources":["../src/core/utils/debug-manager.js","../src/core/errors/NativeDocumentError.js","../src/core/data/ObservableChecker.js","../src/core/wrappers/DocumentObserver.js","../src/core/utils/plugins-manager.js","../src/core/wrappers/NDElement.js","../src/core/utils/validator.js","../src/core/wrappers/constants.js","../src/core/data/MemoryManager.js","../src/core/data/ObservableWhen.js","../src/core/utils/helpers.js","../src/core/utils/localstorage.js","../src/core/data/Store.js","../src/core/utils/formatters.js","../src/core/data/ObservableItem.js","../src/core/data/Observable.js","../src/core/wrappers/AttributesWrapper.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/ElementCreator.js","../src/core/elements/anchor.js","../src/core/utils/events.js","../src/core/wrappers/NdPrototype.js","../src/core/errors/ArgTypesError.js","../src/core/utils/args-types.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/prototypes.js","../src/core/utils/property-accumulator.js","../src/core/utils/memoize.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/observable-helpers/array.js","../src/core/data/observable-helpers/batch.js","../src/core/data/ObservableObject.js","../src/core/data/observable-helpers/object.js","../src/core/data/observable-helpers/computed.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/elements/index.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: false,\n\n enable() {\n this.enabled = true;\n console.log('🔍 NativeDocument Debug Mode enabled');\n },\n\n disable() {\n this.enabled = false;\n },\n\n log(category, message, data) {\n if (!this.enabled) return;\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 if (!this.enabled) return;\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}","/**\n *\n * @param {ObservableItem} $observable\n * @param {Function} $checker\n * @class ObservableChecker\n */\nexport default function ObservableChecker($observable, $checker) {\n this.observable = $observable;\n this.checker = $checker;\n this.unSubscriptions = [];\n}\n\nexport const ObservablePipe = ObservableChecker;\n\nObservableChecker.prototype.__$isObservableChecker = true;\n\n/**\n * Subscribes to changes in the checked/transformed value.\n *\n * @param {Function} callback - Function called with the transformed value when observable changes\n * @returns {Function} Unsubscribe function\n * @example\n * const count = Observable(5);\n * const doubled = count.check(n => n * 2);\n * doubled.subscribe(value => console.log(value)); // Logs: 10\n */\nObservableChecker.prototype.subscribe = function(callback) {\n const unSubscribe = this.observable.subscribe((value) => {\n callback && callback(this.checker(value));\n });\n this.unSubscriptions.push(unSubscribe);\n return unSubscribe;\n};\n\n/**\n * Creates a new ObservableChecker by applying another transformation.\n * Allows chaining transformations.\n *\n * @param {(value: *) => *} callback - Transformation function to apply to the current checked value\n * @returns {ObservableChecker} New ObservableChecker with chained transformation\n * @example\n * const count = Observable(5);\n * const result = count.check(n => n * 2).check(n => n + 1);\n * result.val(); // 11\n */\nObservableChecker.prototype.check = function(callback) {\n return this.observable.check(() => callback(this.val()));\n}\n\n/**\n * Gets the current transformed/checked value.\n *\n * @returns {*} The result of applying the checker function to the observable's current value\n * @example\n * const count = Observable(5);\n * const doubled = count.check(n => n * 2);\n * doubled.val(); // 10\n */\nObservableChecker.prototype.val = function() {\n return this.checker && this.checker(this.observable.val());\n}\n\n/**\n * Sets the value of the underlying observable (not the transformed value).\n *\n * @param {*} value - New value for the underlying observable\n * @example\n * const count = Observable(5);\n * const doubled = count.check(n => n * 2);\n * doubled.set(10); // Sets count to 10, doubled.val() returns 20\n */\nObservableChecker.prototype.set = function(value) {\n return this.observable.set(value);\n};\n\n/**\n * Manually triggers the underlying observable to notify subscribers.\n *\n * @example\n * const count = Observable(5);\n * const doubled = count.check(n => n * 2);\n * doubled.trigger(); // Notifies all subscribers\n */\nObservableChecker.prototype.trigger = function() {\n return this.observable.trigger();\n};\n\n/**\n * Cleans up the underlying observable and all its subscriptions.\n */\nObservableChecker.prototype.cleanup = function() {\n return this.observable.cleanup();\n};","const DocumentObserver = {\n mounted: new WeakMap(),\n beforeUnmount: new WeakMap(),\n mountedSupposedSize: 0,\n unmounted: new WeakMap(),\n unmountedSupposedSize: 0,\n observer: null,\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 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\nDocumentObserver.observer = new MutationObserver(DocumentObserver.checkMutation);\nDocumentObserver.observer.observe(document.body, {\n childList: true,\n subtree: true,\n});\n\nexport default DocumentObserver;","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 DocumentObserver from \"./DocumentObserver\";\nimport PluginsManager from \"../utils/plugins-manager\";\nimport NativeDocumentError from \"../errors/NativeDocumentError.js\";\nimport DebugManager from \"../utils/debug-manager.js\";\n\nexport function NDElement(element) {\n this.$element = element;\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('NDElementCreated', element, this);\n }\n}\n\nNDElement.prototype.__$isNDElement = true;\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] = 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.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\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 console.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 * 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};","import DebugManager from \"./debug-manager\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\nimport ObservableChecker from \"../data/ObservableChecker\";\nimport {NDElement} from \"../wrappers/NDElement\";\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?.__$isObservable;\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 || value instanceof ObservableChecker;\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 this.isObservable(child) ||\n this.isNDElement(child) ||\n ['string', 'number', 'boolean'].includes(typeof child);\n },\n isNDElement(child) {\n return child?.__$isNDElement || child instanceof NDElement;\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;","\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.__$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 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 { 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');","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};","import DebugManager from \"../../core/utils/debug-manager\";\nimport MemoryManager from \"./MemoryManager\";\nimport NativeDocumentError from \"../../core/errors/NativeDocumentError\";\nimport ObservableChecker from \"./ObservableChecker\";\nimport PluginsManager from \"../../core/utils/plugins-manager\";\nimport Validator from \"../../core/utils/validator\";\nimport {ObservableWhen} from \"./ObservableWhen\";\nimport {deepClone} from \"../utils/helpers\";\nimport {Store} from \"./Store\";\nimport { Formatters} from \"../utils/formatters\";\nimport {Observable} from \"./Observable\";\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.__$isObservable = true;\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.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.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.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\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();\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 * @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 * 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 = ObservableItem.prototype.check;\nObservableItem.prototype.is = ObservableItem.prototype.check;\nObservableItem.prototype.select = ObservableItem.prototype.check;\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 * 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 */\nObservableItem.prototype.when = function(value) {\n return new ObservableWhen(this, value);\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/**\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 Observable.computed(() => formatter(self.val(), localeObservable.val(), options),\n [self, localeObservable]\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};","import ObservableItem from './ObservableItem';\nimport MemoryManager from \"./MemoryManager\";\nimport NativeDocumentError from \"../../core/errors/NativeDocumentError\";\n\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\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","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.__$isObservable) {\n element.classes.toggle(className, value.val());\n value.subscribe((shouldAdd) => element.classes.toggle(className, shouldAdd));\n continue;\n }\n if(value.__$isObservableWhen) {\n element.classes.toggle(className, value.isActive());\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 data = null;\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 if(value.__$isObservable) {\n element.style[styleName] = value.val();\n value.subscribe((newValue) => element.style[styleName] = newValue);\n continue;\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;","\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\nString.prototype.toNdElement = function () {\n return ElementCreator.createStaticTextNode(null, this);\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 return this.$element ?? this.$build?.() ?? this.build?.() ?? null;\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 {bindAttributeWithObservable, bindBooleanAttribute} from \"../AttributesWrapper\";\nimport ObservableItem from \"../../data/ObservableItem\";\nimport TemplateBinding from \"../TemplateBinding\";\nimport {BOOLEAN_ATTRIBUTES} from \"../constants\";\n\n\nString.prototype.handleNdAttribute = function(element, attributeName) {\n element.setAttribute(attributeName, this);\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\nTemplateBinding.prototype.handleNdAttribute = function(element, attributeName) {\n this.$hydrate(element, attributeName);\n};\n","import Anchor from \"../elements/anchor\";\nimport Validator from \"../utils/validator\";\nimport AttributesWrapper, { bindClassAttribute, bindStyleAttribute } from \"./AttributesWrapper\";\nimport PluginsManager from \"../utils/plugins-manager\";\nimport './prototypes/nd-element-extensions';\nimport './prototypes/nd-element.transition.extensions';\nimport './prototypes/attributes-extensions';\n\nconst $nodeCache = new Map();\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 createFragment: (name) => {\n return Anchor('Fragment');\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};","import Validator from \"../utils/validator\";\nimport DebugManager from \"../utils/debug-manager\";\nimport {ElementCreator} from \"../wrappers/ElementCreator\";\n\n\nexport default function Anchor(name, isUniqueChild = false) {\n const anchorFragment = document.createDocumentFragment();\n anchorFragment.__Anchor__ = true;\n\n const anchorStart = document.createComment('Anchor Start : '+name);\n const anchorEnd = document.createComment('/ Anchor End '+name);\n\n anchorFragment.appendChild(anchorStart);\n anchorFragment.appendChild(anchorEnd);\n\n anchorFragment.nativeInsertBefore = anchorFragment.insertBefore;\n anchorFragment.nativeAppendChild = anchorFragment.appendChild;\n anchorFragment.nativeAppend = anchorFragment.append;\n\n const isParentUniqueChild = isUniqueChild\n ? () => true\n : (parent) => (parent.firstChild === anchorStart && parent.lastChild === anchorEnd)\n\n const insertBefore = function(parent, child, target) {\n const childElement = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n if(parent === anchorFragment) {\n parent.nativeInsertBefore(childElement, target);\n return;\n }\n if(isParentUniqueChild(parent) && target === anchorEnd) {\n parent.append(childElement, target);\n return;\n }\n parent.insertBefore(childElement, target);\n };\n\n anchorFragment.appendElement = function(child, before = null) {\n const parentNode = anchorStart.parentNode;\n const targetBefore = before || anchorEnd;\n if(parentNode === anchorFragment) {\n parentNode.nativeInsertBefore(child, targetBefore);\n return;\n }\n parentNode?.insertBefore(child, targetBefore);\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.append = function(...args ) {\n return anchorFragment.appendChild(args);\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 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\n anchorFragment.replaceContent = function(child) {\n const childElement = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n const parent = anchorEnd.parentNode;\n if(!parent) {\n return;\n }\n if(isParentUniqueChild(parent)) {\n parent.replaceChildren(anchorStart, childElement, anchorEnd);\n return;\n }\n anchorFragment.removeChildren();\n parent.insertBefore(childElement, anchorEnd);\n };\n\n anchorFragment.setContent = anchorFragment.replaceContent;\n\n anchorFragment.insertBefore = function(child, anchor = null) {\n anchorFragment.appendChild(child, anchor);\n };\n\n anchorFragment.endElement = function() {\n return anchorEnd;\n };\n\n anchorFragment.startElement = function() {\n return anchorStart;\n };\n anchorFragment.restore = function() {\n anchorFragment.appendChild(anchorFragment);\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 = () => {}","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) {\n this.$element.addEventListener(eventName, callback);\n return this;\n };\n})\n\nEVENTS_WITH_STOP.forEach(eventSourceName => {\n const eventName = eventSourceName.toLowerCase();\n NDElement.prototype['onStop'+eventSourceName] = function(callback = null) {\n _stop(this.$element, eventName, callback);\n return this;\n };\n NDElement.prototype['onPreventStop'+eventSourceName] = function(callback = null) {\n _preventStop(this.$element, eventName, callback);\n return this;\n };\n});\n\nEVENTS_WITH_PREVENT.forEach(eventSourceName => {\n const eventName = eventSourceName.toLowerCase();\n NDElement.prototype['onPrevent'+eventSourceName] = function(callback = null) {\n _prevent(this.$element, eventName, callback);\n return this;\n };\n});\n\nNDElement.prototype.on = function(name, callback, options) {\n this.$element.addEventListener(name.toLowerCase(), callback, options);\n return this;\n};\n\nconst _prevent = function(element, eventName, callback) {\n const handler = (event) => {\n event.preventDefault();\n callback && callback.call(element, event);\n };\n element.addEventListener(eventName, handler);\n return this;\n}\n\nconst _stop = function(element, eventName, callback) {\n const handler = (event) => {\n event.stopPropagation();\n callback && callback.call(element, event);\n };\n element.addEventListener(eventName, handler);\n return this;\n};\n\nconst _preventStop = function(element, eventName, callback) {\n const handler = (event) => {\n event.stopPropagation();\n event.preventDefault();\n callback && callback.call(element, event);\n };\n element.addEventListener(eventName, handler);\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});","\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 };","import Validator from \"../utils/validator\";\nimport Anchor from \"../elements/anchor\";\nimport {ElementCreator} from \"./ElementCreator\";\nimport './NdPrototype';\nimport {normalizeComponentArgs} from \"../utils/args-types\";\n\n/**\n *\n * @param {*} value\n * @returns {Text}\n */\nexport const createTextNode = (value) => {\n return (Validator.isObservable(value))\n ? ElementCreator.createObservableNode(null, value)\n : ElementCreator.createStaticTextNode(null, value);\n};\n\n\nconst 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 () => Anchor('');\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 steps.push((clonedNode, data) => {\n for(const methodName in this.$ndMethods) {\n clonedNode.nd[methodName](this.$ndMethods[methodName].bind(clonedNode, ...data));\n }\n });\n }\n if(this.$classes) {\n const cache = {};\n steps.push((clonedNode, data) => {\n ElementCreator.processClassAttribute(clonedNode, buildProperties(cache, this.$classes, data));\n });\n }\n if(this.$styles) {\n const cache = {};\n steps.push((clonedNode, data) => {\n ElementCreator.processStyleAttribute(clonedNode, buildProperties(cache, this.$styles, data));\n });\n }\n if(this.$attrs) {\n const cache = {};\n steps.push((clonedNode, data) => {\n ElementCreator.processAttributes(clonedNode, buildProperties(cache, this.$attrs, data));\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 const child = childNodes[i].dynamicCloneNode(data);\n clonedNode.appendChild(child);\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 const child = childNodes[i].dynamicCloneNode(data);\n clonedNode.appendChild(child);\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\";\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) {\n return $cacheNode;\n }\n for(const index in $components) {\n const updater = $components[index];\n updater(...data);\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(...args) {\n anchor.removeChildren();\n if(!fn) {\n anchor.append(args);\n return;\n }\n anchor.appendChild(fn(...args));\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 {withValidation} from \"./args-types.js\";\nimport {Observable} from \"../data/Observable\";\nimport Validator from \"./validator\";\nimport {NDElement} from \"../wrappers/NDElement\";\n\n\nDocumentFragment.prototype.__IS_FRAGMENT = true;\n\nFunction.prototype.args = function(...args) {\n return withValidation(this, args);\n};\n\nFunction.prototype.cached = function(...args) {\n let $cache;\n let getCache = () => $cache;\n return () => {\n if(!$cache) {\n $cache = this.apply(this, args);\n if($cache.cloneNode) {\n getCache = () => $cache.cloneNode(true);\n } else if($cache.$element) {\n getCache = () => new NDElement($cache.$element.cloneNode(true));\n }\n }\n return getCache();\n };\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\nString.prototype.use = function(args) {\n const value = this;\n\n return Observable.computed(() => {\n return value.replace(/\\$\\{(.*?)}/g, (match, key) => {\n const data = args[key];\n if(Validator.isObservable(data)) {\n return data.val();\n }\n return data;\n });\n }, Object.values(args));\n};\n\nString.prototype.resolveObservableTemplate = function() {\n if(!Validator.containsObservableReference(this)) {\n return this.valueOf();\n }\n return this.split(/(\\{\\{#ObItem::\\([0-9]+\\)\\}\\})/g).filter(Boolean).map((value) => {\n if(!Validator.containsObservableReference(value)) {\n return value;\n }\n const [_, id] = value.match(/\\{\\{#ObItem::\\(([0-9]+)\\)\\}\\}/);\n return Observable.getById(id);\n });\n}","import Validator from \"./validator\";\n\nexport const cssPropertyAccumulator = function(initialValue = {}) {\n let data = Validator.isString(initialValue) ? initialValue.split(';').filter(Boolean) : initialValue;\n const isArray = Validator.isArray(data);\n\n return {\n add(key, value) {\n if(isArray) {\n data.push(key+' : '+value);\n return;\n }\n data[key] = value;\n },\n value() {\n if(isArray) {\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 const isArray = Validator.isArray(data);\n\n return {\n add(key, value = true) {\n if(isArray) {\n data.push(key);\n return;\n }\n data[key] = value;\n },\n value() {\n if(isArray) {\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 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\";\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 console.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 {Observable} from \"./Observable.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 *\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\nmutationMethods.forEach((method) => {\n ObservableArray.prototype[method] = function(...values) {\n const result = this.$currentValue[method].apply(this.$currentValue, values);\n this.trigger({ action: method, args: values, result });\n return result;\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/**\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.$currentValue.length = 0;\n this.trigger({ action: 'clear' });\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.$currentValue.push.apply(this.$currentValue, values);\n this.trigger({ action: 'merge', args: values });\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 const value = this.$currentValue;\n const length = value.length;\n if(length < indexA || length < indexB) {\n return false;\n }\n if(indexB < indexA) {\n const temp = indexA;\n indexA = indexB;\n indexB = temp;\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 return true;\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 const deleted = this.$currentValue.splice(index, 1);\n if(deleted.length === 0) {\n return [];\n }\n this.trigger({ action: 'remove', args: [index], result: deleted[0] });\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.isEmpty = 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 * const adults = users.where({ age: (val) => val >= 18 });\n */\nObservableArray.prototype.where = function(predicates) {\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 = Observable.array();\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\nexport default ObservableArray;","import {Observable} from \"../Observable\";\nimport ObservableArray from \"../ObservableArray\";\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};","import Validator from \"../../../core/utils/validator\";\nimport {Observable} from \"../Observable\";\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};","import ObservableItem from \"./ObservableItem\";\nimport Validator from \"../utils/validator\";\nimport {nextTick} from \"../utils/helpers\";\nimport {Observable} from \"./Observable\";\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 Observable.json(item, configs);\n }\n if(Validator.isArray(item)) {\n return Observable.array(item, configs);\n }\n return Observable(item, configs);\n });\n this.$observables[key] = Observable.array(mappedItemValue, configs);\n continue;\n }\n this.$observables[key] = Observable.array(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') ? Observable.object(itemValue, configs) : Observable(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 Observable.init(item, configs);\n }\n return Observable(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 Observable.init(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 Validator from \"../../utils/validator\";\nimport {Observable} from \"../Observable\";\nimport {ObservableObject} from \"../ObservableObject\";\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(Validator.isObservable(data)) {\n return data.val();\n }\n if(Validator.isProxy(data)) {\n return data.$value;\n }\n if(Validator.isArray(data)) {\n const result = [];\n for(let i = 0, length = data.length; i < length; i++) {\n const item = data[i];\n result.push(Observable.value(item));\n }\n return result;\n }\n return data;\n};\n\nObservable.object = Observable.init;\nObservable.json = Observable.init;","import ObservableItem from \"../ObservableItem\";\nimport Validator from \"../../utils/validator\";\nimport NativeDocumentError from \"../..//errors/NativeDocumentError\";\nimport {Observable} from \"../Observable\";\nimport PluginsManager from \"../../utils/plugins-manager\";\nimport {nextTick} from \"../../utils/helpers\";\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 initialValue = callback();\n const observable = new ObservableItem(initialValue);\n const updatedValue = nextTick(() => observable.set(callback()));\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};","import {Observable} from \"../../data/Observable\";\nimport Validator from \"../../utils/validator\";\nimport Anchor from \"../../elements/anchor\";\nimport DebugManager from \"../../utils/debug-manager\";\nimport {getKey} from \"../../utils/helpers\";\nimport { ElementCreator } from \"../../wrappers/ElementCreator\";\nimport NativeDocumentError from \"../../errors/NativeDocumentError\";\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 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 \"../../elements/anchor\";\nimport {Observable} from \"../../data/Observable\";\nimport Validator from \"../../utils/validator\";\nimport { ElementCreator } from \"../../wrappers/ElementCreator\";\nimport NativeDocumentError from \"../../errors/NativeDocumentError\";\n\n\nconst CREATE_AND_CACHE_ACTIONS = new Set(['clear', 'push', 'unshift', 'replace']);\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 const element = Anchor('ForEach Array', configs.isParentUniqueChild);\n const blockEnd = element.endElement();\n const blockStart = element.startElement();\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 updateIndexObservers = (items, startFrom = 0) => {\n if(!isIndexRequired) {\n return;\n }\n let index = startFrom;\n for(let i = startFrom, length = items?.length; i < length; i++) {\n const cacheItem = cache.get(items[i]);\n if(!cacheItem) {\n continue;\n }\n cacheItem.indexObserver?.set(index);\n index++;\n }\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 const createWithIndexAndCache = (item, indexKey) => {\n const indexObserver = Observable(indexKey);\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\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 const cleanCache = (items) => {\n if(!isIndexRequired) {\n cache.clear();\n return;\n }\n if(configs.shouldKeepItemsInCache) {\n return;\n }\n for (const [itemAsKey, _] of cache.entries()) {\n if(items && items.includes(itemAsKey)) {\n continue;\n }\n removeCacheItem(itemAsKey, false);\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 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.appendElement(Actions.toFragment(items));\n },\n replace(items) {\n clear(items);\n Actions.add(items);\n },\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.appendElement(fragment, blockEnd);\n },\n removeOne(element, index) {\n removeCacheItem(element, true);\n },\n clear,\n merge(items) {\n Actions.add(items);\n },\n push(items) {\n let delay = 0;\n if(configs.pushDelay) {\n delay = configs.pushDelay(items) ?? 0;\n }\n\n Actions.add(items, delay);\n },\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.appendChild(fragment);\n fragment.replaceChildren();\n },\n unshift(values){\n element.insertBefore(Actions.toFragment(values), blockStart.nextSibling);\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 elementBeforeFirst = blockEnd;\n }\n garbageFragment.replaceChildren();\n\n if(values && values.length && elementBeforeFirst) {\n element.insertBefore(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 = blockEnd.parentNode;\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\n const buildContent = (items, _, operations) => {\n if(operations?.action === 'clear' || !items.length) {\n if(lastNumberOfItems === 0) {\n return;\n }\n clear();\n return;\n }\n selectBuildStrategy(operations?.action);\n\n if(!operations?.action) {\n if(lastNumberOfItems === 0) {\n Actions.add(items);\n return;\n }\n Actions.replace(items);\n }\n else if(Actions[operations.action]) {\n Actions[operations.action](operations.args, operations.result);\n }\n\n updateIndexObservers(items, 0);\n };\n\n if(data.val().length) {\n buildContent(data.val(), null, {action: null});\n }\n if(Validator.isObservable(data)) {\n data.subscribe(buildContent);\n }\n\n return element;\n}","import { Observable } from \"../../data/Observable\";\nimport Validator from \"../../utils/validator\";\nimport DebugManager from \"../../utils/debug-manager.js\";\nimport Anchor from \"../../elements/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)) && !Validator.isObservableWhenResult(condition)) {\n return DebugManager.warn('ShowIf', \"ShowIf : condition must be an Observable / \"+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 condition.subscribe(value => {\n if(value) {\n element.appendChild(getChildElement());\n } else {\n element.remove();\n }\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 \"../../elements/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 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, {\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', function(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 HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport * from './control/for-each';\nexport * from './control/for-each-array';\nexport * from './control/show-if';\nexport * from './control/show-when';\nexport * from './control/switch';\nexport * from './content-formatter';\nexport * from './description-list';\nexport * from './form';\nexport * from './html5-semantics';\nexport * from './img';\nexport * from './interactive';\nexport * from './list';\nexport * from './medias';\nexport * from './meta-data';\nexport * from './table';\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\n\n\n\n","import {trim} from \"../core/utils/helpers.js\";\n\nexport const RouteParamPatterns = {\n\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 if(Validator.isAnchor($lastNodeInserted)) {\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 layoutAnchor.replaceContent(nodeToInsert);\n return;\n }\n cleanContainer();\n $currentLayout = cachedLayout;\n const layoutAnchor = getNodeAnchorForLayout(nodeToInsert, path);\n layoutAnchor.replaceContent(nodeToInsert);\n container.appendChild($currentLayout);\n return;\n }\n cleanContainer();\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(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 console.log(target);\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","once","memoize","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/data/ObservableChecker.js","../src/core/wrappers/DocumentObserver.js","../src/core/utils/plugins-manager.js","../src/core/wrappers/NDElement.js","../src/core/utils/validator.js","../src/core/wrappers/constants.js","../src/core/data/MemoryManager.js","../src/core/data/ObservableWhen.js","../src/core/utils/helpers.js","../src/core/utils/formatters.js","../src/core/utils/localstorage.js","../src/core/data/ObservableItem.js","../src/core/data/Observable.js","../src/core/wrappers/AttributesWrapper.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/ElementCreator.js","../src/core/elements/anchor.js","../src/core/utils/events.js","../src/core/wrappers/NdPrototype.js","../src/core/errors/ArgTypesError.js","../src/core/utils/args-types.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/prototypes.js","../src/core/utils/property-accumulator.js","../src/core/utils/memoize.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/observable-helpers/array.js","../src/core/data/observable-helpers/batch.js","../src/core/data/ObservableObject.js","../src/core/data/observable-helpers/object.js","../src/core/data/observable-helpers/computed.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/elements/index.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: false,\n\n enable() {\n this.enabled = true;\n console.log('🔍 NativeDocument Debug Mode enabled');\n },\n\n disable() {\n this.enabled = false;\n },\n\n log(category, message, data) {\n if (!this.enabled) return;\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 if (!this.enabled) return;\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}","/**\n *\n * @param {ObservableItem} $observable\n * @param {Function} $checker\n * @class ObservableChecker\n */\nexport default function ObservableChecker($observable, $checker) {\n this.observable = $observable;\n this.checker = $checker;\n this.unSubscriptions = [];\n}\n\nexport const ObservablePipe = ObservableChecker;\n\nObservableChecker.prototype.__$isObservableChecker = true;\n\n/**\n * Subscribes to changes in the checked/transformed value.\n *\n * @param {Function} callback - Function called with the transformed value when observable changes\n * @returns {Function} Unsubscribe function\n * @example\n * const count = Observable(5);\n * const doubled = count.check(n => n * 2);\n * doubled.subscribe(value => console.log(value)); // Logs: 10\n */\nObservableChecker.prototype.subscribe = function(callback) {\n const unSubscribe = this.observable.subscribe((value) => {\n callback && callback(this.checker(value));\n });\n this.unSubscriptions.push(unSubscribe);\n return unSubscribe;\n};\n\n/**\n * Creates a new ObservableChecker by applying another transformation.\n * Allows chaining transformations.\n *\n * @param {(value: *) => *} callback - Transformation function to apply to the current checked value\n * @returns {ObservableChecker} New ObservableChecker with chained transformation\n * @example\n * const count = Observable(5);\n * const result = count.check(n => n * 2).check(n => n + 1);\n * result.val(); // 11\n */\nObservableChecker.prototype.check = function(callback) {\n return this.observable.check(() => callback(this.val()));\n}\n\n/**\n * Gets the current transformed/checked value.\n *\n * @returns {*} The result of applying the checker function to the observable's current value\n * @example\n * const count = Observable(5);\n * const doubled = count.check(n => n * 2);\n * doubled.val(); // 10\n */\nObservableChecker.prototype.val = function() {\n return this.checker && this.checker(this.observable.val());\n}\n\n/**\n * Sets the value of the underlying observable (not the transformed value).\n *\n * @param {*} value - New value for the underlying observable\n * @example\n * const count = Observable(5);\n * const doubled = count.check(n => n * 2);\n * doubled.set(10); // Sets count to 10, doubled.val() returns 20\n */\nObservableChecker.prototype.set = function(value) {\n return this.observable.set(value);\n};\n\n/**\n * Manually triggers the underlying observable to notify subscribers.\n *\n * @example\n * const count = Observable(5);\n * const doubled = count.check(n => n * 2);\n * doubled.trigger(); // Notifies all subscribers\n */\nObservableChecker.prototype.trigger = function() {\n return this.observable.trigger();\n};\n\n/**\n * Cleans up the underlying observable and all its subscriptions.\n */\nObservableChecker.prototype.cleanup = function() {\n return this.observable.cleanup();\n};","const DocumentObserver = {\n mounted: new WeakMap(),\n beforeUnmount: new WeakMap(),\n mountedSupposedSize: 0,\n unmounted: new WeakMap(),\n unmountedSupposedSize: 0,\n observer: null,\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 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\nDocumentObserver.observer = new MutationObserver(DocumentObserver.checkMutation);\nDocumentObserver.observer.observe(document.body, {\n childList: true,\n subtree: true,\n});\n\nexport default DocumentObserver;","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 DocumentObserver from \"./DocumentObserver\";\nimport PluginsManager from \"../utils/plugins-manager\";\nimport NativeDocumentError from \"../errors/NativeDocumentError.js\";\nimport DebugManager from \"../utils/debug-manager.js\";\n\nexport function NDElement(element) {\n this.$element = element;\n if(process.env.NODE_ENV === 'development') {\n PluginsManager.emit('NDElementCreated', element, this);\n }\n}\n\nNDElement.prototype.__$isNDElement = true;\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] = 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.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\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 console.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 * 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};","import DebugManager from \"./debug-manager\";\nimport NativeDocumentError from \"../errors/NativeDocumentError\";\nimport ObservableChecker from \"../data/ObservableChecker\";\nimport {NDElement} from \"../wrappers/NDElement\";\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?.__$isObservable;\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 || value instanceof ObservableChecker;\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 this.isObservable(child) ||\n this.isNDElement(child) ||\n ['string', 'number', 'boolean'].includes(typeof child);\n },\n isNDElement(child) {\n return child?.__$isNDElement || child instanceof NDElement;\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;","\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.__$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 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};","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};","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 ObservableChecker from \"./ObservableChecker\";\nimport PluginsManager from \"../../core/utils/plugins-manager\";\nimport Validator from \"../../core/utils/validator\";\nimport {ObservableWhen} from \"./ObservableWhen\";\nimport {deepClone} from \"../utils/helpers\";\nimport { Formatters} from \"../utils/formatters\";\nimport {Observable} from \"./Observable\";\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.__$isObservable = true;\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.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.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\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();\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 * @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 * 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 = ObservableItem.prototype.check;\nObservableItem.prototype.is = ObservableItem.prototype.check;\nObservableItem.prototype.select = ObservableItem.prototype.check;\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 * 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 */\nObservableItem.prototype.when = function(value) {\n return new ObservableWhen(this, value);\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/**\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 Observable.computed(() => formatter(self.val(), localeObservable.val(), options),\n [self, localeObservable]\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};","import ObservableItem from './ObservableItem';\nimport MemoryManager from \"./MemoryManager\";\nimport NativeDocumentError from \"../../core/errors/NativeDocumentError\";\n\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\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","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.__$isObservable) {\n element.classes.toggle(className, value.val());\n value.subscribe((shouldAdd) => element.classes.toggle(className, shouldAdd));\n continue;\n }\n if(value.__$isObservableWhen) {\n element.classes.toggle(className, value.isActive());\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 if(value.__$isObservable) {\n element.style[styleName] = value.val();\n value.subscribe((newValue) => element.style[styleName] = newValue);\n continue;\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;","\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\nString.prototype.toNdElement = function () {\n return ElementCreator.createStaticTextNode(null, this);\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 return this.$element ?? this.$build?.() ?? this.build?.() ?? null;\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 {bindAttributeWithObservable, bindBooleanAttribute} from \"../AttributesWrapper\";\nimport ObservableItem from \"../../data/ObservableItem\";\nimport TemplateBinding from \"../TemplateBinding\";\nimport {BOOLEAN_ATTRIBUTES} from \"../constants\";\n\n\nString.prototype.handleNdAttribute = function(element, attributeName) {\n element.setAttribute(attributeName, this);\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\nTemplateBinding.prototype.handleNdAttribute = function(element, attributeName) {\n this.$hydrate(element, attributeName);\n};\n","import Anchor from \"../elements/anchor\";\nimport Validator from \"../utils/validator\";\nimport AttributesWrapper, { bindClassAttribute, bindStyleAttribute } from \"./AttributesWrapper\";\nimport PluginsManager from \"../utils/plugins-manager\";\nimport './prototypes/nd-element-extensions';\nimport './prototypes/nd-element.transition.extensions';\nimport './prototypes/attributes-extensions';\n\nconst $nodeCache = new Map();\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 createFragment: (name) => {\n return Anchor('Fragment');\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};","import Validator from \"../utils/validator\";\nimport DebugManager from \"../utils/debug-manager\";\nimport {ElementCreator} from \"../wrappers/ElementCreator\";\n\n\nexport default function Anchor(name, isUniqueChild = false) {\n const anchorFragment = document.createDocumentFragment();\n anchorFragment.__Anchor__ = true;\n\n const anchorStart = document.createComment('Anchor Start : '+name);\n const anchorEnd = document.createComment('/ Anchor End '+name);\n\n anchorFragment.appendChild(anchorStart);\n anchorFragment.appendChild(anchorEnd);\n\n anchorFragment.nativeInsertBefore = anchorFragment.insertBefore;\n anchorFragment.nativeAppendChild = anchorFragment.appendChild;\n anchorFragment.nativeAppend = anchorFragment.append;\n\n const isParentUniqueChild = isUniqueChild\n ? () => true\n : (parent) => (parent.firstChild === anchorStart && parent.lastChild === anchorEnd)\n\n const insertBefore = function(parent, child, target) {\n const childElement = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n if(parent === anchorFragment) {\n parent.nativeInsertBefore(childElement, target);\n return;\n }\n if(isParentUniqueChild(parent) && target === anchorEnd) {\n parent.append(childElement, target);\n return;\n }\n parent.insertBefore(childElement, target);\n };\n\n anchorFragment.appendElement = function(child, before = null) {\n const parentNode = anchorStart.parentNode;\n const targetBefore = before || anchorEnd;\n if(parentNode === anchorFragment) {\n parentNode.nativeInsertBefore(child, targetBefore);\n return;\n }\n parentNode?.insertBefore(child, targetBefore);\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.append = function(...args ) {\n return anchorFragment.appendChild(args);\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 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\n anchorFragment.replaceContent = function(child) {\n const childElement = Validator.isElement(child) ? child : ElementCreator.getChild(child);\n const parent = anchorEnd.parentNode;\n if(!parent) {\n return;\n }\n if(isParentUniqueChild(parent)) {\n parent.replaceChildren(anchorStart, childElement, anchorEnd);\n return;\n }\n anchorFragment.removeChildren();\n parent.insertBefore(childElement, anchorEnd);\n };\n\n anchorFragment.setContent = anchorFragment.replaceContent;\n\n anchorFragment.insertBefore = function(child, anchor = null) {\n anchorFragment.appendChild(child, anchor);\n };\n\n anchorFragment.endElement = function() {\n return anchorEnd;\n };\n\n anchorFragment.startElement = function() {\n return anchorStart;\n };\n anchorFragment.restore = function() {\n anchorFragment.appendChild(anchorFragment);\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 = () => {}","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) {\n this.$element.addEventListener(eventName, callback);\n return this;\n };\n})\n\nEVENTS_WITH_STOP.forEach(eventSourceName => {\n const eventName = eventSourceName.toLowerCase();\n NDElement.prototype['onStop'+eventSourceName] = function(callback = null) {\n _stop(this.$element, eventName, callback);\n return this;\n };\n NDElement.prototype['onPreventStop'+eventSourceName] = function(callback = null) {\n _preventStop(this.$element, eventName, callback);\n return this;\n };\n});\n\nEVENTS_WITH_PREVENT.forEach(eventSourceName => {\n const eventName = eventSourceName.toLowerCase();\n NDElement.prototype['onPrevent'+eventSourceName] = function(callback = null) {\n _prevent(this.$element, eventName, callback);\n return this;\n };\n});\n\nNDElement.prototype.on = function(name, callback, options) {\n this.$element.addEventListener(name.toLowerCase(), callback, options);\n return this;\n};\n\nconst _prevent = function(element, eventName, callback) {\n const handler = (event) => {\n event.preventDefault();\n callback && callback.call(element, event);\n };\n element.addEventListener(eventName, handler);\n return this;\n}\n\nconst _stop = function(element, eventName, callback) {\n const handler = (event) => {\n event.stopPropagation();\n callback && callback.call(element, event);\n };\n element.addEventListener(eventName, handler);\n return this;\n};\n\nconst _preventStop = function(element, eventName, callback) {\n const handler = (event) => {\n event.stopPropagation();\n event.preventDefault();\n callback && callback.call(element, event);\n };\n element.addEventListener(eventName, handler);\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});","\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 };","import Validator from \"../utils/validator\";\nimport Anchor from \"../elements/anchor\";\nimport {ElementCreator} from \"./ElementCreator\";\nimport './NdPrototype';\nimport {normalizeComponentArgs} from \"../utils/args-types\";\n\n/**\n *\n * @param {*} value\n * @returns {Text}\n */\nexport const createTextNode = (value) => {\n return (Validator.isObservable(value))\n ? ElementCreator.createObservableNode(null, value)\n : ElementCreator.createStaticTextNode(null, value);\n};\n\n\nconst 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 () => Anchor('');\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 steps.push((clonedNode, data) => {\n clonedNode.nd[methodName](this.$ndMethods[methodName].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\";\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) {\n return $cacheNode;\n }\n for(const index in $components) {\n const updater = $components[index];\n updater(...data);\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(...args) {\n anchor.removeChildren();\n if(!fn) {\n anchor.append(args);\n return;\n }\n anchor.appendChild(fn(...args));\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 {withValidation} from \"./args-types.js\";\nimport {Observable} from \"../data/Observable\";\nimport Validator from \"./validator\";\nimport {NDElement} from \"../wrappers/NDElement\";\n\n\nDocumentFragment.prototype.__IS_FRAGMENT = true;\n\nFunction.prototype.args = function(...args) {\n return withValidation(this, args);\n};\n\nFunction.prototype.cached = function(...args) {\n let $cache;\n let getCache = () => $cache;\n return () => {\n if(!$cache) {\n $cache = this.apply(this, args);\n if($cache.cloneNode) {\n getCache = () => $cache.cloneNode(true);\n } else if($cache.$element) {\n getCache = () => new NDElement($cache.$element.cloneNode(true));\n }\n }\n return getCache();\n };\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\nString.prototype.use = function(args) {\n const value = this;\n\n return Observable.computed(() => {\n return value.replace(/\\$\\{(.*?)}/g, (match, key) => {\n const data = args[key];\n if(Validator.isObservable(data)) {\n return data.val();\n }\n return data;\n });\n }, Object.values(args));\n};\n\nString.prototype.resolveObservableTemplate = function() {\n if(!Validator.containsObservableReference(this)) {\n return this.valueOf();\n }\n return this.split(/(\\{\\{#ObItem::\\([0-9]+\\)\\}\\})/g).filter(Boolean).map((value) => {\n if(!Validator.containsObservableReference(value)) {\n return value;\n }\n const [_, id] = value.match(/\\{\\{#ObItem::\\(([0-9]+)\\)\\}\\}/);\n return Observable.getById(id);\n });\n}","import Validator from \"./validator\";\n\nexport const cssPropertyAccumulator = function(initialValue = {}) {\n let data = Validator.isString(initialValue) ? initialValue.split(';').filter(Boolean) : initialValue;\n const isArray = Validator.isArray(data);\n\n return {\n add(key, value) {\n if(isArray) {\n data.push(key+' : '+value);\n return;\n }\n data[key] = value;\n },\n value() {\n if(isArray) {\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 const isArray = Validator.isArray(data);\n\n return {\n add(key, value = true) {\n if(isArray) {\n data.push(key);\n return;\n }\n data[key] = value;\n },\n value() {\n if(isArray) {\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 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\";\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 console.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 {Observable} from \"./Observable.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 *\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\nmutationMethods.forEach((method) => {\n ObservableArray.prototype[method] = function(...values) {\n const result = this.$currentValue[method].apply(this.$currentValue, values);\n this.trigger({ action: method, args: values, result });\n return result;\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/**\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.$currentValue.length = 0;\n this.trigger({ action: 'clear' });\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.$currentValue.push.apply(this.$currentValue, values);\n this.trigger({ action: 'merge', args: values });\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 const value = this.$currentValue;\n const length = value.length;\n if(length < indexA || length < indexB) {\n return false;\n }\n if(indexB < indexA) {\n const temp = indexA;\n indexA = indexB;\n indexB = temp;\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 return true;\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 const deleted = this.$currentValue.splice(index, 1);\n if(deleted.length === 0) {\n return [];\n }\n this.trigger({ action: 'remove', args: [index], result: deleted[0] });\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.isEmpty = 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 * const adults = users.where({ age: (val) => val >= 18 });\n */\nObservableArray.prototype.where = function(predicates) {\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 = Observable.array();\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\nexport default ObservableArray;","import {Observable} from \"../Observable\";\nimport ObservableArray from \"../ObservableArray\";\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};","import Validator from \"../../../core/utils/validator\";\nimport {Observable} from \"../Observable\";\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};","import ObservableItem from \"./ObservableItem\";\nimport Validator from \"../utils/validator\";\nimport {nextTick} from \"../utils/helpers\";\nimport {Observable} from \"./Observable\";\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 Observable.json(item, configs);\n }\n if(Validator.isArray(item)) {\n return Observable.array(item, configs);\n }\n return Observable(item, configs);\n });\n this.$observables[key] = Observable.array(mappedItemValue, configs);\n continue;\n }\n this.$observables[key] = Observable.array(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') ? Observable.object(itemValue, configs) : Observable(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 Observable.init(item, configs);\n }\n return Observable(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 Observable.init(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 Validator from \"../../utils/validator\";\nimport {Observable} from \"../Observable\";\nimport {ObservableObject} from \"../ObservableObject\";\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(Validator.isObservable(data)) {\n return data.val();\n }\n if(Validator.isProxy(data)) {\n return data.$value;\n }\n if(Validator.isArray(data)) {\n const result = [];\n for(let i = 0, length = data.length; i < length; i++) {\n const item = data[i];\n result.push(Observable.value(item));\n }\n return result;\n }\n return data;\n};\n\nObservable.object = Observable.init;\nObservable.json = Observable.init;","import ObservableItem from \"../ObservableItem\";\nimport Validator from \"../../utils/validator\";\nimport NativeDocumentError from \"../..//errors/NativeDocumentError\";\nimport {Observable} from \"../Observable\";\nimport PluginsManager from \"../../utils/plugins-manager\";\nimport {nextTick} from \"../../utils/helpers\";\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 initialValue = callback();\n const observable = new ObservableItem(initialValue);\n const updatedValue = nextTick(() => observable.set(callback()));\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};","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 \"../../elements/anchor\";\nimport DebugManager from \"../../utils/debug-manager\";\nimport {getKey} from \"../../utils/helpers\";\nimport { ElementCreator } from \"../../wrappers/ElementCreator\";\nimport NativeDocumentError from \"../../errors/NativeDocumentError\";\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 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 \"../../elements/anchor\";\nimport {Observable} from \"../../data/Observable\";\nimport Validator from \"../../utils/validator\";\nimport { ElementCreator } from \"../../wrappers/ElementCreator\";\nimport NativeDocumentError from \"../../errors/NativeDocumentError\";\n\n\nconst CREATE_AND_CACHE_ACTIONS = new Set(['clear', 'push', 'unshift', 'replace']);\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 const element = Anchor('ForEach Array', configs.isParentUniqueChild);\n const blockEnd = element.endElement();\n const blockStart = element.startElement();\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 updateIndexObservers = (items, startFrom = 0) => {\n if(!isIndexRequired) {\n return;\n }\n let index = startFrom;\n for(let i = startFrom, length = items?.length; i < length; i++) {\n const cacheItem = cache.get(items[i]);\n if(!cacheItem) {\n continue;\n }\n cacheItem.indexObserver?.set(index);\n index++;\n }\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 const createWithIndexAndCache = (item, indexKey) => {\n const indexObserver = Observable(indexKey);\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\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 const cleanCache = (items) => {\n if(!isIndexRequired) {\n cache.clear();\n return;\n }\n if(configs.shouldKeepItemsInCache) {\n return;\n }\n for (const [itemAsKey, _] of cache.entries()) {\n if(items && items.includes(itemAsKey)) {\n continue;\n }\n removeCacheItem(itemAsKey, false);\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 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.appendElement(Actions.toFragment(items));\n },\n replace(items) {\n clear(items);\n Actions.add(items);\n },\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.appendElement(fragment, blockEnd);\n },\n removeOne(element, index) {\n removeCacheItem(element, true);\n },\n clear,\n merge(items) {\n Actions.add(items);\n },\n push(items) {\n let delay = 0;\n if(configs.pushDelay) {\n delay = configs.pushDelay(items) ?? 0;\n }\n\n Actions.add(items, delay);\n },\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.appendChild(fragment);\n fragment.replaceChildren();\n },\n unshift(values){\n element.insertBefore(Actions.toFragment(values), blockStart.nextSibling);\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 elementBeforeFirst = blockEnd;\n }\n garbageFragment.replaceChildren();\n\n if(values && values.length && elementBeforeFirst) {\n element.insertBefore(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 = blockEnd.parentNode;\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\n const buildContent = (items, _, operations) => {\n if(operations?.action === 'clear' || !items.length) {\n if(lastNumberOfItems === 0) {\n return;\n }\n clear();\n return;\n }\n selectBuildStrategy(operations?.action);\n\n if(!operations?.action) {\n if(lastNumberOfItems === 0) {\n Actions.add(items);\n return;\n }\n Actions.replace(items);\n }\n else if(Actions[operations.action]) {\n Actions[operations.action](operations.args, operations.result);\n }\n\n updateIndexObservers(items, 0);\n };\n\n if(data.val().length) {\n buildContent(data.val(), null, {action: null});\n }\n if(Validator.isObservable(data)) {\n data.subscribe(buildContent);\n }\n\n return element;\n}","import { Observable } from \"../../data/Observable\";\nimport Validator from \"../../utils/validator\";\nimport DebugManager from \"../../utils/debug-manager.js\";\nimport Anchor from \"../../elements/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)) && !Validator.isObservableWhenResult(condition)) {\n return DebugManager.warn('ShowIf', \"ShowIf : condition must be an Observable / \"+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 condition.subscribe(value => {\n if(value) {\n element.appendChild(getChildElement());\n } else {\n element.remove();\n }\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 \"../../elements/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 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, {\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', function(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 HtmlElementWrapper from \"../wrappers/HtmlElementWrapper\";\n\nexport * from './control/for-each';\nexport * from './control/for-each-array';\nexport * from './control/show-if';\nexport * from './control/show-when';\nexport * from './control/switch';\nexport * from './content-formatter';\nexport * from './description-list';\nexport * from './form';\nexport * from './html5-semantics';\nexport * from './img';\nexport * from './interactive';\nexport * from './list';\nexport * from './medias';\nexport * from './meta-data';\nexport * from './table';\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\n\n\n\n","import {trim} from \"../core/utils/helpers.js\";\n\nexport const RouteParamPatterns = {\n\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 if(Validator.isAnchor($lastNodeInserted)) {\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 layoutAnchor.replaceContent(nodeToInsert);\n return;\n }\n cleanContainer();\n $currentLayout = cachedLayout;\n const layoutAnchor = getNodeAnchorForLayout(nodeToInsert, path);\n layoutAnchor.replaceContent(nodeToInsert);\n container.appendChild($currentLayout);\n return;\n }\n cleanContainer();\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(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 console.log(target);\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","once","memoize","Link","NativeLink","_once"],"mappings":"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"}
|