elit 3.3.3 → 3.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/dist/build.d.mts +1 -1
  2. package/dist/build.js +1 -0
  3. package/dist/build.js.map +1 -0
  4. package/dist/build.mjs +1 -0
  5. package/dist/build.mjs.map +1 -0
  6. package/dist/chokidar.js +1 -0
  7. package/dist/chokidar.js.map +1 -0
  8. package/dist/chokidar.mjs +1 -0
  9. package/dist/chokidar.mjs.map +1 -0
  10. package/dist/cli.js +4687 -34
  11. package/dist/config.d.mts +3 -1
  12. package/dist/config.d.ts +3 -1
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +1 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/config.mjs +1 -0
  17. package/dist/config.mjs.map +1 -0
  18. package/dist/coverage.d.mts +85 -0
  19. package/dist/coverage.d.ts +76 -0
  20. package/dist/coverage.d.ts.map +1 -0
  21. package/dist/coverage.js +1549 -0
  22. package/dist/coverage.js.map +1 -0
  23. package/dist/coverage.mjs +1520 -0
  24. package/dist/coverage.mjs.map +1 -0
  25. package/dist/database.d.mts +31 -6
  26. package/dist/database.d.ts +31 -6
  27. package/dist/database.d.ts.map +1 -1
  28. package/dist/database.js +60 -33
  29. package/dist/database.js.map +1 -0
  30. package/dist/database.mjs +60 -33
  31. package/dist/database.mjs.map +1 -0
  32. package/dist/dom.js +1 -0
  33. package/dist/dom.js.map +1 -0
  34. package/dist/dom.mjs +1 -0
  35. package/dist/dom.mjs.map +1 -0
  36. package/dist/el.js +1 -0
  37. package/dist/el.js.map +1 -0
  38. package/dist/el.mjs +1 -0
  39. package/dist/el.mjs.map +1 -0
  40. package/dist/fs.js +1 -0
  41. package/dist/fs.js.map +1 -0
  42. package/dist/fs.mjs +1 -0
  43. package/dist/fs.mjs.map +1 -0
  44. package/dist/hmr.js +1 -0
  45. package/dist/hmr.js.map +1 -0
  46. package/dist/hmr.mjs +1 -0
  47. package/dist/hmr.mjs.map +1 -0
  48. package/dist/http.js +1 -0
  49. package/dist/http.js.map +1 -0
  50. package/dist/http.mjs +1 -0
  51. package/dist/http.mjs.map +1 -0
  52. package/dist/https.d.mts +1 -1
  53. package/dist/https.js +1 -0
  54. package/dist/https.js.map +1 -0
  55. package/dist/https.mjs +1 -0
  56. package/dist/https.mjs.map +1 -0
  57. package/dist/index.d.mts +1 -1
  58. package/dist/index.js +1 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/index.mjs +1 -0
  61. package/dist/index.mjs.map +1 -0
  62. package/dist/mime-types.js +1 -0
  63. package/dist/mime-types.js.map +1 -0
  64. package/dist/mime-types.mjs +1 -0
  65. package/dist/mime-types.mjs.map +1 -0
  66. package/dist/path.js +1 -0
  67. package/dist/path.js.map +1 -0
  68. package/dist/path.mjs +1 -0
  69. package/dist/path.mjs.map +1 -0
  70. package/dist/router.js +1 -0
  71. package/dist/router.js.map +1 -0
  72. package/dist/router.mjs +1 -0
  73. package/dist/router.mjs.map +1 -0
  74. package/dist/runtime.js +1 -0
  75. package/dist/runtime.js.map +1 -0
  76. package/dist/runtime.mjs +1 -0
  77. package/dist/runtime.mjs.map +1 -0
  78. package/dist/{server-Cz3z-5ls.d.mts → server-BFTzgJpO.d.mts} +62 -1
  79. package/dist/{server-BG2CaVMh.d.ts → server-CIXtexNS.d.ts} +62 -1
  80. package/dist/server.d.mts +1 -1
  81. package/dist/server.d.ts +9 -0
  82. package/dist/server.d.ts.map +1 -1
  83. package/dist/server.js +12 -0
  84. package/dist/server.js.map +1 -0
  85. package/dist/server.mjs +12 -0
  86. package/dist/server.mjs.map +1 -0
  87. package/dist/state.d.mts +1 -1
  88. package/dist/state.js +1 -0
  89. package/dist/state.js.map +1 -0
  90. package/dist/state.mjs +1 -0
  91. package/dist/state.mjs.map +1 -0
  92. package/dist/style.js +1 -0
  93. package/dist/style.js.map +1 -0
  94. package/dist/style.mjs +1 -0
  95. package/dist/style.mjs.map +1 -0
  96. package/dist/test-globals.d.ts +184 -0
  97. package/dist/test-reporter.d.mts +77 -0
  98. package/dist/test-reporter.d.ts +73 -0
  99. package/dist/test-reporter.d.ts.map +1 -0
  100. package/dist/test-reporter.js +726 -0
  101. package/dist/test-reporter.js.map +1 -0
  102. package/dist/test-reporter.mjs +696 -0
  103. package/dist/test-reporter.mjs.map +1 -0
  104. package/dist/test-runtime.d.mts +122 -0
  105. package/dist/test-runtime.d.ts +120 -0
  106. package/dist/test-runtime.d.ts.map +1 -0
  107. package/dist/test-runtime.js +1292 -0
  108. package/dist/test-runtime.js.map +1 -0
  109. package/dist/test-runtime.mjs +1269 -0
  110. package/dist/test-runtime.mjs.map +1 -0
  111. package/dist/test.d.mts +39 -0
  112. package/dist/test.d.ts +38 -0
  113. package/dist/test.d.ts.map +1 -0
  114. package/dist/test.js +4966 -0
  115. package/dist/test.js.map +1 -0
  116. package/dist/test.mjs +4944 -0
  117. package/dist/test.mjs.map +1 -0
  118. package/dist/types.d.mts +62 -1
  119. package/dist/types.d.ts +52 -0
  120. package/dist/types.d.ts.map +1 -1
  121. package/dist/types.js +1 -0
  122. package/dist/types.js.map +1 -0
  123. package/dist/types.mjs +1 -0
  124. package/dist/types.mjs.map +1 -0
  125. package/dist/ws.js +1 -0
  126. package/dist/ws.js.map +1 -0
  127. package/dist/ws.mjs +1 -0
  128. package/dist/ws.mjs.map +1 -0
  129. package/dist/wss.js +1 -0
  130. package/dist/wss.js.map +1 -0
  131. package/dist/wss.mjs +1 -0
  132. package/dist/wss.mjs.map +1 -0
  133. package/package.json +37 -5
  134. package/src/cli.ts +165 -1
  135. package/src/config.ts +3 -1
  136. package/src/coverage.ts +1479 -0
  137. package/src/database.ts +71 -35
  138. package/src/server.ts +12 -0
  139. package/src/test-globals.d.ts +184 -0
  140. package/src/test-reporter.ts +609 -0
  141. package/src/test-runtime.ts +1359 -0
  142. package/src/test.ts +368 -0
  143. package/src/types.ts +59 -0
package/dist/state.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { StateOptions, State, VNode, VirtualListController, Child, Props } from './types.mjs';
1
+ import { State, VNode, Props, StateOptions, VirtualListController, Child } from './types.mjs';
2
2
  import 'node:events';
3
3
  import 'events';
4
4
  import 'http';
package/dist/state.js CHANGED
@@ -1060,3 +1060,4 @@ var bindChecked = (state) => ({
1060
1060
  text,
1061
1061
  throttle
1062
1062
  });
1063
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/state.ts","../src/dom.ts"],"sourcesContent":["/**\n * Elit - State Management\n */\n\nimport type { State, StateOptions, VNode, VirtualListController, Child, Props } from './types';\nimport { dom } from './dom';\n\n// State management helpers\nexport const createState = <T>(initial: T, options?: StateOptions): State<T> =>\n dom.createState(initial, options);\n\nexport const computed = <T extends any[], R>(\n states: { [K in keyof T]: State<T[K]> },\n fn: (...values: T) => R\n): State<R> => dom.computed(states, fn);\n\nexport const effect = (fn: () => void): void => dom.effect(fn);\n\n// Performance helpers\nexport const batchRender = (container: string | HTMLElement, vNodes: VNode[]): HTMLElement =>\n dom.batchRender(container, vNodes);\n\nexport const renderChunked = (\n container: string | HTMLElement,\n vNodes: VNode[],\n chunkSize?: number,\n onProgress?: (current: number, total: number) => void\n): HTMLElement => dom.renderChunked(container, vNodes, chunkSize, onProgress);\n\nexport const createVirtualList = <T>(\n container: HTMLElement,\n items: T[],\n renderItem: (item: T, index: number) => VNode,\n itemHeight?: number,\n bufferSize?: number\n): VirtualListController => dom.createVirtualList(container, items, renderItem, itemHeight, bufferSize);\n\nexport const lazy = <T extends any[], R>(loadFn: () => Promise<(...args: T) => R>) =>\n dom.lazy(loadFn);\n\nexport const cleanupUnused = (root: HTMLElement): number =>\n dom.cleanupUnusedElements(root);\n\n// Throttle helper\nexport const throttle = <T extends any[]>(fn: (...args: T) => void, delay: number) => {\n let timer: NodeJS.Timeout | null = null;\n return (...args: T) => {\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n fn(...args);\n }, delay);\n }\n };\n};\n\n// Debounce helper\nexport const debounce = <T extends any[]>(fn: (...args: T) => void, delay: number) => {\n let timer: NodeJS.Timeout | null = null;\n return (...args: T) => {\n timer && clearTimeout(timer);\n timer = setTimeout(() => fn(...args), delay);\n };\n};\n\n// ===== Shared State - syncs with elit-server =====\n\ntype StateChangeCallback<T = any> = (value: T, oldValue: T) => void;\n\ninterface StateMessage {\n type: 'state:init' | 'state:update' | 'state:subscribe' | 'state:unsubscribe' | 'state:change';\n key: string;\n value?: any;\n timestamp?: number;\n}\n\n/**\n * Shared State - syncs with elit-server\n */\nexport class SharedState<T = any> {\n private localState: State<T>;\n private ws: WebSocket | null = null;\n private pendingUpdates: T[] = [];\n private previousValue: T;\n\n constructor(\n public readonly key: string,\n defaultValue: T,\n private wsUrl?: string\n ) {\n this.localState = createState(defaultValue);\n this.previousValue = defaultValue;\n this.connect();\n }\n\n /**\n * Get current value\n */\n get value(): T {\n return this.localState.value;\n }\n\n /**\n * Set new value and sync to server\n */\n set value(newValue: T) {\n this.previousValue = this.localState.value;\n this.localState.value = newValue;\n this.sendToServer(newValue);\n }\n\n /**\n * Get the underlying Elit State (for reactive binding)\n */\n get state(): State<T> {\n return this.localState;\n }\n\n /**\n * Subscribe to changes (returns Elit State for reactive)\n */\n onChange(callback: StateChangeCallback<T>): () => void {\n return this.localState.subscribe((newValue) => {\n const oldValue = this.previousValue;\n this.previousValue = newValue;\n callback(newValue, oldValue);\n });\n }\n\n /**\n * Update value using a function\n */\n update(updater: (current: T) => T): void {\n this.value = updater(this.value);\n }\n\n /**\n * Connect to WebSocket\n */\n private connect(): void {\n if (typeof window === 'undefined') return;\n\n const url = this.wsUrl || `ws://${location.host}`;\n this.ws = new WebSocket(url);\n\n this.ws.addEventListener('open', () => {\n this.subscribe();\n\n // Send pending updates\n while (this.pendingUpdates.length > 0) {\n const value = this.pendingUpdates.shift();\n this.sendToServer(value!);\n }\n });\n\n this.ws.addEventListener('message', (event) => {\n this.handleMessage(event.data);\n });\n\n this.ws.addEventListener('close', () => {\n // Reconnect after delay\n setTimeout(() => this.connect(), 1000);\n });\n\n this.ws.addEventListener('error', (error) => {\n console.error('[SharedState] WebSocket error:', error);\n });\n }\n\n /**\n * Subscribe to server state\n */\n private subscribe(): void {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) return;\n\n this.ws.send(JSON.stringify({\n type: 'state:subscribe',\n key: this.key\n }));\n }\n\n /**\n * Handle message from server\n */\n private handleMessage(data: string): void {\n try {\n const msg = JSON.parse(data) as StateMessage;\n\n if (msg.key !== this.key) return;\n\n if (msg.type === 'state:init' || msg.type === 'state:update') {\n // Update local state without sending back to server\n this.localState.value = msg.value;\n }\n } catch (error) {\n // Ignore parse errors (could be HMR messages)\n }\n }\n\n /**\n * Send value to server\n */\n private sendToServer(value: T): void {\n if (!this.ws) return;\n\n if (this.ws.readyState !== WebSocket.OPEN) {\n // Queue update for when connection is ready\n this.pendingUpdates.push(value);\n return;\n }\n\n this.ws.send(JSON.stringify({\n type: 'state:change',\n key: this.key,\n value\n }));\n }\n\n /**\n * Disconnect\n */\n disconnect(): void {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n /**\n * Destroy state and cleanup\n */\n destroy(): void {\n this.disconnect();\n this.localState.destroy();\n }\n}\n\n/**\n * Create a shared state that syncs with elit-server\n */\nexport function createSharedState<T>(\n key: string,\n defaultValue: T,\n wsUrl?: string\n): SharedState<T> {\n return new SharedState(key, defaultValue, wsUrl);\n}\n\n/**\n * Shared State Manager for managing multiple shared states\n */\nclass SharedStateManager {\n private states = new Map<string, SharedState<any>>();\n\n /**\n * Create or get a shared state\n */\n create<T>(key: string, defaultValue: T, wsUrl?: string): SharedState<T> {\n if (this.states.has(key)) {\n return this.states.get(key) as SharedState<T>;\n }\n\n const state = new SharedState<T>(key, defaultValue, wsUrl);\n this.states.set(key, state);\n return state;\n }\n\n /**\n * Get existing state\n */\n get<T>(key: string): SharedState<T> | undefined {\n return this.states.get(key) as SharedState<T>;\n }\n\n /**\n * Delete a state\n */\n delete(key: string): boolean {\n const state = this.states.get(key);\n if (state) {\n state.destroy();\n return this.states.delete(key);\n }\n return false;\n }\n\n /**\n * Clear all states\n */\n clear(): void {\n this.states.forEach(state => state.destroy());\n this.states.clear();\n }\n}\n\n// Export singleton instance\nexport const sharedStateManager = new SharedStateManager();\n\n// ===== Reactive Rendering Helpers =====\n\n// Helper function to schedule RAF updates (reused in reactive and reactiveAs)\nconst scheduleRAFUpdate = (rafId: number | null, updateFn: () => void): number => {\n rafId && cancelAnimationFrame(rafId);\n return requestAnimationFrame(() => {\n updateFn();\n });\n};\n\n// Helper function to render content to fragment (reused in reactive and reactiveAs)\nconst renderToFragment = (content: VNode | Child | Child[], isVNode?: boolean): DocumentFragment => {\n const fragment = document.createDocumentFragment();\n\n if (Array.isArray(content)) {\n // Handle array of children\n for (const child of content) {\n dom.renderToDOM(child, fragment);\n }\n } else if (isVNode && content && typeof content === 'object' && 'tagName' in content) {\n const { children } = content as VNode;\n for (const child of children) {\n dom.renderToDOM(child, fragment);\n }\n } else {\n dom.renderToDOM(content, fragment);\n }\n\n return fragment;\n};\n\n// Helper function to update element props (reused in reactive)\nconst updateElementProps = (element: HTMLElement | SVGElement, props: Props): void => {\n for (const key in props) {\n const value = props[key];\n if (key === 'ref') continue;\n\n if (key === 'class' || key === 'className') {\n (element as HTMLElement).className = Array.isArray(value) ? value.join(' ') : (value || '');\n } else if (key === 'style' && typeof value === 'object') {\n const s = (element as HTMLElement).style;\n for (const k in value) (s as any)[k] = value[k];\n } else if (key.startsWith('on')) {\n (element as any)[key.toLowerCase()] = value;\n } else if (value != null && value !== false) {\n element.setAttribute(key, String(value === true ? '' : value));\n } else {\n element.removeAttribute(key);\n }\n }\n};\n\n// Reactive element helpers\nexport const reactive = <T>(state: State<T>, renderFn: (value: T) => VNode | Child | Child[]): VNode => {\n let rafId: number | null = null;\n let elementRef: HTMLElement | SVGElement | null = null;\n let placeholder: Comment | null = null;\n let isInDOM = true;\n\n const initialResult = renderFn(state.value);\n const isVNodeResult = initialResult && typeof initialResult === 'object' && 'tagName' in initialResult;\n const initialIsNull = initialResult == null || initialResult === false;\n\n const updateElement = () => {\n if (!elementRef && !placeholder) return;\n\n const newResult = renderFn(state.value);\n const resultIsNull = newResult == null || newResult === false;\n\n if (resultIsNull) {\n if (isInDOM && elementRef) {\n placeholder = document.createComment('reactive');\n elementRef.parentNode?.replaceChild(placeholder, elementRef);\n isInDOM = false;\n }\n } else {\n if (!isInDOM && placeholder && elementRef) {\n placeholder.parentNode?.replaceChild(elementRef, placeholder);\n placeholder = null;\n isInDOM = true;\n }\n\n if (elementRef) {\n const isCurrentVNode = !!(isVNodeResult && newResult && typeof newResult === 'object' && 'tagName' in newResult);\n if (isCurrentVNode) {\n const { props } = newResult as VNode;\n updateElementProps(elementRef, props);\n }\n const fragment = renderToFragment(newResult as any, isCurrentVNode);\n elementRef.textContent = '';\n elementRef.appendChild(fragment);\n dom.getElementCache().set(elementRef, true);\n }\n }\n };\n\n state.subscribe(() => {\n rafId = scheduleRAFUpdate(rafId, () => {\n updateElement();\n rafId = null;\n });\n });\n\n const refCallback = (el: HTMLElement | SVGElement) => {\n elementRef = el;\n if (initialIsNull && el.parentNode) {\n placeholder = document.createComment('reactive');\n el.parentNode.replaceChild(placeholder, el);\n isInDOM = false;\n }\n };\n\n if (isVNodeResult) {\n const vnode = initialResult as VNode;\n return {\n tagName: vnode.tagName,\n props: { ...vnode.props, ref: refCallback },\n children: vnode.children\n };\n }\n\n // Handle array result - wrap in fragment-like VNode\n const initialChildren = Array.isArray(initialResult) ? initialResult : [initialResult];\n\n // Use span with display: contents as wrapper (doesn't affect layout)\n return { tagName: 'span', props: { ref: refCallback, style: { display: 'contents' } }, children: initialChildren };\n};\n\n// Reactive element with custom wrapper tag\nexport const reactiveAs = <T>(\n tagName: string,\n state: State<T>,\n renderFn: (value: T) => VNode | Child | Child[],\n props: Props = {}\n): VNode => {\n let rafId: number | null = null;\n let elementRef: HTMLElement | SVGElement | null = null;\n\n state.subscribe(() => {\n rafId = scheduleRAFUpdate(rafId, () => {\n if (elementRef) {\n const newResult = renderFn(state.value);\n\n if (newResult == null || newResult === false) {\n (elementRef as HTMLElement).style.display = 'none';\n elementRef.textContent = '';\n } else {\n (elementRef as HTMLElement).style.display = '';\n const fragment = renderToFragment(newResult as any, false);\n elementRef.textContent = '';\n elementRef.appendChild(fragment);\n }\n dom.getElementCache().set(elementRef, true);\n }\n rafId = null;\n });\n });\n\n const refCallback = (el: HTMLElement | SVGElement) => {\n elementRef = el;\n };\n\n const initialResult = renderFn(state.value);\n const initialChildren = Array.isArray(initialResult) ? initialResult : [initialResult];\n\n return { tagName, props: { ...props, ref: refCallback }, children: initialChildren };\n};\n\nexport const text = (state: State<any> | any): VNode | string =>\n (state && state.value !== undefined)\n ? reactive(state, v => ({ tagName: 'span', props: {}, children: [String(v)] }))\n : String(state);\n\nexport const bindValue = <T extends string | number>(state: State<T>): Props => ({\n value: state.value,\n oninput: (e: Event) => { state.value = (e.target as HTMLInputElement).value as T; }\n});\n\nexport const bindChecked = (state: State<boolean>): Props => ({\n checked: state.value,\n onchange: (e: Event) => { state.value = (e.target as HTMLInputElement).checked; }\n});\n","/**\n * Elit - DomNode Core Class\n */\n\nimport type { VNode, Child, Children, Props, State, StateOptions, VirtualListController, JsonNode, VNodeJson } from './types';\n\n/**\n * Helper: Resolve element from string ID or HTMLElement (eliminates duplication in render methods)\n */\nfunction resolveElement(rootElement: string | HTMLElement): HTMLElement | null {\n return typeof rootElement === 'string'\n ? document.getElementById(rootElement.replace('#', ''))\n : rootElement;\n}\n\n/**\n * Helper: Ensure element exists or throw error (eliminates duplication in validation)\n */\nfunction ensureElement(el: HTMLElement | null, rootElement: string | HTMLElement): HTMLElement {\n if (!el) {\n throw new Error(`Element not found: ${rootElement}`);\n }\n return el;\n}\n\n/**\n * Helper: Check if child should be skipped (eliminates duplication in child rendering)\n */\nfunction shouldSkipChild(child: any): boolean {\n return child == null || child === false;\n}\n\n/**\n * Helper: Check if value is primitive JSON type (eliminates duplication in JSON conversion)\n */\nfunction isPrimitiveJson(json: any): json is string | number | boolean | null | undefined {\n return json == null || typeof json === 'boolean' || typeof json === 'string' || typeof json === 'number';\n}\n\nexport class DomNode {\n private elementCache = new WeakMap<Element, boolean>();\n\n createElement(tagName: string, props: Props = {}, children: Children = []): VNode {\n return { tagName, props, children };\n }\n\n renderToDOM(vNode: Child, parent: HTMLElement | SVGElement | DocumentFragment): void {\n if (vNode == null || vNode === false) return;\n\n // Handle primitive values (strings, numbers)\n if (typeof vNode !== 'object') {\n parent.appendChild(document.createTextNode(String(vNode)));\n return;\n }\n\n // Handle arrays (Child[])\n if (Array.isArray(vNode)) {\n for (const child of vNode) {\n this.renderToDOM(child, parent);\n }\n return;\n }\n\n // Handle VNode\n const { tagName, props, children } = vNode;\n\n // Handle fragment (empty tagName) - render children directly to parent\n if (!tagName) {\n // Fragments don't have their own element, so skip ref handling\n // The ref will be handled by the wrapper element created by reactive()\n // Render children directly to parent\n for (const child of children) {\n if (shouldSkipChild(child)) continue;\n\n if (Array.isArray(child)) {\n for (const c of child) {\n !shouldSkipChild(c) && this.renderToDOM(c, parent);\n }\n } else {\n this.renderToDOM(child, parent);\n }\n }\n return;\n }\n\n const isSVG = tagName === 'svg' || (tagName[0] === 's' && tagName[1] === 'v' && tagName[2] === 'g') ||\n (parent as any).namespaceURI === 'http://www.w3.org/2000/svg';\n\n const el = isSVG\n ? document.createElementNS('http://www.w3.org/2000/svg', tagName.replace('svg', '').toLowerCase() || tagName)\n : document.createElement(tagName);\n\n for (const key in props) {\n const value = props[key];\n if (value == null || value === false) continue;\n\n const c = key.charCodeAt(0);\n // class or className (c=99)\n if (c === 99 && (key.length < 6 || key[5] === 'N')) {\n const classValue = Array.isArray(value) ? value.join(' ') : value;\n isSVG ? (el as SVGElement).setAttribute('class', classValue) : (el as HTMLElement).className = classValue;\n }\n // style (s=115)\n else if (c === 115 && key.length === 5) {\n if (typeof value === 'string') {\n (el as HTMLElement).style.cssText = value;\n } else {\n const s = (el as HTMLElement).style;\n for (const k in value) (s as any)[k] = value[k];\n }\n }\n // on* events (o=111, n=110)\n else if (c === 111 && key.charCodeAt(1) === 110) {\n (el as any)[key.toLowerCase()] = value;\n }\n // dangerouslySetInnerHTML (d=100)\n else if (c === 100 && key.length > 20) {\n (el as HTMLElement).innerHTML = value.__html;\n }\n // ref (r=114)\n else if (c === 114 && key.length === 3) {\n setTimeout(() => {\n typeof value === 'function' ? value(el as HTMLElement) : (value.current = el as HTMLElement);\n }, 0);\n }\n else {\n el.setAttribute(key, value === true ? '' : String(value));\n }\n }\n\n const len = children.length;\n if (!len) {\n parent.appendChild(el);\n return;\n }\n\n const renderChildren = (target: HTMLElement | SVGElement | DocumentFragment) => {\n for (let i = 0; i < len; i++) {\n const child = children[i];\n if (shouldSkipChild(child)) continue;\n\n if (Array.isArray(child)) {\n for (let j = 0, cLen = child.length; j < cLen; j++) {\n const c = child[j];\n !shouldSkipChild(c) && this.renderToDOM(c, target);\n }\n } else {\n this.renderToDOM(child, target);\n }\n }\n };\n\n if (len > 30) {\n const fragment = document.createDocumentFragment();\n renderChildren(fragment);\n el.appendChild(fragment);\n } else {\n renderChildren(el);\n }\n\n parent.appendChild(el);\n }\n\n render(rootElement: string | HTMLElement, vNode: VNode): HTMLElement {\n const el = ensureElement(resolveElement(rootElement), rootElement);\n\n // Clear existing content before rendering\n el.innerHTML = '';\n\n if (vNode.children && vNode.children.length > 500) {\n const fragment = document.createDocumentFragment();\n this.renderToDOM(vNode, fragment);\n el.appendChild(fragment);\n } else {\n this.renderToDOM(vNode, el);\n }\n return el;\n }\n\n batchRender(rootElement: string | HTMLElement, vNodes: VNode[]): HTMLElement {\n const el = ensureElement(resolveElement(rootElement), rootElement);\n\n const len = vNodes.length;\n\n if (len > 3000) {\n const fragment = document.createDocumentFragment();\n let processed = 0;\n const chunkSize = 1500;\n\n const processChunk = (): void => {\n const end = Math.min(processed + chunkSize, len);\n for (let i = processed; i < end; i++) {\n this.renderToDOM(vNodes[i], fragment);\n }\n processed = end;\n\n if (processed >= len) {\n el.appendChild(fragment);\n } else {\n requestAnimationFrame(processChunk);\n }\n };\n\n processChunk();\n } else {\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < len; i++) {\n this.renderToDOM(vNodes[i], fragment);\n }\n el.appendChild(fragment);\n }\n return el;\n }\n\n renderChunked(\n rootElement: string | HTMLElement,\n vNodes: VNode[],\n chunkSize = 5000,\n onProgress?: (current: number, total: number) => void\n ): HTMLElement {\n const el = ensureElement(resolveElement(rootElement), rootElement);\n\n const len = vNodes.length;\n let index = 0;\n\n const renderChunk = (): void => {\n const end = Math.min(index + chunkSize, len);\n const fragment = document.createDocumentFragment();\n\n for (let i = index; i < end; i++) {\n this.renderToDOM(vNodes[i], fragment);\n }\n\n el.appendChild(fragment);\n index = end;\n\n if (onProgress) onProgress(index, len);\n\n if (index < len) {\n requestAnimationFrame(renderChunk);\n }\n };\n\n requestAnimationFrame(renderChunk);\n return el;\n }\n\n renderToHead(...vNodes: Array<VNode | VNode[]>): HTMLHeadElement | null {\n const head = document.head;\n if (head) {\n for (const vNode of vNodes.flat()) {\n vNode && this.renderToDOM(vNode, head);\n }\n }\n return head;\n }\n\n addStyle(cssText: string): HTMLStyleElement {\n const el = document.createElement('style');\n el.textContent = cssText;\n return document.head.appendChild(el);\n }\n\n addMeta(attrs: Record<string, string>): HTMLMetaElement {\n const el = document.createElement('meta');\n for (const k in attrs) el.setAttribute(k, attrs[k]);\n return document.head.appendChild(el);\n }\n\n addLink(attrs: Record<string, string>): HTMLLinkElement {\n const el = document.createElement('link');\n for (const k in attrs) el.setAttribute(k, attrs[k]);\n return document.head.appendChild(el);\n }\n\n setTitle(text: string): string {\n return document.title = text;\n }\n\n // Reactive State Management\n createState<T>(initialValue: T, options: StateOptions = {}): State<T> {\n let value = initialValue;\n const listeners = new Set<(value: T) => void>();\n let updateTimer: NodeJS.Timeout | null = null;\n const { throttle = 0, deep = false } = options;\n\n const notify = () => listeners.forEach(fn => fn(value));\n\n const scheduleUpdate = () => {\n if (throttle > 0) {\n if (!updateTimer) {\n updateTimer = setTimeout(() => {\n updateTimer = null;\n notify();\n }, throttle);\n }\n } else {\n notify();\n }\n };\n\n return {\n get value() { return value; },\n set value(newValue: T) {\n const changed = deep ? JSON.stringify(value) !== JSON.stringify(newValue) : value !== newValue;\n if (changed) {\n value = newValue;\n scheduleUpdate();\n }\n },\n subscribe(fn: (value: T) => void) {\n listeners.add(fn);\n return () => listeners.delete(fn);\n },\n destroy() {\n listeners.clear();\n updateTimer && clearTimeout(updateTimer);\n }\n };\n }\n\n computed<T extends any[], R>(states: { [K in keyof T]: State<T[K]> }, computeFn: (...values: T) => R): State<R> {\n const values = states.map(s => s.value) as unknown as T;\n const result = this.createState(computeFn(...values));\n\n states.forEach((state, index) => {\n state.subscribe((newValue: any) => {\n values[index] = newValue;\n result.value = computeFn(...values);\n });\n });\n\n return result;\n }\n\n effect(stateFn: () => void): void {\n stateFn();\n }\n\n // Virtual scrolling helper for large lists\n createVirtualList<T>(\n container: HTMLElement,\n items: T[],\n renderItem: (item: T, index: number) => VNode,\n itemHeight = 50,\n bufferSize = 5\n ): VirtualListController {\n const viewportHeight = container.clientHeight;\n const totalHeight = items.length * itemHeight;\n let scrollTop = 0;\n\n const getVisibleRange = (): { start: number; end: number } => {\n const start = Math.max(0, Math.floor(scrollTop / itemHeight) - bufferSize);\n const end = Math.min(items.length, Math.ceil((scrollTop + viewportHeight) / itemHeight) + bufferSize);\n return { start, end };\n };\n\n const render = (): void => {\n const { start, end } = getVisibleRange();\n const wrapper = document.createElement('div');\n wrapper.style.cssText = `height:${totalHeight}px;position:relative`;\n\n for (let i = start; i < end; i++) {\n const itemEl = document.createElement('div');\n itemEl.style.cssText = `position:absolute;top:${i * itemHeight}px;height:${itemHeight}px;width:100%`;\n this.renderToDOM(renderItem(items[i], i), itemEl);\n wrapper.appendChild(itemEl);\n }\n\n container.innerHTML = '';\n container.appendChild(wrapper);\n };\n\n const scrollHandler = (): void => {\n scrollTop = container.scrollTop;\n requestAnimationFrame(render);\n };\n\n container.addEventListener('scroll', scrollHandler);\n\n render();\n return {\n render,\n destroy: () => {\n container.removeEventListener('scroll', scrollHandler);\n container.innerHTML = '';\n }\n };\n }\n\n // Lazy load components\n lazy<T extends any[], R>(loadFn: () => Promise<(...args: T) => R>): (...args: T) => Promise<R | VNode> {\n let component: ((...args: T) => R) | null = null;\n let loading = false;\n\n return async (...args: T): Promise<R | VNode> => {\n if (!component && !loading) {\n loading = true;\n component = await loadFn();\n loading = false;\n }\n return component ? component(...args) : { tagName: 'div', props: { class: 'loading' }, children: ['Loading...'] };\n };\n }\n\n // Memory management - cleanup unused elements\n cleanupUnusedElements(root: HTMLElement): number {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);\n const toRemove: Element[] = [];\n\n while (walker.nextNode()) {\n const node = walker.currentNode as Element;\n if (node.id && node.id.startsWith('r') && !this.elementCache.has(node)) {\n toRemove.push(node);\n }\n }\n\n toRemove.forEach(el => el.remove());\n return toRemove.length;\n }\n\n // Server-Side Rendering - convert VNode to HTML string\n renderToString(vNode: Child, options: { pretty?: boolean; indent?: number } = {}): string {\n const { pretty = false, indent = 0 } = options;\n const indentStr = pretty ? ' '.repeat(indent) : '';\n const newLine = pretty ? '\\n' : '';\n\n let resolvedVNode = this.resolveStateValue(vNode);\n resolvedVNode = this.unwrapReactive(resolvedVNode);\n\n if (Array.isArray(resolvedVNode)) {\n return resolvedVNode.map(child => this.renderToString(child, options)).join('');\n }\n\n if (typeof resolvedVNode !== 'object' || resolvedVNode === null) {\n if (resolvedVNode === null || resolvedVNode === undefined || resolvedVNode === false) {\n return '';\n }\n return this.escapeHtml(String(resolvedVNode));\n }\n\n const { tagName, props, children } = resolvedVNode;\n const isSelfClosing = this.isSelfClosingTag(tagName);\n\n let html = `${indentStr}<${tagName}`;\n\n const attrs = this.propsToAttributes(props);\n if (attrs) {\n html += ` ${attrs}`;\n }\n\n if (isSelfClosing) {\n html += ` />${newLine}`;\n return html;\n }\n\n html += '>';\n\n if (props.dangerouslySetInnerHTML) {\n html += props.dangerouslySetInnerHTML.__html;\n html += `</${tagName}>${newLine}`;\n return html;\n }\n\n if (children && children.length > 0) {\n const resolvedChildren = children.map((c: Child) => {\n const resolved = this.resolveStateValue(c);\n return this.unwrapReactive(resolved);\n });\n\n const hasComplexChildren = resolvedChildren.some(\n (c: any) => typeof c === 'object' && c !== null && !Array.isArray(c) && 'tagName' in c\n );\n\n if (pretty && hasComplexChildren) {\n html += newLine;\n for (const child of resolvedChildren) {\n if (shouldSkipChild(child)) continue;\n\n if (Array.isArray(child)) {\n for (const c of child) {\n if (!shouldSkipChild(c)) {\n html += this.renderToString(c, { pretty, indent: indent + 1 });\n }\n }\n } else {\n html += this.renderToString(child, { pretty, indent: indent + 1 });\n }\n }\n html += indentStr;\n } else {\n for (const child of resolvedChildren) {\n if (shouldSkipChild(child)) continue;\n\n if (Array.isArray(child)) {\n for (const c of child) {\n if (!shouldSkipChild(c)) {\n html += this.renderToString(c, { pretty: false, indent: 0 });\n }\n }\n } else {\n html += this.renderToString(child, { pretty: false, indent: 0 });\n }\n }\n }\n }\n\n html += `</${tagName}>${newLine}`;\n return html;\n }\n\n private resolveStateValue(value: any): any {\n if (value && typeof value === 'object' && 'value' in value && 'subscribe' in value) {\n return value.value;\n }\n return value;\n }\n\n private isReactiveWrapper(vNode: any): boolean {\n if (!vNode || typeof vNode !== 'object' || !vNode.tagName) {\n return false;\n }\n return vNode.tagName === 'span' &&\n vNode.props?.id &&\n typeof vNode.props.id === 'string' &&\n vNode.props.id.match(/^r[a-z0-9]{9}$/);\n }\n\n private unwrapReactive(vNode: any): Child {\n if (!this.isReactiveWrapper(vNode)) {\n return vNode;\n }\n\n const children = vNode.children;\n if (!children || children.length === 0) {\n return '';\n }\n\n if (children.length === 1) {\n const child = children[0];\n\n if (child && typeof child === 'object' && child.tagName === 'span') {\n const props = child.props;\n const hasNoProps = !props || Object.keys(props).length === 0;\n const hasSingleStringChild = child.children &&\n child.children.length === 1 &&\n typeof child.children[0] === 'string';\n\n if (hasNoProps && hasSingleStringChild) {\n return child.children[0];\n }\n }\n\n return this.unwrapReactive(child);\n }\n\n return children.map((c: Child) => this.unwrapReactive(c));\n }\n\n private escapeHtml(text: string): string {\n const htmlEscapes: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;'\n };\n return text.replace(/[&<>\"']/g, char => htmlEscapes[char]);\n }\n\n private isSelfClosingTag(tagName: string): boolean {\n const selfClosingTags = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'link', 'meta', 'param', 'source', 'track', 'wbr'\n ]);\n return selfClosingTags.has(tagName.toLowerCase());\n }\n\n private propsToAttributes(props: Props): string {\n const attrs: string[] = [];\n\n for (const key in props) {\n if (key === 'children' || key === 'dangerouslySetInnerHTML' || key === 'ref') {\n continue;\n }\n\n let value = props[key];\n value = this.resolveStateValue(value);\n\n if (value == null || value === false) continue;\n\n if (key.startsWith('on') && typeof value === 'function') {\n continue;\n }\n\n if (key === 'className' || key === 'class') {\n const className = Array.isArray(value) ? value.join(' ') : value;\n if (className) {\n attrs.push(`class=\"${this.escapeHtml(String(className))}\"`);\n }\n continue;\n }\n\n if (key === 'style') {\n const styleStr = this.styleToString(value);\n if (styleStr) {\n attrs.push(`style=\"${this.escapeHtml(styleStr)}\"`);\n }\n continue;\n }\n\n if (value === true) {\n attrs.push(key);\n continue;\n }\n\n attrs.push(`${key}=\"${this.escapeHtml(String(value))}\"`);\n }\n\n return attrs.join(' ');\n }\n\n private styleToString(style: any): string {\n if (typeof style === 'string') {\n return style;\n }\n\n if (typeof style === 'object' && style !== null) {\n const styles: string[] = [];\n for (const key in style) {\n const cssKey = key.replace(/([A-Z])/g, '-$1').toLowerCase();\n styles.push(`${cssKey}:${style[key]}`);\n }\n return styles.join(';');\n }\n\n return '';\n }\n\n private isState(value: any): value is State<any> {\n return value && typeof value === 'object' && 'value' in value && 'subscribe' in value && typeof value.subscribe === 'function';\n }\n\n private reactiveNodes = new Map<State<any>, { node: Text | null, renderFn: (v: any) => Child }>();\n\n private createReactiveChild(state: State<any>, renderFn: (value: any) => Child): Child {\n const currentValue = renderFn(state.value);\n\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n const entry = { node: null as Text | null, renderFn };\n this.reactiveNodes.set(state, entry);\n\n state.subscribe(() => {\n if (entry.node && entry.node.parentNode) {\n const newValue = renderFn(state.value);\n entry.node.textContent = String(newValue ?? '');\n }\n });\n }\n\n return currentValue;\n }\n\n jsonToVNode(json: JsonNode | string | number | boolean | null | undefined | State<any>): Child {\n if (this.isState(json)) {\n return this.createReactiveChild(json, (v: any) => v);\n }\n\n if (isPrimitiveJson(json)) {\n return json as Child;\n }\n\n const { tag, attributes = {}, children } = json;\n\n const props: Props = {};\n for (const key in attributes) {\n const value = attributes[key];\n if (key === 'class') {\n props.className = this.isState(value) ? value.value : value;\n } else {\n props[key] = this.isState(value) ? value.value : value;\n }\n }\n\n const childrenArray: Children = [];\n if (children != null) {\n if (Array.isArray(children)) {\n for (const child of children) {\n if (this.isState(child)) {\n childrenArray.push(this.createReactiveChild(child, (v: any) => v));\n } else {\n const converted = this.jsonToVNode(child);\n if (converted != null && converted !== false) {\n childrenArray.push(converted);\n }\n }\n }\n } else if (this.isState(children)) {\n childrenArray.push(this.createReactiveChild(children, (v: any) => v));\n } else if (typeof children === 'object' && 'tag' in children) {\n const converted = this.jsonToVNode(children);\n if (converted != null && converted !== false) {\n childrenArray.push(converted);\n }\n } else {\n childrenArray.push(children as Child);\n }\n }\n\n return { tagName: tag, props, children: childrenArray };\n }\n\n vNodeJsonToVNode(json: VNodeJson | State<any>): Child {\n if (this.isState(json)) {\n return this.createReactiveChild(json, (v: any) => v);\n }\n\n if (isPrimitiveJson(json)) {\n return json as Child;\n }\n\n const { tagName, props = {}, children = [] } = json;\n\n const resolvedProps: Props = {};\n for (const key in props) {\n const value = props[key];\n resolvedProps[key] = this.isState(value) ? value.value : value;\n }\n\n const childrenArray: Children = [];\n for (const child of children) {\n if (this.isState(child)) {\n childrenArray.push(this.createReactiveChild(child, (v: any) => v));\n } else {\n const converted = this.vNodeJsonToVNode(child);\n if (converted != null && converted !== false) {\n childrenArray.push(converted);\n }\n }\n }\n\n return { tagName, props: resolvedProps, children: childrenArray };\n }\n\n renderJson(rootElement: string | HTMLElement, json: JsonNode): HTMLElement {\n const vNode = this.jsonToVNode(json);\n if (!vNode || typeof vNode !== 'object' || !('tagName' in vNode)) {\n throw new Error('Invalid JSON structure');\n }\n return this.render(rootElement, vNode as VNode);\n }\n\n renderVNode(rootElement: string | HTMLElement, json: VNodeJson): HTMLElement {\n const vNode = this.vNodeJsonToVNode(json);\n if (!vNode || typeof vNode !== 'object' || !('tagName' in vNode)) {\n throw new Error('Invalid VNode JSON structure');\n }\n return this.render(rootElement, vNode as VNode);\n }\n\n renderJsonToString(json: JsonNode, options: { pretty?: boolean; indent?: number } = {}): string {\n const vNode = this.jsonToVNode(json);\n return this.renderToString(vNode, options);\n }\n\n renderVNodeToString(json: VNodeJson, options: { pretty?: boolean; indent?: number } = {}): string {\n const vNode = this.vNodeJsonToVNode(json);\n return this.renderToString(vNode, options);\n }\n\n\n // Generate complete HTML document as string (for SSR)\n renderToHTMLDocument(vNode: Child, options: {\n title?: string;\n meta?: Array<Record<string, string>>;\n links?: Array<Record<string, string>>;\n scripts?: Array<{ src?: string; content?: string; async?: boolean; defer?: boolean; type?: string }>;\n styles?: Array<{ href?: string; content?: string }>;\n lang?: string;\n head?: string;\n bodyAttrs?: Record<string, string>;\n pretty?: boolean;\n } = {}): string {\n const { title = '', meta = [], links = [], scripts = [], styles = [], lang = 'en', head = '', bodyAttrs = {}, pretty = false } = options;\n const nl = pretty ? '\\n' : '';\n const indent = pretty ? ' ' : '';\n const indent2 = pretty ? ' ' : '';\n\n let html = `<!DOCTYPE html>${nl}<html lang=\"${lang}\">${nl}${indent}<head>${nl}${indent2}<meta charset=\"UTF-8\">${nl}${indent2}<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">${nl}`;\n if (title) html += `${indent2}<title>${this.escapeHtml(title)}</title>${nl}`;\n\n for (const m of meta) {\n html += `${indent2}<meta`;\n for (const k in m) html += ` ${k}=\"${this.escapeHtml(m[k])}\"`;\n html += `>${nl}`;\n }\n\n for (const l of links) {\n html += `${indent2}<link`;\n for (const k in l) html += ` ${k}=\"${this.escapeHtml(l[k])}\"`;\n html += `>${nl}`;\n }\n\n for (const s of styles) {\n if (s.href) {\n html += `${indent2}<link rel=\"stylesheet\" href=\"${this.escapeHtml(s.href)}\">${nl}`;\n } else if (s.content) {\n html += `${indent2}<style>${s.content}</style>${nl}`;\n }\n }\n\n if (head) html += head + nl;\n html += `${indent}</head>${nl}${indent}<body`;\n for (const k in bodyAttrs) html += ` ${k}=\"${this.escapeHtml(bodyAttrs[k])}\"`;\n html += `>${nl}`;\n html += this.renderToString(vNode, { pretty, indent: 2 });\n\n for (const script of scripts) {\n html += `${indent2}<script`;\n if (script.type) html += ` type=\"${this.escapeHtml(script.type)}\"`;\n if (script.async) html += ` async`;\n if (script.defer) html += ` defer`;\n if (script.src) {\n html += ` src=\"${this.escapeHtml(script.src)}\"></script>${nl}`;\n } else if (script.content) {\n html += `>${script.content}</script>${nl}`;\n } else {\n html += `></script>${nl}`;\n }\n }\n\n html += `${indent}</body>${nl}</html>`;\n return html;\n }\n\n // Expose elementCache for reactive updates\n getElementCache(): WeakMap<Element, boolean> {\n return this.elementCache;\n }\n}\n\nexport const dom = new DomNode();\n\n// Export helper functions for convenience\nexport const render = dom.render.bind(dom);\nexport const renderToString = dom.renderToString.bind(dom);\nexport const mount = render; // alias for render\n"],"mappings":"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","names":["text","throttle","render"]}
package/dist/state.mjs CHANGED
@@ -1016,3 +1016,4 @@ export {
1016
1016
  text,
1017
1017
  throttle
1018
1018
  };
1019
+ //# sourceMappingURL=state.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/dom.ts","../src/state.ts"],"sourcesContent":["/**\n * Elit - DomNode Core Class\n */\n\nimport type { VNode, Child, Children, Props, State, StateOptions, VirtualListController, JsonNode, VNodeJson } from './types';\n\n/**\n * Helper: Resolve element from string ID or HTMLElement (eliminates duplication in render methods)\n */\nfunction resolveElement(rootElement: string | HTMLElement): HTMLElement | null {\n return typeof rootElement === 'string'\n ? document.getElementById(rootElement.replace('#', ''))\n : rootElement;\n}\n\n/**\n * Helper: Ensure element exists or throw error (eliminates duplication in validation)\n */\nfunction ensureElement(el: HTMLElement | null, rootElement: string | HTMLElement): HTMLElement {\n if (!el) {\n throw new Error(`Element not found: ${rootElement}`);\n }\n return el;\n}\n\n/**\n * Helper: Check if child should be skipped (eliminates duplication in child rendering)\n */\nfunction shouldSkipChild(child: any): boolean {\n return child == null || child === false;\n}\n\n/**\n * Helper: Check if value is primitive JSON type (eliminates duplication in JSON conversion)\n */\nfunction isPrimitiveJson(json: any): json is string | number | boolean | null | undefined {\n return json == null || typeof json === 'boolean' || typeof json === 'string' || typeof json === 'number';\n}\n\nexport class DomNode {\n private elementCache = new WeakMap<Element, boolean>();\n\n createElement(tagName: string, props: Props = {}, children: Children = []): VNode {\n return { tagName, props, children };\n }\n\n renderToDOM(vNode: Child, parent: HTMLElement | SVGElement | DocumentFragment): void {\n if (vNode == null || vNode === false) return;\n\n // Handle primitive values (strings, numbers)\n if (typeof vNode !== 'object') {\n parent.appendChild(document.createTextNode(String(vNode)));\n return;\n }\n\n // Handle arrays (Child[])\n if (Array.isArray(vNode)) {\n for (const child of vNode) {\n this.renderToDOM(child, parent);\n }\n return;\n }\n\n // Handle VNode\n const { tagName, props, children } = vNode;\n\n // Handle fragment (empty tagName) - render children directly to parent\n if (!tagName) {\n // Fragments don't have their own element, so skip ref handling\n // The ref will be handled by the wrapper element created by reactive()\n // Render children directly to parent\n for (const child of children) {\n if (shouldSkipChild(child)) continue;\n\n if (Array.isArray(child)) {\n for (const c of child) {\n !shouldSkipChild(c) && this.renderToDOM(c, parent);\n }\n } else {\n this.renderToDOM(child, parent);\n }\n }\n return;\n }\n\n const isSVG = tagName === 'svg' || (tagName[0] === 's' && tagName[1] === 'v' && tagName[2] === 'g') ||\n (parent as any).namespaceURI === 'http://www.w3.org/2000/svg';\n\n const el = isSVG\n ? document.createElementNS('http://www.w3.org/2000/svg', tagName.replace('svg', '').toLowerCase() || tagName)\n : document.createElement(tagName);\n\n for (const key in props) {\n const value = props[key];\n if (value == null || value === false) continue;\n\n const c = key.charCodeAt(0);\n // class or className (c=99)\n if (c === 99 && (key.length < 6 || key[5] === 'N')) {\n const classValue = Array.isArray(value) ? value.join(' ') : value;\n isSVG ? (el as SVGElement).setAttribute('class', classValue) : (el as HTMLElement).className = classValue;\n }\n // style (s=115)\n else if (c === 115 && key.length === 5) {\n if (typeof value === 'string') {\n (el as HTMLElement).style.cssText = value;\n } else {\n const s = (el as HTMLElement).style;\n for (const k in value) (s as any)[k] = value[k];\n }\n }\n // on* events (o=111, n=110)\n else if (c === 111 && key.charCodeAt(1) === 110) {\n (el as any)[key.toLowerCase()] = value;\n }\n // dangerouslySetInnerHTML (d=100)\n else if (c === 100 && key.length > 20) {\n (el as HTMLElement).innerHTML = value.__html;\n }\n // ref (r=114)\n else if (c === 114 && key.length === 3) {\n setTimeout(() => {\n typeof value === 'function' ? value(el as HTMLElement) : (value.current = el as HTMLElement);\n }, 0);\n }\n else {\n el.setAttribute(key, value === true ? '' : String(value));\n }\n }\n\n const len = children.length;\n if (!len) {\n parent.appendChild(el);\n return;\n }\n\n const renderChildren = (target: HTMLElement | SVGElement | DocumentFragment) => {\n for (let i = 0; i < len; i++) {\n const child = children[i];\n if (shouldSkipChild(child)) continue;\n\n if (Array.isArray(child)) {\n for (let j = 0, cLen = child.length; j < cLen; j++) {\n const c = child[j];\n !shouldSkipChild(c) && this.renderToDOM(c, target);\n }\n } else {\n this.renderToDOM(child, target);\n }\n }\n };\n\n if (len > 30) {\n const fragment = document.createDocumentFragment();\n renderChildren(fragment);\n el.appendChild(fragment);\n } else {\n renderChildren(el);\n }\n\n parent.appendChild(el);\n }\n\n render(rootElement: string | HTMLElement, vNode: VNode): HTMLElement {\n const el = ensureElement(resolveElement(rootElement), rootElement);\n\n // Clear existing content before rendering\n el.innerHTML = '';\n\n if (vNode.children && vNode.children.length > 500) {\n const fragment = document.createDocumentFragment();\n this.renderToDOM(vNode, fragment);\n el.appendChild(fragment);\n } else {\n this.renderToDOM(vNode, el);\n }\n return el;\n }\n\n batchRender(rootElement: string | HTMLElement, vNodes: VNode[]): HTMLElement {\n const el = ensureElement(resolveElement(rootElement), rootElement);\n\n const len = vNodes.length;\n\n if (len > 3000) {\n const fragment = document.createDocumentFragment();\n let processed = 0;\n const chunkSize = 1500;\n\n const processChunk = (): void => {\n const end = Math.min(processed + chunkSize, len);\n for (let i = processed; i < end; i++) {\n this.renderToDOM(vNodes[i], fragment);\n }\n processed = end;\n\n if (processed >= len) {\n el.appendChild(fragment);\n } else {\n requestAnimationFrame(processChunk);\n }\n };\n\n processChunk();\n } else {\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < len; i++) {\n this.renderToDOM(vNodes[i], fragment);\n }\n el.appendChild(fragment);\n }\n return el;\n }\n\n renderChunked(\n rootElement: string | HTMLElement,\n vNodes: VNode[],\n chunkSize = 5000,\n onProgress?: (current: number, total: number) => void\n ): HTMLElement {\n const el = ensureElement(resolveElement(rootElement), rootElement);\n\n const len = vNodes.length;\n let index = 0;\n\n const renderChunk = (): void => {\n const end = Math.min(index + chunkSize, len);\n const fragment = document.createDocumentFragment();\n\n for (let i = index; i < end; i++) {\n this.renderToDOM(vNodes[i], fragment);\n }\n\n el.appendChild(fragment);\n index = end;\n\n if (onProgress) onProgress(index, len);\n\n if (index < len) {\n requestAnimationFrame(renderChunk);\n }\n };\n\n requestAnimationFrame(renderChunk);\n return el;\n }\n\n renderToHead(...vNodes: Array<VNode | VNode[]>): HTMLHeadElement | null {\n const head = document.head;\n if (head) {\n for (const vNode of vNodes.flat()) {\n vNode && this.renderToDOM(vNode, head);\n }\n }\n return head;\n }\n\n addStyle(cssText: string): HTMLStyleElement {\n const el = document.createElement('style');\n el.textContent = cssText;\n return document.head.appendChild(el);\n }\n\n addMeta(attrs: Record<string, string>): HTMLMetaElement {\n const el = document.createElement('meta');\n for (const k in attrs) el.setAttribute(k, attrs[k]);\n return document.head.appendChild(el);\n }\n\n addLink(attrs: Record<string, string>): HTMLLinkElement {\n const el = document.createElement('link');\n for (const k in attrs) el.setAttribute(k, attrs[k]);\n return document.head.appendChild(el);\n }\n\n setTitle(text: string): string {\n return document.title = text;\n }\n\n // Reactive State Management\n createState<T>(initialValue: T, options: StateOptions = {}): State<T> {\n let value = initialValue;\n const listeners = new Set<(value: T) => void>();\n let updateTimer: NodeJS.Timeout | null = null;\n const { throttle = 0, deep = false } = options;\n\n const notify = () => listeners.forEach(fn => fn(value));\n\n const scheduleUpdate = () => {\n if (throttle > 0) {\n if (!updateTimer) {\n updateTimer = setTimeout(() => {\n updateTimer = null;\n notify();\n }, throttle);\n }\n } else {\n notify();\n }\n };\n\n return {\n get value() { return value; },\n set value(newValue: T) {\n const changed = deep ? JSON.stringify(value) !== JSON.stringify(newValue) : value !== newValue;\n if (changed) {\n value = newValue;\n scheduleUpdate();\n }\n },\n subscribe(fn: (value: T) => void) {\n listeners.add(fn);\n return () => listeners.delete(fn);\n },\n destroy() {\n listeners.clear();\n updateTimer && clearTimeout(updateTimer);\n }\n };\n }\n\n computed<T extends any[], R>(states: { [K in keyof T]: State<T[K]> }, computeFn: (...values: T) => R): State<R> {\n const values = states.map(s => s.value) as unknown as T;\n const result = this.createState(computeFn(...values));\n\n states.forEach((state, index) => {\n state.subscribe((newValue: any) => {\n values[index] = newValue;\n result.value = computeFn(...values);\n });\n });\n\n return result;\n }\n\n effect(stateFn: () => void): void {\n stateFn();\n }\n\n // Virtual scrolling helper for large lists\n createVirtualList<T>(\n container: HTMLElement,\n items: T[],\n renderItem: (item: T, index: number) => VNode,\n itemHeight = 50,\n bufferSize = 5\n ): VirtualListController {\n const viewportHeight = container.clientHeight;\n const totalHeight = items.length * itemHeight;\n let scrollTop = 0;\n\n const getVisibleRange = (): { start: number; end: number } => {\n const start = Math.max(0, Math.floor(scrollTop / itemHeight) - bufferSize);\n const end = Math.min(items.length, Math.ceil((scrollTop + viewportHeight) / itemHeight) + bufferSize);\n return { start, end };\n };\n\n const render = (): void => {\n const { start, end } = getVisibleRange();\n const wrapper = document.createElement('div');\n wrapper.style.cssText = `height:${totalHeight}px;position:relative`;\n\n for (let i = start; i < end; i++) {\n const itemEl = document.createElement('div');\n itemEl.style.cssText = `position:absolute;top:${i * itemHeight}px;height:${itemHeight}px;width:100%`;\n this.renderToDOM(renderItem(items[i], i), itemEl);\n wrapper.appendChild(itemEl);\n }\n\n container.innerHTML = '';\n container.appendChild(wrapper);\n };\n\n const scrollHandler = (): void => {\n scrollTop = container.scrollTop;\n requestAnimationFrame(render);\n };\n\n container.addEventListener('scroll', scrollHandler);\n\n render();\n return {\n render,\n destroy: () => {\n container.removeEventListener('scroll', scrollHandler);\n container.innerHTML = '';\n }\n };\n }\n\n // Lazy load components\n lazy<T extends any[], R>(loadFn: () => Promise<(...args: T) => R>): (...args: T) => Promise<R | VNode> {\n let component: ((...args: T) => R) | null = null;\n let loading = false;\n\n return async (...args: T): Promise<R | VNode> => {\n if (!component && !loading) {\n loading = true;\n component = await loadFn();\n loading = false;\n }\n return component ? component(...args) : { tagName: 'div', props: { class: 'loading' }, children: ['Loading...'] };\n };\n }\n\n // Memory management - cleanup unused elements\n cleanupUnusedElements(root: HTMLElement): number {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);\n const toRemove: Element[] = [];\n\n while (walker.nextNode()) {\n const node = walker.currentNode as Element;\n if (node.id && node.id.startsWith('r') && !this.elementCache.has(node)) {\n toRemove.push(node);\n }\n }\n\n toRemove.forEach(el => el.remove());\n return toRemove.length;\n }\n\n // Server-Side Rendering - convert VNode to HTML string\n renderToString(vNode: Child, options: { pretty?: boolean; indent?: number } = {}): string {\n const { pretty = false, indent = 0 } = options;\n const indentStr = pretty ? ' '.repeat(indent) : '';\n const newLine = pretty ? '\\n' : '';\n\n let resolvedVNode = this.resolveStateValue(vNode);\n resolvedVNode = this.unwrapReactive(resolvedVNode);\n\n if (Array.isArray(resolvedVNode)) {\n return resolvedVNode.map(child => this.renderToString(child, options)).join('');\n }\n\n if (typeof resolvedVNode !== 'object' || resolvedVNode === null) {\n if (resolvedVNode === null || resolvedVNode === undefined || resolvedVNode === false) {\n return '';\n }\n return this.escapeHtml(String(resolvedVNode));\n }\n\n const { tagName, props, children } = resolvedVNode;\n const isSelfClosing = this.isSelfClosingTag(tagName);\n\n let html = `${indentStr}<${tagName}`;\n\n const attrs = this.propsToAttributes(props);\n if (attrs) {\n html += ` ${attrs}`;\n }\n\n if (isSelfClosing) {\n html += ` />${newLine}`;\n return html;\n }\n\n html += '>';\n\n if (props.dangerouslySetInnerHTML) {\n html += props.dangerouslySetInnerHTML.__html;\n html += `</${tagName}>${newLine}`;\n return html;\n }\n\n if (children && children.length > 0) {\n const resolvedChildren = children.map((c: Child) => {\n const resolved = this.resolveStateValue(c);\n return this.unwrapReactive(resolved);\n });\n\n const hasComplexChildren = resolvedChildren.some(\n (c: any) => typeof c === 'object' && c !== null && !Array.isArray(c) && 'tagName' in c\n );\n\n if (pretty && hasComplexChildren) {\n html += newLine;\n for (const child of resolvedChildren) {\n if (shouldSkipChild(child)) continue;\n\n if (Array.isArray(child)) {\n for (const c of child) {\n if (!shouldSkipChild(c)) {\n html += this.renderToString(c, { pretty, indent: indent + 1 });\n }\n }\n } else {\n html += this.renderToString(child, { pretty, indent: indent + 1 });\n }\n }\n html += indentStr;\n } else {\n for (const child of resolvedChildren) {\n if (shouldSkipChild(child)) continue;\n\n if (Array.isArray(child)) {\n for (const c of child) {\n if (!shouldSkipChild(c)) {\n html += this.renderToString(c, { pretty: false, indent: 0 });\n }\n }\n } else {\n html += this.renderToString(child, { pretty: false, indent: 0 });\n }\n }\n }\n }\n\n html += `</${tagName}>${newLine}`;\n return html;\n }\n\n private resolveStateValue(value: any): any {\n if (value && typeof value === 'object' && 'value' in value && 'subscribe' in value) {\n return value.value;\n }\n return value;\n }\n\n private isReactiveWrapper(vNode: any): boolean {\n if (!vNode || typeof vNode !== 'object' || !vNode.tagName) {\n return false;\n }\n return vNode.tagName === 'span' &&\n vNode.props?.id &&\n typeof vNode.props.id === 'string' &&\n vNode.props.id.match(/^r[a-z0-9]{9}$/);\n }\n\n private unwrapReactive(vNode: any): Child {\n if (!this.isReactiveWrapper(vNode)) {\n return vNode;\n }\n\n const children = vNode.children;\n if (!children || children.length === 0) {\n return '';\n }\n\n if (children.length === 1) {\n const child = children[0];\n\n if (child && typeof child === 'object' && child.tagName === 'span') {\n const props = child.props;\n const hasNoProps = !props || Object.keys(props).length === 0;\n const hasSingleStringChild = child.children &&\n child.children.length === 1 &&\n typeof child.children[0] === 'string';\n\n if (hasNoProps && hasSingleStringChild) {\n return child.children[0];\n }\n }\n\n return this.unwrapReactive(child);\n }\n\n return children.map((c: Child) => this.unwrapReactive(c));\n }\n\n private escapeHtml(text: string): string {\n const htmlEscapes: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;'\n };\n return text.replace(/[&<>\"']/g, char => htmlEscapes[char]);\n }\n\n private isSelfClosingTag(tagName: string): boolean {\n const selfClosingTags = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'link', 'meta', 'param', 'source', 'track', 'wbr'\n ]);\n return selfClosingTags.has(tagName.toLowerCase());\n }\n\n private propsToAttributes(props: Props): string {\n const attrs: string[] = [];\n\n for (const key in props) {\n if (key === 'children' || key === 'dangerouslySetInnerHTML' || key === 'ref') {\n continue;\n }\n\n let value = props[key];\n value = this.resolveStateValue(value);\n\n if (value == null || value === false) continue;\n\n if (key.startsWith('on') && typeof value === 'function') {\n continue;\n }\n\n if (key === 'className' || key === 'class') {\n const className = Array.isArray(value) ? value.join(' ') : value;\n if (className) {\n attrs.push(`class=\"${this.escapeHtml(String(className))}\"`);\n }\n continue;\n }\n\n if (key === 'style') {\n const styleStr = this.styleToString(value);\n if (styleStr) {\n attrs.push(`style=\"${this.escapeHtml(styleStr)}\"`);\n }\n continue;\n }\n\n if (value === true) {\n attrs.push(key);\n continue;\n }\n\n attrs.push(`${key}=\"${this.escapeHtml(String(value))}\"`);\n }\n\n return attrs.join(' ');\n }\n\n private styleToString(style: any): string {\n if (typeof style === 'string') {\n return style;\n }\n\n if (typeof style === 'object' && style !== null) {\n const styles: string[] = [];\n for (const key in style) {\n const cssKey = key.replace(/([A-Z])/g, '-$1').toLowerCase();\n styles.push(`${cssKey}:${style[key]}`);\n }\n return styles.join(';');\n }\n\n return '';\n }\n\n private isState(value: any): value is State<any> {\n return value && typeof value === 'object' && 'value' in value && 'subscribe' in value && typeof value.subscribe === 'function';\n }\n\n private reactiveNodes = new Map<State<any>, { node: Text | null, renderFn: (v: any) => Child }>();\n\n private createReactiveChild(state: State<any>, renderFn: (value: any) => Child): Child {\n const currentValue = renderFn(state.value);\n\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n const entry = { node: null as Text | null, renderFn };\n this.reactiveNodes.set(state, entry);\n\n state.subscribe(() => {\n if (entry.node && entry.node.parentNode) {\n const newValue = renderFn(state.value);\n entry.node.textContent = String(newValue ?? '');\n }\n });\n }\n\n return currentValue;\n }\n\n jsonToVNode(json: JsonNode | string | number | boolean | null | undefined | State<any>): Child {\n if (this.isState(json)) {\n return this.createReactiveChild(json, (v: any) => v);\n }\n\n if (isPrimitiveJson(json)) {\n return json as Child;\n }\n\n const { tag, attributes = {}, children } = json;\n\n const props: Props = {};\n for (const key in attributes) {\n const value = attributes[key];\n if (key === 'class') {\n props.className = this.isState(value) ? value.value : value;\n } else {\n props[key] = this.isState(value) ? value.value : value;\n }\n }\n\n const childrenArray: Children = [];\n if (children != null) {\n if (Array.isArray(children)) {\n for (const child of children) {\n if (this.isState(child)) {\n childrenArray.push(this.createReactiveChild(child, (v: any) => v));\n } else {\n const converted = this.jsonToVNode(child);\n if (converted != null && converted !== false) {\n childrenArray.push(converted);\n }\n }\n }\n } else if (this.isState(children)) {\n childrenArray.push(this.createReactiveChild(children, (v: any) => v));\n } else if (typeof children === 'object' && 'tag' in children) {\n const converted = this.jsonToVNode(children);\n if (converted != null && converted !== false) {\n childrenArray.push(converted);\n }\n } else {\n childrenArray.push(children as Child);\n }\n }\n\n return { tagName: tag, props, children: childrenArray };\n }\n\n vNodeJsonToVNode(json: VNodeJson | State<any>): Child {\n if (this.isState(json)) {\n return this.createReactiveChild(json, (v: any) => v);\n }\n\n if (isPrimitiveJson(json)) {\n return json as Child;\n }\n\n const { tagName, props = {}, children = [] } = json;\n\n const resolvedProps: Props = {};\n for (const key in props) {\n const value = props[key];\n resolvedProps[key] = this.isState(value) ? value.value : value;\n }\n\n const childrenArray: Children = [];\n for (const child of children) {\n if (this.isState(child)) {\n childrenArray.push(this.createReactiveChild(child, (v: any) => v));\n } else {\n const converted = this.vNodeJsonToVNode(child);\n if (converted != null && converted !== false) {\n childrenArray.push(converted);\n }\n }\n }\n\n return { tagName, props: resolvedProps, children: childrenArray };\n }\n\n renderJson(rootElement: string | HTMLElement, json: JsonNode): HTMLElement {\n const vNode = this.jsonToVNode(json);\n if (!vNode || typeof vNode !== 'object' || !('tagName' in vNode)) {\n throw new Error('Invalid JSON structure');\n }\n return this.render(rootElement, vNode as VNode);\n }\n\n renderVNode(rootElement: string | HTMLElement, json: VNodeJson): HTMLElement {\n const vNode = this.vNodeJsonToVNode(json);\n if (!vNode || typeof vNode !== 'object' || !('tagName' in vNode)) {\n throw new Error('Invalid VNode JSON structure');\n }\n return this.render(rootElement, vNode as VNode);\n }\n\n renderJsonToString(json: JsonNode, options: { pretty?: boolean; indent?: number } = {}): string {\n const vNode = this.jsonToVNode(json);\n return this.renderToString(vNode, options);\n }\n\n renderVNodeToString(json: VNodeJson, options: { pretty?: boolean; indent?: number } = {}): string {\n const vNode = this.vNodeJsonToVNode(json);\n return this.renderToString(vNode, options);\n }\n\n\n // Generate complete HTML document as string (for SSR)\n renderToHTMLDocument(vNode: Child, options: {\n title?: string;\n meta?: Array<Record<string, string>>;\n links?: Array<Record<string, string>>;\n scripts?: Array<{ src?: string; content?: string; async?: boolean; defer?: boolean; type?: string }>;\n styles?: Array<{ href?: string; content?: string }>;\n lang?: string;\n head?: string;\n bodyAttrs?: Record<string, string>;\n pretty?: boolean;\n } = {}): string {\n const { title = '', meta = [], links = [], scripts = [], styles = [], lang = 'en', head = '', bodyAttrs = {}, pretty = false } = options;\n const nl = pretty ? '\\n' : '';\n const indent = pretty ? ' ' : '';\n const indent2 = pretty ? ' ' : '';\n\n let html = `<!DOCTYPE html>${nl}<html lang=\"${lang}\">${nl}${indent}<head>${nl}${indent2}<meta charset=\"UTF-8\">${nl}${indent2}<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">${nl}`;\n if (title) html += `${indent2}<title>${this.escapeHtml(title)}</title>${nl}`;\n\n for (const m of meta) {\n html += `${indent2}<meta`;\n for (const k in m) html += ` ${k}=\"${this.escapeHtml(m[k])}\"`;\n html += `>${nl}`;\n }\n\n for (const l of links) {\n html += `${indent2}<link`;\n for (const k in l) html += ` ${k}=\"${this.escapeHtml(l[k])}\"`;\n html += `>${nl}`;\n }\n\n for (const s of styles) {\n if (s.href) {\n html += `${indent2}<link rel=\"stylesheet\" href=\"${this.escapeHtml(s.href)}\">${nl}`;\n } else if (s.content) {\n html += `${indent2}<style>${s.content}</style>${nl}`;\n }\n }\n\n if (head) html += head + nl;\n html += `${indent}</head>${nl}${indent}<body`;\n for (const k in bodyAttrs) html += ` ${k}=\"${this.escapeHtml(bodyAttrs[k])}\"`;\n html += `>${nl}`;\n html += this.renderToString(vNode, { pretty, indent: 2 });\n\n for (const script of scripts) {\n html += `${indent2}<script`;\n if (script.type) html += ` type=\"${this.escapeHtml(script.type)}\"`;\n if (script.async) html += ` async`;\n if (script.defer) html += ` defer`;\n if (script.src) {\n html += ` src=\"${this.escapeHtml(script.src)}\"></script>${nl}`;\n } else if (script.content) {\n html += `>${script.content}</script>${nl}`;\n } else {\n html += `></script>${nl}`;\n }\n }\n\n html += `${indent}</body>${nl}</html>`;\n return html;\n }\n\n // Expose elementCache for reactive updates\n getElementCache(): WeakMap<Element, boolean> {\n return this.elementCache;\n }\n}\n\nexport const dom = new DomNode();\n\n// Export helper functions for convenience\nexport const render = dom.render.bind(dom);\nexport const renderToString = dom.renderToString.bind(dom);\nexport const mount = render; // alias for render\n","/**\n * Elit - State Management\n */\n\nimport type { State, StateOptions, VNode, VirtualListController, Child, Props } from './types';\nimport { dom } from './dom';\n\n// State management helpers\nexport const createState = <T>(initial: T, options?: StateOptions): State<T> =>\n dom.createState(initial, options);\n\nexport const computed = <T extends any[], R>(\n states: { [K in keyof T]: State<T[K]> },\n fn: (...values: T) => R\n): State<R> => dom.computed(states, fn);\n\nexport const effect = (fn: () => void): void => dom.effect(fn);\n\n// Performance helpers\nexport const batchRender = (container: string | HTMLElement, vNodes: VNode[]): HTMLElement =>\n dom.batchRender(container, vNodes);\n\nexport const renderChunked = (\n container: string | HTMLElement,\n vNodes: VNode[],\n chunkSize?: number,\n onProgress?: (current: number, total: number) => void\n): HTMLElement => dom.renderChunked(container, vNodes, chunkSize, onProgress);\n\nexport const createVirtualList = <T>(\n container: HTMLElement,\n items: T[],\n renderItem: (item: T, index: number) => VNode,\n itemHeight?: number,\n bufferSize?: number\n): VirtualListController => dom.createVirtualList(container, items, renderItem, itemHeight, bufferSize);\n\nexport const lazy = <T extends any[], R>(loadFn: () => Promise<(...args: T) => R>) =>\n dom.lazy(loadFn);\n\nexport const cleanupUnused = (root: HTMLElement): number =>\n dom.cleanupUnusedElements(root);\n\n// Throttle helper\nexport const throttle = <T extends any[]>(fn: (...args: T) => void, delay: number) => {\n let timer: NodeJS.Timeout | null = null;\n return (...args: T) => {\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n fn(...args);\n }, delay);\n }\n };\n};\n\n// Debounce helper\nexport const debounce = <T extends any[]>(fn: (...args: T) => void, delay: number) => {\n let timer: NodeJS.Timeout | null = null;\n return (...args: T) => {\n timer && clearTimeout(timer);\n timer = setTimeout(() => fn(...args), delay);\n };\n};\n\n// ===== Shared State - syncs with elit-server =====\n\ntype StateChangeCallback<T = any> = (value: T, oldValue: T) => void;\n\ninterface StateMessage {\n type: 'state:init' | 'state:update' | 'state:subscribe' | 'state:unsubscribe' | 'state:change';\n key: string;\n value?: any;\n timestamp?: number;\n}\n\n/**\n * Shared State - syncs with elit-server\n */\nexport class SharedState<T = any> {\n private localState: State<T>;\n private ws: WebSocket | null = null;\n private pendingUpdates: T[] = [];\n private previousValue: T;\n\n constructor(\n public readonly key: string,\n defaultValue: T,\n private wsUrl?: string\n ) {\n this.localState = createState(defaultValue);\n this.previousValue = defaultValue;\n this.connect();\n }\n\n /**\n * Get current value\n */\n get value(): T {\n return this.localState.value;\n }\n\n /**\n * Set new value and sync to server\n */\n set value(newValue: T) {\n this.previousValue = this.localState.value;\n this.localState.value = newValue;\n this.sendToServer(newValue);\n }\n\n /**\n * Get the underlying Elit State (for reactive binding)\n */\n get state(): State<T> {\n return this.localState;\n }\n\n /**\n * Subscribe to changes (returns Elit State for reactive)\n */\n onChange(callback: StateChangeCallback<T>): () => void {\n return this.localState.subscribe((newValue) => {\n const oldValue = this.previousValue;\n this.previousValue = newValue;\n callback(newValue, oldValue);\n });\n }\n\n /**\n * Update value using a function\n */\n update(updater: (current: T) => T): void {\n this.value = updater(this.value);\n }\n\n /**\n * Connect to WebSocket\n */\n private connect(): void {\n if (typeof window === 'undefined') return;\n\n const url = this.wsUrl || `ws://${location.host}`;\n this.ws = new WebSocket(url);\n\n this.ws.addEventListener('open', () => {\n this.subscribe();\n\n // Send pending updates\n while (this.pendingUpdates.length > 0) {\n const value = this.pendingUpdates.shift();\n this.sendToServer(value!);\n }\n });\n\n this.ws.addEventListener('message', (event) => {\n this.handleMessage(event.data);\n });\n\n this.ws.addEventListener('close', () => {\n // Reconnect after delay\n setTimeout(() => this.connect(), 1000);\n });\n\n this.ws.addEventListener('error', (error) => {\n console.error('[SharedState] WebSocket error:', error);\n });\n }\n\n /**\n * Subscribe to server state\n */\n private subscribe(): void {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) return;\n\n this.ws.send(JSON.stringify({\n type: 'state:subscribe',\n key: this.key\n }));\n }\n\n /**\n * Handle message from server\n */\n private handleMessage(data: string): void {\n try {\n const msg = JSON.parse(data) as StateMessage;\n\n if (msg.key !== this.key) return;\n\n if (msg.type === 'state:init' || msg.type === 'state:update') {\n // Update local state without sending back to server\n this.localState.value = msg.value;\n }\n } catch (error) {\n // Ignore parse errors (could be HMR messages)\n }\n }\n\n /**\n * Send value to server\n */\n private sendToServer(value: T): void {\n if (!this.ws) return;\n\n if (this.ws.readyState !== WebSocket.OPEN) {\n // Queue update for when connection is ready\n this.pendingUpdates.push(value);\n return;\n }\n\n this.ws.send(JSON.stringify({\n type: 'state:change',\n key: this.key,\n value\n }));\n }\n\n /**\n * Disconnect\n */\n disconnect(): void {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n /**\n * Destroy state and cleanup\n */\n destroy(): void {\n this.disconnect();\n this.localState.destroy();\n }\n}\n\n/**\n * Create a shared state that syncs with elit-server\n */\nexport function createSharedState<T>(\n key: string,\n defaultValue: T,\n wsUrl?: string\n): SharedState<T> {\n return new SharedState(key, defaultValue, wsUrl);\n}\n\n/**\n * Shared State Manager for managing multiple shared states\n */\nclass SharedStateManager {\n private states = new Map<string, SharedState<any>>();\n\n /**\n * Create or get a shared state\n */\n create<T>(key: string, defaultValue: T, wsUrl?: string): SharedState<T> {\n if (this.states.has(key)) {\n return this.states.get(key) as SharedState<T>;\n }\n\n const state = new SharedState<T>(key, defaultValue, wsUrl);\n this.states.set(key, state);\n return state;\n }\n\n /**\n * Get existing state\n */\n get<T>(key: string): SharedState<T> | undefined {\n return this.states.get(key) as SharedState<T>;\n }\n\n /**\n * Delete a state\n */\n delete(key: string): boolean {\n const state = this.states.get(key);\n if (state) {\n state.destroy();\n return this.states.delete(key);\n }\n return false;\n }\n\n /**\n * Clear all states\n */\n clear(): void {\n this.states.forEach(state => state.destroy());\n this.states.clear();\n }\n}\n\n// Export singleton instance\nexport const sharedStateManager = new SharedStateManager();\n\n// ===== Reactive Rendering Helpers =====\n\n// Helper function to schedule RAF updates (reused in reactive and reactiveAs)\nconst scheduleRAFUpdate = (rafId: number | null, updateFn: () => void): number => {\n rafId && cancelAnimationFrame(rafId);\n return requestAnimationFrame(() => {\n updateFn();\n });\n};\n\n// Helper function to render content to fragment (reused in reactive and reactiveAs)\nconst renderToFragment = (content: VNode | Child | Child[], isVNode?: boolean): DocumentFragment => {\n const fragment = document.createDocumentFragment();\n\n if (Array.isArray(content)) {\n // Handle array of children\n for (const child of content) {\n dom.renderToDOM(child, fragment);\n }\n } else if (isVNode && content && typeof content === 'object' && 'tagName' in content) {\n const { children } = content as VNode;\n for (const child of children) {\n dom.renderToDOM(child, fragment);\n }\n } else {\n dom.renderToDOM(content, fragment);\n }\n\n return fragment;\n};\n\n// Helper function to update element props (reused in reactive)\nconst updateElementProps = (element: HTMLElement | SVGElement, props: Props): void => {\n for (const key in props) {\n const value = props[key];\n if (key === 'ref') continue;\n\n if (key === 'class' || key === 'className') {\n (element as HTMLElement).className = Array.isArray(value) ? value.join(' ') : (value || '');\n } else if (key === 'style' && typeof value === 'object') {\n const s = (element as HTMLElement).style;\n for (const k in value) (s as any)[k] = value[k];\n } else if (key.startsWith('on')) {\n (element as any)[key.toLowerCase()] = value;\n } else if (value != null && value !== false) {\n element.setAttribute(key, String(value === true ? '' : value));\n } else {\n element.removeAttribute(key);\n }\n }\n};\n\n// Reactive element helpers\nexport const reactive = <T>(state: State<T>, renderFn: (value: T) => VNode | Child | Child[]): VNode => {\n let rafId: number | null = null;\n let elementRef: HTMLElement | SVGElement | null = null;\n let placeholder: Comment | null = null;\n let isInDOM = true;\n\n const initialResult = renderFn(state.value);\n const isVNodeResult = initialResult && typeof initialResult === 'object' && 'tagName' in initialResult;\n const initialIsNull = initialResult == null || initialResult === false;\n\n const updateElement = () => {\n if (!elementRef && !placeholder) return;\n\n const newResult = renderFn(state.value);\n const resultIsNull = newResult == null || newResult === false;\n\n if (resultIsNull) {\n if (isInDOM && elementRef) {\n placeholder = document.createComment('reactive');\n elementRef.parentNode?.replaceChild(placeholder, elementRef);\n isInDOM = false;\n }\n } else {\n if (!isInDOM && placeholder && elementRef) {\n placeholder.parentNode?.replaceChild(elementRef, placeholder);\n placeholder = null;\n isInDOM = true;\n }\n\n if (elementRef) {\n const isCurrentVNode = !!(isVNodeResult && newResult && typeof newResult === 'object' && 'tagName' in newResult);\n if (isCurrentVNode) {\n const { props } = newResult as VNode;\n updateElementProps(elementRef, props);\n }\n const fragment = renderToFragment(newResult as any, isCurrentVNode);\n elementRef.textContent = '';\n elementRef.appendChild(fragment);\n dom.getElementCache().set(elementRef, true);\n }\n }\n };\n\n state.subscribe(() => {\n rafId = scheduleRAFUpdate(rafId, () => {\n updateElement();\n rafId = null;\n });\n });\n\n const refCallback = (el: HTMLElement | SVGElement) => {\n elementRef = el;\n if (initialIsNull && el.parentNode) {\n placeholder = document.createComment('reactive');\n el.parentNode.replaceChild(placeholder, el);\n isInDOM = false;\n }\n };\n\n if (isVNodeResult) {\n const vnode = initialResult as VNode;\n return {\n tagName: vnode.tagName,\n props: { ...vnode.props, ref: refCallback },\n children: vnode.children\n };\n }\n\n // Handle array result - wrap in fragment-like VNode\n const initialChildren = Array.isArray(initialResult) ? initialResult : [initialResult];\n\n // Use span with display: contents as wrapper (doesn't affect layout)\n return { tagName: 'span', props: { ref: refCallback, style: { display: 'contents' } }, children: initialChildren };\n};\n\n// Reactive element with custom wrapper tag\nexport const reactiveAs = <T>(\n tagName: string,\n state: State<T>,\n renderFn: (value: T) => VNode | Child | Child[],\n props: Props = {}\n): VNode => {\n let rafId: number | null = null;\n let elementRef: HTMLElement | SVGElement | null = null;\n\n state.subscribe(() => {\n rafId = scheduleRAFUpdate(rafId, () => {\n if (elementRef) {\n const newResult = renderFn(state.value);\n\n if (newResult == null || newResult === false) {\n (elementRef as HTMLElement).style.display = 'none';\n elementRef.textContent = '';\n } else {\n (elementRef as HTMLElement).style.display = '';\n const fragment = renderToFragment(newResult as any, false);\n elementRef.textContent = '';\n elementRef.appendChild(fragment);\n }\n dom.getElementCache().set(elementRef, true);\n }\n rafId = null;\n });\n });\n\n const refCallback = (el: HTMLElement | SVGElement) => {\n elementRef = el;\n };\n\n const initialResult = renderFn(state.value);\n const initialChildren = Array.isArray(initialResult) ? initialResult : [initialResult];\n\n return { tagName, props: { ...props, ref: refCallback }, children: initialChildren };\n};\n\nexport const text = (state: State<any> | any): VNode | string =>\n (state && state.value !== undefined)\n ? reactive(state, v => ({ tagName: 'span', props: {}, children: [String(v)] }))\n : String(state);\n\nexport const bindValue = <T extends string | number>(state: State<T>): Props => ({\n value: state.value,\n oninput: (e: Event) => { state.value = (e.target as HTMLInputElement).value as T; }\n});\n\nexport const bindChecked = (state: State<boolean>): Props => ({\n checked: state.value,\n onchange: (e: Event) => { state.value = (e.target as HTMLInputElement).checked; }\n});\n"],"mappings":"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","names":["text","throttle","render"]}
package/dist/style.js CHANGED
@@ -549,3 +549,4 @@ var style_default = styles;
549
549
  styles,
550
550
  supportsStyle
551
551
  });
552
+ //# sourceMappingURL=style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/style.ts"],"sourcesContent":["/**\n * Elit - CreateStyle CSS Generation System\n */\n\nexport interface CSSVariable {\n name: string;\n value: string;\n toString(): string;\n}\n\nexport interface CSSRule {\n selector: string;\n styles: Record<string, string | number>;\n nested?: CSSRule[];\n type: 'tag' | 'class' | 'id' | 'pseudo-class' | 'pseudo-element' | 'name' | 'custom' | 'media' | 'attribute';\n}\n\nexport interface MediaRule {\n type: string;\n condition: string;\n rules: CSSRule[];\n}\n\nexport interface KeyframeStep {\n step: string | number;\n styles: Record<string, string | number>;\n}\n\nexport interface Keyframes {\n name: string;\n steps: KeyframeStep[];\n}\n\nexport interface FontFace {\n fontFamily: string;\n src: string;\n fontWeight?: string | number;\n fontStyle?: string;\n fontDisplay?: string;\n unicodeRange?: string;\n}\n\nexport interface ContainerRule {\n name?: string;\n condition: string;\n rules: CSSRule[];\n}\n\nexport interface SupportsRule {\n condition: string;\n rules: CSSRule[];\n}\n\nexport interface LayerRule {\n name: string;\n rules: CSSRule[];\n}\n\nexport class CreateStyle {\n private variables: CSSVariable[] = [];\n private rules: CSSRule[] = [];\n private mediaRules: MediaRule[] = [];\n private keyframes: Keyframes[] = [];\n private fontFaces: FontFace[] = [];\n private imports: string[] = [];\n private containerRules: ContainerRule[] = [];\n private supportsRules: SupportsRule[] = [];\n private layerRules: LayerRule[] = [];\n private _layerOrder: string[] = [];\n\n // CSS Variables\n addVar(name: string, value: string): CSSVariable {\n const cssVar: CSSVariable = {\n name: name.startsWith('--') ? name : `--${name}`,\n value,\n toString() { return `var(${this.name})`; }\n };\n this.variables.push(cssVar);\n return cssVar;\n }\n\n var(variable: CSSVariable | string, fallback?: string): string {\n const varName = typeof variable === 'string'\n ? (variable.startsWith('--') ? variable : `--${variable}`)\n : variable.name;\n return fallback ? `var(${varName}, ${fallback})` : `var(${varName})`;\n }\n\n // Basic Selectors\n addTag(tag: string, styles: Record<string, string | number>): CSSRule {\n const rule: CSSRule = { selector: tag, styles, type: 'tag' };\n this.rules.push(rule);\n return rule;\n }\n\n addClass(name: string, styles: Record<string, string | number>): CSSRule {\n const selector = name.startsWith('.') ? name : `.${name}`;\n const rule: CSSRule = { selector, styles, type: 'class' };\n this.rules.push(rule);\n return rule;\n }\n\n addId(name: string, styles: Record<string, string | number>): CSSRule {\n const selector = name.startsWith('#') ? name : `#${name}`;\n const rule: CSSRule = { selector, styles, type: 'id' };\n this.rules.push(rule);\n return rule;\n }\n\n // Pseudo Selectors\n addPseudoClass(pseudo: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n const pseudoClass = pseudo.startsWith(':') ? pseudo : `:${pseudo}`;\n const selector = baseSelector ? `${baseSelector}${pseudoClass}` : pseudoClass;\n const rule: CSSRule = { selector, styles, type: 'pseudo-class' };\n this.rules.push(rule);\n return rule;\n }\n\n addPseudoElement(pseudo: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n const pseudoElement = pseudo.startsWith('::') ? pseudo : `::${pseudo}`;\n const selector = baseSelector ? `${baseSelector}${pseudoElement}` : pseudoElement;\n const rule: CSSRule = { selector, styles, type: 'pseudo-element' };\n this.rules.push(rule);\n return rule;\n }\n\n // Attribute Selectors\n addAttribute(attr: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n const attrSelector = attr.startsWith('[') ? attr : `[${attr}]`;\n const selector = baseSelector ? `${baseSelector}${attrSelector}` : attrSelector;\n const rule: CSSRule = { selector, styles, type: 'attribute' };\n this.rules.push(rule);\n return rule;\n }\n\n attrEquals(attr: string, value: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n return this.addAttribute(`${attr}=\"${value}\"`, styles, baseSelector);\n }\n\n attrContainsWord(attr: string, value: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n return this.addAttribute(`${attr}~=\"${value}\"`, styles, baseSelector);\n }\n\n attrStartsWith(attr: string, value: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n return this.addAttribute(`${attr}^=\"${value}\"`, styles, baseSelector);\n }\n\n attrEndsWith(attr: string, value: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n return this.addAttribute(`${attr}$=\"${value}\"`, styles, baseSelector);\n }\n\n attrContains(attr: string, value: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n return this.addAttribute(`${attr}*=\"${value}\"`, styles, baseSelector);\n }\n\n // Combinator Selectors\n descendant(ancestor: string, descendant: string, styles: Record<string, string | number>): CSSRule {\n return this.createAndAddRule(`${ancestor} ${descendant}`, styles);\n }\n\n child(parent: string, childSel: string, styles: Record<string, string | number>): CSSRule {\n return this.createAndAddRule(`${parent} > ${childSel}`, styles);\n }\n\n adjacentSibling(element: string, sibling: string, styles: Record<string, string | number>): CSSRule {\n return this.createAndAddRule(`${element} + ${sibling}`, styles);\n }\n\n generalSibling(element: string, sibling: string, styles: Record<string, string | number>): CSSRule {\n return this.createAndAddRule(`${element} ~ ${sibling}`, styles);\n }\n\n multiple(selectors: string[], styles: Record<string, string | number>): CSSRule {\n return this.createAndAddRule(selectors.join(', '), styles);\n }\n\n // Nesting (BEM-style)\n addName(name: string, styles: Record<string, string | number>): CSSRule {\n const selector = name.startsWith('--') ? `&${name}` : `&--${name}`;\n const rule: CSSRule = { selector, styles, type: 'name' };\n return rule;\n }\n\n nesting(parentRule: CSSRule, ...childRules: CSSRule[]): CSSRule {\n parentRule.nested = childRules;\n return parentRule;\n }\n\n // @keyframes - Animations\n keyframe(name: string, steps: Record<string | number, Record<string, string | number>>): Keyframes {\n const keyframeSteps: KeyframeStep[] = Object.entries(steps).map(([step, styles]) => ({\n step: step === 'from' ? 'from' : step === 'to' ? 'to' : `${step}%`,\n styles\n }));\n const kf: Keyframes = { name, steps: keyframeSteps };\n this.keyframes.push(kf);\n return kf;\n }\n\n keyframeFromTo(name: string, from: Record<string, string | number>, to: Record<string, string | number>): Keyframes {\n return this.keyframe(name, { from, to });\n }\n\n // @font-face - Custom Fonts\n fontFace(options: FontFace): FontFace {\n this.fontFaces.push(options);\n return options;\n }\n\n // @import - Import Stylesheets\n import(url: string, mediaQuery?: string): string {\n const importRule = mediaQuery ? `@import url(\"${url}\") ${mediaQuery};` : `@import url(\"${url}\");`;\n this.imports.push(importRule);\n return importRule;\n }\n\n // @media - Media Queries\n media(type: string, condition: string, rules: Record<string, Record<string, string | number>>): MediaRule {\n const mediaRule: MediaRule = { type, condition, rules: this.rulesToCSSRules(rules) };\n this.mediaRules.push(mediaRule);\n return mediaRule;\n }\n\n mediaScreen(condition: string, rules: Record<string, Record<string, string | number>>): MediaRule {\n return this.media('screen', condition, rules);\n }\n\n mediaPrint(rules: Record<string, Record<string, string | number>>): MediaRule {\n return this.media('print', '', rules);\n }\n\n mediaMinWidth(minWidth: string, rules: Record<string, Record<string, string | number>>): MediaRule {\n return this.media('screen', `min-width: ${minWidth}`, rules);\n }\n\n mediaMaxWidth(maxWidth: string, rules: Record<string, Record<string, string | number>>): MediaRule {\n return this.media('screen', `max-width: ${maxWidth}`, rules);\n }\n\n mediaDark(rules: Record<string, Record<string, string | number>>): MediaRule {\n const mediaRule: MediaRule = { type: '', condition: 'prefers-color-scheme: dark', rules: this.rulesToCSSRules(rules) };\n this.mediaRules.push(mediaRule);\n return mediaRule;\n }\n\n mediaLight(rules: Record<string, Record<string, string | number>>): MediaRule {\n const mediaRule: MediaRule = { type: '', condition: 'prefers-color-scheme: light', rules: this.rulesToCSSRules(rules) };\n this.mediaRules.push(mediaRule);\n return mediaRule;\n }\n\n mediaReducedMotion(rules: Record<string, Record<string, string | number>>): MediaRule {\n const mediaRule: MediaRule = { type: '', condition: 'prefers-reduced-motion: reduce', rules: this.rulesToCSSRules(rules) };\n this.mediaRules.push(mediaRule);\n return mediaRule;\n }\n\n // @container - Container Queries\n container(condition: string, rules: Record<string, Record<string, string | number>>, name?: string): ContainerRule {\n const containerRule: ContainerRule = { name, condition, rules: this.rulesToCSSRules(rules) };\n this.containerRules.push(containerRule);\n return containerRule;\n }\n\n addContainer(name: string, styles: Record<string, string | number>): CSSRule {\n const containerStyles = { ...styles, containerName: name };\n return this.addClass(name, containerStyles);\n }\n\n // @supports - Feature Queries\n supports(condition: string, rules: Record<string, Record<string, string | number>>): SupportsRule {\n const supportsRule: SupportsRule = { condition, rules: this.rulesToCSSRules(rules) };\n this.supportsRules.push(supportsRule);\n return supportsRule;\n }\n\n // @layer - Cascade Layers\n layerOrder(...layers: string[]): void {\n this._layerOrder = layers;\n }\n\n layer(name: string, rules: Record<string, Record<string, string | number>>): LayerRule {\n const layerRule: LayerRule = { name, rules: this.rulesToCSSRules(rules) };\n this.layerRules.push(layerRule);\n return layerRule;\n }\n\n // Custom Rules\n add(rules: Record<string, Record<string, string | number>>): CSSRule[] {\n const cssRules: CSSRule[] = Object.entries(rules).map(([selector, styles]) => {\n const rule: CSSRule = { selector, styles, type: 'custom' };\n this.rules.push(rule);\n return rule;\n });\n return cssRules;\n }\n\n important(value: string | number): string {\n return `${value} !important`;\n }\n\n // Utility Methods\n private toKebabCase(str: string): string {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n }\n\n // Helper: Create and add rule (eliminates duplication in combinator selectors)\n private createAndAddRule(selector: string, styles: Record<string, string | number>, type: CSSRule['type'] = 'custom'): CSSRule {\n const rule: CSSRule = { selector, styles, type };\n this.rules.push(rule);\n return rule;\n }\n\n // Helper: Convert rules object to CSSRule array (eliminates duplication in media/container/supports/layer)\n private rulesToCSSRules(rules: Record<string, Record<string, string | number>>): CSSRule[] {\n return Object.entries(rules).map(([selector, styles]) => ({\n selector,\n styles,\n type: 'custom' as const\n }));\n }\n\n // Helper: Render rules with indentation (eliminates duplication in render methods)\n private renderRulesWithIndent(rules: CSSRule[], indent: string = ' '): string {\n return rules.map(rule => this.renderRule(rule, indent)).join('\\n');\n }\n\n private stylesToString(styles: Record<string, string | number>, indent: string = ' '): string {\n return Object.entries(styles)\n .map(([prop, value]) => {\n const cssValue = typeof value === 'object' && value !== null && 'name' in value\n ? `var(${(value as CSSVariable).name})`\n : value;\n return `${indent}${this.toKebabCase(prop)}: ${cssValue};`;\n })\n .join('\\n');\n }\n\n private renderRule(rule: CSSRule, indent: string = ''): string {\n let css = `${indent}${rule.selector} {\\n${this.stylesToString(rule.styles, indent + ' ')}\\n`;\n\n if (rule.nested && rule.nested.length > 0) {\n for (const nestedRule of rule.nested) {\n const nestedSelector = nestedRule.selector.startsWith('&')\n ? nestedRule.selector.replace(/&/g, rule.selector)\n : `${rule.selector} ${nestedRule.selector}`;\n css += `\\n${indent}${nestedSelector} {\\n${this.stylesToString(nestedRule.styles, indent + ' ')}\\n${indent}}\\n`;\n }\n }\n\n css += `${indent}}`;\n return css;\n }\n\n private renderMediaRule(media: MediaRule): string {\n const condition = media.type && media.condition\n ? `${media.type} and (${media.condition})`\n : media.type\n ? media.type\n : `(${media.condition})`;\n return `@media ${condition} {\\n${this.renderRulesWithIndent(media.rules)}\\n}`;\n }\n\n private renderKeyframes(kf: Keyframes): string {\n let css = `@keyframes ${kf.name} {\\n`;\n for (const step of kf.steps) {\n css += ` ${step.step} {\\n${this.stylesToString(step.styles, ' ')}\\n }\\n`;\n }\n css += '}';\n return css;\n }\n\n private renderFontFace(ff: FontFace): string {\n let css = '@font-face {\\n';\n css += ` font-family: \"${ff.fontFamily}\";\\n`;\n css += ` src: ${ff.src};\\n`;\n if (ff.fontWeight) css += ` font-weight: ${ff.fontWeight};\\n`;\n if (ff.fontStyle) css += ` font-style: ${ff.fontStyle};\\n`;\n if (ff.fontDisplay) css += ` font-display: ${ff.fontDisplay};\\n`;\n if (ff.unicodeRange) css += ` unicode-range: ${ff.unicodeRange};\\n`;\n css += '}';\n return css;\n }\n\n private renderContainerRule(container: ContainerRule): string {\n const nameStr = container.name ? `${container.name} ` : '';\n return `@container ${nameStr}(${container.condition}) {\\n${this.renderRulesWithIndent(container.rules)}\\n}`;\n }\n\n private renderSupportsRule(supports: SupportsRule): string {\n return `@supports (${supports.condition}) {\\n${this.renderRulesWithIndent(supports.rules)}\\n}`;\n }\n\n private renderLayerRule(layer: LayerRule): string {\n return `@layer ${layer.name} {\\n${this.renderRulesWithIndent(layer.rules)}\\n}`;\n }\n\n // Render Output\n render(...additionalRules: (CSSRule | CSSRule[] | MediaRule | Keyframes | ContainerRule | SupportsRule | LayerRule | undefined | null)[]): string {\n const parts: string[] = [];\n\n if (this.imports.length > 0) {\n parts.push(this.imports.join('\\n'));\n }\n\n if (this._layerOrder.length > 0) {\n parts.push(`@layer ${this._layerOrder.join(', ')};`);\n }\n\n if (this.variables.length > 0) {\n const varDeclarations = this.variables\n .map(v => ` ${v.name}: ${v.value};`)\n .join('\\n');\n parts.push(`:root {\\n${varDeclarations}\\n}`);\n }\n\n for (const ff of this.fontFaces) {\n parts.push(this.renderFontFace(ff));\n }\n\n for (const kf of this.keyframes) {\n parts.push(this.renderKeyframes(kf));\n }\n\n const allRules: CSSRule[] = [...this.rules];\n const allMediaRules: MediaRule[] = [...this.mediaRules];\n const allKeyframes: Keyframes[] = [];\n const allContainerRules: ContainerRule[] = [...this.containerRules];\n const allSupportsRules: SupportsRule[] = [...this.supportsRules];\n const allLayerRules: LayerRule[] = [...this.layerRules];\n\n for (const item of additionalRules) {\n if (!item) continue;\n if (Array.isArray(item)) {\n allRules.push(...item);\n } else if ('condition' in item && 'rules' in item && !('name' in item && 'steps' in item)) {\n if ('type' in item) {\n allMediaRules.push(item as MediaRule);\n } else if ('name' in item && typeof (item as any).name === 'string') {\n allContainerRules.push(item as ContainerRule);\n } else {\n allSupportsRules.push(item as SupportsRule);\n }\n } else if ('name' in item && 'steps' in item) {\n allKeyframes.push(item as Keyframes);\n } else if ('name' in item && 'rules' in item) {\n allLayerRules.push(item as LayerRule);\n } else {\n allRules.push(item as CSSRule);\n }\n }\n\n for (const kf of allKeyframes) {\n parts.push(this.renderKeyframes(kf));\n }\n\n for (const layer of allLayerRules) {\n parts.push(this.renderLayerRule(layer));\n }\n\n for (const rule of allRules) {\n parts.push(this.renderRule(rule));\n }\n\n for (const supports of allSupportsRules) {\n parts.push(this.renderSupportsRule(supports));\n }\n\n for (const container of allContainerRules) {\n parts.push(this.renderContainerRule(container));\n }\n\n for (const media of allMediaRules) {\n parts.push(this.renderMediaRule(media));\n }\n\n return parts.join('\\n\\n');\n }\n\n inject(styleId?: string): HTMLStyleElement {\n const css = this.render();\n const style = document.createElement('style');\n if (styleId) style.id = styleId;\n style.textContent = css;\n document.head.appendChild(style);\n return style;\n }\n\n clear(): void {\n this.variables = [];\n this.rules = [];\n this.mediaRules = [];\n this.keyframes = [];\n this.fontFaces = [];\n this.imports = [];\n this.containerRules = [];\n this.supportsRules = [];\n this.layerRules = [];\n this._layerOrder = [];\n }\n}\n\nexport const styles = new CreateStyle();\n\n\nexport const {\n addVar, var: getVar,\n addTag, addClass, addId,\n addPseudoClass, addPseudoElement, addAttribute, attrEquals, attrContainsWord, attrStartsWith, attrEndsWith, attrContains,\n descendant, child: childStyle, adjacentSibling, generalSibling, multiple: multipleStyle,\n addName, nesting,\n keyframe, keyframeFromTo,\n fontFace,\n import: importStyle,\n media: mediaStyle,\n mediaScreen, mediaPrint, mediaMinWidth, mediaMaxWidth, mediaDark, mediaLight, mediaReducedMotion,\n container, addContainer,\n supports: supportsStyle,\n layerOrder, layer,\n add: addStyle, important,\n render: renderStyle, inject: injectStyle, clear: clearStyle\n} = styles;\n\nexport default styles;"],"mappings":"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","names":["styles","descendant","container","layer"]}
package/dist/style.mjs CHANGED
@@ -481,3 +481,4 @@ export {
481
481
  styles,
482
482
  supportsStyle
483
483
  };
484
+ //# sourceMappingURL=style.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/style.ts"],"sourcesContent":["/**\n * Elit - CreateStyle CSS Generation System\n */\n\nexport interface CSSVariable {\n name: string;\n value: string;\n toString(): string;\n}\n\nexport interface CSSRule {\n selector: string;\n styles: Record<string, string | number>;\n nested?: CSSRule[];\n type: 'tag' | 'class' | 'id' | 'pseudo-class' | 'pseudo-element' | 'name' | 'custom' | 'media' | 'attribute';\n}\n\nexport interface MediaRule {\n type: string;\n condition: string;\n rules: CSSRule[];\n}\n\nexport interface KeyframeStep {\n step: string | number;\n styles: Record<string, string | number>;\n}\n\nexport interface Keyframes {\n name: string;\n steps: KeyframeStep[];\n}\n\nexport interface FontFace {\n fontFamily: string;\n src: string;\n fontWeight?: string | number;\n fontStyle?: string;\n fontDisplay?: string;\n unicodeRange?: string;\n}\n\nexport interface ContainerRule {\n name?: string;\n condition: string;\n rules: CSSRule[];\n}\n\nexport interface SupportsRule {\n condition: string;\n rules: CSSRule[];\n}\n\nexport interface LayerRule {\n name: string;\n rules: CSSRule[];\n}\n\nexport class CreateStyle {\n private variables: CSSVariable[] = [];\n private rules: CSSRule[] = [];\n private mediaRules: MediaRule[] = [];\n private keyframes: Keyframes[] = [];\n private fontFaces: FontFace[] = [];\n private imports: string[] = [];\n private containerRules: ContainerRule[] = [];\n private supportsRules: SupportsRule[] = [];\n private layerRules: LayerRule[] = [];\n private _layerOrder: string[] = [];\n\n // CSS Variables\n addVar(name: string, value: string): CSSVariable {\n const cssVar: CSSVariable = {\n name: name.startsWith('--') ? name : `--${name}`,\n value,\n toString() { return `var(${this.name})`; }\n };\n this.variables.push(cssVar);\n return cssVar;\n }\n\n var(variable: CSSVariable | string, fallback?: string): string {\n const varName = typeof variable === 'string'\n ? (variable.startsWith('--') ? variable : `--${variable}`)\n : variable.name;\n return fallback ? `var(${varName}, ${fallback})` : `var(${varName})`;\n }\n\n // Basic Selectors\n addTag(tag: string, styles: Record<string, string | number>): CSSRule {\n const rule: CSSRule = { selector: tag, styles, type: 'tag' };\n this.rules.push(rule);\n return rule;\n }\n\n addClass(name: string, styles: Record<string, string | number>): CSSRule {\n const selector = name.startsWith('.') ? name : `.${name}`;\n const rule: CSSRule = { selector, styles, type: 'class' };\n this.rules.push(rule);\n return rule;\n }\n\n addId(name: string, styles: Record<string, string | number>): CSSRule {\n const selector = name.startsWith('#') ? name : `#${name}`;\n const rule: CSSRule = { selector, styles, type: 'id' };\n this.rules.push(rule);\n return rule;\n }\n\n // Pseudo Selectors\n addPseudoClass(pseudo: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n const pseudoClass = pseudo.startsWith(':') ? pseudo : `:${pseudo}`;\n const selector = baseSelector ? `${baseSelector}${pseudoClass}` : pseudoClass;\n const rule: CSSRule = { selector, styles, type: 'pseudo-class' };\n this.rules.push(rule);\n return rule;\n }\n\n addPseudoElement(pseudo: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n const pseudoElement = pseudo.startsWith('::') ? pseudo : `::${pseudo}`;\n const selector = baseSelector ? `${baseSelector}${pseudoElement}` : pseudoElement;\n const rule: CSSRule = { selector, styles, type: 'pseudo-element' };\n this.rules.push(rule);\n return rule;\n }\n\n // Attribute Selectors\n addAttribute(attr: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n const attrSelector = attr.startsWith('[') ? attr : `[${attr}]`;\n const selector = baseSelector ? `${baseSelector}${attrSelector}` : attrSelector;\n const rule: CSSRule = { selector, styles, type: 'attribute' };\n this.rules.push(rule);\n return rule;\n }\n\n attrEquals(attr: string, value: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n return this.addAttribute(`${attr}=\"${value}\"`, styles, baseSelector);\n }\n\n attrContainsWord(attr: string, value: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n return this.addAttribute(`${attr}~=\"${value}\"`, styles, baseSelector);\n }\n\n attrStartsWith(attr: string, value: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n return this.addAttribute(`${attr}^=\"${value}\"`, styles, baseSelector);\n }\n\n attrEndsWith(attr: string, value: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n return this.addAttribute(`${attr}$=\"${value}\"`, styles, baseSelector);\n }\n\n attrContains(attr: string, value: string, styles: Record<string, string | number>, baseSelector?: string): CSSRule {\n return this.addAttribute(`${attr}*=\"${value}\"`, styles, baseSelector);\n }\n\n // Combinator Selectors\n descendant(ancestor: string, descendant: string, styles: Record<string, string | number>): CSSRule {\n return this.createAndAddRule(`${ancestor} ${descendant}`, styles);\n }\n\n child(parent: string, childSel: string, styles: Record<string, string | number>): CSSRule {\n return this.createAndAddRule(`${parent} > ${childSel}`, styles);\n }\n\n adjacentSibling(element: string, sibling: string, styles: Record<string, string | number>): CSSRule {\n return this.createAndAddRule(`${element} + ${sibling}`, styles);\n }\n\n generalSibling(element: string, sibling: string, styles: Record<string, string | number>): CSSRule {\n return this.createAndAddRule(`${element} ~ ${sibling}`, styles);\n }\n\n multiple(selectors: string[], styles: Record<string, string | number>): CSSRule {\n return this.createAndAddRule(selectors.join(', '), styles);\n }\n\n // Nesting (BEM-style)\n addName(name: string, styles: Record<string, string | number>): CSSRule {\n const selector = name.startsWith('--') ? `&${name}` : `&--${name}`;\n const rule: CSSRule = { selector, styles, type: 'name' };\n return rule;\n }\n\n nesting(parentRule: CSSRule, ...childRules: CSSRule[]): CSSRule {\n parentRule.nested = childRules;\n return parentRule;\n }\n\n // @keyframes - Animations\n keyframe(name: string, steps: Record<string | number, Record<string, string | number>>): Keyframes {\n const keyframeSteps: KeyframeStep[] = Object.entries(steps).map(([step, styles]) => ({\n step: step === 'from' ? 'from' : step === 'to' ? 'to' : `${step}%`,\n styles\n }));\n const kf: Keyframes = { name, steps: keyframeSteps };\n this.keyframes.push(kf);\n return kf;\n }\n\n keyframeFromTo(name: string, from: Record<string, string | number>, to: Record<string, string | number>): Keyframes {\n return this.keyframe(name, { from, to });\n }\n\n // @font-face - Custom Fonts\n fontFace(options: FontFace): FontFace {\n this.fontFaces.push(options);\n return options;\n }\n\n // @import - Import Stylesheets\n import(url: string, mediaQuery?: string): string {\n const importRule = mediaQuery ? `@import url(\"${url}\") ${mediaQuery};` : `@import url(\"${url}\");`;\n this.imports.push(importRule);\n return importRule;\n }\n\n // @media - Media Queries\n media(type: string, condition: string, rules: Record<string, Record<string, string | number>>): MediaRule {\n const mediaRule: MediaRule = { type, condition, rules: this.rulesToCSSRules(rules) };\n this.mediaRules.push(mediaRule);\n return mediaRule;\n }\n\n mediaScreen(condition: string, rules: Record<string, Record<string, string | number>>): MediaRule {\n return this.media('screen', condition, rules);\n }\n\n mediaPrint(rules: Record<string, Record<string, string | number>>): MediaRule {\n return this.media('print', '', rules);\n }\n\n mediaMinWidth(minWidth: string, rules: Record<string, Record<string, string | number>>): MediaRule {\n return this.media('screen', `min-width: ${minWidth}`, rules);\n }\n\n mediaMaxWidth(maxWidth: string, rules: Record<string, Record<string, string | number>>): MediaRule {\n return this.media('screen', `max-width: ${maxWidth}`, rules);\n }\n\n mediaDark(rules: Record<string, Record<string, string | number>>): MediaRule {\n const mediaRule: MediaRule = { type: '', condition: 'prefers-color-scheme: dark', rules: this.rulesToCSSRules(rules) };\n this.mediaRules.push(mediaRule);\n return mediaRule;\n }\n\n mediaLight(rules: Record<string, Record<string, string | number>>): MediaRule {\n const mediaRule: MediaRule = { type: '', condition: 'prefers-color-scheme: light', rules: this.rulesToCSSRules(rules) };\n this.mediaRules.push(mediaRule);\n return mediaRule;\n }\n\n mediaReducedMotion(rules: Record<string, Record<string, string | number>>): MediaRule {\n const mediaRule: MediaRule = { type: '', condition: 'prefers-reduced-motion: reduce', rules: this.rulesToCSSRules(rules) };\n this.mediaRules.push(mediaRule);\n return mediaRule;\n }\n\n // @container - Container Queries\n container(condition: string, rules: Record<string, Record<string, string | number>>, name?: string): ContainerRule {\n const containerRule: ContainerRule = { name, condition, rules: this.rulesToCSSRules(rules) };\n this.containerRules.push(containerRule);\n return containerRule;\n }\n\n addContainer(name: string, styles: Record<string, string | number>): CSSRule {\n const containerStyles = { ...styles, containerName: name };\n return this.addClass(name, containerStyles);\n }\n\n // @supports - Feature Queries\n supports(condition: string, rules: Record<string, Record<string, string | number>>): SupportsRule {\n const supportsRule: SupportsRule = { condition, rules: this.rulesToCSSRules(rules) };\n this.supportsRules.push(supportsRule);\n return supportsRule;\n }\n\n // @layer - Cascade Layers\n layerOrder(...layers: string[]): void {\n this._layerOrder = layers;\n }\n\n layer(name: string, rules: Record<string, Record<string, string | number>>): LayerRule {\n const layerRule: LayerRule = { name, rules: this.rulesToCSSRules(rules) };\n this.layerRules.push(layerRule);\n return layerRule;\n }\n\n // Custom Rules\n add(rules: Record<string, Record<string, string | number>>): CSSRule[] {\n const cssRules: CSSRule[] = Object.entries(rules).map(([selector, styles]) => {\n const rule: CSSRule = { selector, styles, type: 'custom' };\n this.rules.push(rule);\n return rule;\n });\n return cssRules;\n }\n\n important(value: string | number): string {\n return `${value} !important`;\n }\n\n // Utility Methods\n private toKebabCase(str: string): string {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n }\n\n // Helper: Create and add rule (eliminates duplication in combinator selectors)\n private createAndAddRule(selector: string, styles: Record<string, string | number>, type: CSSRule['type'] = 'custom'): CSSRule {\n const rule: CSSRule = { selector, styles, type };\n this.rules.push(rule);\n return rule;\n }\n\n // Helper: Convert rules object to CSSRule array (eliminates duplication in media/container/supports/layer)\n private rulesToCSSRules(rules: Record<string, Record<string, string | number>>): CSSRule[] {\n return Object.entries(rules).map(([selector, styles]) => ({\n selector,\n styles,\n type: 'custom' as const\n }));\n }\n\n // Helper: Render rules with indentation (eliminates duplication in render methods)\n private renderRulesWithIndent(rules: CSSRule[], indent: string = ' '): string {\n return rules.map(rule => this.renderRule(rule, indent)).join('\\n');\n }\n\n private stylesToString(styles: Record<string, string | number>, indent: string = ' '): string {\n return Object.entries(styles)\n .map(([prop, value]) => {\n const cssValue = typeof value === 'object' && value !== null && 'name' in value\n ? `var(${(value as CSSVariable).name})`\n : value;\n return `${indent}${this.toKebabCase(prop)}: ${cssValue};`;\n })\n .join('\\n');\n }\n\n private renderRule(rule: CSSRule, indent: string = ''): string {\n let css = `${indent}${rule.selector} {\\n${this.stylesToString(rule.styles, indent + ' ')}\\n`;\n\n if (rule.nested && rule.nested.length > 0) {\n for (const nestedRule of rule.nested) {\n const nestedSelector = nestedRule.selector.startsWith('&')\n ? nestedRule.selector.replace(/&/g, rule.selector)\n : `${rule.selector} ${nestedRule.selector}`;\n css += `\\n${indent}${nestedSelector} {\\n${this.stylesToString(nestedRule.styles, indent + ' ')}\\n${indent}}\\n`;\n }\n }\n\n css += `${indent}}`;\n return css;\n }\n\n private renderMediaRule(media: MediaRule): string {\n const condition = media.type && media.condition\n ? `${media.type} and (${media.condition})`\n : media.type\n ? media.type\n : `(${media.condition})`;\n return `@media ${condition} {\\n${this.renderRulesWithIndent(media.rules)}\\n}`;\n }\n\n private renderKeyframes(kf: Keyframes): string {\n let css = `@keyframes ${kf.name} {\\n`;\n for (const step of kf.steps) {\n css += ` ${step.step} {\\n${this.stylesToString(step.styles, ' ')}\\n }\\n`;\n }\n css += '}';\n return css;\n }\n\n private renderFontFace(ff: FontFace): string {\n let css = '@font-face {\\n';\n css += ` font-family: \"${ff.fontFamily}\";\\n`;\n css += ` src: ${ff.src};\\n`;\n if (ff.fontWeight) css += ` font-weight: ${ff.fontWeight};\\n`;\n if (ff.fontStyle) css += ` font-style: ${ff.fontStyle};\\n`;\n if (ff.fontDisplay) css += ` font-display: ${ff.fontDisplay};\\n`;\n if (ff.unicodeRange) css += ` unicode-range: ${ff.unicodeRange};\\n`;\n css += '}';\n return css;\n }\n\n private renderContainerRule(container: ContainerRule): string {\n const nameStr = container.name ? `${container.name} ` : '';\n return `@container ${nameStr}(${container.condition}) {\\n${this.renderRulesWithIndent(container.rules)}\\n}`;\n }\n\n private renderSupportsRule(supports: SupportsRule): string {\n return `@supports (${supports.condition}) {\\n${this.renderRulesWithIndent(supports.rules)}\\n}`;\n }\n\n private renderLayerRule(layer: LayerRule): string {\n return `@layer ${layer.name} {\\n${this.renderRulesWithIndent(layer.rules)}\\n}`;\n }\n\n // Render Output\n render(...additionalRules: (CSSRule | CSSRule[] | MediaRule | Keyframes | ContainerRule | SupportsRule | LayerRule | undefined | null)[]): string {\n const parts: string[] = [];\n\n if (this.imports.length > 0) {\n parts.push(this.imports.join('\\n'));\n }\n\n if (this._layerOrder.length > 0) {\n parts.push(`@layer ${this._layerOrder.join(', ')};`);\n }\n\n if (this.variables.length > 0) {\n const varDeclarations = this.variables\n .map(v => ` ${v.name}: ${v.value};`)\n .join('\\n');\n parts.push(`:root {\\n${varDeclarations}\\n}`);\n }\n\n for (const ff of this.fontFaces) {\n parts.push(this.renderFontFace(ff));\n }\n\n for (const kf of this.keyframes) {\n parts.push(this.renderKeyframes(kf));\n }\n\n const allRules: CSSRule[] = [...this.rules];\n const allMediaRules: MediaRule[] = [...this.mediaRules];\n const allKeyframes: Keyframes[] = [];\n const allContainerRules: ContainerRule[] = [...this.containerRules];\n const allSupportsRules: SupportsRule[] = [...this.supportsRules];\n const allLayerRules: LayerRule[] = [...this.layerRules];\n\n for (const item of additionalRules) {\n if (!item) continue;\n if (Array.isArray(item)) {\n allRules.push(...item);\n } else if ('condition' in item && 'rules' in item && !('name' in item && 'steps' in item)) {\n if ('type' in item) {\n allMediaRules.push(item as MediaRule);\n } else if ('name' in item && typeof (item as any).name === 'string') {\n allContainerRules.push(item as ContainerRule);\n } else {\n allSupportsRules.push(item as SupportsRule);\n }\n } else if ('name' in item && 'steps' in item) {\n allKeyframes.push(item as Keyframes);\n } else if ('name' in item && 'rules' in item) {\n allLayerRules.push(item as LayerRule);\n } else {\n allRules.push(item as CSSRule);\n }\n }\n\n for (const kf of allKeyframes) {\n parts.push(this.renderKeyframes(kf));\n }\n\n for (const layer of allLayerRules) {\n parts.push(this.renderLayerRule(layer));\n }\n\n for (const rule of allRules) {\n parts.push(this.renderRule(rule));\n }\n\n for (const supports of allSupportsRules) {\n parts.push(this.renderSupportsRule(supports));\n }\n\n for (const container of allContainerRules) {\n parts.push(this.renderContainerRule(container));\n }\n\n for (const media of allMediaRules) {\n parts.push(this.renderMediaRule(media));\n }\n\n return parts.join('\\n\\n');\n }\n\n inject(styleId?: string): HTMLStyleElement {\n const css = this.render();\n const style = document.createElement('style');\n if (styleId) style.id = styleId;\n style.textContent = css;\n document.head.appendChild(style);\n return style;\n }\n\n clear(): void {\n this.variables = [];\n this.rules = [];\n this.mediaRules = [];\n this.keyframes = [];\n this.fontFaces = [];\n this.imports = [];\n this.containerRules = [];\n this.supportsRules = [];\n this.layerRules = [];\n this._layerOrder = [];\n }\n}\n\nexport const styles = new CreateStyle();\n\n\nexport const {\n addVar, var: getVar,\n addTag, addClass, addId,\n addPseudoClass, addPseudoElement, addAttribute, attrEquals, attrContainsWord, attrStartsWith, attrEndsWith, attrContains,\n descendant, child: childStyle, adjacentSibling, generalSibling, multiple: multipleStyle,\n addName, nesting,\n keyframe, keyframeFromTo,\n fontFace,\n import: importStyle,\n media: mediaStyle,\n mediaScreen, mediaPrint, mediaMinWidth, mediaMaxWidth, mediaDark, mediaLight, mediaReducedMotion,\n container, addContainer,\n supports: supportsStyle,\n layerOrder, layer,\n add: addStyle, important,\n render: renderStyle, inject: injectStyle, clear: clearStyle\n} = styles;\n\nexport default styles;"],"mappings":"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","names":["styles","descendant","container","layer"]}