flexium 0.12.19 → 0.13.1
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 +36 -29
- package/dist/canvas.d.cts +1 -1
- package/dist/canvas.d.ts +1 -1
- package/dist/canvas.js +1 -1
- package/dist/canvas.js.map +1 -1
- package/dist/canvas.mjs +1 -1
- package/dist/canvas.mjs.map +1 -1
- package/dist/chunk-3AKECLKA.mjs +2 -0
- package/dist/chunk-3AKECLKA.mjs.map +1 -0
- package/dist/chunk-3CKIHQIE.js +2 -0
- package/dist/chunk-3CKIHQIE.js.map +1 -0
- package/dist/chunk-ACYN2UKT.js +2 -0
- package/dist/chunk-ACYN2UKT.js.map +1 -0
- package/dist/chunk-E6Z7AI4J.js +2 -0
- package/dist/chunk-E6Z7AI4J.js.map +1 -0
- package/dist/chunk-MI76R42D.mjs +2 -0
- package/dist/chunk-MI76R42D.mjs.map +1 -0
- package/dist/chunk-NRPWBHKP.mjs +2 -0
- package/dist/chunk-NRPWBHKP.mjs.map +1 -0
- package/dist/chunk-PUXZJ7OV.js +2 -0
- package/dist/{chunk-6Z33DLMI.js.map → chunk-PUXZJ7OV.js.map} +1 -1
- package/dist/chunk-TP5HUAIN.mjs +2 -0
- package/dist/{chunk-E75BJDOQ.mjs.map → chunk-TP5HUAIN.mjs.map} +1 -1
- package/dist/core.d.cts +47 -73
- package/dist/core.d.ts +47 -73
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/dist/core.mjs +1 -1
- package/dist/core.mjs.map +1 -1
- package/dist/dom.d.cts +1 -1
- package/dist/dom.d.ts +1 -1
- package/dist/dom.js +1 -1
- package/dist/dom.js.map +1 -1
- package/dist/dom.mjs +1 -1
- package/dist/dom.mjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/interactive.d.cts +4 -4
- package/dist/interactive.d.ts +4 -4
- package/dist/interactive.js +1 -1
- package/dist/interactive.js.map +1 -1
- package/dist/interactive.mjs +1 -1
- package/dist/interactive.mjs.map +1 -1
- package/dist/jsx-dev-runtime.d.cts +1 -1
- package/dist/jsx-dev-runtime.d.ts +1 -1
- package/dist/jsx-runtime.d.cts +1 -1
- package/dist/jsx-runtime.d.ts +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/render-4HB53K66.mjs +2 -0
- package/dist/{render-UIWHIMS2.mjs.map → render-4HB53K66.mjs.map} +1 -1
- package/dist/render-MJ2LCNSG.js +2 -0
- package/dist/{render-QZAFAGIM.js.map → render-MJ2LCNSG.js.map} +1 -1
- package/dist/router.d.cts +7 -3
- package/dist/router.d.ts +7 -3
- package/dist/router.js +1 -1
- package/dist/router.js.map +1 -1
- package/dist/router.mjs +1 -1
- package/dist/router.mjs.map +1 -1
- package/dist/server.d.cts +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/server.mjs +1 -1
- package/dist/server.mjs.map +1 -1
- package/dist/{types-y2GGaXXk.d.cts → types-DH8L3A5z.d.cts} +1 -1
- package/dist/{types-y2GGaXXk.d.ts → types-DH8L3A5z.d.ts} +1 -1
- package/package.json +1 -1
- package/dist/chunk-3DKZ2J4D.mjs +0 -2
- package/dist/chunk-3DKZ2J4D.mjs.map +0 -1
- package/dist/chunk-5PNH2ARD.mjs +0 -2
- package/dist/chunk-5PNH2ARD.mjs.map +0 -1
- package/dist/chunk-6VIRXD2Y.js +0 -2
- package/dist/chunk-6VIRXD2Y.js.map +0 -1
- package/dist/chunk-6Z33DLMI.js +0 -2
- package/dist/chunk-E75BJDOQ.mjs +0 -2
- package/dist/chunk-IWFEXW4F.mjs +0 -2
- package/dist/chunk-IWFEXW4F.mjs.map +0 -1
- package/dist/chunk-JY6CE6RN.mjs +0 -2
- package/dist/chunk-JY6CE6RN.mjs.map +0 -1
- package/dist/chunk-LTT43APF.js +0 -2
- package/dist/chunk-LTT43APF.js.map +0 -1
- package/dist/chunk-PSKDIB7J.js +0 -2
- package/dist/chunk-PSKDIB7J.js.map +0 -1
- package/dist/chunk-UWFVCKRU.js +0 -2
- package/dist/chunk-UWFVCKRU.js.map +0 -1
- package/dist/chunk-WGKD63GN.mjs +0 -2
- package/dist/chunk-WGKD63GN.mjs.map +0 -1
- package/dist/chunk-YWTD32NA.js +0 -2
- package/dist/chunk-YWTD32NA.js.map +0 -1
- package/dist/render-QZAFAGIM.js +0 -2
- package/dist/render-UIWHIMS2.mjs +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunk3CKIHQIE_js=require('./chunk-3CKIHQIE.js'),chunkE6Z7AI4J_js=require('./chunk-E6Z7AI4J.js');var p=new WeakMap,h=null;function E(e){e.children.forEach(n=>{E(n);}),e.nodes.forEach(n=>{n.parentNode&&n.parentNode.removeChild(n);}),e.children.clear(),e.parentInstance&&e.parentInstance.children.delete(e);}function S(e,n,o){let c=o||n,r=f=>{let u={...f.props};return f.children&&f.children.length>0&&(u.children=f.children.length===1?f.children[0]:f.children),u},a=e.key!==void 0;p.has(c)||p.set(c,new Map);let t=p.get(c),i;if(a)i=e.key;else {let f=0,u=e.type.name||"anonymous";t.forEach((b,l)=>{typeof l=="string"&&l.startsWith(`__auto_${u}_`)&&f++;}),i=`__auto_${u}_${f}`;}if(t.has(i)){let f=t.get(i);f.fnode=e;let u=r(e);return f.props=u,f.children.clear(),f.renderFn&&f.renderFn(),f.nodes}let s={hooks:[],hookIndex:0,nodes:[],parent:n,fnode:e,props:r(e),key:i,children:new Set,parentInstance:h||void 0};h&&h.children.add(s),t.set(i,s);let d=true,_=()=>{let f=s.fnode,u=s.props;f.type._contextId!==void 0&&chunkE6Z7AI4J_js.e(f.type._contextId,u.value);let l=h;h=s;let v=chunkE6Z7AI4J_js.a(s,()=>f.type(u));if(d){let g=y(v,n);s.nodes=g?Array.isArray(g)?g:[g]:[],s.nodes.forEach(m=>{m.__ownerInstance||(m.__ownerInstance=s);}),d=false;}else {if(s.nodes.length===0){let C=y(v,n);s.nodes=C?Array.isArray(C)?C:[C]:[],h=l;return}let m=s.nodes[0].parentNode;if(!m){h=l;return}let M=document.createComment("flexium-marker"),I=s.nodes[s.nodes.length-1];I.nextSibling?m.insertBefore(M,I.nextSibling):m.appendChild(M),s.children.clear();let x=document.createElement("div"),T=y(v,x,m),O=T?Array.isArray(T)?T:[T]:[],R=P(s.nodes,O,m,M);m.removeChild(M),s.nodes=R;}h=l;};return s.renderFn=_,chunk3CKIHQIE_js.b(_),s.nodes}function y(e,n,o){let c=o||n;if(e==null||typeof e=="boolean"){let r=document.createTextNode("");return n.appendChild(r),r}if(typeof e=="string"||typeof e=="number"){let r=document.createTextNode(String(e));return n.appendChild(r),r}if(Array.isArray(e)){let r=new Set;p.has(c)&&p.get(c).forEach((s,d)=>r.add(d));let a=[];e.forEach(i=>{let s=y(i,n,o);s&&(Array.isArray(s)?a.push(...s):a.push(s));});let t=new Set;if(p.has(c)&&p.get(c).forEach((s,d)=>t.add(d)),p.has(c)){let i=p.get(c),s=[];r.forEach(d=>{if(!t.has(d)){let _=i.get(d);_&&(E(_),s.push(d));}}),s.forEach(d=>i.delete(d));}return a}if(typeof e=="object"){if(typeof e.type=="string"){let r=document.createElement(e.type);return e.props&&Object.entries(e.props).forEach(([a,t])=>{if(a==="ref")typeof t=="function"?t(r):t&&typeof t=="object"&&"current"in t&&(t.current=r);else if(a.startsWith("on")&&typeof t=="function"){let i=a.slice(2).toLowerCase();r.addEventListener(i,t),r.__eventHandlers||(r.__eventHandlers={}),r.__eventHandlers[i]=t;}else a!=="ref"&&D(r,a,t);}),e.children&&e.children.length>0&&e.children.forEach(a=>{y(a,r);}),n.appendChild(r),r}if(typeof e.type=="function")return S(e,n,o)}return null}function D(e,n,o){o==null?e.removeAttribute(n):n==="style"&&typeof o=="object"?Object.assign(e.style,o):n==="class"?e.className=String(o):n in e&&typeof e[n]!="function"?e[n]=o:e.setAttribute(n,String(o));}function j(e,n){return e.nodeType!==n.nodeType?false:e.nodeType===Node.ELEMENT_NODE&&n.nodeType===Node.ELEMENT_NODE?e.tagName===n.tagName:true}function k(e,n){Array.from(e.attributes).forEach(t=>{n.hasAttribute(t.name)||e.removeAttribute(t.name);}),Array.from(n.attributes).forEach(t=>{e.getAttribute(t.name)!==t.value&&(t.name==="value"&&"value"in e?e.value=t.value:t.name==="checked"&&"checked"in e?e.checked=t.value==="true"||t.value==="":e.setAttribute(t.name,t.value));});let r=e.__eventHandlers||{},a=n.__eventHandlers||{};Object.keys(r).forEach(t=>{a[t]||e.removeEventListener(t,r[t]);}),Object.keys(a).forEach(t=>{r[t]!==a[t]&&(r[t]&&e.removeEventListener(t,r[t]),e.addEventListener(t,a[t]));}),Object.keys(a).length>0?e.__eventHandlers=a:delete e.__eventHandlers,e instanceof HTMLInputElement&&n instanceof HTMLInputElement&&(e.value!==n.value&&(e.value=n.value),e.checked!==n.checked&&(e.checked=n.checked)),e instanceof HTMLTextAreaElement&&n instanceof HTMLTextAreaElement&&e.value!==n.value&&(e.value=n.value),e instanceof HTMLSelectElement&&n instanceof HTMLSelectElement&&e.value!==n.value&&(e.value=n.value);}function F(e,n){let o=Array.from(e.childNodes),c=Array.from(n.childNodes),r=Math.max(o.length,c.length);for(let a=0;a<r;a++){let t=o[a],i=c[a];!t&&i?e.appendChild(i):t&&!i?e.removeChild(t):t&&i&&H(t,i,e);}}function H(e,n,o){if(j(e,n)){let c=n.__ownerInstance;if(c){let r=c.nodes.indexOf(n);r!==-1&&(c.nodes[r]=e),e.__ownerInstance=c,delete n.__ownerInstance;}e.nodeType===Node.TEXT_NODE?e.nodeValue!==n.nodeValue&&(e.nodeValue=n.nodeValue):e.nodeType===Node.ELEMENT_NODE&&(k(e,n),F(e,n));}else o.replaceChild(n,e);}function P(e,n,o,c){let r=Math.max(e.length,n.length),a=[];for(let t=0;t<r;t++){let i=e[t],s=n[t];!i&&s?(o.insertBefore(s,c),a.push(s)):i&&!s?i.parentNode&&o.removeChild(i):i&&s&&(H(i,s,o),a.push(i));}return a}function $(e,n){n.innerHTML="",typeof e=="function"&&(e={type:e,props:{},children:[],key:void 0}),y(e,n);}exports.a=P;exports.b=$;//# sourceMappingURL=chunk-PUXZJ7OV.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-PUXZJ7OV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dom/render.ts"],"names":["instanceRegistry","currentRenderingInstance","removeComponentInstance","instance","child","node","renderComponent","fnode","parent","registryParent","effectiveRegistryParent","mergeProps","props","hasExplicitKey","parentRegistry","key","instanceCount","componentName","_","k","newProps","isFirstRender","renderFn","currentFnode","currentProps","pushContext","previousRenderingInstance","result","runWithComponent","newNodes","renderNode","nodeParent","marker","lastNode","tempContainer","newNodesArray","reconciledNodes","reconcile","unsafeEffect","oldKeysSet","nodes","newKeysSet","keysToRemove","dom","value","eventName","setAttribute","el","canReuse","oldNode","newNode","updateAttributes","oldEl","newEl","attr","oldHandlers","newHandlers","event","reconcileChildren","oldChildren","newChildren","maxLen","i","oldChild","newChild","patchNode","ownerInstance","idx","oldNodes","beforeMarker","resultNodes","render","app","container"],"mappings":"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","file":"chunk-6Z33DLMI.js","sourcesContent":["import { pushContext } from '../core/context'\nimport { runWithComponent, type ComponentInstance } from '../core/hook'\nimport { unsafeEffect } from '../core/lifecycle'\n\n// Extended ComponentInstance for DOM tracking\ninterface DOMComponentInstance extends ComponentInstance {\n nodes: Node[]\n parent: HTMLElement\n fnode: any\n props: any\n key?: any\n renderFn?: () => void\n children: Set<DOMComponentInstance>\n parentInstance?: DOMComponentInstance\n}\n\n// Registry to store component instances by parent and key\nconst instanceRegistry = new WeakMap<HTMLElement, Map<any, DOMComponentInstance>>()\n\n// Current rendering component instance (for tracking parent-child relationships)\nlet currentRenderingInstance: DOMComponentInstance | null = null\n\n// Recursively remove component instance and all its children\nfunction removeComponentInstance(instance: DOMComponentInstance): void {\n instance.children.forEach(child => {\n removeComponentInstance(child)\n })\n\n instance.nodes.forEach(node => {\n if (node.parentNode) {\n node.parentNode.removeChild(node)\n }\n })\n\n instance.children.clear()\n\n if (instance.parentInstance) {\n instance.parentInstance.children.delete(instance)\n }\n}\n\n// Render a function component with reactive re-rendering\nfunction renderComponent(fnode: any, parent: HTMLElement, registryParent?: HTMLElement): Node[] {\n const effectiveRegistryParent = registryParent || parent\n\n const mergeProps = (node: any) => {\n const props = { ...node.props }\n if (node.children && node.children.length > 0) {\n props.children = node.children.length === 1\n ? node.children[0]\n : node.children\n }\n return props\n }\n\n const hasExplicitKey = fnode.key !== undefined\n\n if (!instanceRegistry.has(effectiveRegistryParent)) {\n instanceRegistry.set(effectiveRegistryParent, new Map())\n }\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n\n let key: any\n if (hasExplicitKey) {\n key = fnode.key\n } else {\n let instanceCount = 0\n const componentName = fnode.type.name || 'anonymous'\n parentRegistry.forEach((_, k) => {\n if (typeof k === 'string' && k.startsWith(`__auto_${componentName}_`)) {\n instanceCount++\n }\n })\n key = `__auto_${componentName}_${instanceCount}`\n }\n\n if (parentRegistry.has(key)) {\n const instance = parentRegistry.get(key)!\n instance.fnode = fnode\n const newProps = mergeProps(fnode)\n instance.props = newProps\n instance.children.clear()\n\n if (instance.renderFn) {\n instance.renderFn()\n }\n\n return instance.nodes\n }\n\n const instance: DOMComponentInstance = {\n hooks: [],\n hookIndex: 0,\n nodes: [],\n parent,\n fnode: fnode,\n props: mergeProps(fnode),\n key,\n children: new Set(),\n parentInstance: currentRenderingInstance || undefined\n }\n\n if (currentRenderingInstance) {\n currentRenderingInstance.children.add(instance)\n }\n\n parentRegistry.set(key, instance)\n\n let isFirstRender = true\n\n const renderFn = () => {\n const currentFnode = instance.fnode\n const currentProps = instance.props\n\n const isProvider = (currentFnode.type as any)._contextId !== undefined\n if (isProvider) {\n pushContext((currentFnode.type as any)._contextId, currentProps.value)\n }\n\n const previousRenderingInstance = currentRenderingInstance\n currentRenderingInstance = instance\n\n const result = runWithComponent(instance, () => currentFnode.type(currentProps))\n\n if (isFirstRender) {\n const newNodes = renderNode(result, parent)\n instance.nodes = newNodes ? (Array.isArray(newNodes) ? newNodes : [newNodes]) : []\n instance.nodes.forEach(node => {\n if (!(node as any).__ownerInstance) {\n (node as any).__ownerInstance = instance\n }\n })\n isFirstRender = false\n } else {\n if (instance.nodes.length === 0) {\n const newNodes = renderNode(result, parent)\n instance.nodes = newNodes ? (Array.isArray(newNodes) ? newNodes : [newNodes]) : []\n currentRenderingInstance = previousRenderingInstance\n return\n }\n\n const firstNode = instance.nodes[0]\n const nodeParent = firstNode.parentNode as HTMLElement\n\n if (!nodeParent) {\n currentRenderingInstance = previousRenderingInstance\n return\n }\n\n const marker = document.createComment('flexium-marker')\n const lastNode = instance.nodes[instance.nodes.length - 1]\n if (lastNode.nextSibling) {\n nodeParent.insertBefore(marker, lastNode.nextSibling)\n } else {\n nodeParent.appendChild(marker)\n }\n\n instance.children.clear()\n\n const tempContainer = document.createElement('div')\n const newNodes = renderNode(result, tempContainer, nodeParent)\n const newNodesArray = newNodes ? (Array.isArray(newNodes) ? newNodes : [newNodes]) : []\n\n const reconciledNodes = reconcile(instance.nodes, newNodesArray, nodeParent, marker)\n\n nodeParent.removeChild(marker)\n\n instance.nodes = reconciledNodes\n }\n\n currentRenderingInstance = previousRenderingInstance\n }\n\n instance.renderFn = renderFn\n\n unsafeEffect(renderFn)\n\n return instance.nodes\n}\n\nfunction renderNode(fnode: any, parent: HTMLElement, registryParent?: HTMLElement): Node | Node[] | null {\n const effectiveRegistryParent = registryParent || parent\n\n if (fnode === null || fnode === undefined || typeof fnode === 'boolean') {\n const node = document.createTextNode('')\n parent.appendChild(node)\n return node\n }\n\n if (typeof fnode === 'string' || typeof fnode === 'number') {\n const node = document.createTextNode(String(fnode))\n parent.appendChild(node)\n return node\n }\n\n if (Array.isArray(fnode)) {\n const oldKeysSet = new Set<any>()\n if (instanceRegistry.has(effectiveRegistryParent)) {\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n parentRegistry.forEach((_, key) => oldKeysSet.add(key))\n }\n\n const nodes: Node[] = []\n fnode.forEach((child) => {\n const result = renderNode(child, parent, registryParent)\n if (result) {\n if (Array.isArray(result)) {\n nodes.push(...result)\n } else {\n nodes.push(result)\n }\n }\n })\n\n const newKeysSet = new Set<any>()\n if (instanceRegistry.has(effectiveRegistryParent)) {\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n parentRegistry.forEach((_, key) => newKeysSet.add(key))\n }\n\n if (instanceRegistry.has(effectiveRegistryParent)) {\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n const keysToRemove: any[] = []\n\n oldKeysSet.forEach(key => {\n if (!newKeysSet.has(key)) {\n const instance = parentRegistry.get(key)\n if (instance) {\n removeComponentInstance(instance)\n keysToRemove.push(key)\n }\n }\n })\n\n keysToRemove.forEach(key => parentRegistry.delete(key))\n }\n\n return nodes\n }\n\n if (typeof fnode === 'object') {\n if (typeof fnode.type === 'string') {\n const dom = document.createElement(fnode.type)\n\n if (fnode.props) {\n Object.entries(fnode.props).forEach(([key, value]) => {\n if (key === 'ref') {\n // Handle both callback refs and RefObject\n if (typeof value === 'function') {\n value(dom)\n } else if (value && typeof value === 'object' && 'current' in value) {\n value.current = dom\n }\n } else if (key.startsWith('on') && typeof value === 'function') {\n const eventName = key.slice(2).toLowerCase()\n dom.addEventListener(eventName, value as EventListener)\n\n if (!(dom as any).__eventHandlers) {\n (dom as any).__eventHandlers = {}\n }\n (dom as any).__eventHandlers[eventName] = value\n } else if (key !== 'ref') {\n setAttribute(dom, key, value)\n }\n })\n }\n\n if (fnode.children && fnode.children.length > 0) {\n fnode.children.forEach((child: any) => {\n renderNode(child, dom)\n })\n }\n\n parent.appendChild(dom)\n return dom\n }\n\n if (typeof fnode.type === 'function') {\n return renderComponent(fnode, parent, registryParent)\n }\n }\n\n return null\n}\n\nfunction setAttribute(el: Element, key: string, value: any) {\n if (value === null || value === undefined) {\n el.removeAttribute(key)\n } else if (key === 'style' && typeof value === 'object') {\n Object.assign((el as HTMLElement).style, value)\n } else if (key === 'class') {\n el.className = String(value)\n } else if (key in el && typeof (el as any)[key] !== 'function') {\n (el as any)[key] = value\n } else {\n el.setAttribute(key, String(value))\n }\n}\n\n// Reconciliation helpers\nfunction canReuse(oldNode: Node, newNode: Node): boolean {\n if (oldNode.nodeType !== newNode.nodeType) return false\n if (oldNode.nodeType === Node.ELEMENT_NODE && newNode.nodeType === Node.ELEMENT_NODE) {\n return (oldNode as Element).tagName === (newNode as Element).tagName\n }\n return true\n}\n\nfunction updateAttributes(oldEl: Element, newEl: Element): void {\n const oldAttrs = Array.from(oldEl.attributes)\n oldAttrs.forEach(attr => {\n if (!newEl.hasAttribute(attr.name)) {\n oldEl.removeAttribute(attr.name)\n }\n })\n\n const newAttrs = Array.from(newEl.attributes)\n newAttrs.forEach(attr => {\n if (oldEl.getAttribute(attr.name) !== attr.value) {\n if (attr.name === 'value' && 'value' in oldEl) {\n (oldEl as HTMLInputElement).value = attr.value\n } else if (attr.name === 'checked' && 'checked' in oldEl) {\n (oldEl as HTMLInputElement).checked = attr.value === 'true' || attr.value === ''\n } else {\n oldEl.setAttribute(attr.name, attr.value)\n }\n }\n })\n\n const oldHandlers = (oldEl as any).__eventHandlers || {}\n const newHandlers = (newEl as any).__eventHandlers || {}\n\n Object.keys(oldHandlers).forEach(event => {\n if (!newHandlers[event]) {\n oldEl.removeEventListener(event, oldHandlers[event])\n }\n })\n\n Object.keys(newHandlers).forEach(event => {\n if (oldHandlers[event] !== newHandlers[event]) {\n if (oldHandlers[event]) {\n oldEl.removeEventListener(event, oldHandlers[event])\n }\n oldEl.addEventListener(event, newHandlers[event])\n }\n })\n\n if (Object.keys(newHandlers).length > 0) {\n (oldEl as any).__eventHandlers = newHandlers\n } else {\n delete (oldEl as any).__eventHandlers\n }\n\n if (oldEl instanceof HTMLInputElement && newEl instanceof HTMLInputElement) {\n if (oldEl.value !== newEl.value) {\n oldEl.value = newEl.value\n }\n if (oldEl.checked !== newEl.checked) {\n oldEl.checked = newEl.checked\n }\n }\n if (oldEl instanceof HTMLTextAreaElement && newEl instanceof HTMLTextAreaElement) {\n if (oldEl.value !== newEl.value) {\n oldEl.value = newEl.value\n }\n }\n if (oldEl instanceof HTMLSelectElement && newEl instanceof HTMLSelectElement) {\n if (oldEl.value !== newEl.value) {\n oldEl.value = newEl.value\n }\n }\n}\n\nfunction reconcileChildren(oldEl: Element, newEl: Element): void {\n const oldChildren = Array.from(oldEl.childNodes)\n const newChildren = Array.from(newEl.childNodes)\n const maxLen = Math.max(oldChildren.length, newChildren.length)\n\n for (let i = 0; i < maxLen; i++) {\n const oldChild = oldChildren[i]\n const newChild = newChildren[i]\n\n if (!oldChild && newChild) {\n oldEl.appendChild(newChild)\n } else if (oldChild && !newChild) {\n oldEl.removeChild(oldChild)\n } else if (oldChild && newChild) {\n patchNode(oldChild, newChild, oldEl)\n }\n }\n}\n\nfunction patchNode(oldNode: Node, newNode: Node, parent: Element): void {\n if (canReuse(oldNode, newNode)) {\n const ownerInstance = (newNode as any).__ownerInstance as DOMComponentInstance | undefined\n if (ownerInstance) {\n const idx = ownerInstance.nodes.indexOf(newNode)\n if (idx !== -1) {\n ownerInstance.nodes[idx] = oldNode\n }\n ;(oldNode as any).__ownerInstance = ownerInstance\n delete (newNode as any).__ownerInstance\n }\n\n if (oldNode.nodeType === Node.TEXT_NODE) {\n if (oldNode.nodeValue !== newNode.nodeValue) {\n oldNode.nodeValue = newNode.nodeValue\n }\n } else if (oldNode.nodeType === Node.ELEMENT_NODE) {\n updateAttributes(oldNode as Element, newNode as Element)\n reconcileChildren(oldNode as Element, newNode as Element)\n }\n } else {\n parent.replaceChild(newNode, oldNode)\n }\n}\n\nexport function reconcile(oldNodes: Node[], newNodes: Node[], parent: Node, beforeMarker: Node): Node[] {\n const maxLen = Math.max(oldNodes.length, newNodes.length)\n const resultNodes: Node[] = []\n\n for (let i = 0; i < maxLen; i++) {\n const oldNode = oldNodes[i]\n const newNode = newNodes[i]\n\n if (!oldNode && newNode) {\n parent.insertBefore(newNode, beforeMarker)\n resultNodes.push(newNode)\n } else if (oldNode && !newNode) {\n if (oldNode.parentNode) {\n parent.removeChild(oldNode)\n }\n } else if (oldNode && newNode) {\n patchNode(oldNode, newNode, parent as Element)\n resultNodes.push(oldNode)\n }\n }\n\n return resultNodes\n}\n\nexport function render(app: any, container: HTMLElement) {\n container.innerHTML = ''\n\n if (typeof app === 'function') {\n app = { type: app, props: {}, children: [], key: undefined }\n }\n\n renderNode(app, container)\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/dom/render.ts"],"names":["instanceRegistry","currentRenderingInstance","removeComponentInstance","instance","child","node","renderComponent","fnode","parent","registryParent","effectiveRegistryParent","mergeProps","props","hasExplicitKey","parentRegistry","key","instanceCount","componentName","_","k","newProps","isFirstRender","renderFn","currentFnode","currentProps","pushContext","previousRenderingInstance","result","runWithComponent","newNodes","renderNode","nodeParent","marker","lastNode","tempContainer","newNodesArray","reconciledNodes","reconcile","unsafeEffect","oldKeysSet","nodes","newKeysSet","keysToRemove","dom","value","eventName","setAttribute","el","canReuse","oldNode","newNode","updateAttributes","oldEl","newEl","attr","oldHandlers","newHandlers","event","reconcileChildren","oldChildren","newChildren","maxLen","i","oldChild","newChild","patchNode","ownerInstance","idx","oldNodes","beforeMarker","resultNodes","render","app","container"],"mappings":"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","file":"chunk-PUXZJ7OV.js","sourcesContent":["import { pushContext } from '../core/context'\nimport { runWithComponent, type ComponentInstance } from '../core/hook'\nimport { unsafeEffect } from '../core/lifecycle'\n\n// Extended ComponentInstance for DOM tracking\ninterface DOMComponentInstance extends ComponentInstance {\n nodes: Node[]\n parent: HTMLElement\n fnode: any\n props: any\n key?: any\n renderFn?: () => void\n children: Set<DOMComponentInstance>\n parentInstance?: DOMComponentInstance\n}\n\n// Registry to store component instances by parent and key\nconst instanceRegistry = new WeakMap<HTMLElement, Map<any, DOMComponentInstance>>()\n\n// Current rendering component instance (for tracking parent-child relationships)\nlet currentRenderingInstance: DOMComponentInstance | null = null\n\n// Recursively remove component instance and all its children\nfunction removeComponentInstance(instance: DOMComponentInstance): void {\n instance.children.forEach(child => {\n removeComponentInstance(child)\n })\n\n instance.nodes.forEach(node => {\n if (node.parentNode) {\n node.parentNode.removeChild(node)\n }\n })\n\n instance.children.clear()\n\n if (instance.parentInstance) {\n instance.parentInstance.children.delete(instance)\n }\n}\n\n// Render a function component with reactive re-rendering\nfunction renderComponent(fnode: any, parent: HTMLElement, registryParent?: HTMLElement): Node[] {\n const effectiveRegistryParent = registryParent || parent\n\n const mergeProps = (node: any) => {\n const props = { ...node.props }\n if (node.children && node.children.length > 0) {\n props.children = node.children.length === 1\n ? node.children[0]\n : node.children\n }\n return props\n }\n\n const hasExplicitKey = fnode.key !== undefined\n\n if (!instanceRegistry.has(effectiveRegistryParent)) {\n instanceRegistry.set(effectiveRegistryParent, new Map())\n }\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n\n let key: any\n if (hasExplicitKey) {\n key = fnode.key\n } else {\n let instanceCount = 0\n const componentName = fnode.type.name || 'anonymous'\n parentRegistry.forEach((_, k) => {\n if (typeof k === 'string' && k.startsWith(`__auto_${componentName}_`)) {\n instanceCount++\n }\n })\n key = `__auto_${componentName}_${instanceCount}`\n }\n\n if (parentRegistry.has(key)) {\n const instance = parentRegistry.get(key)!\n instance.fnode = fnode\n const newProps = mergeProps(fnode)\n instance.props = newProps\n instance.children.clear()\n\n if (instance.renderFn) {\n instance.renderFn()\n }\n\n return instance.nodes\n }\n\n const instance: DOMComponentInstance = {\n hooks: [],\n hookIndex: 0,\n nodes: [],\n parent,\n fnode: fnode,\n props: mergeProps(fnode),\n key,\n children: new Set(),\n parentInstance: currentRenderingInstance || undefined\n }\n\n if (currentRenderingInstance) {\n currentRenderingInstance.children.add(instance)\n }\n\n parentRegistry.set(key, instance)\n\n let isFirstRender = true\n\n const renderFn = () => {\n const currentFnode = instance.fnode\n const currentProps = instance.props\n\n const isProvider = (currentFnode.type as any)._contextId !== undefined\n if (isProvider) {\n pushContext((currentFnode.type as any)._contextId, currentProps.value)\n }\n\n const previousRenderingInstance = currentRenderingInstance\n currentRenderingInstance = instance\n\n const result = runWithComponent(instance, () => currentFnode.type(currentProps))\n\n if (isFirstRender) {\n const newNodes = renderNode(result, parent)\n instance.nodes = newNodes ? (Array.isArray(newNodes) ? newNodes : [newNodes]) : []\n instance.nodes.forEach(node => {\n if (!(node as any).__ownerInstance) {\n (node as any).__ownerInstance = instance\n }\n })\n isFirstRender = false\n } else {\n if (instance.nodes.length === 0) {\n const newNodes = renderNode(result, parent)\n instance.nodes = newNodes ? (Array.isArray(newNodes) ? newNodes : [newNodes]) : []\n currentRenderingInstance = previousRenderingInstance\n return\n }\n\n const firstNode = instance.nodes[0]\n const nodeParent = firstNode.parentNode as HTMLElement\n\n if (!nodeParent) {\n currentRenderingInstance = previousRenderingInstance\n return\n }\n\n const marker = document.createComment('flexium-marker')\n const lastNode = instance.nodes[instance.nodes.length - 1]\n if (lastNode.nextSibling) {\n nodeParent.insertBefore(marker, lastNode.nextSibling)\n } else {\n nodeParent.appendChild(marker)\n }\n\n instance.children.clear()\n\n const tempContainer = document.createElement('div')\n const newNodes = renderNode(result, tempContainer, nodeParent)\n const newNodesArray = newNodes ? (Array.isArray(newNodes) ? newNodes : [newNodes]) : []\n\n const reconciledNodes = reconcile(instance.nodes, newNodesArray, nodeParent, marker)\n\n nodeParent.removeChild(marker)\n\n instance.nodes = reconciledNodes\n }\n\n currentRenderingInstance = previousRenderingInstance\n }\n\n instance.renderFn = renderFn\n\n unsafeEffect(renderFn)\n\n return instance.nodes\n}\n\nfunction renderNode(fnode: any, parent: HTMLElement, registryParent?: HTMLElement): Node | Node[] | null {\n const effectiveRegistryParent = registryParent || parent\n\n if (fnode === null || fnode === undefined || typeof fnode === 'boolean') {\n const node = document.createTextNode('')\n parent.appendChild(node)\n return node\n }\n\n if (typeof fnode === 'string' || typeof fnode === 'number') {\n const node = document.createTextNode(String(fnode))\n parent.appendChild(node)\n return node\n }\n\n if (Array.isArray(fnode)) {\n const oldKeysSet = new Set<any>()\n if (instanceRegistry.has(effectiveRegistryParent)) {\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n parentRegistry.forEach((_, key) => oldKeysSet.add(key))\n }\n\n const nodes: Node[] = []\n fnode.forEach((child) => {\n const result = renderNode(child, parent, registryParent)\n if (result) {\n if (Array.isArray(result)) {\n nodes.push(...result)\n } else {\n nodes.push(result)\n }\n }\n })\n\n const newKeysSet = new Set<any>()\n if (instanceRegistry.has(effectiveRegistryParent)) {\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n parentRegistry.forEach((_, key) => newKeysSet.add(key))\n }\n\n if (instanceRegistry.has(effectiveRegistryParent)) {\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n const keysToRemove: any[] = []\n\n oldKeysSet.forEach(key => {\n if (!newKeysSet.has(key)) {\n const instance = parentRegistry.get(key)\n if (instance) {\n removeComponentInstance(instance)\n keysToRemove.push(key)\n }\n }\n })\n\n keysToRemove.forEach(key => parentRegistry.delete(key))\n }\n\n return nodes\n }\n\n if (typeof fnode === 'object') {\n if (typeof fnode.type === 'string') {\n const dom = document.createElement(fnode.type)\n\n if (fnode.props) {\n Object.entries(fnode.props).forEach(([key, value]) => {\n if (key === 'ref') {\n // Handle both callback refs and RefObject\n if (typeof value === 'function') {\n value(dom)\n } else if (value && typeof value === 'object' && 'current' in value) {\n value.current = dom\n }\n } else if (key.startsWith('on') && typeof value === 'function') {\n const eventName = key.slice(2).toLowerCase()\n dom.addEventListener(eventName, value as EventListener)\n\n if (!(dom as any).__eventHandlers) {\n (dom as any).__eventHandlers = {}\n }\n (dom as any).__eventHandlers[eventName] = value\n } else if (key !== 'ref') {\n setAttribute(dom, key, value)\n }\n })\n }\n\n if (fnode.children && fnode.children.length > 0) {\n fnode.children.forEach((child: any) => {\n renderNode(child, dom)\n })\n }\n\n parent.appendChild(dom)\n return dom\n }\n\n if (typeof fnode.type === 'function') {\n return renderComponent(fnode, parent, registryParent)\n }\n }\n\n return null\n}\n\nfunction setAttribute(el: Element, key: string, value: any) {\n if (value === null || value === undefined) {\n el.removeAttribute(key)\n } else if (key === 'style' && typeof value === 'object') {\n Object.assign((el as HTMLElement).style, value)\n } else if (key === 'class') {\n el.className = String(value)\n } else if (key in el && typeof (el as any)[key] !== 'function') {\n (el as any)[key] = value\n } else {\n el.setAttribute(key, String(value))\n }\n}\n\n// Reconciliation helpers\nfunction canReuse(oldNode: Node, newNode: Node): boolean {\n if (oldNode.nodeType !== newNode.nodeType) return false\n if (oldNode.nodeType === Node.ELEMENT_NODE && newNode.nodeType === Node.ELEMENT_NODE) {\n return (oldNode as Element).tagName === (newNode as Element).tagName\n }\n return true\n}\n\nfunction updateAttributes(oldEl: Element, newEl: Element): void {\n const oldAttrs = Array.from(oldEl.attributes)\n oldAttrs.forEach(attr => {\n if (!newEl.hasAttribute(attr.name)) {\n oldEl.removeAttribute(attr.name)\n }\n })\n\n const newAttrs = Array.from(newEl.attributes)\n newAttrs.forEach(attr => {\n if (oldEl.getAttribute(attr.name) !== attr.value) {\n if (attr.name === 'value' && 'value' in oldEl) {\n (oldEl as HTMLInputElement).value = attr.value\n } else if (attr.name === 'checked' && 'checked' in oldEl) {\n (oldEl as HTMLInputElement).checked = attr.value === 'true' || attr.value === ''\n } else {\n oldEl.setAttribute(attr.name, attr.value)\n }\n }\n })\n\n const oldHandlers = (oldEl as any).__eventHandlers || {}\n const newHandlers = (newEl as any).__eventHandlers || {}\n\n Object.keys(oldHandlers).forEach(event => {\n if (!newHandlers[event]) {\n oldEl.removeEventListener(event, oldHandlers[event])\n }\n })\n\n Object.keys(newHandlers).forEach(event => {\n if (oldHandlers[event] !== newHandlers[event]) {\n if (oldHandlers[event]) {\n oldEl.removeEventListener(event, oldHandlers[event])\n }\n oldEl.addEventListener(event, newHandlers[event])\n }\n })\n\n if (Object.keys(newHandlers).length > 0) {\n (oldEl as any).__eventHandlers = newHandlers\n } else {\n delete (oldEl as any).__eventHandlers\n }\n\n if (oldEl instanceof HTMLInputElement && newEl instanceof HTMLInputElement) {\n if (oldEl.value !== newEl.value) {\n oldEl.value = newEl.value\n }\n if (oldEl.checked !== newEl.checked) {\n oldEl.checked = newEl.checked\n }\n }\n if (oldEl instanceof HTMLTextAreaElement && newEl instanceof HTMLTextAreaElement) {\n if (oldEl.value !== newEl.value) {\n oldEl.value = newEl.value\n }\n }\n if (oldEl instanceof HTMLSelectElement && newEl instanceof HTMLSelectElement) {\n if (oldEl.value !== newEl.value) {\n oldEl.value = newEl.value\n }\n }\n}\n\nfunction reconcileChildren(oldEl: Element, newEl: Element): void {\n const oldChildren = Array.from(oldEl.childNodes)\n const newChildren = Array.from(newEl.childNodes)\n const maxLen = Math.max(oldChildren.length, newChildren.length)\n\n for (let i = 0; i < maxLen; i++) {\n const oldChild = oldChildren[i]\n const newChild = newChildren[i]\n\n if (!oldChild && newChild) {\n oldEl.appendChild(newChild)\n } else if (oldChild && !newChild) {\n oldEl.removeChild(oldChild)\n } else if (oldChild && newChild) {\n patchNode(oldChild, newChild, oldEl)\n }\n }\n}\n\nfunction patchNode(oldNode: Node, newNode: Node, parent: Element): void {\n if (canReuse(oldNode, newNode)) {\n const ownerInstance = (newNode as any).__ownerInstance as DOMComponentInstance | undefined\n if (ownerInstance) {\n const idx = ownerInstance.nodes.indexOf(newNode)\n if (idx !== -1) {\n ownerInstance.nodes[idx] = oldNode\n }\n ;(oldNode as any).__ownerInstance = ownerInstance\n delete (newNode as any).__ownerInstance\n }\n\n if (oldNode.nodeType === Node.TEXT_NODE) {\n if (oldNode.nodeValue !== newNode.nodeValue) {\n oldNode.nodeValue = newNode.nodeValue\n }\n } else if (oldNode.nodeType === Node.ELEMENT_NODE) {\n updateAttributes(oldNode as Element, newNode as Element)\n reconcileChildren(oldNode as Element, newNode as Element)\n }\n } else {\n parent.replaceChild(newNode, oldNode)\n }\n}\n\nexport function reconcile(oldNodes: Node[], newNodes: Node[], parent: Node, beforeMarker: Node): Node[] {\n const maxLen = Math.max(oldNodes.length, newNodes.length)\n const resultNodes: Node[] = []\n\n for (let i = 0; i < maxLen; i++) {\n const oldNode = oldNodes[i]\n const newNode = newNodes[i]\n\n if (!oldNode && newNode) {\n parent.insertBefore(newNode, beforeMarker)\n resultNodes.push(newNode)\n } else if (oldNode && !newNode) {\n if (oldNode.parentNode) {\n parent.removeChild(oldNode)\n }\n } else if (oldNode && newNode) {\n patchNode(oldNode, newNode, parent as Element)\n resultNodes.push(oldNode)\n }\n }\n\n return resultNodes\n}\n\nexport function render(app: any, container: HTMLElement) {\n container.innerHTML = ''\n\n if (typeof app === 'function') {\n app = { type: app, props: {}, children: [], key: undefined }\n }\n\n renderNode(app, container)\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {b}from'./chunk-NRPWBHKP.mjs';import {e,a}from'./chunk-MI76R42D.mjs';var p=new WeakMap,h=null;function E(e){e.children.forEach(n=>{E(n);}),e.nodes.forEach(n=>{n.parentNode&&n.parentNode.removeChild(n);}),e.children.clear(),e.parentInstance&&e.parentInstance.children.delete(e);}function S(e$1,n,o){let c=o||n,r=f=>{let u={...f.props};return f.children&&f.children.length>0&&(u.children=f.children.length===1?f.children[0]:f.children),u},a$1=e$1.key!==void 0;p.has(c)||p.set(c,new Map);let t=p.get(c),i;if(a$1)i=e$1.key;else {let f=0,u=e$1.type.name||"anonymous";t.forEach((b,l)=>{typeof l=="string"&&l.startsWith(`__auto_${u}_`)&&f++;}),i=`__auto_${u}_${f}`;}if(t.has(i)){let f=t.get(i);f.fnode=e$1;let u=r(e$1);return f.props=u,f.children.clear(),f.renderFn&&f.renderFn(),f.nodes}let s={hooks:[],hookIndex:0,nodes:[],parent:n,fnode:e$1,props:r(e$1),key:i,children:new Set,parentInstance:h||void 0};h&&h.children.add(s),t.set(i,s);let d=true,_=()=>{let f=s.fnode,u=s.props;f.type._contextId!==void 0&&e(f.type._contextId,u.value);let l=h;h=s;let v=a(s,()=>f.type(u));if(d){let g=y(v,n);s.nodes=g?Array.isArray(g)?g:[g]:[],s.nodes.forEach(m=>{m.__ownerInstance||(m.__ownerInstance=s);}),d=false;}else {if(s.nodes.length===0){let C=y(v,n);s.nodes=C?Array.isArray(C)?C:[C]:[],h=l;return}let m=s.nodes[0].parentNode;if(!m){h=l;return}let M=document.createComment("flexium-marker"),I=s.nodes[s.nodes.length-1];I.nextSibling?m.insertBefore(M,I.nextSibling):m.appendChild(M),s.children.clear();let x=document.createElement("div"),T=y(v,x,m),O=T?Array.isArray(T)?T:[T]:[],R=P(s.nodes,O,m,M);m.removeChild(M),s.nodes=R;}h=l;};return s.renderFn=_,b(_),s.nodes}function y(e,n,o){let c=o||n;if(e==null||typeof e=="boolean"){let r=document.createTextNode("");return n.appendChild(r),r}if(typeof e=="string"||typeof e=="number"){let r=document.createTextNode(String(e));return n.appendChild(r),r}if(Array.isArray(e)){let r=new Set;p.has(c)&&p.get(c).forEach((s,d)=>r.add(d));let a=[];e.forEach(i=>{let s=y(i,n,o);s&&(Array.isArray(s)?a.push(...s):a.push(s));});let t=new Set;if(p.has(c)&&p.get(c).forEach((s,d)=>t.add(d)),p.has(c)){let i=p.get(c),s=[];r.forEach(d=>{if(!t.has(d)){let _=i.get(d);_&&(E(_),s.push(d));}}),s.forEach(d=>i.delete(d));}return a}if(typeof e=="object"){if(typeof e.type=="string"){let r=document.createElement(e.type);return e.props&&Object.entries(e.props).forEach(([a,t])=>{if(a==="ref")typeof t=="function"?t(r):t&&typeof t=="object"&&"current"in t&&(t.current=r);else if(a.startsWith("on")&&typeof t=="function"){let i=a.slice(2).toLowerCase();r.addEventListener(i,t),r.__eventHandlers||(r.__eventHandlers={}),r.__eventHandlers[i]=t;}else a!=="ref"&&D(r,a,t);}),e.children&&e.children.length>0&&e.children.forEach(a=>{y(a,r);}),n.appendChild(r),r}if(typeof e.type=="function")return S(e,n,o)}return null}function D(e,n,o){o==null?e.removeAttribute(n):n==="style"&&typeof o=="object"?Object.assign(e.style,o):n==="class"?e.className=String(o):n in e&&typeof e[n]!="function"?e[n]=o:e.setAttribute(n,String(o));}function j(e,n){return e.nodeType!==n.nodeType?false:e.nodeType===Node.ELEMENT_NODE&&n.nodeType===Node.ELEMENT_NODE?e.tagName===n.tagName:true}function k(e,n){Array.from(e.attributes).forEach(t=>{n.hasAttribute(t.name)||e.removeAttribute(t.name);}),Array.from(n.attributes).forEach(t=>{e.getAttribute(t.name)!==t.value&&(t.name==="value"&&"value"in e?e.value=t.value:t.name==="checked"&&"checked"in e?e.checked=t.value==="true"||t.value==="":e.setAttribute(t.name,t.value));});let r=e.__eventHandlers||{},a=n.__eventHandlers||{};Object.keys(r).forEach(t=>{a[t]||e.removeEventListener(t,r[t]);}),Object.keys(a).forEach(t=>{r[t]!==a[t]&&(r[t]&&e.removeEventListener(t,r[t]),e.addEventListener(t,a[t]));}),Object.keys(a).length>0?e.__eventHandlers=a:delete e.__eventHandlers,e instanceof HTMLInputElement&&n instanceof HTMLInputElement&&(e.value!==n.value&&(e.value=n.value),e.checked!==n.checked&&(e.checked=n.checked)),e instanceof HTMLTextAreaElement&&n instanceof HTMLTextAreaElement&&e.value!==n.value&&(e.value=n.value),e instanceof HTMLSelectElement&&n instanceof HTMLSelectElement&&e.value!==n.value&&(e.value=n.value);}function F(e,n){let o=Array.from(e.childNodes),c=Array.from(n.childNodes),r=Math.max(o.length,c.length);for(let a=0;a<r;a++){let t=o[a],i=c[a];!t&&i?e.appendChild(i):t&&!i?e.removeChild(t):t&&i&&H(t,i,e);}}function H(e,n,o){if(j(e,n)){let c=n.__ownerInstance;if(c){let r=c.nodes.indexOf(n);r!==-1&&(c.nodes[r]=e),e.__ownerInstance=c,delete n.__ownerInstance;}e.nodeType===Node.TEXT_NODE?e.nodeValue!==n.nodeValue&&(e.nodeValue=n.nodeValue):e.nodeType===Node.ELEMENT_NODE&&(k(e,n),F(e,n));}else o.replaceChild(n,e);}function P(e,n,o,c){let r=Math.max(e.length,n.length),a=[];for(let t=0;t<r;t++){let i=e[t],s=n[t];!i&&s?(o.insertBefore(s,c),a.push(s)):i&&!s?i.parentNode&&o.removeChild(i):i&&s&&(H(i,s,o),a.push(i));}return a}function $(e,n){n.innerHTML="",typeof e=="function"&&(e={type:e,props:{},children:[],key:void 0}),y(e,n);}export{P as a,$ as b};//# sourceMappingURL=chunk-TP5HUAIN.mjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-TP5HUAIN.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dom/render.ts"],"names":["instanceRegistry","currentRenderingInstance","removeComponentInstance","instance","child","node","renderComponent","fnode","parent","registryParent","effectiveRegistryParent","mergeProps","props","hasExplicitKey","parentRegistry","key","instanceCount","componentName","_","k","newProps","isFirstRender","renderFn","currentFnode","currentProps","pushContext","previousRenderingInstance","result","runWithComponent","newNodes","renderNode","nodeParent","marker","lastNode","tempContainer","newNodesArray","reconciledNodes","reconcile","unsafeEffect","oldKeysSet","nodes","newKeysSet","keysToRemove","dom","value","eventName","setAttribute","el","canReuse","oldNode","newNode","updateAttributes","oldEl","newEl","attr","oldHandlers","newHandlers","event","reconcileChildren","oldChildren","newChildren","maxLen","i","oldChild","newChild","patchNode","ownerInstance","idx","oldNodes","beforeMarker","resultNodes","render","app","container"],"mappings":"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","file":"chunk-E75BJDOQ.mjs","sourcesContent":["import { pushContext } from '../core/context'\nimport { runWithComponent, type ComponentInstance } from '../core/hook'\nimport { unsafeEffect } from '../core/lifecycle'\n\n// Extended ComponentInstance for DOM tracking\ninterface DOMComponentInstance extends ComponentInstance {\n nodes: Node[]\n parent: HTMLElement\n fnode: any\n props: any\n key?: any\n renderFn?: () => void\n children: Set<DOMComponentInstance>\n parentInstance?: DOMComponentInstance\n}\n\n// Registry to store component instances by parent and key\nconst instanceRegistry = new WeakMap<HTMLElement, Map<any, DOMComponentInstance>>()\n\n// Current rendering component instance (for tracking parent-child relationships)\nlet currentRenderingInstance: DOMComponentInstance | null = null\n\n// Recursively remove component instance and all its children\nfunction removeComponentInstance(instance: DOMComponentInstance): void {\n instance.children.forEach(child => {\n removeComponentInstance(child)\n })\n\n instance.nodes.forEach(node => {\n if (node.parentNode) {\n node.parentNode.removeChild(node)\n }\n })\n\n instance.children.clear()\n\n if (instance.parentInstance) {\n instance.parentInstance.children.delete(instance)\n }\n}\n\n// Render a function component with reactive re-rendering\nfunction renderComponent(fnode: any, parent: HTMLElement, registryParent?: HTMLElement): Node[] {\n const effectiveRegistryParent = registryParent || parent\n\n const mergeProps = (node: any) => {\n const props = { ...node.props }\n if (node.children && node.children.length > 0) {\n props.children = node.children.length === 1\n ? node.children[0]\n : node.children\n }\n return props\n }\n\n const hasExplicitKey = fnode.key !== undefined\n\n if (!instanceRegistry.has(effectiveRegistryParent)) {\n instanceRegistry.set(effectiveRegistryParent, new Map())\n }\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n\n let key: any\n if (hasExplicitKey) {\n key = fnode.key\n } else {\n let instanceCount = 0\n const componentName = fnode.type.name || 'anonymous'\n parentRegistry.forEach((_, k) => {\n if (typeof k === 'string' && k.startsWith(`__auto_${componentName}_`)) {\n instanceCount++\n }\n })\n key = `__auto_${componentName}_${instanceCount}`\n }\n\n if (parentRegistry.has(key)) {\n const instance = parentRegistry.get(key)!\n instance.fnode = fnode\n const newProps = mergeProps(fnode)\n instance.props = newProps\n instance.children.clear()\n\n if (instance.renderFn) {\n instance.renderFn()\n }\n\n return instance.nodes\n }\n\n const instance: DOMComponentInstance = {\n hooks: [],\n hookIndex: 0,\n nodes: [],\n parent,\n fnode: fnode,\n props: mergeProps(fnode),\n key,\n children: new Set(),\n parentInstance: currentRenderingInstance || undefined\n }\n\n if (currentRenderingInstance) {\n currentRenderingInstance.children.add(instance)\n }\n\n parentRegistry.set(key, instance)\n\n let isFirstRender = true\n\n const renderFn = () => {\n const currentFnode = instance.fnode\n const currentProps = instance.props\n\n const isProvider = (currentFnode.type as any)._contextId !== undefined\n if (isProvider) {\n pushContext((currentFnode.type as any)._contextId, currentProps.value)\n }\n\n const previousRenderingInstance = currentRenderingInstance\n currentRenderingInstance = instance\n\n const result = runWithComponent(instance, () => currentFnode.type(currentProps))\n\n if (isFirstRender) {\n const newNodes = renderNode(result, parent)\n instance.nodes = newNodes ? (Array.isArray(newNodes) ? newNodes : [newNodes]) : []\n instance.nodes.forEach(node => {\n if (!(node as any).__ownerInstance) {\n (node as any).__ownerInstance = instance\n }\n })\n isFirstRender = false\n } else {\n if (instance.nodes.length === 0) {\n const newNodes = renderNode(result, parent)\n instance.nodes = newNodes ? (Array.isArray(newNodes) ? newNodes : [newNodes]) : []\n currentRenderingInstance = previousRenderingInstance\n return\n }\n\n const firstNode = instance.nodes[0]\n const nodeParent = firstNode.parentNode as HTMLElement\n\n if (!nodeParent) {\n currentRenderingInstance = previousRenderingInstance\n return\n }\n\n const marker = document.createComment('flexium-marker')\n const lastNode = instance.nodes[instance.nodes.length - 1]\n if (lastNode.nextSibling) {\n nodeParent.insertBefore(marker, lastNode.nextSibling)\n } else {\n nodeParent.appendChild(marker)\n }\n\n instance.children.clear()\n\n const tempContainer = document.createElement('div')\n const newNodes = renderNode(result, tempContainer, nodeParent)\n const newNodesArray = newNodes ? (Array.isArray(newNodes) ? newNodes : [newNodes]) : []\n\n const reconciledNodes = reconcile(instance.nodes, newNodesArray, nodeParent, marker)\n\n nodeParent.removeChild(marker)\n\n instance.nodes = reconciledNodes\n }\n\n currentRenderingInstance = previousRenderingInstance\n }\n\n instance.renderFn = renderFn\n\n unsafeEffect(renderFn)\n\n return instance.nodes\n}\n\nfunction renderNode(fnode: any, parent: HTMLElement, registryParent?: HTMLElement): Node | Node[] | null {\n const effectiveRegistryParent = registryParent || parent\n\n if (fnode === null || fnode === undefined || typeof fnode === 'boolean') {\n const node = document.createTextNode('')\n parent.appendChild(node)\n return node\n }\n\n if (typeof fnode === 'string' || typeof fnode === 'number') {\n const node = document.createTextNode(String(fnode))\n parent.appendChild(node)\n return node\n }\n\n if (Array.isArray(fnode)) {\n const oldKeysSet = new Set<any>()\n if (instanceRegistry.has(effectiveRegistryParent)) {\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n parentRegistry.forEach((_, key) => oldKeysSet.add(key))\n }\n\n const nodes: Node[] = []\n fnode.forEach((child) => {\n const result = renderNode(child, parent, registryParent)\n if (result) {\n if (Array.isArray(result)) {\n nodes.push(...result)\n } else {\n nodes.push(result)\n }\n }\n })\n\n const newKeysSet = new Set<any>()\n if (instanceRegistry.has(effectiveRegistryParent)) {\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n parentRegistry.forEach((_, key) => newKeysSet.add(key))\n }\n\n if (instanceRegistry.has(effectiveRegistryParent)) {\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n const keysToRemove: any[] = []\n\n oldKeysSet.forEach(key => {\n if (!newKeysSet.has(key)) {\n const instance = parentRegistry.get(key)\n if (instance) {\n removeComponentInstance(instance)\n keysToRemove.push(key)\n }\n }\n })\n\n keysToRemove.forEach(key => parentRegistry.delete(key))\n }\n\n return nodes\n }\n\n if (typeof fnode === 'object') {\n if (typeof fnode.type === 'string') {\n const dom = document.createElement(fnode.type)\n\n if (fnode.props) {\n Object.entries(fnode.props).forEach(([key, value]) => {\n if (key === 'ref') {\n // Handle both callback refs and RefObject\n if (typeof value === 'function') {\n value(dom)\n } else if (value && typeof value === 'object' && 'current' in value) {\n value.current = dom\n }\n } else if (key.startsWith('on') && typeof value === 'function') {\n const eventName = key.slice(2).toLowerCase()\n dom.addEventListener(eventName, value as EventListener)\n\n if (!(dom as any).__eventHandlers) {\n (dom as any).__eventHandlers = {}\n }\n (dom as any).__eventHandlers[eventName] = value\n } else if (key !== 'ref') {\n setAttribute(dom, key, value)\n }\n })\n }\n\n if (fnode.children && fnode.children.length > 0) {\n fnode.children.forEach((child: any) => {\n renderNode(child, dom)\n })\n }\n\n parent.appendChild(dom)\n return dom\n }\n\n if (typeof fnode.type === 'function') {\n return renderComponent(fnode, parent, registryParent)\n }\n }\n\n return null\n}\n\nfunction setAttribute(el: Element, key: string, value: any) {\n if (value === null || value === undefined) {\n el.removeAttribute(key)\n } else if (key === 'style' && typeof value === 'object') {\n Object.assign((el as HTMLElement).style, value)\n } else if (key === 'class') {\n el.className = String(value)\n } else if (key in el && typeof (el as any)[key] !== 'function') {\n (el as any)[key] = value\n } else {\n el.setAttribute(key, String(value))\n }\n}\n\n// Reconciliation helpers\nfunction canReuse(oldNode: Node, newNode: Node): boolean {\n if (oldNode.nodeType !== newNode.nodeType) return false\n if (oldNode.nodeType === Node.ELEMENT_NODE && newNode.nodeType === Node.ELEMENT_NODE) {\n return (oldNode as Element).tagName === (newNode as Element).tagName\n }\n return true\n}\n\nfunction updateAttributes(oldEl: Element, newEl: Element): void {\n const oldAttrs = Array.from(oldEl.attributes)\n oldAttrs.forEach(attr => {\n if (!newEl.hasAttribute(attr.name)) {\n oldEl.removeAttribute(attr.name)\n }\n })\n\n const newAttrs = Array.from(newEl.attributes)\n newAttrs.forEach(attr => {\n if (oldEl.getAttribute(attr.name) !== attr.value) {\n if (attr.name === 'value' && 'value' in oldEl) {\n (oldEl as HTMLInputElement).value = attr.value\n } else if (attr.name === 'checked' && 'checked' in oldEl) {\n (oldEl as HTMLInputElement).checked = attr.value === 'true' || attr.value === ''\n } else {\n oldEl.setAttribute(attr.name, attr.value)\n }\n }\n })\n\n const oldHandlers = (oldEl as any).__eventHandlers || {}\n const newHandlers = (newEl as any).__eventHandlers || {}\n\n Object.keys(oldHandlers).forEach(event => {\n if (!newHandlers[event]) {\n oldEl.removeEventListener(event, oldHandlers[event])\n }\n })\n\n Object.keys(newHandlers).forEach(event => {\n if (oldHandlers[event] !== newHandlers[event]) {\n if (oldHandlers[event]) {\n oldEl.removeEventListener(event, oldHandlers[event])\n }\n oldEl.addEventListener(event, newHandlers[event])\n }\n })\n\n if (Object.keys(newHandlers).length > 0) {\n (oldEl as any).__eventHandlers = newHandlers\n } else {\n delete (oldEl as any).__eventHandlers\n }\n\n if (oldEl instanceof HTMLInputElement && newEl instanceof HTMLInputElement) {\n if (oldEl.value !== newEl.value) {\n oldEl.value = newEl.value\n }\n if (oldEl.checked !== newEl.checked) {\n oldEl.checked = newEl.checked\n }\n }\n if (oldEl instanceof HTMLTextAreaElement && newEl instanceof HTMLTextAreaElement) {\n if (oldEl.value !== newEl.value) {\n oldEl.value = newEl.value\n }\n }\n if (oldEl instanceof HTMLSelectElement && newEl instanceof HTMLSelectElement) {\n if (oldEl.value !== newEl.value) {\n oldEl.value = newEl.value\n }\n }\n}\n\nfunction reconcileChildren(oldEl: Element, newEl: Element): void {\n const oldChildren = Array.from(oldEl.childNodes)\n const newChildren = Array.from(newEl.childNodes)\n const maxLen = Math.max(oldChildren.length, newChildren.length)\n\n for (let i = 0; i < maxLen; i++) {\n const oldChild = oldChildren[i]\n const newChild = newChildren[i]\n\n if (!oldChild && newChild) {\n oldEl.appendChild(newChild)\n } else if (oldChild && !newChild) {\n oldEl.removeChild(oldChild)\n } else if (oldChild && newChild) {\n patchNode(oldChild, newChild, oldEl)\n }\n }\n}\n\nfunction patchNode(oldNode: Node, newNode: Node, parent: Element): void {\n if (canReuse(oldNode, newNode)) {\n const ownerInstance = (newNode as any).__ownerInstance as DOMComponentInstance | undefined\n if (ownerInstance) {\n const idx = ownerInstance.nodes.indexOf(newNode)\n if (idx !== -1) {\n ownerInstance.nodes[idx] = oldNode\n }\n ;(oldNode as any).__ownerInstance = ownerInstance\n delete (newNode as any).__ownerInstance\n }\n\n if (oldNode.nodeType === Node.TEXT_NODE) {\n if (oldNode.nodeValue !== newNode.nodeValue) {\n oldNode.nodeValue = newNode.nodeValue\n }\n } else if (oldNode.nodeType === Node.ELEMENT_NODE) {\n updateAttributes(oldNode as Element, newNode as Element)\n reconcileChildren(oldNode as Element, newNode as Element)\n }\n } else {\n parent.replaceChild(newNode, oldNode)\n }\n}\n\nexport function reconcile(oldNodes: Node[], newNodes: Node[], parent: Node, beforeMarker: Node): Node[] {\n const maxLen = Math.max(oldNodes.length, newNodes.length)\n const resultNodes: Node[] = []\n\n for (let i = 0; i < maxLen; i++) {\n const oldNode = oldNodes[i]\n const newNode = newNodes[i]\n\n if (!oldNode && newNode) {\n parent.insertBefore(newNode, beforeMarker)\n resultNodes.push(newNode)\n } else if (oldNode && !newNode) {\n if (oldNode.parentNode) {\n parent.removeChild(oldNode)\n }\n } else if (oldNode && newNode) {\n patchNode(oldNode, newNode, parent as Element)\n resultNodes.push(oldNode)\n }\n }\n\n return resultNodes\n}\n\nexport function render(app: any, container: HTMLElement) {\n container.innerHTML = ''\n\n if (typeof app === 'function') {\n app = { type: app, props: {}, children: [], key: undefined }\n }\n\n renderNode(app, container)\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/dom/render.ts"],"names":["instanceRegistry","currentRenderingInstance","removeComponentInstance","instance","child","node","renderComponent","fnode","parent","registryParent","effectiveRegistryParent","mergeProps","props","hasExplicitKey","parentRegistry","key","instanceCount","componentName","_","k","newProps","isFirstRender","renderFn","currentFnode","currentProps","pushContext","previousRenderingInstance","result","runWithComponent","newNodes","renderNode","nodeParent","marker","lastNode","tempContainer","newNodesArray","reconciledNodes","reconcile","unsafeEffect","oldKeysSet","nodes","newKeysSet","keysToRemove","dom","value","eventName","setAttribute","el","canReuse","oldNode","newNode","updateAttributes","oldEl","newEl","attr","oldHandlers","newHandlers","event","reconcileChildren","oldChildren","newChildren","maxLen","i","oldChild","newChild","patchNode","ownerInstance","idx","oldNodes","beforeMarker","resultNodes","render","app","container"],"mappings":"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","file":"chunk-TP5HUAIN.mjs","sourcesContent":["import { pushContext } from '../core/context'\nimport { runWithComponent, type ComponentInstance } from '../core/hook'\nimport { unsafeEffect } from '../core/lifecycle'\n\n// Extended ComponentInstance for DOM tracking\ninterface DOMComponentInstance extends ComponentInstance {\n nodes: Node[]\n parent: HTMLElement\n fnode: any\n props: any\n key?: any\n renderFn?: () => void\n children: Set<DOMComponentInstance>\n parentInstance?: DOMComponentInstance\n}\n\n// Registry to store component instances by parent and key\nconst instanceRegistry = new WeakMap<HTMLElement, Map<any, DOMComponentInstance>>()\n\n// Current rendering component instance (for tracking parent-child relationships)\nlet currentRenderingInstance: DOMComponentInstance | null = null\n\n// Recursively remove component instance and all its children\nfunction removeComponentInstance(instance: DOMComponentInstance): void {\n instance.children.forEach(child => {\n removeComponentInstance(child)\n })\n\n instance.nodes.forEach(node => {\n if (node.parentNode) {\n node.parentNode.removeChild(node)\n }\n })\n\n instance.children.clear()\n\n if (instance.parentInstance) {\n instance.parentInstance.children.delete(instance)\n }\n}\n\n// Render a function component with reactive re-rendering\nfunction renderComponent(fnode: any, parent: HTMLElement, registryParent?: HTMLElement): Node[] {\n const effectiveRegistryParent = registryParent || parent\n\n const mergeProps = (node: any) => {\n const props = { ...node.props }\n if (node.children && node.children.length > 0) {\n props.children = node.children.length === 1\n ? node.children[0]\n : node.children\n }\n return props\n }\n\n const hasExplicitKey = fnode.key !== undefined\n\n if (!instanceRegistry.has(effectiveRegistryParent)) {\n instanceRegistry.set(effectiveRegistryParent, new Map())\n }\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n\n let key: any\n if (hasExplicitKey) {\n key = fnode.key\n } else {\n let instanceCount = 0\n const componentName = fnode.type.name || 'anonymous'\n parentRegistry.forEach((_, k) => {\n if (typeof k === 'string' && k.startsWith(`__auto_${componentName}_`)) {\n instanceCount++\n }\n })\n key = `__auto_${componentName}_${instanceCount}`\n }\n\n if (parentRegistry.has(key)) {\n const instance = parentRegistry.get(key)!\n instance.fnode = fnode\n const newProps = mergeProps(fnode)\n instance.props = newProps\n instance.children.clear()\n\n if (instance.renderFn) {\n instance.renderFn()\n }\n\n return instance.nodes\n }\n\n const instance: DOMComponentInstance = {\n hooks: [],\n hookIndex: 0,\n nodes: [],\n parent,\n fnode: fnode,\n props: mergeProps(fnode),\n key,\n children: new Set(),\n parentInstance: currentRenderingInstance || undefined\n }\n\n if (currentRenderingInstance) {\n currentRenderingInstance.children.add(instance)\n }\n\n parentRegistry.set(key, instance)\n\n let isFirstRender = true\n\n const renderFn = () => {\n const currentFnode = instance.fnode\n const currentProps = instance.props\n\n const isProvider = (currentFnode.type as any)._contextId !== undefined\n if (isProvider) {\n pushContext((currentFnode.type as any)._contextId, currentProps.value)\n }\n\n const previousRenderingInstance = currentRenderingInstance\n currentRenderingInstance = instance\n\n const result = runWithComponent(instance, () => currentFnode.type(currentProps))\n\n if (isFirstRender) {\n const newNodes = renderNode(result, parent)\n instance.nodes = newNodes ? (Array.isArray(newNodes) ? newNodes : [newNodes]) : []\n instance.nodes.forEach(node => {\n if (!(node as any).__ownerInstance) {\n (node as any).__ownerInstance = instance\n }\n })\n isFirstRender = false\n } else {\n if (instance.nodes.length === 0) {\n const newNodes = renderNode(result, parent)\n instance.nodes = newNodes ? (Array.isArray(newNodes) ? newNodes : [newNodes]) : []\n currentRenderingInstance = previousRenderingInstance\n return\n }\n\n const firstNode = instance.nodes[0]\n const nodeParent = firstNode.parentNode as HTMLElement\n\n if (!nodeParent) {\n currentRenderingInstance = previousRenderingInstance\n return\n }\n\n const marker = document.createComment('flexium-marker')\n const lastNode = instance.nodes[instance.nodes.length - 1]\n if (lastNode.nextSibling) {\n nodeParent.insertBefore(marker, lastNode.nextSibling)\n } else {\n nodeParent.appendChild(marker)\n }\n\n instance.children.clear()\n\n const tempContainer = document.createElement('div')\n const newNodes = renderNode(result, tempContainer, nodeParent)\n const newNodesArray = newNodes ? (Array.isArray(newNodes) ? newNodes : [newNodes]) : []\n\n const reconciledNodes = reconcile(instance.nodes, newNodesArray, nodeParent, marker)\n\n nodeParent.removeChild(marker)\n\n instance.nodes = reconciledNodes\n }\n\n currentRenderingInstance = previousRenderingInstance\n }\n\n instance.renderFn = renderFn\n\n unsafeEffect(renderFn)\n\n return instance.nodes\n}\n\nfunction renderNode(fnode: any, parent: HTMLElement, registryParent?: HTMLElement): Node | Node[] | null {\n const effectiveRegistryParent = registryParent || parent\n\n if (fnode === null || fnode === undefined || typeof fnode === 'boolean') {\n const node = document.createTextNode('')\n parent.appendChild(node)\n return node\n }\n\n if (typeof fnode === 'string' || typeof fnode === 'number') {\n const node = document.createTextNode(String(fnode))\n parent.appendChild(node)\n return node\n }\n\n if (Array.isArray(fnode)) {\n const oldKeysSet = new Set<any>()\n if (instanceRegistry.has(effectiveRegistryParent)) {\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n parentRegistry.forEach((_, key) => oldKeysSet.add(key))\n }\n\n const nodes: Node[] = []\n fnode.forEach((child) => {\n const result = renderNode(child, parent, registryParent)\n if (result) {\n if (Array.isArray(result)) {\n nodes.push(...result)\n } else {\n nodes.push(result)\n }\n }\n })\n\n const newKeysSet = new Set<any>()\n if (instanceRegistry.has(effectiveRegistryParent)) {\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n parentRegistry.forEach((_, key) => newKeysSet.add(key))\n }\n\n if (instanceRegistry.has(effectiveRegistryParent)) {\n const parentRegistry = instanceRegistry.get(effectiveRegistryParent)!\n const keysToRemove: any[] = []\n\n oldKeysSet.forEach(key => {\n if (!newKeysSet.has(key)) {\n const instance = parentRegistry.get(key)\n if (instance) {\n removeComponentInstance(instance)\n keysToRemove.push(key)\n }\n }\n })\n\n keysToRemove.forEach(key => parentRegistry.delete(key))\n }\n\n return nodes\n }\n\n if (typeof fnode === 'object') {\n if (typeof fnode.type === 'string') {\n const dom = document.createElement(fnode.type)\n\n if (fnode.props) {\n Object.entries(fnode.props).forEach(([key, value]) => {\n if (key === 'ref') {\n // Handle both callback refs and RefObject\n if (typeof value === 'function') {\n value(dom)\n } else if (value && typeof value === 'object' && 'current' in value) {\n value.current = dom\n }\n } else if (key.startsWith('on') && typeof value === 'function') {\n const eventName = key.slice(2).toLowerCase()\n dom.addEventListener(eventName, value as EventListener)\n\n if (!(dom as any).__eventHandlers) {\n (dom as any).__eventHandlers = {}\n }\n (dom as any).__eventHandlers[eventName] = value\n } else if (key !== 'ref') {\n setAttribute(dom, key, value)\n }\n })\n }\n\n if (fnode.children && fnode.children.length > 0) {\n fnode.children.forEach((child: any) => {\n renderNode(child, dom)\n })\n }\n\n parent.appendChild(dom)\n return dom\n }\n\n if (typeof fnode.type === 'function') {\n return renderComponent(fnode, parent, registryParent)\n }\n }\n\n return null\n}\n\nfunction setAttribute(el: Element, key: string, value: any) {\n if (value === null || value === undefined) {\n el.removeAttribute(key)\n } else if (key === 'style' && typeof value === 'object') {\n Object.assign((el as HTMLElement).style, value)\n } else if (key === 'class') {\n el.className = String(value)\n } else if (key in el && typeof (el as any)[key] !== 'function') {\n (el as any)[key] = value\n } else {\n el.setAttribute(key, String(value))\n }\n}\n\n// Reconciliation helpers\nfunction canReuse(oldNode: Node, newNode: Node): boolean {\n if (oldNode.nodeType !== newNode.nodeType) return false\n if (oldNode.nodeType === Node.ELEMENT_NODE && newNode.nodeType === Node.ELEMENT_NODE) {\n return (oldNode as Element).tagName === (newNode as Element).tagName\n }\n return true\n}\n\nfunction updateAttributes(oldEl: Element, newEl: Element): void {\n const oldAttrs = Array.from(oldEl.attributes)\n oldAttrs.forEach(attr => {\n if (!newEl.hasAttribute(attr.name)) {\n oldEl.removeAttribute(attr.name)\n }\n })\n\n const newAttrs = Array.from(newEl.attributes)\n newAttrs.forEach(attr => {\n if (oldEl.getAttribute(attr.name) !== attr.value) {\n if (attr.name === 'value' && 'value' in oldEl) {\n (oldEl as HTMLInputElement).value = attr.value\n } else if (attr.name === 'checked' && 'checked' in oldEl) {\n (oldEl as HTMLInputElement).checked = attr.value === 'true' || attr.value === ''\n } else {\n oldEl.setAttribute(attr.name, attr.value)\n }\n }\n })\n\n const oldHandlers = (oldEl as any).__eventHandlers || {}\n const newHandlers = (newEl as any).__eventHandlers || {}\n\n Object.keys(oldHandlers).forEach(event => {\n if (!newHandlers[event]) {\n oldEl.removeEventListener(event, oldHandlers[event])\n }\n })\n\n Object.keys(newHandlers).forEach(event => {\n if (oldHandlers[event] !== newHandlers[event]) {\n if (oldHandlers[event]) {\n oldEl.removeEventListener(event, oldHandlers[event])\n }\n oldEl.addEventListener(event, newHandlers[event])\n }\n })\n\n if (Object.keys(newHandlers).length > 0) {\n (oldEl as any).__eventHandlers = newHandlers\n } else {\n delete (oldEl as any).__eventHandlers\n }\n\n if (oldEl instanceof HTMLInputElement && newEl instanceof HTMLInputElement) {\n if (oldEl.value !== newEl.value) {\n oldEl.value = newEl.value\n }\n if (oldEl.checked !== newEl.checked) {\n oldEl.checked = newEl.checked\n }\n }\n if (oldEl instanceof HTMLTextAreaElement && newEl instanceof HTMLTextAreaElement) {\n if (oldEl.value !== newEl.value) {\n oldEl.value = newEl.value\n }\n }\n if (oldEl instanceof HTMLSelectElement && newEl instanceof HTMLSelectElement) {\n if (oldEl.value !== newEl.value) {\n oldEl.value = newEl.value\n }\n }\n}\n\nfunction reconcileChildren(oldEl: Element, newEl: Element): void {\n const oldChildren = Array.from(oldEl.childNodes)\n const newChildren = Array.from(newEl.childNodes)\n const maxLen = Math.max(oldChildren.length, newChildren.length)\n\n for (let i = 0; i < maxLen; i++) {\n const oldChild = oldChildren[i]\n const newChild = newChildren[i]\n\n if (!oldChild && newChild) {\n oldEl.appendChild(newChild)\n } else if (oldChild && !newChild) {\n oldEl.removeChild(oldChild)\n } else if (oldChild && newChild) {\n patchNode(oldChild, newChild, oldEl)\n }\n }\n}\n\nfunction patchNode(oldNode: Node, newNode: Node, parent: Element): void {\n if (canReuse(oldNode, newNode)) {\n const ownerInstance = (newNode as any).__ownerInstance as DOMComponentInstance | undefined\n if (ownerInstance) {\n const idx = ownerInstance.nodes.indexOf(newNode)\n if (idx !== -1) {\n ownerInstance.nodes[idx] = oldNode\n }\n ;(oldNode as any).__ownerInstance = ownerInstance\n delete (newNode as any).__ownerInstance\n }\n\n if (oldNode.nodeType === Node.TEXT_NODE) {\n if (oldNode.nodeValue !== newNode.nodeValue) {\n oldNode.nodeValue = newNode.nodeValue\n }\n } else if (oldNode.nodeType === Node.ELEMENT_NODE) {\n updateAttributes(oldNode as Element, newNode as Element)\n reconcileChildren(oldNode as Element, newNode as Element)\n }\n } else {\n parent.replaceChild(newNode, oldNode)\n }\n}\n\nexport function reconcile(oldNodes: Node[], newNodes: Node[], parent: Node, beforeMarker: Node): Node[] {\n const maxLen = Math.max(oldNodes.length, newNodes.length)\n const resultNodes: Node[] = []\n\n for (let i = 0; i < maxLen; i++) {\n const oldNode = oldNodes[i]\n const newNode = newNodes[i]\n\n if (!oldNode && newNode) {\n parent.insertBefore(newNode, beforeMarker)\n resultNodes.push(newNode)\n } else if (oldNode && !newNode) {\n if (oldNode.parentNode) {\n parent.removeChild(oldNode)\n }\n } else if (oldNode && newNode) {\n patchNode(oldNode, newNode, parent as Element)\n resultNodes.push(oldNode)\n }\n }\n\n return resultNodes\n}\n\nexport function render(app: any, container: HTMLElement) {\n container.innerHTML = ''\n\n if (typeof app === 'function') {\n app = { type: app, props: {}, children: [], key: undefined }\n }\n\n renderNode(app, container)\n}\n"]}
|
package/dist/core.d.cts
CHANGED
|
@@ -1,31 +1,53 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Context for passing data through the component tree
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```tsx
|
|
6
|
+
* const ThemeContext = new Context('light')
|
|
7
|
+
*
|
|
8
|
+
* function App() {
|
|
9
|
+
* return (
|
|
10
|
+
* <ThemeContext.Provider value="dark">
|
|
11
|
+
* <Child />
|
|
12
|
+
* </ThemeContext.Provider>
|
|
13
|
+
* )
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* function Child() {
|
|
17
|
+
* const [theme] = use(ThemeContext)
|
|
18
|
+
* return <div>{theme}</div>
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
declare class Context<T> {
|
|
23
|
+
readonly id: symbol;
|
|
24
|
+
readonly defaultValue: T;
|
|
25
|
+
readonly Provider: (props: {
|
|
26
|
+
value: T;
|
|
27
|
+
children: any;
|
|
28
|
+
}) => any;
|
|
29
|
+
constructor(defaultValue: T);
|
|
30
|
+
}
|
|
2
31
|
|
|
3
|
-
type
|
|
4
|
-
type ResourceControl = {
|
|
5
|
-
refetch: () => Promise<void>;
|
|
32
|
+
type Setter<T> = (newValue: T | ((prev: T) => T)) => void;
|
|
33
|
+
type ResourceControl<P = void> = {
|
|
34
|
+
refetch: (params?: P) => Promise<void>;
|
|
6
35
|
readonly loading: boolean;
|
|
7
36
|
readonly error: unknown;
|
|
8
37
|
readonly status: 'idle' | 'loading' | 'success' | 'error';
|
|
9
38
|
};
|
|
10
|
-
interface
|
|
39
|
+
interface UseContext<P = void> {
|
|
40
|
+
onCleanup: (fn: () => void) => void;
|
|
41
|
+
params?: P;
|
|
42
|
+
}
|
|
43
|
+
interface UseOptions {
|
|
11
44
|
key?: unknown[];
|
|
12
|
-
deps?: any[];
|
|
13
|
-
/** Debug name for DevTools */
|
|
14
45
|
name?: string;
|
|
15
46
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}) => any;
|
|
21
|
-
id: symbol;
|
|
22
|
-
defaultValue: T;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
type StateAction<T> = StateSetter<T> | ResourceControl;
|
|
26
|
-
declare function state<T>(fn: () => Promise<T>, options?: StateOptions): [T | undefined, ResourceControl];
|
|
27
|
-
declare function state<T>(fn: () => T, options?: StateOptions): [T, ResourceControl];
|
|
28
|
-
declare function state<T>(initialValue: T extends Function ? never : T, options?: StateOptions): [T, StateSetter<T>];
|
|
47
|
+
declare function use<T>(ctx: Context<T>): [T, undefined];
|
|
48
|
+
declare function use<T, P = void>(fn: (ctx: UseContext<P>) => Promise<T>, depsOrOptions?: any[] | UseOptions, options?: UseOptions): [T | undefined, ResourceControl<P>];
|
|
49
|
+
declare function use<T>(fn: (ctx: UseContext) => T, depsOrOptions?: any[] | UseOptions, options?: UseOptions): [T, ResourceControl];
|
|
50
|
+
declare function use<T>(initialValue: T extends Function ? never : T, options?: UseOptions): [T, Setter<T>];
|
|
29
51
|
|
|
30
52
|
interface RefObject<T> {
|
|
31
53
|
current: T | null;
|
|
@@ -34,7 +56,6 @@ type RefCallback<T> = (instance: T | null) => void;
|
|
|
34
56
|
type Ref<T> = RefObject<T> | RefCallback<T> | null;
|
|
35
57
|
type ForwardedRef<T> = RefCallback<T> | RefObject<T> | null;
|
|
36
58
|
|
|
37
|
-
declare function effect(fn: () => (void | (() => void)), deps?: any[]): void;
|
|
38
59
|
/**
|
|
39
60
|
* Unified sync API
|
|
40
61
|
* - sync(): Force refresh (flush pending effects)
|
|
@@ -42,60 +63,13 @@ declare function effect(fn: () => (void | (() => void)), deps?: any[]): void;
|
|
|
42
63
|
*/
|
|
43
64
|
declare function sync(fn?: () => void): void;
|
|
44
65
|
|
|
45
|
-
declare function createContext<T>(defaultValue: T): Context<T>;
|
|
46
|
-
declare function context<T>(ctx: Context<T>): T;
|
|
47
|
-
|
|
48
|
-
declare const FORWARD_REF_SYMBOL: unique symbol;
|
|
49
|
-
interface ForwardRefRenderFunction<P, T> {
|
|
50
|
-
(props: P, ref: ForwardedRef<T>): FNodeChild;
|
|
51
|
-
}
|
|
52
|
-
interface ForwardRefComponent<P, T> {
|
|
53
|
-
(props: P & {
|
|
54
|
-
ref?: Ref<T>;
|
|
55
|
-
}): FNodeChild;
|
|
56
|
-
$$typeof: typeof FORWARD_REF_SYMBOL;
|
|
57
|
-
render: ForwardRefRenderFunction<P, T>;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Forwards a ref through a component to a child element
|
|
61
|
-
*
|
|
62
|
-
* @example
|
|
63
|
-
* ```tsx
|
|
64
|
-
* const FancyInput = forwardRef<{ placeholder?: string }, HTMLInputElement>(
|
|
65
|
-
* (props, ref) => {
|
|
66
|
-
* return (
|
|
67
|
-
* <input
|
|
68
|
-
* ref={ref}
|
|
69
|
-
* class="fancy-input"
|
|
70
|
-
* placeholder={props.placeholder}
|
|
71
|
-
* />
|
|
72
|
-
* )
|
|
73
|
-
* }
|
|
74
|
-
* )
|
|
75
|
-
*
|
|
76
|
-
* function Parent() {
|
|
77
|
-
* const inputRef = ref<HTMLInputElement>()
|
|
78
|
-
*
|
|
79
|
-
* return (
|
|
80
|
-
* <div>
|
|
81
|
-
* <FancyInput ref={inputRef} placeholder="Type here..." />
|
|
82
|
-
* <button onClick={() => inputRef.current?.select()}>
|
|
83
|
-
* Select All
|
|
84
|
-
* </button>
|
|
85
|
-
* </div>
|
|
86
|
-
* )
|
|
87
|
-
* }
|
|
88
|
-
* ```
|
|
89
|
-
*/
|
|
90
|
-
declare function forwardRef<P = {}, T = HTMLElement>(render: ForwardRefRenderFunction<P, T>): ForwardRefComponent<P, T>;
|
|
91
|
-
|
|
92
66
|
/**
|
|
93
67
|
* Creates a mutable ref object that persists across renders
|
|
94
68
|
*
|
|
95
69
|
* @example
|
|
96
70
|
* ```tsx
|
|
97
71
|
* function InputWithFocus() {
|
|
98
|
-
* const inputRef =
|
|
72
|
+
* const inputRef = useRef<HTMLInputElement>()
|
|
99
73
|
*
|
|
100
74
|
* const focusInput = () => {
|
|
101
75
|
* inputRef.current?.focus()
|
|
@@ -110,8 +84,8 @@ declare function forwardRef<P = {}, T = HTMLElement>(render: ForwardRefRenderFun
|
|
|
110
84
|
* }
|
|
111
85
|
* ```
|
|
112
86
|
*/
|
|
113
|
-
declare function
|
|
114
|
-
declare function
|
|
115
|
-
declare function
|
|
87
|
+
declare function useRef<T>(initialValue: T): RefObject<T>;
|
|
88
|
+
declare function useRef<T>(initialValue: T | null): RefObject<T | null>;
|
|
89
|
+
declare function useRef<T = undefined>(): RefObject<T | undefined>;
|
|
116
90
|
|
|
117
|
-
export {
|
|
91
|
+
export { Context, type ForwardedRef, type Ref, type RefCallback, type RefObject, type ResourceControl, type Setter, type UseContext, type UseOptions, sync, use, useRef };
|
package/dist/core.d.ts
CHANGED
|
@@ -1,31 +1,53 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Context for passing data through the component tree
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```tsx
|
|
6
|
+
* const ThemeContext = new Context('light')
|
|
7
|
+
*
|
|
8
|
+
* function App() {
|
|
9
|
+
* return (
|
|
10
|
+
* <ThemeContext.Provider value="dark">
|
|
11
|
+
* <Child />
|
|
12
|
+
* </ThemeContext.Provider>
|
|
13
|
+
* )
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* function Child() {
|
|
17
|
+
* const [theme] = use(ThemeContext)
|
|
18
|
+
* return <div>{theme}</div>
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
declare class Context<T> {
|
|
23
|
+
readonly id: symbol;
|
|
24
|
+
readonly defaultValue: T;
|
|
25
|
+
readonly Provider: (props: {
|
|
26
|
+
value: T;
|
|
27
|
+
children: any;
|
|
28
|
+
}) => any;
|
|
29
|
+
constructor(defaultValue: T);
|
|
30
|
+
}
|
|
2
31
|
|
|
3
|
-
type
|
|
4
|
-
type ResourceControl = {
|
|
5
|
-
refetch: () => Promise<void>;
|
|
32
|
+
type Setter<T> = (newValue: T | ((prev: T) => T)) => void;
|
|
33
|
+
type ResourceControl<P = void> = {
|
|
34
|
+
refetch: (params?: P) => Promise<void>;
|
|
6
35
|
readonly loading: boolean;
|
|
7
36
|
readonly error: unknown;
|
|
8
37
|
readonly status: 'idle' | 'loading' | 'success' | 'error';
|
|
9
38
|
};
|
|
10
|
-
interface
|
|
39
|
+
interface UseContext<P = void> {
|
|
40
|
+
onCleanup: (fn: () => void) => void;
|
|
41
|
+
params?: P;
|
|
42
|
+
}
|
|
43
|
+
interface UseOptions {
|
|
11
44
|
key?: unknown[];
|
|
12
|
-
deps?: any[];
|
|
13
|
-
/** Debug name for DevTools */
|
|
14
45
|
name?: string;
|
|
15
46
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}) => any;
|
|
21
|
-
id: symbol;
|
|
22
|
-
defaultValue: T;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
type StateAction<T> = StateSetter<T> | ResourceControl;
|
|
26
|
-
declare function state<T>(fn: () => Promise<T>, options?: StateOptions): [T | undefined, ResourceControl];
|
|
27
|
-
declare function state<T>(fn: () => T, options?: StateOptions): [T, ResourceControl];
|
|
28
|
-
declare function state<T>(initialValue: T extends Function ? never : T, options?: StateOptions): [T, StateSetter<T>];
|
|
47
|
+
declare function use<T>(ctx: Context<T>): [T, undefined];
|
|
48
|
+
declare function use<T, P = void>(fn: (ctx: UseContext<P>) => Promise<T>, depsOrOptions?: any[] | UseOptions, options?: UseOptions): [T | undefined, ResourceControl<P>];
|
|
49
|
+
declare function use<T>(fn: (ctx: UseContext) => T, depsOrOptions?: any[] | UseOptions, options?: UseOptions): [T, ResourceControl];
|
|
50
|
+
declare function use<T>(initialValue: T extends Function ? never : T, options?: UseOptions): [T, Setter<T>];
|
|
29
51
|
|
|
30
52
|
interface RefObject<T> {
|
|
31
53
|
current: T | null;
|
|
@@ -34,7 +56,6 @@ type RefCallback<T> = (instance: T | null) => void;
|
|
|
34
56
|
type Ref<T> = RefObject<T> | RefCallback<T> | null;
|
|
35
57
|
type ForwardedRef<T> = RefCallback<T> | RefObject<T> | null;
|
|
36
58
|
|
|
37
|
-
declare function effect(fn: () => (void | (() => void)), deps?: any[]): void;
|
|
38
59
|
/**
|
|
39
60
|
* Unified sync API
|
|
40
61
|
* - sync(): Force refresh (flush pending effects)
|
|
@@ -42,60 +63,13 @@ declare function effect(fn: () => (void | (() => void)), deps?: any[]): void;
|
|
|
42
63
|
*/
|
|
43
64
|
declare function sync(fn?: () => void): void;
|
|
44
65
|
|
|
45
|
-
declare function createContext<T>(defaultValue: T): Context<T>;
|
|
46
|
-
declare function context<T>(ctx: Context<T>): T;
|
|
47
|
-
|
|
48
|
-
declare const FORWARD_REF_SYMBOL: unique symbol;
|
|
49
|
-
interface ForwardRefRenderFunction<P, T> {
|
|
50
|
-
(props: P, ref: ForwardedRef<T>): FNodeChild;
|
|
51
|
-
}
|
|
52
|
-
interface ForwardRefComponent<P, T> {
|
|
53
|
-
(props: P & {
|
|
54
|
-
ref?: Ref<T>;
|
|
55
|
-
}): FNodeChild;
|
|
56
|
-
$$typeof: typeof FORWARD_REF_SYMBOL;
|
|
57
|
-
render: ForwardRefRenderFunction<P, T>;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Forwards a ref through a component to a child element
|
|
61
|
-
*
|
|
62
|
-
* @example
|
|
63
|
-
* ```tsx
|
|
64
|
-
* const FancyInput = forwardRef<{ placeholder?: string }, HTMLInputElement>(
|
|
65
|
-
* (props, ref) => {
|
|
66
|
-
* return (
|
|
67
|
-
* <input
|
|
68
|
-
* ref={ref}
|
|
69
|
-
* class="fancy-input"
|
|
70
|
-
* placeholder={props.placeholder}
|
|
71
|
-
* />
|
|
72
|
-
* )
|
|
73
|
-
* }
|
|
74
|
-
* )
|
|
75
|
-
*
|
|
76
|
-
* function Parent() {
|
|
77
|
-
* const inputRef = ref<HTMLInputElement>()
|
|
78
|
-
*
|
|
79
|
-
* return (
|
|
80
|
-
* <div>
|
|
81
|
-
* <FancyInput ref={inputRef} placeholder="Type here..." />
|
|
82
|
-
* <button onClick={() => inputRef.current?.select()}>
|
|
83
|
-
* Select All
|
|
84
|
-
* </button>
|
|
85
|
-
* </div>
|
|
86
|
-
* )
|
|
87
|
-
* }
|
|
88
|
-
* ```
|
|
89
|
-
*/
|
|
90
|
-
declare function forwardRef<P = {}, T = HTMLElement>(render: ForwardRefRenderFunction<P, T>): ForwardRefComponent<P, T>;
|
|
91
|
-
|
|
92
66
|
/**
|
|
93
67
|
* Creates a mutable ref object that persists across renders
|
|
94
68
|
*
|
|
95
69
|
* @example
|
|
96
70
|
* ```tsx
|
|
97
71
|
* function InputWithFocus() {
|
|
98
|
-
* const inputRef =
|
|
72
|
+
* const inputRef = useRef<HTMLInputElement>()
|
|
99
73
|
*
|
|
100
74
|
* const focusInput = () => {
|
|
101
75
|
* inputRef.current?.focus()
|
|
@@ -110,8 +84,8 @@ declare function forwardRef<P = {}, T = HTMLElement>(render: ForwardRefRenderFun
|
|
|
110
84
|
* }
|
|
111
85
|
* ```
|
|
112
86
|
*/
|
|
113
|
-
declare function
|
|
114
|
-
declare function
|
|
115
|
-
declare function
|
|
87
|
+
declare function useRef<T>(initialValue: T): RefObject<T>;
|
|
88
|
+
declare function useRef<T>(initialValue: T | null): RefObject<T | null>;
|
|
89
|
+
declare function useRef<T = undefined>(): RefObject<T | undefined>;
|
|
116
90
|
|
|
117
|
-
export {
|
|
91
|
+
export { Context, type ForwardedRef, type Ref, type RefCallback, type RefObject, type ResourceControl, type Setter, type UseContext, type UseOptions, sync, use, useRef };
|
package/dist/core.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkACYN2UKT_js=require('./chunk-ACYN2UKT.js'),chunk3CKIHQIE_js=require('./chunk-3CKIHQIE.js'),chunkE6Z7AI4J_js=require('./chunk-E6Z7AI4J.js');function n(t){return chunkE6Z7AI4J_js.b(()=>({current:t}))}Object.defineProperty(exports,"use",{enumerable:true,get:function(){return chunkACYN2UKT_js.c}});Object.defineProperty(exports,"sync",{enumerable:true,get:function(){return chunk3CKIHQIE_js.e}});Object.defineProperty(exports,"Context",{enumerable:true,get:function(){return chunkE6Z7AI4J_js.c}});exports.useRef=n;//# sourceMappingURL=core.js.map
|
|
2
2
|
//# sourceMappingURL=core.js.map
|