{ "version": 3, "sources": ["../../lib/common.ts", "../../lib/noderange.ts", "../../lib/morph.ts", "../../lib/render.ts", "../../lib/psatina.ts"], "sourcesContent": ["export const { TEXT_NODE, COMMENT_NODE, ELEMENT_NODE, DOCUMENT_FRAGMENT_NODE } = Node\n\nexport type VComment = { nodeType: typeof COMMENT_NODE, nodeValue: string | null }\nexport type VText = { nodeType: typeof TEXT_NODE, nodeValue: string | null }\nexport type VElement = {\n nodeType: typeof ELEMENT_NODE,\n tagName: string,\n attributes: Record,\n properties: Record,\n eventListeners?: EventListener,\n childNodes: VNode[],\n inits: ((el: Element) => void)[]\n}\n\nexport type VNode = VText | VComment | VElement\n\nexport const withFunc = (body: string, ...args: string[]) =>\n new Function(...args, `with(this)return(${body})`)\n\nexport const ieval = (expr: string, data: unknown) =>\n withFunc(expr).call(data)\n\nexport const flatMap = (xs: Iterable, f: (x: X, i: number) => Iterable) => {\n let rv = [], i = 0\n for (let x of xs) for (let o of f(x, i++)) rv.push(o)\n return rv\n}\n", "export type NodeRange = { root: Document | ShadowRoot, parent: ParentNode, start: Node | null, end: Node | null }\n\nexport const getRoot = (node: Node) => {\n let result = node.getRootNode()\n if (result instanceof Element) return document\n return result as Document | ShadowRoot\n}\n\nexport const children = (parent: ParentNode): NodeRange => ({ parent, start: null, end: null, root: getRoot(parent) })\n\nexport const after = (start: Node): NodeRange => ({ parent: start.parentNode!, start, end: start.nextSibling, root: getRoot(start.parentNode!) })\n\nexport const first = ({ start, parent }: NodeRange) => start ? start.nextSibling : parent.firstChild\n\nexport const next = (_: NodeRange, current: Node | null) => current?.nextSibling ?? null\n\nexport const done = ({ end }: NodeRange, current: Node | null) => current === end || !current\n\nconst tryMoveBefore = (parent: ParentNode, newChild: Node, refChild: Node | null) => {\n // @ts-ignore new API\n try { parent.moveBefore(newChild, refChild) }\n catch (e) { parent.insertBefore(newChild, refChild) }\n}\n\nexport const insertBehind = ({ parent, end }: NodeRange, current: Node | null, newChild: Node) => {\n if (current === newChild) return newChild\n if (current === null) tryMoveBefore(parent, newChild, end)\n else tryMoveBefore(parent, newChild, current)\n return newChild\n}\n", "import { COMMENT_NODE, ELEMENT_NODE, TEXT_NODE, VElement, VNode } from \"./common.ts\"\nimport { children, done, first, insertBehind, next, NodeRange } from \"./noderange.ts\"\n\n/* terminology: we mutate the _destination tree_ (`dst`)\n * to become like the _source tree_ (`src`)\n * preconditions: both trees must have elements as roots.\n * the destination tree must be connected to the document\n * or a shadow root.\n * both trees should have unique ids, both within themselves\n * and within the rest of the document/shadow root.\n * (the same id can occur within both trees, though.)\n * warning: this will remove the source node from the document\n * and mutate it in unspecified ways\n */\n\nexport const morph = (dst: NodeRange, src: VNode[]) => {\n let focused = document.activeElement\n\n let stash = Object.assign(\n document.createElement('div'),\n { hidden: true, className: 'murph-stash' }\n )\n // @ts-expect-error hacky way to avoid instanceof check\n ~(dst.root.body ?? dst.root).append(stash)\n\n morphNodes(stash, dst, src)\n\n // @ts-expect-error it was focused, so presumably it's focusable\n focused?.focus?.()\n stash.remove()\n}\n\nconst morphNode = (stash: Element, dst: Node, src: VNode): Node => {\n if (dst.nodeType !== src.nodeType) {\n const real = realize(stash, src)\n dst.parentNode!.replaceChild(real, dst)\n return real\n } else if (src.nodeType === 1) {\n return morphElement(stash, dst as Element, src)\n } else if (src.nodeType === 3 || src.nodeType === 8) {\n if (dst.nodeValue !== src.nodeValue) dst.nodeValue = src.nodeValue\n return dst\n }\n throw \"unreachable\"\n}\n\nconst morphElement = (stash: Element, dst: Element, src: VElement) => {\n morphNodes(stash, children(dst), src.childNodes)\n if (dst.tagName === src.tagName && dst.id === (src.attributes.id ?? \"\")) {\n morphAttributesAndProperties(dst, src)\n return dst\n } else {\n let real = realize(stash, src) as Element\n real.replaceChildren(...dst.children)\n dst.replaceWith(real)\n return real\n }\n}\n\nconst morphAttributesAndProperties = (dst: Element, src: VElement) => {\n for (const [name, value] of Object.entries(src.attributes))\n if (dst.getAttribute(name) !== value) dst.setAttribute(name, value)\n for (const { name } of [...dst.attributes])\n if (!(name in src.attributes)) dst.removeAttribute(name)\n for (const prop in src.properties) {\n // event handler properties for custom events\n if (prop.startsWith('on') && !(prop in dst))\n // @ts-expect-error\n dst.addEventListener(prop.slice(2), (e: Event) => dst[prop]?.(e))\n // @ts-expect-error\n if (dst[prop] !== src.properties[prop]) dst[prop] = src.properties[prop]\n }\n}\n\nconst morphNodes = (stash: Element, dst: NodeRange, src: VNode[]) => {\n let d = first(dst)\n for (let s of src) {\n let match: Node | null = null\n let id = (s as VElement).attributes?.id\n if (id) match = dst.root.getElementById(id)\n // [TODO] Possible to avoid making \"find best dst node\" O(n)?\n // This makes the overall match operation O(n^2).\n // Nanomorph seems not to worry about it.\n else for (let m = d; !done(dst, m) && !match; m = next(dst, m))\n if (decentMatch(m!, s)) match = m\n if (match) d = next(dst, morphNode(stash, insertBehind(dst, d, match), s))\n else d = next(dst, insertBehind(dst, d, realize(stash, s)))\n }\n while (!done(dst, d)) { let v = d!; d = next(dst, d); stash.append(v) }\n}\n\nconst decentMatch = (a: Node, b: VNode) =>\n a.nodeType === b.nodeType && (\n b.nodeType !== 1 || (\n (a as Element).tagName === b.tagName &&\n (a as Element).id === \"\"\n )\n )\n\nconst realize = (stash: Element, src: VNode): Node => {\n if (src.nodeType === ELEMENT_NODE) {\n const el = document.createElement(src.tagName)\n morphAttributesAndProperties(el, src)\n morphNodes(stash, children(el), src.childNodes)\n src.inits.forEach(init => init(el))\n return el\n }\n if (src.nodeType === TEXT_NODE) return document.createTextNode(src.nodeValue!)\n if (src.nodeType === COMMENT_NODE) return document.createComment(src.nodeValue!)\n throw \"unreachable\"\n}\n", "/// \n\nimport { COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, ELEMENT_NODE, flatMap, ieval, TEXT_NODE, VElement, VNode, withFunc } from \"./common.ts\"\n\nconst interpolate = (str: string, data: unknown) =>\n str.replace(/\\[\\|(.*)\\|\\]/g, (_, expr) => ieval(expr, data))\n\nexport type TemplateDirective = (o: {\n modifiers: string[],\n value: string,\n element: Element,\n data: Record,\n render: (d: Record) => VNode[],\n}) => VNode[]\n\nexport const templateDirectives = new Map()\n\nexport const render = (\n template: Node,\n data: Record,\n donelist: Attr[] = [],\n): VNode[] => {\n let { nodeType, nodeValue } = template\n if (nodeType === TEXT_NODE || nodeType === COMMENT_NODE)\n return [{ nodeType, nodeValue: interpolate(nodeValue!, data) }]\n \n if (nodeType === DOCUMENT_FRAGMENT_NODE)\n return flatMap(template.childNodes, n => render(n, data))\n \n if (nodeType === ELEMENT_NODE) {\n let element = template as Element\n let { tagName } = element\n let attributes = {} as Record\n let properties = {} as Record\n\n for (let attr of element.attributes) {\n let { name, value } = attr\n if (name.startsWith('p:')) {\n if (donelist.includes(attr)) continue\n let donelist_ = donelist.concat(attr)\n let [, directive, ...modifiers] = name.split(':')\n let dir = templateDirectives.get(directive)\n if (dir) return dir({\n modifiers,\n value,\n element,\n data,\n render: element instanceof HTMLTemplateElement\n ? (data => flatMap(\n element.content.childNodes,\n element => render(element, data, [])\n ) as VNode[])\n : (data => render(element, data, donelist_)),\n })\n }\n else attributes[name] = interpolate(value, data)\n }\n \n let childNodes = flatMap(element.childNodes, n => render(n, data))\n \n return [{ nodeType, tagName, attributes, properties, childNodes, inits: [] }]\n }\n\n throw new Error(`Unsupported node type: ${nodeType}`)\n}\n\ntemplateDirectives.set('for', ({\n render, data, value,\n modifiers: [vvar, kvar]\n}) => {\n let iterable = ieval(value, data)\n return Symbol.iterator in iterable\n ? flatMap(iterable, (v, k) =>\n render({ __proto__: data, [vvar]: v, [kvar]: k }))\n : Object.entries(iterable).flatMap(([k, v]) =>\n render({ __proto__: data, [vvar]: v, [kvar]: k }))\n})\n\ntemplateDirectives.set('if', ({ render, data, value }) =>\n ieval(value, data) ? render(data) : [])\n\ntemplateDirectives.set('on', ({ render, data, value, modifiers: [eventType] }) =>\n render(data).map(vn => {\n (vn as VElement).properties['on' + eventType] = withFunc(value, 'event').bind(data)\n return vn\n }))\n\ntemplateDirectives.set('set', ({ render, data, value, modifiers: [prop] }) =>\n render(data).map(vn => {\n (vn as VElement).properties[prop] = ieval(value, data)\n return vn\n }))\n\ntemplateDirectives.set('init', ({ render, data, value }) =>\n render(data)\n .map(vn => ((vn as VElement).inits.push(withFunc(value, 'element').bind(data)), vn)))\n\ntemplateDirectives.set('ref', ({ render, data, value }) =>\n render(data)\n .map(vn => ((vn as VElement).inits.push(\n el => data[value] = el\n ), vn)))\n\ntemplateDirectives.set('data', ({ render, data, value }) =>\n render(Object.assign(Object.create(data), ieval(value || '{}', data))))\n", "import { ieval } from \"./common.js\";\nimport { after, NodeRange } from \"./noderange.js\";\nimport { morph } from \"./morph.js\";\nimport { render } from \"./render.js\";\n\nexport const psatina = (\n template: HTMLTemplateElement,\n dataExpr: string,\n targetRange: NodeRange = after(template),\n) => {\n let data = ieval(dataExpr, template)\n ~(data.update = async (f?: () => unknown) => {\n await f?.()\n morph(targetRange, render(template.content, data))\n })() \n}\n\ndocument.querySelectorAll('template[p\\\\:data]').forEach(n =>\n psatina(n, n.getAttribute('p:data') || '{}'))\n"], "mappings": "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", "names": ["TEXT_NODE", "COMMENT_NODE", "ELEMENT_NODE", "DOCUMENT_FRAGMENT_NODE", "withFunc", "body", "args", "ieval", "expr", "data", "flatMap", "xs", "f", "rv", "i", "x", "o", "getRoot", "node", "result", "children", "parent", "after", "start", "first", "next", "_", "current", "done", "end", "tryMoveBefore", "newChild", "refChild", "insertBehind", "morph", "dst", "src", "focused", "stash", "morphNodes", "morphNode", "real", "realize", "morphElement", "children", "morphAttributesAndProperties", "name", "value", "prop", "e", "d", "first", "s", "match", "id", "m", "done", "next", "decentMatch", "insertBehind", "v", "a", "b", "ELEMENT_NODE", "el", "init", "TEXT_NODE", "COMMENT_NODE", "interpolate", "str", "data", "_", "expr", "ieval", "templateDirectives", "render", "template", "donelist", "nodeType", "nodeValue", "TEXT_NODE", "COMMENT_NODE", "DOCUMENT_FRAGMENT_NODE", "flatMap", "n", "ELEMENT_NODE", "element", "tagName", "attributes", "properties", "attr", "name", "value", "donelist_", "directive", "modifiers", "dir", "childNodes", "vvar", "kvar", "iterable", "v", "k", "eventType", "vn", "withFunc", "prop", "el", "psatina", "template", "dataExpr", "targetRange", "after", "data", "ieval", "f", "morph", "render", "n"] }