diff --git a/packages/core/package.json b/packages/core/package.json index ce393916..c44fae4e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@dark-engine/core", - "version": "0.8.4", + "version": "0.8.5", "description": "Dark is lightweight (10 Kb gzipped) component-and-hook-based UI rendering engine for javascript apps without dependencies and written in Typescript 💫", "author": "AlexPlex", "license": "MIT", diff --git a/packages/platform-browser/package.json b/packages/platform-browser/package.json index 643a5e54..6f5891a4 100644 --- a/packages/platform-browser/package.json +++ b/packages/platform-browser/package.json @@ -1,6 +1,6 @@ { "name": "@dark-engine/platform-browser", - "version": "0.8.4", + "version": "0.8.5", "description": "Dark is lightweight (10 Kb gzipped) component-and-hook-based UI rendering engine for javascript apps without dependencies and written in Typescript 💫", "author": "AlexPlex", "license": "MIT", diff --git a/packages/platform-browser/umd/dark-platform-browser.development.js b/packages/platform-browser/umd/dark-platform-browser.development.js index 441eb4b6..b8ef7727 100644 --- a/packages/platform-browser/umd/dark-platform-browser.development.js +++ b/packages/platform-browser/umd/dark-platform-browser.development.js @@ -120,6 +120,7 @@ var _a; var attrBlackListMap = (_a = {}, _a[_dark_engine_core__WEBPACK_IMPORTED_MODULE_0__.ATTR_KEY] = true, _a[_dark_engine_core__WEBPACK_IMPORTED_MODULE_0__.ATTR_REF] = true, + _a.void = true, _a); var fragmentsMap = new Map(); var trackUpdate = null; @@ -202,13 +203,13 @@ function addAttributes(element, vNode) { } } else if (!(0,_dark_engine_core__WEBPACK_IMPORTED_MODULE_0__.detectIsUndefined)(attrValue) && !attrBlackListMap[attrName]) { - upgradeInputAttributes({ + var stopAttrsMap = upgradeInputAttributes({ tagName: vNode.name, value: attrValue, attrName: attrName, element: element, }); - element.setAttribute(attrName, attrValue); + !stopAttrsMap[attrName] && element.setAttribute(attrName, attrValue); } } } @@ -243,13 +244,13 @@ function updateAttributes(element, vNode, nextVNode) { } } else if (!attrBlackListMap[attrName] && prevAttrValue !== nextAttrValue) { - upgradeInputAttributes({ + var stopAttrsMap = upgradeInputAttributes({ tagName: nextVNode.name, value: nextAttrValue, attrName: attrName, element: element, }); - element.setAttribute(attrName, nextAttrValue); + !stopAttrsMap[attrName] && element.setAttribute(attrName, nextAttrValue); } } else { @@ -265,28 +266,40 @@ function updateAttributes(element, vNode, nextVNode) { finally { if (e_2) throw e_2.error; } } } +var INPUT_STOP_ATTRS_MAP = { + value: true, + checked: true, +}; +var TEXTAREA_STOP_ATTRS_MAP = { + value: true, +}; +var OPTIONS_STOP_ATTRS_MAP = { + selected: true, +}; +var DEFAULT_STOP_ATTRS_MAP = {}; function upgradeInputAttributes(options) { var tagName = options.tagName, element = options.element, attrName = options.attrName, value = options.value; var map = { input: function () { - var attrsMap = { - value: true, - checked: true, - }; - if (attrsMap[attrName]) { + if (INPUT_STOP_ATTRS_MAP[attrName]) { + element[attrName] = value; + } + return INPUT_STOP_ATTRS_MAP; + }, + textarea: function () { + if (TEXTAREA_STOP_ATTRS_MAP[attrName]) { element[attrName] = value; } + return TEXTAREA_STOP_ATTRS_MAP; }, option: function () { - var attrsMap = { - selected: true, - }; - if (attrsMap[attrName]) { + if (OPTIONS_STOP_ATTRS_MAP[attrName]) { element[attrName] = value; } + return OPTIONS_STOP_ATTRS_MAP; }, }; - map[tagName] && map[tagName](); + return map[tagName] ? map[tagName]() : DEFAULT_STOP_ATTRS_MAP; } function getParentFiberWithNativeElement(fiber) { var nextFiber = fiber; diff --git a/packages/platform-browser/umd/dark-platform-browser.development.js.map b/packages/platform-browser/umd/dark-platform-browser.development.js.map index 2dc0456d..e603cec5 100644 --- a/packages/platform-browser/umd/dark-platform-browser.development.js.map +++ b/packages/platform-browser/umd/dark-platform-browser.development.js.map @@ -1 +1 @@ -{"version":3,"file":"dark-platform-browser.development.js","mappings":"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","sources":["webpack://DarkPlatformBrowser/webpack/universalModuleDefinition","webpack://DarkPlatformBrowser/./src/create-root/create-root.tsx","webpack://DarkPlatformBrowser/./src/create-root/index.ts","webpack://DarkPlatformBrowser/./src/dom/dom.ts","webpack://DarkPlatformBrowser/./src/dom/index.ts","webpack://DarkPlatformBrowser/./src/dom/types.ts","webpack://DarkPlatformBrowser/./src/events/events.ts","webpack://DarkPlatformBrowser/./src/events/index.ts","webpack://DarkPlatformBrowser/./src/portal/index.ts","webpack://DarkPlatformBrowser/./src/portal/portal.tsx","webpack://DarkPlatformBrowser/./src/render/index.ts","webpack://DarkPlatformBrowser/./src/render/render.ts","webpack://DarkPlatformBrowser/./src/scheduler/index.ts","webpack://DarkPlatformBrowser/./src/scheduler/scheduler.ts","webpack://DarkPlatformBrowser/./src/use-style/index.ts","webpack://DarkPlatformBrowser/./src/use-style/use-style.ts","webpack://DarkPlatformBrowser/external umd {\"root\":\"DarkCore\",\"commonjs2\":\"@dark-engine/core\",\"commonjs\":\"@dark-engine/core\",\"amd\":\"@dark-engine/core\"}","webpack://DarkPlatformBrowser/webpack/bootstrap","webpack://DarkPlatformBrowser/webpack/runtime/compat get default export","webpack://DarkPlatformBrowser/webpack/runtime/define property getters","webpack://DarkPlatformBrowser/webpack/runtime/hasOwnProperty shorthand","webpack://DarkPlatformBrowser/webpack/runtime/make namespace object","webpack://DarkPlatformBrowser/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@dark-engine/core\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"DarkPlatformBrowser\", [\"@dark-engine/core\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DarkPlatformBrowser\"] = factory(require(\"@dark-engine/core\"));\n\telse\n\t\troot[\"DarkPlatformBrowser\"] = factory(root[\"DarkCore\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE__dark_engine_core__) => {\nreturn ","import { type DarkElement, unmountRoot } from '@dark-engine/core';\r\nimport { render, roots } from '../render';\r\n\r\nfunction createRoot(container: Element) {\r\n return {\r\n render: (element: DarkElement) => render(element, container),\r\n unmount: () => {\r\n const rootId = roots.get(container);\r\n\r\n unmountRoot(rootId, () => {\r\n roots.delete(container);\r\n container.innerHTML = '';\r\n });\r\n },\r\n };\r\n}\r\n\r\nexport { createRoot };\r\n","export * from './create-root';\r\n","import {\r\n type Fiber,\r\n type VirtualNode,\r\n type TagVirtualNode,\r\n type TextVirtualNode,\r\n type CommentVirtualNode,\r\n type MutableRef,\r\n ATTR_KEY,\r\n ATTR_REF,\r\n EffectTag,\r\n detectIsFunction,\r\n detectIsUndefined,\r\n NodeType,\r\n detectIsVirtualNode,\r\n detectIsTagVirtualNode,\r\n detectIsTextVirtualNode,\r\n detectIsRef,\r\n walkFiber,\r\n} from '@dark-engine/core';\r\nimport { detectIsPortal, getPortalContainer } from '../portal';\r\nimport { delegateEvent, detectIsEvent, getEventName } from '../events';\r\nimport type { DOMElement, DOMFragment } from './types';\r\n\r\nconst attrBlackListMap = {\r\n [ATTR_KEY]: true,\r\n [ATTR_REF]: true,\r\n};\r\n\r\nlet fragmentsMap: Map = new Map();\r\n\r\nlet trackUpdate: (nativeElement: Element) => void = null;\r\n\r\nfunction createNativeElement(vNode: VirtualNode): DOMElement {\r\n const map = {\r\n [NodeType.TAG]: (vNode: VirtualNode) => {\r\n const tagNode = vNode as TagVirtualNode;\r\n const node = detectIsSvgElement(tagNode.name)\r\n ? document.createElementNS('http://www.w3.org/2000/svg', tagNode.name)\r\n : document.createElement(tagNode.name);\r\n\r\n return node;\r\n },\r\n [NodeType.TEXT]: (vNode: VirtualNode) => {\r\n const textNode = vNode as TextVirtualNode;\r\n const node = document.createTextNode(textNode.value);\r\n\r\n return node;\r\n },\r\n [NodeType.COMMENT]: (vNode: VirtualNode) => {\r\n const commentNode = vNode as CommentVirtualNode;\r\n const node = document.createComment(commentNode.value);\r\n\r\n return node;\r\n },\r\n };\r\n\r\n return map[vNode.type](vNode);\r\n}\r\n\r\nfunction detectIsSvgElement(tagName: string) {\r\n const tagMap = {\r\n svg: true,\r\n circle: true,\r\n ellipse: true,\r\n g: true,\r\n text: true,\r\n tspan: true,\r\n textPath: true,\r\n path: true,\r\n polygon: true,\r\n polyline: true,\r\n line: true,\r\n rect: true,\r\n use: true,\r\n image: true,\r\n symbol: true,\r\n defs: true,\r\n linearGradient: true,\r\n radialGradient: true,\r\n stop: true,\r\n clipPath: true,\r\n pattern: true,\r\n mask: true,\r\n marker: true,\r\n };\r\n\r\n return Boolean(tagMap[tagName]);\r\n}\r\n\r\nfunction applyRef(ref: MutableRef, element: Element) {\r\n if (detectIsRef(ref)) {\r\n ref.current = element;\r\n }\r\n}\r\n\r\nfunction addAttributes(element: Element, vNode: VirtualNode) {\r\n if (!detectIsTagVirtualNode(vNode)) return;\r\n const attrNames = Object.keys(vNode.attrs);\r\n\r\n for (const attrName of attrNames) {\r\n const attrValue = vNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(attrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (detectIsFunction(attrValue)) {\r\n if (detectIsEvent(attrName)) {\r\n delegateEvent({\r\n target: element,\r\n handler: attrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!detectIsUndefined(attrValue) && !attrBlackListMap[attrName]) {\r\n upgradeInputAttributes({\r\n tagName: vNode.name,\r\n value: attrValue,\r\n attrName,\r\n element,\r\n });\r\n\r\n element.setAttribute(attrName, attrValue);\r\n }\r\n }\r\n}\r\n\r\nfunction updateAttributes(element: Element, vNode: TagVirtualNode, nextVNode: TagVirtualNode) {\r\n const attrNames = new Set([...Object.keys(vNode.attrs), ...Object.keys(nextVNode.attrs)]);\r\n\r\n for (const attrName of attrNames) {\r\n const prevAttrValue = vNode.attrs[attrName];\r\n const nextAttrValue = nextVNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(prevAttrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (!detectIsUndefined(nextAttrValue)) {\r\n if (detectIsFunction(prevAttrValue)) {\r\n if (detectIsEvent(attrName) && prevAttrValue !== nextAttrValue) {\r\n delegateEvent({\r\n target: element,\r\n handler: nextAttrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!attrBlackListMap[attrName] && prevAttrValue !== nextAttrValue) {\r\n upgradeInputAttributes({\r\n tagName: nextVNode.name,\r\n value: nextAttrValue,\r\n attrName,\r\n element,\r\n });\r\n\r\n element.setAttribute(attrName, nextAttrValue);\r\n }\r\n } else {\r\n element.removeAttribute(attrName);\r\n }\r\n }\r\n}\r\n\r\ntype UpgradeInputAttributesOptions = {\r\n tagName: string;\r\n element: Element;\r\n attrName: string;\r\n value: string | boolean;\r\n};\r\n\r\nfunction upgradeInputAttributes(options: UpgradeInputAttributesOptions) {\r\n const { tagName, element, attrName, value } = options;\r\n const map = {\r\n input: () => {\r\n const attrsMap = {\r\n value: true,\r\n checked: true,\r\n };\r\n\r\n if (attrsMap[attrName]) {\r\n element[attrName] = value;\r\n }\r\n },\r\n option: () => {\r\n const attrsMap = {\r\n selected: true,\r\n };\r\n\r\n if (attrsMap[attrName]) {\r\n element[attrName] = value;\r\n }\r\n },\r\n };\r\n\r\n map[tagName] && map[tagName]();\r\n}\r\n\r\nfunction getParentFiberWithNativeElement(fiber: Fiber): Fiber {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n nextFiber = nextFiber.parent;\r\n\r\n if (detectIsPortal(nextFiber.instance)) {\r\n nextFiber.nativeElement = getPortalContainer(nextFiber.instance);\r\n }\r\n\r\n if (nextFiber.nativeElement) return nextFiber;\r\n }\r\n\r\n return nextFiber;\r\n}\r\n\r\nfunction getNodeOnTheRight(fiber: Fiber, parentElement: Element) {\r\n let node: Element = null;\r\n\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, stop, resetIsDeepWalking }) => {\r\n if (nextFiber.nativeElement && nextFiber.nativeElement.parentElement === parentElement) {\r\n node = nextFiber.nativeElement;\r\n\r\n return stop();\r\n }\r\n\r\n if (!nextFiber.mountedToHost) {\r\n return resetIsDeepWalking();\r\n }\r\n },\r\n });\r\n\r\n return node;\r\n}\r\n\r\nfunction getChildIndex(fiber: Fiber, parentNativeElement: Element) {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (nextFiber?.parent?.nativeElement === parentNativeElement) {\r\n return nextFiber.idx;\r\n }\r\n\r\n nextFiber = nextFiber.parent;\r\n }\r\n\r\n return -1;\r\n}\r\n\r\nfunction commitCreation(fiber: Fiber) {\r\n const parentFiber = getParentFiberWithNativeElement(fiber);\r\n const parentNativeElement = parentFiber.nativeElement;\r\n const childNodes = parentNativeElement.childNodes;\r\n\r\n const append = () => {\r\n const { fragment } =\r\n fragmentsMap.get(parentNativeElement) ||\r\n ({\r\n fragment: document.createDocumentFragment(),\r\n callback: () => {},\r\n } as DOMFragment);\r\n\r\n fragmentsMap.set(parentNativeElement, {\r\n fragment,\r\n callback: () => {\r\n parentNativeElement.appendChild(fragment);\r\n },\r\n });\r\n fragment.appendChild(fiber.nativeElement);\r\n fiber.markMountedToHost();\r\n };\r\n\r\n const insert = () => {\r\n parentNativeElement.insertBefore(fiber.nativeElement, getNodeOnTheRight(fiber, parentNativeElement));\r\n fiber.markMountedToHost();\r\n };\r\n\r\n if (childNodes.length === 0 || getChildIndex(fiber, parentNativeElement) > childNodes.length - 1) {\r\n append();\r\n } else {\r\n insert();\r\n }\r\n\r\n addAttributes(fiber.nativeElement, fiber.instance as VirtualNode);\r\n}\r\n\r\nfunction commitUpdate(nativeElement: Element, instance: VirtualNode, nextInstance: VirtualNode) {\r\n if (\r\n detectIsTextVirtualNode(instance) &&\r\n detectIsTextVirtualNode(nextInstance) &&\r\n instance.value !== nextInstance.value\r\n ) {\r\n return (nativeElement.textContent = nextInstance.value);\r\n }\r\n\r\n if (detectIsTagVirtualNode(instance) && detectIsTagVirtualNode(nextInstance)) {\r\n return updateAttributes(nativeElement, instance, nextInstance);\r\n }\r\n}\r\n\r\nfunction commitDeletion(fiber: Fiber) {\r\n const parentFiber = getParentFiberWithNativeElement(fiber);\r\n\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, isReturn, resetIsDeepWalking, stop }) => {\r\n if (nextFiber === fiber.nextSibling || nextFiber === fiber.parent) {\r\n return stop();\r\n }\r\n\r\n if (!isReturn && nextFiber.nativeElement) {\r\n !detectIsPortal(nextFiber.instance) && parentFiber.nativeElement.removeChild(nextFiber.nativeElement);\r\n\r\n return resetIsDeepWalking();\r\n }\r\n },\r\n });\r\n}\r\n\r\nfunction applyCommit(fiber: Fiber) {\r\n const map: Record void> = {\r\n [EffectTag.CREATE]: () => {\r\n if (fiber.nativeElement === null) return;\r\n trackUpdate && trackUpdate(fiber.nativeElement);\r\n commitCreation(fiber);\r\n },\r\n [EffectTag.UPDATE]: () => {\r\n if (\r\n fiber.nativeElement === null ||\r\n !detectIsVirtualNode(fiber.alternate.instance) ||\r\n !detectIsVirtualNode(fiber.instance)\r\n ) {\r\n return;\r\n }\r\n trackUpdate && trackUpdate(fiber.nativeElement);\r\n commitUpdate(fiber.nativeElement, fiber.alternate.instance, fiber.instance);\r\n },\r\n [EffectTag.DELETE]: () => commitDeletion(fiber),\r\n [EffectTag.SKIP]: () => {},\r\n };\r\n\r\n map[fiber.effectTag]();\r\n}\r\n\r\nfunction finishCommitWork() {\r\n for (const { callback } of fragmentsMap.values()) {\r\n callback();\r\n }\r\n\r\n fragmentsMap = new Map();\r\n}\r\n\r\nfunction setTrackUpdate(fn: typeof trackUpdate) {\r\n trackUpdate = fn;\r\n}\r\n\r\nexport { createNativeElement, applyCommit, finishCommitWork, setTrackUpdate };\r\n","export * from './dom';\r\nexport * from './types';\r\n","export type DOMElement = HTMLElement | SVGElement | Text | Comment;\r\n\r\nexport type DOMFragment = {\r\n fragment: DocumentFragment;\r\n callback: () => void;\r\n};\r\n","import { detectIsFunction, eventsStore } from '@dark-engine/core';\r\n\r\ntype BrowserEventConstructor = (type: string, event: Event) => void;\r\n\r\nclass SyntheticEvent {\r\n public type = '';\r\n public sourceEvent: E = null;\r\n public target: T = null;\r\n private propagation = true;\r\n\r\n constructor(options: Pick, 'sourceEvent' | 'target'>) {\r\n this.type = options.sourceEvent.type;\r\n this.sourceEvent = options.sourceEvent;\r\n this.target = options.target;\r\n }\r\n\r\n public stopPropagation() {\r\n this.propagation = false;\r\n this.sourceEvent.stopPropagation();\r\n }\r\n\r\n public preventDefault() {\r\n this.sourceEvent.preventDefault();\r\n }\r\n\r\n public getPropagation() {\r\n return this.propagation;\r\n }\r\n}\r\n\r\ntype DelegateEventOptions = {\r\n target: Element;\r\n eventName: string;\r\n handler: (e: Event) => void;\r\n};\r\n\r\nfunction delegateEvent(options: DelegateEventOptions) {\r\n const { target, eventName, handler } = options;\r\n const eventsMap = eventsStore.get();\r\n const handlerMap = eventsMap.get(eventName);\r\n\r\n if (!handlerMap) {\r\n const rootHandler = (event: Event) => {\r\n const fireEvent = eventsMap.get(eventName).get(event.target);\r\n const target = event.target as Element;\r\n let syntheticEvent: SyntheticEvent = null;\r\n\r\n if (detectIsFunction(fireEvent)) {\r\n syntheticEvent = new SyntheticEvent({\r\n sourceEvent: event,\r\n target,\r\n });\r\n fireEvent(syntheticEvent);\r\n }\r\n\r\n if (syntheticEvent ? syntheticEvent.getPropagation() : target.parentElement) {\r\n target.parentElement.dispatchEvent(new (event.constructor as BrowserEventConstructor)(event.type, event));\r\n }\r\n };\r\n\r\n eventsMap.set(eventName, new WeakMap([[target, handler]]));\r\n document.addEventListener(eventName, rootHandler, true);\r\n eventsStore.addUnsubscriber(() => document.removeEventListener(eventName, rootHandler, true));\r\n } else {\r\n handlerMap.set(target, handler);\r\n }\r\n}\r\n\r\nconst detectIsEvent = (attrName: string) => attrName.startsWith('on');\r\n\r\nconst getEventName = (attrName: string) => attrName.slice(2, attrName.length).toLowerCase();\r\n\r\nexport { SyntheticEvent, delegateEvent, detectIsEvent, getEventName };\r\n","export * from './events';\r\n","export * from './portal';\r\n","import {\r\n type Fiber,\r\n type DarkElement,\r\n type ComponentFactory,\r\n createComponent,\r\n detectIsComponentFactory,\r\n useMemo,\r\n} from '@dark-engine/core';\r\n\r\nconst $$portal = Symbol('portal');\r\n\r\nfunction createPortal(slot: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n throw new Error(`[Dark]: createPortal receives only Element as container!`);\r\n }\r\n\r\n return Portal({ [$$portal]: container, slot });\r\n}\r\n\r\ntype PortalProps = {\r\n [$$portal]: Element;\r\n slot: DarkElement;\r\n};\r\n\r\nconst Portal = createComponent(\r\n ({ slot, ...rest }) => {\r\n useMemo(() => (rest[$$portal].innerHTML = ''), []);\r\n\r\n return slot;\r\n },\r\n { token: $$portal },\r\n);\r\n\r\nconst detectIsPortal = (factory: unknown): factory is ComponentFactory =>\r\n detectIsComponentFactory(factory) && factory.token === $$portal;\r\n\r\nconst getPortalContainer = (factory: unknown): Element | null =>\r\n detectIsPortal(factory) ? factory.props[$$portal] : null;\r\n\r\nfunction unmountPortal(fiber: Fiber) {\r\n const container = getPortalContainer(fiber.instance);\r\n\r\n if (container) {\r\n container.innerHTML = '';\r\n }\r\n}\r\n\r\nexport { createPortal, detectIsPortal, getPortalContainer, unmountPortal };\r\n","export * from './render';\r\n","import {\r\n type DarkElement,\r\n type VirtualNodeFactory,\r\n type ComponentFactory,\r\n ROOT,\r\n Fiber,\r\n EffectTag,\r\n platform,\r\n flatten,\r\n detectIsUndefined,\r\n TagVirtualNode,\r\n rootStore,\r\n wipRootStore,\r\n currentRootStore,\r\n nextUnitOfWorkStore,\r\n fiberMountStore,\r\n TaskPriority,\r\n createEmptyVirtualNode,\r\n isLayoutEffectsZone,\r\n} from '@dark-engine/core';\r\nimport { createNativeElement, applyCommit, finishCommitWork } from '../dom';\r\nimport { detectIsPortal, unmountPortal } from '../portal';\r\nimport { scheduleCallback, shouldYeildToHost } from '../scheduler';\r\n\r\nplatform.createNativeElement = createNativeElement as typeof platform.createNativeElement;\r\nplatform.requestAnimationFrame = requestAnimationFrame.bind(this);\r\nplatform.scheduleCallback = scheduleCallback;\r\nplatform.shouldYeildToHost = shouldYeildToHost;\r\nplatform.applyCommit = applyCommit;\r\nplatform.finishCommitWork = finishCommitWork;\r\nplatform.detectIsPortal = detectIsPortal;\r\nplatform.unmountPortal = unmountPortal;\r\n\r\nconst roots = new Map();\r\n\r\nfunction render(element: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n throw new Error(`[Dark]: render receives only Element as container!`);\r\n }\r\n\r\n const isMounted = !detectIsUndefined(roots.get(container));\r\n let rootId = null;\r\n\r\n if (!isMounted) {\r\n rootId = roots.size;\r\n\r\n roots.set(container, rootId);\r\n container.innerHTML = '';\r\n } else {\r\n rootId = roots.get(container);\r\n }\r\n\r\n const callback = () => {\r\n rootStore.set(rootId); // important order!\r\n const currentRoot = currentRootStore.get();\r\n const fiber = new Fiber({\r\n nativeElement: container,\r\n instance: new TagVirtualNode({\r\n name: ROOT,\r\n children: flatten([element || createEmptyVirtualNode()]) as Array,\r\n }),\r\n alternate: currentRoot,\r\n effectTag: isMounted ? EffectTag.UPDATE : EffectTag.CREATE,\r\n });\r\n\r\n currentRoot && (currentRoot.alternate = null);\r\n fiberMountStore.reset();\r\n wipRootStore.set(fiber);\r\n nextUnitOfWorkStore.set(fiber);\r\n };\r\n\r\n platform.scheduleCallback(callback, { priority: TaskPriority.NORMAL, forceSync: isLayoutEffectsZone.get() });\r\n}\r\n\r\nexport { render, roots };\r\n","export * from './scheduler';\r\n","import { type ScheduleCallbackOptions, getTime, workLoop, wipRootStore, TaskPriority } from '@dark-engine/core';\r\n\r\ntype Callback = () => boolean;\r\n\r\ntype QueueByPriority = {\r\n hight: Array;\r\n normal: Array;\r\n low1: Array;\r\n low2: Array;\r\n};\r\n\r\nconst queueByPriority: QueueByPriority = {\r\n hight: [],\r\n normal: [],\r\n low1: [],\r\n low2: [],\r\n};\r\nconst YEILD_INTERVAL = 10;\r\nlet scheduledCallback: Callback = null;\r\nlet deadline = 0;\r\nlet isMessageLoopRunning = false;\r\nlet currentTask: Task = null;\r\n\r\nclass Task {\r\n public static nextTaskId = 0;\r\n public id: number;\r\n public time: number;\r\n public timeoutMs: number;\r\n public priority: TaskPriority;\r\n public forceSync: boolean;\r\n public callback: () => void;\r\n\r\n constructor(options: Omit) {\r\n this.id = ++Task.nextTaskId;\r\n this.time = options.time;\r\n this.timeoutMs = options.timeoutMs;\r\n this.priority = options.priority;\r\n this.forceSync = options.forceSync;\r\n this.callback = options.callback;\r\n }\r\n}\r\n\r\nconst shouldYeildToHost = () => getTime() >= deadline;\r\n\r\nfunction scheduleCallback(callback: () => void, options?: ScheduleCallbackOptions) {\r\n const { priority = TaskPriority.NORMAL, timeoutMs = 0, forceSync = false } = options || {};\r\n const task = new Task({ time: getTime(), timeoutMs, priority, forceSync, callback });\r\n const map: Record void> = {\r\n [TaskPriority.HIGH]: () => queueByPriority.hight.push(task),\r\n [TaskPriority.NORMAL]: () => queueByPriority.normal.push(task),\r\n [TaskPriority.LOW]: () => (task.timeoutMs > 0 ? queueByPriority.low2.push(task) : queueByPriority.low1.push(task)),\r\n };\r\n\r\n map[task.priority]();\r\n executeTasks();\r\n}\r\n\r\nfunction pick(queue: Array) {\r\n if (!queue.length) return false;\r\n currentTask = queue.shift();\r\n\r\n currentTask.callback();\r\n\r\n if (currentTask.forceSync) {\r\n requestCallbackSync(workLoop);\r\n } else {\r\n requestCallback(workLoop);\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction executeTasks() {\r\n const isBusy = Boolean(wipRootStore.get());\r\n\r\n if (!isBusy) {\r\n checkOverdueTasks() ||\r\n pick(queueByPriority.hight) ||\r\n pick(queueByPriority.normal) ||\r\n requestIdleCallback(() => pick(queueByPriority.low1) || pick(queueByPriority.low2));\r\n }\r\n}\r\n\r\nfunction checkOverdueTasks() {\r\n const [task] = queueByPriority.low2;\r\n\r\n if (task && getTime() - task.time > task.timeoutMs) {\r\n pick(queueByPriority.low2);\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction performWorkUntilDeadline() {\r\n if (scheduledCallback) {\r\n deadline = getTime() + YEILD_INTERVAL;\r\n\r\n try {\r\n const hasMoreWork = scheduledCallback();\r\n\r\n if (!hasMoreWork) {\r\n currentTask = null;\r\n isMessageLoopRunning = false;\r\n scheduledCallback = null;\r\n executeTasks();\r\n } else {\r\n port.postMessage(null);\r\n }\r\n } catch (error) {\r\n port.postMessage(null);\r\n throw error;\r\n }\r\n } else {\r\n isMessageLoopRunning = false;\r\n }\r\n}\r\n\r\nfunction requestCallback(callback: Callback) {\r\n if (process.env.NODE_ENV === 'test') {\r\n return requestCallbackSync(callback);\r\n }\r\n\r\n scheduledCallback = callback;\r\n\r\n if (!isMessageLoopRunning) {\r\n isMessageLoopRunning = true;\r\n port.postMessage(null);\r\n }\r\n}\r\n\r\nfunction requestCallbackSync(callback: Callback) {\r\n while (callback()) {\r\n //\r\n }\r\n executeTasks();\r\n currentTask = null;\r\n}\r\n\r\nlet channel: MessageChannel = null;\r\nlet port: MessagePort = null;\r\n\r\nfunction setup() {\r\n if (process.env.NODE_ENV === 'test') {\r\n return;\r\n }\r\n\r\n channel = new MessageChannel();\r\n port = channel.port2;\r\n\r\n channel.port1.onmessage = performWorkUntilDeadline;\r\n}\r\n\r\nsetup();\r\n\r\nexport { shouldYeildToHost, scheduleCallback };\r\n","export * from './use-style';\r\n","import { useMemo, detectIsUndefined } from '@dark-engine/core';\r\n\r\nfunction styled(strings: TemplateStringsArray, ...args: Array): string {\r\n const style = useMemo(() => {\r\n return strings\r\n .map((x, idx) => x + (!detectIsUndefined(args[idx]) ? args[idx] : ''))\r\n .join('')\r\n .replace(/;\\s*/gm, ';')\r\n .replace(/:\\s*/gm, ':')\r\n .trim();\r\n }, [strings, ...args]);\r\n\r\n return style;\r\n}\r\n\r\ntype Style = Record;\r\n\r\ntype Config = (x: typeof styled) => T;\r\n\r\nfunction useStyle(config: Config) {\r\n return config(styled);\r\n}\r\n\r\nexport { useStyle };\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__dark_engine_core__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export { render } from './render';\r\nexport { createRoot } from './create-root';\r\nexport { createPortal } from './portal';\r\nexport { useStyle } from './use-style';\r\nexport { setTrackUpdate } from './dom';\r\nexport type { SyntheticEvent } from './events';\r\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"dark-platform-browser.development.js","mappings":"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","sources":["webpack://DarkPlatformBrowser/webpack/universalModuleDefinition","webpack://DarkPlatformBrowser/./src/create-root/create-root.tsx","webpack://DarkPlatformBrowser/./src/create-root/index.ts","webpack://DarkPlatformBrowser/./src/dom/dom.ts","webpack://DarkPlatformBrowser/./src/dom/index.ts","webpack://DarkPlatformBrowser/./src/dom/types.ts","webpack://DarkPlatformBrowser/./src/events/events.ts","webpack://DarkPlatformBrowser/./src/events/index.ts","webpack://DarkPlatformBrowser/./src/portal/index.ts","webpack://DarkPlatformBrowser/./src/portal/portal.tsx","webpack://DarkPlatformBrowser/./src/render/index.ts","webpack://DarkPlatformBrowser/./src/render/render.ts","webpack://DarkPlatformBrowser/./src/scheduler/index.ts","webpack://DarkPlatformBrowser/./src/scheduler/scheduler.ts","webpack://DarkPlatformBrowser/./src/use-style/index.ts","webpack://DarkPlatformBrowser/./src/use-style/use-style.ts","webpack://DarkPlatformBrowser/external umd {\"root\":\"DarkCore\",\"commonjs2\":\"@dark-engine/core\",\"commonjs\":\"@dark-engine/core\",\"amd\":\"@dark-engine/core\"}","webpack://DarkPlatformBrowser/webpack/bootstrap","webpack://DarkPlatformBrowser/webpack/runtime/compat get default export","webpack://DarkPlatformBrowser/webpack/runtime/define property getters","webpack://DarkPlatformBrowser/webpack/runtime/hasOwnProperty shorthand","webpack://DarkPlatformBrowser/webpack/runtime/make namespace object","webpack://DarkPlatformBrowser/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@dark-engine/core\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"DarkPlatformBrowser\", [\"@dark-engine/core\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DarkPlatformBrowser\"] = factory(require(\"@dark-engine/core\"));\n\telse\n\t\troot[\"DarkPlatformBrowser\"] = factory(root[\"DarkCore\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE__dark_engine_core__) => {\nreturn ","import { type DarkElement, unmountRoot } from '@dark-engine/core';\r\nimport { render, roots } from '../render';\r\n\r\nfunction createRoot(container: Element) {\r\n return {\r\n render: (element: DarkElement) => render(element, container),\r\n unmount: () => {\r\n const rootId = roots.get(container);\r\n\r\n unmountRoot(rootId, () => {\r\n roots.delete(container);\r\n container.innerHTML = '';\r\n });\r\n },\r\n };\r\n}\r\n\r\nexport { createRoot };\r\n","export * from './create-root';\r\n","import {\r\n type Fiber,\r\n type VirtualNode,\r\n type TagVirtualNode,\r\n type TextVirtualNode,\r\n type CommentVirtualNode,\r\n type MutableRef,\r\n ATTR_KEY,\r\n ATTR_REF,\r\n EffectTag,\r\n detectIsFunction,\r\n detectIsUndefined,\r\n NodeType,\r\n detectIsVirtualNode,\r\n detectIsTagVirtualNode,\r\n detectIsTextVirtualNode,\r\n detectIsRef,\r\n walkFiber,\r\n} from '@dark-engine/core';\r\nimport { detectIsPortal, getPortalContainer } from '../portal';\r\nimport { delegateEvent, detectIsEvent, getEventName } from '../events';\r\nimport type { DOMElement, DOMFragment } from './types';\r\n\r\nconst attrBlackListMap = {\r\n [ATTR_KEY]: true,\r\n [ATTR_REF]: true,\r\n void: true,\r\n};\r\n\r\nlet fragmentsMap: Map = new Map();\r\n\r\nlet trackUpdate: (nativeElement: Element) => void = null;\r\n\r\nfunction createNativeElement(vNode: VirtualNode): DOMElement {\r\n const map = {\r\n [NodeType.TAG]: (vNode: VirtualNode) => {\r\n const tagNode = vNode as TagVirtualNode;\r\n const node = detectIsSvgElement(tagNode.name)\r\n ? document.createElementNS('http://www.w3.org/2000/svg', tagNode.name)\r\n : document.createElement(tagNode.name);\r\n\r\n return node;\r\n },\r\n [NodeType.TEXT]: (vNode: VirtualNode) => {\r\n const textNode = vNode as TextVirtualNode;\r\n const node = document.createTextNode(textNode.value);\r\n\r\n return node;\r\n },\r\n [NodeType.COMMENT]: (vNode: VirtualNode) => {\r\n const commentNode = vNode as CommentVirtualNode;\r\n const node = document.createComment(commentNode.value);\r\n\r\n return node;\r\n },\r\n };\r\n\r\n return map[vNode.type](vNode);\r\n}\r\n\r\nfunction detectIsSvgElement(tagName: string) {\r\n const tagMap = {\r\n svg: true,\r\n circle: true,\r\n ellipse: true,\r\n g: true,\r\n text: true,\r\n tspan: true,\r\n textPath: true,\r\n path: true,\r\n polygon: true,\r\n polyline: true,\r\n line: true,\r\n rect: true,\r\n use: true,\r\n image: true,\r\n symbol: true,\r\n defs: true,\r\n linearGradient: true,\r\n radialGradient: true,\r\n stop: true,\r\n clipPath: true,\r\n pattern: true,\r\n mask: true,\r\n marker: true,\r\n };\r\n\r\n return Boolean(tagMap[tagName]);\r\n}\r\n\r\nfunction applyRef(ref: MutableRef, element: Element) {\r\n if (detectIsRef(ref)) {\r\n ref.current = element;\r\n }\r\n}\r\n\r\nfunction addAttributes(element: Element, vNode: VirtualNode) {\r\n if (!detectIsTagVirtualNode(vNode)) return;\r\n const attrNames = Object.keys(vNode.attrs);\r\n\r\n for (const attrName of attrNames) {\r\n const attrValue = vNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(attrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (detectIsFunction(attrValue)) {\r\n if (detectIsEvent(attrName)) {\r\n delegateEvent({\r\n target: element,\r\n handler: attrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!detectIsUndefined(attrValue) && !attrBlackListMap[attrName]) {\r\n const stopAttrsMap = upgradeInputAttributes({\r\n tagName: vNode.name,\r\n value: attrValue,\r\n attrName,\r\n element,\r\n });\r\n\r\n !stopAttrsMap[attrName] && element.setAttribute(attrName, attrValue);\r\n }\r\n }\r\n}\r\n\r\nfunction updateAttributes(element: Element, vNode: TagVirtualNode, nextVNode: TagVirtualNode) {\r\n const attrNames = new Set([...Object.keys(vNode.attrs), ...Object.keys(nextVNode.attrs)]);\r\n\r\n for (const attrName of attrNames) {\r\n const prevAttrValue = vNode.attrs[attrName];\r\n const nextAttrValue = nextVNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(prevAttrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (!detectIsUndefined(nextAttrValue)) {\r\n if (detectIsFunction(prevAttrValue)) {\r\n if (detectIsEvent(attrName) && prevAttrValue !== nextAttrValue) {\r\n delegateEvent({\r\n target: element,\r\n handler: nextAttrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!attrBlackListMap[attrName] && prevAttrValue !== nextAttrValue) {\r\n const stopAttrsMap = upgradeInputAttributes({\r\n tagName: nextVNode.name,\r\n value: nextAttrValue,\r\n attrName,\r\n element,\r\n });\r\n !stopAttrsMap[attrName] && element.setAttribute(attrName, nextAttrValue);\r\n }\r\n } else {\r\n element.removeAttribute(attrName);\r\n }\r\n }\r\n}\r\n\r\nconst INPUT_STOP_ATTRS_MAP = {\r\n value: true,\r\n checked: true,\r\n};\r\n\r\nconst TEXTAREA_STOP_ATTRS_MAP = {\r\n value: true,\r\n};\r\n\r\nconst OPTIONS_STOP_ATTRS_MAP = {\r\n selected: true,\r\n};\r\n\r\nconst DEFAULT_STOP_ATTRS_MAP = {};\r\n\r\ntype PatchedElements = 'input' | 'textarea' | 'option';\r\n\r\ntype UpgradeInputAttributesOptions = {\r\n tagName: string;\r\n element: Element;\r\n attrName: string;\r\n value: string | boolean;\r\n};\r\n\r\nfunction upgradeInputAttributes(options: UpgradeInputAttributesOptions): Record {\r\n const { tagName, element, attrName, value } = options;\r\n const map: Record Record> = {\r\n input: () => {\r\n if (INPUT_STOP_ATTRS_MAP[attrName]) {\r\n element[attrName] = value;\r\n }\r\n\r\n return INPUT_STOP_ATTRS_MAP;\r\n },\r\n textarea: () => {\r\n if (TEXTAREA_STOP_ATTRS_MAP[attrName]) {\r\n element[attrName] = value;\r\n }\r\n\r\n return TEXTAREA_STOP_ATTRS_MAP;\r\n },\r\n option: () => {\r\n if (OPTIONS_STOP_ATTRS_MAP[attrName]) {\r\n element[attrName] = value;\r\n }\r\n\r\n return OPTIONS_STOP_ATTRS_MAP;\r\n },\r\n };\r\n\r\n return map[tagName] ? map[tagName]() : DEFAULT_STOP_ATTRS_MAP;\r\n}\r\n\r\nfunction getParentFiberWithNativeElement(fiber: Fiber): Fiber {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n nextFiber = nextFiber.parent;\r\n\r\n if (detectIsPortal(nextFiber.instance)) {\r\n nextFiber.nativeElement = getPortalContainer(nextFiber.instance);\r\n }\r\n\r\n if (nextFiber.nativeElement) return nextFiber;\r\n }\r\n\r\n return nextFiber;\r\n}\r\n\r\nfunction getNodeOnTheRight(fiber: Fiber, parentElement: Element) {\r\n let node: Element = null;\r\n\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, stop, resetIsDeepWalking }) => {\r\n if (nextFiber.nativeElement && nextFiber.nativeElement.parentElement === parentElement) {\r\n node = nextFiber.nativeElement;\r\n\r\n return stop();\r\n }\r\n\r\n if (!nextFiber.mountedToHost) {\r\n return resetIsDeepWalking();\r\n }\r\n },\r\n });\r\n\r\n return node;\r\n}\r\n\r\nfunction getChildIndex(fiber: Fiber, parentNativeElement: Element) {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (nextFiber?.parent?.nativeElement === parentNativeElement) {\r\n return nextFiber.idx;\r\n }\r\n\r\n nextFiber = nextFiber.parent;\r\n }\r\n\r\n return -1;\r\n}\r\n\r\nfunction commitCreation(fiber: Fiber) {\r\n const parentFiber = getParentFiberWithNativeElement(fiber);\r\n const parentNativeElement = parentFiber.nativeElement;\r\n const childNodes = parentNativeElement.childNodes;\r\n\r\n const append = () => {\r\n const { fragment } =\r\n fragmentsMap.get(parentNativeElement) ||\r\n ({\r\n fragment: document.createDocumentFragment(),\r\n callback: () => {},\r\n } as DOMFragment);\r\n\r\n fragmentsMap.set(parentNativeElement, {\r\n fragment,\r\n callback: () => {\r\n parentNativeElement.appendChild(fragment);\r\n },\r\n });\r\n fragment.appendChild(fiber.nativeElement);\r\n fiber.markMountedToHost();\r\n };\r\n\r\n const insert = () => {\r\n parentNativeElement.insertBefore(fiber.nativeElement, getNodeOnTheRight(fiber, parentNativeElement));\r\n fiber.markMountedToHost();\r\n };\r\n\r\n if (childNodes.length === 0 || getChildIndex(fiber, parentNativeElement) > childNodes.length - 1) {\r\n append();\r\n } else {\r\n insert();\r\n }\r\n\r\n addAttributes(fiber.nativeElement, fiber.instance as VirtualNode);\r\n}\r\n\r\nfunction commitUpdate(nativeElement: Element, instance: VirtualNode, nextInstance: VirtualNode) {\r\n if (\r\n detectIsTextVirtualNode(instance) &&\r\n detectIsTextVirtualNode(nextInstance) &&\r\n instance.value !== nextInstance.value\r\n ) {\r\n return (nativeElement.textContent = nextInstance.value);\r\n }\r\n\r\n if (detectIsTagVirtualNode(instance) && detectIsTagVirtualNode(nextInstance)) {\r\n return updateAttributes(nativeElement, instance, nextInstance);\r\n }\r\n}\r\n\r\nfunction commitDeletion(fiber: Fiber) {\r\n const parentFiber = getParentFiberWithNativeElement(fiber);\r\n\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, isReturn, resetIsDeepWalking, stop }) => {\r\n if (nextFiber === fiber.nextSibling || nextFiber === fiber.parent) {\r\n return stop();\r\n }\r\n\r\n if (!isReturn && nextFiber.nativeElement) {\r\n !detectIsPortal(nextFiber.instance) && parentFiber.nativeElement.removeChild(nextFiber.nativeElement);\r\n\r\n return resetIsDeepWalking();\r\n }\r\n },\r\n });\r\n}\r\n\r\nfunction applyCommit(fiber: Fiber) {\r\n const map: Record void> = {\r\n [EffectTag.CREATE]: () => {\r\n if (fiber.nativeElement === null) return;\r\n trackUpdate && trackUpdate(fiber.nativeElement);\r\n commitCreation(fiber);\r\n },\r\n [EffectTag.UPDATE]: () => {\r\n if (\r\n fiber.nativeElement === null ||\r\n !detectIsVirtualNode(fiber.alternate.instance) ||\r\n !detectIsVirtualNode(fiber.instance)\r\n ) {\r\n return;\r\n }\r\n trackUpdate && trackUpdate(fiber.nativeElement);\r\n commitUpdate(fiber.nativeElement, fiber.alternate.instance, fiber.instance);\r\n },\r\n [EffectTag.DELETE]: () => commitDeletion(fiber),\r\n [EffectTag.SKIP]: () => {},\r\n };\r\n\r\n map[fiber.effectTag]();\r\n}\r\n\r\nfunction finishCommitWork() {\r\n for (const { callback } of fragmentsMap.values()) {\r\n callback();\r\n }\r\n\r\n fragmentsMap = new Map();\r\n}\r\n\r\nfunction setTrackUpdate(fn: typeof trackUpdate) {\r\n trackUpdate = fn;\r\n}\r\n\r\nexport { createNativeElement, applyCommit, finishCommitWork, setTrackUpdate };\r\n","export * from './dom';\r\nexport * from './types';\r\n","export type DOMElement = HTMLElement | SVGElement | Text | Comment;\r\n\r\nexport type DOMFragment = {\r\n fragment: DocumentFragment;\r\n callback: () => void;\r\n};\r\n","import { detectIsFunction, eventsStore } from '@dark-engine/core';\r\n\r\ntype BrowserEventConstructor = (type: string, event: Event) => void;\r\n\r\nclass SyntheticEvent {\r\n public type = '';\r\n public sourceEvent: E = null;\r\n public target: T = null;\r\n private propagation = true;\r\n\r\n constructor(options: Pick, 'sourceEvent' | 'target'>) {\r\n this.type = options.sourceEvent.type;\r\n this.sourceEvent = options.sourceEvent;\r\n this.target = options.target;\r\n }\r\n\r\n public stopPropagation() {\r\n this.propagation = false;\r\n this.sourceEvent.stopPropagation();\r\n }\r\n\r\n public preventDefault() {\r\n this.sourceEvent.preventDefault();\r\n }\r\n\r\n public getPropagation() {\r\n return this.propagation;\r\n }\r\n}\r\n\r\ntype DelegateEventOptions = {\r\n target: Element;\r\n eventName: string;\r\n handler: (e: Event) => void;\r\n};\r\n\r\nfunction delegateEvent(options: DelegateEventOptions) {\r\n const { target, eventName, handler } = options;\r\n const eventsMap = eventsStore.get();\r\n const handlerMap = eventsMap.get(eventName);\r\n\r\n if (!handlerMap) {\r\n const rootHandler = (event: Event) => {\r\n const fireEvent = eventsMap.get(eventName).get(event.target);\r\n const target = event.target as Element;\r\n let syntheticEvent: SyntheticEvent = null;\r\n\r\n if (detectIsFunction(fireEvent)) {\r\n syntheticEvent = new SyntheticEvent({\r\n sourceEvent: event,\r\n target,\r\n });\r\n fireEvent(syntheticEvent);\r\n }\r\n\r\n if (syntheticEvent ? syntheticEvent.getPropagation() : target.parentElement) {\r\n target.parentElement.dispatchEvent(new (event.constructor as BrowserEventConstructor)(event.type, event));\r\n }\r\n };\r\n\r\n eventsMap.set(eventName, new WeakMap([[target, handler]]));\r\n document.addEventListener(eventName, rootHandler, true);\r\n eventsStore.addUnsubscriber(() => document.removeEventListener(eventName, rootHandler, true));\r\n } else {\r\n handlerMap.set(target, handler);\r\n }\r\n}\r\n\r\nconst detectIsEvent = (attrName: string) => attrName.startsWith('on');\r\n\r\nconst getEventName = (attrName: string) => attrName.slice(2, attrName.length).toLowerCase();\r\n\r\nexport { SyntheticEvent, delegateEvent, detectIsEvent, getEventName };\r\n","export * from './events';\r\n","export * from './portal';\r\n","import {\r\n type Fiber,\r\n type DarkElement,\r\n type ComponentFactory,\r\n createComponent,\r\n detectIsComponentFactory,\r\n useMemo,\r\n} from '@dark-engine/core';\r\n\r\nconst $$portal = Symbol('portal');\r\n\r\nfunction createPortal(slot: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n throw new Error(`[Dark]: createPortal receives only Element as container!`);\r\n }\r\n\r\n return Portal({ [$$portal]: container, slot });\r\n}\r\n\r\ntype PortalProps = {\r\n [$$portal]: Element;\r\n slot: DarkElement;\r\n};\r\n\r\nconst Portal = createComponent(\r\n ({ slot, ...rest }) => {\r\n useMemo(() => (rest[$$portal].innerHTML = ''), []);\r\n\r\n return slot;\r\n },\r\n { token: $$portal },\r\n);\r\n\r\nconst detectIsPortal = (factory: unknown): factory is ComponentFactory =>\r\n detectIsComponentFactory(factory) && factory.token === $$portal;\r\n\r\nconst getPortalContainer = (factory: unknown): Element | null =>\r\n detectIsPortal(factory) ? factory.props[$$portal] : null;\r\n\r\nfunction unmountPortal(fiber: Fiber) {\r\n const container = getPortalContainer(fiber.instance);\r\n\r\n if (container) {\r\n container.innerHTML = '';\r\n }\r\n}\r\n\r\nexport { createPortal, detectIsPortal, getPortalContainer, unmountPortal };\r\n","export * from './render';\r\n","import {\r\n type DarkElement,\r\n type VirtualNodeFactory,\r\n type ComponentFactory,\r\n ROOT,\r\n Fiber,\r\n EffectTag,\r\n platform,\r\n flatten,\r\n detectIsUndefined,\r\n TagVirtualNode,\r\n rootStore,\r\n wipRootStore,\r\n currentRootStore,\r\n nextUnitOfWorkStore,\r\n fiberMountStore,\r\n TaskPriority,\r\n createEmptyVirtualNode,\r\n isLayoutEffectsZone,\r\n} from '@dark-engine/core';\r\nimport { createNativeElement, applyCommit, finishCommitWork } from '../dom';\r\nimport { detectIsPortal, unmountPortal } from '../portal';\r\nimport { scheduleCallback, shouldYeildToHost } from '../scheduler';\r\n\r\nplatform.createNativeElement = createNativeElement as typeof platform.createNativeElement;\r\nplatform.requestAnimationFrame = requestAnimationFrame.bind(this);\r\nplatform.scheduleCallback = scheduleCallback;\r\nplatform.shouldYeildToHost = shouldYeildToHost;\r\nplatform.applyCommit = applyCommit;\r\nplatform.finishCommitWork = finishCommitWork;\r\nplatform.detectIsPortal = detectIsPortal;\r\nplatform.unmountPortal = unmountPortal;\r\n\r\nconst roots = new Map();\r\n\r\nfunction render(element: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n throw new Error(`[Dark]: render receives only Element as container!`);\r\n }\r\n\r\n const isMounted = !detectIsUndefined(roots.get(container));\r\n let rootId = null;\r\n\r\n if (!isMounted) {\r\n rootId = roots.size;\r\n\r\n roots.set(container, rootId);\r\n container.innerHTML = '';\r\n } else {\r\n rootId = roots.get(container);\r\n }\r\n\r\n const callback = () => {\r\n rootStore.set(rootId); // important order!\r\n const currentRoot = currentRootStore.get();\r\n const fiber = new Fiber({\r\n nativeElement: container,\r\n instance: new TagVirtualNode({\r\n name: ROOT,\r\n children: flatten([element || createEmptyVirtualNode()]) as Array,\r\n }),\r\n alternate: currentRoot,\r\n effectTag: isMounted ? EffectTag.UPDATE : EffectTag.CREATE,\r\n });\r\n\r\n currentRoot && (currentRoot.alternate = null);\r\n fiberMountStore.reset();\r\n wipRootStore.set(fiber);\r\n nextUnitOfWorkStore.set(fiber);\r\n };\r\n\r\n platform.scheduleCallback(callback, { priority: TaskPriority.NORMAL, forceSync: isLayoutEffectsZone.get() });\r\n}\r\n\r\nexport { render, roots };\r\n","export * from './scheduler';\r\n","import { type ScheduleCallbackOptions, getTime, workLoop, wipRootStore, TaskPriority } from '@dark-engine/core';\r\n\r\ntype Callback = () => boolean;\r\n\r\ntype QueueByPriority = {\r\n hight: Array;\r\n normal: Array;\r\n low1: Array;\r\n low2: Array;\r\n};\r\n\r\nconst queueByPriority: QueueByPriority = {\r\n hight: [],\r\n normal: [],\r\n low1: [],\r\n low2: [],\r\n};\r\nconst YEILD_INTERVAL = 10;\r\nlet scheduledCallback: Callback = null;\r\nlet deadline = 0;\r\nlet isMessageLoopRunning = false;\r\nlet currentTask: Task = null;\r\n\r\nclass Task {\r\n public static nextTaskId = 0;\r\n public id: number;\r\n public time: number;\r\n public timeoutMs: number;\r\n public priority: TaskPriority;\r\n public forceSync: boolean;\r\n public callback: () => void;\r\n\r\n constructor(options: Omit) {\r\n this.id = ++Task.nextTaskId;\r\n this.time = options.time;\r\n this.timeoutMs = options.timeoutMs;\r\n this.priority = options.priority;\r\n this.forceSync = options.forceSync;\r\n this.callback = options.callback;\r\n }\r\n}\r\n\r\nconst shouldYeildToHost = () => getTime() >= deadline;\r\n\r\nfunction scheduleCallback(callback: () => void, options?: ScheduleCallbackOptions) {\r\n const { priority = TaskPriority.NORMAL, timeoutMs = 0, forceSync = false } = options || {};\r\n const task = new Task({ time: getTime(), timeoutMs, priority, forceSync, callback });\r\n const map: Record void> = {\r\n [TaskPriority.HIGH]: () => queueByPriority.hight.push(task),\r\n [TaskPriority.NORMAL]: () => queueByPriority.normal.push(task),\r\n [TaskPriority.LOW]: () => (task.timeoutMs > 0 ? queueByPriority.low2.push(task) : queueByPriority.low1.push(task)),\r\n };\r\n\r\n map[task.priority]();\r\n executeTasks();\r\n}\r\n\r\nfunction pick(queue: Array) {\r\n if (!queue.length) return false;\r\n currentTask = queue.shift();\r\n\r\n currentTask.callback();\r\n\r\n if (currentTask.forceSync) {\r\n requestCallbackSync(workLoop);\r\n } else {\r\n requestCallback(workLoop);\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction executeTasks() {\r\n const isBusy = Boolean(wipRootStore.get());\r\n\r\n if (!isBusy) {\r\n checkOverdueTasks() ||\r\n pick(queueByPriority.hight) ||\r\n pick(queueByPriority.normal) ||\r\n requestIdleCallback(() => pick(queueByPriority.low1) || pick(queueByPriority.low2));\r\n }\r\n}\r\n\r\nfunction checkOverdueTasks() {\r\n const [task] = queueByPriority.low2;\r\n\r\n if (task && getTime() - task.time > task.timeoutMs) {\r\n pick(queueByPriority.low2);\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction performWorkUntilDeadline() {\r\n if (scheduledCallback) {\r\n deadline = getTime() + YEILD_INTERVAL;\r\n\r\n try {\r\n const hasMoreWork = scheduledCallback();\r\n\r\n if (!hasMoreWork) {\r\n currentTask = null;\r\n isMessageLoopRunning = false;\r\n scheduledCallback = null;\r\n executeTasks();\r\n } else {\r\n port.postMessage(null);\r\n }\r\n } catch (error) {\r\n port.postMessage(null);\r\n throw error;\r\n }\r\n } else {\r\n isMessageLoopRunning = false;\r\n }\r\n}\r\n\r\nfunction requestCallback(callback: Callback) {\r\n if (process.env.NODE_ENV === 'test') {\r\n return requestCallbackSync(callback);\r\n }\r\n\r\n scheduledCallback = callback;\r\n\r\n if (!isMessageLoopRunning) {\r\n isMessageLoopRunning = true;\r\n port.postMessage(null);\r\n }\r\n}\r\n\r\nfunction requestCallbackSync(callback: Callback) {\r\n while (callback()) {\r\n //\r\n }\r\n executeTasks();\r\n currentTask = null;\r\n}\r\n\r\nlet channel: MessageChannel = null;\r\nlet port: MessagePort = null;\r\n\r\nfunction setup() {\r\n if (process.env.NODE_ENV === 'test') {\r\n return;\r\n }\r\n\r\n channel = new MessageChannel();\r\n port = channel.port2;\r\n\r\n channel.port1.onmessage = performWorkUntilDeadline;\r\n}\r\n\r\nsetup();\r\n\r\nexport { shouldYeildToHost, scheduleCallback };\r\n","export * from './use-style';\r\n","import { useMemo, detectIsUndefined } from '@dark-engine/core';\r\n\r\nfunction styled(strings: TemplateStringsArray, ...args: Array): string {\r\n const style = useMemo(() => {\r\n return strings\r\n .map((x, idx) => x + (!detectIsUndefined(args[idx]) ? args[idx] : ''))\r\n .join('')\r\n .replace(/;\\s*/gm, ';')\r\n .replace(/:\\s*/gm, ':')\r\n .trim();\r\n }, [strings, ...args]);\r\n\r\n return style;\r\n}\r\n\r\ntype Style = Record;\r\n\r\ntype Config = (x: typeof styled) => T;\r\n\r\nfunction useStyle(config: Config) {\r\n return config(styled);\r\n}\r\n\r\nexport { useStyle };\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__dark_engine_core__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export { render } from './render';\r\nexport { createRoot } from './create-root';\r\nexport { createPortal } from './portal';\r\nexport { useStyle } from './use-style';\r\nexport { setTrackUpdate } from './dom';\r\nexport type { SyntheticEvent } from './events';\r\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/packages/platform-browser/umd/dark-platform-browser.production.min.js b/packages/platform-browser/umd/dark-platform-browser.production.min.js index ce3a7950..680f2bd5 100644 --- a/packages/platform-browser/umd/dark-platform-browser.production.min.js +++ b/packages/platform-browser/umd/dark-platform-browser.production.min.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@dark-engine/core")):"function"==typeof define&&define.amd?define("DarkPlatformBrowser",["@dark-engine/core"],t):"object"==typeof exports?exports.DarkPlatformBrowser=t(require("@dark-engine/core")):e.DarkPlatformBrowser=t(e.DarkCore)}(self,(e=>(()=>{"use strict";var t={317:t=>{t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{r.r(o),r.d(o,{createPortal:()=>n,createRoot:()=>j,render:()=>L,setTrackUpdate:()=>w,useStyle:()=>U});var e=r(317),t=Symbol("portal");function n(e,n){var r;if(!(n instanceof Element))throw new Error("[Dark]: createPortal receives only Element as container!");return a(((r={})[t]=n,r.slot=e,r))}var a=(0,e.createComponent)((function(n){var r=n.slot,o=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},v=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,a=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i},d=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o0)&&!(r=a.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i}(k.low2,1)[0])&&(0,e.getTime)()-t.time>t.timeoutMs&&(O(k.low2),1)||O(k.hight)||O(k.normal)||requestIdleCallback((function(){return O(k.low1)||O(k.low2)}))}var A=null,R=null;A=new MessageChannel,R=A.port2,A.port1.onmessage=function(){if(S){x=(0,e.getTime)()+10;try{S()?R.postMessage(null):(N=null,M=!1,S=null,I())}catch(e){throw R.postMessage(null),e}}else M=!1},e.platform.createNativeElement=function(t){var n,r=((n={})[e.NodeType.TAG]=function(e){var t,n=e;return t=n.name,Boolean({svg:!0,circle:!0,ellipse:!0,g:!0,text:!0,tspan:!0,textPath:!0,path:!0,polygon:!0,polyline:!0,line:!0,rect:!0,use:!0,image:!0,symbol:!0,defs:!0,linearGradient:!0,radialGradient:!0,stop:!0,clipPath:!0,pattern:!0,mask:!0,marker:!0}[t])?document.createElementNS("http://www.w3.org/2000/svg",n.name):document.createElement(n.name)},n[e.NodeType.TEXT]=function(e){var t=e;return document.createTextNode(t.value)},n[e.NodeType.COMMENT]=function(e){var t=e;return document.createComment(t.value)},n);return r[t.type](t)},e.platform.requestAnimationFrame=requestAnimationFrame.bind(void 0),e.platform.scheduleCallback=function(t,n){var r,o=n||{},a=o.priority,i=void 0===a?e.TaskPriority.NORMAL:a,l=o.timeoutMs,u=void 0===l?0:l,c=o.forceSync,f=void 0!==c&&c,s=new P({time:(0,e.getTime)(),timeoutMs:u,priority:i,forceSync:f,callback:t});((r={})[e.TaskPriority.HIGH]=function(){return k.hight.push(s)},r[e.TaskPriority.NORMAL]=function(){return k.normal.push(s)},r[e.TaskPriority.LOW]=function(){return s.timeoutMs>0?k.low2.push(s):k.low1.push(s)},r)[s.priority](),I()},e.platform.shouldYeildToHost=function(){return(0,e.getTime)()>=x},e.platform.applyCommit=function(t){var n,r=((n={})[e.EffectTag.CREATE]=function(){null!==t.nativeElement&&(h&&h(t.nativeElement),function(t){var n,r=T(t).nativeElement,o=r.childNodes;0===o.length||function(e,t){for(var n,r=e;r;){if((null===(n=null==r?void 0:r.parent)||void 0===n?void 0:n.nativeElement)===t)return r.idx;r=r.parent}return-1}(t,r)>o.length-1?(n=(g.get(r)||{fragment:document.createDocumentFragment(),callback:function(){}}).fragment,g.set(r,{fragment:n,callback:function(){r.appendChild(n)}}),n.appendChild(t.nativeElement),t.markMountedToHost()):(r.insertBefore(t.nativeElement,function(t,n){var r=null;return(0,e.walkFiber)({fiber:t,onLoop:function(e){var t=e.nextFiber,o=e.stop,a=e.resetIsDeepWalking;return t.nativeElement&&t.nativeElement.parentElement===n?(r=t.nativeElement,o()):t.mountedToHost?void 0:a()}}),r}(t,r)),t.markMountedToHost()),function(t,n){var r,o;if((0,e.detectIsTagVirtualNode)(n)){var a=Object.keys(n.attrs);try{for(var i=m(a),l=i.next();!l.done;l=i.next()){var u=l.value,f=n.attrs[u];u!==e.ATTR_REF?(0,e.detectIsFunction)(f)?s(u)&&c({target:t,handler:f,eventName:p(u)}):(0,e.detectIsUndefined)(f)||y[u]||(b({tagName:n.name,value:f,attrName:u,element:t}),t.setAttribute(u,f)):E(f,t)}}catch(e){r={error:e}}finally{try{l&&!l.done&&(o=i.return)&&o.call(i)}finally{if(r)throw r.error}}}}(t.nativeElement,t.instance)}(t))},n[e.EffectTag.UPDATE]=function(){var n,r,o;null!==t.nativeElement&&(0,e.detectIsVirtualNode)(t.alternate.instance)&&(0,e.detectIsVirtualNode)(t.instance)&&(h&&h(t.nativeElement),n=t.nativeElement,r=t.alternate.instance,o=t.instance,(0,e.detectIsTextVirtualNode)(r)&&(0,e.detectIsTextVirtualNode)(o)&&r.value!==o.value?n.textContent=o.value:(0,e.detectIsTagVirtualNode)(r)&&(0,e.detectIsTagVirtualNode)(o)&&function(t,n,r){var o,a,i=new Set(d(d([],v(Object.keys(n.attrs)),!1),v(Object.keys(r.attrs)),!1));try{for(var l=m(i),u=l.next();!u.done;u=l.next()){var f=u.value,g=n.attrs[f],h=r.attrs[f];f!==e.ATTR_REF?(0,e.detectIsUndefined)(h)?t.removeAttribute(f):(0,e.detectIsFunction)(g)?s(f)&&g!==h&&c({target:t,handler:h,eventName:p(f)}):y[f]||g===h||(b({tagName:r.name,value:h,attrName:f,element:t}),t.setAttribute(f,h)):E(g,t)}}catch(e){o={error:e}}finally{try{u&&!u.done&&(a=l.return)&&a.call(l)}finally{if(o)throw o.error}}}(n,r,o))},n[e.EffectTag.DELETE]=function(){return function(t){var n=T(t);(0,e.walkFiber)({fiber:t,onLoop:function(e){var r=e.nextFiber,o=e.isReturn,a=e.resetIsDeepWalking,l=e.stop;return r===t.nextSibling||r===t.parent?l():!o&&r.nativeElement?(!i(r.instance)&&n.nativeElement.removeChild(r.nativeElement),a()):void 0}})}(t)},n[e.EffectTag.SKIP]=function(){},n);r[t.effectTag]()},e.platform.finishCommitWork=function(){var e,t;try{for(var n=m(g.values()),r=n.next();!r.done;r=n.next())(0,r.value.callback)()}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}g=new Map},e.platform.detectIsPortal=i,e.platform.unmountPortal=function(e){var t=l(e.instance);t&&(t.innerHTML="")};var C=new Map;function L(t,n){if(!(n instanceof Element))throw new Error("[Dark]: render receives only Element as container!");var r=!(0,e.detectIsUndefined)(C.get(n)),o=null;r?o=C.get(n):(o=C.size,C.set(n,o),n.innerHTML=""),e.platform.scheduleCallback((function(){e.rootStore.set(o);var a=e.currentRootStore.get(),i=new e.Fiber({nativeElement:n,instance:new e.TagVirtualNode({name:e.ROOT,children:(0,e.flatten)([t||(0,e.createEmptyVirtualNode)()])}),alternate:a,effectTag:r?e.EffectTag.UPDATE:e.EffectTag.CREATE});a&&(a.alternate=null),e.fiberMountStore.reset(),e.wipRootStore.set(i),e.nextUnitOfWorkStore.set(i)}),{priority:e.TaskPriority.NORMAL,forceSync:e.isLayoutEffectsZone.get()})}function j(t){return{render:function(e){return L(e,t)},unmount:function(){var n=C.get(t);(0,e.unmountRoot)(n,(function(){C.delete(t),t.innerHTML=""}))}}}var F=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,a=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i},D=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o(()=>{"use strict";var t={317:t=>{t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{r.r(o),r.d(o,{createPortal:()=>n,createRoot:()=>U,render:()=>H,setTrackUpdate:()=>M,useStyle:()=>_});var e=r(317),t=Symbol("portal");function n(e,n){var r;if(!(n instanceof Element))throw new Error("[Dark]: createPortal receives only Element as container!");return a(((r={})[t]=n,r.slot=e,r))}var a=(0,e.createComponent)((function(n){var r=n.slot,o=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},v=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,a=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i},d=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o0)&&!(r=a.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i}(N.low2,1)[0])&&(0,e.getTime)()-t.time>t.timeoutMs&&(C(N.low2),1)||C(N.hight)||C(N.normal)||requestIdleCallback((function(){return C(N.low1)||C(N.low2)}))}var j=null,F=null;j=new MessageChannel,F=j.port2,j.port1.onmessage=function(){if(P){O=(0,e.getTime)()+10;try{P()?F.postMessage(null):(A=null,I=!1,P=null,L())}catch(e){throw F.postMessage(null),e}}else I=!1},e.platform.createNativeElement=function(t){var n,r=((n={})[e.NodeType.TAG]=function(e){var t,n=e;return t=n.name,Boolean({svg:!0,circle:!0,ellipse:!0,g:!0,text:!0,tspan:!0,textPath:!0,path:!0,polygon:!0,polyline:!0,line:!0,rect:!0,use:!0,image:!0,symbol:!0,defs:!0,linearGradient:!0,radialGradient:!0,stop:!0,clipPath:!0,pattern:!0,mask:!0,marker:!0}[t])?document.createElementNS("http://www.w3.org/2000/svg",n.name):document.createElement(n.name)},n[e.NodeType.TEXT]=function(e){var t=e;return document.createTextNode(t.value)},n[e.NodeType.COMMENT]=function(e){var t=e;return document.createComment(t.value)},n);return r[t.type](t)},e.platform.requestAnimationFrame=requestAnimationFrame.bind(void 0),e.platform.scheduleCallback=function(t,n){var r,o=n||{},a=o.priority,i=void 0===a?e.TaskPriority.NORMAL:a,l=o.timeoutMs,u=void 0===l?0:l,c=o.forceSync,f=void 0!==c&&c,s=new R({time:(0,e.getTime)(),timeoutMs:u,priority:i,forceSync:f,callback:t});((r={})[e.TaskPriority.HIGH]=function(){return N.hight.push(s)},r[e.TaskPriority.NORMAL]=function(){return N.normal.push(s)},r[e.TaskPriority.LOW]=function(){return s.timeoutMs>0?N.low2.push(s):N.low1.push(s)},r)[s.priority](),L()},e.platform.shouldYeildToHost=function(){return(0,e.getTime)()>=O},e.platform.applyCommit=function(t){var n,r=((n={})[e.EffectTag.CREATE]=function(){null!==t.nativeElement&&(h&&h(t.nativeElement),function(t){var n,r=x(t).nativeElement,o=r.childNodes;0===o.length||function(e,t){for(var n,r=e;r;){if((null===(n=null==r?void 0:r.parent)||void 0===n?void 0:n.nativeElement)===t)return r.idx;r=r.parent}return-1}(t,r)>o.length-1?(n=(g.get(r)||{fragment:document.createDocumentFragment(),callback:function(){}}).fragment,g.set(r,{fragment:n,callback:function(){r.appendChild(n)}}),n.appendChild(t.nativeElement),t.markMountedToHost()):(r.insertBefore(t.nativeElement,function(t,n){var r=null;return(0,e.walkFiber)({fiber:t,onLoop:function(e){var t=e.nextFiber,o=e.stop,a=e.resetIsDeepWalking;return t.nativeElement&&t.nativeElement.parentElement===n?(r=t.nativeElement,o()):t.mountedToHost?void 0:a()}}),r}(t,r)),t.markMountedToHost()),function(t,n){var r,o;if((0,e.detectIsTagVirtualNode)(n)){var a=Object.keys(n.attrs);try{for(var i=m(a),l=i.next();!l.done;l=i.next()){var u=l.value,f=n.attrs[u];u!==e.ATTR_REF?(0,e.detectIsFunction)(f)?s(u)&&c({target:t,handler:f,eventName:p(u)}):(0,e.detectIsUndefined)(f)||y[u]||!S({tagName:n.name,value:f,attrName:u,element:t})[u]&&t.setAttribute(u,f):E(f,t)}}catch(e){r={error:e}}finally{try{l&&!l.done&&(o=i.return)&&o.call(i)}finally{if(r)throw r.error}}}}(t.nativeElement,t.instance)}(t))},n[e.EffectTag.UPDATE]=function(){var n,r,o;null!==t.nativeElement&&(0,e.detectIsVirtualNode)(t.alternate.instance)&&(0,e.detectIsVirtualNode)(t.instance)&&(h&&h(t.nativeElement),n=t.nativeElement,r=t.alternate.instance,o=t.instance,(0,e.detectIsTextVirtualNode)(r)&&(0,e.detectIsTextVirtualNode)(o)&&r.value!==o.value?n.textContent=o.value:(0,e.detectIsTagVirtualNode)(r)&&(0,e.detectIsTagVirtualNode)(o)&&function(t,n,r){var o,a,i=new Set(d(d([],v(Object.keys(n.attrs)),!1),v(Object.keys(r.attrs)),!1));try{for(var l=m(i),u=l.next();!u.done;u=l.next()){var f=u.value,g=n.attrs[f],h=r.attrs[f];f!==e.ATTR_REF?(0,e.detectIsUndefined)(h)?t.removeAttribute(f):(0,e.detectIsFunction)(g)?s(f)&&g!==h&&c({target:t,handler:h,eventName:p(f)}):y[f]||g===h||!S({tagName:r.name,value:h,attrName:f,element:t})[f]&&t.setAttribute(f,h):E(g,t)}}catch(e){o={error:e}}finally{try{u&&!u.done&&(a=l.return)&&a.call(l)}finally{if(o)throw o.error}}}(n,r,o))},n[e.EffectTag.DELETE]=function(){return function(t){var n=x(t);(0,e.walkFiber)({fiber:t,onLoop:function(e){var r=e.nextFiber,o=e.isReturn,a=e.resetIsDeepWalking,l=e.stop;return r===t.nextSibling||r===t.parent?l():!o&&r.nativeElement?(!i(r.instance)&&n.nativeElement.removeChild(r.nativeElement),a()):void 0}})}(t)},n[e.EffectTag.SKIP]=function(){},n);r[t.effectTag]()},e.platform.finishCommitWork=function(){var e,t;try{for(var n=m(g.values()),r=n.next();!r.done;r=n.next())(0,r.value.callback)()}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}g=new Map},e.platform.detectIsPortal=i,e.platform.unmountPortal=function(e){var t=l(e.instance);t&&(t.innerHTML="")};var D=new Map;function H(t,n){if(!(n instanceof Element))throw new Error("[Dark]: render receives only Element as container!");var r=!(0,e.detectIsUndefined)(D.get(n)),o=null;r?o=D.get(n):(o=D.size,D.set(n,o),n.innerHTML=""),e.platform.scheduleCallback((function(){e.rootStore.set(o);var a=e.currentRootStore.get(),i=new e.Fiber({nativeElement:n,instance:new e.TagVirtualNode({name:e.ROOT,children:(0,e.flatten)([t||(0,e.createEmptyVirtualNode)()])}),alternate:a,effectTag:r?e.EffectTag.UPDATE:e.EffectTag.CREATE});a&&(a.alternate=null),e.fiberMountStore.reset(),e.wipRootStore.set(i),e.nextUnitOfWorkStore.set(i)}),{priority:e.TaskPriority.NORMAL,forceSync:e.isLayoutEffectsZone.get()})}function U(t){return{render:function(e){return H(e,t)},unmount:function(){var n=D.get(t);(0,e.unmountRoot)(n,(function(){D.delete(t),t.innerHTML=""}))}}}var V=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,a=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i},W=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__317__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\r\n type Fiber,\r\n type DarkElement,\r\n type ComponentFactory,\r\n createComponent,\r\n detectIsComponentFactory,\r\n useMemo,\r\n} from '@dark-engine/core';\r\n\r\nconst $$portal = Symbol('portal');\r\n\r\nfunction createPortal(slot: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n throw new Error(`[Dark]: createPortal receives only Element as container!`);\r\n }\r\n\r\n return Portal({ [$$portal]: container, slot });\r\n}\r\n\r\ntype PortalProps = {\r\n [$$portal]: Element;\r\n slot: DarkElement;\r\n};\r\n\r\nconst Portal = createComponent(\r\n ({ slot, ...rest }) => {\r\n useMemo(() => (rest[$$portal].innerHTML = ''), []);\r\n\r\n return slot;\r\n },\r\n { token: $$portal },\r\n);\r\n\r\nconst detectIsPortal = (factory: unknown): factory is ComponentFactory =>\r\n detectIsComponentFactory(factory) && factory.token === $$portal;\r\n\r\nconst getPortalContainer = (factory: unknown): Element | null =>\r\n detectIsPortal(factory) ? factory.props[$$portal] : null;\r\n\r\nfunction unmountPortal(fiber: Fiber) {\r\n const container = getPortalContainer(fiber.instance);\r\n\r\n if (container) {\r\n container.innerHTML = '';\r\n }\r\n}\r\n\r\nexport { createPortal, detectIsPortal, getPortalContainer, unmountPortal };\r\n","import { detectIsFunction, eventsStore } from '@dark-engine/core';\r\n\r\ntype BrowserEventConstructor = (type: string, event: Event) => void;\r\n\r\nclass SyntheticEvent {\r\n public type = '';\r\n public sourceEvent: E = null;\r\n public target: T = null;\r\n private propagation = true;\r\n\r\n constructor(options: Pick, 'sourceEvent' | 'target'>) {\r\n this.type = options.sourceEvent.type;\r\n this.sourceEvent = options.sourceEvent;\r\n this.target = options.target;\r\n }\r\n\r\n public stopPropagation() {\r\n this.propagation = false;\r\n this.sourceEvent.stopPropagation();\r\n }\r\n\r\n public preventDefault() {\r\n this.sourceEvent.preventDefault();\r\n }\r\n\r\n public getPropagation() {\r\n return this.propagation;\r\n }\r\n}\r\n\r\ntype DelegateEventOptions = {\r\n target: Element;\r\n eventName: string;\r\n handler: (e: Event) => void;\r\n};\r\n\r\nfunction delegateEvent(options: DelegateEventOptions) {\r\n const { target, eventName, handler } = options;\r\n const eventsMap = eventsStore.get();\r\n const handlerMap = eventsMap.get(eventName);\r\n\r\n if (!handlerMap) {\r\n const rootHandler = (event: Event) => {\r\n const fireEvent = eventsMap.get(eventName).get(event.target);\r\n const target = event.target as Element;\r\n let syntheticEvent: SyntheticEvent = null;\r\n\r\n if (detectIsFunction(fireEvent)) {\r\n syntheticEvent = new SyntheticEvent({\r\n sourceEvent: event,\r\n target,\r\n });\r\n fireEvent(syntheticEvent);\r\n }\r\n\r\n if (syntheticEvent ? syntheticEvent.getPropagation() : target.parentElement) {\r\n target.parentElement.dispatchEvent(new (event.constructor as BrowserEventConstructor)(event.type, event));\r\n }\r\n };\r\n\r\n eventsMap.set(eventName, new WeakMap([[target, handler]]));\r\n document.addEventListener(eventName, rootHandler, true);\r\n eventsStore.addUnsubscriber(() => document.removeEventListener(eventName, rootHandler, true));\r\n } else {\r\n handlerMap.set(target, handler);\r\n }\r\n}\r\n\r\nconst detectIsEvent = (attrName: string) => attrName.startsWith('on');\r\n\r\nconst getEventName = (attrName: string) => attrName.slice(2, attrName.length).toLowerCase();\r\n\r\nexport { SyntheticEvent, delegateEvent, detectIsEvent, getEventName };\r\n","import {\r\n type Fiber,\r\n type VirtualNode,\r\n type TagVirtualNode,\r\n type TextVirtualNode,\r\n type CommentVirtualNode,\r\n type MutableRef,\r\n ATTR_KEY,\r\n ATTR_REF,\r\n EffectTag,\r\n detectIsFunction,\r\n detectIsUndefined,\r\n NodeType,\r\n detectIsVirtualNode,\r\n detectIsTagVirtualNode,\r\n detectIsTextVirtualNode,\r\n detectIsRef,\r\n walkFiber,\r\n} from '@dark-engine/core';\r\nimport { detectIsPortal, getPortalContainer } from '../portal';\r\nimport { delegateEvent, detectIsEvent, getEventName } from '../events';\r\nimport type { DOMElement, DOMFragment } from './types';\r\n\r\nconst attrBlackListMap = {\r\n [ATTR_KEY]: true,\r\n [ATTR_REF]: true,\r\n};\r\n\r\nlet fragmentsMap: Map = new Map();\r\n\r\nlet trackUpdate: (nativeElement: Element) => void = null;\r\n\r\nfunction createNativeElement(vNode: VirtualNode): DOMElement {\r\n const map = {\r\n [NodeType.TAG]: (vNode: VirtualNode) => {\r\n const tagNode = vNode as TagVirtualNode;\r\n const node = detectIsSvgElement(tagNode.name)\r\n ? document.createElementNS('http://www.w3.org/2000/svg', tagNode.name)\r\n : document.createElement(tagNode.name);\r\n\r\n return node;\r\n },\r\n [NodeType.TEXT]: (vNode: VirtualNode) => {\r\n const textNode = vNode as TextVirtualNode;\r\n const node = document.createTextNode(textNode.value);\r\n\r\n return node;\r\n },\r\n [NodeType.COMMENT]: (vNode: VirtualNode) => {\r\n const commentNode = vNode as CommentVirtualNode;\r\n const node = document.createComment(commentNode.value);\r\n\r\n return node;\r\n },\r\n };\r\n\r\n return map[vNode.type](vNode);\r\n}\r\n\r\nfunction detectIsSvgElement(tagName: string) {\r\n const tagMap = {\r\n svg: true,\r\n circle: true,\r\n ellipse: true,\r\n g: true,\r\n text: true,\r\n tspan: true,\r\n textPath: true,\r\n path: true,\r\n polygon: true,\r\n polyline: true,\r\n line: true,\r\n rect: true,\r\n use: true,\r\n image: true,\r\n symbol: true,\r\n defs: true,\r\n linearGradient: true,\r\n radialGradient: true,\r\n stop: true,\r\n clipPath: true,\r\n pattern: true,\r\n mask: true,\r\n marker: true,\r\n };\r\n\r\n return Boolean(tagMap[tagName]);\r\n}\r\n\r\nfunction applyRef(ref: MutableRef, element: Element) {\r\n if (detectIsRef(ref)) {\r\n ref.current = element;\r\n }\r\n}\r\n\r\nfunction addAttributes(element: Element, vNode: VirtualNode) {\r\n if (!detectIsTagVirtualNode(vNode)) return;\r\n const attrNames = Object.keys(vNode.attrs);\r\n\r\n for (const attrName of attrNames) {\r\n const attrValue = vNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(attrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (detectIsFunction(attrValue)) {\r\n if (detectIsEvent(attrName)) {\r\n delegateEvent({\r\n target: element,\r\n handler: attrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!detectIsUndefined(attrValue) && !attrBlackListMap[attrName]) {\r\n upgradeInputAttributes({\r\n tagName: vNode.name,\r\n value: attrValue,\r\n attrName,\r\n element,\r\n });\r\n\r\n element.setAttribute(attrName, attrValue);\r\n }\r\n }\r\n}\r\n\r\nfunction updateAttributes(element: Element, vNode: TagVirtualNode, nextVNode: TagVirtualNode) {\r\n const attrNames = new Set([...Object.keys(vNode.attrs), ...Object.keys(nextVNode.attrs)]);\r\n\r\n for (const attrName of attrNames) {\r\n const prevAttrValue = vNode.attrs[attrName];\r\n const nextAttrValue = nextVNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(prevAttrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (!detectIsUndefined(nextAttrValue)) {\r\n if (detectIsFunction(prevAttrValue)) {\r\n if (detectIsEvent(attrName) && prevAttrValue !== nextAttrValue) {\r\n delegateEvent({\r\n target: element,\r\n handler: nextAttrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!attrBlackListMap[attrName] && prevAttrValue !== nextAttrValue) {\r\n upgradeInputAttributes({\r\n tagName: nextVNode.name,\r\n value: nextAttrValue,\r\n attrName,\r\n element,\r\n });\r\n\r\n element.setAttribute(attrName, nextAttrValue);\r\n }\r\n } else {\r\n element.removeAttribute(attrName);\r\n }\r\n }\r\n}\r\n\r\ntype UpgradeInputAttributesOptions = {\r\n tagName: string;\r\n element: Element;\r\n attrName: string;\r\n value: string | boolean;\r\n};\r\n\r\nfunction upgradeInputAttributes(options: UpgradeInputAttributesOptions) {\r\n const { tagName, element, attrName, value } = options;\r\n const map = {\r\n input: () => {\r\n const attrsMap = {\r\n value: true,\r\n checked: true,\r\n };\r\n\r\n if (attrsMap[attrName]) {\r\n element[attrName] = value;\r\n }\r\n },\r\n option: () => {\r\n const attrsMap = {\r\n selected: true,\r\n };\r\n\r\n if (attrsMap[attrName]) {\r\n element[attrName] = value;\r\n }\r\n },\r\n };\r\n\r\n map[tagName] && map[tagName]();\r\n}\r\n\r\nfunction getParentFiberWithNativeElement(fiber: Fiber): Fiber {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n nextFiber = nextFiber.parent;\r\n\r\n if (detectIsPortal(nextFiber.instance)) {\r\n nextFiber.nativeElement = getPortalContainer(nextFiber.instance);\r\n }\r\n\r\n if (nextFiber.nativeElement) return nextFiber;\r\n }\r\n\r\n return nextFiber;\r\n}\r\n\r\nfunction getNodeOnTheRight(fiber: Fiber, parentElement: Element) {\r\n let node: Element = null;\r\n\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, stop, resetIsDeepWalking }) => {\r\n if (nextFiber.nativeElement && nextFiber.nativeElement.parentElement === parentElement) {\r\n node = nextFiber.nativeElement;\r\n\r\n return stop();\r\n }\r\n\r\n if (!nextFiber.mountedToHost) {\r\n return resetIsDeepWalking();\r\n }\r\n },\r\n });\r\n\r\n return node;\r\n}\r\n\r\nfunction getChildIndex(fiber: Fiber, parentNativeElement: Element) {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (nextFiber?.parent?.nativeElement === parentNativeElement) {\r\n return nextFiber.idx;\r\n }\r\n\r\n nextFiber = nextFiber.parent;\r\n }\r\n\r\n return -1;\r\n}\r\n\r\nfunction commitCreation(fiber: Fiber) {\r\n const parentFiber = getParentFiberWithNativeElement(fiber);\r\n const parentNativeElement = parentFiber.nativeElement;\r\n const childNodes = parentNativeElement.childNodes;\r\n\r\n const append = () => {\r\n const { fragment } =\r\n fragmentsMap.get(parentNativeElement) ||\r\n ({\r\n fragment: document.createDocumentFragment(),\r\n callback: () => {},\r\n } as DOMFragment);\r\n\r\n fragmentsMap.set(parentNativeElement, {\r\n fragment,\r\n callback: () => {\r\n parentNativeElement.appendChild(fragment);\r\n },\r\n });\r\n fragment.appendChild(fiber.nativeElement);\r\n fiber.markMountedToHost();\r\n };\r\n\r\n const insert = () => {\r\n parentNativeElement.insertBefore(fiber.nativeElement, getNodeOnTheRight(fiber, parentNativeElement));\r\n fiber.markMountedToHost();\r\n };\r\n\r\n if (childNodes.length === 0 || getChildIndex(fiber, parentNativeElement) > childNodes.length - 1) {\r\n append();\r\n } else {\r\n insert();\r\n }\r\n\r\n addAttributes(fiber.nativeElement, fiber.instance as VirtualNode);\r\n}\r\n\r\nfunction commitUpdate(nativeElement: Element, instance: VirtualNode, nextInstance: VirtualNode) {\r\n if (\r\n detectIsTextVirtualNode(instance) &&\r\n detectIsTextVirtualNode(nextInstance) &&\r\n instance.value !== nextInstance.value\r\n ) {\r\n return (nativeElement.textContent = nextInstance.value);\r\n }\r\n\r\n if (detectIsTagVirtualNode(instance) && detectIsTagVirtualNode(nextInstance)) {\r\n return updateAttributes(nativeElement, instance, nextInstance);\r\n }\r\n}\r\n\r\nfunction commitDeletion(fiber: Fiber) {\r\n const parentFiber = getParentFiberWithNativeElement(fiber);\r\n\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, isReturn, resetIsDeepWalking, stop }) => {\r\n if (nextFiber === fiber.nextSibling || nextFiber === fiber.parent) {\r\n return stop();\r\n }\r\n\r\n if (!isReturn && nextFiber.nativeElement) {\r\n !detectIsPortal(nextFiber.instance) && parentFiber.nativeElement.removeChild(nextFiber.nativeElement);\r\n\r\n return resetIsDeepWalking();\r\n }\r\n },\r\n });\r\n}\r\n\r\nfunction applyCommit(fiber: Fiber) {\r\n const map: Record void> = {\r\n [EffectTag.CREATE]: () => {\r\n if (fiber.nativeElement === null) return;\r\n trackUpdate && trackUpdate(fiber.nativeElement);\r\n commitCreation(fiber);\r\n },\r\n [EffectTag.UPDATE]: () => {\r\n if (\r\n fiber.nativeElement === null ||\r\n !detectIsVirtualNode(fiber.alternate.instance) ||\r\n !detectIsVirtualNode(fiber.instance)\r\n ) {\r\n return;\r\n }\r\n trackUpdate && trackUpdate(fiber.nativeElement);\r\n commitUpdate(fiber.nativeElement, fiber.alternate.instance, fiber.instance);\r\n },\r\n [EffectTag.DELETE]: () => commitDeletion(fiber),\r\n [EffectTag.SKIP]: () => {},\r\n };\r\n\r\n map[fiber.effectTag]();\r\n}\r\n\r\nfunction finishCommitWork() {\r\n for (const { callback } of fragmentsMap.values()) {\r\n callback();\r\n }\r\n\r\n fragmentsMap = new Map();\r\n}\r\n\r\nfunction setTrackUpdate(fn: typeof trackUpdate) {\r\n trackUpdate = fn;\r\n}\r\n\r\nexport { createNativeElement, applyCommit, finishCommitWork, setTrackUpdate };\r\n","import { type ScheduleCallbackOptions, getTime, workLoop, wipRootStore, TaskPriority } from '@dark-engine/core';\r\n\r\ntype Callback = () => boolean;\r\n\r\ntype QueueByPriority = {\r\n hight: Array;\r\n normal: Array;\r\n low1: Array;\r\n low2: Array;\r\n};\r\n\r\nconst queueByPriority: QueueByPriority = {\r\n hight: [],\r\n normal: [],\r\n low1: [],\r\n low2: [],\r\n};\r\nconst YEILD_INTERVAL = 10;\r\nlet scheduledCallback: Callback = null;\r\nlet deadline = 0;\r\nlet isMessageLoopRunning = false;\r\nlet currentTask: Task = null;\r\n\r\nclass Task {\r\n public static nextTaskId = 0;\r\n public id: number;\r\n public time: number;\r\n public timeoutMs: number;\r\n public priority: TaskPriority;\r\n public forceSync: boolean;\r\n public callback: () => void;\r\n\r\n constructor(options: Omit) {\r\n this.id = ++Task.nextTaskId;\r\n this.time = options.time;\r\n this.timeoutMs = options.timeoutMs;\r\n this.priority = options.priority;\r\n this.forceSync = options.forceSync;\r\n this.callback = options.callback;\r\n }\r\n}\r\n\r\nconst shouldYeildToHost = () => getTime() >= deadline;\r\n\r\nfunction scheduleCallback(callback: () => void, options?: ScheduleCallbackOptions) {\r\n const { priority = TaskPriority.NORMAL, timeoutMs = 0, forceSync = false } = options || {};\r\n const task = new Task({ time: getTime(), timeoutMs, priority, forceSync, callback });\r\n const map: Record void> = {\r\n [TaskPriority.HIGH]: () => queueByPriority.hight.push(task),\r\n [TaskPriority.NORMAL]: () => queueByPriority.normal.push(task),\r\n [TaskPriority.LOW]: () => (task.timeoutMs > 0 ? queueByPriority.low2.push(task) : queueByPriority.low1.push(task)),\r\n };\r\n\r\n map[task.priority]();\r\n executeTasks();\r\n}\r\n\r\nfunction pick(queue: Array) {\r\n if (!queue.length) return false;\r\n currentTask = queue.shift();\r\n\r\n currentTask.callback();\r\n\r\n if (currentTask.forceSync) {\r\n requestCallbackSync(workLoop);\r\n } else {\r\n requestCallback(workLoop);\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction executeTasks() {\r\n const isBusy = Boolean(wipRootStore.get());\r\n\r\n if (!isBusy) {\r\n checkOverdueTasks() ||\r\n pick(queueByPriority.hight) ||\r\n pick(queueByPriority.normal) ||\r\n requestIdleCallback(() => pick(queueByPriority.low1) || pick(queueByPriority.low2));\r\n }\r\n}\r\n\r\nfunction checkOverdueTasks() {\r\n const [task] = queueByPriority.low2;\r\n\r\n if (task && getTime() - task.time > task.timeoutMs) {\r\n pick(queueByPriority.low2);\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction performWorkUntilDeadline() {\r\n if (scheduledCallback) {\r\n deadline = getTime() + YEILD_INTERVAL;\r\n\r\n try {\r\n const hasMoreWork = scheduledCallback();\r\n\r\n if (!hasMoreWork) {\r\n currentTask = null;\r\n isMessageLoopRunning = false;\r\n scheduledCallback = null;\r\n executeTasks();\r\n } else {\r\n port.postMessage(null);\r\n }\r\n } catch (error) {\r\n port.postMessage(null);\r\n throw error;\r\n }\r\n } else {\r\n isMessageLoopRunning = false;\r\n }\r\n}\r\n\r\nfunction requestCallback(callback: Callback) {\r\n if (process.env.NODE_ENV === 'test') {\r\n return requestCallbackSync(callback);\r\n }\r\n\r\n scheduledCallback = callback;\r\n\r\n if (!isMessageLoopRunning) {\r\n isMessageLoopRunning = true;\r\n port.postMessage(null);\r\n }\r\n}\r\n\r\nfunction requestCallbackSync(callback: Callback) {\r\n while (callback()) {\r\n //\r\n }\r\n executeTasks();\r\n currentTask = null;\r\n}\r\n\r\nlet channel: MessageChannel = null;\r\nlet port: MessagePort = null;\r\n\r\nfunction setup() {\r\n if (process.env.NODE_ENV === 'test') {\r\n return;\r\n }\r\n\r\n channel = new MessageChannel();\r\n port = channel.port2;\r\n\r\n channel.port1.onmessage = performWorkUntilDeadline;\r\n}\r\n\r\nsetup();\r\n\r\nexport { shouldYeildToHost, scheduleCallback };\r\n","import {\r\n type DarkElement,\r\n type VirtualNodeFactory,\r\n type ComponentFactory,\r\n ROOT,\r\n Fiber,\r\n EffectTag,\r\n platform,\r\n flatten,\r\n detectIsUndefined,\r\n TagVirtualNode,\r\n rootStore,\r\n wipRootStore,\r\n currentRootStore,\r\n nextUnitOfWorkStore,\r\n fiberMountStore,\r\n TaskPriority,\r\n createEmptyVirtualNode,\r\n isLayoutEffectsZone,\r\n} from '@dark-engine/core';\r\nimport { createNativeElement, applyCommit, finishCommitWork } from '../dom';\r\nimport { detectIsPortal, unmountPortal } from '../portal';\r\nimport { scheduleCallback, shouldYeildToHost } from '../scheduler';\r\n\r\nplatform.createNativeElement = createNativeElement as typeof platform.createNativeElement;\r\nplatform.requestAnimationFrame = requestAnimationFrame.bind(this);\r\nplatform.scheduleCallback = scheduleCallback;\r\nplatform.shouldYeildToHost = shouldYeildToHost;\r\nplatform.applyCommit = applyCommit;\r\nplatform.finishCommitWork = finishCommitWork;\r\nplatform.detectIsPortal = detectIsPortal;\r\nplatform.unmountPortal = unmountPortal;\r\n\r\nconst roots = new Map();\r\n\r\nfunction render(element: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n throw new Error(`[Dark]: render receives only Element as container!`);\r\n }\r\n\r\n const isMounted = !detectIsUndefined(roots.get(container));\r\n let rootId = null;\r\n\r\n if (!isMounted) {\r\n rootId = roots.size;\r\n\r\n roots.set(container, rootId);\r\n container.innerHTML = '';\r\n } else {\r\n rootId = roots.get(container);\r\n }\r\n\r\n const callback = () => {\r\n rootStore.set(rootId); // important order!\r\n const currentRoot = currentRootStore.get();\r\n const fiber = new Fiber({\r\n nativeElement: container,\r\n instance: new TagVirtualNode({\r\n name: ROOT,\r\n children: flatten([element || createEmptyVirtualNode()]) as Array,\r\n }),\r\n alternate: currentRoot,\r\n effectTag: isMounted ? EffectTag.UPDATE : EffectTag.CREATE,\r\n });\r\n\r\n currentRoot && (currentRoot.alternate = null);\r\n fiberMountStore.reset();\r\n wipRootStore.set(fiber);\r\n nextUnitOfWorkStore.set(fiber);\r\n };\r\n\r\n platform.scheduleCallback(callback, { priority: TaskPriority.NORMAL, forceSync: isLayoutEffectsZone.get() });\r\n}\r\n\r\nexport { render, roots };\r\n","import { type DarkElement, unmountRoot } from '@dark-engine/core';\r\nimport { render, roots } from '../render';\r\n\r\nfunction createRoot(container: Element) {\r\n return {\r\n render: (element: DarkElement) => render(element, container),\r\n unmount: () => {\r\n const rootId = roots.get(container);\r\n\r\n unmountRoot(rootId, () => {\r\n roots.delete(container);\r\n container.innerHTML = '';\r\n });\r\n },\r\n };\r\n}\r\n\r\nexport { createRoot };\r\n","import { useMemo, detectIsUndefined } from '@dark-engine/core';\r\n\r\nfunction styled(strings: TemplateStringsArray, ...args: Array): string {\r\n const style = useMemo(() => {\r\n return strings\r\n .map((x, idx) => x + (!detectIsUndefined(args[idx]) ? args[idx] : ''))\r\n .join('')\r\n .replace(/;\\s*/gm, ';')\r\n .replace(/:\\s*/gm, ':')\r\n .trim();\r\n }, [strings, ...args]);\r\n\r\n return style;\r\n}\r\n\r\ntype Style = Record;\r\n\r\ntype Config = (x: typeof styled) => T;\r\n\r\nfunction useStyle(config: Config) {\r\n return config(styled);\r\n}\r\n\r\nexport { useStyle };\r\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__317__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","$$portal","createPortal","slot","container","Element","Error","Portal","createComponent","rest","useMemo","innerHTML","token","detectIsPortal","detectIsComponentFactory","getPortalContainer","props","options","type","sourceEvent","target","propagation","this","stopPropagation","preventDefault","getPropagation","delegateEvent","eventName","handler","eventsMap","eventsStore","handlerMap","set","event","fireEvent","syntheticEvent","detectIsFunction","SyntheticEvent","parentElement","dispatchEvent","constructor","WeakMap","document","addEventListener","removeEventListener","detectIsEvent","attrName","startsWith","getEventName","slice","length","toLowerCase","attrBlackListMap","ATTR_KEY","ATTR_REF","fragmentsMap","Map","trackUpdate","applyRef","ref","element","detectIsRef","current","upgradeInputAttributes","tagName","map","input","checked","option","selected","getParentFiberWithNativeElement","fiber","nextFiber","parent","instance","nativeElement","setTrackUpdate","fn","queueByPriority","hight","normal","low1","low2","scheduledCallback","deadline","isMessageLoopRunning","currentTask","id","Task","nextTaskId","time","timeoutMs","priority","forceSync","callback","pick","queue","shift","executeTasks","requestCallbackSync","workLoop","port","postMessage","task","Boolean","wipRootStore","getTime","requestIdleCallback","channel","MessageChannel","port2","port1","onmessage","error","platform","vNode","NodeType","tagNode","name","svg","circle","ellipse","g","text","tspan","textPath","path","polygon","polyline","line","rect","use","image","symbol","defs","linearGradient","radialGradient","stop","clipPath","pattern","mask","marker","createElementNS","createElement","textNode","createTextNode","commentNode","createComment","requestAnimationFrame","bind","TaskPriority","push","EffectTag","fragment","parentNativeElement","childNodes","idx","getChildIndex","createDocumentFragment","appendChild","markMountedToHost","insertBefore","node","walkFiber","onLoop","resetIsDeepWalking","mountedToHost","getNodeOnTheRight","detectIsTagVirtualNode","attrNames","keys","attrs","attrValue","detectIsUndefined","setAttribute","addAttributes","commitCreation","nextInstance","detectIsVirtualNode","alternate","detectIsTextVirtualNode","textContent","nextVNode","Set","prevAttrValue","nextAttrValue","removeAttribute","updateAttributes","parentFiber","isReturn","nextSibling","removeChild","commitDeletion","effectTag","values","roots","render","isMounted","rootId","size","rootStore","currentRoot","currentRootStore","Fiber","TagVirtualNode","ROOT","children","flatten","createEmptyVirtualNode","fiberMountStore","nextUnitOfWorkStore","isLayoutEffectsZone","createRoot","unmount","unmountRoot","styled","strings","style","x","args","join","replace","trim","useStyle","config"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"dark-platform-browser.production.min.js","mappings":"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","sources":["webpack://DarkPlatformBrowser/webpack/universalModuleDefinition","webpack://DarkPlatformBrowser/external umd {\"root\":\"DarkCore\",\"commonjs2\":\"@dark-engine/core\",\"commonjs\":\"@dark-engine/core\",\"amd\":\"@dark-engine/core\"}","webpack://DarkPlatformBrowser/webpack/bootstrap","webpack://DarkPlatformBrowser/webpack/runtime/define property getters","webpack://DarkPlatformBrowser/webpack/runtime/hasOwnProperty shorthand","webpack://DarkPlatformBrowser/webpack/runtime/make namespace object","webpack://DarkPlatformBrowser/./src/portal/portal.tsx","webpack://DarkPlatformBrowser/./src/events/events.ts","webpack://DarkPlatformBrowser/./src/dom/dom.ts","webpack://DarkPlatformBrowser/./src/scheduler/scheduler.ts","webpack://DarkPlatformBrowser/./src/render/render.ts","webpack://DarkPlatformBrowser/./src/create-root/create-root.tsx","webpack://DarkPlatformBrowser/./src/use-style/use-style.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@dark-engine/core\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"DarkPlatformBrowser\", [\"@dark-engine/core\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DarkPlatformBrowser\"] = factory(require(\"@dark-engine/core\"));\n\telse\n\t\troot[\"DarkPlatformBrowser\"] = factory(root[\"DarkCore\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE__317__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__317__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\r\n type Fiber,\r\n type DarkElement,\r\n type ComponentFactory,\r\n createComponent,\r\n detectIsComponentFactory,\r\n useMemo,\r\n} from '@dark-engine/core';\r\n\r\nconst $$portal = Symbol('portal');\r\n\r\nfunction createPortal(slot: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n throw new Error(`[Dark]: createPortal receives only Element as container!`);\r\n }\r\n\r\n return Portal({ [$$portal]: container, slot });\r\n}\r\n\r\ntype PortalProps = {\r\n [$$portal]: Element;\r\n slot: DarkElement;\r\n};\r\n\r\nconst Portal = createComponent(\r\n ({ slot, ...rest }) => {\r\n useMemo(() => (rest[$$portal].innerHTML = ''), []);\r\n\r\n return slot;\r\n },\r\n { token: $$portal },\r\n);\r\n\r\nconst detectIsPortal = (factory: unknown): factory is ComponentFactory =>\r\n detectIsComponentFactory(factory) && factory.token === $$portal;\r\n\r\nconst getPortalContainer = (factory: unknown): Element | null =>\r\n detectIsPortal(factory) ? factory.props[$$portal] : null;\r\n\r\nfunction unmountPortal(fiber: Fiber) {\r\n const container = getPortalContainer(fiber.instance);\r\n\r\n if (container) {\r\n container.innerHTML = '';\r\n }\r\n}\r\n\r\nexport { createPortal, detectIsPortal, getPortalContainer, unmountPortal };\r\n","import { detectIsFunction, eventsStore } from '@dark-engine/core';\r\n\r\ntype BrowserEventConstructor = (type: string, event: Event) => void;\r\n\r\nclass SyntheticEvent {\r\n public type = '';\r\n public sourceEvent: E = null;\r\n public target: T = null;\r\n private propagation = true;\r\n\r\n constructor(options: Pick, 'sourceEvent' | 'target'>) {\r\n this.type = options.sourceEvent.type;\r\n this.sourceEvent = options.sourceEvent;\r\n this.target = options.target;\r\n }\r\n\r\n public stopPropagation() {\r\n this.propagation = false;\r\n this.sourceEvent.stopPropagation();\r\n }\r\n\r\n public preventDefault() {\r\n this.sourceEvent.preventDefault();\r\n }\r\n\r\n public getPropagation() {\r\n return this.propagation;\r\n }\r\n}\r\n\r\ntype DelegateEventOptions = {\r\n target: Element;\r\n eventName: string;\r\n handler: (e: Event) => void;\r\n};\r\n\r\nfunction delegateEvent(options: DelegateEventOptions) {\r\n const { target, eventName, handler } = options;\r\n const eventsMap = eventsStore.get();\r\n const handlerMap = eventsMap.get(eventName);\r\n\r\n if (!handlerMap) {\r\n const rootHandler = (event: Event) => {\r\n const fireEvent = eventsMap.get(eventName).get(event.target);\r\n const target = event.target as Element;\r\n let syntheticEvent: SyntheticEvent = null;\r\n\r\n if (detectIsFunction(fireEvent)) {\r\n syntheticEvent = new SyntheticEvent({\r\n sourceEvent: event,\r\n target,\r\n });\r\n fireEvent(syntheticEvent);\r\n }\r\n\r\n if (syntheticEvent ? syntheticEvent.getPropagation() : target.parentElement) {\r\n target.parentElement.dispatchEvent(new (event.constructor as BrowserEventConstructor)(event.type, event));\r\n }\r\n };\r\n\r\n eventsMap.set(eventName, new WeakMap([[target, handler]]));\r\n document.addEventListener(eventName, rootHandler, true);\r\n eventsStore.addUnsubscriber(() => document.removeEventListener(eventName, rootHandler, true));\r\n } else {\r\n handlerMap.set(target, handler);\r\n }\r\n}\r\n\r\nconst detectIsEvent = (attrName: string) => attrName.startsWith('on');\r\n\r\nconst getEventName = (attrName: string) => attrName.slice(2, attrName.length).toLowerCase();\r\n\r\nexport { SyntheticEvent, delegateEvent, detectIsEvent, getEventName };\r\n","import {\r\n type Fiber,\r\n type VirtualNode,\r\n type TagVirtualNode,\r\n type TextVirtualNode,\r\n type CommentVirtualNode,\r\n type MutableRef,\r\n ATTR_KEY,\r\n ATTR_REF,\r\n EffectTag,\r\n detectIsFunction,\r\n detectIsUndefined,\r\n NodeType,\r\n detectIsVirtualNode,\r\n detectIsTagVirtualNode,\r\n detectIsTextVirtualNode,\r\n detectIsRef,\r\n walkFiber,\r\n} from '@dark-engine/core';\r\nimport { detectIsPortal, getPortalContainer } from '../portal';\r\nimport { delegateEvent, detectIsEvent, getEventName } from '../events';\r\nimport type { DOMElement, DOMFragment } from './types';\r\n\r\nconst attrBlackListMap = {\r\n [ATTR_KEY]: true,\r\n [ATTR_REF]: true,\r\n void: true,\r\n};\r\n\r\nlet fragmentsMap: Map = new Map();\r\n\r\nlet trackUpdate: (nativeElement: Element) => void = null;\r\n\r\nfunction createNativeElement(vNode: VirtualNode): DOMElement {\r\n const map = {\r\n [NodeType.TAG]: (vNode: VirtualNode) => {\r\n const tagNode = vNode as TagVirtualNode;\r\n const node = detectIsSvgElement(tagNode.name)\r\n ? document.createElementNS('http://www.w3.org/2000/svg', tagNode.name)\r\n : document.createElement(tagNode.name);\r\n\r\n return node;\r\n },\r\n [NodeType.TEXT]: (vNode: VirtualNode) => {\r\n const textNode = vNode as TextVirtualNode;\r\n const node = document.createTextNode(textNode.value);\r\n\r\n return node;\r\n },\r\n [NodeType.COMMENT]: (vNode: VirtualNode) => {\r\n const commentNode = vNode as CommentVirtualNode;\r\n const node = document.createComment(commentNode.value);\r\n\r\n return node;\r\n },\r\n };\r\n\r\n return map[vNode.type](vNode);\r\n}\r\n\r\nfunction detectIsSvgElement(tagName: string) {\r\n const tagMap = {\r\n svg: true,\r\n circle: true,\r\n ellipse: true,\r\n g: true,\r\n text: true,\r\n tspan: true,\r\n textPath: true,\r\n path: true,\r\n polygon: true,\r\n polyline: true,\r\n line: true,\r\n rect: true,\r\n use: true,\r\n image: true,\r\n symbol: true,\r\n defs: true,\r\n linearGradient: true,\r\n radialGradient: true,\r\n stop: true,\r\n clipPath: true,\r\n pattern: true,\r\n mask: true,\r\n marker: true,\r\n };\r\n\r\n return Boolean(tagMap[tagName]);\r\n}\r\n\r\nfunction applyRef(ref: MutableRef, element: Element) {\r\n if (detectIsRef(ref)) {\r\n ref.current = element;\r\n }\r\n}\r\n\r\nfunction addAttributes(element: Element, vNode: VirtualNode) {\r\n if (!detectIsTagVirtualNode(vNode)) return;\r\n const attrNames = Object.keys(vNode.attrs);\r\n\r\n for (const attrName of attrNames) {\r\n const attrValue = vNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(attrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (detectIsFunction(attrValue)) {\r\n if (detectIsEvent(attrName)) {\r\n delegateEvent({\r\n target: element,\r\n handler: attrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!detectIsUndefined(attrValue) && !attrBlackListMap[attrName]) {\r\n const stopAttrsMap = upgradeInputAttributes({\r\n tagName: vNode.name,\r\n value: attrValue,\r\n attrName,\r\n element,\r\n });\r\n\r\n !stopAttrsMap[attrName] && element.setAttribute(attrName, attrValue);\r\n }\r\n }\r\n}\r\n\r\nfunction updateAttributes(element: Element, vNode: TagVirtualNode, nextVNode: TagVirtualNode) {\r\n const attrNames = new Set([...Object.keys(vNode.attrs), ...Object.keys(nextVNode.attrs)]);\r\n\r\n for (const attrName of attrNames) {\r\n const prevAttrValue = vNode.attrs[attrName];\r\n const nextAttrValue = nextVNode.attrs[attrName];\r\n\r\n if (attrName === ATTR_REF) {\r\n applyRef(prevAttrValue as MutableRef, element);\r\n continue;\r\n }\r\n\r\n if (!detectIsUndefined(nextAttrValue)) {\r\n if (detectIsFunction(prevAttrValue)) {\r\n if (detectIsEvent(attrName) && prevAttrValue !== nextAttrValue) {\r\n delegateEvent({\r\n target: element,\r\n handler: nextAttrValue,\r\n eventName: getEventName(attrName),\r\n });\r\n }\r\n } else if (!attrBlackListMap[attrName] && prevAttrValue !== nextAttrValue) {\r\n const stopAttrsMap = upgradeInputAttributes({\r\n tagName: nextVNode.name,\r\n value: nextAttrValue,\r\n attrName,\r\n element,\r\n });\r\n !stopAttrsMap[attrName] && element.setAttribute(attrName, nextAttrValue);\r\n }\r\n } else {\r\n element.removeAttribute(attrName);\r\n }\r\n }\r\n}\r\n\r\nconst INPUT_STOP_ATTRS_MAP = {\r\n value: true,\r\n checked: true,\r\n};\r\n\r\nconst TEXTAREA_STOP_ATTRS_MAP = {\r\n value: true,\r\n};\r\n\r\nconst OPTIONS_STOP_ATTRS_MAP = {\r\n selected: true,\r\n};\r\n\r\nconst DEFAULT_STOP_ATTRS_MAP = {};\r\n\r\ntype PatchedElements = 'input' | 'textarea' | 'option';\r\n\r\ntype UpgradeInputAttributesOptions = {\r\n tagName: string;\r\n element: Element;\r\n attrName: string;\r\n value: string | boolean;\r\n};\r\n\r\nfunction upgradeInputAttributes(options: UpgradeInputAttributesOptions): Record {\r\n const { tagName, element, attrName, value } = options;\r\n const map: Record Record> = {\r\n input: () => {\r\n if (INPUT_STOP_ATTRS_MAP[attrName]) {\r\n element[attrName] = value;\r\n }\r\n\r\n return INPUT_STOP_ATTRS_MAP;\r\n },\r\n textarea: () => {\r\n if (TEXTAREA_STOP_ATTRS_MAP[attrName]) {\r\n element[attrName] = value;\r\n }\r\n\r\n return TEXTAREA_STOP_ATTRS_MAP;\r\n },\r\n option: () => {\r\n if (OPTIONS_STOP_ATTRS_MAP[attrName]) {\r\n element[attrName] = value;\r\n }\r\n\r\n return OPTIONS_STOP_ATTRS_MAP;\r\n },\r\n };\r\n\r\n return map[tagName] ? map[tagName]() : DEFAULT_STOP_ATTRS_MAP;\r\n}\r\n\r\nfunction getParentFiberWithNativeElement(fiber: Fiber): Fiber {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n nextFiber = nextFiber.parent;\r\n\r\n if (detectIsPortal(nextFiber.instance)) {\r\n nextFiber.nativeElement = getPortalContainer(nextFiber.instance);\r\n }\r\n\r\n if (nextFiber.nativeElement) return nextFiber;\r\n }\r\n\r\n return nextFiber;\r\n}\r\n\r\nfunction getNodeOnTheRight(fiber: Fiber, parentElement: Element) {\r\n let node: Element = null;\r\n\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, stop, resetIsDeepWalking }) => {\r\n if (nextFiber.nativeElement && nextFiber.nativeElement.parentElement === parentElement) {\r\n node = nextFiber.nativeElement;\r\n\r\n return stop();\r\n }\r\n\r\n if (!nextFiber.mountedToHost) {\r\n return resetIsDeepWalking();\r\n }\r\n },\r\n });\r\n\r\n return node;\r\n}\r\n\r\nfunction getChildIndex(fiber: Fiber, parentNativeElement: Element) {\r\n let nextFiber = fiber;\r\n\r\n while (nextFiber) {\r\n if (nextFiber?.parent?.nativeElement === parentNativeElement) {\r\n return nextFiber.idx;\r\n }\r\n\r\n nextFiber = nextFiber.parent;\r\n }\r\n\r\n return -1;\r\n}\r\n\r\nfunction commitCreation(fiber: Fiber) {\r\n const parentFiber = getParentFiberWithNativeElement(fiber);\r\n const parentNativeElement = parentFiber.nativeElement;\r\n const childNodes = parentNativeElement.childNodes;\r\n\r\n const append = () => {\r\n const { fragment } =\r\n fragmentsMap.get(parentNativeElement) ||\r\n ({\r\n fragment: document.createDocumentFragment(),\r\n callback: () => {},\r\n } as DOMFragment);\r\n\r\n fragmentsMap.set(parentNativeElement, {\r\n fragment,\r\n callback: () => {\r\n parentNativeElement.appendChild(fragment);\r\n },\r\n });\r\n fragment.appendChild(fiber.nativeElement);\r\n fiber.markMountedToHost();\r\n };\r\n\r\n const insert = () => {\r\n parentNativeElement.insertBefore(fiber.nativeElement, getNodeOnTheRight(fiber, parentNativeElement));\r\n fiber.markMountedToHost();\r\n };\r\n\r\n if (childNodes.length === 0 || getChildIndex(fiber, parentNativeElement) > childNodes.length - 1) {\r\n append();\r\n } else {\r\n insert();\r\n }\r\n\r\n addAttributes(fiber.nativeElement, fiber.instance as VirtualNode);\r\n}\r\n\r\nfunction commitUpdate(nativeElement: Element, instance: VirtualNode, nextInstance: VirtualNode) {\r\n if (\r\n detectIsTextVirtualNode(instance) &&\r\n detectIsTextVirtualNode(nextInstance) &&\r\n instance.value !== nextInstance.value\r\n ) {\r\n return (nativeElement.textContent = nextInstance.value);\r\n }\r\n\r\n if (detectIsTagVirtualNode(instance) && detectIsTagVirtualNode(nextInstance)) {\r\n return updateAttributes(nativeElement, instance, nextInstance);\r\n }\r\n}\r\n\r\nfunction commitDeletion(fiber: Fiber) {\r\n const parentFiber = getParentFiberWithNativeElement(fiber);\r\n\r\n walkFiber({\r\n fiber,\r\n onLoop: ({ nextFiber, isReturn, resetIsDeepWalking, stop }) => {\r\n if (nextFiber === fiber.nextSibling || nextFiber === fiber.parent) {\r\n return stop();\r\n }\r\n\r\n if (!isReturn && nextFiber.nativeElement) {\r\n !detectIsPortal(nextFiber.instance) && parentFiber.nativeElement.removeChild(nextFiber.nativeElement);\r\n\r\n return resetIsDeepWalking();\r\n }\r\n },\r\n });\r\n}\r\n\r\nfunction applyCommit(fiber: Fiber) {\r\n const map: Record void> = {\r\n [EffectTag.CREATE]: () => {\r\n if (fiber.nativeElement === null) return;\r\n trackUpdate && trackUpdate(fiber.nativeElement);\r\n commitCreation(fiber);\r\n },\r\n [EffectTag.UPDATE]: () => {\r\n if (\r\n fiber.nativeElement === null ||\r\n !detectIsVirtualNode(fiber.alternate.instance) ||\r\n !detectIsVirtualNode(fiber.instance)\r\n ) {\r\n return;\r\n }\r\n trackUpdate && trackUpdate(fiber.nativeElement);\r\n commitUpdate(fiber.nativeElement, fiber.alternate.instance, fiber.instance);\r\n },\r\n [EffectTag.DELETE]: () => commitDeletion(fiber),\r\n [EffectTag.SKIP]: () => {},\r\n };\r\n\r\n map[fiber.effectTag]();\r\n}\r\n\r\nfunction finishCommitWork() {\r\n for (const { callback } of fragmentsMap.values()) {\r\n callback();\r\n }\r\n\r\n fragmentsMap = new Map();\r\n}\r\n\r\nfunction setTrackUpdate(fn: typeof trackUpdate) {\r\n trackUpdate = fn;\r\n}\r\n\r\nexport { createNativeElement, applyCommit, finishCommitWork, setTrackUpdate };\r\n","import { type ScheduleCallbackOptions, getTime, workLoop, wipRootStore, TaskPriority } from '@dark-engine/core';\r\n\r\ntype Callback = () => boolean;\r\n\r\ntype QueueByPriority = {\r\n hight: Array;\r\n normal: Array;\r\n low1: Array;\r\n low2: Array;\r\n};\r\n\r\nconst queueByPriority: QueueByPriority = {\r\n hight: [],\r\n normal: [],\r\n low1: [],\r\n low2: [],\r\n};\r\nconst YEILD_INTERVAL = 10;\r\nlet scheduledCallback: Callback = null;\r\nlet deadline = 0;\r\nlet isMessageLoopRunning = false;\r\nlet currentTask: Task = null;\r\n\r\nclass Task {\r\n public static nextTaskId = 0;\r\n public id: number;\r\n public time: number;\r\n public timeoutMs: number;\r\n public priority: TaskPriority;\r\n public forceSync: boolean;\r\n public callback: () => void;\r\n\r\n constructor(options: Omit) {\r\n this.id = ++Task.nextTaskId;\r\n this.time = options.time;\r\n this.timeoutMs = options.timeoutMs;\r\n this.priority = options.priority;\r\n this.forceSync = options.forceSync;\r\n this.callback = options.callback;\r\n }\r\n}\r\n\r\nconst shouldYeildToHost = () => getTime() >= deadline;\r\n\r\nfunction scheduleCallback(callback: () => void, options?: ScheduleCallbackOptions) {\r\n const { priority = TaskPriority.NORMAL, timeoutMs = 0, forceSync = false } = options || {};\r\n const task = new Task({ time: getTime(), timeoutMs, priority, forceSync, callback });\r\n const map: Record void> = {\r\n [TaskPriority.HIGH]: () => queueByPriority.hight.push(task),\r\n [TaskPriority.NORMAL]: () => queueByPriority.normal.push(task),\r\n [TaskPriority.LOW]: () => (task.timeoutMs > 0 ? queueByPriority.low2.push(task) : queueByPriority.low1.push(task)),\r\n };\r\n\r\n map[task.priority]();\r\n executeTasks();\r\n}\r\n\r\nfunction pick(queue: Array) {\r\n if (!queue.length) return false;\r\n currentTask = queue.shift();\r\n\r\n currentTask.callback();\r\n\r\n if (currentTask.forceSync) {\r\n requestCallbackSync(workLoop);\r\n } else {\r\n requestCallback(workLoop);\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction executeTasks() {\r\n const isBusy = Boolean(wipRootStore.get());\r\n\r\n if (!isBusy) {\r\n checkOverdueTasks() ||\r\n pick(queueByPriority.hight) ||\r\n pick(queueByPriority.normal) ||\r\n requestIdleCallback(() => pick(queueByPriority.low1) || pick(queueByPriority.low2));\r\n }\r\n}\r\n\r\nfunction checkOverdueTasks() {\r\n const [task] = queueByPriority.low2;\r\n\r\n if (task && getTime() - task.time > task.timeoutMs) {\r\n pick(queueByPriority.low2);\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction performWorkUntilDeadline() {\r\n if (scheduledCallback) {\r\n deadline = getTime() + YEILD_INTERVAL;\r\n\r\n try {\r\n const hasMoreWork = scheduledCallback();\r\n\r\n if (!hasMoreWork) {\r\n currentTask = null;\r\n isMessageLoopRunning = false;\r\n scheduledCallback = null;\r\n executeTasks();\r\n } else {\r\n port.postMessage(null);\r\n }\r\n } catch (error) {\r\n port.postMessage(null);\r\n throw error;\r\n }\r\n } else {\r\n isMessageLoopRunning = false;\r\n }\r\n}\r\n\r\nfunction requestCallback(callback: Callback) {\r\n if (process.env.NODE_ENV === 'test') {\r\n return requestCallbackSync(callback);\r\n }\r\n\r\n scheduledCallback = callback;\r\n\r\n if (!isMessageLoopRunning) {\r\n isMessageLoopRunning = true;\r\n port.postMessage(null);\r\n }\r\n}\r\n\r\nfunction requestCallbackSync(callback: Callback) {\r\n while (callback()) {\r\n //\r\n }\r\n executeTasks();\r\n currentTask = null;\r\n}\r\n\r\nlet channel: MessageChannel = null;\r\nlet port: MessagePort = null;\r\n\r\nfunction setup() {\r\n if (process.env.NODE_ENV === 'test') {\r\n return;\r\n }\r\n\r\n channel = new MessageChannel();\r\n port = channel.port2;\r\n\r\n channel.port1.onmessage = performWorkUntilDeadline;\r\n}\r\n\r\nsetup();\r\n\r\nexport { shouldYeildToHost, scheduleCallback };\r\n","import {\r\n type DarkElement,\r\n type VirtualNodeFactory,\r\n type ComponentFactory,\r\n ROOT,\r\n Fiber,\r\n EffectTag,\r\n platform,\r\n flatten,\r\n detectIsUndefined,\r\n TagVirtualNode,\r\n rootStore,\r\n wipRootStore,\r\n currentRootStore,\r\n nextUnitOfWorkStore,\r\n fiberMountStore,\r\n TaskPriority,\r\n createEmptyVirtualNode,\r\n isLayoutEffectsZone,\r\n} from '@dark-engine/core';\r\nimport { createNativeElement, applyCommit, finishCommitWork } from '../dom';\r\nimport { detectIsPortal, unmountPortal } from '../portal';\r\nimport { scheduleCallback, shouldYeildToHost } from '../scheduler';\r\n\r\nplatform.createNativeElement = createNativeElement as typeof platform.createNativeElement;\r\nplatform.requestAnimationFrame = requestAnimationFrame.bind(this);\r\nplatform.scheduleCallback = scheduleCallback;\r\nplatform.shouldYeildToHost = shouldYeildToHost;\r\nplatform.applyCommit = applyCommit;\r\nplatform.finishCommitWork = finishCommitWork;\r\nplatform.detectIsPortal = detectIsPortal;\r\nplatform.unmountPortal = unmountPortal;\r\n\r\nconst roots = new Map();\r\n\r\nfunction render(element: DarkElement, container: Element) {\r\n if (!(container instanceof Element)) {\r\n throw new Error(`[Dark]: render receives only Element as container!`);\r\n }\r\n\r\n const isMounted = !detectIsUndefined(roots.get(container));\r\n let rootId = null;\r\n\r\n if (!isMounted) {\r\n rootId = roots.size;\r\n\r\n roots.set(container, rootId);\r\n container.innerHTML = '';\r\n } else {\r\n rootId = roots.get(container);\r\n }\r\n\r\n const callback = () => {\r\n rootStore.set(rootId); // important order!\r\n const currentRoot = currentRootStore.get();\r\n const fiber = new Fiber({\r\n nativeElement: container,\r\n instance: new TagVirtualNode({\r\n name: ROOT,\r\n children: flatten([element || createEmptyVirtualNode()]) as Array,\r\n }),\r\n alternate: currentRoot,\r\n effectTag: isMounted ? EffectTag.UPDATE : EffectTag.CREATE,\r\n });\r\n\r\n currentRoot && (currentRoot.alternate = null);\r\n fiberMountStore.reset();\r\n wipRootStore.set(fiber);\r\n nextUnitOfWorkStore.set(fiber);\r\n };\r\n\r\n platform.scheduleCallback(callback, { priority: TaskPriority.NORMAL, forceSync: isLayoutEffectsZone.get() });\r\n}\r\n\r\nexport { render, roots };\r\n","import { type DarkElement, unmountRoot } from '@dark-engine/core';\r\nimport { render, roots } from '../render';\r\n\r\nfunction createRoot(container: Element) {\r\n return {\r\n render: (element: DarkElement) => render(element, container),\r\n unmount: () => {\r\n const rootId = roots.get(container);\r\n\r\n unmountRoot(rootId, () => {\r\n roots.delete(container);\r\n container.innerHTML = '';\r\n });\r\n },\r\n };\r\n}\r\n\r\nexport { createRoot };\r\n","import { useMemo, detectIsUndefined } from '@dark-engine/core';\r\n\r\nfunction styled(strings: TemplateStringsArray, ...args: Array): string {\r\n const style = useMemo(() => {\r\n return strings\r\n .map((x, idx) => x + (!detectIsUndefined(args[idx]) ? args[idx] : ''))\r\n .join('')\r\n .replace(/;\\s*/gm, ';')\r\n .replace(/:\\s*/gm, ':')\r\n .trim();\r\n }, [strings, ...args]);\r\n\r\n return style;\r\n}\r\n\r\ntype Style = Record;\r\n\r\ntype Config = (x: typeof styled) => T;\r\n\r\nfunction useStyle(config: Config) {\r\n return config(styled);\r\n}\r\n\r\nexport { useStyle };\r\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__317__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","$$portal","createPortal","slot","container","Element","Error","Portal","createComponent","rest","useMemo","innerHTML","token","detectIsPortal","detectIsComponentFactory","getPortalContainer","props","options","type","sourceEvent","target","propagation","this","stopPropagation","preventDefault","getPropagation","delegateEvent","eventName","handler","eventsMap","eventsStore","handlerMap","set","event","fireEvent","syntheticEvent","detectIsFunction","SyntheticEvent","parentElement","dispatchEvent","constructor","WeakMap","document","addEventListener","removeEventListener","detectIsEvent","attrName","startsWith","getEventName","slice","length","toLowerCase","attrBlackListMap","ATTR_KEY","ATTR_REF","void","fragmentsMap","Map","trackUpdate","applyRef","ref","element","detectIsRef","current","INPUT_STOP_ATTRS_MAP","checked","TEXTAREA_STOP_ATTRS_MAP","OPTIONS_STOP_ATTRS_MAP","selected","DEFAULT_STOP_ATTRS_MAP","upgradeInputAttributes","tagName","map","input","textarea","option","getParentFiberWithNativeElement","fiber","nextFiber","parent","instance","nativeElement","setTrackUpdate","fn","queueByPriority","hight","normal","low1","low2","scheduledCallback","deadline","isMessageLoopRunning","currentTask","id","Task","nextTaskId","time","timeoutMs","priority","forceSync","callback","pick","queue","shift","executeTasks","requestCallbackSync","workLoop","port","postMessage","task","Boolean","wipRootStore","getTime","requestIdleCallback","channel","MessageChannel","port2","port1","onmessage","error","platform","vNode","NodeType","tagNode","name","svg","circle","ellipse","g","text","tspan","textPath","path","polygon","polyline","line","rect","use","image","symbol","defs","linearGradient","radialGradient","stop","clipPath","pattern","mask","marker","createElementNS","createElement","textNode","createTextNode","commentNode","createComment","requestAnimationFrame","bind","TaskPriority","push","EffectTag","fragment","parentNativeElement","childNodes","idx","getChildIndex","createDocumentFragment","appendChild","markMountedToHost","insertBefore","node","walkFiber","onLoop","resetIsDeepWalking","mountedToHost","getNodeOnTheRight","detectIsTagVirtualNode","attrNames","keys","attrs","attrValue","detectIsUndefined","setAttribute","addAttributes","commitCreation","nextInstance","detectIsVirtualNode","alternate","detectIsTextVirtualNode","textContent","nextVNode","Set","prevAttrValue","nextAttrValue","removeAttribute","updateAttributes","parentFiber","isReturn","nextSibling","removeChild","commitDeletion","effectTag","values","roots","render","isMounted","rootId","size","rootStore","currentRoot","currentRootStore","Fiber","TagVirtualNode","ROOT","children","flatten","createEmptyVirtualNode","fiberMountStore","nextUnitOfWorkStore","isLayoutEffectsZone","createRoot","unmount","unmountRoot","styled","strings","style","x","args","join","replace","trim","useStyle","config"],"sourceRoot":""} \ No newline at end of file