sygnal 7.0.0 → 7.2.0-preview.0

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.
Files changed (343) hide show
  1. package/CHANGELOG.md +632 -0
  2. package/dist/agent-ui.cjs.js +592 -0
  3. package/dist/agent-ui.cjs.js.map +1 -0
  4. package/dist/agent-ui.esm.js +582 -0
  5. package/dist/agent-ui.esm.js.map +1 -0
  6. package/dist/api.cjs.js +63 -0
  7. package/dist/api.cjs.js.map +1 -0
  8. package/dist/api.esm.js +2 -0
  9. package/dist/api.esm.js.map +1 -0
  10. package/dist/astro/index.cjs.js +968 -4
  11. package/dist/astro/index.cjs.js.map +1 -1
  12. package/dist/astro/index.mjs +968 -4
  13. package/dist/astro/index.mjs.map +1 -1
  14. package/dist/astro/server.cjs.js +73 -45
  15. package/dist/astro/server.cjs.js.map +1 -1
  16. package/dist/astro/server.mjs +73 -45
  17. package/dist/astro/server.mjs.map +1 -1
  18. package/dist/canvas.cjs.js +2919 -0
  19. package/dist/canvas.cjs.js.map +1 -0
  20. package/dist/canvas.esm.js +2866 -0
  21. package/dist/canvas.esm.js.map +1 -0
  22. package/dist/devtools.cjs.js +38 -6
  23. package/dist/devtools.cjs.js.map +1 -1
  24. package/dist/devtools.esm.js +38 -6
  25. package/dist/devtools.esm.js.map +1 -1
  26. package/dist/diagnostics.cjs.js +224 -20
  27. package/dist/diagnostics.cjs.js.map +1 -1
  28. package/dist/diagnostics.esm.js +224 -20
  29. package/dist/diagnostics.esm.js.map +1 -1
  30. package/dist/guide/accessibility.md +1 -1
  31. package/dist/guide/ai-compose.md +150 -0
  32. package/dist/guide/behaviors.md +2 -1
  33. package/dist/guide/collaborative-state.md +265 -0
  34. package/dist/guide/element-commands.md +36 -2
  35. package/dist/guide/forms-reference.md +5 -5
  36. package/dist/guide/forms.md +3 -2
  37. package/dist/guide/http.md +28 -1
  38. package/dist/guide/islands.md +240 -0
  39. package/dist/guide/recipes/code-editor.md +1 -1
  40. package/dist/guide/renderers/agent-ui.md +138 -0
  41. package/dist/guide/renderers/custom-targets.md +126 -0
  42. package/dist/guide/renderers/overview.md +120 -0
  43. package/dist/guide/renderers/react-native.md +128 -0
  44. package/dist/guide/renderers/terminal.md +306 -0
  45. package/dist/guide/renderers/three.md +332 -0
  46. package/dist/guide/renderers/write-once.md +137 -0
  47. package/dist/guide/resources.md +2 -0
  48. package/dist/guide/sandboxed-components.md +223 -0
  49. package/dist/guide/timers.md +32 -5
  50. package/dist/guide/typed-apis.md +442 -0
  51. package/dist/guide/ui/accordion.md +11 -0
  52. package/dist/guide/ui/combobox.md +112 -8
  53. package/dist/guide/ui/dialog.md +96 -20
  54. package/dist/guide/ui/menu.md +57 -5
  55. package/dist/guide/ui/overview.md +8 -4
  56. package/dist/guide/ui/popover.md +69 -9
  57. package/dist/guide/ui/select.md +54 -4
  58. package/dist/guide/ui/tabs.md +1 -1
  59. package/dist/guide/ui/tooltip.md +7 -5
  60. package/dist/guide/virtual-collections.md +3 -0
  61. package/dist/guide/widgets.md +90 -1
  62. package/dist/host.cjs.js +2181 -0
  63. package/dist/host.cjs.js.map +1 -0
  64. package/dist/host.esm.js +2146 -0
  65. package/dist/host.esm.js.map +1 -0
  66. package/dist/index.cjs.js +3948 -586
  67. package/dist/index.cjs.js.map +1 -1
  68. package/dist/index.d.ts +584 -44
  69. package/dist/index.esm.js +3918 -586
  70. package/dist/index.esm.js.map +1 -1
  71. package/dist/primitives.cjs.js +143 -0
  72. package/dist/primitives.cjs.js.map +1 -0
  73. package/dist/primitives.esm.js +133 -0
  74. package/dist/primitives.esm.js.map +1 -0
  75. package/dist/react-native.cjs.js +248 -0
  76. package/dist/react-native.cjs.js.map +1 -0
  77. package/dist/react-native.esm.js +244 -0
  78. package/dist/react-native.esm.js.map +1 -0
  79. package/dist/replay.cjs.js +39 -0
  80. package/dist/replay.cjs.js.map +1 -0
  81. package/dist/replay.esm.js +2 -0
  82. package/dist/replay.esm.js.map +1 -0
  83. package/dist/sandbox-build.cjs.js +140 -0
  84. package/dist/sandbox-build.cjs.js.map +1 -0
  85. package/dist/sandbox-build.esm.js +137 -0
  86. package/dist/sandbox-build.esm.js.map +1 -0
  87. package/dist/sandbox-kernel.esm.js +212 -0
  88. package/dist/sandbox-kernel.esm.js.map +1 -0
  89. package/dist/sandbox-worker.cjs.js +857 -0
  90. package/dist/sandbox-worker.cjs.js.map +1 -0
  91. package/dist/sandbox-worker.esm.js +854 -0
  92. package/dist/sandbox-worker.esm.js.map +1 -0
  93. package/dist/sandbox.cjs.js +1425 -0
  94. package/dist/sandbox.cjs.js.map +1 -0
  95. package/dist/sandbox.esm.js +1406 -0
  96. package/dist/sandbox.esm.js.map +1 -0
  97. package/dist/sygnal.min.js +1 -1
  98. package/dist/sygnal.min.js.map +1 -1
  99. package/dist/terminal.cjs.js +1314 -0
  100. package/dist/terminal.cjs.js.map +1 -0
  101. package/dist/terminal.esm.js +1304 -0
  102. package/dist/terminal.esm.js.map +1 -0
  103. package/dist/three.cjs.js +1111 -0
  104. package/dist/three.cjs.js.map +1 -0
  105. package/dist/three.esm.js +1079 -0
  106. package/dist/three.esm.js.map +1 -0
  107. package/dist/ui-combobox.cjs.js +256 -18
  108. package/dist/ui-combobox.cjs.js.map +1 -1
  109. package/dist/ui-combobox.esm.js +256 -18
  110. package/dist/ui-combobox.esm.js.map +1 -1
  111. package/dist/ui-menu.cjs.js +150 -16
  112. package/dist/ui-menu.cjs.js.map +1 -1
  113. package/dist/ui-menu.esm.js +151 -17
  114. package/dist/ui-menu.esm.js.map +1 -1
  115. package/dist/ui-select.cjs.js +95 -9
  116. package/dist/ui-select.cjs.js.map +1 -1
  117. package/dist/ui-select.esm.js +95 -9
  118. package/dist/ui-select.esm.js.map +1 -1
  119. package/dist/ui.cjs.js +679 -173
  120. package/dist/ui.cjs.js.map +1 -1
  121. package/dist/ui.esm.js +679 -175
  122. package/dist/ui.esm.js.map +1 -1
  123. package/dist/vike/config/package.json +1 -1
  124. package/dist/vite/plugin.cjs.js +968 -4
  125. package/dist/vite/plugin.cjs.js.map +1 -1
  126. package/dist/vite/plugin.mjs +968 -4
  127. package/dist/vite/plugin.mjs.map +1 -1
  128. package/dist/worker-page.cjs.js +669 -0
  129. package/dist/worker-page.cjs.js.map +1 -0
  130. package/dist/worker-page.esm.js +665 -0
  131. package/dist/worker-page.esm.js.map +1 -0
  132. package/dist/worker.cjs.js +377 -0
  133. package/dist/worker.cjs.js.map +1 -0
  134. package/dist/worker.esm.js +374 -0
  135. package/dist/worker.esm.js.map +1 -0
  136. package/dist/yjs-testing.cjs.js +98 -0
  137. package/dist/yjs-testing.cjs.js.map +1 -0
  138. package/dist/yjs-testing.esm.js +77 -0
  139. package/dist/yjs-testing.esm.js.map +1 -0
  140. package/dist/yjs.cjs.js +923 -0
  141. package/dist/yjs.cjs.js.map +1 -0
  142. package/dist/yjs.esm.js +900 -0
  143. package/dist/yjs.esm.js.map +1 -0
  144. package/dist/zag.cjs.js +11 -1
  145. package/dist/zag.cjs.js.map +1 -1
  146. package/dist/zag.esm.js +11 -1
  147. package/dist/zag.esm.js.map +1 -1
  148. package/llms/ai.md +65 -0
  149. package/llms/collaboration.md +5 -0
  150. package/llms/graphics.md +10 -0
  151. package/llms/renderers.md +7 -0
  152. package/llms/replay.md +5 -0
  153. package/llms/sandbox.md +5 -0
  154. package/llms/typed-apis.md +5 -0
  155. package/llms/ui.md +10 -0
  156. package/llms-full.txt +444 -0
  157. package/llms.txt +37 -35
  158. package/package.json +139 -3
  159. package/src/agent-ui/mcp.ts +152 -0
  160. package/src/agent-ui/snapshot.ts +212 -0
  161. package/src/agent-ui.d.ts +106 -0
  162. package/src/agent-ui.ts +249 -0
  163. package/src/ai.d.ts +95 -2
  164. package/src/api.d.ts +303 -0
  165. package/src/api.ts +9 -0
  166. package/src/canvas/Canvas.ts +585 -0
  167. package/src/canvas/backend.ts +627 -0
  168. package/src/canvas/geometry.ts +187 -0
  169. package/src/canvas/gesture.ts +23 -0
  170. package/src/canvas/image.ts +197 -0
  171. package/src/canvas/kit.ts +130 -0
  172. package/src/canvas/paint.ts +260 -0
  173. package/src/canvas/pointer.ts +25 -0
  174. package/src/canvas/snap.ts +68 -0
  175. package/src/canvas/svg.ts +99 -0
  176. package/src/canvas.d.ts +373 -0
  177. package/src/canvas.ts +46 -0
  178. package/src/core/actions.ts +14 -3
  179. package/src/core/cell.ts +12 -4
  180. package/src/core/debug.ts +8 -3
  181. package/src/core/hooks.ts +16 -2
  182. package/src/core/hosts/collection.ts +1 -1
  183. package/src/core/hosts/switchable.ts +26 -8
  184. package/src/core/instance.ts +98 -45
  185. package/src/core/markers/portal.ts +4 -0
  186. package/src/core/registry.ts +4 -0
  187. package/src/core/runtime.ts +34 -25
  188. package/src/core/statics.ts +5 -5
  189. package/src/cycle/dom/EventDelegator.ts +37 -33
  190. package/src/cycle/dom/MainDOMSource.ts +16 -14
  191. package/src/cycle/dom/enrichEventStream.ts +13 -9
  192. package/src/cycle/dom/fromEvent.ts +6 -10
  193. package/src/cycle/dom/index.ts +11 -7
  194. package/src/cycle/dom/isolate.ts +13 -6
  195. package/src/cycle/dom/makeDOMDriver.ts +6 -2
  196. package/src/cycle/dom/utils.ts +9 -2
  197. package/src/cycle/run/adapt.ts +4 -12
  198. package/src/devtools.d.ts +9 -0
  199. package/src/devtools.ts +2 -1
  200. package/src/extra/ai/compose/catalog.ts +2 -1
  201. package/src/extra/ai/compose/decisions.ts +1 -2
  202. package/src/extra/ai/compose/generated.ts +234 -0
  203. package/src/extra/ai/compose/index.ts +6 -2
  204. package/src/extra/ai/compose/layout.ts +3 -1
  205. package/src/extra/ai/compose/llm.ts +7 -3
  206. package/src/extra/ai/compose/types.ts +2 -2
  207. package/src/extra/ai/transports/shared.ts +3 -1
  208. package/src/extra/api/contract.ts +485 -0
  209. package/src/extra/api/index.ts +26 -0
  210. package/src/extra/behaviors.ts +3 -3
  211. package/src/extra/controlled.ts +44 -0
  212. package/src/extra/copyAsTest.ts +22 -0
  213. package/src/extra/devtools.ts +5 -3
  214. package/src/extra/devtoolsActions.ts +8 -0
  215. package/src/extra/devtoolsNext.ts +1 -1
  216. package/src/extra/diagnostics/checks/actionLog.ts +8 -3
  217. package/src/extra/diagnostics/checks/behaviors.ts +25 -0
  218. package/src/extra/diagnostics/checks/elementCommands.ts +17 -5
  219. package/src/extra/diagnostics/checks/index.ts +1 -1
  220. package/src/extra/diagnostics/checks/next.ts +78 -4
  221. package/src/extra/diagnostics/checks/props.ts +6 -1
  222. package/src/extra/diagnostics/checks/replies.ts +11 -7
  223. package/src/extra/diagnostics/checks/timers.ts +8 -2
  224. package/src/extra/diagnostics/checks/virtual.ts +11 -0
  225. package/src/extra/diagnostics/codes.ts +51 -1
  226. package/src/extra/elementCommands.ts +20 -4
  227. package/src/extra/fetchDriver.ts +4 -1
  228. package/src/extra/fetchEventSource.ts +6 -2
  229. package/src/extra/field.ts +29 -0
  230. package/src/extra/form.ts +42 -16
  231. package/src/extra/frame.ts +54 -0
  232. package/src/extra/keymap.ts +41 -0
  233. package/src/extra/pager.ts +2 -0
  234. package/src/extra/persist.ts +2 -1
  235. package/src/extra/pointer.ts +262 -0
  236. package/src/extra/processForm.ts +34 -1
  237. package/src/extra/replay/address.ts +49 -0
  238. package/src/extra/replay/entropy.ts +99 -0
  239. package/src/extra/replay/format.ts +263 -0
  240. package/src/extra/replay/index.ts +8 -0
  241. package/src/extra/replay/inert.ts +22 -0
  242. package/src/extra/replay/recorder.ts +247 -0
  243. package/src/extra/replay/replayer.ts +234 -0
  244. package/src/extra/replay/report.ts +126 -0
  245. package/src/extra/replay/schema.ts +52 -0
  246. package/src/extra/replay/version.ts +3 -0
  247. package/src/extra/router.ts +7 -3
  248. package/src/extra/selection.ts +2 -0
  249. package/src/extra/socketDriver.ts +51 -6
  250. package/src/extra/ssr.ts +128 -42
  251. package/src/extra/testing.ts +295 -39
  252. package/src/extra/timers.ts +96 -7
  253. package/src/extra/undo.ts +2 -0
  254. package/src/extra/virtual.ts +25 -2
  255. package/src/extra/widget.ts +106 -17
  256. package/src/host/actions.ts +383 -0
  257. package/src/host/delegation.ts +101 -0
  258. package/src/host/dom.ts +553 -0
  259. package/src/host/driver.ts +185 -0
  260. package/src/host/selector.ts +119 -0
  261. package/src/host/style.ts +51 -0
  262. package/src/host.d.ts +298 -0
  263. package/src/host.ts +46 -0
  264. package/src/index.d.ts +302 -38
  265. package/src/index.ts +15 -3
  266. package/src/pragma/blocks.ts +211 -0
  267. package/src/pragma/index.ts +44 -10
  268. package/src/primitives.d.ts +54 -0
  269. package/src/primitives.ts +136 -0
  270. package/src/react-native.d.ts +57 -0
  271. package/src/react-native.ts +285 -0
  272. package/src/react-peers.d.ts +21 -3
  273. package/src/replay.d.ts +185 -0
  274. package/src/replay.ts +6 -0
  275. package/src/sandbox/build.ts +119 -0
  276. package/src/sandbox/create.ts +187 -0
  277. package/src/sandbox/engine.ts +267 -0
  278. package/src/sandbox/generated.ts +195 -0
  279. package/src/sandbox/kernel.ts +180 -0
  280. package/src/sandbox/mirror.ts +269 -0
  281. package/src/sandbox/protocol.ts +128 -0
  282. package/src/sandbox/quickjs.ts +74 -0
  283. package/src/sandbox/ssr.ts +41 -0
  284. package/src/sandbox/widget.ts +60 -0
  285. package/src/sandbox/worker-entry.ts +59 -0
  286. package/src/sandbox/worker.ts +137 -0
  287. package/src/sandbox-build.d.ts +12 -0
  288. package/src/sandbox-build.ts +6 -0
  289. package/src/sandbox.d.ts +299 -0
  290. package/src/sandbox.ts +25 -0
  291. package/src/shared.ts +12 -0
  292. package/src/terminal/paint.ts +712 -0
  293. package/src/terminal.d.ts +167 -0
  294. package/src/terminal.ts +530 -0
  295. package/src/three/assets.ts +170 -0
  296. package/src/three/host.ts +36 -0
  297. package/src/three/scene.ts +217 -0
  298. package/src/three/target.ts +252 -0
  299. package/src/three.d.ts +221 -0
  300. package/src/three.ts +30 -0
  301. package/src/ui/accordion.ts +21 -7
  302. package/src/ui/dialog.ts +192 -90
  303. package/src/ui/disclosure.ts +2 -0
  304. package/src/ui/dom.ts +30 -0
  305. package/src/ui/layers.ts +132 -0
  306. package/src/ui/popover.ts +120 -21
  307. package/src/ui/shared.ts +98 -12
  308. package/src/ui/stack.ts +18 -0
  309. package/src/ui/tabs.ts +2 -0
  310. package/src/ui/toaster.ts +16 -15
  311. package/src/ui/tooltip.ts +24 -8
  312. package/src/ui/tooltips.ts +26 -14
  313. package/src/ui/zag/combobox.ts +180 -13
  314. package/src/ui/zag/menu.ts +97 -17
  315. package/src/ui/zag/select.ts +15 -4
  316. package/src/ui/zag/shared.ts +60 -8
  317. package/src/ui-combobox.d.ts +16 -1
  318. package/src/ui-menu.d.ts +22 -7
  319. package/src/ui-zag-types.d.ts +13 -5
  320. package/src/ui.d.ts +62 -7
  321. package/src/ui.ts +2 -2
  322. package/src/vite/api.ts +186 -0
  323. package/src/vite/compile.ts +280 -0
  324. package/src/vite/plugin.d.ts +34 -0
  325. package/src/vite/plugin.ts +78 -4
  326. package/src/vite/sandbox.ts +16 -0
  327. package/src/worker/page.ts +396 -0
  328. package/src/worker/protocol.ts +48 -0
  329. package/src/worker/target.ts +282 -0
  330. package/src/worker-page.d.ts +42 -0
  331. package/src/worker-page.ts +12 -0
  332. package/src/worker.d.ts +65 -0
  333. package/src/worker.ts +16 -0
  334. package/src/yjs/driver.ts +253 -0
  335. package/src/yjs/mapping.ts +389 -0
  336. package/src/yjs/shared.ts +138 -0
  337. package/src/yjs/testing.ts +91 -0
  338. package/src/yjs-testing.d.ts +34 -0
  339. package/src/yjs-testing.ts +7 -0
  340. package/src/yjs.d.ts +109 -0
  341. package/src/yjs.ts +18 -0
  342. package/src/zag.d.ts +2 -0
  343. package/src/zag.ts +8 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.cjs.js","sources":["../src/cycle/dom/fragment.ts","../src/cycle/dom/styleModule.ts","../src/cycle/dom/controlledInputModule.ts","../src/cycle/dom/selectModule.ts","../src/cycle/dom/classNameModule.ts","../src/cycle/dom/propsModule.ts","../src/cycle/dom/utils.ts","../src/cycle/dom/modules.ts","../src/cycle/dom/isolate.ts","../src/cycle/dom/enrichEventStream.ts","../src/host/selector.ts","../src/host/delegation.ts","../src/host/dom.ts","../src/host/driver.ts","../src/host/style.ts","../src/host/actions.ts","../src/host.ts"],"sourcesContent":["import {Fragment as _Fragment} from 'snabbdom/build/jsx.js';\n\n// Tag Fragment so we can identify it even after minification mangles Function.name.\n// Its own module so the JSX runtime entries (which keep snabbdom external, D188) take it\n// without the rest of the snabbdom barrel\n(_Fragment as any).__sygnalFragment = true;\nexport const Fragment = _Fragment;\n","/**\n * Local copy of snabbdom's styleModule with a fixed `window` guard.\n *\n * snabbdom 3.6.3 introduced a regression where the top-level `raf` assignment\n * evaluates `window` directly (via `window === null || window === void 0`)\n * before the `typeof` check, causing a ReferenceError in Node.js environments.\n *\n * This copy restores the safe `typeof window !== \"undefined\"` guard while\n * keeping all other 3.6.x improvements (arrow functions, `in` operator for\n * style removal checks, etc.).\n */\n\nimport {Module} from './snabbdom';\n\ntype VNode = { elm?: any; data?: any };\n\n// Safe guard: `typeof window` never throws, even if `window` is undeclared.\nconst raf =\n (typeof window !== 'undefined' &&\n typeof window.requestAnimationFrame === 'function' &&\n window.requestAnimationFrame.bind(window)) ||\n setTimeout;\n\nconst nextFrame = (fn: () => void) => {\n raf(() => {\n raf(fn);\n });\n};\n\nlet reflowForced = false;\n\nfunction setNextFrame(obj: any, prop: string, val: string) {\n nextFrame(() => {\n obj[prop] = val;\n });\n}\n\nfunction updateStyle(oldVnode: VNode, vnode: VNode) {\n let cur: any;\n let name: string;\n const elm = vnode.elm as HTMLElement;\n let oldStyle = (oldVnode.data as any).style as Record<string, any> | undefined;\n let style = (vnode.data as any).style as Record<string, any> | undefined;\n if (!oldStyle && !style) return;\n if (oldStyle === style) return;\n oldStyle = oldStyle || {};\n style = style || {};\n const oldHasDel = 'delayed' in oldStyle;\n for (name in oldStyle) {\n if (!(name in style)) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.removeProperty(name);\n } else {\n (elm.style as any)[name] = '';\n }\n }\n }\n for (name in style) {\n cur = style[name];\n if (name === 'delayed' && style.delayed) {\n for (const name2 in style.delayed) {\n cur = style.delayed[name2];\n if (!oldHasDel || cur !== (oldStyle as any).delayed[name2]) {\n setNextFrame(elm.style, name2, cur);\n }\n }\n } else if (name !== 'remove' && cur !== (oldStyle as any)[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.setProperty(name, cur);\n } else {\n (elm.style as any)[name] = cur;\n }\n }\n }\n}\n\nfunction applyDestroyStyle(vnode: VNode) {\n let style: Record<string, string>;\n let name: string;\n const elm = vnode.elm as HTMLElement;\n const s = (vnode.data as any).style;\n if (!s || !(style = s.destroy)) return;\n for (name in style) {\n (elm.style as any)[name] = style[name];\n }\n}\n\nfunction applyRemoveStyle(vnode: VNode, rm: () => void) {\n const s = (vnode.data as any).style;\n if (!s || !s.remove) {\n rm();\n return;\n }\n if (!reflowForced) {\n // Force reflow so transition styles apply immediately\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n (vnode.elm as HTMLElement).offsetLeft;\n reflowForced = true;\n }\n let name: string;\n const elm = vnode.elm as HTMLElement;\n let i = 0;\n const style = s.remove;\n let amount = 0;\n const applied: string[] = [];\n for (name in style) {\n applied.push(name);\n (elm.style as any)[name] = style[name];\n }\n const compStyle = getComputedStyle(elm);\n const props = (compStyle as any)['transition-property'].split(', ');\n for (; i < props.length; ++i) {\n if (applied.indexOf(props[i]) !== -1) amount++;\n }\n elm.addEventListener('transitionend', (ev: TransitionEvent) => {\n if (ev.target === elm) --amount;\n if (amount === 0) rm();\n });\n}\n\nfunction forceReflow() {\n reflowForced = false;\n}\n\nexport const styleModule: Module = {\n pre: forceReflow,\n create: updateStyle,\n update: updateStyle,\n destroy: applyDestroyStyle,\n remove: applyRemoveStyle,\n};\n","/**\n * Snabbdom module that keeps controlled form fields in sync with the vnode (B-004).\n *\n * Problem: snabbdom's propsModule only writes `value`/`checked` when the prop\n * differs from the previous vnode's prop. If the user types 'x' and an action\n * resets the state to '' within one render window, the 'x' render is\n * coalesced away: the vnodes go '' -> '' and the typed text stays in the DOM.\n *\n * Fix: after propsModule has run, compare `value`/`checked` props against the\n * live element and write them when they differ. Only form fields (INPUT,\n * TEXTAREA, SELECT; not input type=file) are controlled: `value` compares as a\n * string, `checked` as a boolean (1H-7). A present-but-nullish `value` keeps an\n * input/textarea at '' and a nullish `checked` at false (D49); an absent prop\n * leaves the field to the user. D196: a form-associated custom element is a field\n * too (its value is written as the prop). Other elements with a value prop\n * (<progress>, <meter>, custom elements that aren't form-associated) are left alone.\n *\n * (PLAN-4.6 R6, G-347: G-146's input stamps are gone with the old core: the core renders a\n * state in the flush it is written in, so no render shows an older state than the field.)\n */\n\nimport type {VNode} from 'snabbdom/build/vnode.js';\n\n// P45-A: a form field by its vnode's tag (sel), checked before any other work: most vnodes aren't.\n// D196: a form-associated custom element (a hyphenated tag whose class has `static\n// formAssociated = true`, e.g. Web Awesome's wa-input / wa-rating) is a field too; only a\n// hyphenated tag's element is read\nexport const isField = (vnode: VNode): any =>\n /^(input|textarea|select)(?![\\w-])/i.test(vnode.sel as string) || /^\\w+-/.test(vnode.sel as string) && (vnode.elm as any).constructor.formAssociated;\n\nfunction syncControlled(oldVnode: VNode, vnode: VNode): void {\n if (!isField(vnode)) return;\n const props = vnode.data?.props;\n const elm = vnode.elm as any;\n if (!props || !elm || elm.type == 'file') return;\n const oldProps: any = oldVnode.data?.props || {};\n const {value, checked} = props;\n // Only the case propsModule skipped (prop unchanged); it handles real changes.\n // A nullish <select> value is left alone: on create the browser shows the first option.\n if ('value' in props && value === oldProps.value && (value != null || elm.tagName != 'SELECT')) {\n const v = value == null ? '' : String(value);\n // a custom element's value can be a number: compared as a string, written as the prop\n if (String(elm.value) !== v) elm.value = elm.constructor.formAssociated ? value : v;\n }\n if ('checked' in props && checked === oldProps.checked && elm.checked !== !!checked) {\n elm.checked = !!checked;\n }\n}\n\nexport const controlledInputModule = {update: syncControlled};\n","/**\n * Snabbdom module that applies a <select>'s `value` after its <option>s exist.\n *\n * Problem: snabbdom runs the module create/update hooks (propsModule sets\n * elm.value) BEFORE it creates or patches the element's children. When the\n * matching <option> is new in this patch, the browser ignores the value and\n * the <select> shows the first option. On create that is every <select>; on\n * update it is a value change together with an options change (B-017).\n *\n * Fix: collect <select> elements with a value prop during create and update,\n * then re-apply the value in the post hook, after all children are patched.\n */\n\nimport type {VNode} from 'snabbdom/build/vnode.js';\nimport {isField} from './controlledInputModule';\n\nlet pendingSelects: Array<{elm: HTMLSelectElement; value: any}> = [];\n\nfunction queueSelect(_oldVnode: VNode, vnode: VNode): void {\n // P45-A: a form field by the vnode's tag first; most vnodes aren't\n if (!isField(vnode)) return;\n const elm = vnode.elm as HTMLSelectElement;\n const value = vnode.data?.props?.value;\n if (elm && elm.tagName === 'SELECT' && value != null) {\n pendingSelects.push({elm, value});\n }\n}\n\nfunction postPatch(): void {\n const list = pendingSelects;\n pendingSelects = [];\n for (let i = 0; i < list.length; i++) {\n const {elm, value} = list[i];\n if (elm.value !== String(value)) elm.value = value;\n }\n}\n\nexport const selectModule = {create: queueSelect, update: queueSelect, post: postPatch};\n","/**\n * Snabbdom module that unsets a removed `className` prop (B-012).\n *\n * Problem: `className` goes through snabbdom's propsModule, which writes new\n * and changed props but never unsets a prop that disappears. So when snabbdom\n * reuses an element (`<p className=\"placeholder\">` -> `<p>`), the old class\n * stays. A nullish `className` is worse: propsModule writes the string\n * \"null\"/\"false\".\n *\n * Fix: runs after propsModule. When `className` is gone (or nullish/false),\n * drop the classes it had set, keeping the classes from the selector\n * (`p.foo`) and the truthy `class={{...}}` entries.\n */\n\nimport type {VNode} from 'snabbdom/build/vnode.js';\n\nfunction classObject(vnode: VNode): Array<string> {\n const out: Array<string> = [];\n const klass: any = vnode.data?.class;\n if (klass && typeof klass === 'object') {\n for (const name in klass) if (klass[name]) out.push(name);\n }\n return out;\n}\n\nfunction baseClasses(vnode: VNode): Array<string> {\n const sel = vnode.sel || '';\n const hashIdx = sel.indexOf('#');\n const dotIdx = sel.indexOf('.', hashIdx);\n const fromSel = dotIdx > 0 ? sel.slice(dotIdx + 1).split('.') : [];\n return fromSel.concat(classObject(vnode));\n}\n\nfunction addAll(elm: any, names: Array<string>): void {\n for (const name of names) if (name) elm.classList.add(name);\n}\n\nconst isSet = (cn: any) => cn != null && cn !== false;\nconst tokens = (cn: any) => (typeof cn === 'string' ? cn.split(/\\s+/).filter(Boolean) : []);\n\nfunction syncClassName(oldVnode: VNode, vnode: VNode): void {\n const props: any = vnode.data?.props;\n const oldProps: any = oldVnode.data?.props;\n const hasKey = !!props && 'className' in props;\n const oldCn = oldProps ? oldProps.className : undefined;\n // P45-A: keyed on the prop (B-012), not the tag: nothing to do when neither vnode has one\n if (!hasKey && !isSet(oldCn)) return;\n const elm = vnode.elm as any;\n if (!elm || !elm.classList) return;\n const cn = hasKey ? props.className : undefined;\n if (isSet(cn)) {\n // propsModule replaced the whole attribute: put the selector classes and the\n // class={{...}} entries back\n if (!oldProps || oldProps.className !== cn) addAll(elm, baseClasses(vnode));\n return;\n }\n if (hasKey) {\n // propsModule wrote String(cn) over the whole attribute: rebuild it\n if (!oldProps || oldProps.className !== cn) {\n elm.className = baseClasses(vnode).join(' ');\n if (elm.className === '') elm.removeAttribute('class');\n }\n return;\n }\n const keep = baseClasses(vnode);\n for (const name of tokens(oldCn)) {\n if (keep.indexOf(name) === -1) elm.classList.remove(name);\n }\n addAll(elm, keep);\n if (elm.getAttribute('class') === '') elm.removeAttribute('class');\n}\n\nexport const classNameModule = {\n create: syncClassName,\n update: syncClassName,\n};\n","/**\n * Sygnal's props module: snabbdom's propsModule, plus clearing removed and\n * nullish props (B-015, G-109).\n *\n * Problem: snabbdom's propsModule writes new and changed props but never\n * unsets a prop that disappears, so a reused element keeps `title`, `disabled`,\n * `href`, ... from the previous render. A nullish prop is written as the\n * string \"undefined\"/\"null\" (`title={cond ? 'x' : undefined}`, `src={null}`).\n *\n * Fix: write new and changed props except nullish ones (G-109: nothing is ever\n * written as \"null\"). For each prop that is gone (or became nullish), remove\n * the reflected attribute, which resets the property (numbers such as\n * maxLength fall back to their default too). Without such an attribute, reset\n * the property by its current type (boolean -> false, string -> '', other\n * non-number -> undefined/null) if it differs (G-095). `className` is left\n * to classNameModule (B-012). On form fields a nullish `value`/`checked` clears\n * the field ('' / false, D49); a removed one is left alone (the controlled-input\n * module owns them; removing them hands control back to the user, as in React).\n */\n\nimport type {VNode} from 'snabbdom/build/vnode.js';\n\nfunction clearProp(elm: any, key: string, nullish?: boolean): void {\n if (key === 'className') return;\n if (/^(value|checked)$/.test(key) && /^(INPUT|TEXTAREA|SELECT)$/.test(elm.tagName)) {\n const empty = key === 'value' ? '' : false;\n if (nullish && elm[key] !== empty) elm[key] = empty;\n return;\n }\n const attr = key === 'htmlFor' ? 'for' : key.replace(/^aria(?=[A-Z])/, 'aria-').toLowerCase();\n // G-095: a reflected attribute is just removed, which resets the property. Writing it first\n // (src = '') would queue an img/video error event or navigate an iframe to about:blank.\n if (elm.hasAttribute?.(attr)) return elm.removeAttribute(attr);\n const cur = elm[key];\n const t = typeof cur;\n const reset = t === 'boolean' ? false : t === 'string' ? '' : cur === null || t === 'function' ? null : undefined;\n try {\n // numbers (maxLength, ...) are left to their default; unchanged values aren't rewritten\n if (t !== 'number' && cur !== reset) elm[key] = reset;\n } catch (_) {\n // e.g. contentEditable rejects ''\n }\n}\n\nfunction updateProps(oldVnode: VNode, vnode: VNode): void {\n const elm: any = vnode.elm;\n const props: any = vnode.data?.props || {};\n const oldProps: any = oldVnode.data?.props || {};\n if (!elm || oldProps === props) return;\n for (const key in oldProps) {\n if (!(key in props)) clearProp(elm, key);\n }\n for (const key in props) {\n const cur = props[key];\n if (cur === oldProps[key]) continue;\n // a nullish className is left to classNameModule, which rebuilds the attribute (B-012)\n if (cur == null) clearProp(elm, key, true);\n // G-553: on create (no old sel) `value` is always written: the create hooks run before the\n // children are appended, so an <option>'s value reads '' (no text yet) and value=\"\" would be\n // skipped, leaving no attribute (the option then submits its label)\n else if (key !== 'value' || elm[key] !== cur || !oldVnode.sel) elm[key] = cur;\n }\n}\n\nexport const propsModule = {create: updateProps, update: updateProps};\n","import {Scope} from './isolate';\n\nfunction isValidNode(obj: any): obj is Element {\n const ELEM_TYPE = 1;\n const FRAG_TYPE = 11;\n return typeof HTMLElement === 'object'\n ? obj instanceof HTMLElement || obj instanceof DocumentFragment\n : obj &&\n typeof obj === 'object' &&\n obj !== null &&\n (obj.nodeType === ELEM_TYPE || obj.nodeType === FRAG_TYPE) &&\n typeof obj.nodeName === 'string';\n}\n\nexport function isClassOrId(str: string): boolean {\n return str.length > 1 && (str[0] === '.' || str[0] === '#');\n}\n\nexport function isDocFrag(\n el: Element | DocumentFragment\n): el is DocumentFragment {\n return el.nodeType === 11;\n}\n\nexport function checkValidContainer(\n container: Element | DocumentFragment | string\n): void {\n if (typeof container !== 'string' && !isValidNode(container)) {\n throw new Error(\n 'Given container is not a DOM element neither a selector string.'\n );\n }\n}\n\nexport function getValidNode(\n selectors: Element | DocumentFragment | string\n): Element | DocumentFragment | null {\n const domElement =\n typeof selectors === 'string'\n ? document.querySelector(selectors)\n : selectors;\n\n if (typeof selectors === 'string' && domElement === null) {\n throw new Error(`Cannot render into unknown element \\`${selectors}\\``);\n }\n return domElement;\n}\n\nexport function getSelectors(namespace: Array<Scope>): string {\n let res = '';\n for (let i = namespace.length - 1; i >= 0; i--) {\n if (namespace[i].type !== 'selector') {\n break;\n }\n res = namespace[i].scope + ' ' + res;\n }\n return res.trim();\n}\n\nexport function isEqualNamespace(\n a: Array<Scope> | undefined,\n b: Array<Scope> | undefined\n): boolean {\n if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i].type !== b[i].type || a[i].scope !== b[i].scope) {\n return false;\n }\n }\n return true;\n}\n\nexport function makeInsert(\n map: Map<string, Map<Element, any>>\n): (type: string, elm: Element, value: any) => void {\n return (type, elm, value) => {\n if (map.has(type)) {\n const innerMap = map.get(type)!;\n innerMap.set(elm, value);\n } else {\n const innerMap = new Map<Element, any>();\n innerMap.set(elm, value);\n map.set(type, innerMap);\n }\n };\n}\n\n// G-261: a DOM change Sygnal makes outside a patch (a Transition's leave, a Portal mounted late)\n// re-emits the DOM source of the app whose root contains `el` (makeDOMDriver listens on its root).\n// The event comes from the element's own window: jsdom refuses an `Event` from another realm (a\n// Transition's leave timer that fires after a jsdom test environment was torn down). A window that no\n// longer holds the element's document (a closed jsdom window, whose Event is Node's again after\n// Vitest's teardown) has no app left to re-emit: nothing is dispatched\nexport const POKE = 'sygnal-dom';\nexport const pokeDOM = (el: any): any => {\n if (!el) return\n const d = el.ownerDocument, w = d?.defaultView\n if (w && 'document' in w && w.document !== d) return\n return el.dispatchEvent(new (w?.Event || Event)(POKE, {bubbles: true}))\n};\n\nconst obj = (o: any) => o !== null && typeof o == 'object' && !Array.isArray(o);\n/**\n * P46-P: two vnodes' data are the same for the DOM modules: the same keys, each value identical\n * or a shallow-equal object (a module bucket: props, attrs, class, dataset, style, ...)\n */\nexport function sameData(a: any, b: any): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n let n = 0;\n for (const k in a) {\n n++;\n const x = a[k], y = b[k];\n if (x !== y) {\n if (!obj(x) || !obj(y)) return false;\n let m = 0;\n for (const j in x) { m++; if (x[j] !== y[j]) return false; }\n for (const _ in y) m--;\n if (m) return false;\n }\n }\n for (const _ in b) n--;\n return !n;\n}\n\n// G-517 / G-518 / G-522: snabbdom never sees a fragment. Before each patch, a fragment's children\n// (through nested ones) are spliced into its parent's children, so they are diffed, moved and\n// adopted at hydration as the parent's own (snabbdom's fragment bounds went stale: an insert into\n// one landed at the parent's end, a keyed one never moved, a later patch threw NotFoundError).\n// The children of a keyed fragment (a Collection item, a component's root) take its key and their\n// own key, else their tag and its count among them: they move with it and stay apart from another\n// item's. G-541: no two paths give the same key (a '/' separator did: fragment \"src\" + \"a/b.ts\" and\n// fragment \"src/a\" + \"b.ts\"). 3-W G-544: each segment is a JSON string (the key as a string) or\n// array ([tag, count], always last), which ends where it ends, appended to the prefix\n// (`\"src\"\"a/b.ts\"`): a key grows linearly with the nesting (JSON in JSON doubled at each level),\n// and any key String() takes is fine (G-548: a BigInt; two Symbols with the same description share\n// a key; a number key and its string are one key, as in snabbdom). A vnode with no fragment below is kept by identity, as is one already\n// flattened (a cached subtree), so snabbdom still skips unchanged subtrees; so are a keyed\n// fragment's copies while the fragment and its prefix are the same (G-539; a hit compares the\n// parent's prefix, the fragment's own is made on a miss). A hoisted keyed fragment rendered in two\n// places shares its copies, as any hoisted vnode shares its object (render it once). A copy (a\n// parent with new children, a child with a new key) has its vnode's fields and writes its\n// element there too, so the app's vnodes get their `elm` as before (testing and diagnostics read\n// it); it keeps its own (a vnode object reused under another key: the old copy removes its own).\nconst flatOf = new WeakMap<any, any>();\nconst cpOf = new WeakMap<any, any>();\n// 4-I G-561: a copy is an instance of one class (the vnode's own fields, `elm` an accessor on its\n// prototype), not Object.create(y) with an own accessor: snabbdom's patch loop read each field\n// through the prototype chain and called a per-object accessor, ~3x slower over a 1k Collection.\n// (y: set again after the fields, as a copy's own y is its vnode's vnode; m starts as the vnode's\n// elm, which snabbdom replaces before reading it)\nclass Copy {\n y: any; m: any\n constructor(y: any, o: any) { this.y = y; Object.assign(this, y, o).y = y }\n get elm() { return this.m }\n set elm(e: any) { this.y.elm = this.m = e }\n}\nconst seg = (k: any, s: any) => (k || '') + JSON.stringify(typeof s == 'object' ? s : String(s));\nexport const flat = (v: any): any => {\n if (!v || v.$p || !v.children) return v;\n let r = flatOf.get(v);\n if (!r) {\n const o: any[] = [];\n let d = 0;\n // (m, s: locals of each call)\n const put = (c: any[], k?: string, n: any = {}, m?: any, s?: any) => {\n for (const x of c) {\n // G-539: a keyed fragment's copies are kept per (fragment, prefix), in flatOf (flat() never\n // takes a fragment): an unchanged one (a Collection item that didn't render again) gives\n // snabbdom the same vnodes\n if (x && !x.sel && x.children) d = 1, x.key == null ? put(x.children, k, n)\n : (m = flatOf.get(x)) && m[0] === k ? o.push(...m[1])\n : (s = o.length, put(x.children, seg(k, x.key)), flatOf.set(x, [k, o.slice(s)]));\n else {\n let y = flat(x);\n y !== x && (d = 1);\n if (k && y) {\n // 4-H: the copy of an unchanged child under the same key is kept (the fragment is new\n // when one of its children is: a Collection's), so snabbdom skips the others. 4-I\n // G-561: a hit compares the prefix and the child's own part (its key, else its count),\n // so the key is only built on a miss\n const s = y.key ?? (n[y.sel] = -~n[y.sel]), c = cpOf.get(y);\n y = c && c[0] === k && c[1] === s ? c[2] : (cpOf.set(y, [k, s, y = new Copy(y, {key: seg(k, y.key ?? [y.sel, s])})]), y);\n }\n o.push(y);\n }\n }\n };\n put(v.children);\n flatOf.set(v, r = d ? new Copy(v, {children: o}) : v);\n }\n return r;\n};\n","import {Module, classModule, attributesModule, datasetModule} from './snabbdom';\nimport {styleModule} from './styleModule';\nimport {selectModule} from './selectModule';\nimport {controlledInputModule} from './controlledInputModule';\nimport {classNameModule} from './classNameModule';\nimport {propsModule} from './propsModule';\nimport {isField} from './controlledInputModule';\nimport {sameData} from './utils';\n\nconst list: Array<Module> = [\n styleModule,\n classModule,\n propsModule, // Sygnal's: also clears removed and nullish props (B-015, G-109)\n classNameModule, // after propsModule (B-012)\n attributesModule,\n datasetModule,\n selectModule,\n controlledInputModule,\n];\n// P46-P: one update hook for these modules, in their order. A vnode whose data is the same as\n// last time (each bucket shallow-equal) needs none of them, unless it is a form field (the\n// controlled-input and select modules re-sync it every patch)\nconst ups = list.map(m => m.update!);\nconst modules: Array<Module> = list.map(({update, ...m}) => m as Module).concat({\n update(o: any, v: any) {\n if (!isField(v) && sameData(o.data, v.data)) return;\n for (let i = 0; i < ups.length; i++) ups[i](o, v);\n },\n} as Module);\n\nexport {styleModule, classModule, propsModule, attributesModule, datasetModule, selectModule, controlledInputModule, classNameModule};\n\nexport default modules;\n","import {Stream} from 'xstream';\nimport {VNode} from './snabbdom';\nimport {isClassOrId} from './utils';\n\nexport interface Scope {\n type: 'sibling' | 'total' | 'selector';\n scope: string;\n}\n\nexport type IsolateSink<T extends VNode> = (\n s: Stream<T>,\n scope: string\n) => Stream<T>;\n\nexport function makeIsolateSink<T extends VNode>(\n namespace: Array<Scope>\n): IsolateSink<T> {\n const value = makeIsolateValue(namespace);\n return (sink, scope) => scope === ':root' ? sink : sink.map(node => value(node, scope) as T);\n}\n\n/**\n * PLAN-4.6: the value-level isolateSink (the core scopes each instance's vnode without a\n * stream per instance): the same mapping, applied to one vnode. `memo` (the instance the core\n * scopes) keeps the scope's namespace and its key string across renders\n */\nexport function makeIsolateValue(namespace: Array<Scope>): (node: any, scope: string, memo?: any) => any {\n return (node, scope, memo) => {\n if (scope === ':root' || !node) {\n return node;\n }\n // [the isolate array, its key]\n let m = memo && memo.$iso;\n if (!m) {\n const isolate = namespace.concat([getScopeObj(scope)]);\n m = [isolate, JSON.stringify(isolate)];\n if (memo) memo.$iso = m;\n }\n const newNode = scoped(node, m[0]), i = newNode.data && newNode.data.isolate;\n return {\n ...newNode,\n key:\n newNode.key !== undefined\n ? newNode.key\n : i && i !== m[0] ? JSON.stringify(i) : m[1],\n };\n };\n}\n\n// G-144: a fragment has no element of its own, so each of its top-level elements (through\n// nested fragments) carries the scope; the fragment keeps the key\nfunction scoped(node: any, isolate: Array<Scope>): any {\n return !node || typeof node != 'object' ? node\n : node.sel ? {...node, data: {...node.data, isolate: node.data && Array.isArray(node.data.isolate) ? node.data.isolate : isolate}}\n : node.children ? {...node, children: node.children.map((c: any) => scoped(c, isolate))}\n : node;\n}\n\nexport function getScopeObj(scope: string): Scope {\n return {\n type: isClassOrId(scope) ? 'sibling' : 'total',\n scope,\n };\n}\n","import {Stream} from 'xstream';\n\nexport interface EnrichedEventStream<T = Event> extends Stream<T> {\n value(): EnrichedEventStream<string>;\n value<R>(fn: (val: string) => R): EnrichedEventStream<R>;\n\n checked(): EnrichedEventStream<boolean>;\n checked<R>(fn: (val: boolean) => R): EnrichedEventStream<R>;\n\n data(name: string): EnrichedEventStream<string | undefined>;\n data<R>(name: string, fn: (val: string | undefined) => R): EnrichedEventStream<R>;\n\n target(): EnrichedEventStream<EventTarget | null>;\n target<R>(fn: (el: EventTarget | null) => R): EnrichedEventStream<R>;\n\n key(): EnrichedEventStream<string>;\n key<R>(fn: (key: string) => R): EnrichedEventStream<R>;\n\n /** e.detail: a CustomEvent's payload (a widget's emit(name, detail), a web component's event) */\n detail<D = any>(): EnrichedEventStream<D>;\n detail<R, D = any>(fn: (detail: D) => R): EnrichedEventStream<R>;\n}\n\n// one enricher: a method that maps each event through `get`, then `fn` when given\nconst pick = (s$: any, get: (e: any) => any) => (fn?: (v: any) => any): any =>\n enrichEventStream(s$.map((e: any) => (e = get(e), fn ? fn(e) : e)))\n\n/**\n * Adds chainable convenience methods to a DOM event stream.\n *\n * DOM.select('.input').events('input').value()\n * DOM.input('.input').value()\n * DOM.select('.item').events('click').data('id')\n * DOM.click('.item').data('id', Number)\n * DOM.change('.checkbox').checked()\n * DOM.keydown('.field').key()\n * DOM.select('.due').events('change').detail()\n */\nexport function enrichEventStream(stream$: any): any {\n return Object.assign(stream$, METHODS)\n}\n\n// (methods every enriched stream shares: an event stream is made for each instance's intent)\nconst METHODS = {\n // .value(fn?) — e.target.value; .checked(fn?) — e.target.checked as a boolean\n value(this: any, fn?: any) { return pick(this, (e: any) => e?.target?.value)(fn) },\n checked(this: any, fn?: any) { return pick(this, (e: any) => !!e?.target?.checked)(fn) },\n // .data(name, fn?) — dataset[name] from e.target or its nearest ancestor that has it.\n // dataset keys are camelCase but attributes are kebab-case (`taskId` is `data-task-id`), so the\n // closest() selector converts (B-028). The name may be given either way: `.data('taskId')` and\n // `.data('task-id')` read the same attribute (3E/R3).\n data(this: any, name: string, fn?: (v: any) => any): any {\n const key = String(name).replace(/-([a-z])/g, (_, c) => c.toUpperCase())\n const attr = `[data-${key.replace(/[A-Z]/g, c => '-' + c.toLowerCase())}]`\n return pick(this, (e: any) => {\n const t = e?.target\n const el = typeof t?.closest == 'function' ? t.closest(attr) || t : t\n return el?.dataset?.[key]\n })(fn)\n },\n // .target(fn?) — e.target; .key(fn?) — e.key (keyboard events)\n target(this: any, fn?: any) { return pick(this, (e: any) => e?.target)(fn) },\n key(this: any, fn?: any) { return pick(this, (e: any) => e?.key)(fn) },\n // .detail(fn?) — e.detail (CustomEvents: widgets' emit(), web components) (PLAN-5 W-3)\n detail(this: any, fn?: any) { return pick(this, (e: any) => e?.detail)(fn) },\n}\n","/**\n * sygnal/host: the CSS selector subset intents use, on host elements. Selector lists (`a, b`),\n * the descendant and child (`>`) combinators, and compounds of `*`, tag, #id, .class, [attr],\n * [attr=v] (also ^= $= *= ~=), the state pseudo-classes :focus, :focus-visible, :focus-within,\n * :checked, :disabled, :enabled, :open, :modal and :popover-open, and :not(<compound>). Controls stringify to\n * `[data-control=\"X\"]`. Anything else throws, so a gap shows as an error rather than as a stream\n * that never fires.\n */\ntype Attr = [name: string, op: string, value: string | undefined]\ntype Simple = {tag?: string, id?: string, classes: string[], attrs: Attr[], pseudo: string[], not: Simple[]}\ntype Step = {comb: ' ' | '>', simple: Simple}\n\nconst cache = new Map<string, Step[][]>()\nconst COMPOUND = /([a-zA-Z][\\w-]*|\\*)|#([\\w-]+)|\\.([\\w-]+)|\\[\\s*([\\w-]+)\\s*(?:([~^$*]?=)\\s*(?:\"([^\"]*)\"|'([^']*)'|([^\\]\\s]*))\\s*)?\\]|:(focus-visible|focus-within|focus|checked|disabled|enabled|open|modal|popover-open)|:not\\(([^)]*)\\)/y\n\nfunction compound(s: string, sel: string): Simple {\n const out: Simple = {classes: [], attrs: [], pseudo: [], not: []}\n let i = 0\n while (i < s.length) {\n COMPOUND.lastIndex = i\n const m = COMPOUND.exec(s)\n if (!m) throw new Error(`sygnal/host: unsupported selector \"${sel}\" (at \"${s.slice(i)}\")`)\n // (before a :not() recursion reuses the sticky regex)\n const next = COMPOUND.lastIndex\n if (m[1] && i == 0) out.tag = m[1] == '*' ? undefined : m[1].toLowerCase()\n else if (m[1]) throw new Error(`sygnal/host: unsupported selector \"${sel}\"`)\n else if (m[2]) out.id = m[2]\n else if (m[3]) out.classes.push(m[3])\n else if (m[4]) out.attrs.push([m[4], m[5] || '', m[6] ?? m[7] ?? m[8]])\n else if (m[9]) out.pseudo.push(m[9])\n else if (m[10] !== undefined) out.not.push(compound(m[10].trim(), sel))\n i = next\n }\n return out\n}\n\nfunction parse(sel: string): Step[][] {\n let r = cache.get(sel)\n if (r) return r\n r = sel.split(',').map(part => {\n const steps: Step[] = []\n let comb: ' ' | '>' = ' '\n for (const t of part.trim().replace(/\\s*>\\s*/g, ' > ').split(/\\s+/)) {\n if (!t) continue\n if (t == '>') { comb = '>'; continue }\n steps.push({comb, simple: compound(t, sel)})\n comb = ' '\n }\n if (!steps.length) throw new Error(`sygnal/host: empty selector \"${sel}\"`)\n return steps\n })\n if (cache.size < 1024) cache.set(sel, r)\n return r\n}\n\nfunction attrOk(el: any, [name, op, v]: Attr): boolean {\n const has = el.getAttribute(name)\n if (has === null) return false\n if (v === undefined) return true\n switch (op) {\n case '=': return has === v\n case '^=': return !!v && has.startsWith(v)\n case '$=': return !!v && has.endsWith(v)\n case '*=': return !!v && has.includes(v)\n default: return has.split(/\\s+/).includes(v)\n }\n}\n\nfunction simpleOk(el: any, s: Simple): boolean {\n if (s.tag && el.localName !== s.tag) return false\n if (s.id && el.getAttribute('id') !== s.id) return false\n for (const c of s.classes) if (!el.classList.contains(c)) return false\n for (const a of s.attrs) if (!attrOk(el, a)) return false\n for (const p of s.pseudo) if (!pseudoOk(el, p)) return false\n for (const n of s.not) if (simpleOk(el, n)) return false\n return true\n}\n\nfunction pseudoOk(el: any, p: string): boolean {\n const a = el.ownerDocument.activeElement\n switch (p) {\n case 'focus': case 'focus-visible': return a === el\n case 'focus-within': return !!a && el.contains(a)\n case 'checked': return el.localName == 'option' ? !!el.selected || el.parentNode?.value === (el.value || el.getAttribute('value') || el.textContent.trim()) : !!el.checked\n case 'disabled': return !!el.disabled\n case 'enabled': return !el.disabled\n case 'open': return el.localName == 'select' ? el.picker != null : !!el.open || !!el.popoverOpen\n case 'modal': return !!el.modal\n default: return !!el.popoverOpen\n }\n}\n\n/** right to left; `stop`: an ancestor the match may not reach (an isolation scope's boundary) */\nfunction stepsOk(el: any, steps: Step[], i: number, stop: any): boolean {\n if (!simpleOk(el, steps[i].simple)) return false\n if (i === 0) return true\n const child = steps[i].comb === '>'\n for (let p = el.parentNode; p && p !== stop; p = p.parentNode) {\n if (stepsOk(p, steps, i - 1, stop)) return true\n if (child) return false\n }\n return false\n}\n\n/** whether `el` matches `sel` without reaching `stop` or above for its ancestor parts */\nexport function matches(el: any, sel: string, stop: any = null): boolean {\n for (const steps of parse(sel)) if (stepsOk(el, steps, steps.length - 1, stop)) return true\n return false\n}\n\n/** the descendants of `root` (not root itself) that match, in document order (as the DOM: ancestor parts may match above root) */\nexport function querySelectorAll(root: any, sel: string): any[] {\n const out: any[] = []\n const walk = (n: any) => {\n for (const c of n.childNodes) if (c.nodeType === 1) { if (matches(c, sel)) out.push(c); walk(c) }\n }\n walk(root)\n return out\n}\n","/**\n * sygnal/host: event delegation indexed by event type and isolation scope (research:\n * dev-plans/research/sandbox §6.2). The document keeps its delegates in a DelegateSet: a Set (the\n * public `doc.delegates`) that also indexes them by type. An event walks from its target up once;\n * at each element only the host driver's delegates of that element's scope are tested, so a\n * click in a 1,000-row Collection no longer runs every row's selector at every level.\n *\n * A delegate the host driver made carries `scope` (its isolation scope's key), `at(el, sr)` (does\n * it accept `el`, whose scope root is `sr`) and `deliver(e, el)`. Any other delegate (a target's\n * own) is called as before, with the event. Delivery keeps the order the delegates were added in.\n */\nimport type {HostDelegate, HostElement, HostEvent} from './dom'\n\n/** a scope's key: its scope names (src/cycle/dom/isolate's {type, scope} list) */\nconst keys = new WeakMap<object, string>()\nexport const scopeKey = (ns: {scope: string}[] | undefined): string => {\n if (!ns || !ns.length) return ''\n let k = keys.get(ns)\n if (k === undefined) keys.set(ns, k = ns.map(s => s.scope).join('\\u0001'))\n return k\n}\n/** the element carrying an element's innermost scope (null: the root component's own) */\nconst scopeRoot = (el: HostElement | null): HostElement | null => {\n for (let e = el; e; e = e.parentNode) if (e.__isolate) return e\n return null\n}\n\nexport type PreventDefault = boolean | Record<string, unknown> | ((e: any) => boolean)\n\n/** a pattern's fields all equal the event's (nested objects compared the same way), as src/cycle/dom/fromEvent's */\nexport function matchPattern(pattern: Record<string, unknown>, obj: any): boolean {\n for (const k in pattern) {\n const p = pattern[k], v = obj?.[k]\n if (p && typeof p == 'object' && v && typeof v == 'object' ? !matchPattern(p as Record<string, unknown>, v) : p !== v) return false\n }\n return true\n}\n/** the DOM driver's preventDefault option: true, a pattern of event fields, or a predicate */\nexport function preventIf(e: {preventDefault(): void}, pd: PreventDefault | undefined) {\n if (pd === true || (typeof pd == 'function' ? pd(e) : pd && typeof pd == 'object' && matchPattern(pd, e))) e.preventDefault()\n}\n\ntype Indexed = HostDelegate & {scope: string, at(el: HostElement, sr: HostElement | null): boolean, deliver(e: HostEvent, el: HostElement): void}\ntype Entry = {order: Map<HostDelegate, number>, plain: HostDelegate[], global: Indexed[], byScope: Map<string, Indexed[]>}\n\nconst indexed = (d: HostDelegate): d is Indexed => typeof (d as any).deliver == 'function' && typeof (d as any).at == 'function'\n\nexport class DelegateSet extends Set<HostDelegate> {\n private index?: Map<string, Entry | null>\n add(d: HostDelegate) {\n if (!this.has(d)) { super.add(d); this.index?.delete(d.type) }\n return this\n }\n delete(d: HostDelegate) {\n const r = super.delete(d)\n if (r) this.index?.delete(d.type)\n return r\n }\n clear() { super.clear(); this.index?.clear() }\n\n private entry(type: string): Entry | null {\n const index = this.index ??= new Map()\n let e = index.get(type)\n if (e !== undefined) return e\n e = null\n let i = 0\n for (const d of this) {\n if (d.type !== type) continue\n e ??= {order: new Map(), plain: [], global: [], byScope: new Map()}\n e.order.set(d, i++)\n if (!indexed(d)) e.plain.push(d)\n else if (d.global) e.global.push(d)\n else {\n const list = e.byScope.get(d.scope)\n list ? list.push(d) : e.byScope.set(d.scope, [d])\n }\n }\n index.set(type, e)\n return e\n }\n\n /** the delegates' part of a dispatch: one walk up from the target, then delivery in order */\n dispatch(ev: HostEvent) {\n const e = this.entry(ev.type)\n if (!e) return\n const hits: [number, HostDelegate, HostElement | null][] = []\n for (const d of e.plain) hits.push([e.order.get(d)!, d, null])\n const done = new Set<HostDelegate>()\n let sr = scopeRoot(ev.target)\n for (let el: HostElement | null = ev.target; el; el = el.parentNode) {\n for (const d of e.global) if (!done.has(d) && d.at(el, sr)) { done.add(d); hits.push([e.order.get(d)!, d, el]) }\n const scoped = e.byScope.get(sr ? scopeKey(sr.__isolate) : '')\n if (scoped) for (const d of scoped) if (!done.has(d) && d.at(el, sr)) { done.add(d); hits.push([e.order.get(d)!, d, el]) }\n if (!ev.bubbles) break\n // leaving a scope root: the next scope out\n if (el === sr) sr = scopeRoot(el.parentNode)\n }\n if (hits.length > 1) hits.sort((a, b) => a[0] - b[0])\n for (const [, d, el] of hits) el ? (d as Indexed).deliver(ev, el) : d(ev)\n }\n}\n","/**\n * sygnal/host: a retained host tree implementing the DOM subset Sygnal's renderer path touches:\n * snabbdom's DOMAPI (create, insert, remove, text), the snabbdom modules' element properties\n * (classList, setAttribute, style, dataset, value, checked), refs, autoFocus (focus()), Transition\n * (classList, parentNode, dispatchEvent) and processForm (toFormData, querySelector). A renderer\n * target reads this tree to paint it and dispatches DOM-shaped events into it (research:\n * dev-plans/research/alt-renderers).\n *\n * The same strategy NativeScript's DOMiNATIVE / undom use: give the framework a small DOM, and\n * translate that DOM to the platform. Nothing here is a browser API: it runs in Node, a worker,\n * Hermes or a test.\n */\nimport {matches, querySelectorAll} from './selector'\nimport {DelegateSet} from './delegation'\n\nexport type HostListener = (e: HostEvent) => void\n\n/** A dispatched event: the DOM's fields intents read (type, target, currentTarget, key, …) */\nexport class HostEvent {\n type: string\n bubbles: boolean\n target: any = null\n currentTarget: any = null\n defaultPrevented = false\n cancelBubble = false\n timeStamp = Date.now();\n [k: string]: any\n constructor(type: string, init: Record<string, any> = {}) {\n this.type = type\n this.bubbles = init.bubbles !== false\n for (const k in init) if (k != 'bubbles') this[k] = init[k]\n }\n get srcElement() { return this.target }\n preventDefault() { this.defaultPrevented = true }\n stopPropagation() { this.cancelBubble = true }\n stopImmediatePropagation() { this.cancelBubble = true; this._immediate = true }\n}\n\n/** A root delegate (a renderer driver's source listening for one event type) */\nexport interface HostDelegate {\n (e: HostEvent): void\n type: string\n /** whether this delegate would deliver an event dispatched on `el` (agent UIs list them) */\n accepts(el: HostElement): boolean\n /** a DOM.select('document' | 'body') source: it hears every event of its type */\n global?: boolean\n /** the default action it cancels (events(type, { preventDefault })): true, or a pattern of event fields */\n preventDefault?: boolean | Record<string, unknown> | ((e: HostEvent) => boolean)\n /** a selector source's selector (scope-relative; '' for the scope's root) */\n selector?: string\n /**\n * indexed delegation (the host driver's own delegates, src/host/delegation.ts): the isolation\n * scope's key, whether it accepts `el` (scope root `sr`), and delivery of the event as `el`\n */\n scope?: string\n at?(el: HostElement, sr: HostElement | null): boolean\n deliver?(e: HostEvent, el: HostElement): void\n}\n\ntype Entry = {f: HostListener, once: boolean, capture: boolean}\ntype ListenerOptions = boolean | {once?: boolean, capture?: boolean}\nconst isCapture = (o?: ListenerOptions) => typeof o == 'object' ? !!o.capture : !!o\n/**\n * An element's or the document's listeners. As the DOM's: one registration per listener and\n * capture flag, `once` removes it after its first call, capture listeners run on the way down\n * (dispatchEvent below)\n */\nclass Listeners {\n private m = new Map<string, Entry[]>()\n add(t: string, f: HostListener, o?: ListenerOptions) {\n const l = this.m.get(t) || (this.m.set(t, []), this.m.get(t)!), capture = isCapture(o)\n if (!l.some(x => x.f === f && x.capture === capture)) l.push({f, capture, once: typeof o == 'object' && !!o.once})\n }\n remove(t: string, f: HostListener, o?: ListenerOptions) {\n const l = this.m.get(t), capture = isCapture(o), i = l ? l.findIndex(x => x.f === f && x.capture === capture) : -1\n if (i > -1) l!.splice(i, 1)\n }\n /** the listeners for this phase: capture (true), bubble (false), at the target (null: capture first) */\n run(ev: HostEvent, phase: boolean | null) {\n const l = this.m.get(ev.type)\n if (!l) return\n // (stopPropagation lets the rest of this node's listeners run; stopImmediatePropagation doesn't)\n const fire = (x: Entry) => {\n if (ev._immediate) return\n if (x.once) this.remove(ev.type, x.f, x)\n x.f(ev)\n }\n const all = [...l]\n if (phase !== false) for (const x of all) x.capture && fire(x)\n if (phase !== true) for (const x of all) x.capture || fire(x)\n }\n}\n\nlet ids = 0\nconst idOf = new WeakMap<object, number>()\n/** a node's stable id for as long as the node lives (snapshot refs, op logs) */\nexport const nodeId = (n: object): number => idOf.get(n) ?? (idOf.set(n, ++ids), ids)\n\n/**\n * An element's style or dataset object: a write is a change of the element (its attributes). The\n * dataset reflects to data-* attributes, as the DOM's does (selectors match [data-id=\"3\"])\n */\nfunction tracked(el: HostElement, methods: Record<string, any>, data = false): any {\n const target: any = {}\n for (const k in methods) Object.defineProperty(target, k, {value: methods[k], enumerable: false})\n const attr = (k: string | symbol) => 'data-' + String(k).replace(/[A-Z]/g, c => '-' + c.toLowerCase())\n return new Proxy(target, {\n set(t, k, v) {\n // (a dataset's values are strings, as the DOM's)\n if (data) v = String(v)\n if (t[k] === v) return true\n t[k] = v\n data ? el.attributes.set(attr(k), String(v)) : 0\n el.ownerDocument.changed(el, true)\n return true\n },\n deleteProperty(t, k) {\n if (!(k in t)) return true\n delete t[k]\n data ? el.attributes.delete(attr(k)) : 0\n el.ownerDocument.changed(el, true)\n return true\n },\n })\n}\n\nexport class HostDocument {\n /** called once per microtask after any change to the tree (a renderer repaints) */\n onChange: (() => void) | null = null\n activeElement: HostElement | null = null\n /** the open modal dialogs, the topmost last (showModal(); everything outside the last is inert) */\n modals: HostElement[] = []\n /** the open popovers, in the order they opened */\n popovers: HostElement[] = []\n /** an element scrollIntoView() asked to show (a renderer brings it into view, then clears it) */\n scrollTarget: HostElement | null = null\n /** the renderer driver's root delegates: they see every dispatched event first (indexed by type and scope) */\n delegates: Set<HostDelegate> = new DelegateSet()\n /** pokeDOM (Transition, Portal) builds its event from defaultView.Event; sygnal/ui its CustomEvent too */\n defaultView = {Event: HostEvent, CustomEvent: HostEvent}\n /** document listeners: a connected element's events reach them (capture first, bubbling last) */\n listeners = new Listeners()\n addEventListener(t: string, f: HostListener, options?: ListenerOptions) { this.listeners.add(t, f, options) }\n removeEventListener(t: string, f: HostListener, options?: ListenerOptions) { this.listeners.remove(t, f, options) }\n body: HostElement\n documentElement: HostElement\n private dirty = false\n constructor() {\n this.body = this.documentElement = this.createElement('root')\n }\n createElement(tag: string) { return new HostElement(this, tag) }\n createTextNode(text: any) { return new HostText(this, text) }\n getElementById(id: string) { return this.body.querySelector('#' + id) }\n /** the topmost open modal dialog (null: none) */\n get topModal(): HostElement | null { return this.modals[this.modals.length - 1] || null }\n querySelector(sel: string) { return this.body.querySelector(sel) }\n querySelectorAll(sel: string) { return this.body.querySelectorAll(sel) }\n /** the event types the app listens for on `el` (through its intents' selectors) */\n listenedTypes(el: HostElement): string[] {\n const out = new Set<string>()\n for (const d of this.delegates) if (!out.has(d.type) && d.accepts(el)) out.add(d.type)\n return [...out]\n }\n /** the event types app-wide listeners (DOM.select('document')) take, from any element */\n globalTypes(): string[] {\n return [...new Set([...this.delegates].filter(d => d.global).map(d => d.type))]\n }\n /**\n * Called by every mutation. `node`: what changed; its `revision` and every ancestor's go up (a\n * renderer re-renders only a subtree whose revision moved: sygnal/react-native). `attr`: an\n * attribute, class, style or dataset change (`attrRevision`: a stylesheet's descendant\n * selectors may now match differently below it)\n */\n changed(node?: HostNode, attr = false) {\n if (node) {\n if (attr) node.attrRevision++\n for (let n: HostNode | null = node; n; n = n.parentNode) n.revision++\n }\n if (this.dirty || !this.onChange) return\n this.dirty = true\n queueMicrotask(() => { this.dirty = false; this.onChange?.() })\n }\n}\n\nexport abstract class HostNode {\n parentNode: HostElement | null = null\n /** moves on any change to the node or below it (doc.changed) */\n revision = 0\n /** moves on a change of the node's own attributes, classes, style or dataset */\n attrRevision = 0\n abstract nodeType: number\n constructor(public ownerDocument: HostDocument) {}\n get parentElement() { return this.parentNode }\n get nextSibling(): HostNode | null {\n const p = this.parentNode\n return p ? p.childNodes[p.childNodes.indexOf(this) + 1] || null : null\n }\n get previousSibling(): HostNode | null {\n const p = this.parentNode\n return p ? p.childNodes[p.childNodes.indexOf(this) - 1] || null : null\n }\n get isConnected(): boolean {\n let n: HostNode = this\n while (n.parentNode) n = n.parentNode\n return n === this.ownerDocument.body\n }\n remove() { this.parentNode?.removeChild(this) }\n}\n\nexport class HostText extends HostNode {\n nodeType = 3\n nodeName = '#text'\n private _data: string\n constructor(doc: HostDocument, data: any) { super(doc); this._data = String(data) }\n get data() { return this._data }\n set data(v: any) { this._data = String(v); this.ownerDocument.changed(this) }\n get textContent() { return this._data }\n set textContent(v: any) { this.data = v ?? '' }\n get nodeValue() { return this._data }\n}\n\nclass ClassList {\n constructor(private el: HostElement) {}\n private get set() { return new Set((this.el.getAttribute('class') || '').split(/\\s+/).filter(Boolean)) }\n private write(s: Set<string>) { s.size ? this.el.setAttribute('class', [...s].join(' ')) : this.el.removeAttribute('class') }\n add(...names: string[]) { const s = this.set; for (const n of names) s.add(n); this.write(s) }\n remove(...names: string[]) { const s = this.set; for (const n of names) s.delete(n); this.write(s) }\n contains(n: string) { return this.set.has(n) }\n toggle(n: string, force?: boolean) { const on = force ?? !this.contains(n); on ? this.add(n) : this.remove(n); return on }\n get length() { return this.set.size }\n [Symbol.iterator]() { return this.set[Symbol.iterator]() }\n}\n\nexport class HostElement extends HostNode {\n nodeType = 1\n childNodes: HostNode[] = []\n attributes = new Map<string, string>()\n classList = new ClassList(this)\n /** inline styles (`style={{...}}` through the style module); renderers read display and their own keys */\n style: Record<string, any> = tracked(this, {setProperty(k: string, v: any) { this[k] = v }, removeProperty(k: string) { delete this[k] }, getPropertyValue(k: string) { return this[k] ?? '' }})\n dataset: Record<string, string> = tracked(this, {}, true)\n /** the isolation scope of a component's root element (set by the driver's scope module) */\n __isolate?: any[]\n private listeners = new Listeners()\n private _value = ''\n // a text field's caret / selection (the DOM's selectionStart, selectionEnd, selectionDirection)\n private _selStart = 0\n private _selEnd = 0\n selectionDirection: 'forward' | 'backward' | 'none' = 'none'\n /** a <dialog>'s return value (close(value)) */\n returnValue = ''\n /** rows scrolled out of view at the top (a renderer's scrolling box; scrollIntoView) */\n private _scrollTop = 0\n private _modal = false\n private _popoverOpen = false\n private _opener: HostElement | null = null\n /** a <select>'s open option list (showPicker()): the highlighted option's index; null: closed */\n private _picker: number | null = null\n // element state a platform edits (the DOM's properties, not attributes)\n private _checked = false\n private _selected = false\n get checked() { return this._checked }\n set checked(v: boolean) { if (this._checked !== !!v) { this._checked = !!v; this.ownerDocument.changed(this) } }\n get selected() { return this._selected }\n set selected(v: boolean) { if (this._selected !== !!v) { this._selected = !!v; this.ownerDocument.changed(this) } }\n constructor(doc: HostDocument, public localName: string) { super(doc) }\n\n get tagName() { return this.localName.toUpperCase() }\n get nodeName() { return this.tagName }\n get value() { return this._value }\n /** a new value puts the caret at its end, as the DOM's (an edit then places it: setSelectionRange) */\n set value(v: any) {\n const x = v == null ? '' : String(v)\n if (x === this._value) return\n this._value = x\n this._selStart = this._selEnd = x.length\n this.ownerDocument.changed(this)\n }\n get selectionStart() { return Math.min(this._selStart, this._value.length) }\n set selectionStart(n: number) { this.setSelectionRange(n, Math.max(n, this.selectionEnd)) }\n get selectionEnd() { return Math.min(this._selEnd, this._value.length) }\n set selectionEnd(n: number) { this.setSelectionRange(Math.min(this.selectionStart, n), n) }\n /** the caret (start == end) or a selection, in UTF-16 offsets of the value, as the DOM's */\n setSelectionRange(start: number, end: number, direction: 'forward' | 'backward' | 'none' = 'none') {\n const n = this._value.length, s = Math.max(0, Math.min(n, start | 0)), e = Math.max(s, Math.min(n, end | 0))\n if (s === this._selStart && e === this._selEnd && direction === this.selectionDirection) return\n this._selStart = s; this._selEnd = e; this.selectionDirection = direction\n this.ownerDocument.changed(this)\n }\n /** select the whole value */\n select() { this.setSelectionRange(0, this._value.length, 'forward') }\n get scrollTop() { return this._scrollTop }\n set scrollTop(v: number) { const x = Math.max(0, Math.round(+v || 0)); if (x !== this._scrollTop) { this._scrollTop = x; this.ownerDocument.changed(this) } }\n /** ask the renderer to bring this element into view (its scrolling boxes and the screen) */\n scrollIntoView() { this.ownerDocument.scrollTarget = this; this.ownerDocument.changed(this) }\n /** the document: the tree's root for code that reads `el.getRootNode().activeElement` */\n getRootNode(): any { return this.ownerDocument }\n\n /** a <select>'s selected option index (-1: none) */\n get selectedIndex(): number { return this.options.findIndex(o => optionValue(o) === this._value) }\n set selectedIndex(i: number) { const o = this.options[i]; this.value = o ? optionValue(o) : '' }\n /** a <select>'s open option list: the highlighted option's index, or null when closed */\n get picker(): number | null { return this._picker }\n set picker(i: number | null) { if (i !== this._picker) { this._picker = i; this.ownerDocument.changed(this) } }\n /** open a <select>'s option list (the DOM's showPicker), the selected option highlighted */\n showPicker() {\n if (this.localName != 'select' || this.disabled) return\n this.picker = Math.max(0, this.selectedIndex)\n }\n\n // <dialog>: show(), showModal(), close(), requestClose() and `open`, as the DOM's\n get open() { return this.hasAttribute('open') }\n set open(v: boolean) { this.toggleAttribute('open', !!v) }\n /** a modal dialog (showModal()) while it is open */\n get modal() { return this._modal && this.open }\n show() { this.openDialog(false) }\n showModal() {\n if (this.open && this._modal) return\n if (this.open || !this.isConnected) throw new Error(`InvalidStateError: showModal() on ${this.open ? 'an open' : 'a disconnected'} dialog`)\n this.openDialog(true)\n }\n private openDialog(modal: boolean) {\n if (this.open) return\n const d = this.ownerDocument\n this._modal = modal\n this._opener = d.activeElement\n this.setAttribute('open', '')\n if (modal) d.modals.push(this)\n // the dialog focusing steps: its [autofocus] element, else its first focusable one, else itself\n const to = this.querySelector('[autofocus]') || this.querySelectorAll('*').find(e => focusableHere(e)) || this\n to.focus()\n }\n /** close an open dialog: `returnValue`, then a close event (a microtask later); the focus goes back to its opener */\n close(returnValue?: string) {\n if (!this.open) return\n const d = this.ownerDocument\n if (returnValue !== undefined) this.returnValue = String(returnValue)\n this.removeAttribute('open')\n d.modals = d.modals.filter(m => m !== this)\n this._modal = false\n const op = this._opener\n this._opener = null\n const a = d.activeElement\n if (op?.isConnected && (!a || this.contains(a))) op.focus()\n else if (a && this.contains(a)) a.blur()\n queueMicrotask(() => this.dispatchEvent(new HostEvent('close', {bubbles: false})))\n }\n /** Escape on a modal dialog, or a close request: a cancelable cancel event, then close() */\n requestClose(returnValue?: string) {\n if (!this.open) return\n if (this.dispatchEvent(new HostEvent('cancel', {bubbles: false, cancelable: true}))) this.close(returnValue)\n }\n\n // the Popover API: [popover] elements are hidden until showPopover()\n get popover(): string | null { const p = this.getAttribute('popover'); return p == null ? null : /^(manual|hint)$/i.test(p) ? p.toLowerCase() : 'auto' }\n set popover(v: string | null) { v == null ? this.removeAttribute('popover') : this.setAttribute('popover', v) }\n get popoverOpen() { return this._popoverOpen }\n showPopover() { this.togglePopover(true) }\n hidePopover() { this.togglePopover(false) }\n togglePopover(force?: boolean | {force?: boolean}) {\n const want = typeof force == 'object' ? force.force ?? !this._popoverOpen : force ?? !this._popoverOpen\n if (want === this._popoverOpen || this.popover == null) return this._popoverOpen\n const d = this.ownerDocument, states = {oldState: want ? 'closed' : 'open', newState: want ? 'open' : 'closed'}\n if (!this.dispatchEvent(new HostEvent('beforetoggle', {bubbles: false, cancelable: want, ...states})) && want) return false\n this._popoverOpen = want\n d.popovers = want ? [...d.popovers, this] : d.popovers.filter(p => p !== this)\n // hidden with the focus inside: back to what had it before it showed\n if (want) this._opener = d.activeElement\n else {\n const op = this._opener, a = d.activeElement\n this._opener = null\n if (a && this.contains(a)) op?.isConnected ? op.focus() : a.blur()\n }\n d.changed(this, true)\n queueMicrotask(() => this.dispatchEvent(new HostEvent('toggle', {bubbles: false, ...states})))\n return want\n }\n get children(): HostElement[] { return this.childNodes.filter((n): n is HostElement => n.nodeType === 1) }\n get firstChild() { return this.childNodes[0] || null }\n get lastChild() { return this.childNodes[this.childNodes.length - 1] || null }\n get firstElementChild() { return this.children[0] || null }\n get textContent(): string { return this.childNodes.map(n => (n as any).textContent).join('') }\n set textContent(v: any) {\n for (const n of this.childNodes) n.parentNode = null\n this.childNodes = v != null && v !== '' ? [Object.assign(this.ownerDocument.createTextNode(v), {parentNode: this})] : []\n this.ownerDocument.changed(this)\n }\n /** a <select>'s options */\n get options(): HostElement[] { return this.querySelectorAll('option') }\n\n getAttribute(n: string) { return this.attributes.has(n) ? this.attributes.get(n)! : null }\n hasAttribute(n: string) { return this.attributes.has(n) }\n setAttribute(n: string, v: any) { const x = String(v); if (this.attributes.get(n) !== x) { this.attributes.set(n, x); this.ownerDocument.changed(this, true) } }\n removeAttribute(n: string) { if (this.attributes.delete(n)) this.ownerDocument.changed(this, true) }\n toggleAttribute(n: string, force?: boolean) {\n const on = force ?? !this.hasAttribute(n)\n on ? this.setAttribute(n, '') : this.removeAttribute(n)\n return on\n }\n\n insertBefore(node: HostNode, ref: HostNode | null) {\n node.parentNode?.removeChild(node)\n const i = ref ? this.childNodes.indexOf(ref) : -1\n i < 0 ? this.childNodes.push(node) : this.childNodes.splice(i, 0, node)\n node.parentNode = this\n this.ownerDocument.changed(this)\n return node\n }\n appendChild(node: HostNode) { return this.insertBefore(node, null) }\n append(...nodes: (HostNode | string)[]) { for (const n of nodes) this.appendChild(typeof n == 'string' ? this.ownerDocument.createTextNode(n) : n) }\n removeChild(node: HostNode) {\n const i = this.childNodes.indexOf(node)\n if (i >= 0) this.childNodes.splice(i, 1)\n node.parentNode = null\n const d = this.ownerDocument, a = d.activeElement\n if (a && !a.isConnected) d.activeElement = null\n if (d.modals.length) d.modals = d.modals.filter(m => m.isConnected)\n if (d.popovers.length) d.popovers = d.popovers.filter(p => p.isConnected)\n d.changed(this)\n return node\n }\n contains(n: HostNode | null): boolean {\n for (let e = n; e; e = e.parentNode) if (e === this) return true\n return false\n }\n\n matches(sel: string) { return matches(this, sel) }\n closest(sel: string): HostElement | null {\n for (let e: HostElement | null = this; e; e = e.parentNode) if (e.matches(sel)) return e\n return null\n }\n querySelectorAll(sel: string): HostElement[] { return querySelectorAll(this, sel) }\n querySelector(sel: string): HostElement | null { return this.querySelectorAll(sel)[0] || null }\n\n /** focus moves in the document; the renderer decides what focus looks like */\n focus() {\n const d = this.ownerDocument, prev = d.activeElement\n if (prev === this || !this.isConnected) return\n d.activeElement = this\n // a <select>'s option list closes when the focus leaves it\n if (prev) prev.picker = null\n if (prev) { prev.dispatchEvent(new HostEvent('blur', {bubbles: false})); prev.dispatchEvent(new HostEvent('focusout')) }\n this.dispatchEvent(new HostEvent('focus', {bubbles: false}))\n this.dispatchEvent(new HostEvent('focusin'))\n d.changed()\n }\n blur() {\n const d = this.ownerDocument\n if (d.activeElement !== this) return\n d.activeElement = null\n this.picker = null\n this.dispatchEvent(new HostEvent('blur', {bubbles: false}))\n this.dispatchEvent(new HostEvent('focusout'))\n d.changed()\n }\n click() { this.dispatchEvent(new HostEvent('click')) }\n\n /** options: `once` (removed after its first call), `capture` (runs on the way down: dispatchEvent) */\n addEventListener(t: string, f: HostListener, options?: ListenerOptions) { this.listeners.add(t, f, options) }\n removeEventListener(t: string, f: HostListener, options?: ListenerOptions) { this.listeners.remove(t, f, options) }\n /**\n * As the DOM's phases: the capture listeners from the document down to the target's parent, the\n * root delegates (the renderer driver's sources, as the DOM driver's delegation at the root),\n * the target's own (capture ones first), then, when it bubbles, its ancestors' and the\n * document's. stopPropagation() ends it after the current node. Returns false when prevented.\n */\n dispatchEvent(e: any): boolean {\n const ev: HostEvent = e instanceof HostEvent ? e : new HostEvent(e.type, {bubbles: e.bubbles})\n ev.target = this\n const d = this.ownerDocument, path: any[] = []\n for (let n: HostElement | null = this; n; n = n.parentNode) path.push(n)\n if (this.isConnected) path.push(d)\n const at = (n: any, phase: boolean | null) => { ev.currentTarget = n; n.listeners.run(ev, phase) }\n for (let i = path.length; --i > 0 && !ev.cancelBubble;) at(path[i], true)\n if (!ev.cancelBubble) {\n const ds = d.delegates\n if (ds instanceof DelegateSet) ds.dispatch(ev)\n else for (const x of [...ds]) if (x.type === ev.type) x(ev)\n }\n if (!ev.cancelBubble) at(this, null)\n if (ev.bubbles) for (let i = 1; i < path.length && !ev.cancelBubble; i++) at(path[i], false)\n ev.currentTarget = null\n return !ev.defaultPrevented\n }\n\n /** processForm's form data on a host form (named, enabled fields; checked boxes only) */\n toFormData() {\n const out: [string, string][] = []\n for (const el of this.querySelectorAll('input, textarea, select')) {\n if (!el.name || el.disabled) continue\n if (el.type == 'checkbox' || el.type == 'radio') { if (el.checked) out.push([el.name, el.value || 'on']) }\n else out.push([el.name, el.value])\n }\n return {entries: () => out[Symbol.iterator](), get: (n: string) => out.find(([k]) => k == n)?.[1] ?? null}\n }\n\n // reflected properties (declared here for types; defined below)\n declare id: string; declare className: string; declare type: string; declare name: string\n declare placeholder: string; declare href: string; declare title: string; declare src: string\n declare alt: string; declare role: string; declare htmlFor: string; declare tabIndex: number\n declare disabled: boolean; declare hidden: boolean; declare required: boolean; declare readOnly: boolean\n declare multiple: boolean; declare inert: boolean; declare autofocus: boolean\n}\n\n/** focusable for a dialog's focusing steps (actions.ts has the full rule, with stylesheets) */\nconst focusableHere = (e: HostElement) => !e.disabled && (e.getAttribute('tabindex') != null ? +e.getAttribute('tabindex')! >= 0\n : /^(input|textarea|select|button)$/.test(e.localName) && e.type != 'hidden' || (e.localName == 'a' && e.hasAttribute('href')))\n/** an <option>'s value: its value property or attribute, else its text */\nexport const optionValue = (o: HostElement): string => o.value || (o.getAttribute('value') ?? o.textContent.trim())\n\n// properties that reflect to attributes, as the DOM's do: the props module writes `type`, `href`,\n// `className`; selectors read [type=checkbox], [href], .class\nconst P = HostElement.prototype\nfor (const [k, a] of [['id', 'id'], ['className', 'class'], ['type', 'type'], ['name', 'name'], ['placeholder', 'placeholder'],\n ['href', 'href'], ['title', 'title'], ['src', 'src'], ['alt', 'alt'], ['role', 'role'], ['htmlFor', 'for'], ['lang', 'lang'], ['dir', 'dir']]) {\n Object.defineProperty(P, k, {\n get(this: HostElement) { return this.getAttribute(a) ?? '' },\n set(this: HostElement, v: any) { v == null ? this.removeAttribute(a) : this.setAttribute(a, v) },\n configurable: true,\n })\n}\nObject.defineProperty(P, 'tabIndex', {\n get(this: HostElement) { const t = this.getAttribute('tabindex'); return t == null ? -1 : +t },\n set(this: HostElement, v: any) { v == null ? this.removeAttribute('tabindex') : this.setAttribute('tabindex', v) },\n configurable: true,\n})\nfor (const [k, a] of [['disabled', 'disabled'], ['hidden', 'hidden'], ['required', 'required'], ['readOnly', 'readonly'], ['multiple', 'multiple'], ['inert', 'inert'], ['autofocus', 'autofocus']]) {\n Object.defineProperty(P, k, {\n get(this: HostElement) { return this.hasAttribute(a) },\n set(this: HostElement, v: any) { this.toggleAttribute(a, !!v) },\n configurable: true,\n })\n}\n\n/** snabbdom's DOMAPI over a host document */\nexport const hostApi = (doc: HostDocument) => ({\n createElement: (tag: string) => doc.createElement(tag),\n createElementNS: (_ns: string, tag: string) => doc.createElement(tag),\n createTextNode: (t: string) => doc.createTextNode(t),\n createComment: () => doc.createTextNode(''),\n insertBefore: (p: HostElement, n: HostNode, r: HostNode | null) => { p.insertBefore(n, r) },\n removeChild: (p: HostElement, n: HostNode) => { p.removeChild(n) },\n appendChild: (p: HostElement, n: HostNode) => { p.appendChild(n) },\n parentNode: (n: HostNode) => n.parentNode,\n nextSibling: (n: HostNode) => n.nextSibling,\n tagName: (e: HostElement) => e.tagName,\n setTextContent: (n: any, t: string | null) => { n.textContent = t ?? '' },\n getTextContent: (n: any) => n.textContent,\n isElement: (n: HostNode): n is HostElement => n.nodeType === 1,\n isText: (n: HostNode): n is HostText => n.nodeType === 3,\n isComment: () => false,\n isDocumentFragment: () => false,\n})\n","/**\n * sygnal/host: makeHostDriver(doc), the DOM driver contract the core uses, on a host tree.\n *\n * What the core needs from the driver named DOM (src/core/runtime.ts, instance.ts):\n * sink a stream of vnodes, one per flush (fragments flattened here, as the DOM driver does)\n * source select(sel) → source, events(type) → stream, isolateSource(src, scope),\n * isolateValue(vnode, scope) / isolateSink, elements(), element(), dispose()\n * Reconciliation, hooks (refs, autoFocus, Transition) and Sygnal's snabbdom modules are snabbdom\n * itself, run on the host tree through a custom DOMAPI. Events: every host event goes through the\n * document's delegates first; a source delivers it when the target, or an ancestor it bubbles\n * through, matches the source's selector inside the source's isolation scope (total isolation:\n * a parent's selector never matches a child component's elements).\n */\nimport {xs, __deliver as recordDelivery} from '../index'\nimport {init} from '../cycle/dom/snabbdom'\nimport defaultModules from '../cycle/dom/modules'\nimport {flat} from '../cycle/dom/utils'\nimport {makeIsolateSink, makeIsolateValue, getScopeObj} from '../cycle/dom/isolate'\nimport {enrichEventStream} from '../cycle/dom/enrichEventStream'\nimport {HostDocument, HostElement, HostEvent, HostDelegate, hostApi} from './dom'\nimport {matches} from './selector'\nimport {scopeKey, preventIf} from './delegation'\n\ntype Scope = {type: string, scope: string}\n\n// the isolation scope travels on the vnode (data.isolate, from makeIsolateValue) to its element\nconst setScope = (_: any, v: any) => { if (v.data?.isolate) v.elm.__isolate = v.data.isolate }\nconst scopeModule = {create: setScope, update: setScope}\n\n/** form-field tags beyond input / textarea / select (registerFieldTags) */\nexport const fieldTags = new Set<string>()\n// the controlled-value re-sync of src/cycle/dom/controlledInputModule, for a target's own field\n// tags: a value the state set back to what it rendered last (typed 'abc', then cleared) is\n// written again on every patch\nconst resync = (_: any, v: any) => {\n const p = v.data?.props, el = v.elm\n if (!p || !el || !fieldTags.size || !fieldTags.has(/^[^#.]*/.exec(v.sel)![0])) return\n if ('value' in p && el.value !== String(p.value ?? '')) el.value = p.value ?? ''\n if ('checked' in p && el.checked !== !!p.checked) el.checked = !!p.checked\n}\nconst fieldModule = {create: resync, update: resync}\n\nconst sameNs = (a: Scope[] | undefined, b: Scope[]) => (a || []).length === b.length && b.every((s, i) => s.scope === a![i].scope)\n/** the element carrying an element's innermost scope (null: the root component's own) */\nconst scopeRoot = (el: HostElement | null): HostElement | null => {\n for (let e = el; e; e = e.parentNode) if (e.__isolate) return e\n return null\n}\n\nexport interface HostEventsOptions {\n /** cancel the event's default action when this source delivers it: true, a pattern of event fields, or a predicate */\n preventDefault?: boolean | Record<string, unknown> | ((e: HostEvent) => boolean)\n}\n\nexport interface HostDriverOptions {\n /** extra snabbdom modules (after Sygnal's own) */\n modules?: any[]\n /** after each patch, with the root element (a renderer repaints, a test counts) */\n onPatch?: (root: HostElement) => void\n /** a patch that threw (default: run()'s onError, phase 'patch', else console.error) */\n onError?: (e: unknown) => void\n}\n\nexport function makeHostDriver(doc: HostDocument = new HostDocument(), options: HostDriverOptions = {}) {\n // autoFocus and <Transition> schedule with requestAnimationFrame: a host without frames (Node,\n // a worker without one) gets a 16 ms timer\n const g: any = globalThis\n if (typeof g.requestAnimationFrame != 'function') g.requestAnimationFrame = (f: (t: number) => void) => setTimeout(() => f(Date.now()), 16)\n const patch = init([scopeModule, ...defaultModules, fieldModule, ...(options.modules || [])] as any, hostApi(doc) as any)\n return function hostDriver(vnode$: any, name = 'DOM'): HostSource {\n const root = doc.body\n const patched$ = xs.createWithMemory()\n const iso: any = {}\n const report = (e: unknown) => (options.onError || iso.rep || console.error)(e)\n let old: any = {sel: 'root', data: {}, children: [], elm: root, key: undefined}\n let dead = false\n const listener = {\n next: (v: any) => {\n if (dead) return\n try {\n old = patch(old, flat({sel: 'root', data: {}, children: v ? [v] : [], text: undefined, elm: undefined, key: undefined}))\n } catch (e) {\n // as the DOM driver (G-540): a patch that threw stopped half way; no further patches\n dead = true\n return report(e)\n }\n patched$.shamefullySendNext(root)\n options.onPatch?.(root)\n },\n error: report,\n complete: () => {},\n }\n vnode$.addListener(listener)\n patched$.shamefullySendNext(root)\n const src = new HostSource(doc, patched$, [], [], name)\n ;(src as any)._isolateModule = iso\n ;(src as any).dispose = () => {\n vnode$.removeListener(listener)\n // dispose: the app's elements go (unmount hooks run: refs cleared, widgets destroyed)\n try { old = patch(old, {sel: 'root', data: {}, children: [], text: undefined, elm: undefined, key: undefined} as any) } catch (e) { report(e) }\n }\n return src\n }\n}\n\nexport class HostSource {\n isolateValue: (v: any, scope: string) => any\n isolateSink: (s: any, scope: string) => any\n constructor(readonly doc: HostDocument, private patched$: any, private ns: Scope[], private sels: string[], private name: string) {\n this.isolateValue = makeIsolateValue(ns as any)\n this.isolateSink = makeIsolateSink(ns as any) as any\n }\n\n select(sel: any): HostSource {\n // a control stringifies to its selector; a component isn't a selector\n if (typeof sel == 'function' && !sel.__sygnalControl) throw new Error(`${this.name}.select() expects a selector string or a control, not a component`)\n return new HostSource(this.doc, this.patched$, this.ns, this.sels.concat(String(sel)), this.name)\n }\n\n isolateSource(src: HostSource, scope: string): HostSource {\n return new HostSource(src.doc, src.patched$, src.ns.concat(getScopeObj(scope) as Scope), src.sels, src.name)\n }\n\n /** 'document' / 'body': every event that reaches the root, from any component */\n private get global() { return this.sels[0] === 'document' || this.sels[0] === 'body' }\n private get selector() { return (this.global ? this.sels.slice(1) : this.sels).join(' ') }\n\n /** whether this source delivers an event as `el` (its current target) */\n accepts(el: HostElement): boolean {\n const sel = this.selector\n if (this.global) return !sel || matches(el, sel)\n const sr = scopeRoot(el)\n if (!sameNs(sr?.__isolate, this.ns)) return false\n return sel ? matches(el, sel, sr ? sr.parentNode : null) : el === (sr || this.doc.body)\n }\n\n events(type: string, options?: HostEventsOptions): any {\n const doc = this.doc\n let d: HostDelegate\n const out = xs.create({\n start: (l: any) => {\n // recordDelivery: the core's onDispatch hook sees the event an action was queued from\n // (ownerTarget: the matched element, as the DOM driver sets it; currentTarget moves on as the event bubbles)\n const deliver = (e: HostEvent, el: HostElement) => { e.currentTarget = e.ownerTarget = el; recordDelivery(e, () => l.next(e)) }\n d = Object.assign((e: HostEvent) => {\n for (let el: HostElement | null = e.target; el; el = e.bubbles ? el.parentNode : null) {\n if (this.accepts(el)) { d.deliver!(e, el); return }\n }\n }, {type, accepts: (el: HostElement) => !this.global && this.accepts(el), global: this.global}, this.indexed(deliver, options))\n doc.delegates.add(d)\n },\n stop: () => { doc.delegates.delete(d) },\n })\n return enrichEventStream(out)\n }\n\n /**\n * A delegate's indexed delivery (src/host/delegation.ts: its scope's key, a match at one level of\n * that scope) and the declarative preventDefault, applied before delivery as the DOM driver does:\n * `true`, a pattern of event fields (`{ key: 'Tab' }`) or a predicate. A target that makes the\n * decision elsewhere (sygnal/worker's page) reads `preventDefault` and `selector` off the delegate.\n */\n private indexed(deliver: (e: HostEvent, el: HostElement) => void, options?: HostEventsOptions) {\n const pd = options?.preventDefault || undefined\n const sel = this.selector, body = this.doc.body\n const at = this.global\n ? (el: HostElement) => !sel || matches(el, sel)\n : (el: HostElement, sr: HostElement | null) => sel ? matches(el, sel, sr ? sr.parentNode : null) : el === (sr || body)\n return {\n scope: scopeKey(this.ns), selector: sel, preventDefault: pd, at,\n deliver: pd ? (e: HostEvent, el: HostElement) => { preventIf(e, pd); deliver(e, el) } : deliver,\n }\n }\n\n elements(): any {\n return this.patched$.map((root: HostElement) => {\n const all = [root, ...root.querySelectorAll('*')]\n const sel = this.selector\n return all.filter((el) => this.global ? !sel || matches(el, sel) : this.accepts(el))\n }).remember()\n }\n element(): any {\n return this.elements().filter((a: any[]) => a.length > 0).map((a: any[]) => a[0]).remember()\n }\n}\n","/**\n * sygnal/host: a renderer's stylesheet. A target that can't read CSS (a terminal, an agent's\n * snapshot) still needs the part of an app's CSS that changes what is shown: todomvc hides `.edit`\n * unless its item is `.editing`. Rules are [selector, style] pairs, applied in order; an inline\n * `style={{ display: 'none' }}` and the `hidden` attribute win, as in the browser.\n */\nimport type {HostElement} from './dom'\nimport {matches} from './selector'\n\nexport interface HostStyle {\n /** 'none' hides the element and its subtree; renderers define what the others mean */\n display?: string\n [key: string]: any\n}\nexport type HostStyleRule = [selector: string, style: HostStyle]\n\n/** the element's style: matching rules in order, then its inline style; `hidden` → display none */\nexport function computeStyle(el: HostElement, rules: readonly HostStyleRule[] = []): HostStyle {\n const out: HostStyle = {}\n for (const [sel, st] of rules) if (matches(el, sel)) Object.assign(out, st)\n for (const k in el.style) if (el.style[k] != null && el.style[k] !== '') out[k] = el.style[k]\n if (el.hasAttribute('hidden')) out.display = 'none'\n return out\n}\n\n/**\n * Not rendered, as a browser's user-agent sheet has it: a closed <dialog>, a [popover] that isn't\n * showing, the content of a closed <details> other than its <summary>\n */\nexport function closedByHost(e: HostElement): boolean {\n if (e.localName == 'dialog' && !e.open) return true\n if (e.hasAttribute('popover') && !e.popoverOpen) return true\n const p = e.parentNode\n return !!p && p.localName == 'details' && !p.open && !(e.localName == 'summary' && p.children.find(c => c.localName == 'summary') === e)\n}\n\n/** hidden by itself or an ancestor: display none, `hidden`, aria-hidden=\"true\", or closed (closedByHost) */\nexport function isHidden(el: HostElement, rules: readonly HostStyleRule[] = []): boolean {\n for (let e: HostElement | null = el; e && e.localName != 'root'; e = e.parentNode) {\n if (e.getAttribute('aria-hidden') === 'true' || closedByHost(e) || computeStyle(e, rules).display === 'none') return true\n }\n return false\n}\n\n/** inert: an [inert] ancestor, or outside the topmost open modal dialog */\nexport function isInert(el: HostElement): boolean {\n const m = el.ownerDocument.topModal\n if (m && !m.contains(el)) return true\n for (let e: HostElement | null = el; e; e = e.parentNode) if (e.hasAttribute('inert')) return true\n return false\n}\n","/**\n * sygnal/host: what a browser does for a user, on a host tree: the events and default actions of\n * a click, typing, a key press, focus order. A target maps its own input (keys in a terminal, an\n * agent's tool call, a native callback) to these, so every target produces the same DOM-shaped\n * events (D-AR-3: DOM event names everywhere) and intents don't change between targets.\n */\nimport {HostDocument, HostElement, HostEvent, optionValue} from './dom'\nimport {HostStyleRule, isHidden, isInert} from './style'\n\nexport {optionValue}\n\nexport interface UserAgentOptions {\n /** a link's default action (an <a href> clicked and not prevented) */\n onNavigate?: (href: string, el: HostElement) => void\n /** pressKey: false sends the keydown / keyup only (the target runs its own default action) */\n defaultAction?: boolean\n}\nexport interface KeyInit {\n shiftKey?: boolean\n ctrlKey?: boolean\n altKey?: boolean\n metaKey?: boolean\n}\n\nconst KEY_CODES: Record<string, number> = {\n Enter: 13, Escape: 27, Backspace: 8, Tab: 9, ' ': 32, Delete: 46,\n ArrowLeft: 37, ArrowUp: 38, ArrowRight: 39, ArrowDown: 40, Home: 36, End: 35, PageUp: 33, PageDown: 34,\n}\nconst keyCode = (key: string) => KEY_CODES[key] ?? (key.length == 1 ? key.toUpperCase().charCodeAt(0) : /^F(\\d+)$/.test(key) ? 111 + +key.slice(1) : 0)\n\nconst fire = (el: HostElement, type: string, init?: Record<string, any>) => el.dispatchEvent(new HostEvent(type, init))\n\n/** a target's own field tags by kind (registerFieldTags): typed into, or toggled as a checkbox */\nexport const fieldKinds = new Map<string, 'text' | 'checkbox'>()\n\n/** text-entry fields: typing edits their value */\nexport const isTextField = (el: HostElement): boolean =>\n el.localName == 'textarea' || fieldKinds.get(el.localName) == 'text' || (el.localName == 'input' && !/^(checkbox|radio|button|submit|reset|hidden|file|image|range|color)$/.test(el.type))\n/** a checkbox or radio: an <input>'s, or a registered checkbox-kind tag (a switch) */\nexport const isCheckable = (el: HostElement): boolean =>\n fieldKinds.get(el.localName) == 'checkbox' || (el.localName == 'input' && (el.type == 'checkbox' || el.type == 'radio'))\nconst isBox = isCheckable\nconst isButton = (el: HostElement) => el.localName == 'button' || (el.localName == 'input' && /^(button|submit|reset)$/.test(el.type))\n\n/** focusable: form fields, buttons, links with href, [tabindex] ≥ 0; not disabled, hidden or inert */\nexport function isFocusable(el: HostElement, rules?: readonly HostStyleRule[]): boolean {\n if (el.disabled || (el.localName == 'input' && el.type == 'hidden')) return false\n const t = el.getAttribute('tabindex')\n const ok = t != null ? +t >= 0\n : /^(input|textarea|select|button)$/.test(el.localName) || fieldKinds.has(el.localName) || (el.localName == 'a' && el.hasAttribute('href'))\n || (el.localName == 'summary' && el.parentNode?.localName == 'details')\n return ok && !isHidden(el, rules) && !isInert(el)\n}\n\nconst POINTER = /^(click|dblclick|auxclick|contextmenu|mousedown|mouseup|pointerdown|pointerup)$/\n/**\n * Interactive by intent: focusable, or an element the app listens to clicks on (an intent's\n * selector matches it: todomvc's dblclick on a todo's <label>). A target without a pointer (a\n * terminal, an agent) can reach those too; a browser user would click them.\n */\nexport function isInteractive(el: HostElement, rules?: readonly HostStyleRule[]): boolean {\n // an explicit tabindex=\"-1\" takes it out (a roving tabindex: the tabs of a tablist other than the selected one)\n return isFocusable(el, rules) || (!el.disabled && !(+(el.getAttribute('tabindex') ?? 0) < 0) && el.ownerDocument.listenedTypes(el).some(t => POINTER.test(t)) && !isHidden(el, rules) && !isInert(el))\n}\n\n/**\n * The focusable elements in tab order (document order; positive tabindex first, as the DOM);\n * `listened: true` adds the elements the app listens to clicks on (isInteractive). While a modal\n * dialog is open, only its elements. A radio group is one stop: its checked radio (else its first)\n */\nexport function focusableElements(doc: HostDocument, rules?: readonly HostStyleRule[], options: {listened?: boolean} = {}): HostElement[] {\n const ok = options.listened ? isInteractive : isFocusable\n const all = (doc.topModal || doc.body).querySelectorAll('*').filter(el => ok(el, rules) && (!isRadio(el) || radioStop(el)))\n const pos = all.filter(el => el.tabIndex > 0).sort((a, b) => a.tabIndex - b.tabIndex)\n return [...pos, ...all.filter(el => !(el.tabIndex > 0))]\n}\n\n/** move focus to the next (1) or previous (-1) element of focusableElements(), wrapping */\nexport function moveFocus(doc: HostDocument, step: 1 | -1, rules?: readonly HostStyleRule[], options: {listened?: boolean} = {}): HostElement | null {\n const list = focusableElements(doc, rules, options)\n if (!list.length) return null\n const i = doc.activeElement ? list.indexOf(doc.activeElement) : -1\n const next = list[i < 0 ? (step > 0 ? 0 : list.length - 1) : (i + step + list.length) % list.length]\n next.focus()\n return next\n}\n\n/** the control a <label> is for: `for=\"id\"`, else the first field inside it */\nexport function labelTarget(label: HostElement): HostElement | null {\n const f = label.getAttribute('for')\n return f ? label.ownerDocument.getElementById(f) : label.querySelector('input, textarea, select, button')\n}\n\n/**\n * A click and its default actions, as a browser runs them: a checkbox toggles (a radio checks and\n * unchecks its group) before the click and then gets input + change (undone when prevented); a\n * label clicks its control; a link navigates; a submit button submits its form. Returns false when\n * the click was prevented.\n */\nexport function activate(el: HostElement, options: UserAgentOptions = {}): boolean {\n if (el.disabled || isInert(el)) return false\n const box = isBox(el), was = el.checked\n const group = box && el.type == 'radio' && el.name ? radioGroup(el) : []\n const before = group.map(r => r.checked)\n if (box) el.checked = el.type == 'radio' ? true : !was\n if (box && el.type == 'radio') for (const r of group) if (r !== el) r.checked = false\n const ok = fire(el, 'click', {detail: 1})\n if (box) {\n if (!ok) { el.checked = was; group.forEach((r, i) => r.checked = before[i]) }\n else if (el.checked !== was) { fire(el, 'input'); fire(el, 'change') }\n return ok\n }\n if (!ok) return false\n if (el.localName == 'label') {\n const t = labelTarget(el)\n if (t) { if (isTextField(t) || t.localName == 'select') t.focus(); else activate(t, options) }\n } else if (el.localName == 'a' && el.hasAttribute('href')) options.onNavigate?.(el.getAttribute('href')!, el)\n else if ((el.localName == 'button' ? (el.getAttribute('type') || 'submit') == 'submit' : el.localName == 'input' && el.type == 'submit') && el.closest('form')) {\n submit(el.closest('form')!)\n } else if (isButton(el) && el.hasAttribute('commandfor')) invoke(el)\n else if (isButton(el) && el.hasAttribute('popovertarget')) {\n // a popover invoker: toggle (or show / hide) its popover; the focus goes back to it when the popover hides\n const p = el.ownerDocument.getElementById(el.getAttribute('popovertarget')!), act = el.getAttribute('popovertargetaction') || 'toggle'\n if (p && p.popover != null) act == 'show' ? p.showPopover() : act == 'hide' ? p.hidePopover() : p.togglePopover()\n } else if (el.localName == 'summary' && el.parentNode?.localName == 'details') el.parentNode.toggleAttribute('open')\n else if (el.localName == 'select') el.picker == null ? el.showPicker() : (el.picker = null)\n else if (el.localName == 'option') {\n const s = el.closest('select')\n if (s) { s.picker = null; chooseOption(s, optionValue(el)) }\n }\n return true\n}\n/**\n * An invoker button (commandfor + command): a cancelable command event on its target, then the\n * built-in command: show-modal, close, request-close, toggle-popover, show-popover, hide-popover\n * (a custom --command only sends the event)\n */\nfunction invoke(el: HostElement) {\n const t = el.ownerDocument.getElementById(el.getAttribute('commandfor')!), command = el.getAttribute('command') || ''\n if (!t || !fire(t, 'command', {command, source: el, bubbles: false, cancelable: true})) return\n // (the button's value: its attribute, or the property the props module set)\n const v = el.getAttribute('value') ?? el.value\n if (command == 'show-modal' && t.localName == 'dialog' && !t.open) t.showModal()\n else if (command == 'close' && t.localName == 'dialog') t.close(v)\n else if (command == 'request-close' && t.localName == 'dialog') t.requestClose(v)\n else if (/^(toggle|show|hide)-popover$/.test(command) && t.popover != null) command[0] == 't' ? t.togglePopover() : command[0] == 's' ? t.showPopover() : t.hidePopover()\n}\nconst isRadio = (el: HostElement) => el.localName == 'input' && el.type == 'radio' && !!el.name\nconst radioStop = (el: HostElement) => {\n const g = radioGroup(el).filter(r => !r.disabled)\n return el.checked || !g.some(r => r.checked) && g[0] === el || el.ownerDocument.activeElement === el\n}\nconst radioGroup = (el: HostElement) => (el.closest('form') || el.ownerDocument.body).querySelectorAll('input[type=\"radio\"]').filter(r => r.name == el.name)\n\n/** a double click: the two clicks, then dblclick (a terminal key or a tool call stands in for it) */\nexport function doubleClick(el: HostElement, options: UserAgentOptions = {}): void {\n activate(el, options)\n activate(el, options)\n fire(el, 'dblclick', {detail: 2})\n}\n\n/** a form submission (implicit submission, a submit button) */\nexport function submit(form: HostElement): boolean { return fire(form, 'submit') }\n\n/**\n * A key press on `target` (the focused element, else the document's root): keydown, its default\n * action, keyup. Defaults, as a browser's:\n * - a text field: a printable key inserts at the caret (replacing a selection), Backspace / Delete\n * delete (with Alt or Ctrl: a word), ← / → / Home / End move the caret (Shift: select; Alt or\n * Ctrl: by word), ↑ / ↓ move between a <textarea>'s lines, Enter submits an <input>'s form and\n * breaks a <textarea>'s line; beforeinput (cancelable) and input events with their inputType;\n * - a <select>: Enter / Space / Alt+↓ / F4 open its option list (showPicker()); while open, ↑ / ↓\n * / Home / End / PageUp / PageDown move the highlight, a letter jumps to an option, Enter /\n * Space choose (input + change), Escape and Tab close it; closed, ← / → and a letter change it;\n * - a radio: the arrows check the next / previous radio of its group and focus it;\n * - Enter or Space activates a button / link / checkbox (Space toggles a checkbox), and a\n * [tabindex] element unless a component listens to keydown on it or an ancestor (the app's own\n * key handling, as in a browser, where such an element has no key action);\n * - Escape: a modal dialog's close request (cancel, then close) unless it has closedby=\"none\",\n * else the last open auto popover hides.\n * Returns false when the keydown was prevented.\n */\nexport function pressKey(target: HostElement, key: string, init: KeyInit = {}, options: UserAgentOptions = {}): boolean {\n const ev = {key, code: key.length == 1 ? '' : key, keyCode: keyCode(key), which: keyCode(key), shiftKey: !!init.shiftKey, ctrlKey: !!init.ctrlKey, altKey: !!init.altKey, metaKey: !!init.metaKey, repeat: false}\n if (!fire(target, 'keydown', ev)) return fire(target, 'keyup', ev), false\n const plain = !ev.ctrlKey && !ev.altKey && !ev.metaKey\n if (options.defaultAction === false) {\n // the caller's own default action\n } else if (target.localName == 'select' && selectKey(target, key, ev)) {\n // handled by the option list\n } else if (isTextField(target) && (plain || /^(Backspace|Delete|Arrow|Home|End)/.test(key) || (ev.ctrlKey || ev.metaKey) && !ev.altKey && key == 'a')) {\n textKey(target, key, ev, plain)\n } else if (isRadio(target) && plain && /^Arrow/.test(key)) {\n const g = radioGroup(target).filter(r => !r.disabled && !isInert(r)), i = g.indexOf(target)\n const to = g[(i + (key == 'ArrowDown' || key == 'ArrowRight' ? 1 : -1) + g.length) % g.length]\n if (to && to !== target) { to.focus(); if (!to.checked) activate(to, options) }\n } else if (plain && (key == 'Enter' && !isBox(target) || key == ' ') && (isButton(target) || isBox(target) || target.localName == 'a' || target.localName == 'summary' || target.hasAttribute('tabindex') && !handlesKeys(target))) {\n if (!(key == ' ' && target.localName == 'a')) activate(target, options)\n } else if (key == 'Escape') {\n const d = target.ownerDocument, m = d.topModal, pop = [...d.popovers].reverse().find(p => p.popover == 'auto')\n if (pop) pop.hidePopover()\n else if (m && !/^none$/i.test(m.getAttribute('closedby') || '')) m.requestClose()\n }\n fire(target, 'keyup', ev)\n return true\n}\n\n/**\n * Whether the app handles keydown on `el` itself: a component's (non-global) keydown delegate\n * accepts it or an ancestor the event bubbles to. A browser gives a [tabindex] element no\n * Enter / Space action, so an app written for the web clicks it from its own keydown; the\n * click this user agent adds is only for the apps that don't (one action, not two).\n */\nfunction handlesKeys(el: HostElement): boolean {\n const ds = [...el.ownerDocument.delegates].filter(d => d.type == 'keydown' && !d.global)\n if (ds.length) for (let e: HostElement | null = el; e; e = e.parentNode) if (ds.some(d => d.accepts(e!))) return true\n return false\n}\n\n// ── text fields ──────────────────────────────────────────────────────\nconst seg: any = typeof Intl != 'undefined' && (Intl as any).Segmenter ? new (Intl as any).Segmenter() : null\n/** the grapheme boundaries of a string (UTF-16 offsets, 0 and its length included) */\nconst bounds = (s: string): number[] => {\n const out = [0]\n if (seg) for (const g of seg.segment(s)) { if (g.index) out.push(g.index) }\n else for (let i = 0, c: number; i < s.length; i += c > 0xffff ? 2 : 1) { c = s.codePointAt(i)!; if (i) out.push(i) }\n out.push(s.length)\n return out\n}\nconst prevB = (s: string, i: number) => [...bounds(s)].reverse().find(b => b < i) ?? 0\nconst nextB = (s: string, i: number) => bounds(s).find(b => b > i) ?? s.length\nconst isWord = (c: string) => /[\\p{L}\\p{N}_]/u.test(c)\nconst wordLeft = (s: string, i: number) => { while (i > 0 && !isWord(s[i - 1])) i--; while (i > 0 && isWord(s[i - 1])) i--; return i }\nconst wordRight = (s: string, i: number) => { while (i < s.length && !isWord(s[i])) i++; while (i < s.length && isWord(s[i])) i++; return i }\nconst lineStart = (s: string, i: number) => s.lastIndexOf('\\n', i - 1) + 1\nconst lineEnd = (s: string, i: number) => { const j = s.indexOf('\\n', i); return j < 0 ? s.length : j }\nconst multiline = (el: HostElement) => el.localName == 'textarea'\n\n/** replace the value's [start, end) with `text` as an edit: beforeinput (cancelable), the value and caret, input */\nfunction edit(el: HostElement, start: number, end: number, text: string, inputType: string): boolean {\n if (el.readOnly || el.disabled) return false\n if (!multiline(el)) text = text.replace(/\\r?\\n/g, ' ')\n const max = el.getAttribute('maxlength')\n if (max != null && +max >= 0) text = text.slice(0, Math.max(0, +max - (el.value.length - (end - start))))\n if (!text && start == end) return false\n if (!fire(el, 'beforeinput', {data: text || null, inputType, cancelable: true})) return false\n const v = el.value\n el.value = v.slice(0, start) + text + v.slice(end)\n el.setSelectionRange(start + text.length, start + text.length)\n fire(el, 'input', {data: text || null, inputType})\n return true\n}\nconst DELETE: Record<string, (s: string, i: number) => number> = {\n deleteContentBackward: prevB, deleteContentForward: nextB, deleteWordBackward: wordLeft, deleteWordForward: wordRight,\n deleteSoftLineBackward: lineStart, deleteSoftLineForward: lineEnd,\n}\n/**\n * An editing command on a text field, by its Input Events inputType: 'insertText' (with `data`),\n * 'insertLineBreak', 'insertFromPaste' (with `data`), 'deleteContentBackward' / 'Forward',\n * 'deleteWordBackward' / 'Forward', 'deleteSoftLineBackward' / 'Forward' (to the line's start /\n * end). A selection is replaced or deleted first. Returns whether the value changed.\n */\nexport function editText(el: HostElement, inputType: string, data = ''): boolean {\n const v = el.value, s = el.selectionStart, e = el.selectionEnd\n if (/^insert/.test(inputType)) return edit(el, s, e, inputType == 'insertLineBreak' ? '\\n' : data, inputType)\n if (s != e) return edit(el, s, e, '', inputType)\n const to = DELETE[inputType]?.(v, s)\n if (to == null || to == s) return false\n return edit(el, Math.min(s, to), Math.max(s, to), '', inputType)\n}\n/**\n * Move a text field's caret: 'left' 'right' 'wordLeft' 'wordRight' 'lineStart' 'lineEnd' 'start'\n * 'end' 'up' 'down' (a textarea's lines; the first / last line goes to the start / end); `extend`\n * moves the selection's focus end instead (Shift)\n */\nexport function moveCaret(el: HostElement, to: string, extend = false): void {\n const v = el.value, s = el.selectionStart, e = el.selectionEnd\n // the selection's moving end, and its anchor\n const back = el.selectionDirection == 'backward', head = back ? s : e, anchor = back ? e : s\n if (!extend && s != e && (to == 'left' || to == 'right')) return el.setSelectionRange(to == 'left' ? s : e, to == 'left' ? s : e)\n let i = head\n if (to == 'left') i = prevB(v, head)\n else if (to == 'right') i = nextB(v, head)\n else if (to == 'wordLeft') i = wordLeft(v, head)\n else if (to == 'wordRight') i = wordRight(v, head)\n else if (to == 'lineStart') i = multiline(el) ? lineStart(v, head) : 0\n else if (to == 'lineEnd') i = multiline(el) ? lineEnd(v, head) : v.length\n else if (to == 'start') i = 0\n else if (to == 'end') i = v.length\n else if (to == 'up' || to == 'down') {\n const ls = lineStart(v, head), col = [...v.slice(ls, head)].length\n if (to == 'up') i = ls == 0 ? 0 : (() => { const ps = lineStart(v, ls - 1); return ps + Math.min(col, ls - 1 - ps) })()\n else { const le = lineEnd(v, head); i = le == v.length ? v.length : (() => { const ns = le + 1, ne = lineEnd(v, ns); return ns + Math.min(col, ne - ns) })() }\n }\n if (!extend) return el.setSelectionRange(i, i)\n el.setSelectionRange(Math.min(anchor, i), Math.max(anchor, i), i < anchor ? 'backward' : 'forward')\n}\nfunction textKey(el: HostElement, key: string, ev: KeyInit, plain: boolean) {\n const word = ev.altKey || ev.ctrlKey, x = !!ev.shiftKey\n if (key == 'a' && !plain) return el.select()\n if (key.length == 1 || (key == 'Enter' && multiline(el))) return editText(el, key == 'Enter' ? 'insertLineBreak' : 'insertText', key)\n if (key == 'Enter') { const f = el.closest('form'); if (f) submit(f); return }\n if (key == 'Backspace') return editText(el, word ? 'deleteWordBackward' : 'deleteContentBackward')\n if (key == 'Delete') return editText(el, word ? 'deleteWordForward' : 'deleteContentForward')\n if (key == 'ArrowLeft' || key == 'ArrowRight') return moveCaret(el, (word ? 'word' + key.slice(5) : key.slice(5).toLowerCase()), x)\n if (key == 'Home' || key == 'End') return moveCaret(el, ev.ctrlKey || ev.metaKey ? (key == 'Home' ? 'start' : 'end') : (key == 'Home' ? 'lineStart' : 'lineEnd'), x)\n if ((key == 'ArrowUp' || key == 'ArrowDown') && multiline(el)) return moveCaret(el, key == 'ArrowUp' ? 'up' : 'down', x)\n}\n\n/** a paste into the focused field: a paste event (cancelable), then the text inserted at the caret */\nexport function paste(el: HostElement, text: string): boolean {\n const data = {getData: (t: string) => (/^text(\\/plain)?$/i.test(t) ? text : ''), types: ['text/plain']}\n if (!fire(el, 'paste', {clipboardData: data, cancelable: true})) return false\n return isTextField(el) && editText(el, 'insertFromPaste', text)\n}\n\n// ── a <select>'s option list ─────────────────────────────────────────\nconst usable = (o: HostElement) => !o.disabled && !(o.parentNode?.localName == 'optgroup' && o.parentNode.disabled)\n/** the next usable option from `i` in direction `d` (1 / -1), staying put at the ends */\nconst stepOption = (opts: HostElement[], i: number, d: number, n = 1) => {\n let j = i\n for (let k = i + d; k >= 0 && k < opts.length && n > 0; k += d) if (usable(opts[k])) { j = k; n-- }\n return j\n}\n// a letter jumps to the next option whose label starts with it\nconst typeAhead = (opts: HostElement[], from: number, ch: string) => {\n for (let k = 1; k <= opts.length; k++) {\n const o = opts[(from + k) % opts.length]\n if (usable(o) && o.textContent.trim().toLowerCase().startsWith(ch.toLowerCase())) return (from + k) % opts.length\n }\n return -1\n}\nfunction selectKey(el: HostElement, key: string, ev: KeyInit): boolean {\n const opts = el.options, open = el.picker != null, plain = !ev.ctrlKey && !ev.altKey && !ev.metaKey\n if (!open) {\n if (el.disabled) return false\n if ((plain && (key == 'Enter' || key == ' ')) || key == 'F4' || (ev.altKey && (key == 'ArrowDown' || key == 'ArrowUp'))) { el.showPicker(); return true }\n const i = el.selectedIndex\n let j = -1\n if (plain && (key == 'ArrowRight' || key == 'ArrowLeft')) j = stepOption(opts, i, key == 'ArrowRight' ? 1 : -1)\n else if (plain && key.length == 1 && key != ' ') j = typeAhead(opts, i, key)\n else return false\n if (j >= 0 && j != i) chooseOption(el, optionValue(opts[j]))\n return true\n }\n const i = el.picker!\n if (key == 'Escape' || key == 'Tab') el.picker = null\n else if (key == 'Enter' || key == ' ') {\n el.picker = null\n const o = opts[i]\n if (o && usable(o) && optionValue(o) !== el.value) chooseOption(el, optionValue(o))\n } else if (key == 'ArrowDown' || key == 'ArrowUp') el.picker = stepOption(opts, i, key == 'ArrowDown' ? 1 : -1)\n else if (key == 'PageDown' || key == 'PageUp') el.picker = stepOption(opts, i, key == 'PageDown' ? 1 : -1, 8)\n else if (key == 'Home') el.picker = stepOption(opts, -1, 1)\n else if (key == 'End') el.picker = stepOption(opts, opts.length, -1)\n else if (plain && key.length == 1) { const j = typeAhead(opts, i, key); if (j >= 0) el.picker = j }\n return true\n}\n\n/** type text into a field, one key press per character (keydown, input, keyup each) */\nexport function typeText(el: HostElement, text: string, options: UserAgentOptions = {}): void {\n if (el.ownerDocument.activeElement !== el) el.focus()\n for (const ch of text) pressKey(el, ch == '\\n' ? 'Enter' : ch, {}, options)\n}\n\n/** replace a field's value in one step (an input event, then change), as a paste or an autofill */\nexport function fill(el: HostElement, value: string): void {\n if (el.ownerDocument.activeElement !== el) el.focus()\n el.value = value\n fire(el, 'input', {inputType: 'insertReplacementText', data: value})\n fire(el, 'change')\n}\n\n/** pick a <select>'s option by value or label: the value, then input and change */\nexport function chooseOption(select: HostElement, valueOrLabel: string): boolean {\n const o = select.options.find(o => optionValue(o) == valueOrLabel) || select.options.find(o => o.textContent.trim() == valueOrLabel)\n if (!o) return false\n select.value = optionValue(o)\n for (const x of select.options) x.selected = x === o\n fire(select, 'input')\n fire(select, 'change')\n return true\n}\n","/*\n * 'sygnal/host' (research: dev-plans/research/alt-renderers): the renderer kit. A Sygnal app\n * renders into a host tree (a DOM subset, no browser), through the same core, snabbdom diff and\n * modules as the DOM driver; a renderer target paints that tree its own way and dispatches\n * DOM-shaped events into it. 'sygnal/terminal' and 'sygnal/agent-ui' are built on it; so can a\n * third party's target.\n *\n * const doc = new HostDocument()\n * run(App, { DOM: makeHostDriver(doc, { onPatch: paint }) })\n * // paint: read doc.body; input: el.dispatchEvent(new HostEvent('click'))\n *\n * Separate entry: './index' becomes the external 'sygnal' (one core per app, 0 B in its bundle).\n */\nimport {createElement} from './index'\nimport {fieldTags} from './host/driver'\nimport {fieldKinds} from './host/actions'\n\nexport {HostDocument, HostElement, HostText, HostNode, HostEvent, hostApi, nodeId} from './host/dom'\nexport {makeHostDriver, HostSource} from './host/driver'\nexport {matches, querySelectorAll} from './host/selector'\nexport {computeStyle, isHidden, isInert, closedByHost} from './host/style'\nexport type {HostStyle, HostStyleRule} from './host/style'\nexport type {HostListener, HostDelegate} from './host/dom'\nexport type {HostDriverOptions, HostEventsOptions} from './host/driver'\nexport type {UserAgentOptions, KeyInit} from './host/actions'\nexport {activate, doubleClick, pressKey, typeText, fill, paste, editText, moveCaret, chooseOption, submit, isFocusable, isInteractive, isTextField, isCheckable, focusableElements, moveFocus, labelTarget, optionValue} from './host/actions'\n\n/**\n * Form-field tags of a target's own vocabulary (`textinput`, `toggle`, …), beyond input, textarea\n * and select: a name (a text field) or `{ tag, kind: 'checkbox' }` (toggled by a click, with a\n * checkbox's events: click, input, change; `checked`). The JSX pragma then never reuses their vnodes by identity (so a value the state\n * sets back to what it rendered last is written again), and the host driver re-syncs their\n * `value` / `checked` on each patch, as the DOM driver does for <input>. Call it before the\n * first render.\n */\nexport function registerFieldTags(...tags: (string | {tag: string, kind?: 'text' | 'checkbox'})[]): void {\n const t = (createElement as any).$t\n for (const entry of tags) {\n const tag = typeof entry == 'string' ? entry : entry.tag\n fieldTags.add(tag)\n // the user-agent actions (typing, a click's toggle) and the targets (terminal, agent UI) read the kind\n fieldKinds.set(tag, (typeof entry == 'string' ? undefined : entry.kind) || 'text')\n // the pragma's tag bits (src/pragma): 1 a field, 8 a hyphenated (custom element) tag\n if (t) t[tag] = 1 | (/-/.test(tag) ? 8 : 0)\n }\n}\n"],"names":["_Fragment","seg","classModule","attributesModule","datasetModule","scopeRoot","init","defaultModules","xs","recordDelivery","createElement"],"mappings":"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"}