nuclo 0.1.122 → 0.1.124

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -26,7 +26,7 @@ render(counter, document.body);
26
26
  - **Direct DOM Manipulation** – Work directly with the DOM, no virtual layer in between
27
27
  - **Tiny Footprint** – Minimal bundle size, maximum performance
28
28
  - **Global Tag Builders** – Natural API with global functions for all HTML and SVG elements
29
- - **TypeScript-First** – Full type definitions for all 140+ HTML and SVG tags
29
+ - **TypeScript-First** – Full type definitions for all 175 HTML and SVG tags
30
30
  - **Targeted DOM Updates** – `update()` re-runs dynamic bindings and only touches DOM where values changed
31
31
 
32
32
  ---
@@ -408,8 +408,8 @@ All HTML and SVG tags are available globally:
408
408
 
409
409
  ```ts
410
410
  div(), span(), button(), input(), h1(), p(), ul(), li()
411
- svg(), circle(), path(), rect(), g()
412
- // ... and 140+ more
411
+ svgSvg(), circleSvg(), pathSvg(), rectSvg(), gSvg()
412
+ // ... and 175 total builders
413
413
  ```
414
414
 
415
415
  ### Attributes
@@ -0,0 +1,2 @@
1
+ const e=typeof window<`u`&&typeof document<`u`;export{e as t};
2
+ //# sourceMappingURL=environment-BNEQOK9T.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-BNEQOK9T.mjs","names":[],"sources":["../src/utility/environment.ts"],"sourcesContent":["/**\n * Simplified environment detection - minimal overhead for smaller bundle size\n */\n\n// Basic environment detection - no complex caching or edge cases\nexport const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n"],"mappings":"AAKA,MAAa,EAAY,OAAO,OAAW,KAAe,OAAO,SAAa"}
@@ -0,0 +1,2 @@
1
+ const e=typeof window<`u`&&typeof document<`u`;Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return e}});
2
+ //# sourceMappingURL=environment-BQwVWSG6.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-BQwVWSG6.cjs","names":[],"sources":["../src/utility/environment.ts"],"sourcesContent":["/**\n * Simplified environment detection - minimal overhead for smaller bundle size\n */\n\n// Basic environment detection - no complex caching or edge cases\nexport const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n"],"mappings":"AAKA,MAAa,EAAY,OAAO,OAAW,KAAe,OAAO,SAAa"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../environment-BQwVWSG6.cjs`);var t=class{nodeType=1;nodeName=``;nodeValue=null;parentNode=null;_childNodes=null;textContent=``;get childNodes(){let e=this._childNodes??[];return{...e,length:e.length,item:t=>e[t]||null,[Symbol.iterator]:function*(){for(let t of e)yield t},forEach:t=>{for(let n=0;n<e.length;n++)t(e[n],n,this.childNodes)},entries:function*(){for(let t=0;t<e.length;t++)yield[t,e[t]]},keys:function*(){for(let t=0;t<e.length;t++)yield t},values:function*(){for(let t of e)yield t}}}},n=class{get cssText(){let e=Object.entries(this);return e.length===0?``:e.map(([e,t])=>`${e}: ${t}`).join(`; `)}setProperty(e,t){this[e]=t}getPropertyValue(e){return this[e]||``}},r=class{_el;constructor(e){this._el=e}add(...e){let t=this._el.className?this._el.className.split(` `).filter(Boolean):[];for(let n of e)n&&!t.includes(n)&&t.push(n);this._el.className=t.join(` `)}remove(...e){this._el.className&&(this._el.className=this._el.className.split(` `).filter(t=>t&&!e.includes(t)).join(` `))}contains(e){return!!this._el.className&&this._el.className.split(` `).includes(e)}toggle(e,t){let n=this.contains(e);return t===void 0?n?(this.remove(e),!1):(this.add(e),!0):t?(this.add(e),!0):(this.remove(e),!1)}replace(e,t){return this.contains(e)?(this.remove(e),this.add(t),!0):!1}item(e){return this._el.className.split(` `).filter(Boolean)[e]??null}get length(){return this._el.className?this._el.className.split(` `).filter(Boolean).length:0}get value(){return this._el.className}set value(e){this._el.className=e}toString(){return this._el.className}supports(e){return!1}forEach(e){let t=this._el.className.split(` `).filter(Boolean);for(let n=0;n<t.length;n++)e(t[n],n,this)}[Symbol.iterator](){let e=this._el.className.split(` `).filter(Boolean),t=0;return{next(){return t<e.length?{value:e[t++],done:!1}:{value:``,done:!0}}}}entries(){let e=this._el.className.split(` `).filter(Boolean),t=0;return{next(){return t<e.length?{value:[t,e[t++]],done:!1}:{value:[0,``],done:!0}}}}keys(){let e=this.length,t=0;return{next(){return t<e?{value:t++,done:!1}:{value:0,done:!0}}}}values(){return this[Symbol.iterator]()}};function i(e){return typeof e==`object`&&!!e&&`tagName`in e}function a(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===3}function o(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===8}var s=class extends t{tagName;children;attributes;className=``;classList;textContent=``;_innerHTML=``;parentNode=null;rawMods;mods;style;id=``;namespaceURI;sheet;_listeners;get innerHTML(){return this.serializeChildren()}set innerHTML(e){this._innerHTML=e}serializeChildren(){let e=``;for(let t of this.children)i(t)?e+=this.serializeElement(t):a(t)?e+=t.textContent||``:o(t)&&(e+=`<!--${t.data||``}-->`);return e}serializeElement(e){let t=e.tagName.toLowerCase(),n=`<${t}`;if(e.id&&(n+=` id="${e.id}"`),e.className&&(n+=` class="${e.className}"`),e.attributes)for(let[t,r]of e.attributes)t!==`id`&&t!==`class`&&(n+=` ${t}="${r}"`);if(n+=`>`,e.children&&e.children.length>0)for(let t of e.children)i(t)?n+=this.serializeElement(t):a(t)?n+=t.textContent||``:o(t)&&(n+=`<!--${t.data||``}-->`);return n+=`</${t}>`,n}constructor(t){if(super(),this.tagName=t.toLowerCase(),this.nodeType=1,this.nodeName=t.toUpperCase(),this.children=[],this.attributes=new Map,!e.t)this._listeners=null,this.style=new n,this.classList=new r(this);else{this._listeners=new Map;let e={};if(this.style=new Proxy({},{get:(t,n)=>n===`setProperty`?(t,n)=>{e[t]=n}:n===`getPropertyValue`?t=>e[t]||``:n===`cssText`?Object.entries(e).map(([e,t])=>`${e}: ${t}`).join(`; `):e[n],set:(t,n,r)=>(e[n]=r,!0)}),this.tagName===`style`){let e=[];this.sheet={cssRules:e,insertRule:(t,n)=>{let r=n??e.length,i;if(t.trim().startsWith(`@`)){let e=[],n=t.replace(/^@\w+\s+/,``).replace(/\s*\{[\s\S]*\}$/,``).trim();i={cssText:t,conditionText:n,media:{mediaText:n},cssRules:e,insertRule:(t,n)=>{let r=n??e.length;return e.splice(r,0,{cssText:t,selectorText:t.split(`{`)[0].trim(),style:{},type:1}),r},deleteRule:t=>{e.splice(t,1)},type:4}}else i={cssText:t,selectorText:t.split(`{`)[0].trim(),style:{},type:1};return e.splice(r,0,i),r},deleteRule:t=>{e.splice(t,1)}}}this.classList=c(this)}}appendChild(t){return this.children.push(t),e.t&&this._childNodes&&this._childNodes.push(t),typeof t==`object`&&t&&`parentNode`in t&&(t.parentNode=this),t}setAttribute(e,t){this.attributes.set(e,t),e===`class`?this.className=t:e===`id`&&(this.id=t)}getAttribute(e){return this.attributes.get(e)||null}removeAttribute(e){this.attributes.delete(e),e===`class`&&(this.className=``)}hasAttribute(e){return this.attributes.has(e)}insertBefore(t,n){if(n===null)return this.appendChild(t);let r=this.children.indexOf(n);if(r!==-1){if(this.children.splice(r,0,t),e.t&&this._childNodes){let e=this._childNodes.indexOf(n);e!==-1&&this._childNodes.splice(e,0,t)}typeof t==`object`&&t&&`parentNode`in t&&(t.parentNode=this)}return t}removeChild(t){let n=this.children.indexOf(t);if(n!==-1){if(this.children.splice(n,1),e.t&&this._childNodes){let e=this._childNodes.indexOf(t);e!==-1&&this._childNodes.splice(e,1)}typeof t==`object`&&t&&`parentNode`in t&&(t.parentNode=null)}return t}replaceChild(t,n){let r=this.children.indexOf(n);if(r!==-1){if(this.children[r]=t,e.t&&this._childNodes){let e=this._childNodes.indexOf(n);e!==-1&&(this._childNodes[e]=t)}typeof t==`object`&&t&&`parentNode`in t&&(t.parentNode=this),typeof n==`object`&&n&&`parentNode`in n&&(n.parentNode=null)}return n}addEventListener(e,t){this._listeners&&(this._listeners.has(e)||this._listeners.set(e,new Set),this._listeners.get(e).add(t))}removeEventListener(e,t){let n=this._listeners?.get(e);n&&n.delete(t)}dispatchEvent(e){let t=this._listeners?.get(e.type);if(t)for(let n of t)try{n(e)}catch(e){console.error(`Error in event listener:`,e)}return e.bubbles&&this.parentNode&&typeof this.parentNode==`object`&&`dispatchEvent`in this.parentNode&&typeof this.parentNode.dispatchEvent==`function`&&this.parentNode.dispatchEvent(e),!0}querySelector(e){if(e.startsWith(`#`)){let t=e.slice(1);return this.querySelectorById(t)}else if(e.startsWith(`.`)){let t=e.slice(1);return this.querySelectorByClass(t)}else return this.querySelectorByTag(e)}querySelectorById(e){if(this.id===e)return this;for(let t of this.children)if(i(t)){if(t.id===e)return t;let n=t.querySelector(`#${e}`);if(n)return n}return null}querySelectorByClass(e){if(this.classList.contains(e))return this;for(let t of this.children)if(i(t)){if(t.classList?.contains(e))return t;let n=t.querySelector(`.${e}`);if(n)return n}return null}querySelectorByTag(e){let t=e.toLowerCase();if(this.tagName.toLowerCase()===t)return this;for(let n of this.children)if(i(n)){if(n.tagName.toLowerCase()===t)return n;let r=n.querySelector(e);if(r)return r}return null}querySelectorAll(e){let t=[];if(e.startsWith(`#`)){let n=this.querySelector(e);n&&t.push(n)}else if(e.startsWith(`.`)){let n=e.slice(1);this.querySelectorAllByClass(n,t)}else{let n=e.toLowerCase();this.querySelectorAllByTag(n,t)}return t}querySelectorAllByClass(e,t){this.classList.contains(e)&&t.push(this);for(let n of this.children)i(n)&&(n.classList?.contains(e)&&t.push(n),n.querySelectorAllByClass(e,t))}querySelectorAllByTag(e,t){this.tagName.toLowerCase()===e&&t.push(this);for(let n of this.children)i(n)&&(n.tagName.toLowerCase()===e&&t.push(n),n.querySelectorAllByTag(e,t))}};function c(e){let t=()=>e.className.split(` `).filter(e=>e),n=t=>{e.className=t.join(` `)},r={add:(...e)=>{let r=t();for(let t of e)t&&!r.includes(t)&&r.push(t);n(r)},remove:(...e)=>{e.length!==0&&n(t().filter(t=>!e.includes(t)))},toggle:(e,t)=>{let n=r.contains(e);return t===void 0?n?(r.remove(e),!1):(r.add(e),!0):t?(r.add(e),!0):(r.remove(e),!1)},contains:e=>t().includes(e),replace:(e,r)=>{let i=t(),a=i.indexOf(e);return a===-1?!1:(i[a]=r,n(i),!0)},item:e=>t()[e]||null,get length(){return t().length},toString:()=>e.className,[Symbol.iterator]:function*(){yield*t()},forEach:e=>{let n=t();for(let t=0;t<n.length;t++)e(n[t],t,r)},entries:function*(){let e=t();for(let t=0;t<e.length;t++)yield[t,e[t]]},keys:function*(){let e=t();for(let t=0;t<e.length;t++)yield t},values:function*(){yield*t()},get value(){return e.className},set value(t){e.className=t},supports:e=>!1};return r}var l=class{nodeType=3;nodeName=`#text`;data;textContent;parentNode=null;constructor(e){this.data=e,this.textContent=e}get nodeValue(){return this.data}set nodeValue(e){this.data=e,this.textContent=e}},u=class{nodeType=11;nodeName=`#document-fragment`;childNodes=[];children=[];textContent=``;appendChild(e){return this.childNodes.push(e),e.nodeType===1&&this.children.push(e),e.parentNode=this,e}insertBefore(e,t){if(!t)return this.appendChild(e);let n=this.childNodes.indexOf(t);if(n!==-1&&(this.childNodes.splice(n,0,e),e.nodeType===1)){let n=this.children.indexOf(t);n!==-1&&this.children.splice(n,0,e)}return e.parentNode=this,e}removeChild(e){let t=this.childNodes.indexOf(e);if(t!==-1&&this.childNodes.splice(t,1),e.nodeType===1){let t=this.children.indexOf(e);t!==-1&&this.children.splice(t,1)}return e.parentNode=null,e}replaceChild(e,t){let n=this.childNodes.indexOf(t);if(n!==-1&&(this.childNodes[n]=e,t.nodeType===1&&e.nodeType===1)){let n=this.children.indexOf(t);n!==-1&&(this.children[n]=e)}return e.parentNode=this,t.parentNode=null,e}querySelector(){return null}querySelectorAll(){return[]}},d=class{head;body;_listeners;constructor(){this.head=new s(`head`),this.body=new s(`body`),this._listeners=new Map}createElement(e,t){return new s(e)}createElementNS(e,t,n){let r=new s(t);return r.namespaceURI=e,r}createTextNode(e){return new l(e)}createComment(e){return{nodeType:8,nodeName:`#comment`,data:e,textContent:e,nodeValue:e,parentNode:null,nextSibling:null,previousSibling:null}}createDocumentFragment(){return new u}querySelector(e){if(e.startsWith(`#`)){let t=e.slice(1);if(t===`nuclo-styles`&&this.head.children){for(let e of this.head.children)if(e.id===t)return e}}return null}querySelectorAll(e){return[]}addEventListener(e,t,n){this._listeners.has(e)||this._listeners.set(e,new Map),this._listeners.get(e).set(t,{listener:t,options:n})}removeEventListener(e,t,n){let r=this._listeners.get(e);r&&(r.delete(t),r.size===0&&this._listeners.delete(e))}dispatchEvent(e){let t=this._listeners.get(e.type);if(t){let n=Array.from(t.values());for(let t=0;t<n.length;t++){let{listener:r}=n[t];try{r(e)}catch(e){console.error(`Error in event listener:`,e)}}}return!0}contains(e){return!1}};const f=globalThis.document||new d;var p=class{type;bubbles;cancelable;composed;currentTarget=null;defaultPrevented=!1;eventPhase=0;isTrusted=!1;target=null;timeStamp;AT_TARGET=2;BUBBLING_PHASE=3;CAPTURING_PHASE=1;NONE=0;returnValue=!0;srcElement=null;cancelBubble=!1;constructor(e,t){this.type=e,this.bubbles=t?.bubbles||!1,this.cancelable=t?.cancelable||!1,this.composed=t?.composed||!1,this.timeStamp=Date.now()}composedPath(){return[]}initEvent(e,t,n){}preventDefault(){this.cancelable&&(this.defaultPrevented=!0)}stopImmediatePropagation(){this.cancelBubble=!0}stopPropagation(){this.cancelBubble=!0}},m=class extends p{detail;constructor(e,t){super(e,t),this.detail=t?.detail}initCustomEvent(e,t,n,r){}};const h=globalThis.Event||p,g=globalThis.CustomEvent||m,_=t,v=s,y=s;if(typeof window>`u`&&typeof globalThis<`u`){let e=globalThis;e.document||=f,e.Event||=h,e.CustomEvent||=g,e.Node||=t,e.Element||=s,e.HTMLElement||=s}exports.CustomEvent=g,exports.Element=v,exports.Event=h,exports.HTMLElement=y,exports.Node=_,exports.NucloCustomEvent=m,exports.NucloDocument=d,exports.NucloElement=s,exports.NucloEvent=p,exports.NucloNode=t,exports.NucloText=l,exports.document=f;
2
+ //# sourceMappingURL=nuclo.polyfill.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nuclo.polyfill.cjs","names":["isBrowser"],"sources":["../../src/polyfill/Node.ts","../../src/polyfill/Element.ts","../../src/polyfill/Text.ts","../../src/polyfill/Document.ts","../../src/polyfill/Event.ts","../../src/polyfill/index.ts"],"sourcesContent":["/**\n * Base Node class for instanceof checks in Node.js polyfill\n */\nexport class NucloNode {\n nodeType: number = 1; // ELEMENT_NODE\n nodeName: string = '';\n nodeValue: string | null = null;\n parentNode: unknown = null;\n _childNodes: Node[] | null = null;\n textContent: string = '';\n\n get childNodes(): NodeListOf<ChildNode> {\n const nodes = this._childNodes ?? [];\n return {\n ...nodes,\n length: nodes.length,\n item: (index: number) => (nodes[index] as ChildNode) || null,\n [Symbol.iterator]: function* () {\n for (const node of nodes) {\n yield node as ChildNode;\n }\n },\n forEach: (callback: (value: ChildNode, key: number, parent: NodeListOf<ChildNode>) => void) => {\n for (let i = 0; i < nodes.length; i++) {\n callback(nodes[i] as ChildNode, i, this.childNodes);\n }\n },\n entries: function* () {\n for (let i = 0; i < nodes.length; i++) {\n yield [i, nodes[i] as ChildNode] as [number, ChildNode];\n }\n },\n keys: function* () {\n for (let i = 0; i < nodes.length; i++) {\n yield i;\n }\n },\n values: function* () {\n for (const node of nodes) {\n yield node as ChildNode;\n }\n }\n } as unknown as NodeListOf<ChildNode>;\n }\n}\n","import { NucloNode } from './Node';\nimport { isBrowser } from '../utility/environment';\n\n/**\n * Lightweight style object for SSR — prototype methods instead of Object.defineProperty per element.\n * Stores CSS properties as own properties and provides cssText/setProperty/getPropertyValue via prototype.\n */\nclass SSRStyle {\n [key: string]: unknown;\n\n get cssText(): string {\n const entries = Object.entries(this);\n if (entries.length === 0) return '';\n return entries.map(([k, v]) => `${k}: ${v}`).join('; ');\n }\n\n setProperty(name: string, value: string): void {\n (this as Record<string, unknown>)[name] = value;\n }\n\n getPropertyValue(name: string): string {\n return ((this as Record<string, unknown>)[name] as string) || '';\n }\n}\n\n// Lightweight classList for SSR — prototype methods instead of per-element closures\nclass SSRClassList {\n private _el: NucloElement;\n constructor(el: NucloElement) { this._el = el; }\n\n add(...tokens: string[]): void {\n const classes = this._el.className ? this._el.className.split(' ').filter(Boolean) : [];\n for (const t of tokens) if (t && !classes.includes(t)) classes.push(t);\n this._el.className = classes.join(' ');\n }\n remove(...tokens: string[]): void {\n if (!this._el.className) return;\n this._el.className = this._el.className.split(' ').filter(c => c && !tokens.includes(c)).join(' ');\n }\n contains(token: string): boolean {\n return !!this._el.className && this._el.className.split(' ').includes(token);\n }\n toggle(token: string, force?: boolean): boolean {\n const has = this.contains(token);\n if (force === undefined) { if (has) { this.remove(token); return false; } this.add(token); return true; }\n if (force) { this.add(token); return true; }\n this.remove(token); return false;\n }\n replace(oldToken: string, newToken: string): boolean {\n if (!this.contains(oldToken)) return false;\n this.remove(oldToken); this.add(newToken); return true;\n }\n item(index: number): string | null { return (this._el.className.split(' ').filter(Boolean)[index]) ?? null; }\n get length(): number { return this._el.className ? this._el.className.split(' ').filter(Boolean).length : 0; }\n get value(): string { return this._el.className; }\n set value(v: string) { this._el.className = v; }\n toString(): string { return this._el.className; }\n supports(_token: string): boolean { return false; }\n forEach(cb: (value: string, key: number, parent: DOMTokenList) => void): void {\n const classes = this._el.className.split(' ').filter(Boolean);\n for (let i = 0; i < classes.length; i++) cb(classes[i], i, this as unknown as DOMTokenList);\n }\n [Symbol.iterator](): Iterator<string> {\n const classes = this._el.className.split(' ').filter(Boolean);\n let i = 0;\n return { next(): IteratorResult<string> { return i < classes.length ? { value: classes[i++], done: false } : { value: '', done: true }; } };\n }\n entries(): Iterator<[number, string]> {\n const classes = this._el.className.split(' ').filter(Boolean);\n let i = 0;\n return { next(): IteratorResult<[number, string]> { return i < classes.length ? { value: [i, classes[i++]], done: false } : { value: [0, ''], done: true }; } };\n }\n keys(): Iterator<number> {\n const len = this.length; let i = 0;\n return { next(): IteratorResult<number> { return i < len ? { value: i++, done: false } : { value: 0, done: true }; } };\n }\n values(): Iterator<string> { return this[Symbol.iterator](); }\n}\n\ninterface TextNode {\n nodeType: 3;\n textContent: string;\n}\n\ninterface CommentNode {\n nodeType: 8;\n data: string;\n}\n\nfunction isElementNode(node: unknown): node is NucloElement {\n return typeof node === 'object' && node !== null && 'tagName' in node;\n}\n\nfunction isTextNode(node: unknown): node is TextNode {\n return typeof node === 'object' && node !== null && 'nodeType' in node && (node as { nodeType: number }).nodeType === 3;\n}\n\nfunction isCommentNode(node: unknown): node is CommentNode {\n return typeof node === 'object' && node !== null && 'nodeType' in node && (node as { nodeType: number }).nodeType === 8;\n}\n\nexport class NucloElement extends NucloNode {\n tagName: string;\n children: unknown[];\n attributes: Map<string, string>;\n className: string = '';\n classList: DOMTokenList;\n textContent: string = '';\n private _innerHTML: string = '';\n parentNode: unknown = null;\n rawMods?: unknown[];\n mods?: unknown[];\n style: CSSStyleDeclaration;\n id: string = '';\n namespaceURI?: string;\n sheet?: CSSStyleSheet | null;\n private _listeners: Map<string, Set<EventListener>> | null;\n\n get innerHTML(): string {\n return this.serializeChildren();\n }\n\n set innerHTML(value: string) {\n this._innerHTML = value;\n }\n \n private serializeChildren(): string {\n let html = '';\n for (const child of this.children) {\n if (isElementNode(child)) {\n html += this.serializeElement(child);\n } else if (isTextNode(child)) {\n html += child.textContent || '';\n } else if (isCommentNode(child)) {\n html += `<!--${child.data || ''}-->`;\n }\n }\n return html;\n }\n \n private serializeElement(element: NucloElement): string {\n const tag = element.tagName.toLowerCase();\n let html = `<${tag}`;\n \n // Add attributes\n if (element.id) {\n html += ` id=\"${element.id}\"`;\n }\n if (element.className) {\n html += ` class=\"${element.className}\"`;\n }\n if (element.attributes) {\n for (const [name, value] of element.attributes) {\n if (name !== 'id' && name !== 'class') {\n html += ` ${name}=\"${value}\"`;\n }\n }\n }\n \n html += '>';\n \n // Add children\n if (element.children && element.children.length > 0) {\n for (const child of element.children) {\n if (isElementNode(child)) {\n html += this.serializeElement(child);\n } else if (isTextNode(child)) {\n html += child.textContent || '';\n } else if (isCommentNode(child)) {\n html += `<!--${child.data || ''}-->`;\n }\n }\n }\n \n html += `</${tag}>`;\n return html;\n }\n \n constructor(tagName: string) {\n super();\n this.tagName = tagName.toLowerCase();\n this.nodeType = 1; // ELEMENT_NODE\n this.nodeName = tagName.toUpperCase();\n this.children = [];\n this.attributes = new Map<string, string>();\n\n if (!isBrowser) {\n // ── SSR path: minimal allocations, no Proxy, no event listeners ──\n this._listeners = null;\n\n // Prototype-based style — zero Object.defineProperty calls per element\n this.style = new SSRStyle() as unknown as CSSStyleDeclaration;\n\n // Prototype-based classList — zero closures per element\n this.classList = new SSRClassList(this) as unknown as DOMTokenList;\n // sheet stays undefined — not needed in SSR\n } else {\n // ── Browser path: full-featured Proxy style + DOMTokenList ──\n this._listeners = new Map();\n\n const styleProps: Record<string, string> = {};\n this.style = new Proxy({} as CSSStyleDeclaration, {\n get: (_target, prop: string) => {\n if (prop === 'setProperty') return (name: string, value: string) => { styleProps[name] = value; };\n if (prop === 'getPropertyValue') return (name: string) => styleProps[name] || '';\n if (prop === 'cssText') return Object.entries(styleProps).map(([k, v]) => `${k}: ${v}`).join('; ');\n return styleProps[prop];\n },\n set: (_target, prop: string, value: string) => { styleProps[prop] = value; return true; },\n });\n\n // CSSStyleSheet mock for style elements (browser only)\n if (this.tagName === 'style') {\n const cssRules: CSSRule[] = [];\n this.sheet = {\n cssRules: cssRules as unknown as CSSRuleList,\n insertRule: (rule: string, index?: number) => {\n const idx = index ?? cssRules.length;\n let mockRule: CSSRule;\n if (rule.trim().startsWith('@')) {\n const innerRules: CSSRule[] = [];\n const conditionText = rule.replace(/^@\\w+\\s+/, '').replace(/\\s*\\{[\\s\\S]*\\}$/, '').trim();\n mockRule = {\n cssText: rule, conditionText,\n media: { mediaText: conditionText } as MediaList,\n cssRules: innerRules as unknown as CSSRuleList,\n insertRule: (innerRule: string, innerIndex?: number) => {\n const innerIdx = innerIndex ?? innerRules.length;\n innerRules.splice(innerIdx, 0, { cssText: innerRule, selectorText: innerRule.split('{')[0].trim(), style: {} as CSSStyleDeclaration, type: 1 } as unknown as CSSRule);\n return innerIdx;\n },\n deleteRule: (i: number) => { innerRules.splice(i, 1); },\n type: 4,\n } as unknown as CSSRule;\n } else {\n mockRule = { cssText: rule, selectorText: rule.split('{')[0].trim(), style: {} as CSSStyleDeclaration, type: 1 } as unknown as CSSRule;\n }\n cssRules.splice(idx, 0, mockRule);\n return idx;\n },\n deleteRule: (index: number) => { cssRules.splice(index, 1); },\n } as unknown as CSSStyleSheet;\n }\n\n this.classList = createClassList(this);\n }\n }\n \n appendChild<T extends Node>(child: T): T {\n this.children.push(child);\n if (isBrowser && (this as any)['_childNodes']) {\n (this as any)['_childNodes'].push(child);\n }\n if (typeof child === 'object' && child !== null && 'parentNode' in child) {\n (child as { parentNode: unknown }).parentNode = this;\n }\n return child;\n }\n \n setAttribute(name: string, value: string): void {\n this.attributes.set(name, value);\n if (name === 'class') {\n this.className = value;\n } else if (name === 'id') {\n this.id = value;\n }\n }\n \n getAttribute(name: string): string | null {\n return this.attributes.get(name) || null;\n }\n \n removeAttribute(name: string): void {\n this.attributes.delete(name);\n if (name === 'class') {\n this.className = '';\n }\n }\n \n hasAttribute(name: string): boolean {\n return this.attributes.has(name);\n }\n \n insertBefore<T extends Node>(newNode: T, referenceNode: Node | null): T {\n if (referenceNode === null) {\n return this.appendChild(newNode);\n }\n const index = this.children.indexOf(referenceNode);\n if (index !== -1) {\n this.children.splice(index, 0, newNode);\n if (isBrowser && (this as any)['_childNodes']) {\n const childNodesIndex = (this as any)['_childNodes'].indexOf(referenceNode);\n if (childNodesIndex !== -1) {\n (this as any)['_childNodes'].splice(childNodesIndex, 0, newNode);\n }\n }\n if (typeof newNode === 'object' && newNode !== null && 'parentNode' in newNode) {\n (newNode as { parentNode: unknown }).parentNode = this;\n }\n }\n return newNode;\n }\n \n removeChild<T extends Node>(child: T): T {\n const index = this.children.indexOf(child);\n if (index !== -1) {\n this.children.splice(index, 1);\n if (isBrowser && (this as any)['_childNodes']) {\n const cnIndex = (this as any)['_childNodes'].indexOf(child);\n if (cnIndex !== -1) {\n (this as any)['_childNodes'].splice(cnIndex, 1);\n }\n }\n if (typeof child === 'object' && child !== null && 'parentNode' in child) {\n (child as { parentNode: unknown }).parentNode = null;\n }\n }\n return child;\n }\n\n replaceChild<T extends Node>(newChild: Node, oldChild: T): T {\n const index = this.children.indexOf(oldChild);\n if (index !== -1) {\n this.children[index] = newChild;\n if (isBrowser && (this as any)['_childNodes']) {\n const cnIndex = (this as any)['_childNodes'].indexOf(oldChild);\n if (cnIndex !== -1) {\n (this as any)['_childNodes'][cnIndex] = newChild;\n }\n }\n if (typeof newChild === 'object' && newChild !== null && 'parentNode' in newChild) {\n (newChild as { parentNode: unknown }).parentNode = this;\n }\n if (typeof oldChild === 'object' && oldChild !== null && 'parentNode' in oldChild) {\n (oldChild as { parentNode: unknown }).parentNode = null;\n }\n }\n return oldChild;\n }\n \n addEventListener(type: string, listener: EventListener): void {\n if (!this._listeners) return;\n if (!this._listeners.has(type)) {\n this._listeners.set(type, new Set());\n }\n this._listeners.get(type)!.add(listener);\n }\n\n removeEventListener(type: string, listener: EventListener): void {\n const listeners = this._listeners?.get(type);\n if (listeners) {\n listeners.delete(listener);\n }\n }\n\n dispatchEvent(event: Event): boolean {\n const listeners = this._listeners?.get(event.type);\n if (listeners) {\n for (const listener of listeners) {\n try {\n listener(event);\n } catch (error) {\n console.error('Error in event listener:', error);\n }\n }\n }\n if (event.bubbles && this.parentNode && typeof this.parentNode === 'object' && 'dispatchEvent' in this.parentNode && typeof this.parentNode.dispatchEvent === 'function') {\n this.parentNode.dispatchEvent(event);\n }\n return true;\n }\n \n querySelector(selector: string): Element | null {\n // Simple implementation - supports basic selectors\n // #id, .class, tagName\n if (selector.startsWith('#')) {\n const id = selector.slice(1);\n return this.querySelectorById(id);\n } else if (selector.startsWith('.')) {\n const className = selector.slice(1);\n return this.querySelectorByClass(className);\n } else {\n // Tag name selector\n return this.querySelectorByTag(selector);\n }\n }\n \n private querySelectorById(id: string): Element | null {\n // Check self\n if (this.id === id) {\n return this as unknown as Element;\n }\n // Check children recursively\n for (const child of this.children) {\n if (isElementNode(child)) {\n if (child.id === id) {\n return child as unknown as Element;\n }\n const found = child.querySelector(`#${id}`);\n if (found) return found;\n }\n }\n return null;\n }\n \n private querySelectorByClass(className: string): Element | null {\n // Check self\n if (this.classList.contains(className)) {\n return this as unknown as Element;\n }\n // Check children recursively\n for (const child of this.children) {\n if (isElementNode(child)) {\n if (child.classList?.contains(className)) {\n return child as unknown as Element;\n }\n const found = child.querySelector(`.${className}`);\n if (found) return found;\n }\n }\n return null;\n }\n \n private querySelectorByTag(tagName: string): Element | null {\n const lowerTag = tagName.toLowerCase();\n // Check self\n if (this.tagName.toLowerCase() === lowerTag) {\n return this as unknown as Element;\n }\n // Check children recursively\n for (const child of this.children) {\n if (isElementNode(child)) {\n if (child.tagName.toLowerCase() === lowerTag) {\n return child as unknown as Element;\n }\n const found = child.querySelector(tagName);\n if (found) return found;\n }\n }\n return null;\n }\n \n querySelectorAll(selector: string): NodeListOf<Element> {\n const results: Element[] = [];\n \n if (selector.startsWith('#')) {\n const found = this.querySelector(selector);\n if (found) results.push(found);\n } else if (selector.startsWith('.')) {\n const className = selector.slice(1);\n this.querySelectorAllByClass(className, results);\n } else {\n const tagName = selector.toLowerCase();\n this.querySelectorAllByTag(tagName, results);\n }\n \n return results as unknown as NodeListOf<Element>;\n }\n \n private querySelectorAllByClass(className: string, results: Element[]): void {\n if (this.classList.contains(className)) {\n results.push(this as unknown as Element);\n }\n for (const child of this.children) {\n if (isElementNode(child)) {\n if (child.classList?.contains(className)) {\n results.push(child as unknown as Element);\n }\n child.querySelectorAllByClass(className, results);\n }\n }\n }\n \n private querySelectorAllByTag(tagName: string, results: Element[]): void {\n if (this.tagName.toLowerCase() === tagName) {\n results.push(this as unknown as Element);\n }\n for (const child of this.children) {\n if (isElementNode(child)) {\n if (child.tagName.toLowerCase() === tagName) {\n results.push(child as unknown as Element);\n }\n child.querySelectorAllByTag(tagName, results);\n }\n }\n }\n}\n\nfunction createClassList(owner: NucloElement): DOMTokenList {\n const getClasses = () => owner.className.split(' ').filter((c) => c);\n const setClasses = (classes: string[]) => {\n owner.className = classes.join(' ');\n };\n\n const classList = {\n add: (...tokens: string[]) => {\n const classes = getClasses();\n for (const token of tokens) {\n if (token && !classes.includes(token)) {\n classes.push(token);\n }\n }\n setClasses(classes);\n },\n remove: (...tokens: string[]) => {\n if (tokens.length === 0) return;\n setClasses(getClasses().filter((c) => !tokens.includes(c)));\n },\n toggle: (token: string, force?: boolean) => {\n const hasClass = classList.contains(token);\n if (force === undefined) {\n if (hasClass) {\n classList.remove(token);\n return false;\n }\n classList.add(token);\n return true;\n }\n if (force) {\n classList.add(token);\n return true;\n }\n classList.remove(token);\n return false;\n },\n contains: (token: string) => getClasses().includes(token),\n replace: (oldToken: string, newToken: string) => {\n const classes = getClasses();\n const index = classes.indexOf(oldToken);\n if (index === -1) return false;\n classes[index] = newToken;\n setClasses(classes);\n return true;\n },\n item: (index: number) => getClasses()[index] || null,\n get length() {\n return getClasses().length;\n },\n toString: () => owner.className,\n [Symbol.iterator]: function* () {\n yield* getClasses();\n },\n forEach: (callback: (value: string, key: number, parent: DOMTokenList) => void) => {\n const classes = getClasses();\n for (let i = 0; i < classes.length; i++) {\n callback(classes[i], i, classList as unknown as DOMTokenList);\n }\n },\n entries: function* () {\n const classes = getClasses();\n for (let i = 0; i < classes.length; i++) {\n yield [i, classes[i]] as [number, string];\n }\n },\n keys: function* () {\n const classes = getClasses();\n for (let i = 0; i < classes.length; i++) {\n yield i;\n }\n },\n values: function* () {\n yield* getClasses();\n },\n get value() {\n return owner.className;\n },\n set value(value: string) {\n owner.className = value;\n },\n supports: (_token: string) => false\n };\n\n return classList as unknown as DOMTokenList;\n}\n","export class NucloText {\n nodeType = 3; // Node.TEXT_NODE\n nodeName = '#text';\n data: string;\n textContent: string;\n parentNode: unknown = null;\n \n constructor(data: string) {\n this.data = data;\n this.textContent = data;\n }\n \n get nodeValue(): string {\n return this.data;\n }\n \n set nodeValue(value: string) {\n this.data = value;\n this.textContent = value;\n }\n}\n","import { NucloElement } from './Element';\nimport { NucloText } from './Text';\n\n/**\n * Lightweight DocumentFragment for SSR — prototype methods instead of per-instance closures.\n */\nclass SSRDocumentFragment {\n nodeType: number = 11;\n nodeName: string = '#document-fragment';\n childNodes: Node[] = [];\n children: Element[] = [];\n textContent: string = '';\n\n appendChild<T extends Node>(child: T): T {\n this.childNodes.push(child);\n if ((child as any).nodeType === 1) {\n this.children.push(child as unknown as Element);\n }\n (child as any).parentNode = this;\n return child;\n }\n\n insertBefore<T extends Node>(newNode: T, refNode: Node | null): T {\n if (!refNode) return this.appendChild(newNode);\n const index = this.childNodes.indexOf(refNode);\n if (index !== -1) {\n this.childNodes.splice(index, 0, newNode);\n if ((newNode as any).nodeType === 1) {\n const elementIndex = this.children.indexOf(refNode as Element);\n if (elementIndex !== -1) {\n this.children.splice(elementIndex, 0, newNode as unknown as Element);\n }\n }\n }\n (newNode as any).parentNode = this;\n return newNode;\n }\n\n removeChild<T extends Node>(child: T): T {\n const index = this.childNodes.indexOf(child);\n if (index !== -1) this.childNodes.splice(index, 1);\n if ((child as any).nodeType === 1) {\n const elementIndex = this.children.indexOf(child as unknown as Element);\n if (elementIndex !== -1) this.children.splice(elementIndex, 1);\n }\n (child as any).parentNode = null;\n return child;\n }\n\n replaceChild<T extends Node>(newChild: T, oldChild: Node): T {\n const index = this.childNodes.indexOf(oldChild);\n if (index !== -1) {\n this.childNodes[index] = newChild;\n if ((oldChild as any).nodeType === 1 && (newChild as any).nodeType === 1) {\n const elementIndex = this.children.indexOf(oldChild as Element);\n if (elementIndex !== -1) {\n this.children[elementIndex] = newChild as unknown as Element;\n }\n }\n }\n (newChild as any).parentNode = this;\n (oldChild as any).parentNode = null;\n return newChild;\n }\n\n querySelector(): null { return null; }\n querySelectorAll(): NodeListOf<Element> { return [] as unknown as NodeListOf<Element>; }\n}\n\nexport class NucloDocument {\n head: ExpandedElement;\n body: ExpandedElement;\n private _listeners: Map<string, Map<EventListener, { listener: EventListener; options?: boolean | AddEventListenerOptions }>>;\n \n constructor() {\n this.head = new NucloElement('head') as unknown as ExpandedElement;\n this.body = new NucloElement('body') as unknown as ExpandedElement;\n this._listeners = new Map();\n }\n \n createElement(tagName: string, _options?: unknown): ExpandedElement {\n return new NucloElement(tagName) as unknown as ExpandedElement;\n }\n \n createElementNS(namespace: string, tagName: string, _options?: unknown): ExpandedElement {\n const element = new NucloElement(tagName) as unknown as ExpandedElement;\n (element as any).namespaceURI = namespace;\n return element;\n }\n \n createTextNode(data: string): Text {\n return new NucloText(data) as unknown as Text;\n }\n \n createComment(data: string): Comment {\n const comment = {\n nodeType: 8,\n nodeName: '#comment',\n data,\n textContent: data,\n nodeValue: data,\n parentNode: null,\n nextSibling: null,\n previousSibling: null\n };\n return comment as unknown as Comment;\n }\n \n createDocumentFragment(): DocumentFragment {\n return new SSRDocumentFragment() as unknown as DocumentFragment;\n }\n \n querySelector(selector: string): Element | null {\n // Simple implementation - only supports ID selector for #nuclo-styles\n if (selector.startsWith('#')) {\n const id = selector.slice(1);\n if (id === 'nuclo-styles' && this.head.children) {\n for (const child of this.head.children) {\n if ((child as any).id === id) {\n return child as unknown as Element;\n }\n }\n }\n }\n return null;\n }\n \n querySelectorAll(_selector: string): NodeListOf<Element> {\n return [] as unknown as NodeListOf<Element>;\n }\n \n addEventListener(type: string, listener: EventListener, options?: boolean | AddEventListenerOptions): void {\n if (!this._listeners.has(type)) {\n this._listeners.set(type, new Map());\n }\n const listenersMap = this._listeners.get(type)!;\n listenersMap.set(listener, { listener, options });\n }\n \n removeEventListener(type: string, listener: EventListener, _options?: boolean | AddEventListenerOptions): void {\n const listeners = this._listeners.get(type);\n if (listeners) {\n listeners.delete(listener);\n // Clean up empty maps to prevent memory leaks\n if (listeners.size === 0) {\n this._listeners.delete(type);\n }\n }\n }\n \n dispatchEvent(event: Event): boolean {\n const listeners = this._listeners.get(event.type);\n if (listeners) {\n // Create a copy to avoid issues if listeners are modified during dispatch\n const listenersCopy = Array.from(listeners.values());\n for (let i = 0; i < listenersCopy.length; i++) {\n const { listener } = listenersCopy[i];\n try {\n listener(event);\n } catch (error) {\n console.error('Error in event listener:', error);\n }\n }\n }\n return true;\n }\n \n contains(_node: Node): boolean {\n return false;\n }\n}\n\nexport const document = globalThis.document || new NucloDocument();","export class NucloEvent implements Event {\n type: string;\n bubbles: boolean;\n cancelable: boolean;\n composed: boolean;\n currentTarget: EventTarget | null = null;\n defaultPrevented: boolean = false;\n eventPhase: number = 0;\n isTrusted: boolean = false;\n target: EventTarget | null = null;\n timeStamp: number;\n readonly AT_TARGET = 2;\n readonly BUBBLING_PHASE = 3;\n readonly CAPTURING_PHASE = 1;\n readonly NONE = 0;\n returnValue: boolean = true;\n srcElement: EventTarget | null = null;\n cancelBubble: boolean = false;\n \n constructor(type: string, eventInitDict?: EventInit) {\n this.type = type;\n this.bubbles = eventInitDict?.bubbles || false;\n this.cancelable = eventInitDict?.cancelable || false;\n this.composed = eventInitDict?.composed || false;\n this.timeStamp = Date.now();\n }\n \n composedPath(): EventTarget[] {\n return [];\n }\n \n initEvent(_type: string, _bubbles?: boolean, _cancelable?: boolean): void {\n // Legacy method - no-op\n }\n \n preventDefault(): void {\n if (this.cancelable) {\n this.defaultPrevented = true;\n }\n }\n \n stopImmediatePropagation(): void {\n this.cancelBubble = true;\n }\n \n stopPropagation(): void {\n this.cancelBubble = true;\n }\n}\n\nexport class NucloCustomEvent<T = any> extends NucloEvent implements CustomEvent<T> {\n detail: T;\n \n constructor(type: string, eventInitDict?: CustomEventInit<T>) {\n super(type, eventInitDict);\n this.detail = eventInitDict?.detail as T;\n }\n \n initCustomEvent(_type: string, _bubbles?: boolean, _cancelable?: boolean, _detail?: T): void {\n // Legacy method - no-op\n }\n}\n\n// Export polyfills if browser globals don't exist\nexport const Event = globalThis.Event || NucloEvent;\nexport const CustomEvent = globalThis.CustomEvent || NucloCustomEvent;\n","/**\n * Polyfills for Node.js environments\n * \n * This module provides minimal browser API polyfills to allow Nuclo to run in Node.js\n * for server-side rendering (SSR) scenarios.\n * \n * To use in Node.js:\n * ```typescript\n * import 'nuclo/polyfill';\n * // or\n * import { document, Event, CustomEvent } from 'nuclo/polyfill';\n * ```\n */\n\nexport { NucloDocument, document } from './Document';\nexport { NucloElement } from './Element';\nexport { NucloText } from './Text';\nexport { NucloEvent, NucloCustomEvent, Event, CustomEvent } from './Event';\nexport { NucloNode } from './Node';\n\n// Import for local use\nimport { NucloElement } from './Element';\nimport { NucloNode } from './Node';\nimport { document } from './Document';\nimport { Event, CustomEvent } from './Event';\n\nexport const Node = NucloNode;\nexport const Element = NucloElement;\nexport const HTMLElement = NucloElement;\n\n// Auto-apply polyfills to globalThis if in Node environment (synchronous — no top-level await)\nif (typeof window === 'undefined' && typeof globalThis !== 'undefined') {\n interface GlobalWithPolyfills {\n document?: typeof document;\n Event?: typeof Event;\n CustomEvent?: typeof CustomEvent;\n Node?: typeof NucloNode;\n Element?: typeof NucloElement;\n HTMLElement?: typeof NucloElement;\n }\n\n const g = globalThis as unknown as GlobalWithPolyfills;\n\n if (!g.document) g.document = document;\n if (!g.Event) g.Event = Event;\n if (!g.CustomEvent) g.CustomEvent = CustomEvent;\n if (!g.Node) g.Node = NucloNode;\n if (!g.Element) g.Element = NucloElement;\n if (!g.HTMLElement) g.HTMLElement = NucloElement;\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{t as e}from"../environment-BNEQOK9T.mjs";var t=class{nodeType=1;nodeName=``;nodeValue=null;parentNode=null;_childNodes=null;textContent=``;get childNodes(){let e=this._childNodes??[];return{...e,length:e.length,item:t=>e[t]||null,[Symbol.iterator]:function*(){for(let t of e)yield t},forEach:t=>{for(let n=0;n<e.length;n++)t(e[n],n,this.childNodes)},entries:function*(){for(let t=0;t<e.length;t++)yield[t,e[t]]},keys:function*(){for(let t=0;t<e.length;t++)yield t},values:function*(){for(let t of e)yield t}}}},n=class{get cssText(){let e=Object.entries(this);return e.length===0?``:e.map(([e,t])=>`${e}: ${t}`).join(`; `)}setProperty(e,t){this[e]=t}getPropertyValue(e){return this[e]||``}},r=class{_el;constructor(e){this._el=e}add(...e){let t=this._el.className?this._el.className.split(` `).filter(Boolean):[];for(let n of e)n&&!t.includes(n)&&t.push(n);this._el.className=t.join(` `)}remove(...e){this._el.className&&(this._el.className=this._el.className.split(` `).filter(t=>t&&!e.includes(t)).join(` `))}contains(e){return!!this._el.className&&this._el.className.split(` `).includes(e)}toggle(e,t){let n=this.contains(e);return t===void 0?n?(this.remove(e),!1):(this.add(e),!0):t?(this.add(e),!0):(this.remove(e),!1)}replace(e,t){return this.contains(e)?(this.remove(e),this.add(t),!0):!1}item(e){return this._el.className.split(` `).filter(Boolean)[e]??null}get length(){return this._el.className?this._el.className.split(` `).filter(Boolean).length:0}get value(){return this._el.className}set value(e){this._el.className=e}toString(){return this._el.className}supports(e){return!1}forEach(e){let t=this._el.className.split(` `).filter(Boolean);for(let n=0;n<t.length;n++)e(t[n],n,this)}[Symbol.iterator](){let e=this._el.className.split(` `).filter(Boolean),t=0;return{next(){return t<e.length?{value:e[t++],done:!1}:{value:``,done:!0}}}}entries(){let e=this._el.className.split(` `).filter(Boolean),t=0;return{next(){return t<e.length?{value:[t,e[t++]],done:!1}:{value:[0,``],done:!0}}}}keys(){let e=this.length,t=0;return{next(){return t<e?{value:t++,done:!1}:{value:0,done:!0}}}}values(){return this[Symbol.iterator]()}};function i(e){return typeof e==`object`&&!!e&&`tagName`in e}function a(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===3}function o(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===8}var s=class extends t{tagName;children;attributes;className=``;classList;textContent=``;_innerHTML=``;parentNode=null;rawMods;mods;style;id=``;namespaceURI;sheet;_listeners;get innerHTML(){return this.serializeChildren()}set innerHTML(e){this._innerHTML=e}serializeChildren(){let e=``;for(let t of this.children)i(t)?e+=this.serializeElement(t):a(t)?e+=t.textContent||``:o(t)&&(e+=`<!--${t.data||``}-->`);return e}serializeElement(e){let t=e.tagName.toLowerCase(),n=`<${t}`;if(e.id&&(n+=` id="${e.id}"`),e.className&&(n+=` class="${e.className}"`),e.attributes)for(let[t,r]of e.attributes)t!==`id`&&t!==`class`&&(n+=` ${t}="${r}"`);if(n+=`>`,e.children&&e.children.length>0)for(let t of e.children)i(t)?n+=this.serializeElement(t):a(t)?n+=t.textContent||``:o(t)&&(n+=`<!--${t.data||``}-->`);return n+=`</${t}>`,n}constructor(t){if(super(),this.tagName=t.toLowerCase(),this.nodeType=1,this.nodeName=t.toUpperCase(),this.children=[],this.attributes=new Map,!e)this._listeners=null,this.style=new n,this.classList=new r(this);else{this._listeners=new Map;let e={};if(this.style=new Proxy({},{get:(t,n)=>n===`setProperty`?(t,n)=>{e[t]=n}:n===`getPropertyValue`?t=>e[t]||``:n===`cssText`?Object.entries(e).map(([e,t])=>`${e}: ${t}`).join(`; `):e[n],set:(t,n,r)=>(e[n]=r,!0)}),this.tagName===`style`){let e=[];this.sheet={cssRules:e,insertRule:(t,n)=>{let r=n??e.length,i;if(t.trim().startsWith(`@`)){let e=[],n=t.replace(/^@\w+\s+/,``).replace(/\s*\{[\s\S]*\}$/,``).trim();i={cssText:t,conditionText:n,media:{mediaText:n},cssRules:e,insertRule:(t,n)=>{let r=n??e.length;return e.splice(r,0,{cssText:t,selectorText:t.split(`{`)[0].trim(),style:{},type:1}),r},deleteRule:t=>{e.splice(t,1)},type:4}}else i={cssText:t,selectorText:t.split(`{`)[0].trim(),style:{},type:1};return e.splice(r,0,i),r},deleteRule:t=>{e.splice(t,1)}}}this.classList=c(this)}}appendChild(t){return this.children.push(t),e&&this._childNodes&&this._childNodes.push(t),typeof t==`object`&&t&&`parentNode`in t&&(t.parentNode=this),t}setAttribute(e,t){this.attributes.set(e,t),e===`class`?this.className=t:e===`id`&&(this.id=t)}getAttribute(e){return this.attributes.get(e)||null}removeAttribute(e){this.attributes.delete(e),e===`class`&&(this.className=``)}hasAttribute(e){return this.attributes.has(e)}insertBefore(t,n){if(n===null)return this.appendChild(t);let r=this.children.indexOf(n);if(r!==-1){if(this.children.splice(r,0,t),e&&this._childNodes){let e=this._childNodes.indexOf(n);e!==-1&&this._childNodes.splice(e,0,t)}typeof t==`object`&&t&&`parentNode`in t&&(t.parentNode=this)}return t}removeChild(t){let n=this.children.indexOf(t);if(n!==-1){if(this.children.splice(n,1),e&&this._childNodes){let e=this._childNodes.indexOf(t);e!==-1&&this._childNodes.splice(e,1)}typeof t==`object`&&t&&`parentNode`in t&&(t.parentNode=null)}return t}replaceChild(t,n){let r=this.children.indexOf(n);if(r!==-1){if(this.children[r]=t,e&&this._childNodes){let e=this._childNodes.indexOf(n);e!==-1&&(this._childNodes[e]=t)}typeof t==`object`&&t&&`parentNode`in t&&(t.parentNode=this),typeof n==`object`&&n&&`parentNode`in n&&(n.parentNode=null)}return n}addEventListener(e,t){this._listeners&&(this._listeners.has(e)||this._listeners.set(e,new Set),this._listeners.get(e).add(t))}removeEventListener(e,t){let n=this._listeners?.get(e);n&&n.delete(t)}dispatchEvent(e){let t=this._listeners?.get(e.type);if(t)for(let n of t)try{n(e)}catch(e){console.error(`Error in event listener:`,e)}return e.bubbles&&this.parentNode&&typeof this.parentNode==`object`&&`dispatchEvent`in this.parentNode&&typeof this.parentNode.dispatchEvent==`function`&&this.parentNode.dispatchEvent(e),!0}querySelector(e){if(e.startsWith(`#`)){let t=e.slice(1);return this.querySelectorById(t)}else if(e.startsWith(`.`)){let t=e.slice(1);return this.querySelectorByClass(t)}else return this.querySelectorByTag(e)}querySelectorById(e){if(this.id===e)return this;for(let t of this.children)if(i(t)){if(t.id===e)return t;let n=t.querySelector(`#${e}`);if(n)return n}return null}querySelectorByClass(e){if(this.classList.contains(e))return this;for(let t of this.children)if(i(t)){if(t.classList?.contains(e))return t;let n=t.querySelector(`.${e}`);if(n)return n}return null}querySelectorByTag(e){let t=e.toLowerCase();if(this.tagName.toLowerCase()===t)return this;for(let n of this.children)if(i(n)){if(n.tagName.toLowerCase()===t)return n;let r=n.querySelector(e);if(r)return r}return null}querySelectorAll(e){let t=[];if(e.startsWith(`#`)){let n=this.querySelector(e);n&&t.push(n)}else if(e.startsWith(`.`)){let n=e.slice(1);this.querySelectorAllByClass(n,t)}else{let n=e.toLowerCase();this.querySelectorAllByTag(n,t)}return t}querySelectorAllByClass(e,t){this.classList.contains(e)&&t.push(this);for(let n of this.children)i(n)&&(n.classList?.contains(e)&&t.push(n),n.querySelectorAllByClass(e,t))}querySelectorAllByTag(e,t){this.tagName.toLowerCase()===e&&t.push(this);for(let n of this.children)i(n)&&(n.tagName.toLowerCase()===e&&t.push(n),n.querySelectorAllByTag(e,t))}};function c(e){let t=()=>e.className.split(` `).filter(e=>e),n=t=>{e.className=t.join(` `)},r={add:(...e)=>{let r=t();for(let t of e)t&&!r.includes(t)&&r.push(t);n(r)},remove:(...e)=>{e.length!==0&&n(t().filter(t=>!e.includes(t)))},toggle:(e,t)=>{let n=r.contains(e);return t===void 0?n?(r.remove(e),!1):(r.add(e),!0):t?(r.add(e),!0):(r.remove(e),!1)},contains:e=>t().includes(e),replace:(e,r)=>{let i=t(),a=i.indexOf(e);return a===-1?!1:(i[a]=r,n(i),!0)},item:e=>t()[e]||null,get length(){return t().length},toString:()=>e.className,[Symbol.iterator]:function*(){yield*t()},forEach:e=>{let n=t();for(let t=0;t<n.length;t++)e(n[t],t,r)},entries:function*(){let e=t();for(let t=0;t<e.length;t++)yield[t,e[t]]},keys:function*(){let e=t();for(let t=0;t<e.length;t++)yield t},values:function*(){yield*t()},get value(){return e.className},set value(t){e.className=t},supports:e=>!1};return r}var l=class{nodeType=3;nodeName=`#text`;data;textContent;parentNode=null;constructor(e){this.data=e,this.textContent=e}get nodeValue(){return this.data}set nodeValue(e){this.data=e,this.textContent=e}},u=class{nodeType=11;nodeName=`#document-fragment`;childNodes=[];children=[];textContent=``;appendChild(e){return this.childNodes.push(e),e.nodeType===1&&this.children.push(e),e.parentNode=this,e}insertBefore(e,t){if(!t)return this.appendChild(e);let n=this.childNodes.indexOf(t);if(n!==-1&&(this.childNodes.splice(n,0,e),e.nodeType===1)){let n=this.children.indexOf(t);n!==-1&&this.children.splice(n,0,e)}return e.parentNode=this,e}removeChild(e){let t=this.childNodes.indexOf(e);if(t!==-1&&this.childNodes.splice(t,1),e.nodeType===1){let t=this.children.indexOf(e);t!==-1&&this.children.splice(t,1)}return e.parentNode=null,e}replaceChild(e,t){let n=this.childNodes.indexOf(t);if(n!==-1&&(this.childNodes[n]=e,t.nodeType===1&&e.nodeType===1)){let n=this.children.indexOf(t);n!==-1&&(this.children[n]=e)}return e.parentNode=this,t.parentNode=null,e}querySelector(){return null}querySelectorAll(){return[]}},d=class{head;body;_listeners;constructor(){this.head=new s(`head`),this.body=new s(`body`),this._listeners=new Map}createElement(e,t){return new s(e)}createElementNS(e,t,n){let r=new s(t);return r.namespaceURI=e,r}createTextNode(e){return new l(e)}createComment(e){return{nodeType:8,nodeName:`#comment`,data:e,textContent:e,nodeValue:e,parentNode:null,nextSibling:null,previousSibling:null}}createDocumentFragment(){return new u}querySelector(e){if(e.startsWith(`#`)){let t=e.slice(1);if(t===`nuclo-styles`&&this.head.children){for(let e of this.head.children)if(e.id===t)return e}}return null}querySelectorAll(e){return[]}addEventListener(e,t,n){this._listeners.has(e)||this._listeners.set(e,new Map),this._listeners.get(e).set(t,{listener:t,options:n})}removeEventListener(e,t,n){let r=this._listeners.get(e);r&&(r.delete(t),r.size===0&&this._listeners.delete(e))}dispatchEvent(e){let t=this._listeners.get(e.type);if(t){let n=Array.from(t.values());for(let t=0;t<n.length;t++){let{listener:r}=n[t];try{r(e)}catch(e){console.error(`Error in event listener:`,e)}}}return!0}contains(e){return!1}};const f=globalThis.document||new d;var p=class{type;bubbles;cancelable;composed;currentTarget=null;defaultPrevented=!1;eventPhase=0;isTrusted=!1;target=null;timeStamp;AT_TARGET=2;BUBBLING_PHASE=3;CAPTURING_PHASE=1;NONE=0;returnValue=!0;srcElement=null;cancelBubble=!1;constructor(e,t){this.type=e,this.bubbles=t?.bubbles||!1,this.cancelable=t?.cancelable||!1,this.composed=t?.composed||!1,this.timeStamp=Date.now()}composedPath(){return[]}initEvent(e,t,n){}preventDefault(){this.cancelable&&(this.defaultPrevented=!0)}stopImmediatePropagation(){this.cancelBubble=!0}stopPropagation(){this.cancelBubble=!0}},m=class extends p{detail;constructor(e,t){super(e,t),this.detail=t?.detail}initCustomEvent(e,t,n,r){}};const h=globalThis.Event||p,g=globalThis.CustomEvent||m,_=t,v=s,y=s;if(typeof window>`u`&&typeof globalThis<`u`){let e=globalThis;e.document||=f,e.Event||=h,e.CustomEvent||=g,e.Node||=t,e.Element||=s,e.HTMLElement||=s}export{g as CustomEvent,v as Element,h as Event,y as HTMLElement,_ as Node,m as NucloCustomEvent,d as NucloDocument,s as NucloElement,p as NucloEvent,t as NucloNode,l as NucloText,f as document};
2
+ //# sourceMappingURL=nuclo.polyfill.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nuclo.polyfill.mjs","names":[],"sources":["../../src/polyfill/Node.ts","../../src/polyfill/Element.ts","../../src/polyfill/Text.ts","../../src/polyfill/Document.ts","../../src/polyfill/Event.ts","../../src/polyfill/index.ts"],"sourcesContent":["/**\n * Base Node class for instanceof checks in Node.js polyfill\n */\nexport class NucloNode {\n nodeType: number = 1; // ELEMENT_NODE\n nodeName: string = '';\n nodeValue: string | null = null;\n parentNode: unknown = null;\n _childNodes: Node[] | null = null;\n textContent: string = '';\n\n get childNodes(): NodeListOf<ChildNode> {\n const nodes = this._childNodes ?? [];\n return {\n ...nodes,\n length: nodes.length,\n item: (index: number) => (nodes[index] as ChildNode) || null,\n [Symbol.iterator]: function* () {\n for (const node of nodes) {\n yield node as ChildNode;\n }\n },\n forEach: (callback: (value: ChildNode, key: number, parent: NodeListOf<ChildNode>) => void) => {\n for (let i = 0; i < nodes.length; i++) {\n callback(nodes[i] as ChildNode, i, this.childNodes);\n }\n },\n entries: function* () {\n for (let i = 0; i < nodes.length; i++) {\n yield [i, nodes[i] as ChildNode] as [number, ChildNode];\n }\n },\n keys: function* () {\n for (let i = 0; i < nodes.length; i++) {\n yield i;\n }\n },\n values: function* () {\n for (const node of nodes) {\n yield node as ChildNode;\n }\n }\n } as unknown as NodeListOf<ChildNode>;\n }\n}\n","import { NucloNode } from './Node';\nimport { isBrowser } from '../utility/environment';\n\n/**\n * Lightweight style object for SSR — prototype methods instead of Object.defineProperty per element.\n * Stores CSS properties as own properties and provides cssText/setProperty/getPropertyValue via prototype.\n */\nclass SSRStyle {\n [key: string]: unknown;\n\n get cssText(): string {\n const entries = Object.entries(this);\n if (entries.length === 0) return '';\n return entries.map(([k, v]) => `${k}: ${v}`).join('; ');\n }\n\n setProperty(name: string, value: string): void {\n (this as Record<string, unknown>)[name] = value;\n }\n\n getPropertyValue(name: string): string {\n return ((this as Record<string, unknown>)[name] as string) || '';\n }\n}\n\n// Lightweight classList for SSR — prototype methods instead of per-element closures\nclass SSRClassList {\n private _el: NucloElement;\n constructor(el: NucloElement) { this._el = el; }\n\n add(...tokens: string[]): void {\n const classes = this._el.className ? this._el.className.split(' ').filter(Boolean) : [];\n for (const t of tokens) if (t && !classes.includes(t)) classes.push(t);\n this._el.className = classes.join(' ');\n }\n remove(...tokens: string[]): void {\n if (!this._el.className) return;\n this._el.className = this._el.className.split(' ').filter(c => c && !tokens.includes(c)).join(' ');\n }\n contains(token: string): boolean {\n return !!this._el.className && this._el.className.split(' ').includes(token);\n }\n toggle(token: string, force?: boolean): boolean {\n const has = this.contains(token);\n if (force === undefined) { if (has) { this.remove(token); return false; } this.add(token); return true; }\n if (force) { this.add(token); return true; }\n this.remove(token); return false;\n }\n replace(oldToken: string, newToken: string): boolean {\n if (!this.contains(oldToken)) return false;\n this.remove(oldToken); this.add(newToken); return true;\n }\n item(index: number): string | null { return (this._el.className.split(' ').filter(Boolean)[index]) ?? null; }\n get length(): number { return this._el.className ? this._el.className.split(' ').filter(Boolean).length : 0; }\n get value(): string { return this._el.className; }\n set value(v: string) { this._el.className = v; }\n toString(): string { return this._el.className; }\n supports(_token: string): boolean { return false; }\n forEach(cb: (value: string, key: number, parent: DOMTokenList) => void): void {\n const classes = this._el.className.split(' ').filter(Boolean);\n for (let i = 0; i < classes.length; i++) cb(classes[i], i, this as unknown as DOMTokenList);\n }\n [Symbol.iterator](): Iterator<string> {\n const classes = this._el.className.split(' ').filter(Boolean);\n let i = 0;\n return { next(): IteratorResult<string> { return i < classes.length ? { value: classes[i++], done: false } : { value: '', done: true }; } };\n }\n entries(): Iterator<[number, string]> {\n const classes = this._el.className.split(' ').filter(Boolean);\n let i = 0;\n return { next(): IteratorResult<[number, string]> { return i < classes.length ? { value: [i, classes[i++]], done: false } : { value: [0, ''], done: true }; } };\n }\n keys(): Iterator<number> {\n const len = this.length; let i = 0;\n return { next(): IteratorResult<number> { return i < len ? { value: i++, done: false } : { value: 0, done: true }; } };\n }\n values(): Iterator<string> { return this[Symbol.iterator](); }\n}\n\ninterface TextNode {\n nodeType: 3;\n textContent: string;\n}\n\ninterface CommentNode {\n nodeType: 8;\n data: string;\n}\n\nfunction isElementNode(node: unknown): node is NucloElement {\n return typeof node === 'object' && node !== null && 'tagName' in node;\n}\n\nfunction isTextNode(node: unknown): node is TextNode {\n return typeof node === 'object' && node !== null && 'nodeType' in node && (node as { nodeType: number }).nodeType === 3;\n}\n\nfunction isCommentNode(node: unknown): node is CommentNode {\n return typeof node === 'object' && node !== null && 'nodeType' in node && (node as { nodeType: number }).nodeType === 8;\n}\n\nexport class NucloElement extends NucloNode {\n tagName: string;\n children: unknown[];\n attributes: Map<string, string>;\n className: string = '';\n classList: DOMTokenList;\n textContent: string = '';\n private _innerHTML: string = '';\n parentNode: unknown = null;\n rawMods?: unknown[];\n mods?: unknown[];\n style: CSSStyleDeclaration;\n id: string = '';\n namespaceURI?: string;\n sheet?: CSSStyleSheet | null;\n private _listeners: Map<string, Set<EventListener>> | null;\n\n get innerHTML(): string {\n return this.serializeChildren();\n }\n\n set innerHTML(value: string) {\n this._innerHTML = value;\n }\n \n private serializeChildren(): string {\n let html = '';\n for (const child of this.children) {\n if (isElementNode(child)) {\n html += this.serializeElement(child);\n } else if (isTextNode(child)) {\n html += child.textContent || '';\n } else if (isCommentNode(child)) {\n html += `<!--${child.data || ''}-->`;\n }\n }\n return html;\n }\n \n private serializeElement(element: NucloElement): string {\n const tag = element.tagName.toLowerCase();\n let html = `<${tag}`;\n \n // Add attributes\n if (element.id) {\n html += ` id=\"${element.id}\"`;\n }\n if (element.className) {\n html += ` class=\"${element.className}\"`;\n }\n if (element.attributes) {\n for (const [name, value] of element.attributes) {\n if (name !== 'id' && name !== 'class') {\n html += ` ${name}=\"${value}\"`;\n }\n }\n }\n \n html += '>';\n \n // Add children\n if (element.children && element.children.length > 0) {\n for (const child of element.children) {\n if (isElementNode(child)) {\n html += this.serializeElement(child);\n } else if (isTextNode(child)) {\n html += child.textContent || '';\n } else if (isCommentNode(child)) {\n html += `<!--${child.data || ''}-->`;\n }\n }\n }\n \n html += `</${tag}>`;\n return html;\n }\n \n constructor(tagName: string) {\n super();\n this.tagName = tagName.toLowerCase();\n this.nodeType = 1; // ELEMENT_NODE\n this.nodeName = tagName.toUpperCase();\n this.children = [];\n this.attributes = new Map<string, string>();\n\n if (!isBrowser) {\n // ── SSR path: minimal allocations, no Proxy, no event listeners ──\n this._listeners = null;\n\n // Prototype-based style — zero Object.defineProperty calls per element\n this.style = new SSRStyle() as unknown as CSSStyleDeclaration;\n\n // Prototype-based classList — zero closures per element\n this.classList = new SSRClassList(this) as unknown as DOMTokenList;\n // sheet stays undefined — not needed in SSR\n } else {\n // ── Browser path: full-featured Proxy style + DOMTokenList ──\n this._listeners = new Map();\n\n const styleProps: Record<string, string> = {};\n this.style = new Proxy({} as CSSStyleDeclaration, {\n get: (_target, prop: string) => {\n if (prop === 'setProperty') return (name: string, value: string) => { styleProps[name] = value; };\n if (prop === 'getPropertyValue') return (name: string) => styleProps[name] || '';\n if (prop === 'cssText') return Object.entries(styleProps).map(([k, v]) => `${k}: ${v}`).join('; ');\n return styleProps[prop];\n },\n set: (_target, prop: string, value: string) => { styleProps[prop] = value; return true; },\n });\n\n // CSSStyleSheet mock for style elements (browser only)\n if (this.tagName === 'style') {\n const cssRules: CSSRule[] = [];\n this.sheet = {\n cssRules: cssRules as unknown as CSSRuleList,\n insertRule: (rule: string, index?: number) => {\n const idx = index ?? cssRules.length;\n let mockRule: CSSRule;\n if (rule.trim().startsWith('@')) {\n const innerRules: CSSRule[] = [];\n const conditionText = rule.replace(/^@\\w+\\s+/, '').replace(/\\s*\\{[\\s\\S]*\\}$/, '').trim();\n mockRule = {\n cssText: rule, conditionText,\n media: { mediaText: conditionText } as MediaList,\n cssRules: innerRules as unknown as CSSRuleList,\n insertRule: (innerRule: string, innerIndex?: number) => {\n const innerIdx = innerIndex ?? innerRules.length;\n innerRules.splice(innerIdx, 0, { cssText: innerRule, selectorText: innerRule.split('{')[0].trim(), style: {} as CSSStyleDeclaration, type: 1 } as unknown as CSSRule);\n return innerIdx;\n },\n deleteRule: (i: number) => { innerRules.splice(i, 1); },\n type: 4,\n } as unknown as CSSRule;\n } else {\n mockRule = { cssText: rule, selectorText: rule.split('{')[0].trim(), style: {} as CSSStyleDeclaration, type: 1 } as unknown as CSSRule;\n }\n cssRules.splice(idx, 0, mockRule);\n return idx;\n },\n deleteRule: (index: number) => { cssRules.splice(index, 1); },\n } as unknown as CSSStyleSheet;\n }\n\n this.classList = createClassList(this);\n }\n }\n \n appendChild<T extends Node>(child: T): T {\n this.children.push(child);\n if (isBrowser && (this as any)['_childNodes']) {\n (this as any)['_childNodes'].push(child);\n }\n if (typeof child === 'object' && child !== null && 'parentNode' in child) {\n (child as { parentNode: unknown }).parentNode = this;\n }\n return child;\n }\n \n setAttribute(name: string, value: string): void {\n this.attributes.set(name, value);\n if (name === 'class') {\n this.className = value;\n } else if (name === 'id') {\n this.id = value;\n }\n }\n \n getAttribute(name: string): string | null {\n return this.attributes.get(name) || null;\n }\n \n removeAttribute(name: string): void {\n this.attributes.delete(name);\n if (name === 'class') {\n this.className = '';\n }\n }\n \n hasAttribute(name: string): boolean {\n return this.attributes.has(name);\n }\n \n insertBefore<T extends Node>(newNode: T, referenceNode: Node | null): T {\n if (referenceNode === null) {\n return this.appendChild(newNode);\n }\n const index = this.children.indexOf(referenceNode);\n if (index !== -1) {\n this.children.splice(index, 0, newNode);\n if (isBrowser && (this as any)['_childNodes']) {\n const childNodesIndex = (this as any)['_childNodes'].indexOf(referenceNode);\n if (childNodesIndex !== -1) {\n (this as any)['_childNodes'].splice(childNodesIndex, 0, newNode);\n }\n }\n if (typeof newNode === 'object' && newNode !== null && 'parentNode' in newNode) {\n (newNode as { parentNode: unknown }).parentNode = this;\n }\n }\n return newNode;\n }\n \n removeChild<T extends Node>(child: T): T {\n const index = this.children.indexOf(child);\n if (index !== -1) {\n this.children.splice(index, 1);\n if (isBrowser && (this as any)['_childNodes']) {\n const cnIndex = (this as any)['_childNodes'].indexOf(child);\n if (cnIndex !== -1) {\n (this as any)['_childNodes'].splice(cnIndex, 1);\n }\n }\n if (typeof child === 'object' && child !== null && 'parentNode' in child) {\n (child as { parentNode: unknown }).parentNode = null;\n }\n }\n return child;\n }\n\n replaceChild<T extends Node>(newChild: Node, oldChild: T): T {\n const index = this.children.indexOf(oldChild);\n if (index !== -1) {\n this.children[index] = newChild;\n if (isBrowser && (this as any)['_childNodes']) {\n const cnIndex = (this as any)['_childNodes'].indexOf(oldChild);\n if (cnIndex !== -1) {\n (this as any)['_childNodes'][cnIndex] = newChild;\n }\n }\n if (typeof newChild === 'object' && newChild !== null && 'parentNode' in newChild) {\n (newChild as { parentNode: unknown }).parentNode = this;\n }\n if (typeof oldChild === 'object' && oldChild !== null && 'parentNode' in oldChild) {\n (oldChild as { parentNode: unknown }).parentNode = null;\n }\n }\n return oldChild;\n }\n \n addEventListener(type: string, listener: EventListener): void {\n if (!this._listeners) return;\n if (!this._listeners.has(type)) {\n this._listeners.set(type, new Set());\n }\n this._listeners.get(type)!.add(listener);\n }\n\n removeEventListener(type: string, listener: EventListener): void {\n const listeners = this._listeners?.get(type);\n if (listeners) {\n listeners.delete(listener);\n }\n }\n\n dispatchEvent(event: Event): boolean {\n const listeners = this._listeners?.get(event.type);\n if (listeners) {\n for (const listener of listeners) {\n try {\n listener(event);\n } catch (error) {\n console.error('Error in event listener:', error);\n }\n }\n }\n if (event.bubbles && this.parentNode && typeof this.parentNode === 'object' && 'dispatchEvent' in this.parentNode && typeof this.parentNode.dispatchEvent === 'function') {\n this.parentNode.dispatchEvent(event);\n }\n return true;\n }\n \n querySelector(selector: string): Element | null {\n // Simple implementation - supports basic selectors\n // #id, .class, tagName\n if (selector.startsWith('#')) {\n const id = selector.slice(1);\n return this.querySelectorById(id);\n } else if (selector.startsWith('.')) {\n const className = selector.slice(1);\n return this.querySelectorByClass(className);\n } else {\n // Tag name selector\n return this.querySelectorByTag(selector);\n }\n }\n \n private querySelectorById(id: string): Element | null {\n // Check self\n if (this.id === id) {\n return this as unknown as Element;\n }\n // Check children recursively\n for (const child of this.children) {\n if (isElementNode(child)) {\n if (child.id === id) {\n return child as unknown as Element;\n }\n const found = child.querySelector(`#${id}`);\n if (found) return found;\n }\n }\n return null;\n }\n \n private querySelectorByClass(className: string): Element | null {\n // Check self\n if (this.classList.contains(className)) {\n return this as unknown as Element;\n }\n // Check children recursively\n for (const child of this.children) {\n if (isElementNode(child)) {\n if (child.classList?.contains(className)) {\n return child as unknown as Element;\n }\n const found = child.querySelector(`.${className}`);\n if (found) return found;\n }\n }\n return null;\n }\n \n private querySelectorByTag(tagName: string): Element | null {\n const lowerTag = tagName.toLowerCase();\n // Check self\n if (this.tagName.toLowerCase() === lowerTag) {\n return this as unknown as Element;\n }\n // Check children recursively\n for (const child of this.children) {\n if (isElementNode(child)) {\n if (child.tagName.toLowerCase() === lowerTag) {\n return child as unknown as Element;\n }\n const found = child.querySelector(tagName);\n if (found) return found;\n }\n }\n return null;\n }\n \n querySelectorAll(selector: string): NodeListOf<Element> {\n const results: Element[] = [];\n \n if (selector.startsWith('#')) {\n const found = this.querySelector(selector);\n if (found) results.push(found);\n } else if (selector.startsWith('.')) {\n const className = selector.slice(1);\n this.querySelectorAllByClass(className, results);\n } else {\n const tagName = selector.toLowerCase();\n this.querySelectorAllByTag(tagName, results);\n }\n \n return results as unknown as NodeListOf<Element>;\n }\n \n private querySelectorAllByClass(className: string, results: Element[]): void {\n if (this.classList.contains(className)) {\n results.push(this as unknown as Element);\n }\n for (const child of this.children) {\n if (isElementNode(child)) {\n if (child.classList?.contains(className)) {\n results.push(child as unknown as Element);\n }\n child.querySelectorAllByClass(className, results);\n }\n }\n }\n \n private querySelectorAllByTag(tagName: string, results: Element[]): void {\n if (this.tagName.toLowerCase() === tagName) {\n results.push(this as unknown as Element);\n }\n for (const child of this.children) {\n if (isElementNode(child)) {\n if (child.tagName.toLowerCase() === tagName) {\n results.push(child as unknown as Element);\n }\n child.querySelectorAllByTag(tagName, results);\n }\n }\n }\n}\n\nfunction createClassList(owner: NucloElement): DOMTokenList {\n const getClasses = () => owner.className.split(' ').filter((c) => c);\n const setClasses = (classes: string[]) => {\n owner.className = classes.join(' ');\n };\n\n const classList = {\n add: (...tokens: string[]) => {\n const classes = getClasses();\n for (const token of tokens) {\n if (token && !classes.includes(token)) {\n classes.push(token);\n }\n }\n setClasses(classes);\n },\n remove: (...tokens: string[]) => {\n if (tokens.length === 0) return;\n setClasses(getClasses().filter((c) => !tokens.includes(c)));\n },\n toggle: (token: string, force?: boolean) => {\n const hasClass = classList.contains(token);\n if (force === undefined) {\n if (hasClass) {\n classList.remove(token);\n return false;\n }\n classList.add(token);\n return true;\n }\n if (force) {\n classList.add(token);\n return true;\n }\n classList.remove(token);\n return false;\n },\n contains: (token: string) => getClasses().includes(token),\n replace: (oldToken: string, newToken: string) => {\n const classes = getClasses();\n const index = classes.indexOf(oldToken);\n if (index === -1) return false;\n classes[index] = newToken;\n setClasses(classes);\n return true;\n },\n item: (index: number) => getClasses()[index] || null,\n get length() {\n return getClasses().length;\n },\n toString: () => owner.className,\n [Symbol.iterator]: function* () {\n yield* getClasses();\n },\n forEach: (callback: (value: string, key: number, parent: DOMTokenList) => void) => {\n const classes = getClasses();\n for (let i = 0; i < classes.length; i++) {\n callback(classes[i], i, classList as unknown as DOMTokenList);\n }\n },\n entries: function* () {\n const classes = getClasses();\n for (let i = 0; i < classes.length; i++) {\n yield [i, classes[i]] as [number, string];\n }\n },\n keys: function* () {\n const classes = getClasses();\n for (let i = 0; i < classes.length; i++) {\n yield i;\n }\n },\n values: function* () {\n yield* getClasses();\n },\n get value() {\n return owner.className;\n },\n set value(value: string) {\n owner.className = value;\n },\n supports: (_token: string) => false\n };\n\n return classList as unknown as DOMTokenList;\n}\n","export class NucloText {\n nodeType = 3; // Node.TEXT_NODE\n nodeName = '#text';\n data: string;\n textContent: string;\n parentNode: unknown = null;\n \n constructor(data: string) {\n this.data = data;\n this.textContent = data;\n }\n \n get nodeValue(): string {\n return this.data;\n }\n \n set nodeValue(value: string) {\n this.data = value;\n this.textContent = value;\n }\n}\n","import { NucloElement } from './Element';\nimport { NucloText } from './Text';\n\n/**\n * Lightweight DocumentFragment for SSR — prototype methods instead of per-instance closures.\n */\nclass SSRDocumentFragment {\n nodeType: number = 11;\n nodeName: string = '#document-fragment';\n childNodes: Node[] = [];\n children: Element[] = [];\n textContent: string = '';\n\n appendChild<T extends Node>(child: T): T {\n this.childNodes.push(child);\n if ((child as any).nodeType === 1) {\n this.children.push(child as unknown as Element);\n }\n (child as any).parentNode = this;\n return child;\n }\n\n insertBefore<T extends Node>(newNode: T, refNode: Node | null): T {\n if (!refNode) return this.appendChild(newNode);\n const index = this.childNodes.indexOf(refNode);\n if (index !== -1) {\n this.childNodes.splice(index, 0, newNode);\n if ((newNode as any).nodeType === 1) {\n const elementIndex = this.children.indexOf(refNode as Element);\n if (elementIndex !== -1) {\n this.children.splice(elementIndex, 0, newNode as unknown as Element);\n }\n }\n }\n (newNode as any).parentNode = this;\n return newNode;\n }\n\n removeChild<T extends Node>(child: T): T {\n const index = this.childNodes.indexOf(child);\n if (index !== -1) this.childNodes.splice(index, 1);\n if ((child as any).nodeType === 1) {\n const elementIndex = this.children.indexOf(child as unknown as Element);\n if (elementIndex !== -1) this.children.splice(elementIndex, 1);\n }\n (child as any).parentNode = null;\n return child;\n }\n\n replaceChild<T extends Node>(newChild: T, oldChild: Node): T {\n const index = this.childNodes.indexOf(oldChild);\n if (index !== -1) {\n this.childNodes[index] = newChild;\n if ((oldChild as any).nodeType === 1 && (newChild as any).nodeType === 1) {\n const elementIndex = this.children.indexOf(oldChild as Element);\n if (elementIndex !== -1) {\n this.children[elementIndex] = newChild as unknown as Element;\n }\n }\n }\n (newChild as any).parentNode = this;\n (oldChild as any).parentNode = null;\n return newChild;\n }\n\n querySelector(): null { return null; }\n querySelectorAll(): NodeListOf<Element> { return [] as unknown as NodeListOf<Element>; }\n}\n\nexport class NucloDocument {\n head: ExpandedElement;\n body: ExpandedElement;\n private _listeners: Map<string, Map<EventListener, { listener: EventListener; options?: boolean | AddEventListenerOptions }>>;\n \n constructor() {\n this.head = new NucloElement('head') as unknown as ExpandedElement;\n this.body = new NucloElement('body') as unknown as ExpandedElement;\n this._listeners = new Map();\n }\n \n createElement(tagName: string, _options?: unknown): ExpandedElement {\n return new NucloElement(tagName) as unknown as ExpandedElement;\n }\n \n createElementNS(namespace: string, tagName: string, _options?: unknown): ExpandedElement {\n const element = new NucloElement(tagName) as unknown as ExpandedElement;\n (element as any).namespaceURI = namespace;\n return element;\n }\n \n createTextNode(data: string): Text {\n return new NucloText(data) as unknown as Text;\n }\n \n createComment(data: string): Comment {\n const comment = {\n nodeType: 8,\n nodeName: '#comment',\n data,\n textContent: data,\n nodeValue: data,\n parentNode: null,\n nextSibling: null,\n previousSibling: null\n };\n return comment as unknown as Comment;\n }\n \n createDocumentFragment(): DocumentFragment {\n return new SSRDocumentFragment() as unknown as DocumentFragment;\n }\n \n querySelector(selector: string): Element | null {\n // Simple implementation - only supports ID selector for #nuclo-styles\n if (selector.startsWith('#')) {\n const id = selector.slice(1);\n if (id === 'nuclo-styles' && this.head.children) {\n for (const child of this.head.children) {\n if ((child as any).id === id) {\n return child as unknown as Element;\n }\n }\n }\n }\n return null;\n }\n \n querySelectorAll(_selector: string): NodeListOf<Element> {\n return [] as unknown as NodeListOf<Element>;\n }\n \n addEventListener(type: string, listener: EventListener, options?: boolean | AddEventListenerOptions): void {\n if (!this._listeners.has(type)) {\n this._listeners.set(type, new Map());\n }\n const listenersMap = this._listeners.get(type)!;\n listenersMap.set(listener, { listener, options });\n }\n \n removeEventListener(type: string, listener: EventListener, _options?: boolean | AddEventListenerOptions): void {\n const listeners = this._listeners.get(type);\n if (listeners) {\n listeners.delete(listener);\n // Clean up empty maps to prevent memory leaks\n if (listeners.size === 0) {\n this._listeners.delete(type);\n }\n }\n }\n \n dispatchEvent(event: Event): boolean {\n const listeners = this._listeners.get(event.type);\n if (listeners) {\n // Create a copy to avoid issues if listeners are modified during dispatch\n const listenersCopy = Array.from(listeners.values());\n for (let i = 0; i < listenersCopy.length; i++) {\n const { listener } = listenersCopy[i];\n try {\n listener(event);\n } catch (error) {\n console.error('Error in event listener:', error);\n }\n }\n }\n return true;\n }\n \n contains(_node: Node): boolean {\n return false;\n }\n}\n\nexport const document = globalThis.document || new NucloDocument();","export class NucloEvent implements Event {\n type: string;\n bubbles: boolean;\n cancelable: boolean;\n composed: boolean;\n currentTarget: EventTarget | null = null;\n defaultPrevented: boolean = false;\n eventPhase: number = 0;\n isTrusted: boolean = false;\n target: EventTarget | null = null;\n timeStamp: number;\n readonly AT_TARGET = 2;\n readonly BUBBLING_PHASE = 3;\n readonly CAPTURING_PHASE = 1;\n readonly NONE = 0;\n returnValue: boolean = true;\n srcElement: EventTarget | null = null;\n cancelBubble: boolean = false;\n \n constructor(type: string, eventInitDict?: EventInit) {\n this.type = type;\n this.bubbles = eventInitDict?.bubbles || false;\n this.cancelable = eventInitDict?.cancelable || false;\n this.composed = eventInitDict?.composed || false;\n this.timeStamp = Date.now();\n }\n \n composedPath(): EventTarget[] {\n return [];\n }\n \n initEvent(_type: string, _bubbles?: boolean, _cancelable?: boolean): void {\n // Legacy method - no-op\n }\n \n preventDefault(): void {\n if (this.cancelable) {\n this.defaultPrevented = true;\n }\n }\n \n stopImmediatePropagation(): void {\n this.cancelBubble = true;\n }\n \n stopPropagation(): void {\n this.cancelBubble = true;\n }\n}\n\nexport class NucloCustomEvent<T = any> extends NucloEvent implements CustomEvent<T> {\n detail: T;\n \n constructor(type: string, eventInitDict?: CustomEventInit<T>) {\n super(type, eventInitDict);\n this.detail = eventInitDict?.detail as T;\n }\n \n initCustomEvent(_type: string, _bubbles?: boolean, _cancelable?: boolean, _detail?: T): void {\n // Legacy method - no-op\n }\n}\n\n// Export polyfills if browser globals don't exist\nexport const Event = globalThis.Event || NucloEvent;\nexport const CustomEvent = globalThis.CustomEvent || NucloCustomEvent;\n","/**\n * Polyfills for Node.js environments\n * \n * This module provides minimal browser API polyfills to allow Nuclo to run in Node.js\n * for server-side rendering (SSR) scenarios.\n * \n * To use in Node.js:\n * ```typescript\n * import 'nuclo/polyfill';\n * // or\n * import { document, Event, CustomEvent } from 'nuclo/polyfill';\n * ```\n */\n\nexport { NucloDocument, document } from './Document';\nexport { NucloElement } from './Element';\nexport { NucloText } from './Text';\nexport { NucloEvent, NucloCustomEvent, Event, CustomEvent } from './Event';\nexport { NucloNode } from './Node';\n\n// Import for local use\nimport { NucloElement } from './Element';\nimport { NucloNode } from './Node';\nimport { document } from './Document';\nimport { Event, CustomEvent } from './Event';\n\nexport const Node = NucloNode;\nexport const Element = NucloElement;\nexport const HTMLElement = NucloElement;\n\n// Auto-apply polyfills to globalThis if in Node environment (synchronous — no top-level await)\nif (typeof window === 'undefined' && typeof globalThis !== 'undefined') {\n interface GlobalWithPolyfills {\n document?: typeof document;\n Event?: typeof Event;\n CustomEvent?: typeof CustomEvent;\n Node?: typeof NucloNode;\n Element?: typeof NucloElement;\n HTMLElement?: typeof NucloElement;\n }\n\n const g = globalThis as unknown as GlobalWithPolyfills;\n\n if (!g.document) g.document = document;\n if (!g.Event) g.Event = Event;\n if (!g.CustomEvent) g.CustomEvent = CustomEvent;\n if (!g.Node) g.Node = NucloNode;\n if (!g.Element) g.Element = NucloElement;\n if (!g.HTMLElement) g.HTMLElement = NucloElement;\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,23 +1,28 @@
1
1
  {
2
2
  "name": "nuclo",
3
3
  "private": false,
4
- "version": "0.1.122",
4
+ "version": "0.1.124",
5
5
  "type": "module",
6
6
  "main": "./dist/nuclo.cjs",
7
- "module": "./dist/nuclo.js",
7
+ "module": "./dist/nuclo.mjs",
8
8
  "browser": "./dist/nuclo.umd.js",
9
9
  "types": "./types/index.d.ts",
10
10
  "exports": {
11
11
  ".": {
12
12
  "types": "./dist/index.d.ts",
13
- "import": "./dist/nuclo.js",
13
+ "import": "./dist/nuclo.mjs",
14
14
  "require": "./dist/nuclo.cjs"
15
15
  },
16
16
  "./ssr": {
17
17
  "types": "./dist/ssr/index.d.ts",
18
- "import": "./dist/ssr/nuclo.ssr.js",
18
+ "import": "./dist/ssr/nuclo.ssr.mjs",
19
19
  "require": "./dist/ssr/nuclo.ssr.cjs"
20
20
  },
21
+ "./polyfill": {
22
+ "types": "./dist/polyfill/index.d.ts",
23
+ "import": "./dist/polyfill/nuclo.polyfill.mjs",
24
+ "require": "./dist/polyfill/nuclo.polyfill.cjs"
25
+ },
21
26
  "./types": {
22
27
  "types": "./types/index.d.ts"
23
28
  }
@@ -43,14 +48,14 @@
43
48
  "@eslint/js": "^10.0.1",
44
49
  "@eslint/json": "^1.2.0",
45
50
  "@eslint/markdown": "^8.0.1",
46
- "@types/node": "^25.6.0",
51
+ "@types/node": "^25.6.2",
47
52
  "@vitest/coverage-v8": "4.1.4",
48
- "eslint": "^10.2.1",
49
- "globals": "^17.5.0",
53
+ "eslint": "^10.3.0",
54
+ "globals": "^17.6.0",
50
55
  "jsdom": "^29.1.1",
51
56
  "tsdown": "^0.21.10",
52
57
  "typescript": "^6.0.3",
53
- "typescript-eslint": "^8.59.1",
58
+ "typescript-eslint": "^8.59.2",
54
59
  "vitest": "^4.1.5"
55
60
  },
56
61
  "repository": {