lithent 1.0.2 → 1.0.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"lithent.umd.js","sources":["../src/utils/predicator.ts","../src/utils/index.ts","../src/utils/universalRef.ts","../src/hook/unmount.ts","../src/hook/mountCallback.ts","../src/hook/useUpdate.ts","../src/render.ts","../src/diff.ts","../src/wDom.ts","../src/hook/updateCallback.ts","../src/hook/ref.ts"],"sourcesContent":["import { Fragment } from '@/wDom';\nimport {\n WDom,\n TagFunction,\n TagFunctionResolver,\n FragmentFunction,\n WDomType,\n} from '@/types';\n\ntype WDomParam =\n | string\n | WDom\n | TagFunction\n | TagFunctionResolver\n | FragmentFunction;\n\n/**\n * Predicator\n */\n\nconst checkPlainWDomType = (wDom: WDomParam): wDom is WDom =>\n typeof wDom === 'object' && !('resolve' in wDom);\n\nconst checkPlainType = (wDom: WDomParam, typeName: string) =>\n checkPlainWDomType(wDom) && wDom.type === typeName;\n\nconst checkSameCustomComponent = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n 'ctor' in newWDom\n ? newWDom.ctor === originalWDom?.ctor\n : newWDom === originalWDom?.ctor;\n\nconst checkSameFragment = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'fragment' &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkSameTagElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'element' &&\n originalWDom?.tag === newWDom.tag &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkNormalTypeElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === newWDom.type &&\n (originalWDom?.children?.length === newWDom?.children?.length ||\n (newWDom.type === 'loop' &&\n checkExisty(getKey((newWDom.children || [])[0])) &&\n checkExisty(getKey((originalWDom.children || [])[0]))));\n\nexport const getKey = (target: WDom) =>\n target?.compProps?.key ?? target?.props?.key;\n\nexport const checkVirtualType = (type: string | null) =>\n type && ['fragment', 'loop'].includes(type);\n\nexport const checkCustemComponentFunction = (\n target: WDomParam\n): target is TagFunction | TagFunctionResolver =>\n (typeof target === 'function' && !checkFragmentFunction(target)) ||\n (typeof target === 'object' && 'resolve' in target);\n\nexport const checkFragmentFunction = (\n target: unknown\n): target is FragmentFunction =>\n typeof target === 'function' && target === Fragment;\n\nexport const checkEmptyElement = (wDom: WDomParam) =>\n checkPlainWDomType(wDom) && !wDom.type;\n\nexport const checkExisty = (value: unknown) =>\n value !== null && value !== undefined;\n\nexport const checkStyleData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is Record<string, string> =>\n dataKey === 'style' && typeof dataValue === 'object';\n\nexport const checkRefData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is {\n value: HTMLElement | Element | DocumentFragment | Text | undefined;\n} => dataKey === 'ref' && typeof dataValue === 'object';\n\nexport const checkOptionElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'OPTION';\n\nexport const checkTextareaElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'TEXTAREA';\n\nexport const checkCheckableElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && ['radio', 'checkbox'].includes(element.type);\n\nexport const checkNormalAttribute = (\n dataValue: unknown\n): dataValue is number | string =>\n typeof dataValue === 'number' || typeof dataValue === 'string';\n\nexport const getWDomType = (\n wDom: WDom | TagFunction | TagFunctionResolver\n): WDomType => {\n let result: WDomType = 'et';\n\n if (checkCustemComponentFunction(wDom)) {\n result = 'c';\n } else if (checkPlainType(wDom, 'fragment')) {\n result = 'f';\n } else if (checkPlainType(wDom, 'element')) {\n result = 'e';\n } else if (checkPlainType(wDom, 'loop')) {\n result = 'l';\n } else if (checkPlainType(wDom, 'text')) {\n result = 't';\n } else if (checkEmptyElement(wDom)) {\n result = 'et';\n }\n\n return result;\n};\n\nexport const checkSameWDomWithOriginal = {\n c: checkSameCustomComponent,\n l: checkNormalTypeElement,\n t: checkNormalTypeElement,\n e: checkSameTagElement,\n f: checkSameFragment,\n et: checkNormalTypeElement,\n};\n","import { WDom, TagFunctionResolver, Props } from '@/types';\n\nexport const getParent = (vDom: WDom) => {\n const parentVDom = vDom.getParent && vDom.getParent();\n\n return parentVDom as WDom;\n};\n\nexport const reRender = (vDom: WDom, infoVdom: TagFunctionResolver) => {\n const { compProps: props, compChild: children } = vDom;\n const { props: infoProps, children: infoChidren } = infoVdom;\n\n if (props) {\n updateProps(props, infoProps);\n }\n\n if (children) {\n updateChildren(children, infoChidren);\n }\n\n const newVDom = vDom.reRender && vDom.reRender();\n\n return newVDom as WDom;\n};\n\nexport const getEventName = (eventKey: string) =>\n eventKey.replace(/^on(.*)/, (_match, p1) => p1.toLowerCase());\n\nexport const getAttrKey = (keyName: string) =>\n keyName === 'className' ? 'class' : keyName;\n\nexport const entries = Object.entries;\nexport const keys = Object.keys;\nexport const assign = Object.assign;\n\nconst updateProps = (props: Props, infoProps: Props) => {\n if (props && infoProps !== props) {\n keys(props).forEach(key => delete props[key]);\n\n entries(infoProps || {}).forEach(([key, value]) => (props[key] = value));\n }\n};\n\nconst updateChildren = (children: WDom[], infoChidren: WDom[]) => {\n if (children && infoChidren !== children) {\n children.splice(0, children.length);\n\n if (infoChidren) {\n infoChidren.forEach(childrenItem => children.push(childrenItem));\n }\n }\n};\n","import { ComponentRef, ComponentSubKey, Props, WDom } from '@/types';\n\ntype RedrawQueueList = {\n compKey: Props;\n exec: () => void;\n}[];\n\nlet redrawQueue: { compKey: Props; exec: () => void }[] = [];\nlet redrawQueueTimeout: boolean = false;\n\n/**\n * Common\n */\nexport const xmlnsRef: { value: string } = { value: '' };\nexport const compKeyRef: { value: Props } = { value: {} };\nexport const needDiffRef: { value: boolean } = { value: false };\nexport const componentRef: ComponentRef = new WeakMap();\n\nexport const componentRender = (compKey: Props) => () => {\n const up = componentRef.get(compKey)?.up;\n let result = false;\n if (up) {\n up();\n result = true;\n }\n\n return result;\n};\n\nconst setComponetRef = (compKey: Props) => {\n componentRef.set(compKey, {\n vd: { value: null },\n up: () => {},\n upR: [],\n upS: { value: 0 },\n upD: [],\n upCB: [],\n mts: [],\n umts: [],\n });\n};\n\nexport const getComponentKey = () => compKeyRef.value;\n\nexport const getComponentSubInfo = (compKey: Props, subKey: ComponentSubKey) =>\n componentRef.get(compKey)![subKey];\n\nexport const setRedrawAction = (compKey: Props, exec: () => void) => {\n componentRef.get(compKey)!.up = () => {\n redrawQueue.push({\n compKey,\n exec,\n });\n\n if (!redrawQueueTimeout) {\n redrawQueueTimeout = true;\n queueMicrotask(execRedrawQueue);\n }\n };\n};\n\nexport const initUpdateHookState = (compKey: Props) =>\n (compKeyRef.value = compKey);\n\nexport const initMountHookState = (compKey: Props) => {\n compKeyRef.value = compKey;\n setComponetRef(compKey);\n};\n\nconst recursiveGetChildKeys = (wDom: WDom, result: Props[]) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\n if (childComKey) {\n result.push(childComKey);\n }\n\n recursiveGetChildKeys(item, result);\n });\n};\n\nconst execRedrawQueue = () => {\n let childItemList: Props[] = [];\n\n redrawQueue.forEach(item => {\n const childVd = componentRef.get(item.compKey)?.vd?.value;\n if (childVd) {\n recursiveGetChildKeys(childVd, childItemList);\n }\n });\n\n const addedKey: Props[] = [];\n const result = redrawQueue.reduce((acc, item) => {\n const { compKey } = item;\n\n if (childItemList.includes(compKey) || addedKey.includes(compKey)) {\n return acc;\n }\n\n addedKey.push(compKey);\n acc.push(item);\n\n return acc;\n }, [] as RedrawQueueList);\n\n while (result.length) {\n const action = result.shift();\n if (action) {\n action.exec();\n }\n }\n\n redrawQueue = [];\n redrawQueueTimeout = false;\n};\n","import { WDom, Props } from '@/types';\nimport { componentRef, getComponentKey } from '@/utils/universalRef';\n\nexport const unmount = (effectAction: () => void) => {\n componentRef.get(getComponentKey())!.umts.push(effectAction);\n};\n\nexport const runUnmountQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n removeItem(compKey);\n }\n recursiveRunUnmount(newWDom);\n};\n\nconst recursiveRunUnmount = (wDom: WDom) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\n if (childComKey) {\n runUnmountQueueFromWDom(item);\n } else {\n recursiveRunUnmount(item);\n }\n });\n};\n\nconst removeItem = (compKey: Props) => {\n const subInfo = componentRef.get(compKey);\n if (subInfo) {\n subInfo!.umts.forEach(effect => effect());\n subInfo!.umts = [];\n componentRef.delete(compKey);\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\nimport { unmount } from '@/hook/unmount';\n\nlet mountedQueue: WDom[] = [];\n\nexport const execMountedQueue = () => {\n mountedQueue.forEach(item => runMountedQueueFromWDom(item));\n mountedQueue = [];\n};\nexport const addMountedQueue = (wDom: WDom) => {\n if (wDom.compKey) {\n mountedQueue.push(wDom);\n }\n};\nexport const mountCallback = (effectAction: () => void) =>\n componentRef.get(getComponentKey())!.mts.push(effectAction);\n\nexport const runMountedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.mts;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (queue) {\n component.mts = [];\n\n queue.forEach((effect: Function) => {\n const callback = effect();\n if (callback) {\n unmount(callback);\n }\n });\n }\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\n\nexport const useUpdated = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const component = componentRef.get(getComponentKey());\n const { upD, upS } = component!;\n const def = upD[upS.value];\n\n if (def && checkNeedPushQueue(def, dependencies())) {\n const callback = effectAction();\n if (callback) {\n component!.upCB.push(callback);\n }\n }\n\n upD[upS.value] = dependencies();\n upS.value += 1;\n};\n\nexport const runUpdatedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.upCB;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (newWDom.ctor && queue) {\n component.upCB = [];\n queue.forEach((effect: Function) => effect());\n }\n }\n};\n\nconst checkNeedPushQueue = (originalDefs: unknown[], newDefs: unknown[]) =>\n !originalDefs.length && !originalDefs.length\n ? true\n : originalDefs.some((def, index) => def !== newDefs[index]);\n","import { WDom, Props } from '@/types';\nimport {\n checkStyleData,\n checkRefData,\n checkNormalAttribute,\n checkExisty,\n checkOptionElement,\n checkTextareaElement,\n checkCheckableElement,\n checkVirtualType,\n} from '@/utils/predicator';\n\nimport { componentRef, xmlnsRef } from '@/utils/universalRef';\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { execMountedQueue, addMountedQueue } from '@/hook/mountCallback';\nimport { runUpdatedQueueFromWDom } from '@/hook/useUpdate';\nimport { getParent, getEventName, getAttrKey, entries, keys } from '@/utils';\n\nexport const render = (\n wDom: WDom,\n wrapElement: HTMLElement | null,\n afterElement?: HTMLElement | null\n) => {\n wrapElement ??= document.body;\n wDom.isRoot = true;\n wDom.wrapElement = wrapElement;\n\n const Dom = wDomToDom(wDom);\n\n if (afterElement) {\n wDom.afterElement = afterElement;\n wrapElement.insertBefore(Dom, afterElement);\n } else {\n wrapElement.appendChild(Dom);\n }\n\n execMountedQueue();\n\n return () => {\n const component = componentRef.get(wDom.compProps || {})?.vd.value;\n if (component) {\n runUnmountQueueFromWDom(component);\n recursiveRemoveEvent(component);\n rootDelete(component);\n }\n };\n};\n\nexport const wDomUpdate = (newWDomTree: WDom) => {\n const { needRerender } = newWDomTree;\n\n if (needRerender && needRerender !== 'N') {\n ({\n A: typeAdd,\n D: typeDelete,\n R: typeReplace,\n U: typeUpdate,\n SR: typeSortedReplace,\n SU: typeSortedUpdate,\n })[needRerender](newWDomTree);\n }\n};\n\nexport const recursiveRemoveEvent = (originalWDom: WDom) => {\n if (originalWDom.props && originalWDom.el) {\n removeEvent(originalWDom.props, originalWDom.el);\n }\n\n (originalWDom.children || []).forEach((childItem: WDom) => {\n recursiveRemoveEvent(childItem);\n });\n};\n\nconst rootDelete = (newWDom: WDom) => {\n deleteRealDom(newWDom, newWDom.wrapElement as HTMLElement);\n};\n\nconst typeDelete = (newWDom: WDom) => {\n if (newWDom.oldProps && newWDom.el) {\n removeEvent(newWDom.oldProps, newWDom.el);\n }\n\n deleteRealDom(\n newWDom,\n findRealParentElement(getParent(newWDom)) as HTMLElement\n );\n};\n\nconst deleteRealDom = (newWDom: WDom, parent: HTMLElement) => {\n if (parent && newWDom.el) {\n if (newWDom.el?.nodeType === 1) {\n parent.removeChild(newWDom.el);\n } else if (newWDom.el?.nodeType === 11) {\n findChildWithRemoveElement(newWDom, parent as HTMLElement);\n }\n delete newWDom.el;\n }\n};\n\nconst findChildWithRemoveElement = (newWDom: WDom, parent: HTMLElement) => {\n (newWDom?.oldChildren || newWDom?.children || []).forEach(item => {\n if (item.el?.nodeType === 1) {\n parent.removeChild(item?.el);\n } else if (item.el?.nodeType === 11) {\n findChildWithRemoveElement(item, parent);\n }\n });\n};\n\nconst typeSortedReplace = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom);\n};\n\nconst typeSortedUpdate = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom, newWDom.el);\n};\n\nconst typeAdd = (\n newWDom: WDom,\n newElement?: HTMLElement | DocumentFragment | Text\n) => {\n if (!newElement) {\n newElement = wDomToDom(newWDom) as HTMLElement;\n }\n\n const parentWDom = getParent(newWDom);\n if (parentWDom.type) {\n const parentEl = findRealParentElement(parentWDom);\n const isLoop = parentWDom.type === 'loop';\n const nextEl = isLoop\n ? startFindNextBrotherElement(parentWDom, getParent(parentWDom))\n : startFindNextBrotherElement(newWDom, parentWDom);\n\n if (newElement && parentEl) {\n if (nextEl) {\n parentEl.insertBefore(newElement, nextEl);\n } else {\n parentEl.appendChild(newElement);\n }\n\n execMountedQueue();\n }\n }\n};\n\nconst startFindNextBrotherElement = (\n wDom: WDom,\n parentWDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const brothers = parentWDom.children || [];\n const index = brothers.indexOf(wDom);\n const nextIndex = index + 1;\n const candidiateBrothers = brothers.slice(nextIndex);\n\n const finedNextEl = findChildFragmentNextElement(candidiateBrothers);\n const parentType = parentWDom.type || '';\n\n if (finedNextEl) {\n return finedNextEl;\n }\n\n if (!parentWDom.isRoot && checkVirtualType(parentType)) {\n return startFindNextBrotherElement(parentWDom, getParent(parentWDom));\n } else if (parentWDom.isRoot && parentWDom.afterElement) {\n return parentWDom.afterElement;\n }\n\n return undefined;\n};\n\nconst findChildFragmentNextElement = (\n candidiateBrothers: WDom[]\n): HTMLElement | DocumentFragment | Text | undefined =>\n candidiateBrothers.reduce(\n (\n targetEl: HTMLElement | DocumentFragment | Text | undefined,\n bItem: WDom\n ) => {\n const type = bItem.type;\n const el = bItem.el;\n const isFragment = type && checkVirtualType(type);\n\n if (targetEl) {\n return targetEl;\n } else if (isFragment) {\n return findChildFragmentNextElement(bItem.children || []);\n } else if (el && el.nodeType !== 11) {\n return el;\n }\n\n return targetEl;\n },\n undefined\n );\n\nconst typeReplace = (newWDom: WDom) => {\n const parentWDom = getParent(newWDom);\n const orignalElement = newWDom.el;\n\n if (parentWDom.type && orignalElement) {\n if (orignalElement.nodeType === 11) {\n typeSortedReplace(newWDom);\n } else {\n const parentElement = findRealParentElement(parentWDom);\n const newElement = wDomToDom(newWDom);\n\n if (parentElement) {\n parentElement.replaceChild(newElement, orignalElement);\n }\n execMountedQueue();\n }\n }\n};\n\nconst removeEvent = (\n oldProps: Props,\n element: HTMLElement | DocumentFragment | Text\n) => {\n entries(oldProps || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n if (dataKey.match(/^on/)) {\n element.removeEventListener(\n getEventName(dataKey),\n dataValue as (e: Event) => void\n );\n }\n });\n};\n\nconst typeUpdate = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (newWDom.type === 'text') {\n updateText(newWDom);\n\n return;\n }\n\n if (element) {\n const { oldProps, props } = newWDom;\n\n updateProps(props, element, oldProps);\n\n delete newWDom.oldProps;\n\n if (newWDom.tag === 'input') {\n (element as HTMLInputElement).value = String(newWDom?.props?.value || '');\n }\n }\n\n (newWDom.children || []).forEach((childItem: WDom) => wDomUpdate(childItem));\n\n runUpdatedQueueFromWDom(newWDom);\n};\n\nconst updateText = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (element) {\n element.nodeValue = String(newWDom.text);\n }\n};\n\nconst updateProps = (\n props?: Props,\n element?: HTMLElement | Element | DocumentFragment | Text,\n oldProps?: Props\n) => {\n const originalProps = { ...oldProps };\n\n entries(props || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n if (dataKey === 'key') {\n // Do nothing\n } else if (dataKey === 'innerHTML' && typeof dataValue === 'string') {\n (element as HTMLElement).innerHTML = dataValue;\n } else if (checkStyleData(dataKey, dataValue)) {\n updateStyle(\n dataValue,\n checkStyleData(dataKey, originalProps.style) ? originalProps.style : {},\n element\n );\n } else if (checkRefData(dataKey, dataValue)) {\n dataValue.value = element;\n } else if (dataKey.match(/^on/)) {\n updateEvent(\n element as HTMLElement,\n dataKey,\n dataValue as (e: Event) => void,\n originalProps[dataKey] as (e: Event) => void\n );\n } else if (checkCheckableElement(element) && dataKey === 'checked') {\n (element as HTMLInputElement).checked = !!dataValue;\n } else if (checkTextareaElement(element) && dataKey === 'value') {\n (element as HTMLInputElement).value = dataValue as string;\n } else if (checkOptionElement(element) && dataKey === 'selected') {\n (element as HTMLOptionElement).selected = !!dataValue;\n } else if (checkNormalAttribute(dataValue)) {\n if (xmlnsRef.value && dataKey !== 'xmlns') {\n (element as HTMLElement).setAttributeNS(\n null,\n getAttrKey(dataKey),\n String(dataValue)\n );\n } else {\n (element as HTMLElement).setAttribute(\n getAttrKey(dataKey),\n String(dataValue)\n );\n }\n }\n\n delete originalProps[dataKey];\n });\n\n keys(originalProps).forEach(dataKey =>\n (element as HTMLElement).removeAttribute(dataKey)\n );\n};\n\nconst wDomToDom = (wDom: WDom) => {\n let element;\n const { type, tag, text, props, children = [] } = wDom;\n const isVirtualType = checkVirtualType(type);\n\n if (tag === 'svg') {\n xmlnsRef.value = String(props?.xmlns);\n }\n\n if (isVirtualType) {\n element = new DocumentFragment();\n } else if (type === 'element' && tag) {\n element = xmlnsRef.value\n ? document.createElementNS(xmlnsRef.value, tag)\n : document.createElement(tag);\n } else if (type === 'text' && checkExisty(text)) {\n element = document.createTextNode(String(text));\n } else {\n element = document.createElement('e');\n }\n\n wDomChildrenToDom(children, element);\n updateProps(props, element);\n\n wDom.el = element as HTMLElement;\n\n addMountedQueue(wDom);\n\n if (tag === 'svg') {\n xmlnsRef.value = '';\n }\n\n return element;\n};\n\nconst wDomChildrenToDom = (\n children: WDom[],\n parentElement?: HTMLElement | Element | DocumentFragment | Text\n) => {\n const elementChildren = children.reduce(\n (acc: DocumentFragment, childItem: WDom) => {\n if (childItem.type) {\n acc.appendChild(wDomToDom(childItem));\n }\n\n return acc;\n },\n new DocumentFragment()\n );\n\n if (parentElement && elementChildren.hasChildNodes()) {\n parentElement.appendChild(elementChildren);\n }\n};\n\nconst updateEvent = (\n element: HTMLElement,\n eventKey: string,\n newEventHandler: (e: Event) => void,\n oldEventHandler: (e: Event) => void\n) => {\n const eventName = getEventName(eventKey);\n\n if (oldEventHandler !== newEventHandler) {\n if (oldEventHandler) {\n element.removeEventListener(eventName, oldEventHandler);\n }\n\n if (newEventHandler) {\n element.addEventListener(eventName, newEventHandler);\n }\n }\n};\n\nconst updateStyle = (\n style: Record<string, string>,\n oldStyle: Record<string, string>,\n element?: HTMLElement | Element | DocumentFragment | Text\n) => {\n const originalStyle = { ...oldStyle };\n const elementStyle = (element as HTMLElement)?.style;\n\n if (elementStyle) {\n entries(style).forEach(([styleKey, dataValue]) => {\n (elementStyle as any)[styleKey] = dataValue;\n delete originalStyle[styleKey];\n });\n\n entries(originalStyle).forEach(\n ([styleKey]) => ((elementStyle as any)[styleKey] = '')\n );\n }\n};\n\nconst findRealParentElement = (\n vDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const isVirtualType = checkVirtualType(vDom.type);\n if (vDom.isRoot && isVirtualType) {\n return vDom.wrapElement;\n }\n\n if (!isVirtualType) {\n return vDom.el as HTMLElement;\n }\n\n return findRealParentElement(getParent(vDom));\n};\n","import { WDom, TagFunctionResolver, RenderType } from '@/types';\nimport { checkCustemComponentFunction, getKey } from '@/utils/predicator';\nimport { getParent, reRender } from '@/utils';\nimport { recursiveRemoveEvent } from '@/render';\nimport {\n checkEmptyElement,\n checkSameWDomWithOriginal,\n getWDomType,\n checkExisty,\n} from '@/utils/predicator';\n\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\n\nexport const makeNewWDomTree = (\n newWDom: WDom | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n remakeNewWDom(\n newWDom,\n checkSameWDomWithOriginal[getWDomType(newWDom)](newWDom, originalWDom),\n originalWDom\n );\n\nconst remakeNewWDom = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n) => {\n const remakeWDom = generalize(newWDom, isSameType, originalWDom);\n const param: [newWDom: WDom, isSameType: boolean, originalWDom?: WDom] = [\n remakeWDom,\n isSameType,\n originalWDom,\n ];\n const needRerender = addReRenderTypeProperty(...param);\n\n remakeWDom.children = remakeChildrenForDiff(...param);\n remakeWDom.needRerender = needRerender;\n\n inheritPropForRender(remakeWDom, originalWDom, needRerender);\n\n return remakeWDom;\n};\n\nconst inheritPropForRender = (\n remakeWDom: WDom,\n originalWDom?: WDom,\n needRerender?: RenderType\n) => {\n if (needRerender !== 'A' && originalWDom) {\n remakeWDom.el = originalWDom.el;\n }\n\n if (needRerender && ['D', 'R', 'SR'].includes(needRerender)) {\n if (originalWDom?.compKey) {\n runUnmountQueueFromWDom(originalWDom);\n recursiveRemoveEvent(originalWDom);\n }\n remakeWDom.oldChildren = originalWDom?.children;\n }\n\n remakeWDom.oldProps = originalWDom?.props;\n};\n\nconst addReRenderTypeProperty = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n): RenderType | undefined => {\n const existOriginalWDom = originalWDom && originalWDom.type;\n const isEmptyElement = checkEmptyElement(newWDom);\n const isRoot = !newWDom.getParent;\n const parentType = !isRoot && getParent(newWDom).type;\n const key = getKey(newWDom);\n const isKeyCheckedWDom = parentType === 'loop' && checkExisty(key);\n const isSameText =\n newWDom.type === 'text' &&\n isSameType &&\n newWDom.text === originalWDom?.text;\n\n let result: RenderType | undefined;\n if (isEmptyElement) {\n result = 'D';\n } else if (isSameText) {\n result = 'N';\n } else if (!existOriginalWDom) {\n result = 'A';\n } else if (isSameType) {\n result = isKeyCheckedWDom ? 'SU' : 'U';\n } else {\n result = isKeyCheckedWDom ? 'SR' : 'R';\n }\n\n return result;\n};\n\nconst generalize = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n): WDom => {\n if (checkCustemComponentFunction(newWDom)) {\n return isSameType && originalWDom\n ? reRender(originalWDom, newWDom)\n : newWDom.resolve();\n }\n\n return newWDom;\n};\n\nconst remakeChildrenForDiff = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n) =>\n isSameType && originalWDom\n ? remakeChildrenForUpdate(newWDom, originalWDom)\n : remakeChildrenForAdd(newWDom);\n\nconst remakeChildrenForAdd = (newWDom: WDom) =>\n (newWDom.children || []).map((item: WDom) => {\n const childItem = makeNewWDomTree(item);\n\n childItem.getParent = () => newWDom;\n\n return childItem;\n });\n\nconst remakeChildrenForUpdate = (newWDom: WDom, originalWDom: WDom) => {\n if (\n newWDom.type === 'loop' &&\n checkExisty(getKey((newWDom.children || [])[0]))\n ) {\n return remakeChildrenForLoopUpdate(newWDom, originalWDom);\n }\n\n return (newWDom.children || []).map((item: WDom, index: number) => {\n const childItem = makeNewWDomTree(\n item,\n (originalWDom.children || [])[index]\n );\n\n childItem.getParent = () => newWDom;\n\n return childItem;\n });\n};\n\nconst remakeChildrenForLoopUpdate = (newWDom: WDom, originalWDom: WDom) => {\n const [remakedChildren, unUsedChildren] = diffLoopChildren(\n newWDom,\n originalWDom\n );\n\n unUsedChildren.map(unusedItem => {\n const el = unusedItem.el;\n\n if (el?.parentNode) {\n el.parentNode.removeChild(el);\n }\n });\n\n return remakedChildren;\n};\n\nconst diffLoopChildren = (newWDom: WDom, originalWDom: WDom) => {\n const newChildren = [...(newWDom.children || [])];\n const originalChildren = [...(originalWDom.children || [])];\n const remakedChildren = newChildren.map(item => {\n const originalItem = findSameKeyOriginalItem(item, originalChildren);\n const childItem = makeNewWDomTree(item, originalItem);\n\n if (originalItem) {\n originalChildren.splice(originalChildren.indexOf(originalItem), 1);\n }\n\n childItem.getParent = () => newWDom;\n\n return childItem;\n });\n\n return [remakedChildren, originalChildren];\n};\n\nconst findSameKeyOriginalItem = (item: WDom, originalChildren: WDom[]) =>\n originalChildren.find(\n orignalChildItem => getKey(orignalChildItem) === getKey(item)\n );\n","import {\n WDom,\n TagFunction,\n FragmentFunction,\n Props,\n MiddleStateWDomChildren,\n MiddleStateWDom,\n NodePointer,\n Component,\n} from '@/types';\n\nimport { makeNewWDomTree } from '@/diff';\nimport { wDomUpdate } from '@/render';\nimport {\n initUpdateHookState,\n initMountHookState,\n setRedrawAction,\n needDiffRef,\n componentRender,\n getComponentSubInfo,\n} from '@/utils/universalRef';\nimport { runUpdateCallback } from '@/hook/updateCallback';\nimport {\n checkFragmentFunction,\n checkCustemComponentFunction,\n} from '@/utils/predicator';\nimport { assign } from '@/utils';\n\nexport const Fragment = (_props: Props, ...children: WDom[]) => ({\n type: 'fragment',\n children,\n});\n\nexport const h = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n ...children: MiddleStateWDomChildren\n) => {\n const nodeParentPointer: NodePointer = { value: undefined };\n const newProps = props || {};\n const newChildren = remakeChildren(nodeParentPointer, children);\n const node = makeNode(tag, newProps, newChildren);\n\n if (!checkCustemComponentFunction(node)) {\n nodeParentPointer.value = node;\n }\n\n return node;\n};\n\nexport const mount =\n <T>(component: Component<T>) =>\n (_props: T, _children: WDom[]) =>\n component;\n\nconst reRenderCustomComponent = (\n tag: TagFunction,\n props: Props,\n children: WDom[],\n originalWDom: WDom\n) => {\n needDiffRef.value = true;\n\n const newWDom = makeWDomResolver(tag, props, children);\n const newWDomTree = makeNewWDomTree(newWDom, originalWDom);\n const { isRoot, getParent, wrapElement, afterElement } = originalWDom;\n\n newWDomTree.getParent = getParent;\n\n if (!isRoot && getParent) {\n const brothers = getParent()?.children || [];\n const index = brothers.indexOf(originalWDom);\n\n brothers.splice(index, 1, newWDomTree);\n } else {\n newWDomTree.isRoot = true;\n newWDomTree.wrapElement = wrapElement;\n newWDomTree.afterElement = afterElement;\n }\n\n needDiffRef.value = false;\n wDomUpdate(newWDomTree);\n};\n\nconst makeWDomResolver = (tag: TagFunction, props: Props, children: WDom[]) => {\n const tagName = tag.name;\n const ctor = tag;\n // 리졸브는 컴포넌트를 새로 만든다.\n const resolve = (compKey = props) => {\n initMountHookState(compKey);\n\n const component = tag(props, children);\n const componentMaker = component(componentRender(compKey), props, children);\n\n const customNode = makeCustomNode(\n componentMaker,\n compKey,\n tag,\n props,\n children\n );\n\n const originalWDom = customNode;\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = customNode;\n\n return customNode;\n };\n\n return { tagName, ctor, props, children, resolve };\n};\n\nconst makeCustomNode = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const customNode = componentMaker(props);\n\n addComponentProps(\n customNode,\n compKey,\n tag,\n props,\n children,\n makeReRender(componentMaker, compKey, tag, props, children)\n );\n\n return customNode;\n};\n\nconst makeReRender = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const reRender = () =>\n wDomMaker(componentMaker, compKey, tag, props, children, reRender);\n return reRender;\n};\n\nconst wDomMaker = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n initUpdateHookState(compKey);\n runUpdateCallback();\n\n const originalWDom = componentMaker(props);\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n addComponentProps(originalWDom, compKey, tag, props, children, reRender);\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = originalWDom;\n\n return originalWDom;\n};\n\nconst addComponentProps = (\n wDom: WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n assign(wDom, {\n compProps: props,\n compChild: children,\n ctor: tag,\n tagName: tag.name,\n compKey,\n reRender,\n });\n};\n\nconst makeNode = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n children: WDom[]\n) => {\n if (checkFragmentFunction(tag)) {\n return Fragment(props, ...children);\n } else if (checkCustemComponentFunction(tag)) {\n const componetMakeResolver = makeWDomResolver(tag, props, children);\n\n return needDiffRef.value\n ? componetMakeResolver\n : componetMakeResolver.resolve();\n }\n\n return {\n type: 'element',\n tag,\n props,\n children,\n };\n};\n\nconst remakeChildren = (\n nodeParentPointer: NodePointer,\n children: MiddleStateWDomChildren\n): WDom[] =>\n children.map((item: MiddleStateWDom) => {\n const childItem = makeChildrenItem(item);\n\n childItem.getParent = () => nodeParentPointer.value;\n\n return childItem;\n });\n\nconst makeChildrenItem = (item: MiddleStateWDom): WDom => {\n if (item === null || item === undefined || item === false) {\n return { type: null };\n } else if (Array.isArray(item)) {\n const nodeParentPointer: NodePointer = { value: undefined };\n const children = remakeChildren(nodeParentPointer, item);\n const node = {\n type: 'loop',\n children,\n };\n nodeParentPointer.value = node;\n\n return node;\n } else if (typeof item === 'string' || typeof item === 'number') {\n return { type: 'text', text: item };\n }\n\n return item;\n};\n","import { componentRef, getComponentKey } from '@/utils/universalRef';\n\nimport { useUpdated } from '@/hook/useUpdate';\n\nexport const updateCallback = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const updateReqs = componentRef.get(getComponentKey())!.upR;\n\n updateReqs.push(() => useUpdated(effectAction, dependencies));\n useUpdated(effectAction, dependencies);\n};\n\nexport const runUpdateCallback = () => {\n const updateReqs = componentRef.get(getComponentKey())?.upR;\n\n if (updateReqs?.length) {\n updateReqs.forEach(callback => callback());\n }\n};\n","export const ref = <T>(initValue: T) => ({ value: initValue });\nexport const nextTick = () => Promise.resolve();\n"],"names":["checkPlainWDomType","wDom","checkPlainType","typeName","type","checkNormalTypeElement","newWDom","originalWDom","_a","children","length","_b","checkExisty","getKey","target","_c","compProps","key","props","checkVirtualType","includes","checkCustemComponentFunction","checkFragmentFunction","Fragment","checkEmptyElement","value","checkStyleData","dataKey","dataValue","checkSameWDomWithOriginal","c","ctor","l","t","e","tag","f","et","getParent","vDom","getEventName","eventKey","replace","_match","p1","toLowerCase","getAttrKey","keyName","entries","Object","keys","assign","updateProps","infoProps","forEach","updateChildren","infoChidren","splice","childrenItem","push","redrawQueue","redrawQueueTimeout","xmlnsRef","compKeyRef","needDiffRef","componentRef","WeakMap","getComponentKey","getComponentSubInfo","compKey","subKey","get","setRedrawAction","exec","up","queueMicrotask","execRedrawQueue","initMountHookState","set","vd","upR","upS","upD","upCB","mts","umts","setComponetRef","recursiveGetChildKeys","result","item","childComKey","childItemList","childVd","addedKey","reduce","acc","action","shift","runUnmountQueueFromWDom","removeItem","recursiveRunUnmount","subInfo","effect","delete","mountedQueue","execMountedQueue","runMountedQueueFromWDom","component","queue","sequence","callback","effectAction","useUpdated","dependencies","def","checkNeedPushQueue","originalDefs","newDefs","some","index","wDomUpdate","newWDomTree","needRerender","A","typeAdd","D","typeDelete","R","typeReplace","U","typeUpdate","SR","typeSortedReplace","SU","typeSortedUpdate","recursiveRemoveEvent","el","removeEvent","childItem","rootDelete","deleteRealDom","wrapElement","oldProps","findRealParentElement","parent","nodeType","removeChild","findChildWithRemoveElement","oldChildren","newElement","wDomToDom","parentWDom","parentEl","nextEl","startFindNextBrotherElement","insertBefore","appendChild","brothers","nextIndex","indexOf","candidiateBrothers","slice","finedNextEl","findChildFragmentNextElement","parentType","isRoot","afterElement","targetEl","bItem","isFragment","orignalElement","parentElement","replaceChild","element","match","removeEventListener","String","runUpdatedQueueFromWDom","updateText","nodeValue","text","originalProps","innerHTML","updateStyle","style","checkRefData","updateEvent","checkCheckableElement","checked","tagName","checkTextareaElement","checkOptionElement","selected","checkNormalAttribute","setAttributeNS","setAttribute","removeAttribute","isVirtualType","xmlns","DocumentFragment","document","createElementNS","createElement","createTextNode","wDomChildrenToDom","addMountedQueue","elementChildren","hasChildNodes","newEventHandler","oldEventHandler","eventName","addEventListener","oldStyle","originalStyle","elementStyle","styleKey","makeNewWDomTree","remakeNewWDom","getWDomType","isSameType","remakeWDom","generalize","param","addReRenderTypeProperty","remakeChildrenForDiff","inheritPropForRender","existOriginalWDom","isEmptyElement","isKeyCheckedWDom","isSameText","infoVdom","compChild","reRender","resolve","remakeChildrenForUpdate","remakeChildrenForAdd","map","remakeChildrenForLoopUpdate","remakedChildren","unUsedChildren","diffLoopChildren","unusedItem","parentNode","newChildren","originalChildren","originalItem","findSameKeyOriginalItem","find","orignalChildItem","_props","reRenderCustomComponent","makeWDomResolver","name","componentMaker","componentRender","customNode","makeCustomNode","addComponentProps","makeReRender","wDomMaker","initUpdateHookState","updateReqs","makeNode","componetMakeResolver","remakeChildren","nodeParentPointer","makeChildrenItem","Array","isArray","node","newProps","_children","Promise","initValue","body","Dom"],"mappings":"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"}
1
+ {"version":3,"file":"lithent.umd.js","sources":["../src/utils/predicator.ts","../src/utils/index.ts","../src/utils/universalRef.ts","../src/hook/unmount.ts","../src/hook/mountCallback.ts","../src/hook/useUpdate.ts","../src/render.ts","../src/diff.ts","../src/hook/updateCallback.ts","../src/wDom.ts","../src/hook/ref.ts"],"sourcesContent":["import { Fragment } from '@/wDom';\nimport {\n WDom,\n TagFunction,\n TagFunctionResolver,\n FragmentFunction,\n WDomType,\n} from '@/types';\n\ntype WDomParam =\n | string\n | WDom\n | TagFunction\n | TagFunctionResolver\n | FragmentFunction;\n\n/**\n * Predicator\n */\n\nconst checkPlainWDomType = (wDom: WDomParam): wDom is WDom =>\n typeof wDom === 'object' && !('resolve' in wDom);\n\nconst checkPlainType = (wDom: WDomParam, typeName: string) =>\n checkPlainWDomType(wDom) && wDom.type === typeName;\n\nconst checkSameCustomComponent = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n 'ctor' in newWDom\n ? newWDom.ctor === originalWDom?.ctor\n : newWDom === originalWDom?.ctor;\n\nconst checkSameFragment = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'fragment' &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkSameTagElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === 'element' &&\n originalWDom?.tag === newWDom.tag &&\n originalWDom?.children?.length === newWDom?.children?.length;\n\nconst checkNormalTypeElement = (\n newWDom: WDom | TagFunction | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n checkPlainWDomType(newWDom) &&\n originalWDom?.type === newWDom.type &&\n (originalWDom?.children?.length === newWDom?.children?.length ||\n (newWDom.type === 'loop' &&\n checkExisty(getKey((newWDom.children || [])[0])) &&\n checkExisty(getKey((originalWDom.children || [])[0]))));\n\nexport const getKey = (target: WDom) =>\n target?.compProps?.key ?? target?.props?.key;\n\nexport const checkVirtualType = (type: string | null) =>\n type && ['fragment', 'loop'].includes(type);\n\nexport const checkCustemComponentFunction = (\n target: WDomParam\n): target is TagFunction | TagFunctionResolver =>\n (typeof target === 'function' && !checkFragmentFunction(target)) ||\n (typeof target === 'object' && 'resolve' in target);\n\nexport const checkFragmentFunction = (\n target: unknown\n): target is FragmentFunction =>\n typeof target === 'function' && target === Fragment;\n\nexport const checkEmptyElement = (wDom: WDomParam) =>\n checkPlainWDomType(wDom) && !wDom.type;\n\nexport const checkExisty = (value: unknown) =>\n value !== null && value !== undefined;\n\nexport const checkStyleData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is Record<string, string> =>\n dataKey === 'style' && typeof dataValue === 'object';\n\nexport const checkRefData = (\n dataKey: string,\n dataValue: unknown\n): dataValue is {\n value: HTMLElement | Element | DocumentFragment | Text | undefined;\n} => dataKey === 'ref' && typeof dataValue === 'object';\n\nexport const checkOptionElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'OPTION';\n\nexport const checkTextareaElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && element.tagName === 'TEXTAREA';\n\nexport const checkCheckableElement = (element: any): element is HTMLElement =>\n element.nodeType === 1 && ['radio', 'checkbox'].includes(element.type);\n\nexport const checkNormalAttribute = (\n dataValue: unknown\n): dataValue is number | string =>\n typeof dataValue === 'number' || typeof dataValue === 'string';\n\nexport const getWDomType = (\n wDom: WDom | TagFunction | TagFunctionResolver\n): WDomType => {\n let result: WDomType = 'et';\n\n if (checkCustemComponentFunction(wDom)) {\n result = 'c';\n } else if (checkPlainType(wDom, 'fragment')) {\n result = 'f';\n } else if (checkPlainType(wDom, 'element')) {\n result = 'e';\n } else if (checkPlainType(wDom, 'loop')) {\n result = 'l';\n } else if (checkPlainType(wDom, 'text')) {\n result = 't';\n } else if (checkEmptyElement(wDom)) {\n result = 'et';\n }\n\n return result;\n};\n\nexport const checkSameWDomWithOriginal = {\n c: checkSameCustomComponent,\n l: checkNormalTypeElement,\n t: checkNormalTypeElement,\n e: checkSameTagElement,\n f: checkSameFragment,\n et: checkNormalTypeElement,\n};\n","import { WDom, TagFunctionResolver, Props } from '@/types';\n\nexport const getParent = (vDom: WDom) => {\n const parentVDom = vDom.getParent && vDom.getParent();\n\n return parentVDom as WDom;\n};\n\nexport const reRender = (vDom: WDom, infoVdom: TagFunctionResolver) => {\n const { compProps: props, compChild: children } = vDom;\n const { props: infoProps, children: infoChidren } = infoVdom;\n\n if (props) {\n updateProps(props, infoProps);\n }\n\n if (children) {\n updateChildren(children, infoChidren);\n }\n\n const newVDom = vDom.reRender && vDom.reRender();\n\n return newVDom as WDom;\n};\n\nexport const getEventName = (eventKey: string) =>\n eventKey.replace(/^on(.*)/, (_match, p1) => p1.toLowerCase());\n\nexport const getAttrKey = (keyName: string) =>\n keyName === 'className' ? 'class' : keyName;\n\nexport const entries = Object.entries;\nexport const keys = Object.keys;\nexport const assign = Object.assign;\n\nconst updateProps = (props: Props, infoProps: Props) => {\n if (props && infoProps !== props) {\n keys(props).forEach(key => delete props[key]);\n\n entries(infoProps || {}).forEach(([key, value]) => (props[key] = value));\n }\n};\n\nconst updateChildren = (children: WDom[], infoChidren: WDom[]) => {\n if (children && infoChidren !== children) {\n children.splice(0, children.length);\n\n if (infoChidren) {\n infoChidren.forEach(childrenItem => children.push(childrenItem));\n }\n }\n};\n","import { ComponentRef, ComponentSubKey, Props, WDom } from '@/types';\n\ntype RedrawQueueList = {\n compKey: Props;\n exec: () => void;\n}[];\n\nlet redrawQueue: { compKey: Props; exec: () => void }[] = [];\nlet redrawQueueTimeout: boolean = false;\n\n/**\n * Common\n */\nexport const xmlnsRef: { value: string } = { value: '' };\nexport const compKeyRef: { value: Props } = { value: {} };\nexport const needDiffRef: { value: boolean } = { value: false };\nexport const componentRef: ComponentRef = new WeakMap();\n\nexport const componentRender = (compKey: Props) => () => {\n const up = componentRef.get(compKey)?.up;\n let result = false;\n if (up) {\n up();\n result = true;\n }\n\n return result;\n};\n\nconst setComponetRef = (compKey: Props) => {\n componentRef.set(compKey, {\n vd: { value: null },\n up: () => {},\n upR: [],\n upS: { value: 0 },\n upD: [],\n upCB: [],\n mts: [],\n umts: [],\n });\n};\n\nexport const getComponentKey = () => compKeyRef.value;\n\nexport const getComponentSubInfo = (compKey: Props, subKey: ComponentSubKey) =>\n componentRef.get(compKey)![subKey];\n\nexport const setRedrawAction = (compKey: Props, exec: () => void) => {\n componentRef.get(compKey)!.up = () => {\n redrawQueue.push({\n compKey,\n exec,\n });\n\n if (!redrawQueueTimeout) {\n redrawQueueTimeout = true;\n queueMicrotask(execRedrawQueue);\n }\n };\n};\n\nexport const initUpdateHookState = (compKey: Props) =>\n (compKeyRef.value = compKey);\n\nexport const initMountHookState = (compKey: Props) => {\n compKeyRef.value = compKey;\n setComponetRef(compKey);\n};\n\nconst recursiveGetChildKeys = (wDom: WDom, result: Props[]) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\n if (childComKey) {\n result.push(childComKey);\n }\n\n recursiveGetChildKeys(item, result);\n });\n};\n\nconst execRedrawQueue = () => {\n let childItemList: Props[] = [];\n\n redrawQueue.forEach(item => {\n const childVd = componentRef.get(item.compKey)?.vd?.value;\n if (childVd) {\n recursiveGetChildKeys(childVd, childItemList);\n }\n });\n\n const addedKey: Props[] = [];\n const result = redrawQueue.reduce((acc, item) => {\n const { compKey } = item;\n\n if (childItemList.includes(compKey) || addedKey.includes(compKey)) {\n return acc;\n }\n\n addedKey.push(compKey);\n acc.push(item);\n\n return acc;\n }, [] as RedrawQueueList);\n\n while (result.length) {\n const action = result.shift();\n if (action) {\n action.exec();\n }\n }\n\n redrawQueue = [];\n redrawQueueTimeout = false;\n};\n","import { WDom, Props } from '@/types';\nimport { componentRef, getComponentKey } from '@/utils/universalRef';\n\nexport const unmount = (effectAction: () => void) => {\n componentRef.get(getComponentKey())!.umts.push(effectAction);\n};\n\nexport const runUnmountQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n removeItem(compKey);\n }\n recursiveRunUnmount(newWDom);\n};\n\nconst recursiveRunUnmount = (wDom: WDom) => {\n (wDom.children || []).forEach(item => {\n const childComKey = item.compKey;\n if (childComKey) {\n runUnmountQueueFromWDom(item);\n } else {\n recursiveRunUnmount(item);\n }\n });\n};\n\nconst removeItem = (compKey: Props) => {\n const subInfo = componentRef.get(compKey);\n if (subInfo) {\n subInfo!.umts.forEach(effect => effect());\n subInfo!.umts = [];\n componentRef.delete(compKey);\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\nimport { unmount } from '@/hook/unmount';\n\nlet mountedQueue: WDom[] = [];\n\nexport const execMountedQueue = () => {\n mountedQueue.forEach(item => runMountedQueueFromWDom(item));\n mountedQueue = [];\n};\nexport const addMountedQueue = (wDom: WDom) => {\n if (wDom.compKey) {\n mountedQueue.push(wDom);\n }\n};\nexport const mountCallback = (effectAction: () => void) =>\n componentRef.get(getComponentKey())!.mts.push(effectAction);\n\nexport const runMountedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.mts;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (queue) {\n component.mts = [];\n\n queue.forEach((effect: Function) => {\n const callback = effect();\n if (callback) {\n unmount(callback);\n }\n });\n }\n }\n};\n","import { WDom } from '@/types';\nimport {\n compKeyRef,\n componentRef,\n getComponentKey,\n} from '@/utils/universalRef';\n\nexport const useUpdated = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const component = componentRef.get(getComponentKey());\n const { upD, upS } = component!;\n const def = upD[upS.value];\n\n if (def && checkNeedPushQueue(def, dependencies())) {\n const callback = effectAction();\n if (callback) {\n component!.upCB.push(callback);\n }\n }\n\n upD[upS.value] = dependencies();\n upS.value += 1;\n};\n\nexport const runUpdatedQueueFromWDom = (newWDom: WDom) => {\n const { compKey } = newWDom;\n\n if (compKey) {\n const component = componentRef.get(compKey);\n const queue = component?.upCB;\n const sequence = component?.upS;\n\n compKeyRef.value = compKey;\n\n if (sequence) {\n sequence.value = 0;\n }\n\n if (newWDom.ctor && queue) {\n component.upCB = [];\n queue.forEach((effect: Function) => effect());\n }\n }\n};\n\nconst checkNeedPushQueue = (originalDefs: unknown[], newDefs: unknown[]) =>\n !originalDefs.length && !originalDefs.length\n ? true\n : originalDefs.some((def, index) => def !== newDefs[index]);\n","import { WDom, Props } from '@/types';\nimport {\n checkStyleData,\n checkRefData,\n checkNormalAttribute,\n checkExisty,\n checkOptionElement,\n checkTextareaElement,\n checkCheckableElement,\n checkVirtualType,\n} from '@/utils/predicator';\n\nimport { componentRef, xmlnsRef } from '@/utils/universalRef';\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { execMountedQueue, addMountedQueue } from '@/hook/mountCallback';\nimport { runUpdatedQueueFromWDom } from '@/hook/useUpdate';\nimport { getParent, getEventName, getAttrKey, entries, keys } from '@/utils';\n\nexport const render = (\n wDom: WDom,\n wrapElement: HTMLElement | null,\n afterElement?: HTMLElement | null\n) => {\n wrapElement ??= document.body;\n wDom.isRoot = true;\n wDom.wrapElement = wrapElement;\n\n const Dom = wDomToDom(wDom);\n\n if (afterElement) {\n wDom.afterElement = afterElement;\n wrapElement.insertBefore(Dom, afterElement);\n } else {\n wrapElement.appendChild(Dom);\n }\n\n execMountedQueue();\n\n return () => {\n const component = componentRef.get(wDom.compProps || {})?.vd.value;\n if (component) {\n runUnmountQueueFromWDom(component);\n recursiveRemoveEvent(component);\n rootDelete(component);\n }\n };\n};\n\nexport const wDomUpdate = (newWDomTree: WDom) => {\n const { needRerender } = newWDomTree;\n\n if (needRerender && needRerender !== 'N') {\n ({\n A: typeAdd,\n D: typeDelete,\n R: typeReplace,\n U: typeUpdate,\n SR: typeSortedReplace,\n SU: typeSortedUpdate,\n })[needRerender](newWDomTree);\n }\n};\n\nexport const recursiveRemoveEvent = (originalWDom: WDom) => {\n if (originalWDom.props && originalWDom.el) {\n removeEvent(originalWDom.props, originalWDom.el);\n }\n\n (originalWDom.children || []).forEach((childItem: WDom) => {\n recursiveRemoveEvent(childItem);\n });\n};\n\nconst rootDelete = (newWDom: WDom) => {\n deleteRealDom(newWDom, newWDom.wrapElement as HTMLElement);\n};\n\nconst typeDelete = (newWDom: WDom) => {\n if (newWDom.oldProps && newWDom.el) {\n removeEvent(newWDom.oldProps, newWDom.el);\n }\n\n deleteRealDom(\n newWDom,\n findRealParentElement(getParent(newWDom)) as HTMLElement\n );\n};\n\nconst deleteRealDom = (newWDom: WDom, parent: HTMLElement) => {\n if (parent && newWDom.el) {\n if (newWDom.el?.nodeType === 1) {\n parent.removeChild(newWDom.el);\n } else if (newWDom.el?.nodeType === 11) {\n findChildWithRemoveElement(newWDom, parent as HTMLElement);\n }\n delete newWDom.el;\n }\n};\n\nconst findChildWithRemoveElement = (newWDom: WDom, parent: HTMLElement) => {\n (newWDom?.oldChildren || newWDom?.children || []).forEach(item => {\n if (item.el?.nodeType === 1) {\n parent.removeChild(item?.el);\n } else if (item.el?.nodeType === 11) {\n findChildWithRemoveElement(item, parent);\n }\n });\n};\n\nconst typeSortedReplace = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom);\n};\n\nconst typeSortedUpdate = (newWDom: WDom) => {\n typeDelete(newWDom);\n typeAdd(newWDom, newWDom.el);\n};\n\nconst typeAdd = (\n newWDom: WDom,\n newElement?: HTMLElement | DocumentFragment | Text\n) => {\n if (!newElement) {\n newElement = wDomToDom(newWDom) as HTMLElement;\n }\n\n const parentWDom = getParent(newWDom);\n if (parentWDom.type) {\n const parentEl = findRealParentElement(parentWDom);\n const isLoop = parentWDom.type === 'loop';\n const nextEl = isLoop\n ? startFindNextBrotherElement(parentWDom, getParent(parentWDom))\n : startFindNextBrotherElement(newWDom, parentWDom);\n\n if (newElement && parentEl) {\n if (nextEl) {\n parentEl.insertBefore(newElement, nextEl);\n } else {\n parentEl.appendChild(newElement);\n }\n\n execMountedQueue();\n }\n }\n};\n\nconst startFindNextBrotherElement = (\n wDom: WDom,\n parentWDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const brothers = parentWDom.children || [];\n const index = brothers.indexOf(wDom);\n const nextIndex = index + 1;\n const candidiateBrothers = brothers.slice(nextIndex);\n\n const finedNextEl = findChildFragmentNextElement(candidiateBrothers);\n const parentType = parentWDom.type || '';\n\n if (finedNextEl) {\n return finedNextEl;\n }\n\n if (!parentWDom.isRoot && checkVirtualType(parentType)) {\n return startFindNextBrotherElement(parentWDom, getParent(parentWDom));\n } else if (parentWDom.isRoot && parentWDom.afterElement) {\n return parentWDom.afterElement;\n }\n\n return undefined;\n};\n\nconst findChildFragmentNextElement = (\n candidiateBrothers: WDom[]\n): HTMLElement | DocumentFragment | Text | undefined =>\n candidiateBrothers.reduce(\n (\n targetEl: HTMLElement | DocumentFragment | Text | undefined,\n bItem: WDom\n ) => {\n const type = bItem.type;\n const el = bItem.el;\n const isFragment = type && checkVirtualType(type);\n\n if (targetEl) {\n return targetEl;\n } else if (isFragment) {\n return findChildFragmentNextElement(bItem.children || []);\n } else if (el && el.nodeType !== 11) {\n return el;\n }\n\n return targetEl;\n },\n undefined\n );\n\nconst typeReplace = (newWDom: WDom) => {\n const parentWDom = getParent(newWDom);\n const orignalElement = newWDom.el;\n\n if (parentWDom.type && orignalElement) {\n if (orignalElement.nodeType === 11) {\n typeSortedReplace(newWDom);\n } else {\n const parentElement = findRealParentElement(parentWDom);\n const newElement = wDomToDom(newWDom);\n\n if (parentElement) {\n parentElement.replaceChild(newElement, orignalElement);\n }\n execMountedQueue();\n }\n }\n};\n\nconst removeEvent = (\n oldProps: Props,\n element: HTMLElement | DocumentFragment | Text\n) => {\n entries(oldProps || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n if (dataKey.match(/^on/)) {\n element.removeEventListener(\n getEventName(dataKey),\n dataValue as (e: Event) => void\n );\n }\n });\n};\n\nconst typeUpdate = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (newWDom.type === 'text') {\n updateText(newWDom);\n\n return;\n }\n\n if (element) {\n const { oldProps, props } = newWDom;\n\n updateProps(props, element, oldProps);\n\n delete newWDom.oldProps;\n\n if (newWDom.tag === 'input') {\n (element as HTMLInputElement).value = String(newWDom?.props?.value || '');\n }\n }\n\n (newWDom.children || []).forEach((childItem: WDom) => wDomUpdate(childItem));\n\n runUpdatedQueueFromWDom(newWDom);\n};\n\nconst updateText = (newWDom: WDom) => {\n const element = newWDom.el;\n\n if (element) {\n element.nodeValue = String(newWDom.text);\n }\n};\n\nconst updateProps = (\n props?: Props,\n element?: HTMLElement | Element | DocumentFragment | Text,\n oldProps?: Props\n) => {\n const originalProps = { ...oldProps };\n\n entries(props || {}).forEach(([dataKey, dataValue]: [string, unknown]) => {\n if (dataKey === 'key') {\n // Do nothing\n } else if (dataKey === 'innerHTML' && typeof dataValue === 'string') {\n (element as HTMLElement).innerHTML = dataValue;\n } else if (checkStyleData(dataKey, dataValue)) {\n updateStyle(\n dataValue,\n checkStyleData(dataKey, originalProps.style) ? originalProps.style : {},\n element\n );\n } else if (checkRefData(dataKey, dataValue)) {\n dataValue.value = element;\n } else if (dataKey.match(/^on/)) {\n updateEvent(\n element as HTMLElement,\n dataKey,\n dataValue as (e: Event) => void,\n originalProps[dataKey] as (e: Event) => void\n );\n } else if (checkCheckableElement(element) && dataKey === 'checked') {\n (element as HTMLInputElement).checked = !!dataValue;\n } else if (checkTextareaElement(element) && dataKey === 'value') {\n (element as HTMLInputElement).value = dataValue as string;\n } else if (checkOptionElement(element) && dataKey === 'selected') {\n (element as HTMLOptionElement).selected = !!dataValue;\n } else if (checkNormalAttribute(dataValue)) {\n if (xmlnsRef.value && dataKey !== 'xmlns') {\n (element as HTMLElement).setAttributeNS(\n null,\n getAttrKey(dataKey),\n String(dataValue)\n );\n } else {\n (element as HTMLElement).setAttribute(\n getAttrKey(dataKey),\n String(dataValue)\n );\n }\n }\n\n delete originalProps[dataKey];\n });\n\n keys(originalProps).forEach(dataKey =>\n (element as HTMLElement).removeAttribute(dataKey)\n );\n};\n\nconst wDomToDom = (wDom: WDom) => {\n let element;\n const { type, tag, text, props, children = [] } = wDom;\n const isVirtualType = checkVirtualType(type);\n\n if (tag === 'svg') {\n xmlnsRef.value = String(props?.xmlns);\n }\n\n if (isVirtualType) {\n element = new DocumentFragment();\n } else if (type === 'element' && tag) {\n element = xmlnsRef.value\n ? document.createElementNS(xmlnsRef.value, tag)\n : document.createElement(tag);\n } else if (type === 'text' && checkExisty(text)) {\n element = document.createTextNode(String(text));\n } else {\n element = document.createElement('e');\n }\n\n wDomChildrenToDom(children, element);\n updateProps(props, element);\n\n wDom.el = element as HTMLElement;\n\n addMountedQueue(wDom);\n\n if (tag === 'svg') {\n xmlnsRef.value = '';\n }\n\n return element;\n};\n\nconst wDomChildrenToDom = (\n children: WDom[],\n parentElement?: HTMLElement | Element | DocumentFragment | Text\n) => {\n const elementChildren = children.reduce(\n (acc: DocumentFragment, childItem: WDom) => {\n if (childItem.type) {\n acc.appendChild(wDomToDom(childItem));\n }\n\n return acc;\n },\n new DocumentFragment()\n );\n\n if (parentElement && elementChildren.hasChildNodes()) {\n parentElement.appendChild(elementChildren);\n }\n};\n\nconst updateEvent = (\n element: HTMLElement,\n eventKey: string,\n newEventHandler: (e: Event) => void,\n oldEventHandler: (e: Event) => void\n) => {\n const eventName = getEventName(eventKey);\n\n if (oldEventHandler !== newEventHandler) {\n if (oldEventHandler) {\n element.removeEventListener(eventName, oldEventHandler);\n }\n\n if (newEventHandler) {\n element.addEventListener(eventName, newEventHandler);\n }\n }\n};\n\nconst updateStyle = (\n style: Record<string, string>,\n oldStyle: Record<string, string>,\n element?: HTMLElement | Element | DocumentFragment | Text\n) => {\n const originalStyle = { ...oldStyle };\n const elementStyle = (element as HTMLElement)?.style;\n\n if (elementStyle) {\n entries(style).forEach(([styleKey, dataValue]) => {\n (elementStyle as any)[styleKey] = dataValue;\n delete originalStyle[styleKey];\n });\n\n entries(originalStyle).forEach(\n ([styleKey]) => ((elementStyle as any)[styleKey] = '')\n );\n }\n};\n\nconst findRealParentElement = (\n vDom: WDom\n): HTMLElement | DocumentFragment | Text | undefined => {\n const isVirtualType = checkVirtualType(vDom.type);\n if (vDom.isRoot && isVirtualType) {\n return vDom.wrapElement;\n }\n\n if (!isVirtualType) {\n return vDom.el as HTMLElement;\n }\n\n return findRealParentElement(getParent(vDom));\n};\n","import { WDom, TagFunctionResolver, RenderType } from '@/types';\nimport { checkCustemComponentFunction, getKey } from '@/utils/predicator';\nimport { getParent, reRender } from '@/utils';\nimport { recursiveRemoveEvent } from '@/render';\nimport {\n checkEmptyElement,\n checkSameWDomWithOriginal,\n getWDomType,\n checkExisty,\n} from '@/utils/predicator';\n\nimport { runUnmountQueueFromWDom } from '@/hook/unmount';\nimport { assign } from '@/utils';\n\nexport const makeNewWDomTree = (\n newWDom: WDom | TagFunctionResolver,\n originalWDom?: WDom\n) =>\n remakeNewWDom(\n newWDom,\n checkSameWDomWithOriginal[getWDomType(newWDom)](newWDom, originalWDom),\n originalWDom\n );\n\nconst remakeNewWDom = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n) => {\n const remakeWDom = generalize(newWDom, isSameType, originalWDom);\n const param: [newWDom: WDom, isSameType: boolean, originalWDom?: WDom] = [\n remakeWDom,\n isSameType,\n originalWDom,\n ];\n const needRerender = addReRenderTypeProperty(...param);\n\n remakeWDom.children = remakeChildrenForDiff(...param);\n remakeWDom.needRerender = needRerender;\n\n inheritPropForRender(remakeWDom, originalWDom, needRerender);\n\n return remakeWDom;\n};\n\nconst inheritPropForRender = (\n remakeWDom: WDom,\n originalWDom?: WDom,\n needRerender?: RenderType\n) => {\n if (needRerender !== 'A' && originalWDom) {\n remakeWDom.el = originalWDom.el;\n }\n\n if (needRerender && ['D', 'R', 'SR'].includes(needRerender)) {\n if (originalWDom?.compKey) {\n runUnmountQueueFromWDom(originalWDom);\n recursiveRemoveEvent(originalWDom);\n }\n remakeWDom.oldChildren = originalWDom?.children;\n }\n\n remakeWDom.oldProps = originalWDom?.props;\n};\n\nconst addReRenderTypeProperty = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n): RenderType | undefined => {\n const existOriginalWDom = originalWDom && originalWDom.type;\n const isEmptyElement = checkEmptyElement(newWDom);\n const isRoot = !newWDom.getParent;\n const parentType = !isRoot && getParent(newWDom).type;\n const key = getKey(newWDom);\n const isKeyCheckedWDom = parentType === 'loop' && checkExisty(key);\n const isSameText =\n newWDom.type === 'text' &&\n isSameType &&\n newWDom.text === originalWDom?.text;\n\n let result: RenderType | undefined;\n if (isEmptyElement) {\n result = 'D';\n } else if (isSameText) {\n result = 'N';\n } else if (!existOriginalWDom) {\n result = 'A';\n } else if (isSameType) {\n result = isKeyCheckedWDom ? 'SU' : 'U';\n } else {\n result = isKeyCheckedWDom ? 'SR' : 'R';\n }\n\n return result;\n};\n\nconst generalize = (\n newWDom: WDom | TagFunctionResolver,\n isSameType: boolean,\n originalWDom?: WDom\n): WDom => {\n if (checkCustemComponentFunction(newWDom)) {\n return isSameType && originalWDom\n ? reRender(originalWDom, newWDom)\n : newWDom.resolve();\n }\n\n return newWDom;\n};\n\nconst remakeChildrenForDiff = (\n newWDom: WDom,\n isSameType: boolean,\n originalWDom?: WDom\n) =>\n isSameType && originalWDom\n ? remakeChildrenForUpdate(newWDom, originalWDom)\n : remakeChildrenForAdd(newWDom);\n\nconst remakeChildrenForAdd = (newWDom: WDom) =>\n (newWDom.children || []).map((item: WDom) =>\n assign(makeNewWDomTree(item), { getParent: () => newWDom })\n );\n\nconst remakeChildrenForUpdate = (newWDom: WDom, originalWDom: WDom) =>\n newWDom.type === 'loop' && checkExisty(getKey((newWDom.children || [])[0]))\n ? remakeChildrenForLoopUpdate(newWDom, originalWDom)\n : (newWDom.children || []).map((item: WDom, index: number) =>\n assign(makeNewWDomTree(item, (originalWDom.children || [])[index]), {\n getParent: () => newWDom,\n })\n );\n\nconst remakeChildrenForLoopUpdate = (newWDom: WDom, originalWDom: WDom) => {\n const [remakedChildren, unUsedChildren] = diffLoopChildren(\n newWDom,\n originalWDom\n );\n\n unUsedChildren.map(unusedItem => {\n const el = unusedItem.el;\n\n if (el?.parentNode) {\n el.parentNode.removeChild(el);\n }\n });\n\n return remakedChildren;\n};\n\nconst diffLoopChildren = (newWDom: WDom, originalWDom: WDom) => {\n const newChildren = [...(newWDom.children || [])];\n const originalChildren = [...(originalWDom.children || [])];\n const remakedChildren = newChildren.map(item => {\n const originalItem = findSameKeyOriginalItem(item, originalChildren);\n const childItem = makeNewWDomTree(item, originalItem);\n\n if (originalItem) {\n originalChildren.splice(originalChildren.indexOf(originalItem), 1);\n }\n\n childItem.getParent = () => newWDom;\n\n return childItem;\n });\n\n return [remakedChildren, originalChildren];\n};\n\nconst findSameKeyOriginalItem = (item: WDom, originalChildren: WDom[]) =>\n originalChildren.find(\n orignalChildItem => getKey(orignalChildItem) === getKey(item)\n );\n","import { componentRef, getComponentKey } from '@/utils/universalRef';\n\nimport { useUpdated } from '@/hook/useUpdate';\n\nexport const updateCallback = (\n effectAction: () => (() => void) | void,\n dependencies: () => any[] = () => []\n) => {\n const updateReqs = componentRef.get(getComponentKey())!.upR;\n\n updateReqs.push(() => useUpdated(effectAction, dependencies));\n useUpdated(effectAction, dependencies);\n};\n\nexport const runUpdateCallback = () => {\n const updateReqs = componentRef.get(getComponentKey())?.upR;\n\n if (updateReqs?.length) {\n updateReqs.forEach(callback => callback());\n }\n};\n","import {\n WDom,\n TagFunction,\n FragmentFunction,\n Props,\n MiddleStateWDomChildren,\n MiddleStateWDom,\n NodePointer,\n Component,\n} from '@/types';\n\nimport { makeNewWDomTree } from '@/diff';\nimport { wDomUpdate } from '@/render';\nimport {\n initUpdateHookState,\n initMountHookState,\n setRedrawAction,\n needDiffRef,\n componentRender,\n getComponentSubInfo,\n} from '@/utils/universalRef';\nimport { runUpdateCallback } from '@/hook/updateCallback';\nimport {\n checkFragmentFunction,\n checkCustemComponentFunction,\n} from '@/utils/predicator';\nimport { assign } from '@/utils';\n\nexport const Fragment = (_props: Props, ...children: WDom[]) => ({\n type: 'fragment',\n children,\n});\n\nexport const h = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n ...children: MiddleStateWDomChildren\n) => {\n const nodeParentPointer: NodePointer = { value: undefined };\n const newProps = props || {};\n const newChildren = remakeChildren(nodeParentPointer, children);\n const node = makeNode(tag, newProps, newChildren);\n\n if (!checkCustemComponentFunction(node)) {\n nodeParentPointer.value = node;\n }\n\n return node;\n};\n\nexport const mount =\n <T>(component: Component<T>) =>\n (_props: T, _children: WDom[]) =>\n component;\n\nconst reRenderCustomComponent = (\n tag: TagFunction,\n props: Props,\n children: WDom[],\n originalWDom: WDom\n) => {\n needDiffRef.value = true;\n\n const newWDom = makeWDomResolver(tag, props, children);\n const newWDomTree = makeNewWDomTree(newWDom, originalWDom);\n const { isRoot, getParent, wrapElement, afterElement } = originalWDom;\n\n newWDomTree.getParent = getParent;\n\n if (!isRoot && getParent) {\n const brothers = getParent()?.children || [];\n const index = brothers.indexOf(originalWDom);\n\n brothers.splice(index, 1, newWDomTree);\n } else {\n newWDomTree.isRoot = true;\n newWDomTree.wrapElement = wrapElement;\n newWDomTree.afterElement = afterElement;\n }\n\n needDiffRef.value = false;\n wDomUpdate(newWDomTree);\n};\n\nconst makeWDomResolver = (tag: TagFunction, props: Props, children: WDom[]) => {\n const tagName = tag.name;\n const ctor = tag;\n // 리졸브는 컴포넌트를 새로 만든다.\n const resolve = (compKey = props) => {\n initMountHookState(compKey);\n\n const component = tag(props, children);\n const componentMaker = component(componentRender(compKey), props, children);\n\n const customNode = makeCustomNode(\n componentMaker,\n compKey,\n tag,\n props,\n children\n );\n\n const originalWDom = customNode;\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = customNode;\n\n return customNode;\n };\n\n return { tagName, ctor, props, children, resolve };\n};\n\nconst makeCustomNode = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const customNode = componentMaker(props);\n\n addComponentProps(\n customNode,\n compKey,\n tag,\n props,\n children,\n makeReRender(componentMaker, compKey, tag, props, children)\n );\n\n return customNode;\n};\n\nconst makeReRender = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[]\n) => {\n const reRender = () =>\n wDomMaker(componentMaker, compKey, tag, props, children, reRender);\n return reRender;\n};\n\nconst wDomMaker = (\n componentMaker: (props: Props) => WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n initUpdateHookState(compKey);\n runUpdateCallback();\n\n const originalWDom = componentMaker(props);\n\n setRedrawAction(compKey, () =>\n reRenderCustomComponent(tag, props, children, originalWDom)\n );\n\n addComponentProps(originalWDom, compKey, tag, props, children, reRender);\n\n (getComponentSubInfo(compKey, 'vd') as { value: WDom }).value = originalWDom;\n\n return originalWDom;\n};\n\nconst addComponentProps = (\n wDom: WDom,\n compKey: Props,\n tag: TagFunction,\n props: Props,\n children: WDom[],\n reRender: () => WDom\n) => {\n assign(wDom, {\n compProps: props,\n compChild: children,\n ctor: tag,\n tagName: tag.name,\n compKey,\n reRender,\n });\n};\n\nconst makeNode = (\n tag: TagFunction | FragmentFunction | string,\n props: Props,\n children: WDom[]\n) => {\n if (checkFragmentFunction(tag)) {\n return Fragment(props, ...children);\n } else if (checkCustemComponentFunction(tag)) {\n const componetMakeResolver = makeWDomResolver(tag, props, children);\n\n return needDiffRef.value\n ? componetMakeResolver\n : componetMakeResolver.resolve();\n }\n\n return {\n type: 'element',\n tag,\n props,\n children,\n };\n};\n\nconst remakeChildren = (\n nodeParentPointer: NodePointer,\n children: MiddleStateWDomChildren\n): WDom[] =>\n children.map((item: MiddleStateWDom) =>\n assign(makeChildrenItem(item), { getParent: () => nodeParentPointer.value })\n );\n\nconst makeChildrenItem = (item: MiddleStateWDom): WDom => {\n if (item === null || item === undefined || item === false) {\n return { type: null };\n } else if (Array.isArray(item)) {\n const nodeParentPointer: NodePointer = { value: undefined };\n const children = remakeChildren(nodeParentPointer, item);\n const node = {\n type: 'loop',\n children,\n };\n nodeParentPointer.value = node;\n\n return node;\n } else if (typeof item === 'string' || typeof item === 'number') {\n return { type: 'text', text: item };\n }\n\n return item;\n};\n","export const ref = <T>(initValue: T) => ({ value: initValue });\nexport const nextTick = () => Promise.resolve();\n"],"names":["checkPlainWDomType","wDom","checkPlainType","typeName","checkSameCustomComponent","newWDom","originalWDom","checkSameFragment","_a","_b","checkSameTagElement","checkNormalTypeElement","checkExisty","getKey","target","_c","checkVirtualType","type","checkCustemComponentFunction","checkFragmentFunction","Fragment","checkEmptyElement","value","checkStyleData","dataKey","dataValue","checkRefData","checkOptionElement","element","checkTextareaElement","checkCheckableElement","checkNormalAttribute","getWDomType","result","checkSameWDomWithOriginal","getParent","vDom","reRender","infoVdom","props","children","infoProps","infoChidren","updateProps","updateChildren","getEventName","eventKey","_match","p1","getAttrKey","keyName","entries","keys","assign","key","childrenItem","redrawQueue","redrawQueueTimeout","xmlnsRef","compKeyRef","needDiffRef","componentRef","componentRender","compKey","up","setComponetRef","getComponentKey","getComponentSubInfo","subKey","setRedrawAction","exec","execRedrawQueue","initUpdateHookState","initMountHookState","recursiveGetChildKeys","item","childComKey","childItemList","childVd","addedKey","acc","action","unmount","effectAction","runUnmountQueueFromWDom","removeItem","recursiveRunUnmount","subInfo","effect","mountedQueue","execMountedQueue","runMountedQueueFromWDom","addMountedQueue","mountCallback","component","queue","sequence","callback","useUpdated","dependencies","upD","upS","def","checkNeedPushQueue","runUpdatedQueueFromWDom","originalDefs","newDefs","index","render","wrapElement","afterElement","Dom","wDomToDom","recursiveRemoveEvent","rootDelete","wDomUpdate","newWDomTree","needRerender","typeAdd","typeDelete","typeReplace","typeUpdate","typeSortedReplace","typeSortedUpdate","removeEvent","childItem","deleteRealDom","findRealParentElement","parent","findChildWithRemoveElement","newElement","parentWDom","parentEl","nextEl","startFindNextBrotherElement","brothers","nextIndex","candidiateBrothers","finedNextEl","findChildFragmentNextElement","parentType","targetEl","bItem","el","isFragment","orignalElement","parentElement","oldProps","updateText","originalProps","updateStyle","updateEvent","tag","text","isVirtualType","wDomChildrenToDom","elementChildren","newEventHandler","oldEventHandler","eventName","style","oldStyle","originalStyle","elementStyle","styleKey","makeNewWDomTree","remakeNewWDom","isSameType","remakeWDom","generalize","param","addReRenderTypeProperty","remakeChildrenForDiff","inheritPropForRender","existOriginalWDom","isEmptyElement","isKeyCheckedWDom","isSameText","remakeChildrenForUpdate","remakeChildrenForAdd","remakeChildrenForLoopUpdate","remakedChildren","unUsedChildren","diffLoopChildren","unusedItem","newChildren","originalChildren","originalItem","findSameKeyOriginalItem","orignalChildItem","updateCallback","runUpdateCallback","updateReqs","_props","h","nodeParentPointer","newProps","remakeChildren","node","makeNode","mount","_children","reRenderCustomComponent","makeWDomResolver","isRoot","componentMaker","customNode","makeCustomNode","addComponentProps","makeReRender","wDomMaker","componetMakeResolver","makeChildrenItem","ref","initValue","nextTick"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))l(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const u of r.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&l(u)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerpolicy&&(r.referrerPolicy=o.referrerpolicy),o.crossorigin==="use-credentials"?r.credentials="include":o.crossorigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function l(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();const g=e=>typeof e=="object"&&!("resolve"in e),C=(e,t)=>g(e)&&e.type===t,Pe=(e,t)=>"ctor"in e?e.ctor===(t==null?void 0:t.ctor):e===(t==null?void 0:t.ctor),xe=(e,t)=>{var n,l;return g(e)&&(t==null?void 0:t.type)==="fragment"&&((n=t==null?void 0:t.children)==null?void 0:n.length)===((l=e==null?void 0:e.children)==null?void 0:l.length)},Ce=(e,t)=>{var n,l;return g(e)&&(t==null?void 0:t.type)==="element"&&(t==null?void 0:t.tag)===e.tag&&((n=t==null?void 0:t.children)==null?void 0:n.length)===((l=e==null?void 0:e.children)==null?void 0:l.length)},U=(e,t)=>{var n,l;return g(e)&&(t==null?void 0:t.type)===e.type&&(((n=t==null?void 0:t.children)==null?void 0:n.length)===((l=e==null?void 0:e.children)==null?void 0:l.length)||e.type==="loop"&&m(v((e.children||[])[0]))&&m(v((t.children||[])[0])))},v=e=>{var t,n,l;return(l=(t=e==null?void 0:e.compProps)==null?void 0:t.key)!=null?l:(n=e==null?void 0:e.props)==null?void 0:n.key},S=e=>e&&["fragment","loop"].includes(e),N=e=>typeof e=="function"&&!X(e)||typeof e=="object"&&"resolve"in e,X=e=>typeof e=="function"&&e===O,_=e=>g(e)&&!e.type,m=e=>e!=null,Y=(e,t)=>e==="style"&&typeof t=="object",be=(e,t)=>e==="ref"&&typeof t=="object",Re=e=>e.nodeType===1&&e.tagName==="OPTION",Se=e=>e.nodeType===1&&e.tagName==="TEXTAREA",Ne=e=>e.nodeType===1&&["radio","checkbox"].includes(e.type),we=e=>typeof e=="number"||typeof e=="string",Te=e=>{let t="et";return N(e)?t="c":C(e,"fragment")?t="f":C(e,"element")?t="e":C(e,"loop")?t="l":C(e,"text")?t="t":_(e)&&(t="et"),t},Ve={c:Pe,l:U,t:U,e:Ce,f:xe,et:U},p=e=>e.getParent&&e.getParent(),ke=(e,t)=>{const{compProps:n,compChild:l}=e,{props:o,children:r}=t;return n&&Oe(n,o),l&&Ae(l,r),e.reRender&&e.reRender()},z=e=>e.replace(/^on(.*)/,(t,n)=>n.toLowerCase()),J=e=>e==="className"?"class":e,f=Object.entries,G=Object.keys,w=Object.assign,Oe=(e,t)=>{e&&t!==e&&(G(e).forEach(n=>delete e[n]),f(t||{}).forEach(([n,l])=>e[n]=l))},Ae=(e,t)=>{e&&t!==e&&(e.splice(0,e.length),t&&t.forEach(n=>e.push(n)))};let b=[],K=!1;const h={value:""},y={value:{}},L={value:!1},i=new WeakMap,De=e=>()=>{var t;const n=(t=i.get(e))==null?void 0:t.up;let l=!1;return n&&(n(),l=!0),l},Ue=e=>{i.set(e,{vd:{value:null},up:()=>{},upR:[],upS:{value:0},upD:[],upCB:[],mts:[],umts:[]})},E=()=>y.value,Q=(e,t)=>i.get(e)[t],Z=(e,t)=>{i.get(e).up=()=>{b.push({compKey:e,exec:t}),K||(K=!0,queueMicrotask(Me))}},Ke=e=>y.value=e,Le=e=>{y.value=e,Ue(e)},ee=(e,t)=>{(e.children||[]).forEach(n=>{const l=n.compKey;l&&t.push(l),ee(n,t)})},Me=()=>{let e=[];b.forEach(l=>{var o,r;const u=(r=(o=i.get(l.compKey))==null?void 0:o.vd)==null?void 0:r.value;u&&ee(u,e)});const t=[],n=b.reduce((l,o)=>{const{compKey:r}=o;return e.includes(r)||t.includes(r)||(t.push(r),l.push(o)),l},[]);for(;n.length;){const l=n.shift();l&&l.exec()}b=[],K=!1},Fe=e=>{i.get(E()).umts.push(e)},j=e=>{const{compKey:t}=e;t&&Ie(t),te(e)},te=e=>{(e.children||[]).forEach(t=>{t.compKey?j(t):te(t)})},Ie=e=>{const t=i.get(e);t&&(t.umts.forEach(n=>n()),t.umts=[],i.delete(e))};let M=[];const B=()=>{M.forEach(e=>Be(e)),M=[]},je=e=>{e.compKey&&M.push(e)},ne=e=>i.get(E()).mts.push(e),Be=e=>{const{compKey:t}=e;if(t){const n=i.get(t),l=n==null?void 0:n.mts,o=n==null?void 0:n.upS;y.value=t,o&&(o.value=0),l&&(n.mts=[],l.forEach(r=>{const u=r();u&&Fe(u)}))}},W=(e,t=()=>[])=>{const n=i.get(E()),{upD:l,upS:o}=n,r=l[o.value];if(r&&qe(r,t())){const u=e();u&&n.upCB.push(u)}l[o.value]=t(),o.value+=1},$e=e=>{const{compKey:t}=e;if(t){const n=i.get(t),l=n==null?void 0:n.upCB,o=n==null?void 0:n.upS;y.value=t,o&&(o.value=0),e.ctor&&l&&(n.upCB=[],l.forEach(r=>r()))}},qe=(e,t)=>!e.length&&!e.length?!0:e.some((n,l)=>n!==t[l]),He=(e,t,n)=>{t!=null||(t=document.body),e.isRoot=!0,e.wrapElement=t;const l=T(e);return n?(e.afterElement=n,t.insertBefore(l,n)):t.appendChild(l),B(),()=>{var o;const r=(o=i.get(e.compProps||{}))==null?void 0:o.vd.value;r&&(j(r),$(r),Ye(r))}},le=e=>{const{needRerender:t}=e;t&&t!=="N"&&{A:H,D:q,R:We,U:Xe,SR:ue,SU:Je}[t](e)},$=e=>{e.props&&e.el&&ie(e.props,e.el),(e.children||[]).forEach(t=>{$(t)})},Ye=e=>{oe(e,e.wrapElement)},q=e=>{e.oldProps&&e.el&&ie(e.oldProps,e.el),oe(e,V(p(e)))},oe=(e,t)=>{var n,l;t&&e.el&&(((n=e.el)==null?void 0:n.nodeType)===1?t.removeChild(e.el):((l=e.el)==null?void 0:l.nodeType)===11&&re(e,t),delete e.el)},re=(e,t)=>{((e==null?void 0:e.oldChildren)||(e==null?void 0:e.children)||[]).forEach(n=>{var l,o;((l=n.el)==null?void 0:l.nodeType)===1?t.removeChild(n==null?void 0:n.el):((o=n.el)==null?void 0:o.nodeType)===11&&re(n,t)})},ue=e=>{q(e),H(e)},Je=e=>{q(e),H(e,e.el)},H=(e,t)=>{t||(t=T(e));const n=p(e);if(n.type){const l=V(n),o=n.type==="loop"?F(n,p(n)):F(e,n);t&&l&&(o?l.insertBefore(t,o):l.appendChild(t),B())}},F=(e,t)=>{const n=t.children||[],l=n.indexOf(e)+1,o=n.slice(l),r=ce(o),u=t.type||"";if(r)return r;if(!t.isRoot&&S(u))return F(t,p(t));if(t.isRoot&&t.afterElement)return t.afterElement},ce=e=>e.reduce((t,n)=>{const l=n.type,o=n.el,r=l&&S(l);return t||(r?ce(n.children||[]):o&&o.nodeType!==11?o:t)},void 0),We=e=>{const t=p(e),n=e.el;if(t.type&&n)if(n.nodeType===11)ue(e);else{const l=V(t),o=T(e);l&&l.replaceChild(o,n),B()}},ie=(e,t)=>{f(e||{}).forEach(([n,l])=>{n.match(/^on/)&&t.removeEventListener(z(n),l)})},Xe=e=>{var t;const n=e.el;if(e.type==="text"){_e(e);return}if(n){const{oldProps:l,props:o}=e;ae(o,n,l),delete e.oldProps,e.tag==="input"&&(n.value=String(((t=e==null?void 0:e.props)==null?void 0:t.value)||""))}(e.children||[]).forEach(l=>le(l)),$e(e)},_e=e=>{const t=e.el;t&&(t.nodeValue=String(e.text))},ae=(e,t,n)=>{const l={...n};f(e||{}).forEach(([o,r])=>{o==="key"||(o==="innerHTML"&&typeof r=="string"?t.innerHTML=r:Y(o,r)?Qe(r,Y(o,l.style)?l.style:{},t):be(o,r)?r.value=t:o.match(/^on/)?Ge(t,o,r,l[o]):Ne(t)&&o==="checked"?t.checked=!!r:Se(t)&&o==="value"?t.value=r:Re(t)&&o==="selected"?t.selected=!!r:we(r)&&(h.value&&o!=="xmlns"?t.setAttributeNS(null,J(o),String(r)):t.setAttribute(J(o),String(r)))),delete l[o]}),G(l).forEach(o=>t.removeAttribute(o))},T=e=>{let t;const{type:n,tag:l,text:o,props:r,children:u=[]}=e,d=S(n);return l==="svg"&&(h.value=String(r==null?void 0:r.xmlns)),d?t=new DocumentFragment:n==="element"&&l?t=h.value?document.createElementNS(h.value,l):document.createElement(l):n==="text"&&m(o)?t=document.createTextNode(String(o)):t=document.createElement("e"),ze(u,t),ae(r,t),e.el=t,je(e),l==="svg"&&(h.value=""),t},ze=(e,t)=>{const n=e.reduce((l,o)=>(o.type&&l.appendChild(T(o)),l),new DocumentFragment);t&&n.hasChildNodes()&&t.appendChild(n)},Ge=(e,t,n,l)=>{const o=z(t);l!==n&&(l&&e.removeEventListener(o,l),n&&e.addEventListener(o,n))},Qe=(e,t,n)=>{const l={...t},o=n==null?void 0:n.style;o&&(f(e).forEach(([r,u])=>{o[r]=u,delete l[r]}),f(l).forEach(([r])=>o[r]=""))},V=e=>{const t=S(e.type);return e.isRoot&&t?e.wrapElement:t?V(p(e)):e.el},k=(e,t)=>Ze(e,Ve[Te(e)](e,t),t),Ze=(e,t,n)=>{const l=nt(e,t,n),o=[l,t,n],r=tt(...o);return l.children=lt(...o),l.needRerender=r,et(l,n,r),l},et=(e,t,n)=>{n!=="A"&&t&&(e.el=t.el),n&&["D","R","SR"].includes(n)&&(t!=null&&t.compKey&&(j(t),$(t)),e.oldChildren=t==null?void 0:t.children),e.oldProps=t==null?void 0:t.props},tt=(e,t,n)=>{const l=n&&n.type,o=_(e),r=!!e.getParent&&p(e).type,u=v(e),d=r==="loop"&&m(u),s=e.type==="text"&&t&&e.text===(n==null?void 0:n.text);let a;return o?a="D":s?a="N":l?t?a=d?"SU":"U":a=d?"SR":"R":a="A",a},nt=(e,t,n)=>N(e)?t&&n?ke(n,e):e.resolve():e,lt=(e,t,n)=>t&&n?rt(e,n):ot(e),ot=e=>(e.children||[]).map(t=>w(k(t),{getParent:()=>e})),rt=(e,t)=>e.type==="loop"&&m(v((e.children||[])[0]))?ut(e,t):(e.children||[]).map((n,l)=>w(k(n,(t.children||[])[l]),{getParent:()=>e})),ut=(e,t)=>{const[n,l]=ct(e,t);return l.map(o=>{const r=o.el;r!=null&&r.parentNode&&r.parentNode.removeChild(r)}),n},ct=(e,t)=>{const n=[...e.children||[]],l=[...t.children||[]];return[n.map(o=>{const r=it(o,l),u=k(o,r);return r&&l.splice(l.indexOf(r),1),u.getParent=()=>e,u}),l]},it=(e,t)=>t.find(n=>v(n)===v(e)),se=(e,t=()=>[])=>{i.get(E()).upR.push(()=>W(e,t)),W(e,t)},at=()=>{var e;const t=(e=i.get(E()))==null?void 0:e.upR;t!=null&&t.length&&t.forEach(n=>n())},O=(e,...t)=>({type:"fragment",children:t}),c=(e,t,...n)=>{const l={value:void 0},o=t||{},r=me(l,n),u=vt(e,o,r);return N(u)||(l.value=u),u},de=e=>(t,n)=>e,pe=(e,t,n,l)=>{var o;L.value=!0;const r=ve(e,t,n),u=k(r,l),{isRoot:d,getParent:s,wrapElement:a,afterElement:P}=l;if(u.getParent=s,!d&&s){const x=((o=s())==null?void 0:o.children)||[],A=x.indexOf(l);x.splice(A,1,u)}else u.isRoot=!0,u.wrapElement=a,u.afterElement=P;L.value=!1,le(u)},ve=(e,t,n)=>({tagName:e.name,ctor:e,props:t,children:n,resolve:(l=t)=>{Le(l);const o=e(t,n)(De(l),t,n),r=st(o,l,e,t,n),u=r;return Z(l,()=>pe(e,t,n,u)),Q(l,"vd").value=r,r}}),st=(e,t,n,l,o)=>{const r=e(l);return he(r,t,n,l,o,dt(e,t,n,l,o)),r},dt=(e,t,n,l,o)=>{const r=()=>pt(e,t,n,l,o,r);return r},pt=(e,t,n,l,o,r)=>{Ke(t),at();const u=e(l);return Z(t,()=>pe(n,l,o,u)),he(u,t,n,l,o,r),Q(t,"vd").value=u,u},he=(e,t,n,l,o,r)=>{w(e,{compProps:l,compChild:o,ctor:n,tagName:n.name,compKey:t,reRender:r})},vt=(e,t,n)=>{if(X(e))return O(t,...n);if(N(e)){const l=ve(e,t,n);return L.value?l:l.resolve()}return{type:"element",tag:e,props:t,children:n}},me=(e,t)=>t.map(n=>w(ht(n),{getParent:()=>e.value})),ht=e=>{if(e==null||e===!1)return{type:null};if(Array.isArray(e)){const t={value:void 0},n={type:"loop",children:me(t,e)};return t.value=n,n}else if(typeof e=="string"||typeof e=="number")return{type:"text",text:e};return e},mt=e=>({value:e}),I=(e,t)=>{let n=e;return{get value(){return n},get v(){return n},set value(l){n=l,t()},set v(l){n=l,t()}}},ft=e=>{let t=e;return{get value(){return t()},get v(){return t()},set value(n){throw new Error("You can't change 'computed'")},set v(n){throw new Error("You can't change 'computed'")}}},gt=(e,t=()=>{},n=()=>[])=>{ne(()=>(e(),t)),se(()=>(t&&t(),e),n)},fe=new Map,R={},yt=e=>{const t=Symbol();return fe.set(t,e),n=>(R[t]!=null||(R[t]=[]),R[t].push(n),Et(t))},Et=e=>new Proxy(fe.get(e),{get(t,n){return t[n]},set(t,n,l){t[n]=l;const o=R[e],r=[];return o.forEach(u=>{u()||r.push(u)}),r.forEach(u=>o.splice(o.indexOf(u),1)),!0}}),Pt=de((e,t,n)=>{const l=I(1,e),o=I('"destructuring" the "props" value directly from the mount function will cause referencing issues, so if you want to use it, you need to "destructuring" it from the internal function (updater).',e),r=()=>t.parentValue,u=t.parentValue,d=ft(()=>l.v+a+t.parentValue),s=yt({text:"s",count:0})(e);let a=t.parentValue;const P=mt(null),x=()=>{l.v=l.v+1,a+=1},A=D=>{o.v=D.target.value},ge=()=>{s.count+=1,s.text+="1"},ye=()=>(console.log("MOUNTED",P),()=>console.log("UNMOUNT")),Ee=()=>(console.log("UPDATE - parentValue"),()=>console.log("UPDATED"));return ne(ye),se(Ee,()=>[t.parentValue]),gt(()=>console.log("INJECT"),()=>console.log("CLEAN_UP"),()=>[l.v]),({parentValue:D})=>c(O,null,c("div",null,c("textarea",{value:o.v,onInput:A,style:{width:"300px",height:"100px"}})),c("div",null,o.v),c("div",null,c("div",{style:{color:"blue"}},"parentValueFromRef: ",t.parentValue," (working)"),c("div",{style:{color:"blue"}},"parentValueFromFunction: ",r()," (working)"),c("div",{style:{color:"blue"}},"parentValueFromUpdaterDestructuring: ",D," (working)"),c("div",{style:{color:"red"}},"parentValueFromMounterDestructuring: ",u," (not working)")),c("div",null,c("div",{ref:P},"count: ",l.v),c("div",null,"sum: ",l.v+a+t.parentValue),c("div",null,"sum(computed): ",d.v),c("div",null,"notRefValue: ",a),c("div",null,"localStore(text): ",s.text),c("div",null,"localStore(count): ",s.count)),c("button",{onClick:x},"Increase"),c("button",{onClick:ge},"localStoreUpdate"),n)}),xt=de(e=>{const t=I(7,e),n=()=>{t.v=t.v+1},l=()=>{t.v=t.v-1};return()=>c(O,null,c(Pt,{parentValue:t.v},c("button",{onClick:n},"Increase - Parent")),c("button",{onClick:l},"Decrease - Parent"))}),Ct=c(xt,null);He(Ct,document.getElementById("root"));
2
+ //# sourceMappingURL=index.48a8de86.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.48a8de86.js","sources":["../../vite/modulepreload-polyfill","../../../dist/lithent.mjs","../../../helper/dist/lithentHelper.mjs","../../src/index.tsx"],"sourcesContent":["__VITE_IS_MODERN__&&(function polyfill() {\n const relList = document.createElement('link').relList;\n if (relList && relList.supports && relList.supports('modulepreload')) {\n return;\n }\n for (const link of document.querySelectorAll('link[rel=\"modulepreload\"]')) {\n processPreload(link);\n }\n new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type !== 'childList') {\n continue;\n }\n for (const node of mutation.addedNodes) {\n if (node.tagName === 'LINK' && node.rel === 'modulepreload')\n processPreload(node);\n }\n }\n }).observe(document, { childList: true, subtree: true });\n function getFetchOpts(script) {\n const fetchOpts = {};\n if (script.integrity)\n fetchOpts.integrity = script.integrity;\n if (script.referrerpolicy)\n fetchOpts.referrerPolicy = script.referrerpolicy;\n if (script.crossorigin === 'use-credentials')\n fetchOpts.credentials = 'include';\n else if (script.crossorigin === 'anonymous')\n fetchOpts.credentials = 'omit';\n else\n fetchOpts.credentials = 'same-origin';\n return fetchOpts;\n }\n function processPreload(link) {\n if (link.ep)\n // ep marker = processed\n return;\n link.ep = true;\n // prepopulate the load record\n const fetchOpts = getFetchOpts(link);\n fetch(link.href, fetchOpts);\n }\n}());","const k = (e) => typeof e == \"object\" && !(\"resolve\" in e), E = (e, t) => k(e) && e.type === t, fe = (e, t) => \"ctor\" in e ? e.ctor === (t == null ? void 0 : t.ctor) : e === (t == null ? void 0 : t.ctor), de = (e, t) => {\n var s, c;\n return k(e) && (t == null ? void 0 : t.type) === \"fragment\" && ((s = t == null ? void 0 : t.children) == null ? void 0 : s.length) === ((c = e == null ? void 0 : e.children) == null ? void 0 : c.length);\n}, pe = (e, t) => {\n var s, c;\n return k(e) && (t == null ? void 0 : t.type) === \"element\" && (t == null ? void 0 : t.tag) === e.tag && ((s = t == null ? void 0 : t.children) == null ? void 0 : s.length) === ((c = e == null ? void 0 : e.children) == null ? void 0 : c.length);\n}, U = (e, t) => {\n var s, c;\n return k(e) && (t == null ? void 0 : t.type) === e.type && (((s = t == null ? void 0 : t.children) == null ? void 0 : s.length) === ((c = e == null ? void 0 : e.children) == null ? void 0 : c.length) || e.type === \"loop\" && v(i((e.children || [])[0])) && v(i((t.children || [])[0])));\n}, i = (e) => {\n var t, s, c;\n return (c = (t = e == null ? void 0 : e.compProps) == null ? void 0 : t.key) != null ? c : (s = e == null ? void 0 : e.props) == null ? void 0 : s.key;\n}, P = (e) => e && [\"fragment\", \"loop\"].includes(e), T = (e) => typeof e == \"function\" && !$(e) || typeof e == \"object\" && \"resolve\" in e, $ = (e) => typeof e == \"function\" && e === ce, H = (e) => k(e) && !e.type, v = (e) => e != null, z = (e, t) => e === \"style\" && typeof t == \"object\", he = (e, t) => e === \"ref\" && typeof t == \"object\", ie = (e) => e.nodeType === 1 && e.tagName === \"OPTION\", ye = (e) => e.nodeType === 1 && e.tagName === \"TEXTAREA\", ve = (e) => e.nodeType === 1 && [\"radio\", \"checkbox\"].includes(e.type), Ce = (e) => typeof e == \"number\" || typeof e == \"string\", ke = (e) => {\n let t = \"et\";\n return T(e) ? t = \"c\" : E(e, \"fragment\") ? t = \"f\" : E(e, \"element\") ? t = \"e\" : E(e, \"loop\") ? t = \"l\" : E(e, \"text\") ? t = \"t\" : H(e) && (t = \"et\"), t;\n}, ae = {\n c: fe,\n l: U,\n t: U,\n e: pe,\n f: de,\n et: U\n}, p = (e) => e.getParent && e.getParent(), Re = (e, t) => {\n const { compProps: s, compChild: c } = e, { props: n, children: r } = t;\n return s && Ee(s, n), c && xe(c, r), e.reRender && e.reRender();\n}, J = (e) => e.replace(/^on(.*)/, (t, s) => s.toLowerCase()), G = (e) => e === \"className\" ? \"class\" : e, C = Object.entries, Y = Object.keys, S = Object.assign, Ee = (e, t) => {\n e && t !== e && (Y(e).forEach((s) => delete e[s]), C(t || {}).forEach(([s, c]) => e[s] = c));\n}, xe = (e, t) => {\n e && t !== e && (e.splice(0, e.length), t && t.forEach((s) => e.push(s)));\n};\nlet x = [], A = !1;\nconst y = { value: \"\" }, a = { value: {} }, O = { value: !1 }, o = /* @__PURE__ */ new WeakMap(), Pe = (e) => () => {\n var c;\n const t = (c = o.get(e)) == null ? void 0 : c.up;\n let s = !1;\n return t && (t(), s = !0), s;\n}, Te = (e) => {\n o.set(e, {\n vd: { value: null },\n up: () => {\n },\n upR: [],\n upS: { value: 0 },\n upD: [],\n upCB: [],\n mts: [],\n umts: []\n });\n}, R = () => a.value, Z = (e, t) => o.get(e)[t], V = (e, t) => {\n o.get(e).up = () => {\n x.push({\n compKey: e,\n exec: t\n }), A || (A = !0, queueMicrotask(be));\n };\n}, Se = (e) => a.value = e, Ne = (e) => {\n a.value = e, Te(e);\n}, K = (e, t) => {\n (e.children || []).forEach((s) => {\n const c = s.compKey;\n c && t.push(c), K(s, t);\n });\n}, be = () => {\n let e = [];\n x.forEach((c) => {\n var r, u;\n const n = (u = (r = o.get(c.compKey)) == null ? void 0 : r.vd) == null ? void 0 : u.value;\n n && K(n, e);\n });\n const t = [], s = x.reduce((c, n) => {\n const { compKey: r } = n;\n return e.includes(r) || t.includes(r) || (t.push(r), c.push(n)), c;\n }, []);\n for (; s.length; ) {\n const c = s.shift();\n c && c.exec();\n }\n x = [], A = !1;\n}, Fe = (e) => {\n o.get(R()).umts.push(e);\n}, Q = (e) => {\n const { compKey: t } = e;\n t && Ue(t), g(e);\n}, g = (e) => {\n (e.children || []).forEach((t) => {\n t.compKey ? Q(t) : g(t);\n });\n}, Ue = (e) => {\n const t = o.get(e);\n t && (t.umts.forEach((s) => s()), t.umts = [], o.delete(e));\n};\nlet L = [];\nconst B = () => {\n L.forEach((e) => Oe(e)), L = [];\n}, Ae = (e) => {\n e.compKey && L.push(e);\n}, ct = (e) => o.get(R()).mts.push(e), Oe = (e) => {\n const { compKey: t } = e;\n if (t) {\n const s = o.get(t), c = s == null ? void 0 : s.mts, n = s == null ? void 0 : s.upS;\n a.value = t, n && (n.value = 0), c && (s.mts = [], c.forEach((r) => {\n const u = r();\n u && Fe(u);\n }));\n }\n}, X = (e, t = () => []) => {\n const s = o.get(R()), { upD: c, upS: n } = s, r = c[n.value];\n if (r && Me(r, t())) {\n const u = e();\n u && s.upCB.push(u);\n }\n c[n.value] = t(), n.value += 1;\n}, Le = (e) => {\n const { compKey: t } = e;\n if (t) {\n const s = o.get(t), c = s == null ? void 0 : s.upCB, n = s == null ? void 0 : s.upS;\n a.value = t, n && (n.value = 0), e.ctor && c && (s.upCB = [], c.forEach((r) => r()));\n }\n}, Me = (e, t) => !e.length && !e.length ? !0 : e.some((s, c) => s !== t[c]), nt = (e, t, s) => {\n t != null || (t = document.body), e.isRoot = !0, e.wrapElement = t;\n const c = N(e);\n return s ? (e.afterElement = s, t.insertBefore(c, s)) : t.appendChild(c), B(), () => {\n var r;\n const n = (r = o.get(e.compProps || {})) == null ? void 0 : r.vd.value;\n n && (Q(n), j(n), Qe(n));\n };\n}, m = (e) => {\n const { needRerender: t } = e;\n t && t !== \"N\" && {\n A: q,\n D: I,\n R: je,\n U: Ie,\n SR: D,\n SU: Be\n }[t](e);\n}, j = (e) => {\n e.props && e.el && te(e.props, e.el), (e.children || []).forEach((t) => {\n j(t);\n });\n}, Qe = (e) => {\n w(e, e.wrapElement);\n}, I = (e) => {\n e.oldProps && e.el && te(e.oldProps, e.el), w(\n e,\n b(p(e))\n );\n}, w = (e, t) => {\n var s, c;\n t && e.el && (((s = e.el) == null ? void 0 : s.nodeType) === 1 ? t.removeChild(e.el) : ((c = e.el) == null ? void 0 : c.nodeType) === 11 && W(e, t), delete e.el);\n}, W = (e, t) => {\n ((e == null ? void 0 : e.oldChildren) || (e == null ? void 0 : e.children) || []).forEach((s) => {\n var c, n;\n ((c = s.el) == null ? void 0 : c.nodeType) === 1 ? t.removeChild(s == null ? void 0 : s.el) : ((n = s.el) == null ? void 0 : n.nodeType) === 11 && W(s, t);\n });\n}, D = (e) => {\n I(e), q(e);\n}, Be = (e) => {\n I(e), q(e, e.el);\n}, q = (e, t) => {\n t || (t = N(e));\n const s = p(e);\n if (s.type) {\n const c = b(s), r = s.type === \"loop\" ? M(s, p(s)) : M(e, s);\n t && c && (r ? c.insertBefore(t, r) : c.appendChild(t), B());\n }\n}, M = (e, t) => {\n const s = t.children || [], n = s.indexOf(e) + 1, r = s.slice(n), u = ee(r), l = t.type || \"\";\n if (u)\n return u;\n if (!t.isRoot && P(l))\n return M(t, p(t));\n if (t.isRoot && t.afterElement)\n return t.afterElement;\n}, ee = (e) => e.reduce(\n (t, s) => {\n const c = s.type, n = s.el, r = c && P(c);\n return t || (r ? ee(s.children || []) : n && n.nodeType !== 11 ? n : t);\n },\n void 0\n), je = (e) => {\n const t = p(e), s = e.el;\n if (t.type && s)\n if (s.nodeType === 11)\n D(e);\n else {\n const c = b(t), n = N(e);\n c && c.replaceChild(n, s), B();\n }\n}, te = (e, t) => {\n C(e || {}).forEach(([s, c]) => {\n s.match(/^on/) && t.removeEventListener(\n J(s),\n c\n );\n });\n}, Ie = (e) => {\n var s;\n const t = e.el;\n if (e.type === \"text\") {\n qe(e);\n return;\n }\n if (t) {\n const { oldProps: c, props: n } = e;\n se(n, t, c), delete e.oldProps, e.tag === \"input\" && (t.value = String(((s = e == null ? void 0 : e.props) == null ? void 0 : s.value) || \"\"));\n }\n (e.children || []).forEach((c) => m(c)), Le(e);\n}, qe = (e) => {\n const t = e.el;\n t && (t.nodeValue = String(e.text));\n}, se = (e, t, s) => {\n const c = { ...s };\n C(e || {}).forEach(([n, r]) => {\n n === \"key\" || (n === \"innerHTML\" && typeof r == \"string\" ? t.innerHTML = r : z(n, r) ? Ge(\n r,\n z(n, c.style) ? c.style : {},\n t\n ) : he(n, r) ? r.value = t : n.match(/^on/) ? ze(\n t,\n n,\n r,\n c[n]\n ) : ve(t) && n === \"checked\" ? t.checked = !!r : ye(t) && n === \"value\" ? t.value = r : ie(t) && n === \"selected\" ? t.selected = !!r : Ce(r) && (y.value && n !== \"xmlns\" ? t.setAttributeNS(\n null,\n G(n),\n String(r)\n ) : t.setAttribute(\n G(n),\n String(r)\n ))), delete c[n];\n }), Y(c).forEach(\n (n) => t.removeAttribute(n)\n );\n}, N = (e) => {\n let t;\n const { type: s, tag: c, text: n, props: r, children: u = [] } = e, l = P(s);\n return c === \"svg\" && (y.value = String(r == null ? void 0 : r.xmlns)), l ? t = new DocumentFragment() : s === \"element\" && c ? t = y.value ? document.createElementNS(y.value, c) : document.createElement(c) : s === \"text\" && v(n) ? t = document.createTextNode(String(n)) : t = document.createElement(\"e\"), _e(u, t), se(r, t), e.el = t, Ae(e), c === \"svg\" && (y.value = \"\"), t;\n}, _e = (e, t) => {\n const s = e.reduce(\n (c, n) => (n.type && c.appendChild(N(n)), c),\n new DocumentFragment()\n );\n t && s.hasChildNodes() && t.appendChild(s);\n}, ze = (e, t, s, c) => {\n const n = J(t);\n c !== s && (c && e.removeEventListener(n, c), s && e.addEventListener(n, s));\n}, Ge = (e, t, s) => {\n const c = { ...t }, n = s == null ? void 0 : s.style;\n n && (C(e).forEach(([r, u]) => {\n n[r] = u, delete c[r];\n }), C(c).forEach(\n ([r]) => n[r] = \"\"\n ));\n}, b = (e) => {\n const t = P(e.type);\n return e.isRoot && t ? e.wrapElement : t ? b(p(e)) : e.el;\n}, F = (e, t) => Xe(\n e,\n ae[ke(e)](e, t),\n t\n), Xe = (e, t, s) => {\n const c = Je(e, t, s), n = [\n c,\n t,\n s\n ], r = He(...n);\n return c.children = Ye(...n), c.needRerender = r, $e(c, s, r), c;\n}, $e = (e, t, s) => {\n s !== \"A\" && t && (e.el = t.el), s && [\"D\", \"R\", \"SR\"].includes(s) && (t != null && t.compKey && (Q(t), j(t)), e.oldChildren = t == null ? void 0 : t.children), e.oldProps = t == null ? void 0 : t.props;\n}, He = (e, t, s) => {\n const c = s && s.type, n = H(e), u = !!e.getParent && p(e).type, l = i(e), h = u === \"loop\" && v(l), d = e.type === \"text\" && t && e.text === (s == null ? void 0 : s.text);\n let f;\n return n ? f = \"D\" : d ? f = \"N\" : c ? t ? f = h ? \"SU\" : \"U\" : f = h ? \"SR\" : \"R\" : f = \"A\", f;\n}, Je = (e, t, s) => T(e) ? t && s ? Re(s, e) : e.resolve() : e, Ye = (e, t, s) => t && s ? Ve(e, s) : Ze(e), Ze = (e) => (e.children || []).map(\n (t) => S(F(t), { getParent: () => e })\n), Ve = (e, t) => e.type === \"loop\" && v(i((e.children || [])[0])) ? Ke(e, t) : (e.children || []).map(\n (s, c) => S(F(s, (t.children || [])[c]), {\n getParent: () => e\n })\n), Ke = (e, t) => {\n const [s, c] = ge(\n e,\n t\n );\n return c.map((n) => {\n const r = n.el;\n r != null && r.parentNode && r.parentNode.removeChild(r);\n }), s;\n}, ge = (e, t) => {\n const s = [...e.children || []], c = [...t.children || []];\n return [s.map((r) => {\n const u = me(r, c), l = F(r, u);\n return u && c.splice(c.indexOf(u), 1), l.getParent = () => e, l;\n }), c];\n}, me = (e, t) => t.find(\n (s) => i(s) === i(e)\n), rt = (e, t = () => []) => {\n o.get(R()).upR.push(() => X(e, t)), X(e, t);\n}, we = () => {\n var t;\n const e = (t = o.get(R())) == null ? void 0 : t.upR;\n e != null && e.length && e.forEach((s) => s());\n}, ce = (e, ...t) => ({\n type: \"fragment\",\n children: t\n}), ut = (e, t, ...s) => {\n const c = { value: void 0 }, n = t || {}, r = oe(c, s), u = tt(e, n, r);\n return T(u) || (c.value = u), u;\n}, ot = (e) => (t, s) => e, ne = (e, t, s, c) => {\n var f;\n O.value = !0;\n const n = re(e, t, s), r = F(n, c), { isRoot: u, getParent: l, wrapElement: h, afterElement: d } = c;\n if (r.getParent = l, !u && l) {\n const _ = ((f = l()) == null ? void 0 : f.children) || [], le = _.indexOf(c);\n _.splice(le, 1, r);\n } else\n r.isRoot = !0, r.wrapElement = h, r.afterElement = d;\n O.value = !1, m(r);\n}, re = (e, t, s) => ({ tagName: e.name, ctor: e, props: t, children: s, resolve: (u = t) => {\n Ne(u);\n const h = e(t, s)(Pe(u), t, s), d = We(\n h,\n u,\n e,\n t,\n s\n ), f = d;\n return V(\n u,\n () => ne(e, t, s, f)\n ), Z(u, \"vd\").value = d, d;\n} }), We = (e, t, s, c, n) => {\n const r = e(c);\n return ue(\n r,\n t,\n s,\n c,\n n,\n De(e, t, s, c, n)\n ), r;\n}, De = (e, t, s, c, n) => {\n const r = () => et(e, t, s, c, n, r);\n return r;\n}, et = (e, t, s, c, n, r) => {\n Se(t), we();\n const u = e(c);\n return V(\n t,\n () => ne(s, c, n, u)\n ), ue(u, t, s, c, n, r), Z(t, \"vd\").value = u, u;\n}, ue = (e, t, s, c, n, r) => {\n S(e, {\n compProps: c,\n compChild: n,\n ctor: s,\n tagName: s.name,\n compKey: t,\n reRender: r\n });\n}, tt = (e, t, s) => {\n if ($(e))\n return ce(t, ...s);\n if (T(e)) {\n const c = re(e, t, s);\n return O.value ? c : c.resolve();\n }\n return {\n type: \"element\",\n tag: e,\n props: t,\n children: s\n };\n}, oe = (e, t) => t.map(\n (s) => S(st(s), { getParent: () => e.value })\n), st = (e) => {\n if (e == null || e === !1)\n return { type: null };\n if (Array.isArray(e)) {\n const t = { value: void 0 }, c = {\n type: \"loop\",\n children: oe(t, e)\n };\n return t.value = c, c;\n } else if (typeof e == \"string\" || typeof e == \"number\")\n return { type: \"text\", text: e };\n return e;\n}, lt = (e) => ({ value: e }), ft = () => Promise.resolve();\nexport {\n ce as Fragment,\n ut as h,\n ot as mount,\n ct as mountCallback,\n ft as nextTick,\n lt as ref,\n nt as render,\n rt as updateCallback\n};\n//# sourceMappingURL=lithent.mjs.map\n","import { mountCallback as a, updateCallback as p } from \"lithent\";\nconst v = (r, t) => {\n let e = r;\n return {\n get value() {\n return e;\n },\n get v() {\n return e;\n },\n set value(n) {\n e = n, t();\n },\n set v(n) {\n e = n, t();\n }\n };\n}, f = (r) => {\n let t = r;\n return {\n get value() {\n return t();\n },\n get v() {\n return t();\n },\n set value(e) {\n throw new Error(\"You can't change 'computed'\");\n },\n set v(e) {\n throw new Error(\"You can't change 'computed'\");\n }\n };\n}, m = (r, t = () => {\n}, e = () => []) => {\n a(() => (r(), t)), p(() => (t && t(), r), e);\n}, l = /* @__PURE__ */ new Map(), u = {}, i = (r) => {\n const t = Symbol();\n return l.set(t, r), (e) => {\n var n;\n return (n = u[t]) != null || (u[t] = []), u[t].push(e), h(t);\n };\n}, h = (r) => new Proxy(l.get(r), {\n get(t, e) {\n return t[e];\n },\n set(t, e, n) {\n t[e] = n;\n const s = u[r], c = [];\n return s.forEach((o) => {\n o() || c.push(o);\n }), c.forEach(\n (o) => s.splice(s.indexOf(o), 1)\n ), !0;\n }\n});\nexport {\n f as computed,\n m as effect,\n v as state,\n i as store\n};\n//# sourceMappingURL=lithentHelper.mjs.map\n","// example.jsx\nimport {\n h,\n Fragment,\n render,\n ref,\n mountCallback,\n updateCallback,\n mount,\n} from 'lithent';\nimport { state, computed, effect, store } from 'lithent/helper';\n\n// This is the \"mount\" function.\n// This function is only executed on mount, and on update, only updates `props` and then executes the internal return function.\n// childen is passed as the second argument.\nconst ChildComponent = mount<{ parentValue: number }>(\n (renew, props, children) => {\n // The value is used as a \"getter\" to make it easy to get and write to in the higher-order functions it returns\n const count = state<number>(1, renew);\n const text = state<string>(\n '\"destructuring\" the \"props\" value directly from the mount function will cause referencing issues, so if you want to use it, you need to \"destructuring\" it from the internal function (updater).',\n renew\n );\n const getParentValue = () => props.parentValue;\n const parentValueFromMount = props.parentValue;\n const summ = computed<number>(\n () => count.v + notRefValue + props.parentValue\n );\n\n const localStore = store<{ text: string; count: number }>({\n text: 's',\n count: 0,\n })(renew);\n /*\n // To share a store, make it externally and use `asign`.\n const asignStore = store<{ text: string; count: number }>({ text: 's', count: 0 });\n\n const sharedStore = asignStore(nenew);\n */\n\n // Even if you don't use a ref, the private value is always maintained as a regular variable.\n let notRefValue = props.parentValue;\n\n // Ref is only used to reference the DOM.\n const domRef = ref(null);\n\n const increase = () => {\n count.v = count.v + 1;\n notRefValue += 1;\n };\n\n const handleInputChane = (event: InputEvent) => {\n text.v = (event.target as HTMLInputElement).value;\n };\n\n const localStoreUpdate = () => {\n localStore.count += 1;\n localStore.text += '1';\n };\n\n const handleMounted = () => {\n console.log('MOUNTED', domRef);\n\n return () => console.log('UNMOUNT');\n };\n const handleUpdated = () => {\n console.log('UPDATE - parentValue');\n\n return () => console.log('UPDATED');\n };\n\n mountCallback(handleMounted);\n updateCallback(handleUpdated, () => [props.parentValue]); // Only Defs Updated (using a closure to update a value)\n\n // Behaves like `react`'s `useEffect`\n effect(\n () => console.log('INJECT'),\n () => console.log('CLEAN_UP'),\n () => [count.v]\n );\n\n // Wrap in a function and return (using a closure to hold the value)\n // This is the \"update\" function.\n return ({ parentValue }) => (\n <Fragment>\n {/* Note that the event is onInput (we use the native event name to avoid confusion). */}\n <div>\n <textarea\n value={text.v}\n onInput={handleInputChane}\n style={{ width: '300px', height: '100px' }}\n />\n </div>\n <div>{text.v}</div>\n <div>\n <div style={{ color: 'blue' }}>\n parentValueFromRef: {props.parentValue} (working)\n </div>\n <div style={{ color: 'blue' }}>\n parentValueFromFunction: {getParentValue()} (working)\n </div>\n <div style={{ color: 'blue' }}>\n parentValueFromUpdaterDestructuring: {parentValue} (working)\n </div>\n <div style={{ color: 'red' }}>\n parentValueFromMounterDestructuring: {parentValueFromMount} (not\n working)\n </div>\n </div>\n <div>\n <div ref={domRef}>count: {count.v}</div>\n <div>sum: {count.v + notRefValue + props.parentValue}</div>\n <div>sum(computed): {summ.v}</div>\n {/* It doesn't pull it out from under the reference, it uses the value directly, so you can just use it. */}\n <div>notRefValue: {notRefValue}</div>\n <div>localStore(text): {localStore.text}</div>\n <div>localStore(count): {localStore.count}</div>\n </div>\n <button onClick={increase}>Increase</button>\n <button onClick={localStoreUpdate}>localStoreUpdate</button>\n {children}\n </Fragment>\n );\n }\n);\n\nconst Root = mount(renew => {\n const parentNumber = state<number>(7, renew);\n\n const increaseParent = () => {\n parentNumber.v = parentNumber.v + 1;\n };\n\n const decreaseParent = () => {\n parentNumber.v = parentNumber.v - 1;\n };\n\n return () => (\n <Fragment>\n <ChildComponent parentValue={parentNumber.v}>\n <button onClick={increaseParent}>Increase - Parent</button>\n </ChildComponent>\n <button onClick={decreaseParent}>Decrease - Parent</button>\n </Fragment>\n );\n});\nconst root = <Root />;\n\nrender(root, document.getElementById('root'));\n"],"names":["relList","link","processPreload","mutations","mutation","node","getFetchOpts","script","fetchOpts","k","E","fe","de","s","c","pe","v","i","P","T","$","ce","H","z","he","ie","ye","ve","Ce","ke","ae","Re","n","Ee","xe","J","G","C","Y","S","x","A","y","a","O","o","Pe","t","Te","R","Z","V","be","Se","Ne","K","r","u","Q","Ue","g","L","Oe","Ae","ct","X","Me","Le","nt","N","j","Qe","m","q","I","je","Ie","D","Be","te","w","b","W","M","ee","l","qe","se","Ge","ze","_e","F","Xe","Je","He","Ye","$e","h","d","f","Ve","Ze","Ke","ge","me","rt","we","e","ut","oe","tt","ot","ne","re","_","le","We","ue","De","et","st","lt","p","ChildComponent","mount","renew","props","children","count","state","text","getParentValue","parentValueFromMount","summ","computed","notRefValue","localStore","store","domRef","ref","increase","handleInputChane","event","localStoreUpdate","handleMounted","handleUpdated","mountCallback","updateCallback","effect","parentValue","Fragment","Root","parentNumber","increaseParent","decreaseParent","root","render"],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>lithent</title>
7
- <script type="module" crossorigin src="/assets/index.1e9792b7.js"></script>
7
+ <script type="module" crossorigin src="/assets/index.48a8de86.js"></script>
8
8
  </head>
9
9
  <body>
10
10
  <section id="root"></section>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lithent",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "An extensible virtual DOM library for lightweight use in a variety of environments.",
5
5
  "packageManager": "pnpm@7.6.0",
6
6
  "main": "./dist/lithent.umd.js",
package/src/diff.ts CHANGED
@@ -10,6 +10,7 @@ import {
10
10
  } from '@/utils/predicator';
11
11
 
12
12
  import { runUnmountQueueFromWDom } from '@/hook/unmount';
13
+ import { assign } from '@/utils';
13
14
 
14
15
  export const makeNewWDomTree = (
15
16
  newWDom: WDom | TagFunctionResolver,
@@ -118,33 +119,18 @@ const remakeChildrenForDiff = (
118
119
  : remakeChildrenForAdd(newWDom);
119
120
 
120
121
  const remakeChildrenForAdd = (newWDom: WDom) =>
121
- (newWDom.children || []).map((item: WDom) => {
122
- const childItem = makeNewWDomTree(item);
123
-
124
- childItem.getParent = () => newWDom;
125
-
126
- return childItem;
127
- });
128
-
129
- const remakeChildrenForUpdate = (newWDom: WDom, originalWDom: WDom) => {
130
- if (
131
- newWDom.type === 'loop' &&
132
- checkExisty(getKey((newWDom.children || [])[0]))
133
- ) {
134
- return remakeChildrenForLoopUpdate(newWDom, originalWDom);
135
- }
136
-
137
- return (newWDom.children || []).map((item: WDom, index: number) => {
138
- const childItem = makeNewWDomTree(
139
- item,
140
- (originalWDom.children || [])[index]
141
- );
142
-
143
- childItem.getParent = () => newWDom;
122
+ (newWDom.children || []).map((item: WDom) =>
123
+ assign(makeNewWDomTree(item), { getParent: () => newWDom })
124
+ );
144
125
 
145
- return childItem;
146
- });
147
- };
126
+ const remakeChildrenForUpdate = (newWDom: WDom, originalWDom: WDom) =>
127
+ newWDom.type === 'loop' && checkExisty(getKey((newWDom.children || [])[0]))
128
+ ? remakeChildrenForLoopUpdate(newWDom, originalWDom)
129
+ : (newWDom.children || []).map((item: WDom, index: number) =>
130
+ assign(makeNewWDomTree(item, (originalWDom.children || [])[index]), {
131
+ getParent: () => newWDom,
132
+ })
133
+ );
148
134
 
149
135
  const remakeChildrenForLoopUpdate = (newWDom: WDom, originalWDom: WDom) => {
150
136
  const [remakedChildren, unUsedChildren] = diffLoopChildren(
package/src/wDom.ts CHANGED
@@ -216,13 +216,9 @@ const remakeChildren = (
216
216
  nodeParentPointer: NodePointer,
217
217
  children: MiddleStateWDomChildren
218
218
  ): WDom[] =>
219
- children.map((item: MiddleStateWDom) => {
220
- const childItem = makeChildrenItem(item);
221
-
222
- childItem.getParent = () => nodeParentPointer.value;
223
-
224
- return childItem;
225
- });
219
+ children.map((item: MiddleStateWDom) =>
220
+ assign(makeChildrenItem(item), { getParent: () => nodeParentPointer.value })
221
+ );
226
222
 
227
223
  const makeChildrenItem = (item: MiddleStateWDom): WDom => {
228
224
  if (item === null || item === undefined || item === false) {