microtags 0.0.13 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +567 -40
- package/dist/build.cjs +412 -0
- package/dist/build.cjs.map +7 -0
- package/dist/build.d.ts +17 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +395 -0
- package/dist/build.js.map +7 -0
- package/dist/builders.d.ts +70 -4
- package/dist/builders.d.ts.map +1 -1
- package/dist/{chunk-CCYWRJW6.js → chunk-46UEUDVX.js} +4 -26
- package/dist/chunk-46UEUDVX.js.map +7 -0
- package/dist/chunk-LS4L5QRD.js +26 -0
- package/dist/chunk-LS4L5QRD.js.map +7 -0
- package/dist/chunk-RKWPTT6P.js +69 -0
- package/dist/chunk-RKWPTT6P.js.map +7 -0
- package/dist/chunk-ZZ4ZLOQY.js +33 -0
- package/dist/chunk-ZZ4ZLOQY.js.map +7 -0
- package/dist/cli.cjs +536 -0
- package/dist/cli.cjs.map +7 -0
- package/dist/context.js +2 -1
- package/dist/esbuild.cjs +451 -0
- package/dist/esbuild.cjs.map +7 -0
- package/dist/esbuild.d.ts +7 -0
- package/dist/esbuild.d.ts.map +1 -0
- package/dist/esbuild.js +434 -0
- package/dist/esbuild.js.map +7 -0
- package/dist/factory.d.ts +7 -1
- package/dist/factory.d.ts.map +1 -1
- package/dist/htm.browser.cjs +591 -0
- package/dist/htm.browser.cjs.map +7 -0
- package/dist/htm.browser.d.ts +30 -0
- package/dist/htm.browser.d.ts.map +1 -0
- package/dist/htm.browser.js +498 -0
- package/dist/htm.browser.js.map +7 -0
- package/dist/htm.browser.min.js +3 -0
- package/dist/htm.browser.min.js.map +7 -0
- package/dist/htm.cjs +284 -0
- package/dist/htm.cjs.map +7 -0
- package/dist/htm.d.ts +14 -0
- package/dist/htm.d.ts.map +1 -0
- package/dist/htm.js +196 -0
- package/dist/htm.js.map +7 -0
- package/dist/htm.min.js +3 -0
- package/dist/htm.min.js.map +7 -0
- package/dist/index.cjs +125 -11
- package/dist/index.cjs.map +2 -2
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +133 -17
- package/dist/index.js.map +2 -2
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +3 -3
- package/dist/meta.json +411 -26
- package/dist/preact-shared.d.ts +61 -0
- package/dist/preact-shared.d.ts.map +1 -0
- package/dist/preact.browser.d.ts +8 -0
- package/dist/preact.browser.d.ts.map +1 -0
- package/dist/preact.browser.js +45 -0
- package/dist/preact.browser.js.map +7 -0
- package/dist/preact.browser.min.js +2 -0
- package/dist/preact.browser.min.js.map +7 -0
- package/dist/preact.cjs +128 -0
- package/dist/preact.cjs.map +7 -0
- package/dist/preact.d.ts +9 -0
- package/dist/preact.d.ts.map +1 -0
- package/dist/preact.js +35 -0
- package/dist/preact.js.map +7 -0
- package/dist/render-support.cjs +86 -0
- package/dist/render-support.cjs.map +7 -0
- package/dist/render-support.d.ts +23 -0
- package/dist/render-support.d.ts.map +1 -0
- package/dist/render-support.js +12 -0
- package/dist/render-support.js.map +7 -0
- package/dist/render-support.min.js +2 -0
- package/dist/render-support.min.js.map +7 -0
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/vite.cjs +448 -0
- package/dist/vite.cjs.map +7 -0
- package/dist/vite.d.ts +7 -0
- package/dist/vite.d.ts.map +1 -0
- package/dist/vite.js +429 -0
- package/dist/vite.js.map +7 -0
- package/package.json +92 -13
- package/dist/chunk-CCYWRJW6.js.map +0 -7
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../node_modules/htm/dist/htm.module.js", "../node_modules/alien-signals/esm/system.mjs", "../node_modules/alien-signals/esm/index.mjs", "../src/reactivity.ts", "../src/render-support.ts", "../src/htm.browser.ts"],
|
|
4
|
+
"sourcesContent": ["var n=function(t,s,r,e){var u;s[0]=0;for(var h=1;h<s.length;h++){var p=s[h++],a=s[h]?(s[0]|=p?1:2,r[s[h++]]):s[++h];3===p?e[0]=a:4===p?e[1]=Object.assign(e[1]||{},a):5===p?(e[1]=e[1]||{})[s[++h]]=a:6===p?e[1][s[++h]]+=a+\"\":p?(u=t.apply(a,n(t,a,r,[\"\",null])),e.push(u),a[0]?s[0]|=2:(s[h-2]=0,s[h]=u)):e.push(a)}return e},t=new Map;export default function(s){var r=t.get(this);return r||(r=new Map,t.set(this,r)),(r=n(this,r.get(s)||(r.set(s,r=function(n){for(var t,s,r=1,e=\"\",u=\"\",h=[0],p=function(n){1===r&&(n||(e=e.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g,\"\")))?h.push(0,n,e):3===r&&(n||e)?(h.push(3,n,e),r=2):2===r&&\"...\"===e&&n?h.push(4,n,0):2===r&&e&&!n?h.push(5,0,!0,e):r>=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e=\"\"},a=0;a<n.length;a++){a&&(1===r&&p(),p(a));for(var l=0;l<n[a].length;l++)t=n[a][l],1===r?\"<\"===t?(p(),h=[h],r=3):e+=t:4===r?\"--\"===e&&\">\"===t?(r=1,e=\"\"):e=t+e[0]:u?t===u?u=\"\":e+=t:'\"'===t||\"'\"===t?u=t:\">\"===t?(p(),r=1):r&&(\"=\"===t?(r=5,s=e,e=\"\"):\"/\"===t&&(r<5||\">\"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):\" \"===t||\"\\t\"===t||\"\\n\"===t||\"\\r\"===t?(p(),r=2):e+=t),3===r&&\"!--\"===e&&(r=4,h=h[0])}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]}\n", "export const ReactiveFlags = {\n None: 0,\n Mutable: 1,\n Watching: 2,\n RecursedCheck: 4,\n Recursed: 8,\n Dirty: 16,\n Pending: 32,\n};\nexport function createReactiveSystem({ update, notify, unwatched, }) {\n return {\n link,\n unlink,\n propagate,\n checkDirty,\n shallowPropagate,\n };\n function link(dep, sub, version) {\n const prevDep = sub.depsTail;\n if (prevDep !== undefined && prevDep.dep === dep) {\n return;\n }\n const nextDep = prevDep !== undefined ? prevDep.nextDep : sub.deps;\n if (nextDep !== undefined && nextDep.dep === dep) {\n nextDep.version = version;\n sub.depsTail = nextDep;\n return;\n }\n const prevSub = dep.subsTail;\n if (prevSub !== undefined && prevSub.version === version && prevSub.sub === sub) {\n return;\n }\n const newLink = sub.depsTail\n = dep.subsTail\n = {\n version,\n dep,\n sub,\n prevDep,\n nextDep,\n prevSub,\n nextSub: undefined,\n };\n if (nextDep !== undefined) {\n nextDep.prevDep = newLink;\n }\n if (prevDep !== undefined) {\n prevDep.nextDep = newLink;\n }\n else {\n sub.deps = newLink;\n }\n if (prevSub !== undefined) {\n prevSub.nextSub = newLink;\n }\n else {\n dep.subs = newLink;\n }\n }\n function unlink(link, sub = link.sub) {\n const { dep, prevDep, nextDep, nextSub, prevSub } = link;\n if (nextDep !== undefined) {\n nextDep.prevDep = prevDep;\n }\n else {\n sub.depsTail = prevDep;\n }\n if (prevDep !== undefined) {\n prevDep.nextDep = nextDep;\n }\n else {\n sub.deps = nextDep;\n }\n if (nextSub !== undefined) {\n nextSub.prevSub = prevSub;\n }\n else {\n dep.subsTail = prevSub;\n }\n if (prevSub !== undefined) {\n prevSub.nextSub = nextSub;\n }\n else if ((dep.subs = nextSub) === undefined) {\n unwatched(dep);\n }\n return nextDep;\n }\n function propagate(link, innerWrite) {\n let next = link.nextSub;\n let stack;\n top: do {\n const sub = link.sub;\n let flags = sub.flags;\n if (!(flags & (4 | 8 | 16 | 32))) {\n sub.flags = flags | 32;\n if (innerWrite) {\n sub.flags |= 8;\n }\n }\n else if (!(flags & (4 | 8))) {\n flags = 0;\n }\n else if (!(flags & 4)) {\n sub.flags = (flags & ~8) | 32;\n }\n else if (!(flags & (16 | 32)) && isValidLink(link, sub)) {\n sub.flags = flags | (8 | 32);\n flags &= 1;\n }\n else {\n flags = 0;\n }\n if (flags & 2) {\n notify(sub);\n }\n if (flags & 1) {\n const subSubs = sub.subs;\n if (subSubs !== undefined) {\n const nextSub = (link = subSubs).nextSub;\n if (nextSub !== undefined) {\n stack = { value: next, prev: stack };\n next = nextSub;\n }\n continue;\n }\n }\n if ((link = next) !== undefined) {\n next = link.nextSub;\n continue;\n }\n while (stack !== undefined) {\n link = stack.value;\n stack = stack.prev;\n if (link !== undefined) {\n next = link.nextSub;\n continue top;\n }\n }\n break;\n } while (true);\n }\n function checkDirty(link, sub) {\n let stack;\n let checkDepth = 0;\n let dirty = false;\n top: do {\n const dep = link.dep;\n const flags = dep.flags;\n if (sub.flags & 16) {\n dirty = true;\n }\n else if ((flags & (1 | 16)) === (1 | 16)) {\n const subs = dep.subs;\n if (update(dep)) {\n if (subs.nextSub !== undefined) {\n shallowPropagate(subs);\n }\n dirty = true;\n }\n }\n else if ((flags & (1 | 32)) === (1 | 32)) {\n stack = { value: link, prev: stack };\n link = dep.deps;\n sub = dep;\n ++checkDepth;\n continue;\n }\n if (!dirty) {\n const nextDep = link.nextDep;\n if (nextDep !== undefined) {\n link = nextDep;\n continue;\n }\n }\n while (checkDepth--) {\n link = stack.value;\n stack = stack.prev;\n if (dirty) {\n const subs = sub.subs;\n if (update(sub)) {\n if (subs.nextSub !== undefined) {\n shallowPropagate(subs);\n }\n sub = link.sub;\n continue;\n }\n dirty = false;\n }\n else {\n sub.flags &= ~32;\n }\n sub = link.sub;\n const nextDep = link.nextDep;\n if (nextDep !== undefined) {\n link = nextDep;\n continue top;\n }\n }\n return dirty && !!sub.flags;\n } while (true);\n }\n function shallowPropagate(link) {\n do {\n const sub = link.sub;\n const flags = sub.flags;\n if ((flags & (32 | 16)) === 32) {\n sub.flags = flags | 16;\n if ((flags & (2 | 4)) === 2) {\n notify(sub);\n }\n }\n } while ((link = link.nextSub) !== undefined);\n }\n function isValidLink(checkLink, sub) {\n let link = sub.depsTail;\n while (link !== undefined) {\n if (link === checkLink) {\n return true;\n }\n link = link.prevDep;\n }\n return false;\n }\n}\n", "import { createReactiveSystem } from './system.mjs';\nconst HasChildEffect = 64;\nlet cycle = 0;\nlet runDepth = 0;\nlet batchDepth = 0;\nlet notifyIndex = 0;\nlet queuedLength = 0;\nlet activeSub;\nconst queued = [];\nconst { link, unlink, propagate, checkDirty, shallowPropagate, } = createReactiveSystem({\n update(node) {\n if ('getter' in node) {\n return updateComputed(node);\n }\n if ('currentValue' in node) {\n return updateSignal(node);\n }\n node.flags = 1;\n return true;\n },\n notify(effect) {\n let insertIndex = queuedLength;\n let firstInsertedIndex = insertIndex;\n do {\n queued[insertIndex++] = effect;\n effect.flags &= ~2;\n effect = effect.subs?.sub;\n if (effect === undefined || !(effect.flags & 2)) {\n break;\n }\n } while (true);\n queuedLength = insertIndex;\n while (firstInsertedIndex < --insertIndex) {\n const left = queued[firstInsertedIndex];\n queued[firstInsertedIndex++] = queued[insertIndex];\n queued[insertIndex] = left;\n }\n },\n unwatched(node) {\n if ('getter' in node) {\n if (node.depsTail !== undefined) {\n node.flags = 1 | 16;\n disposeAllDepsInReverse(node);\n }\n }\n else if ('currentValue' in node) {\n }\n else if ('fn' in node) {\n effectOper.call(node);\n }\n else {\n effectScopeOper.call(node);\n }\n },\n});\nexport function getActiveSub() {\n return activeSub;\n}\nexport function setActiveSub(sub) {\n const prevSub = activeSub;\n activeSub = sub;\n return prevSub;\n}\nexport function getBatchDepth() {\n return batchDepth;\n}\nexport function startBatch() {\n ++batchDepth;\n}\nexport function endBatch() {\n if (!--batchDepth) {\n flush();\n }\n}\nexport function isSignal(fn) {\n return fn.name === 'bound ' + signalOper.name;\n}\nexport function isComputed(fn) {\n return fn.name === 'bound ' + computedOper.name;\n}\nexport function isEffect(fn) {\n return fn.name === 'bound ' + effectOper.name;\n}\nexport function isEffectScope(fn) {\n return fn.name === 'bound ' + effectScopeOper.name;\n}\nexport function signal(initialValue) {\n return signalOper.bind({\n currentValue: initialValue,\n pendingValue: initialValue,\n subs: undefined,\n subsTail: undefined,\n flags: 1,\n });\n}\nexport function computed(getter) {\n return computedOper.bind({\n value: undefined,\n subs: undefined,\n subsTail: undefined,\n deps: undefined,\n depsTail: undefined,\n flags: 0,\n getter: getter,\n });\n}\nexport function effect(fn) {\n const e = {\n fn,\n cleanup: undefined,\n subs: undefined,\n subsTail: undefined,\n deps: undefined,\n depsTail: undefined,\n flags: 2 | 4,\n };\n const prevSub = setActiveSub(e);\n if (prevSub !== undefined) {\n link(e, prevSub, 0);\n prevSub.flags |= HasChildEffect;\n }\n try {\n ++runDepth;\n e.cleanup = e.fn();\n }\n finally {\n --runDepth;\n activeSub = prevSub;\n e.flags &= ~4;\n }\n return effectOper.bind(e);\n}\nexport function effectScope(fn) {\n const e = {\n deps: undefined,\n depsTail: undefined,\n subs: undefined,\n subsTail: undefined,\n flags: 1,\n };\n const prevSub = setActiveSub(e);\n if (prevSub !== undefined) {\n link(e, prevSub, 0);\n prevSub.flags |= HasChildEffect;\n }\n try {\n fn();\n }\n finally {\n activeSub = prevSub;\n }\n return effectScopeOper.bind(e);\n}\nexport function trigger(fn) {\n const sub = {\n deps: undefined,\n depsTail: undefined,\n flags: 2,\n };\n const prevSub = setActiveSub(sub);\n try {\n fn();\n }\n finally {\n activeSub = prevSub;\n sub.flags = 0;\n let link = sub.deps;\n while (link !== undefined) {\n const dep = link.dep;\n link = unlink(link, sub);\n const subs = dep.subs;\n if (subs !== undefined) {\n propagate(subs, !!runDepth);\n shallowPropagate(subs);\n }\n }\n if (!batchDepth) {\n flush();\n }\n }\n}\nfunction updateComputed(c) {\n if (c.flags & HasChildEffect) {\n let link = c.depsTail;\n while (link !== undefined) {\n const prev = link.prevDep;\n const dep = link.dep;\n if (!('getter' in dep) && !('currentValue' in dep)) {\n unlink(link, c);\n }\n link = prev;\n }\n }\n c.depsTail = undefined;\n c.flags = 1 | 4;\n const prevSub = setActiveSub(c);\n try {\n ++cycle;\n const oldValue = c.value;\n return oldValue !== (c.value = c.getter(oldValue));\n }\n finally {\n activeSub = prevSub;\n c.flags &= ~4;\n purgeDeps(c);\n }\n}\nfunction updateSignal(s) {\n s.flags = 1;\n return s.currentValue !== (s.currentValue = s.pendingValue);\n}\nfunction run(e) {\n const flags = e.flags;\n if (flags & 16\n || (flags & 32\n && checkDirty(e.deps, e))) {\n if (flags & HasChildEffect) {\n let link = e.depsTail;\n while (link !== undefined) {\n const prev = link.prevDep;\n const dep = link.dep;\n if (!('getter' in dep) && !('currentValue' in dep)) {\n unlink(link, e);\n }\n link = prev;\n }\n }\n if (e.cleanup) {\n runCleanup(e);\n if (!e.flags) {\n return;\n }\n }\n e.depsTail = undefined;\n e.flags = 2 | 4;\n const prevSub = setActiveSub(e);\n try {\n ++cycle;\n ++runDepth;\n e.cleanup = e.fn();\n }\n finally {\n --runDepth;\n activeSub = prevSub;\n e.flags &= ~4;\n purgeDeps(e);\n }\n }\n else if (e.deps !== undefined) {\n e.flags = 2 | (flags & HasChildEffect);\n }\n}\nfunction flush() {\n try {\n while (notifyIndex < queuedLength) {\n const effect = queued[notifyIndex];\n queued[notifyIndex++] = undefined;\n run(effect);\n }\n }\n finally {\n while (notifyIndex < queuedLength) {\n const effect = queued[notifyIndex];\n queued[notifyIndex++] = undefined;\n effect.flags |= 2 | 8;\n }\n notifyIndex = 0;\n queuedLength = 0;\n }\n}\nfunction computedOper() {\n const flags = this.flags;\n if (flags & 16\n || (flags & 32\n && (checkDirty(this.deps, this)\n || (this.flags = flags & ~32, false)))) {\n if (updateComputed(this)) {\n const subs = this.subs;\n if (subs !== undefined) {\n shallowPropagate(subs);\n }\n }\n }\n else if (!flags) {\n this.flags = 1 | 4;\n const prevSub = setActiveSub(this);\n try {\n this.value = this.getter();\n }\n finally {\n activeSub = prevSub;\n this.flags &= ~4;\n }\n }\n const sub = activeSub;\n if (sub !== undefined) {\n link(this, sub, cycle);\n }\n return this.value;\n}\nfunction signalOper(...value) {\n if (value.length) {\n if (this.pendingValue !== (this.pendingValue = value[0])) {\n this.flags = 1 | 16;\n const subs = this.subs;\n if (subs !== undefined) {\n propagate(subs, !!runDepth);\n if (!batchDepth) {\n flush();\n }\n }\n }\n }\n else {\n if (this.flags & 16) {\n if (updateSignal(this)) {\n const subs = this.subs;\n if (subs !== undefined) {\n shallowPropagate(subs);\n }\n }\n }\n const sub = activeSub;\n if (sub !== undefined) {\n link(this, sub, cycle);\n }\n return this.currentValue;\n }\n}\nfunction runCleanup(e) {\n const cleanup = e.cleanup;\n e.cleanup = undefined;\n const prevSub = activeSub;\n activeSub = undefined;\n try {\n cleanup();\n }\n finally {\n activeSub = prevSub;\n }\n}\nfunction effectOper() {\n effectScopeOper.call(this);\n if (this.cleanup) {\n runCleanup(this);\n }\n}\nfunction effectScopeOper() {\n this.flags = 0;\n disposeAllDepsInReverse(this);\n const sub = this.subs;\n if (sub !== undefined) {\n unlink(sub);\n }\n}\nfunction disposeAllDepsInReverse(sub) {\n let link = sub.depsTail;\n while (link !== undefined) {\n const prev = link.prevDep;\n unlink(link, sub);\n link = prev;\n }\n}\nfunction purgeDeps(sub) {\n const depsTail = sub.depsTail;\n let dep = depsTail !== undefined ? depsTail.nextDep : sub.deps;\n while (dep !== undefined) {\n dep = unlink(dep, sub);\n }\n}\n", "import {\n signal,\n effect,\n effectScope,\n setActiveSub,\n} from 'alien-signals'\nimport type { Signal } from './types.js'\n\n// Re-export alien-signals primitives under stable names for internal use.\nexport { signal, effect, effectScope }\n\n/**\n * Run fn without tracking any signals it reads.\n * Suspends the current subscriber via setActiveSub(undefined),\n * restoring it in a finally block so nested effects are unaffected.\n */\nexport function untracked<T> (fn:() => T):T {\n const prev = setActiveSub(undefined)\n try {\n return fn()\n } finally {\n setActiveSub(prev)\n }\n}\n\n/**\n * Read a signal's current value without subscribing.\n * Equivalent to untracked(() => sig()).\n */\nexport function peek<T> (sig:Signal<T>):T {\n return untracked(() => sig())\n}\n", "// Server render support: the host-tag builder, prop serializers and\n// attribute escaping. Importing this module registers `renderHost`\n// under a registry symbol on `globalThis`, where a component's `render`\n// static finds it. Core never imports this module, so a bundle with\n// every render link stripped leaves it out. See ADR-009.\nimport type {\n PropMeta,\n RenderParts,\n RenderRecord,\n} from './builders.js'\n\nconst _esc:Record<string, string> = {\n '&': '&',\n '\"': '"',\n \"'\": ''',\n '<': '<',\n '>': '>',\n}\nfunction _escAttr (s:string):string {\n return s.replace(/[&\"'<>]/g, c => _esc[c])\n}\n\n// HTML attribute name grammar: a letter, `_` or `:`, then letters,\n// digits, `-`, `_`, `:` or `.`. Extra attrs may come from data.\nconst _attrName = /^[a-z_:][-\\w:.]*$/i\n\n// The kind is decided by core, so no coercer is compared here and any\n// copy of this module serves any copy of core.\nfunction _serialize (m:PropMeta, v:unknown):string | null {\n if (m.kind === 'prop-only' || v == null) return null\n if (m.kind === 'boolean') return v === true ? '' : null\n if (m.kind === 'json') return JSON.stringify(v)\n return String(v)\n}\n\nfunction _attr (k:string, v:string):string {\n return v === '' ? ` ${k}` : ` ${k}=\"${_escAttr(v)}\"`\n}\n\n/**\n * Render a component as parts: the host tag name, its serialized\n * (unescaped) attributes, declared props first, and the inner HTML.\n * `attrs` has no prototype, so a name like `__proto__` from data is a\n * plain key. A declared prop keeps its value over an extra attr of the\n * same name, as an HTML parser keeps the first of a duplicate.\n */\nexport function renderParts (\n rec:RenderRecord,\n props:Record<string, unknown>,\n options?:{ children?:string; attrs?:Record<string, string> }\n):RenderParts {\n const extra = options?.attrs ?? {}\n const html = String(rec.f({\n props,\n refs: rec.r,\n TAG: rec.t,\n children: options?.children ?? '',\n attrs: extra,\n }))\n const attrs:Record<string, string> = Object.create(null)\n for (const k in rec.m) {\n const s = k in props ? _serialize(rec.m[k], props[k]) : null\n if (s !== null) attrs[k] = s\n }\n for (const [k, v] of Object.entries(extra)) {\n if (_attrName.test(k)) attrs[k] ??= v\n }\n return { tag: rec.t, attrs, html }\n}\n\n/** Render a component's host tag around the output of its render link. */\nexport function renderHost (\n rec:RenderRecord,\n props:Record<string, unknown>,\n options?:{ children?:string; attrs?:Record<string, string> }\n):string {\n const { tag, attrs, html } = renderParts(rec, props, options)\n let a = ''\n for (const k in attrs) a += _attr(k, attrs[k])\n return `<${tag}${a}>${html}</${tag}>`\n}\n\n/**\n * Store `renderHost` and `renderParts` where the `render` and\n * `renderParts` statics look them up.\n */\nexport function register ():void {\n const g = globalThis as any\n g[Symbol.for('microtags.render')] = renderHost\n g[Symbol.for('microtags.renderParts')] = renderParts\n}\n\nregister()\n", "import htm from 'htm'\nimport { effect, effectScope, untracked } from './reactivity.js'\nimport type { MicrotagElementClass } from './builders.js'\nimport { register } from './render-support.js'\nimport type { PropDef } from './types.js'\n\n// Browser build of `microtags/htm`, selected by the `browser` export\n// condition. `html` describes nodes instead of building a string, and\n// `mount` turns that description into DOM with live bindings.\n\nconst _esc:Record<string, string> = {\n '&': '&',\n '\"': '"',\n \"'\": ''',\n '<': '<',\n '>': '>',\n}\n\nfunction _escHtml (s:string):string {\n return s.replace(/[&\"'<>]/g, c => _esc[c])\n}\n\nconst VOID = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr',\n 'img', 'input', 'link', 'meta', 'param',\n 'source', 'track', 'wbr',\n])\n\ntype Comp = MicrotagElementClass<Record<string, PropDef>>\ntype VType = string | Comp | ((...a:unknown[]) => unknown)\n\ninterface VNode {\n t:VType\n p:Record<string, unknown> | null\n c:unknown[]\n}\n\n// Brands markup across package copies, where `instanceof` fails.\nconst _M = Symbol.for('microtags.markup')\n\n/**\n * Opaque, trusted output of the templater. In the browser it describes\n * nodes for `mount`; `String(m)` still yields static HTML.\n */\nexport class Markup {\n // a node description, or trusted HTML from `raw`\n readonly _n:VNode | unknown[] | null\n readonly _h:string | null\n constructor (n:VNode | unknown[] | null, h:string | null = null) {\n this._n = n\n this._h = h\n }\n\n toString ():string {\n return this._h ?? _str(this._n)\n }\n}\n\n// on the prototype, so the brand stays out of the declared type\n(Markup.prototype as unknown as Record<symbol, boolean>)[_M] = true\n\nexport function raw (s:string):Markup {\n return new Markup(null, s)\n}\n\nfunction _isMarkup (c:unknown):c is Markup {\n return c != null && (c as Record<symbol, unknown>)[_M] === true\n}\n\nfunction _isMicrotag (t:unknown):t is Comp {\n return typeof t === 'function' && 'TAG' in t && 'props' in t\n}\n\nfunction _isEvent (k:string, v:unknown):boolean {\n return k.startsWith('on') && typeof v === 'function'\n}\n\n// A key that is not a valid attribute name, e.g. from a spread of user\n// data, is skipped so it cannot break out of a tag or make\n// `setAttribute` throw.\nconst _ATTR = /^[a-z_:][-\\w:.]*$/i\n\nfunction _read (v:unknown):unknown {\n return typeof v === 'function' ? untracked(v as () => unknown) : v\n}\n\nfunction _renderLink (type:Comp):Comp['render'] {\n if (typeof type.render !== 'function') {\n throw new Error(\n `microtags: cannot create <${type.TAG}> in the browser: its ` +\n 'render link was stripped. Keep it with ' +\n '`.render(fn, { client: true })` or the build-time keep list.'\n )\n }\n return type.render\n}\n\n// Split a component's props into declared props and extra attributes.\n// Signals and functions are read once.\nfunction _compArgs (type:Comp, props:Record<string, unknown> | null) {\n const declared = new Set(type.props as readonly string[])\n const compProps:Record<string, unknown> = {}\n const attrs:Record<string, string> = {}\n for (const [k, v] of Object.entries(props ?? {})) {\n if (declared.has(k)) {\n compProps[k] = _read(v)\n } else if (!_isEvent(k, v) && _ATTR.test(k)) {\n const r = _read(v)\n if (r === true) attrs[k] = ''\n else if (r !== false && r != null) attrs[k] = String(r)\n }\n }\n return { compProps, attrs }\n}\n\nfunction _str (c:unknown):string {\n if (c == null || c === false) return ''\n if (Array.isArray(c)) return c.map(_str).join('')\n if (_isMarkup(c)) return String(c)\n if (typeof c === 'function') return _str(_read(c))\n if (typeof c !== 'object' || !('t' in c)) {\n return _escHtml(String(c))\n }\n const { t, p, c: kids } = c as VNode\n const inner = _str(kids)\n if (_isMicrotag(t)) {\n const { compProps, attrs } = _compArgs(t, p)\n return _renderLink(t)(compProps as any, {\n children: inner,\n attrs: Object.keys(attrs).length > 0 ? attrs : undefined,\n })\n }\n if (typeof t !== 'string') return inner\n let a = ''\n for (const [k, v] of Object.entries(p ?? {})) {\n if (_isEvent(k, v) || !_ATTR.test(k)) continue\n const r = _read(v)\n if (r === true) a += ` ${k}`\n else if (r !== false && r != null) {\n a += ` ${k}=\"${_escHtml(String(r))}\"`\n }\n }\n if (VOID.has(t)) return `<${t}${a}>`\n return `<${t}${a}>${inner}</${t}>`\n}\n\nexport function h (\n type:VType,\n props:Record<string, unknown> | null,\n ...children:unknown[]\n):Markup {\n // htm does not know void tags, so an unclosed one takes everything\n // after it as children. Fail loudly instead of dropping them.\n if (typeof type === 'string' && VOID.has(type) && children.length) {\n throw new Error(\n `<${type}> has children: an unclosed void element ` +\n `swallows what follows it. Write it as <${type} />.`\n )\n }\n return new Markup({ t: type, p: props, c: children })\n}\n\nconst _htm = htm.bind(h)\n\nexport function html (\n strings:TemplateStringsArray,\n ...values:unknown[]\n):Markup {\n const result = (_htm as (...a:unknown[]) => unknown)(\n strings, ...values\n )\n if (_isMarkup(result)) return result\n return new Markup(Array.isArray(result) ? result : [result])\n}\n\n// Mounting\n\ntype Off = () => void\n\n// Run DOM work untracked, so hosts connected by it set up their own\n// effects outside any region.\nfunction _dom (fn:() => void):void {\n untracked(fn)\n}\n\n// The last value each control property was bound to, per element.\nconst _bound = new WeakMap<Element, Record<string, unknown>>()\n\n// `value`, `checked` and `selected` on form controls are DOM\n// properties, written only when the bound value changed, so a\n// re-render keeps what the visitor typed and a new value still wins.\nfunction _ctl (el:Element, k:string):boolean {\n return /^(value|checked|selected)$/.test(k) &&\n /^(INPUT|TEXTAREA|SELECT|OPTION)$/.test(el.tagName)\n}\n\n// Write an attribute; with `keep`, only if it does not already match.\nfunction _setAttr (\n el:Element,\n k:string,\n v:unknown,\n keep?:boolean\n):void {\n if (_ctl(el, k)) {\n const o = el as unknown as Record<string, unknown>\n const rec = _bound.get(el) ?? {}\n _bound.set(el, rec)\n const x = k === 'value' ? String(v ?? '') : !!v\n // adopting: compare with what the server wrote (`defaultValue`\n // and so on; a select has none), so a value the visitor typed\n // before hydration stays when the server value matches\n const d = o['default' + k[0].toUpperCase() + k.slice(1)]\n if (k in rec ? !Object.is(rec[k], v) : !(keep && (d ?? o[k]) === x)) {\n o[k] = x\n }\n rec[k] = v\n return\n }\n const s = v === false || v == null ?\n null :\n v === true ? '' : String(v)\n if (keep && el.getAttribute(k) === s) return\n if (s === null) el.removeAttribute(k)\n else el.setAttribute(k, s)\n}\n\nfunction _listen (el:Element, k:string, fn:unknown, offs:Off[]):void {\n const type = k.slice(2)\n const handler = fn as EventListener\n el.addEventListener(type, handler)\n offs.push(() => el.removeEventListener(type, handler))\n}\n\nfunction _parse (s:string):DocumentFragment {\n const tpl = document.createElement('template')\n tpl.innerHTML = s\n // importNode upgrades defined custom elements synchronously\n return document.importNode(tpl.content, true)\n}\n\n// Flatten a child value into the items a range holds: node\n// descriptions, regions (functions), parsed raw HTML and text.\nfunction _items (c:unknown, out:unknown[] = []):unknown[] {\n if (c == null || c === false) return out\n if (Array.isArray(c)) {\n for (const x of c) _items(x, out)\n } else if (_isMarkup(c)) {\n // a node description, else HTML (`raw`, or server markup)\n if (c._n) _items(c._n, out)\n else out.push(..._parse(String(c)).childNodes)\n } else if (\n typeof c === 'object' && !(c instanceof Node) && 'p' in c &&\n typeof (c as VNode).t !== 'string' &&\n !_isMicrotag((c as VNode).t)\n ) {\n _items((c as VNode).c, out)\n } else {\n out.push(c)\n }\n return out\n}\n\nfunction _create (c:unknown, offs:Off[]):Node[] {\n if (c instanceof Node) return [c]\n if (typeof c === 'function') return _region(c as () => unknown, offs)\n if (typeof c !== 'object' || c === null || !('t' in c)) {\n return [document.createTextNode(String(c))]\n }\n const { t, p, c: kids } = c as VNode\n if (_isMicrotag(t)) return [_createHost(t, p, kids, offs)]\n const el = document.createElement(t as string)\n // children first: a select's value needs its options\n _morph(el, null, null, kids, offs)\n _bindEl(el, p, offs)\n return [el]\n}\n\n// Bind attributes and listeners. When adopting, static values are\n// left as the server wrote them (a control's is compared like a bound\n// one), and a bound value's first run writes only if it differs from\n// the attribute already there.\nfunction _bindEl (\n el:Element,\n p:Record<string, unknown> | null,\n offs:Off[],\n adopt?:boolean\n):void {\n for (const [k, v] of Object.entries(p ?? {})) {\n if (_isEvent(k, v)) {\n _listen(el, k, v, offs)\n } else if (!_ATTR.test(k)) {\n continue\n } else if (typeof v === 'function') {\n let first = adopt\n effect(() => {\n _setAttr(el, k, (v as () => unknown)(), first)\n first = false\n })\n } else if (!adopt || _ctl(el, k)) {\n // an adopted control's static value seeds its record\n _setAttr(el, k, v, adopt)\n }\n }\n}\n\nfunction _bindHost (\n host:Element,\n type:Comp,\n p:Record<string, unknown> | null,\n offs:Off[],\n adopt?:boolean\n):void {\n const declared = new Set(type.props as readonly string[])\n for (const [k, v] of Object.entries(p ?? {})) {\n if (_isEvent(k, v)) {\n _listen(host, k, v, offs)\n } else if (declared.has(k)) {\n // a signal makes the prop read through to it\n (host as unknown as Record<string, unknown>)[k] = v\n } else if (k === 'key') {\n _setAttr(host, k, _read(v), adopt)\n }\n }\n}\n\nfunction _createHost (\n type:Comp,\n p:Record<string, unknown> | null,\n kids:unknown[],\n offs:Off[]\n):Element {\n const { compProps, attrs } = _compArgs(type, p)\n const inner = _str(kids)\n let host!:Element\n // A kept component's render static needs the support module.\n register()\n _dom(() => {\n const out = _renderLink(type)(compProps as any, {\n children: kids.length > 0 ? `<!--[c-->${inner}<!--]-->` : inner,\n attrs: Object.keys(attrs).length > 0 ? attrs : undefined,\n })\n host = _parse(String(out)).firstElementChild!\n })\n _bindHost(host, type, p, offs)\n return host\n}\n\n// A reactive region: nodes between two comment markers, morphed toward\n// the function's new value whenever what it reads changes. Given\n// existing markers, the first run adopts the nodes between them.\nfunction _region (\n fn:() => unknown,\n offs:Off[],\n at?:[Node, Node]\n):Node[] {\n const start = at ? at[0] : document.createComment('[')\n const end = at ? at[1] : document.createComment(']')\n const frag = document.createDocumentFragment()\n if (!at) frag.append(start, end)\n let own:Off[] = []\n let adopt = !!at\n effect(() => {\n const v = fn()\n for (const off of own) off()\n own = []\n if (adopt) _adopt(start.parentNode!, start, end, v, own)\n else _morph(start.parentNode!, start, end, v, own)\n adopt = false\n })\n offs.push(() => { for (const off of own) off() })\n return Array.from(frag.childNodes)\n}\n\nfunction _key (x:unknown):string | null {\n if (x instanceof Element) return x.getAttribute('key')\n if (typeof x === 'object' && x !== null && 'p' in x) {\n const k = (x as VNode).p?.key\n return k == null ? null : String(_read(k))\n }\n return null\n}\n\nfunction _tag (x:VNode):string {\n return (_isMicrotag(x.t) ? x.t.TAG : x.t as string).toUpperCase()\n}\n\n// Find a host's children range, opened by its own marker so a region\n// in the host's render is not mistaken for it. Skips nested hosts.\nfunction _range (host:Element):[Node, Node] | null {\n const w = document.createTreeWalker(\n host,\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT,\n {\n acceptNode: n => n instanceof Element && n.tagName.includes('-') ?\n NodeFilter.FILTER_REJECT :\n NodeFilter.FILTER_ACCEPT,\n }\n )\n let n:Node | null\n while ((n = w.nextNode())) {\n if (n instanceof Comment && n.data === '[c') {\n const end = _close(n)\n if (end) return [n, end]\n }\n }\n return null\n}\n\n// Patch an old node toward a new item, or return null if it cannot be.\nfunction _patch (old:Node, item:unknown, offs:Off[]):Node | null {\n if (typeof item === 'function' || item instanceof Node) return null\n if (typeof item !== 'object' || item === null || !('t' in item)) {\n if (old.nodeType !== Node.TEXT_NODE) return null\n const s = String(item)\n if (old.textContent !== s) old.textContent = s\n return old\n }\n const v = item as VNode\n if (!(old instanceof Element) || old.tagName !== _tag(v)) return null\n if (_isMicrotag(v.t)) {\n _bindHost(old, v.t, v.p, offs)\n const r = _range(old)\n if (r) _morph(r[0].parentNode!, r[0], r[1], v.c, offs)\n return old\n }\n const next = new Set(Object.keys(v.p ?? {}))\n for (const a of Array.from(old.attributes)) {\n if (!next.has(a.name)) old.removeAttribute(a.name)\n }\n _morph(old, null, null, v.c, offs)\n _bindEl(old, v.p, offs)\n return old\n}\n\n/**\n * Morph the nodes of `parent` between `start` and `end` (exclusive;\n * null means the edge) toward `value`. Keyed elements are matched by\n * key, the rest by position; unmatched old nodes are removed.\n */\nfunction _morph (\n parent:Node,\n start:Node | null,\n end:Node | null,\n value:unknown,\n offs:Off[]\n):void {\n const old:Node[] = []\n for (\n let n = start ? start.nextSibling : parent.firstChild;\n n && n !== end;\n n = n.nextSibling\n ) old.push(n)\n const keyed = new Map<string, Node>()\n const unkeyed:Node[] = []\n for (const n of old) {\n const k = _key(n)\n if (k !== null) keyed.set(k, n)\n else unkeyed.push(n)\n }\n\n let u = 0\n const nodes:Node[] = []\n const used = new Set<Node>()\n const seen = new Set<string>()\n for (const item of _items(value)) {\n const k = _key(item)\n if (k !== null) {\n if (seen.has(k)) throw new Error('duplicate key ' + k)\n seen.add(k)\n }\n const cand = k !== null ? keyed.get(k) : unkeyed[u]\n const kept = cand && !used.has(cand) ?\n _patch(cand, item, offs) :\n null\n if (k === null && kept) u++\n if (kept) {\n used.add(kept)\n nodes.push(kept)\n } else {\n nodes.push(..._create(item, offs))\n }\n }\n\n _dom(() => {\n for (const n of old) {\n if (!used.has(n)) (n as ChildNode).remove()\n }\n // place from the end, moving only nodes out of position\n let ref:Node | null = end\n for (let i = nodes.length - 1; i >= 0; i--) {\n const n = nodes[i]\n if (n.parentNode !== parent || n.nextSibling !== ref) {\n const p = parent as Node & {\n moveBefore?:(n:Node, r:Node | null) => void\n }\n // kept nodes move when the parent is connected; a\n // missing or throwing moveBefore falls back to insert\n let moved = used.has(n) && parent.isConnected\n if (moved) {\n try { p.moveBefore!(n, ref) } catch { moved = false }\n }\n if (!moved) parent.insertBefore(n, ref)\n }\n ref = n\n }\n })\n}\n\n// The comment closing the region or children range opened by `start`.\nfunction _close (start:Node):Node | null {\n let depth = 0\n for (let s = start.nextSibling; s; s = s.nextSibling) {\n if (!(s instanceof Comment)) continue\n if (s.data === '[' || s.data === '[c') depth++\n else if (s.data === ']' && depth-- === 0) return s\n }\n return null\n}\n\n// Next node to adopt: skips whitespace text and comments other than\n// region markers.\nfunction _skip (n:Node | null, end:Node | null):Node | null {\n while (n && n !== end && (\n (n instanceof Comment && n.data !== '[') ||\n (n.nodeType === Node.TEXT_NODE && !n.textContent!.trim())\n )) n = n.nextSibling\n return n === end ? null : n\n}\n\n/**\n * Bind `value` to the nodes of `parent` between `start` and `end`,\n * which the server rendered from the same markup. Creates no nodes.\n * Hosts are opaque except for their marked children range.\n */\nfunction _adopt (\n parent:Node,\n start:Node | null,\n end:Node | null,\n value:unknown,\n offs:Off[]\n):void {\n let n:Node | null = start ? start.nextSibling : parent.firstChild\n for (const item of _items(value)) {\n if (item instanceof Node) {\n // parsed raw HTML: one DOM node per parsed node. Skip only\n // before the span (its first node has no previous sibling\n // in the parsed fragment), and only nodes that could not be\n // that first node.\n if (!item.previousSibling) {\n while (\n n && n !== end && n.nodeType !== item.nodeType &&\n _skip(n, end) !== n\n ) n = n.nextSibling\n }\n // a text node only consumes text: one that meets an\n // element was merged into the text before it\n if (n && n !== end && (\n item.nodeType !== 3 || n.nodeType === 3\n )) n = n.nextSibling\n continue\n }\n if (typeof item === 'function') {\n n = _skip(n, end)\n const close = n instanceof Comment ? _close(n) : null\n if (!close) {\n console.warn('microtags: adopt: missing region markers')\n continue\n }\n _region(item as () => unknown, offs, [n!, close])\n n = close.nextSibling\n continue\n }\n if (typeof item !== 'object' || item === null || !('t' in item)) {\n if (n && n !== end && n.nodeType === Node.TEXT_NODE) {\n n = n.nextSibling\n }\n continue\n }\n n = _skip(n, end)\n const v = item as VNode\n const tag = _tag(v)\n if (!(n instanceof Element) || n.tagName !== tag) {\n console.warn(\n `microtags: adopt: expected <${tag.toLowerCase()}>, ` +\n `found ${n instanceof Element ? `<${n.localName}>` : 'none'}`\n )\n // look ahead for the expected tag, stepping over regions;\n // if none, try the next item against the same node\n let m = n\n while (m && m !== end && (\n !(m instanceof Element) || m.tagName !== tag\n )) {\n m = (m instanceof Comment && /^\\[c?$/.test(m.data) &&\n _close(m)) || m\n // a close at `end` means the range is unbalanced\n if (m !== end) m = m.nextSibling\n }\n if (!m || m === end) continue\n n = m\n }\n const el = n as Element\n if (_isMicrotag(v.t)) {\n _bindHost(el, v.t, v.p, offs, true)\n const r = _range(el)\n if (r) _adopt(r[0].parentNode!, r[0], r[1], v.c, offs)\n } else {\n _bindEl(el, v.p, offs, true)\n _adopt(el, null, null, v.c, offs)\n }\n n = n.nextSibling\n }\n}\n\nconst _mounted = new WeakSet<Element>()\n\n/**\n * Turn markup into DOM inside `container`, binding signals and\n * listeners. Returns a function that stops the bindings and removes\n * the listeners, leaving the DOM in place.\n */\nexport function mount (container:Element, markup:Markup):() => void {\n if (_mounted.has(container)) {\n throw new Error('microtags: this container is already mounted')\n }\n _mounted.add(container)\n const offs:Off[] = []\n const stop = effectScope(() => {\n if (container.firstChild) _adopt(container, null, null, markup, offs)\n else _morph(container, null, null, markup, offs)\n })\n return () => {\n stop()\n for (const off of offs) off()\n offs.length = 0\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["n", "__name", "t", "s", "r", "e", "u", "h", "p", "a", "htm_module_default", "l", "createReactiveSystem", "update", "notify", "unwatched", "link", "unlink", "propagate", "checkDirty", "shallowPropagate", "dep", "sub", "version", "prevDep", "nextDep", "prevSub", "newLink", "nextSub", "innerWrite", "next", "stack", "top", "flags", "isValidLink", "subSubs", "checkDepth", "dirty", "subs", "checkLink", "__name", "HasChildEffect", "cycle", "runDepth", "queuedLength", "activeSub", "queued", "link", "unlink", "propagate", "checkDirty", "shallowPropagate", "createReactiveSystem", "node", "updateComputed", "updateSignal", "effect", "insertIndex", "firstInsertedIndex", "left", "disposeAllDepsInReverse", "effectOper", "effectScopeOper", "setActiveSub", "sub", "prevSub", "activeSub", "__name", "effect", "fn", "prevSub", "setActiveSub", "link", "HasChildEffect", "runDepth", "activeSub", "effectOper", "__name", "effectScope", "effectScopeOper", "updateComputed", "c", "HasChildEffect", "link", "prev", "dep", "unlink", "prevSub", "setActiveSub", "cycle", "oldValue", "activeSub", "purgeDeps", "__name", "updateSignal", "s", "runCleanup", "e", "cleanup", "prevSub", "activeSub", "__name", "effectOper", "effectScopeOper", "disposeAllDepsInReverse", "sub", "unlink", "link", "prev", "purgeDeps", "depsTail", "dep", "untracked", "fn", "prev", "setActiveSub", "__name", "_esc", "_escAttr", "s", "c", "__name", "_attrName", "_serialize", "m", "v", "_attr", "k", "renderParts", "rec", "props", "options", "extra", "html", "attrs", "renderHost", "tag", "a", "register", "g", "_esc", "_escHtml", "s", "c", "__name", "VOID", "_M", "Markup", "n", "h", "_str", "raw", "_isMarkup", "_isMicrotag", "t", "_isEvent", "k", "v", "_ATTR", "_read", "untracked", "_renderLink", "type", "_compArgs", "props", "declared", "compProps", "attrs", "r", "p", "kids", "inner", "a", "children", "_htm", "htm_module_default", "html", "strings", "values", "result", "_dom", "fn", "_bound", "_ctl", "el", "_setAttr", "keep", "o", "rec", "x", "d", "_listen", "offs", "handler", "_parse", "tpl", "_items", "out", "_create", "_region", "_createHost", "_morph", "_bindEl", "adopt", "first", "effect", "_bindHost", "host", "register", "at", "start", "end", "frag", "own", "off", "_adopt", "_key", "_tag", "_range", "w", "_close", "_patch", "old", "item", "next", "parent", "value", "keyed", "unkeyed", "u", "nodes", "used", "seen", "cand", "kept", "ref", "i", "moved", "depth", "_skip", "close", "tag", "m", "_mounted", "mount", "container", "markup", "stop", "effectScope"]
|
|
7
|
+
}
|
package/dist/htm.cjs
ADDED
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
|
|
31
|
+
// src/htm.ts
|
|
32
|
+
var htm_exports = {};
|
|
33
|
+
__export(htm_exports, {
|
|
34
|
+
Markup: () => Markup,
|
|
35
|
+
h: () => h,
|
|
36
|
+
html: () => html,
|
|
37
|
+
raw: () => raw
|
|
38
|
+
});
|
|
39
|
+
module.exports = __toCommonJS(htm_exports);
|
|
40
|
+
var import_htm = __toESM(require("htm"), 1);
|
|
41
|
+
|
|
42
|
+
// src/render-support.ts
|
|
43
|
+
var _esc = {
|
|
44
|
+
"&": "&",
|
|
45
|
+
'"': """,
|
|
46
|
+
"'": "'",
|
|
47
|
+
"<": "<",
|
|
48
|
+
">": ">"
|
|
49
|
+
};
|
|
50
|
+
function _escAttr(s) {
|
|
51
|
+
return s.replace(/[&"'<>]/g, (c) => _esc[c]);
|
|
52
|
+
}
|
|
53
|
+
__name(_escAttr, "_escAttr");
|
|
54
|
+
var _attrName = /^[a-z_:][-\w:.]*$/i;
|
|
55
|
+
function _serialize(m, v) {
|
|
56
|
+
if (m.kind === "prop-only" || v == null) return null;
|
|
57
|
+
if (m.kind === "boolean") return v === true ? "" : null;
|
|
58
|
+
if (m.kind === "json") return JSON.stringify(v);
|
|
59
|
+
return String(v);
|
|
60
|
+
}
|
|
61
|
+
__name(_serialize, "_serialize");
|
|
62
|
+
function _attr(k, v) {
|
|
63
|
+
return v === "" ? ` ${k}` : ` ${k}="${_escAttr(v)}"`;
|
|
64
|
+
}
|
|
65
|
+
__name(_attr, "_attr");
|
|
66
|
+
function renderParts(rec, props, options) {
|
|
67
|
+
const extra = options?.attrs ?? {};
|
|
68
|
+
const html2 = String(rec.f({
|
|
69
|
+
props,
|
|
70
|
+
refs: rec.r,
|
|
71
|
+
TAG: rec.t,
|
|
72
|
+
children: options?.children ?? "",
|
|
73
|
+
attrs: extra
|
|
74
|
+
}));
|
|
75
|
+
const attrs = /* @__PURE__ */ Object.create(null);
|
|
76
|
+
for (const k in rec.m) {
|
|
77
|
+
const s = k in props ? _serialize(rec.m[k], props[k]) : null;
|
|
78
|
+
if (s !== null) attrs[k] = s;
|
|
79
|
+
}
|
|
80
|
+
for (const [k, v] of Object.entries(extra)) {
|
|
81
|
+
if (_attrName.test(k)) attrs[k] ??= v;
|
|
82
|
+
}
|
|
83
|
+
return { tag: rec.t, attrs, html: html2 };
|
|
84
|
+
}
|
|
85
|
+
__name(renderParts, "renderParts");
|
|
86
|
+
function renderHost(rec, props, options) {
|
|
87
|
+
const { tag, attrs, html: html2 } = renderParts(rec, props, options);
|
|
88
|
+
let a = "";
|
|
89
|
+
for (const k in attrs) a += _attr(k, attrs[k]);
|
|
90
|
+
return `<${tag}${a}>${html2}</${tag}>`;
|
|
91
|
+
}
|
|
92
|
+
__name(renderHost, "renderHost");
|
|
93
|
+
function register() {
|
|
94
|
+
const g = globalThis;
|
|
95
|
+
g[/* @__PURE__ */ Symbol.for("microtags.render")] = renderHost;
|
|
96
|
+
g[/* @__PURE__ */ Symbol.for("microtags.renderParts")] = renderParts;
|
|
97
|
+
}
|
|
98
|
+
__name(register, "register");
|
|
99
|
+
register();
|
|
100
|
+
|
|
101
|
+
// src/htm.ts
|
|
102
|
+
var _esc2 = {
|
|
103
|
+
"&": "&",
|
|
104
|
+
'"': """,
|
|
105
|
+
"'": "'",
|
|
106
|
+
"<": "<",
|
|
107
|
+
">": ">"
|
|
108
|
+
};
|
|
109
|
+
function _escHtml(s) {
|
|
110
|
+
return s.replace(/[&"'<>]/g, (c) => _esc2[c]);
|
|
111
|
+
}
|
|
112
|
+
__name(_escHtml, "_escHtml");
|
|
113
|
+
var VOID = /* @__PURE__ */ new Set([
|
|
114
|
+
"area",
|
|
115
|
+
"base",
|
|
116
|
+
"br",
|
|
117
|
+
"col",
|
|
118
|
+
"embed",
|
|
119
|
+
"hr",
|
|
120
|
+
"img",
|
|
121
|
+
"input",
|
|
122
|
+
"link",
|
|
123
|
+
"meta",
|
|
124
|
+
"param",
|
|
125
|
+
"source",
|
|
126
|
+
"track",
|
|
127
|
+
"wbr"
|
|
128
|
+
]);
|
|
129
|
+
function _checkVoid(type, children) {
|
|
130
|
+
if (typeof type === "string" && VOID.has(type) && children.length) {
|
|
131
|
+
throw new Error(
|
|
132
|
+
`<${type}> has children: an unclosed void element swallows what follows it. Write it as <${type} />.`
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
__name(_checkVoid, "_checkVoid");
|
|
137
|
+
var _M = /* @__PURE__ */ Symbol.for("microtags.markup");
|
|
138
|
+
var Markup = class {
|
|
139
|
+
static {
|
|
140
|
+
__name(this, "Markup");
|
|
141
|
+
}
|
|
142
|
+
_v;
|
|
143
|
+
constructor(v) {
|
|
144
|
+
this._v = v;
|
|
145
|
+
}
|
|
146
|
+
toString() {
|
|
147
|
+
return this._v;
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
Markup.prototype[_M] = true;
|
|
151
|
+
function _isMarkup(v) {
|
|
152
|
+
return v != null && v[_M] === true;
|
|
153
|
+
}
|
|
154
|
+
__name(_isMarkup, "_isMarkup");
|
|
155
|
+
var _Escaped = class extends Markup {
|
|
156
|
+
static {
|
|
157
|
+
__name(this, "_Escaped");
|
|
158
|
+
}
|
|
159
|
+
_raw;
|
|
160
|
+
constructor(raw2) {
|
|
161
|
+
super(_escHtml(raw2));
|
|
162
|
+
this._raw = raw2;
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
function raw(s) {
|
|
166
|
+
return new Markup(s);
|
|
167
|
+
}
|
|
168
|
+
__name(raw, "raw");
|
|
169
|
+
function _isMicrotag(t) {
|
|
170
|
+
return typeof t === "function" && "TAG" in t && "render" in t && "props" in t;
|
|
171
|
+
}
|
|
172
|
+
__name(_isMicrotag, "_isMicrotag");
|
|
173
|
+
var _OPEN = "<!--[-->";
|
|
174
|
+
var _KIDS = "<!--[c-->";
|
|
175
|
+
var _CLOSE = "<!--]-->";
|
|
176
|
+
function _region(f) {
|
|
177
|
+
const v = f();
|
|
178
|
+
const out = Array.isArray(v) ? _flatten(v.map(_trust)) : _flatten([_trust(v)]);
|
|
179
|
+
return _OPEN + out + _CLOSE;
|
|
180
|
+
}
|
|
181
|
+
__name(_region, "_region");
|
|
182
|
+
function _trust(v) {
|
|
183
|
+
return typeof v === "string" ? _escHtml(v) : v;
|
|
184
|
+
}
|
|
185
|
+
__name(_trust, "_trust");
|
|
186
|
+
function _flatten(children) {
|
|
187
|
+
let out = "";
|
|
188
|
+
for (const c of children) {
|
|
189
|
+
if (c == null || c === false) continue;
|
|
190
|
+
if (Array.isArray(c)) {
|
|
191
|
+
out += _flatten(c);
|
|
192
|
+
} else if (typeof c === "function") {
|
|
193
|
+
out += _region(c);
|
|
194
|
+
} else {
|
|
195
|
+
out += String(c);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return out;
|
|
199
|
+
}
|
|
200
|
+
__name(_flatten, "_flatten");
|
|
201
|
+
function _val(v) {
|
|
202
|
+
const r = typeof v === "function" ? v() : v;
|
|
203
|
+
return r instanceof _Escaped ? r._raw : r;
|
|
204
|
+
}
|
|
205
|
+
__name(_val, "_val");
|
|
206
|
+
function _isListener(k, v) {
|
|
207
|
+
return typeof v === "function" && k.startsWith("on");
|
|
208
|
+
}
|
|
209
|
+
__name(_isListener, "_isListener");
|
|
210
|
+
var _ATTR = /^[a-z_:][-\w:.]*$/i;
|
|
211
|
+
function h(type, props, ...children) {
|
|
212
|
+
_checkVoid(type, children);
|
|
213
|
+
const inner = _flatten(children);
|
|
214
|
+
if (_isMicrotag(type)) {
|
|
215
|
+
const declared = new Set(
|
|
216
|
+
type.props
|
|
217
|
+
);
|
|
218
|
+
const compProps = {};
|
|
219
|
+
const attrs = {};
|
|
220
|
+
if (props) {
|
|
221
|
+
for (const [k, pv] of Object.entries(props)) {
|
|
222
|
+
if (_isListener(k, pv)) continue;
|
|
223
|
+
const v = _val(pv);
|
|
224
|
+
if (declared.has(k)) {
|
|
225
|
+
compProps[k] = v;
|
|
226
|
+
} else if (!_ATTR.test(k)) {
|
|
227
|
+
continue;
|
|
228
|
+
} else if (v === true) {
|
|
229
|
+
attrs[k] = "";
|
|
230
|
+
} else if (v !== false && v != null) {
|
|
231
|
+
attrs[k] = String(v);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
const result = type.render(
|
|
236
|
+
compProps,
|
|
237
|
+
{
|
|
238
|
+
children: children.length > 0 ? _KIDS + inner + _CLOSE : inner,
|
|
239
|
+
attrs: Object.keys(attrs).length > 0 ? attrs : void 0
|
|
240
|
+
}
|
|
241
|
+
);
|
|
242
|
+
return new Markup(String(result));
|
|
243
|
+
}
|
|
244
|
+
if (typeof type === "string") {
|
|
245
|
+
let a = "";
|
|
246
|
+
if (props) {
|
|
247
|
+
for (const [k, pv] of Object.entries(props)) {
|
|
248
|
+
if (_isListener(k, pv) || !_ATTR.test(k)) continue;
|
|
249
|
+
const v = _val(pv);
|
|
250
|
+
if (v === true) {
|
|
251
|
+
a += ` ${k}`;
|
|
252
|
+
} else if (v !== false && v != null) {
|
|
253
|
+
a += ` ${k}="${_escHtml(String(v))}"`;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
if (VOID.has(type)) {
|
|
258
|
+
return new Markup(`<${type}${a}>`);
|
|
259
|
+
}
|
|
260
|
+
return new Markup(
|
|
261
|
+
`<${type}${a}>${inner}</${type}>`
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
return new Markup(inner);
|
|
265
|
+
}
|
|
266
|
+
__name(h, "h");
|
|
267
|
+
var _htm = import_htm.default.bind(h);
|
|
268
|
+
function html(strings, ...values) {
|
|
269
|
+
const escaped = values.map((v) => {
|
|
270
|
+
if (typeof v === "string") {
|
|
271
|
+
return new _Escaped(v);
|
|
272
|
+
}
|
|
273
|
+
return v;
|
|
274
|
+
});
|
|
275
|
+
const result = _htm(
|
|
276
|
+
strings,
|
|
277
|
+
...escaped
|
|
278
|
+
);
|
|
279
|
+
if (_isMarkup(result)) return result;
|
|
280
|
+
if (Array.isArray(result)) return new Markup(_flatten(result));
|
|
281
|
+
return new Markup(String(result ?? ""));
|
|
282
|
+
}
|
|
283
|
+
__name(html, "html");
|
|
284
|
+
//# sourceMappingURL=htm.cjs.map
|
package/dist/htm.cjs.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/htm.ts", "../src/render-support.ts"],
|
|
4
|
+
"sourcesContent": ["import htm from 'htm'\n// Registers the server render support module, so `render` statics work.\nimport './render-support.js'\nimport type { MicrotagElementClass } from './builders.js'\nimport type { PropDef } from './types.js'\n\nconst _esc:Record<string, string> = {\n '&': '&',\n '\"': '"',\n \"'\": ''',\n '<': '<',\n '>': '>',\n}\n\nfunction _escHtml (s:string):string {\n return s.replace(/[&\"'<>]/g, c => _esc[c])\n}\n\nconst VOID = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr',\n 'img', 'input', 'link', 'meta', 'param',\n 'source', 'track', 'wbr',\n])\n\n// htm does not know void tags, so an unclosed one takes everything\n// after it as children. Fail loudly instead of dropping them.\nfunction _checkVoid (type:unknown, children:unknown[]):void {\n if (typeof type === 'string' && VOID.has(type) && children.length) {\n throw new Error(\n `<${type}> has children: an unclosed void element ` +\n `swallows what follows it. Write it as <${type} />.`\n )\n }\n}\n\n// Brands markup across package copies, where `instanceof` fails.\nconst _M = Symbol.for('microtags.markup')\n\n/**\n * Opaque, trusted output of the templater. Convert it with `String(m)`\n * to get the HTML. Interpolating markup into `html` never escapes it.\n */\nexport class Markup {\n readonly _v:string\n constructor (v:string) { this._v = v }\n toString ():string { return this._v }\n}\n\n// on the prototype, so the brand stays out of the declared type\n(Markup.prototype as unknown as Record<symbol, boolean>)[_M] = true\n\nfunction _isMarkup (v:unknown):v is Markup {\n return v != null && (v as Record<symbol, unknown>)[_M] === true\n}\n\n// An interpolated string, escaped for markup. Components receive the\n// original text as a prop, so their own serializer escapes it once.\nclass _Escaped extends Markup {\n readonly _raw:string\n constructor (raw:string) {\n super(_escHtml(raw))\n this._raw = raw\n }\n}\n\nexport function raw (s:string):Markup {\n return new Markup(s)\n}\n\nfunction _isMicrotag (\n t:unknown\n):t is MicrotagElementClass<Record<string, PropDef>> {\n return (\n typeof t === 'function' &&\n 'TAG' in t &&\n 'render' in t &&\n 'props' in t\n )\n}\n\n// Comment markers around a reactive region, so the browser can find it.\n// Component children open with their own marker, so the browser can\n// tell them from regions in the component's own render.\nconst _OPEN = '<!--[-->'\nconst _KIDS = '<!--[c-->'\nconst _CLOSE = '<!--]-->'\n\n// A signal or function in child position is evaluated once. Its result\n// did not pass through `html`, so plain strings are escaped here.\nfunction _region (f:() => unknown):string {\n const v = f()\n const out = Array.isArray(v) ?\n _flatten(v.map(_trust)) :\n _flatten([_trust(v)])\n return _OPEN + out + _CLOSE\n}\n\nfunction _trust (v:unknown):unknown {\n return typeof v === 'string' ? _escHtml(v) : v\n}\n\nfunction _flatten (\n children:unknown[]\n):string {\n let out = ''\n for (const c of children) {\n if (c == null || c === false) continue\n if (Array.isArray(c)) {\n out += _flatten(c)\n } else if (typeof c === 'function') {\n out += _region(c as () => unknown)\n } else {\n out += String(c)\n }\n }\n return out\n}\n\n// Evaluate a signal or function in a prop or attribute hole, and\n// unwrap an interpolated string, so attributes are escaped only once.\nfunction _val (v:unknown):unknown {\n const r = typeof v === 'function' ? v() : v\n return r instanceof _Escaped ? r._raw : r\n}\n\n// A function-valued on<event> prop is a listener, which the browser\n// binds. It has no server output.\nfunction _isListener (k:string, v:unknown):boolean {\n return typeof v === 'function' && k.startsWith('on')\n}\n\n// A key that is not a valid attribute name, e.g. from a spread of user\n// data, is skipped so it cannot break out of the tag.\nconst _ATTR = /^[a-z_:][-\\w:.]*$/i\n\nexport function h (\n type:string | ((...a:unknown[]) => unknown),\n props:Record<string, unknown> | null,\n ...children:unknown[]\n):Markup {\n _checkVoid(type, children)\n const inner = _flatten(children)\n\n if (_isMicrotag(type)) {\n const declared = new Set(\n type.props as readonly string[]\n )\n const compProps:Record<string, unknown> = {}\n const attrs:Record<string, string> = {}\n\n if (props) {\n for (const [k, pv] of Object.entries(props)) {\n if (_isListener(k, pv)) continue\n const v = _val(pv)\n if (declared.has(k)) {\n compProps[k] = v\n } else if (!_ATTR.test(k)) {\n continue\n } else if (v === true) {\n attrs[k] = ''\n } else if (v !== false && v != null) {\n attrs[k] = String(v)\n }\n }\n }\n\n const result = type.render(\n compProps as any,\n {\n children: children.length > 0 ?\n _KIDS + inner + _CLOSE :\n inner,\n attrs: Object.keys(attrs).length > 0 ?\n attrs :\n undefined,\n }\n )\n return new Markup(String(result))\n }\n\n if (typeof type === 'string') {\n let a = ''\n if (props) {\n for (const [k, pv] of Object.entries(props)) {\n if (_isListener(k, pv) || !_ATTR.test(k)) continue\n const v = _val(pv)\n if (v === true) {\n a += ` ${k}`\n } else if (\n v !== false &&\n v != null\n ) {\n a += ` ${k}=\"${_escHtml(String(v))}\"`\n }\n }\n }\n\n if (VOID.has(type)) {\n return new Markup(`<${type}${a}>`)\n }\n return new Markup(\n `<${type}${a}>${inner}</${type}>`\n )\n }\n\n return new Markup(inner)\n}\n\nconst _htm = htm.bind(h)\n\nexport function html (\n strings:TemplateStringsArray,\n ...values:unknown[]\n):Markup {\n const escaped = values.map(v => {\n if (typeof v === 'string') {\n return new _Escaped(v)\n }\n return v\n })\n const result = (_htm as (...a:unknown[]) => unknown)(\n strings, ...escaped\n )\n if (_isMarkup(result)) return result\n if (Array.isArray(result)) return new Markup(_flatten(result))\n return new Markup(String(result ?? ''))\n}\n", "// Server render support: the host-tag builder, prop serializers and\n// attribute escaping. Importing this module registers `renderHost`\n// under a registry symbol on `globalThis`, where a component's `render`\n// static finds it. Core never imports this module, so a bundle with\n// every render link stripped leaves it out. See ADR-009.\nimport type {\n PropMeta,\n RenderParts,\n RenderRecord,\n} from './builders.js'\n\nconst _esc:Record<string, string> = {\n '&': '&',\n '\"': '"',\n \"'\": ''',\n '<': '<',\n '>': '>',\n}\nfunction _escAttr (s:string):string {\n return s.replace(/[&\"'<>]/g, c => _esc[c])\n}\n\n// HTML attribute name grammar: a letter, `_` or `:`, then letters,\n// digits, `-`, `_`, `:` or `.`. Extra attrs may come from data.\nconst _attrName = /^[a-z_:][-\\w:.]*$/i\n\n// The kind is decided by core, so no coercer is compared here and any\n// copy of this module serves any copy of core.\nfunction _serialize (m:PropMeta, v:unknown):string | null {\n if (m.kind === 'prop-only' || v == null) return null\n if (m.kind === 'boolean') return v === true ? '' : null\n if (m.kind === 'json') return JSON.stringify(v)\n return String(v)\n}\n\nfunction _attr (k:string, v:string):string {\n return v === '' ? ` ${k}` : ` ${k}=\"${_escAttr(v)}\"`\n}\n\n/**\n * Render a component as parts: the host tag name, its serialized\n * (unescaped) attributes, declared props first, and the inner HTML.\n * `attrs` has no prototype, so a name like `__proto__` from data is a\n * plain key. A declared prop keeps its value over an extra attr of the\n * same name, as an HTML parser keeps the first of a duplicate.\n */\nexport function renderParts (\n rec:RenderRecord,\n props:Record<string, unknown>,\n options?:{ children?:string; attrs?:Record<string, string> }\n):RenderParts {\n const extra = options?.attrs ?? {}\n const html = String(rec.f({\n props,\n refs: rec.r,\n TAG: rec.t,\n children: options?.children ?? '',\n attrs: extra,\n }))\n const attrs:Record<string, string> = Object.create(null)\n for (const k in rec.m) {\n const s = k in props ? _serialize(rec.m[k], props[k]) : null\n if (s !== null) attrs[k] = s\n }\n for (const [k, v] of Object.entries(extra)) {\n if (_attrName.test(k)) attrs[k] ??= v\n }\n return { tag: rec.t, attrs, html }\n}\n\n/** Render a component's host tag around the output of its render link. */\nexport function renderHost (\n rec:RenderRecord,\n props:Record<string, unknown>,\n options?:{ children?:string; attrs?:Record<string, string> }\n):string {\n const { tag, attrs, html } = renderParts(rec, props, options)\n let a = ''\n for (const k in attrs) a += _attr(k, attrs[k])\n return `<${tag}${a}>${html}</${tag}>`\n}\n\n/**\n * Store `renderHost` and `renderParts` where the `render` and\n * `renderParts` statics look them up.\n */\nexport function register ():void {\n const g = globalThis as any\n g[Symbol.for('microtags.render')] = renderHost\n g[Symbol.for('microtags.renderParts')] = renderParts\n}\n\nregister()\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["html", "_esc", "raw", "htm"]
|
|
7
|
+
}
|
package/dist/htm.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import './render-support.js';
|
|
2
|
+
/**
|
|
3
|
+
* Opaque, trusted output of the templater. Convert it with `String(m)`
|
|
4
|
+
* to get the HTML. Interpolating markup into `html` never escapes it.
|
|
5
|
+
*/
|
|
6
|
+
export declare class Markup {
|
|
7
|
+
readonly _v: string;
|
|
8
|
+
constructor(v: string);
|
|
9
|
+
toString(): string;
|
|
10
|
+
}
|
|
11
|
+
export declare function raw(s: string): Markup;
|
|
12
|
+
export declare function h(type: string | ((...a: unknown[]) => unknown), props: Record<string, unknown> | null, ...children: unknown[]): Markup;
|
|
13
|
+
export declare function html(strings: TemplateStringsArray, ...values: unknown[]): Markup;
|
|
14
|
+
//# sourceMappingURL=htm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"htm.d.ts","sourceRoot":"","sources":["../src/htm.ts"],"names":[],"mappings":"AAEA,OAAO,qBAAqB,CAAA;AAoC5B;;;GAGG;AACH,qBAAa,MAAM;IACf,QAAQ,CAAC,EAAE,EAAC,MAAM,CAAA;gBACL,CAAC,EAAC,MAAM;IACrB,QAAQ,IAAI,MAAM;CACrB;AAmBD,wBAAgB,GAAG,CAAE,CAAC,EAAC,MAAM,GAAE,MAAM,CAEpC;AAoED,wBAAgB,CAAC,CACb,IAAI,EAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAE,KAAK,OAAO,CAAC,EAC3C,KAAK,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACpC,GAAG,QAAQ,EAAC,OAAO,EAAE,GACvB,MAAM,CAmEP;AAID,wBAAgB,IAAI,CAChB,OAAO,EAAC,oBAAoB,EAC5B,GAAG,MAAM,EAAC,OAAO,EAAE,GACrB,MAAM,CAaP"}
|