subay 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/s.ts","../src/h.ts"],"sourcesContent":["interface IUpdater {\r\n (): void;\r\n _whoIOwn: Array<IUpdater>;\r\n _whoINeed: Array<ITrigger>;\r\n _dirty: boolean;\r\n _onCleanupCallback: Array<() => void>;\r\n}\r\n\r\ninterface ITrigger {\r\n _whoNeedMe: Array<IUpdater>;\r\n _data: IO<any>;\r\n _pendingValue: any;\r\n}\r\n\r\ninterface IS<T> {\r\n (): T;\r\n}\r\n\r\ninterface IO<T> {\r\n (): T;\r\n (nextValue: T): T;\r\n}\r\n\r\nlet currentUpdate: IUpdater | undefined = undefined;\r\nconst NoValue: unique symbol = Symbol();\r\nlet triggerQueue: Array<ITrigger> | undefined = undefined;\r\nconst fun2s = new WeakMap<(...args: any[]) => any, IUpdater>();\r\nclass Reactive {}\r\nclass Observable extends Reactive {}\r\nclass Computation extends Reactive {}\r\nconst cProto = new Computation();\r\nconst oProto = new Observable();\r\n\r\nexport const root = <T>(fn: (destroy: () => void) => T): T => {\r\n const backup = currentUpdate;\r\n const rootUpdate: IUpdater = (() => {}) as any;\r\n resetUpdate(rootUpdate);\r\n rootUpdate._dirty = false;\r\n currentUpdate = rootUpdate;\r\n const result = fn(() => {\r\n recycleUpdate(rootUpdate);\r\n currentUpdate = undefined;\r\n });\r\n currentUpdate = backup;\r\n return result;\r\n};\r\nexport const S = <T>(fn: (pv: T | undefined) => T, value?: T): IS<T> => {\r\n const data = () => {\r\n if (update._dirty) {\r\n update();\r\n } else if (currentUpdate) {\r\n update._whoINeed.forEach((t) => t._data());\r\n }\r\n return value as T;\r\n };\r\n Object.setPrototypeOf(data, cProto);\r\n const update: IUpdater = (() => {\r\n const backup = currentUpdate;\r\n recycleUpdate(update);\r\n update._dirty = false;\r\n currentUpdate = update;\r\n value = fn(value);\r\n currentUpdate = backup;\r\n }) as any;\r\n if (currentUpdate) {\r\n currentUpdate._whoIOwn.push(update);\r\n }\r\n resetUpdate(update);\r\n update();\r\n fun2s.set(fn, update);\r\n return data;\r\n};\r\nexport const o = <T>(value: T): IO<T> => {\r\n function data(): T;\r\n function data(nextValue: T): T;\r\n function data(nextValue?: T) {\r\n if (arguments.length === 0) {\r\n if (currentUpdate) {\r\n if (!currentUpdate._whoINeed.includes(trigger)) {\r\n currentUpdate._whoINeed.push(trigger);\r\n }\r\n if (!trigger._whoNeedMe.includes(currentUpdate)) {\r\n trigger._whoNeedMe.push(currentUpdate);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n if (triggerQueue) {\r\n if (trigger._pendingValue === NoValue) {\r\n triggerQueue.push(trigger);\r\n }\r\n trigger._pendingValue = nextValue;\r\n return nextValue;\r\n }\r\n\r\n value = nextValue!;\r\n\r\n const backup = currentUpdate;\r\n currentUpdate = undefined;\r\n\r\n const whoNeedMeLasttime = trigger._whoNeedMe.filter((it) => {\r\n return it._whoINeed.includes(trigger);\r\n });\r\n whoNeedMeLasttime.forEach((u) => {\r\n u._dirty = true;\r\n });\r\n trigger._whoNeedMe = [];\r\n whoNeedMeLasttime.forEach((u) => {\r\n if (u._dirty) {\r\n u();\r\n }\r\n });\r\n\r\n currentUpdate = backup;\r\n\r\n return value;\r\n }\r\n\r\n Object.setPrototypeOf(data, oProto);\r\n\r\n const trigger: ITrigger = {\r\n _whoNeedMe: [],\r\n _data: data,\r\n _pendingValue: NoValue,\r\n };\r\n\r\n return data;\r\n};\r\nconst recycleUpdate = (update: IUpdater) => {\r\n update._whoIOwn.forEach(recycleUpdate);\r\n update._dirty = false;\r\n update._onCleanupCallback.forEach((f) => f());\r\n resetUpdate(update);\r\n};\r\n\r\nconst resetUpdate = (update: IUpdater) => {\r\n update._whoINeed = [];\r\n update._whoIOwn = [];\r\n update._onCleanupCallback = [];\r\n};\r\n\r\nexport const cleanup = <T extends () => void>(f: T): T => {\r\n if (currentUpdate) {\r\n currentUpdate._onCleanupCallback.push(f);\r\n }\r\n return f;\r\n};\r\n\r\nexport const transaction = <T>(f: () => T): T => {\r\n const fallback = triggerQueue;\r\n triggerQueue = [] as ITrigger[];\r\n const result = f();\r\n const workedQueue = triggerQueue;\r\n triggerQueue = fallback;\r\n\r\n workedQueue.forEach((t) => {\r\n if (t._pendingValue !== NoValue) {\r\n const pv = t._pendingValue;\r\n t._pendingValue = NoValue;\r\n t._data(pv);\r\n }\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport { o as observable };\r\n\r\nexport const sample = <T>(f: () => T): T => {\r\n const fallback = currentUpdate;\r\n currentUpdate = undefined;\r\n const value = f();\r\n currentUpdate = fallback;\r\n return value;\r\n};\r\n\r\nexport const isListening = () => !!currentUpdate;\r\n\r\nexport const subscribe = (f: () => void) => {\r\n S(f);\r\n return () => unsubscribe(f);\r\n};\r\nexport const unsubscribe = (f: () => void) => {\r\n const update = fun2s.get(f);\r\n if (update) {\r\n recycleUpdate(update);\r\n }\r\n};\r\n\r\nexport const isObservable = (o: any): o is IO<any> => o instanceof Observable;\r\nexport const isComputed = (o: any): o is IS<any> => o instanceof Computation;\r\nexport const isReactive = (o: any): o is IO<any> | IS<any> => o instanceof Reactive;\r\n","/** @format */\r\n\r\nimport { cleanup, isReactive, root, S, sample } from './s.js';\r\n\r\nconst enum InterNodeType {\r\n Text = 1,\r\n Element = 2,\r\n Attribute = 3,\r\n}\r\n\r\ntype InterTreeNode = InterTextNode | InterElementNode;\r\n\r\ntype InterTextNode = {\r\n _type: InterNodeType.Text;\r\n _data: Array<string | number>;\r\n};\r\ntype InterElementNode = {\r\n _ns: string | null;\r\n _tag: Array<string | number>;\r\n _type: InterNodeType.Element;\r\n _attrs: InterAttributeNode[];\r\n _content: Array<InterTreeNode>;\r\n _sourceNode: Element | null;\r\n _sourceIndex: number;\r\n};\r\n\r\ntype InterAttributeNode = {\r\n _type: InterNodeType.Attribute;\r\n _name: Array<string | number>;\r\n _value: Array<string | number>;\r\n};\r\n\r\nconst cache = new Map<TemplateStringsArray, InterTreeNode[]>();\r\nfunction random6LetterString() {\r\n const BASE = 36;\r\n const power5 = BASE ** 5;\r\n const min = 10 * power5;\r\n const length = 26 * power5;\r\n return Math.floor(Math.random() * length + min).toString(BASE);\r\n}\r\nconst MarkStart = random6LetterString();\r\nconst MarkEnd = random6LetterString();\r\nconst MarkReg = new RegExp(`([\\\\s\\\\S]*?)${MarkStart}(\\\\d+)${MarkEnd}([\\\\s\\\\S]*?)(?=${MarkStart}\\\\d+${MarkEnd}|$)`, 'g');\r\nconst BlankText = /\\s*\\n\\s*/g;\r\nconst domParser = new DOMParser();\r\n\r\nconst parseText = (data: string) => {\r\n const result: Array<string | number> = [];\r\n data = data.replace(BlankText, '');\r\n if (data.includes(MarkStart) && data.includes(MarkEnd)) {\r\n for (const res of data.matchAll(MarkReg)) {\r\n const [, prefix, index, suffix] = res;\r\n if (prefix) {\r\n result.push(prefix);\r\n }\r\n if (index) {\r\n result.push(Number(index));\r\n }\r\n if (suffix) {\r\n result.push(suffix);\r\n }\r\n }\r\n } else if (data) {\r\n result.push(data);\r\n }\r\n return result;\r\n};\r\n\r\nconst unparseText = (data: Array<string | number>, values: any[]) => {\r\n if (data.length === 1) {\r\n if (typeof data[0] === 'number') {\r\n return values[data[0]!];\r\n }\r\n return data[0];\r\n }\r\n return S(() => {\r\n return data\r\n .map((it) => {\r\n if (typeof it === 'number') {\r\n const value = values[it];\r\n if (typeof value === 'function') {\r\n return value();\r\n }\r\n return value;\r\n }\r\n return it;\r\n })\r\n .join('');\r\n });\r\n};\r\n\r\nconst parse = (\r\n docType: DOMParserSupportedType,\r\n wrapSource: (source: string) => string,\r\n unwrapNode: (node: Document) => NodeList,\r\n segments: TemplateStringsArray,\r\n indexMap: number[],\r\n): InterTreeNode[] => {\r\n if (cache.has(segments)) {\r\n return cache.get(segments)!;\r\n }\r\n\r\n const htmlStr = segments\r\n .flatMap((segment, index, { length }) => {\r\n if (index === length - 1) {\r\n return [segment];\r\n }\r\n return [segment, MarkStart, indexMap[index], MarkEnd];\r\n })\r\n .join('');\r\n\r\n const wrappedHtmlStr = wrapSource(htmlStr);\r\n\r\n const document = domParser.parseFromString(wrappedHtmlStr, docType);\r\n\r\n const dom2treenode = (domNodeList: NodeList) => {\r\n const nodeList: InterTreeNode[] = [];\r\n for (\r\n let item: Node | undefined | null = domNodeList.item(0), nextSibling = item?.nextSibling, index = 0;\r\n item != null;\r\n item = nextSibling, nextSibling = nextSibling?.nextSibling, index++\r\n ) {\r\n do\r\n remove_and_dec_index: {\r\n if (item.nodeType === Node.ELEMENT_NODE) {\r\n const el = item as Element;\r\n const tag = parseText(el.tagName.toLowerCase());\r\n const isVariableElem = tag.length > 1 || typeof tag[0] === 'number';\r\n\r\n nodeList.push({\r\n _ns: el.namespaceURI,\r\n _type: InterNodeType.Element,\r\n _tag: tag,\r\n _attrs: Array.from(el.attributes).flatMap((attr) => {\r\n const name = parseText(attr.nodeName);\r\n const value = parseText(attr.value);\r\n const isVariableAttr =\r\n name.length > 1 ||\r\n typeof name[0] === 'number' ||\r\n value.length > 1 ||\r\n typeof value[0] === 'number';\r\n\r\n if (!isVariableElem && !isVariableAttr) {\r\n return [];\r\n } else {\r\n el.removeAttribute(attr.nodeName);\r\n }\r\n return [\r\n {\r\n _type: InterNodeType.Attribute,\r\n _name: name,\r\n _value: value,\r\n } satisfies InterAttributeNode,\r\n ];\r\n }),\r\n _content: el.childNodes.length > 0 ? dom2treenode(el.childNodes) : [],\r\n _sourceNode: isVariableElem ? null : el,\r\n _sourceIndex: index,\r\n });\r\n\r\n if (!isVariableElem) {\r\n break remove_and_dec_index;\r\n }\r\n } else if (item.nodeType === Node.TEXT_NODE) {\r\n const data = (item as Text).data;\r\n const result = parseText(data);\r\n if (result.length > 0) {\r\n nodeList.push({\r\n _type: InterNodeType.Text,\r\n _data: result,\r\n });\r\n }\r\n }\r\n (item as Comment | Text | Element).remove();\r\n index--;\r\n }\r\n while (false);\r\n }\r\n return nodeList;\r\n };\r\n\r\n const rootList = unwrapNode(document);\r\n\r\n const treeNode = dom2treenode(rootList);\r\n\r\n cache.set(segments, treeNode);\r\n\r\n return treeNode;\r\n};\r\n\r\nconst element = (\r\n ns: string | null,\r\n sourceNode: Element | null,\r\n tagName: string | (() => string),\r\n child: (node: Element) => Node[],\r\n): Node[] => {\r\n if (typeof tagName === 'function') {\r\n return fragment(() => {\r\n const realTagName = tagName();\r\n if (typeof realTagName === 'string') {\r\n return element(ns, null, realTagName, child);\r\n }\r\n return [];\r\n });\r\n }\r\n if (typeof tagName !== 'string') {\r\n return [];\r\n }\r\n const el = sourceNode || (ns ? document.createElementNS(ns, tagName) : document.createElement(tagName));\r\n S(() => {\r\n const subnodes = child(el);\r\n if (subnodes.length === 0) {\r\n return;\r\n }\r\n if (!el.firstChild) {\r\n // @domact\r\n el.append(...subnodes);\r\n } else {\r\n for (let left: Element | null = el.firstElementChild, rightIndex = 0; rightIndex < subnodes.length; rightIndex++) {\r\n const right = subnodes[rightIndex]!;\r\n if (left === right) {\r\n left = left.nextElementSibling;\r\n } else {\r\n // @domact\r\n el.insertBefore(right, left);\r\n }\r\n }\r\n }\r\n });\r\n cleanup(() => el.remove());\r\n return [el];\r\n};\r\n\r\nconst fragment = (child: (head: Node) => Node[]): Node[] => {\r\n const firstNode = document.createComment('start-frag');\r\n cleanup(() => firstNode.remove());\r\n const tempArray: Node[] = [firstNode];\r\n S(() => {\r\n const c = child(firstNode);\r\n const carr = Array.isArray(c) ? c : [c];\r\n\r\n const nodified = carr.map((c) => {\r\n if (c instanceof Node) {\r\n return c;\r\n }\r\n const node = document.createTextNode(c);\r\n cleanup(() => node.remove());\r\n return node;\r\n });\r\n\r\n if (firstNode.isConnected) {\r\n firstNode.after(...nodified);\r\n } else {\r\n tempArray.push(...nodified);\r\n }\r\n });\r\n\r\n return tempArray;\r\n};\r\nfunction arrTrans<T>(a: readonly T[], b: readonly T[], a2b: (a: T) => void, dela: (a: T) => void, keep: (a: T) => void): void {\r\n const aLen = a.length;\r\n const bLen = b.length;\r\n\r\n if (a === b || (aLen === 0 && bLen === 0)) {\r\n return;\r\n }\r\n\r\n let start = 0;\r\n const minLen = Math.min(aLen, bLen);\r\n while (start < minLen && a[start] === b[start]) {\r\n start++;\r\n }\r\n\r\n let end = 0;\r\n while (end < minLen - start && a[aLen - 1 - end] === b[bLen - 1 - end]) {\r\n end++;\r\n }\r\n\r\n const aMidLen = aLen - start - end;\r\n const bMidLen = bLen - start - end;\r\n\r\n if (aMidLen === 0 && bMidLen === 0) {\r\n for (let i = 0; i < start; i++) {\r\n keep(a[i]!);\r\n }\r\n for (let i = 0; i < end; i++) {\r\n keep(a[aLen - end + i]!);\r\n }\r\n return;\r\n }\r\n\r\n const bIndexMap = new Map<T, number>();\r\n for (let i = 0; i < bMidLen; i++) {\r\n bIndexMap.set(b[start + i]!, i);\r\n }\r\n\r\n const indices: number[] = [];\r\n for (let i = 0; i < aMidLen; i++) {\r\n const val = a[start + i]!;\r\n const bIdx = bIndexMap.get(val);\r\n if (bIdx !== undefined) {\r\n indices.push(bIdx);\r\n }\r\n }\r\n\r\n const tails: number[] = [];\r\n const parents: number[] = new Array(indices.length).fill(-1);\r\n const tailIndices: number[] = [];\r\n\r\n for (let i = 0; i < indices.length; i++) {\r\n const idx = indices[i]!;\r\n\r\n let left = 0;\r\n let right = tails.length;\r\n while (left < right) {\r\n const mid = (left + right) >> 1;\r\n if (tails[mid]! < idx) {\r\n left = mid + 1;\r\n } else {\r\n right = mid;\r\n }\r\n }\r\n\r\n const pos = left;\r\n if (pos === tails.length) {\r\n tails.push(idx);\r\n tailIndices.push(i);\r\n } else {\r\n tails[pos] = idx;\r\n tailIndices[pos] = i;\r\n }\r\n\r\n if (pos > 0) {\r\n parents[i] = tailIndices[pos - 1]!;\r\n }\r\n }\r\n\r\n const keepSet = new Set<T>();\r\n let curr = tailIndices.length > 0 ? tailIndices[tailIndices.length - 1]! : -1;\r\n while (curr !== -1) {\r\n const bIdx = indices[curr]!;\r\n keepSet.add(b[start + bIdx]!);\r\n curr = parents[curr]!;\r\n }\r\n\r\n for (let i = 0; i < start; i++) {\r\n keep(a[i]!);\r\n }\r\n\r\n for (let i = 0; i < aMidLen; i++) {\r\n const val = a[start + i]!;\r\n if (!keepSet.has(val)) {\r\n dela(val);\r\n }\r\n }\r\n\r\n for (let i = 0; i < bMidLen; i++) {\r\n const val = b[start + i]!;\r\n if (keepSet.has(val)) {\r\n keep(val);\r\n } else {\r\n a2b(val);\r\n }\r\n }\r\n\r\n for (let i = 0; i < end; i++) {\r\n keep(a[aLen - end + i]!);\r\n }\r\n}\r\ninterface MapState<T> {\r\n _itemDestroyer: Array<() => void>;\r\n _domNodesOfItem: Node[][];\r\n _arrayValue: T[];\r\n}\r\nexport const map = <T>(array: () => T[], f: (item: T) => Node[]): Node[] => {\r\n return fragment((headNode) => {\r\n cleanup(() => {\r\n mapState()._itemDestroyer.forEach((f) => f());\r\n });\r\n const createItem = (item: T) => {\r\n return root((destroyItem) => {\r\n const domNodes = f(item);\r\n return [destroyItem, domNodes] as [() => void, Node[]];\r\n });\r\n };\r\n const mapState = S<MapState<T>>(\r\n (\r\n preState = {\r\n _arrayValue: [] as T[],\r\n _domNodesOfItem: [],\r\n _itemDestroyer: [],\r\n },\r\n ) => {\r\n const currentArrayValue = array();\r\n const preArrayValue = preState._arrayValue;\r\n const newState: MapState<T> = {\r\n _arrayValue: currentArrayValue,\r\n _domNodesOfItem: [],\r\n _itemDestroyer: [],\r\n };\r\n arrTrans(\r\n preArrayValue,\r\n currentArrayValue,\r\n (newItem) => {\r\n const [destroyer, domNodes] = createItem(newItem);\r\n const preNode = newState._domNodesOfItem.at(-1)?.at(-1) ?? headNode;\r\n (preNode as Element | Comment).after(...domNodes);\r\n newState._domNodesOfItem.push(domNodes);\r\n newState._itemDestroyer.push(destroyer);\r\n },\r\n (oldItem) => {\r\n const i = preArrayValue.indexOf(oldItem);\r\n preState._itemDestroyer[i]!();\r\n },\r\n (oldItem) => {\r\n const i = preArrayValue.indexOf(oldItem);\r\n newState._domNodesOfItem.push(preState._domNodesOfItem[i]!);\r\n newState._itemDestroyer.push(preState._itemDestroyer[i]!);\r\n },\r\n );\r\n return newState;\r\n },\r\n );\r\n return sample(() => mapState()._domNodesOfItem.flat());\r\n });\r\n};\r\n\r\nconst isPropertyOf = (domEl: HTMLElement | SVGElement, traitName: string) => {\r\n let descriptor;\r\n do {\r\n descriptor = Object.getOwnPropertyDescriptor(domEl, traitName);\r\n domEl = Object.getPrototypeOf(domEl);\r\n } while (domEl && !descriptor);\r\n if (!descriptor) {\r\n return false;\r\n }\r\n if (false === descriptor.writable) {\r\n return false;\r\n }\r\n if (descriptor.get && !descriptor.set) {\r\n return false;\r\n }\r\n return true;\r\n};\r\nconst attribute = (node: Element, key: string | (() => string), val: string | (() => any)) => {\r\n if (typeof key !== 'function' && !isReactive(val)) {\r\n if (!node) {\r\n return;\r\n }\r\n if (!(node instanceof Element)) {\r\n return;\r\n }\r\n const isProp = isPropertyOf(node as any, key);\r\n if (isProp) {\r\n const preValue = (node as any)[key];\r\n (node as any)[key] = val;\r\n cleanup(() => {\r\n (node as any)[key] = preValue;\r\n });\r\n } else {\r\n node.setAttribute(key, val);\r\n cleanup(() => {\r\n node.removeAttribute(key);\r\n });\r\n }\r\n } else {\r\n S(() => {\r\n attribute(node, typeof key === 'function' ? key() : key, isReactive(val) ? val() : val);\r\n });\r\n }\r\n};\r\n\r\nconst spreadAttrs = (node: Element, value: () => any) => {\r\n S(() => {\r\n const attrs = value();\r\n for (const key in attrs) {\r\n attribute(node, key, attrs[key]);\r\n }\r\n });\r\n};\r\n\r\nconst tree2dom = (ns: string | null, node: InterTreeNode, values: any[]): Node[] => {\r\n if (node._type === InterNodeType.Text) {\r\n return node._data.flatMap((part) => {\r\n if (typeof part === 'string') {\r\n const textNode = document.createTextNode(part);\r\n cleanup(() => textNode.remove());\r\n return textNode;\r\n } else if (typeof part === 'number') {\r\n const value = values[part];\r\n if (typeof value === 'function') {\r\n return fragment(value);\r\n } else {\r\n const textNode = document.createTextNode(String(value));\r\n cleanup(() => textNode.remove());\r\n return textNode;\r\n }\r\n }\r\n return [];\r\n });\r\n } else {\r\n const { _attrs: attrs, _content: content, _tag: tag, _sourceNode: sourceNode } = node;\r\n const tagValue = unparseText(tag, values);\r\n const currentNs = node._ns ?? ns;\r\n return element(currentNs, sourceNode, tagValue, (node) => {\r\n for (const { _name: name, _value: value } of attrs) {\r\n if (name[0] === '...' && typeof name[1] === 'number') {\r\n spreadAttrs(node, unparseText(name.slice(1), values));\r\n } else {\r\n attribute(node, unparseText(name, values), unparseText(value, values));\r\n }\r\n }\r\n return content.flatMap((t) => tree2dom(currentNs, t, values));\r\n });\r\n }\r\n};\r\n\r\nconst cloneTreeNode = (treeNode: InterTreeNode, parentNode: Element | null): InterTreeNode => {\r\n if (treeNode._type === InterNodeType.Text) {\r\n return treeNode;\r\n } else {\r\n if (!treeNode._sourceNode) {\r\n return treeNode;\r\n }\r\n const currentNode =\r\n parentNode ?\r\n (parentNode.childNodes.item(treeNode._sourceIndex) as Element)\r\n : (treeNode._sourceNode.cloneNode(true) as Element);\r\n return {\r\n ...treeNode,\r\n _sourceNode: currentNode,\r\n _content: treeNode._content.map((node) => cloneTreeNode(node, currentNode)),\r\n } satisfies InterElementNode;\r\n }\r\n};\r\n\r\nconst tag =\r\n (\r\n ns: string | null,\r\n docType: DOMParserSupportedType,\r\n wrapSource: (source: string) => string,\r\n unwrapNode: (node: Document) => NodeList,\r\n ) =>\r\n (segments: TemplateStringsArray, ...values: any[]): Node[] => {\r\n const tree = parse(\r\n docType,\r\n wrapSource,\r\n unwrapNode,\r\n segments,\r\n values.map((it) => values.indexOf(it)),\r\n );\r\n const clonedTree = tree.map((tree) => cloneTreeNode(tree, null));\r\n return fragment(() => {\r\n return clonedTree.flatMap((item) => tree2dom(ns, item, values));\r\n });\r\n };\r\nconst svgns = 'http://www.w3.org/2000/svg';\r\nexport const svg = tag(\r\n svgns,\r\n 'text/xml',\r\n (svg) => `<svg xmlns=\"${svgns}\">${svg}</svg>`,\r\n (doc) => doc.firstChild!.childNodes,\r\n);\r\nexport const html = tag(\r\n null,\r\n 'text/html',\r\n (html) => html,\r\n (doc) => doc.body.childNodes,\r\n);\r\n"],"names":["currentUpdate","NoValue","Symbol","triggerQueue","fun2s","WeakMap","Reactive","Observable","Computation","cProto","oProto","root","fn","backup","rootUpdate","resetUpdate","_dirty","result","recycleUpdate","undefined","S","value","data","update","_whoINeed","forEach","t","_data","Object","setPrototypeOf","_whoIOwn","push","set","o","nextValue","arguments","length","includes","trigger","_whoNeedMe","_pendingValue","whoNeedMeLasttime","filter","it","u","_onCleanupCallback","f","cleanup","transaction","fallback","workedQueue","pv","sample","isListening","subscribe","unsubscribe","get","isObservable","isComputed","isReactive","cache","Map","random6LetterString","Math","floor","random","toString","MarkStart","MarkEnd","MarkReg","RegExp","BlankText","domParser","DOMParser","parseText","replace","res","matchAll","prefix","index","suffix","Number","unparseText","values","map","join","element","ns","sourceNode","tagName","child","fragment","realTagName","el","document","createElementNS","createElement","subnodes","firstChild","left","firstElementChild","rightIndex","right","nextElementSibling","insertBefore","append","remove","firstNode","createComment","tempArray","c","nodified","Array","isArray","Node","node","createTextNode","isConnected","after","array","headNode","mapState","_itemDestroyer","preState","_arrayValue","_domNodesOfItem","currentArrayValue","preArrayValue","newState","a","b","a2b","dela","keep","aLen","bLen","start","minLen","min","end","aMidLen","bMidLen","i","bIndexMap","indices","bIdx","tails","parents","fill","tailIndices","idx","mid","pos","keepSet","Set","curr","add","val","has","arrTrans","newItem","_newState$_domNodesOf","_newState$_domNodesOf2","destroyer","domNodes","item","destroyItem","at","oldItem","indexOf","flat","attribute","key","Element","isPropertyOf","domEl","traitName","descriptor","getOwnPropertyDescriptor","getPrototypeOf","writable","preValue","setAttribute","removeAttribute","spreadAttrs","attrs","tree2dom","_type","flatMap","part","textNode","String","_node$_ns","_attrs","_content","content","_tag","tag","_sourceNode","tagValue","currentNs","_ns","_name","name","_value","slice","cloneTreeNode","treeNode","parentNode","currentNode","childNodes","_sourceIndex","cloneNode","_extends","docType","wrapSource","unwrapNode","segments","tree","parse","indexMap","wrappedHtmlStr","segment","parseFromString","dom2treenode","domNodeList","nodeList","nextSibling","_item","_nextSibling","remove_and_dec_index","nodeType","ELEMENT_NODE","toLowerCase","isVariableElem","namespaceURI","from","attributes","attr","nodeName","TEXT_NODE","rootList","clonedTree","svgns","svg","doc","html","body"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
package/lib/name.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare const namedFunc: <F extends (...args: any[]) => any>(f: F, fallback?: string) => F;
2
+ //# sourceMappingURL=name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name.d.ts","sourceRoot":"","sources":["../src/name.ts"],"names":[],"mappings":"AAkDA,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG,CAAC,EAAE,WAAW,MAAM,KAAG,CAStF,CAAC"}
package/lib/name.js ADDED
@@ -0,0 +1,58 @@
1
+ const url2src = new Map();
2
+ const getLeftName = function getLeftName() {
3
+ const stack = new Error().stack;
4
+ if (!stack) {
5
+ return null;
6
+ }
7
+ const urlRegex = /((?:\w+:\/\/)[-a-zA-Z0-9:@;?&=\/%\+\.\*!'\(\),\$_\{\}\^~\[\]`#|]+):(\d+):(\d+)/;
8
+ const lines = stack.split('\n');
9
+ const currentLineIndex = lines.findIndex((line) => {
10
+ return line.includes(import.meta.url) && line.includes(getLeftName.name);
11
+ });
12
+ if (currentLineIndex > -1) {
13
+ const offset = 3;
14
+ const line = lines[currentLineIndex + offset];
15
+ if (!line) {
16
+ return null;
17
+ }
18
+ const location = line.match(urlRegex);
19
+ if (!location) {
20
+ return null;
21
+ }
22
+ const url = location[1];
23
+ const lineNo = location[2];
24
+ const colNo = location[3];
25
+ if (!url || !lineNo || !colNo) {
26
+ return null;
27
+ }
28
+ let src;
29
+ if (url2src.has(url)) {
30
+ src = url2src.get(url);
31
+ }
32
+ else {
33
+ const xhr = new XMLHttpRequest();
34
+ xhr.open('GET', url, false);
35
+ xhr.send();
36
+ src = xhr.responseText;
37
+ url2src.set(url, src);
38
+ }
39
+ const reg = new RegExp(`(?:.*\r?\n){${Number(lineNo) - 1}}.{${Number(colNo) - 1}}`);
40
+ const segment = src.match(reg);
41
+ if (!segment) {
42
+ return null;
43
+ }
44
+ return segment[0].match(/(\w+)\s*=\s*$/)?.[1];
45
+ }
46
+ return null;
47
+ };
48
+ export const namedFunc = (f, fallback) => {
49
+ const leftName = getLeftName() ?? fallback;
50
+ if (!leftName) {
51
+ return f;
52
+ }
53
+ const g = new Function(`return function ${leftName} (...args) {return ${leftName}._(...args)}`)();
54
+ g._ = f;
55
+ Object.setPrototypeOf(g, f);
56
+ return g;
57
+ };
58
+ //# sourceMappingURL=name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name.js","sourceRoot":"","sources":["../src/name.ts"],"names":[],"mappings":"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"}
package/lib/s.d.ts CHANGED
@@ -1,10 +1,22 @@
1
1
  interface IS<T> {
2
- (): T;
2
+ (force?: typeof Yes): T;
3
+ _whoIOwn: Array<IS<any>>;
4
+ _whoINeed: Set<IO<any> | IS<any>>;
5
+ _whoNeedMe: Array<IS<any>>;
6
+ _dirty: boolean;
7
+ _onCleanupCallback: Array<() => void>;
8
+ $o: number;
9
+ _birthtime: number;
3
10
  }
4
11
  interface IO<T> {
5
12
  (): T;
6
13
  (nextValue: T): T;
14
+ _whoNeedMe: Array<IS<any>>;
15
+ _pendingValue: any;
16
+ $o: number;
17
+ _birthtime: number;
7
18
  }
19
+ declare const Yes: unique symbol;
8
20
  export declare const root: <T>(fn: (destroy: () => void) => T) => T;
9
21
  export declare const S: <T>(fn: (pv: T | undefined) => T, value?: T) => IS<T>;
10
22
  export declare const o: <T>(value: T) => IO<T>;
package/lib/s.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"s.d.ts","sourceRoot":"","sources":["../src/s.ts"],"names":[],"mappings":"AAcA,UAAU,EAAE,CAAC,CAAC;IACV,IAAI,CAAC,CAAC;CACT;AAED,UAAU,EAAE,CAAC,CAAC;IACV,IAAI,CAAC,CAAC;IACN,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;CACrB;AAYD,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,KAAG,CAYxD,CAAC;AACF,eAAO,MAAM,CAAC,GAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAG,EAAE,CAAC,CAAC,CAyBlE,CAAC;AACF,eAAO,MAAM,CAAC,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,EAAE,CAAC,CAAC,CAwDnC,CAAC;AAcF,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,MAAM,IAAI,EAAE,GAAG,CAAC,KAAG,CAKpD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,GAAG,MAAM,CAAC,KAAG,CAgB3C,CAAC;AAEF,OAAO,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;AAE3B,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,GAAG,MAAM,CAAC,KAAG,CAMtC,CAAC;AAEF,eAAO,MAAM,WAAW,eAAwB,CAAC;AAEjD,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,IAAI,eAGtC,CAAC;AACF,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,IAAI,SAKxC,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,GAAG,GAAG,KAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAA4B,CAAC;AAC9E,eAAO,MAAM,UAAU,GAAI,GAAG,GAAG,KAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAA6B,CAAC;AAC7E,eAAO,MAAM,UAAU,GAAI,GAAG,GAAG,KAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAA0B,CAAC"}
1
+ {"version":3,"file":"s.d.ts","sourceRoot":"","sources":["../src/s.ts"],"names":[],"mappings":"AAIA,UAAU,EAAE,CAAC,CAAC;IACV,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC,CAAC;IACxB,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,kBAAkB,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACtB;AAaD,UAAU,EAAE,CAAC,CAAC;IACV,IAAI,CAAC,CAAC;IACN,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,aAAa,EAAE,GAAG,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACtB;AAID,QAAA,MAAM,GAAG,EAAE,OAAO,MAAiB,CAAC;AAKpC,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,KAAG,CAYxD,CAAC;AACF,eAAO,MAAM,CAAC,GAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAG,EAAE,CAAC,CAAC,CAyBlE,CAAC;AACF,eAAO,MAAM,CAAC,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,EAAE,CAAC,CAAC,CAiDnC,CAAC;AAiBF,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,MAAM,IAAI,EAAE,GAAG,CAAC,KAAG,CAGpD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,GAAG,MAAM,CAAC,KAAG,CAc3C,CAAC;AAEF,OAAO,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;AAE3B,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,GAAG,MAAM,CAAC,KAAG,CAMtC,CAAC;AAEF,eAAO,MAAM,WAAW,eAAwB,CAAC;AAEjD,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,IAAI,eAGtC,CAAC;AACF,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,IAAI,SAKxC,CAAC;AACF,eAAO,MAAM,YAAY,GAAI,GAAG,GAAG,KAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAoB,CAAC;AACtE,eAAO,MAAM,UAAU,GAAI,GAAG,GAAG,KAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAoB,CAAC;AACpE,eAAO,MAAM,UAAU,GAAI,GAAG,GAAG,KAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAU,CAAC"}
package/lib/s.js CHANGED
@@ -1,86 +1,82 @@
1
+ const namedFunc = typeof __SUBAY_DEV__ === 'boolean' && __SUBAY_DEV__ ? (await import('./name.js')).namedFunc : (f) => f;
1
2
  let currentUpdate = undefined;
2
3
  const NoValue = Symbol();
4
+ const Yes = Symbol();
3
5
  let triggerQueue = undefined;
4
6
  const fun2s = new WeakMap();
5
- class Reactive {
6
- }
7
- class Observable extends Reactive {
8
- }
9
- class Computation extends Reactive {
10
- }
11
- const cProto = new Computation();
12
- const oProto = new Observable();
7
+ let clock = 0;
13
8
  export const root = (fn) => {
14
9
  const backup = currentUpdate;
15
10
  const rootUpdate = (() => { });
16
- resetUpdate(rootUpdate);
11
+ resetS(rootUpdate);
17
12
  rootUpdate._dirty = false;
18
13
  currentUpdate = rootUpdate;
19
14
  const result = fn(() => {
20
- recycleUpdate(rootUpdate);
15
+ recycleS(rootUpdate);
21
16
  currentUpdate = undefined;
22
17
  });
23
18
  currentUpdate = backup;
24
19
  return result;
25
20
  };
26
21
  export const S = (fn, value) => {
27
- const data = () => {
28
- if (update._dirty) {
29
- update();
22
+ const data = namedFunc(resetS((force) => {
23
+ if (force === Yes || data._dirty) {
24
+ const backup = currentUpdate;
25
+ recycleS(data);
26
+ data._dirty = false;
27
+ currentUpdate = data;
28
+ value = fn(value);
29
+ currentUpdate = backup;
30
30
  }
31
- else if (currentUpdate) {
32
- update._whoINeed.forEach((t) => t._data());
31
+ else if (currentUpdate && !currentUpdate._whoINeed.has(data)) {
32
+ currentUpdate._whoINeed.add(data);
33
+ data._whoNeedMe.push(currentUpdate);
33
34
  }
34
35
  return value;
35
- };
36
- Object.setPrototypeOf(data, cProto);
37
- const update = (() => {
38
- const backup = currentUpdate;
39
- recycleUpdate(update);
40
- update._dirty = false;
41
- currentUpdate = update;
42
- value = fn(value);
43
- currentUpdate = backup;
44
- });
36
+ }));
37
+ data.$o = 0xc03;
38
+ data._birthtime = clock++;
45
39
  if (currentUpdate) {
46
- currentUpdate._whoIOwn.push(update);
40
+ currentUpdate._whoIOwn.push(data);
47
41
  }
48
- resetUpdate(update);
49
- update();
50
- fun2s.set(fn, update);
42
+ data(Yes);
43
+ fun2s.set(fn, data);
51
44
  return data;
52
45
  };
53
46
  export const o = (value) => {
54
- function data(nextValue) {
47
+ function d(nextValue) {
55
48
  if (arguments.length === 0) {
56
- if (currentUpdate) {
57
- if (!currentUpdate._whoINeed.includes(trigger)) {
58
- currentUpdate._whoINeed.push(trigger);
59
- }
60
- if (!trigger._whoNeedMe.includes(currentUpdate)) {
61
- trigger._whoNeedMe.push(currentUpdate);
62
- }
49
+ if (currentUpdate && !currentUpdate._whoINeed.has(data)) {
50
+ currentUpdate._whoINeed.add(data);
51
+ data._whoNeedMe.push(currentUpdate);
63
52
  }
64
53
  return value;
65
54
  }
66
55
  if (triggerQueue) {
67
- if (trigger._pendingValue === NoValue) {
68
- triggerQueue.push(trigger);
56
+ if (data._pendingValue === NoValue) {
57
+ triggerQueue.push(data);
69
58
  }
70
- trigger._pendingValue = nextValue;
59
+ data._pendingValue = nextValue;
71
60
  return nextValue;
72
61
  }
73
62
  value = nextValue;
74
63
  const backup = currentUpdate;
75
64
  currentUpdate = undefined;
76
- const whoNeedMeLasttime = trigger._whoNeedMe.filter((it) => {
77
- return it._whoINeed.includes(trigger);
78
- });
65
+ const collection = new Set();
66
+ const collect = (it, by) => {
67
+ if (!it._whoINeed.has(by) || collection.has(it)) {
68
+ return;
69
+ }
70
+ collection.add(it);
71
+ it._whoNeedMe.forEach((i) => collect(i, it));
72
+ };
73
+ data._whoNeedMe.forEach((it) => collect(it, data));
74
+ const whoNeedMeLasttime = Array.from(collection);
79
75
  whoNeedMeLasttime.forEach((u) => {
80
76
  u._dirty = true;
81
77
  });
82
- trigger._whoNeedMe = [];
83
- whoNeedMeLasttime.forEach((u) => {
78
+ data._whoNeedMe = [];
79
+ whoNeedMeLasttime.sort(byBirthTime).forEach((u) => {
84
80
  if (u._dirty) {
85
81
  u();
86
82
  }
@@ -88,29 +84,29 @@ export const o = (value) => {
88
84
  currentUpdate = backup;
89
85
  return value;
90
86
  }
91
- Object.setPrototypeOf(data, oProto);
92
- const trigger = {
93
- _whoNeedMe: [],
94
- _data: data,
95
- _pendingValue: NoValue,
96
- };
87
+ const data = namedFunc(d);
88
+ data._whoNeedMe = [];
89
+ data._pendingValue = NoValue;
90
+ data.$o = 0x0b5;
91
+ data._birthtime = clock++;
97
92
  return data;
98
93
  };
99
- const recycleUpdate = (update) => {
100
- update._whoIOwn.forEach(recycleUpdate);
94
+ const byBirthTime = (a, b) => a._birthtime - b._birthtime;
95
+ const recycleS = (update) => {
96
+ update._whoIOwn.forEach(recycleS);
101
97
  update._dirty = false;
102
98
  update._onCleanupCallback.forEach((f) => f());
103
- resetUpdate(update);
99
+ resetS(update);
104
100
  };
105
- const resetUpdate = (update) => {
106
- update._whoINeed = [];
101
+ const resetS = (update) => {
102
+ update._whoINeed = new Set();
103
+ update._whoNeedMe = [];
107
104
  update._whoIOwn = [];
108
105
  update._onCleanupCallback = [];
106
+ return update;
109
107
  };
110
108
  export const cleanup = (f) => {
111
- if (currentUpdate) {
112
- currentUpdate._onCleanupCallback.push(f);
113
- }
109
+ currentUpdate?._onCleanupCallback.push(f);
114
110
  return f;
115
111
  };
116
112
  export const transaction = (f) => {
@@ -123,7 +119,7 @@ export const transaction = (f) => {
123
119
  if (t._pendingValue !== NoValue) {
124
120
  const pv = t._pendingValue;
125
121
  t._pendingValue = NoValue;
126
- t._data(pv);
122
+ t(pv);
127
123
  }
128
124
  });
129
125
  return result;
@@ -144,10 +140,10 @@ export const subscribe = (f) => {
144
140
  export const unsubscribe = (f) => {
145
141
  const update = fun2s.get(f);
146
142
  if (update) {
147
- recycleUpdate(update);
143
+ recycleS(update);
148
144
  }
149
145
  };
150
- export const isObservable = (o) => o instanceof Observable;
151
- export const isComputed = (o) => o instanceof Computation;
152
- export const isReactive = (o) => o instanceof Reactive;
146
+ export const isObservable = (o) => o?.$o === 0x0b5;
147
+ export const isComputed = (o) => o?.$o === 0xc03;
148
+ export const isReactive = (o) => o?.$o;
153
149
  //# sourceMappingURL=s.js.map
package/lib/s.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"s.js","sourceRoot":"","sources":["../src/s.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"s.js","sourceRoot":"","sources":["../src/s.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "subay",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "description": "A lightweight reactive UI library with state management and template rendering",
5
5
  "keywords": [
6
6
  "reactive",
@@ -18,12 +18,14 @@
18
18
  "author": "j-sen",
19
19
  "type": "module",
20
20
  "module": "./lib/index.js",
21
+ "main": "./lib/index.js",
22
+ "types": "./src/index.d.ts",
21
23
  "exports": {
22
- "default": "./lib/index.js",
23
- "unpkg": "./lib/index.js",
24
24
  ".": {
25
- "import": "./lib/index.js",
26
- "types": "./lib/index.d.ts"
25
+ "import": "./lib/index.js"
26
+ },
27
+ "./dev": {
28
+ "import": "./lib/index.dev.js"
27
29
  }
28
30
  },
29
31
  "devDependencies": {
@@ -32,9 +34,10 @@
32
34
  "scripts": {
33
35
  "test": "npx http-server -c-1 -o /test/test.html",
34
36
  "dev": "tsc --build --watch ./tsconfig.json",
35
- "build": "npx microbundle -i src/index.ts -o lib/index.js --no-pkg-main -f modern"
36
- },
37
- "mangle": {
38
- "regex": "^_"
37
+ "types": "tsc -d --outDir lib",
38
+ "bundle-dev": "npx esbuild --bundle src/index.ts --outfile=lib/index.dev.js --minify \"--mangle-props=^_\" --format=esm --define:__SUBAY_DEV__=true",
39
+ "bundle-prod": "npx esbuild --bundle src/index.ts --outfile=lib/index.js --minify \"--mangle-props=^_\" --format=esm --define:__SUBAY_DEV__=false",
40
+ "bundle": "npm run bundle-dev & npm run bundle-prod",
41
+ "build": "npm run types && npm run bundle"
39
42
  }
40
43
  }