sygnal 5.3.7 → 6.0.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 (438) hide show
  1. package/CHANGELOG.md +646 -0
  2. package/README.md +77 -47
  3. package/dist/astro/client.cjs.js +33 -8114
  4. package/dist/astro/client.cjs.js.map +1 -0
  5. package/dist/astro/client.mjs +33 -8114
  6. package/dist/astro/client.mjs.map +1 -0
  7. package/dist/astro/index.cjs.js +1039 -9
  8. package/dist/astro/index.cjs.js.map +1 -0
  9. package/dist/astro/index.mjs +1038 -9
  10. package/dist/astro/index.mjs.map +1 -0
  11. package/dist/astro/server.cjs.js +3400 -166
  12. package/dist/astro/server.cjs.js.map +1 -0
  13. package/dist/astro/server.mjs +3400 -166
  14. package/dist/astro/server.mjs.map +1 -0
  15. package/dist/devtools.cjs.js +1431 -0
  16. package/dist/devtools.cjs.js.map +1 -0
  17. package/dist/devtools.esm.js +1419 -0
  18. package/dist/devtools.esm.js.map +1 -0
  19. package/dist/diagnostics.cjs.js +4033 -0
  20. package/dist/diagnostics.cjs.js.map +1 -0
  21. package/dist/diagnostics.esm.js +4003 -0
  22. package/dist/diagnostics.esm.js.map +1 -0
  23. package/dist/element.cjs.js +230 -0
  24. package/dist/element.cjs.js.map +1 -0
  25. package/dist/element.esm.js +228 -0
  26. package/dist/element.esm.js.map +1 -0
  27. package/dist/guide/accessibility.md +257 -0
  28. package/dist/guide/adapters.md +221 -0
  29. package/dist/guide/behaviors.md +312 -0
  30. package/dist/guide/browser-sources.md +203 -0
  31. package/dist/guide/drag-and-drop.md +342 -0
  32. package/dist/guide/element-commands.md +306 -0
  33. package/dist/guide/error-boundaries.md +169 -0
  34. package/dist/guide/forms-reference.md +381 -0
  35. package/dist/guide/forms.md +250 -0
  36. package/dist/guide/http.md +299 -0
  37. package/dist/guide/inputs.md +173 -0
  38. package/dist/guide/persistence.md +245 -0
  39. package/dist/guide/recipes/carousel.md +155 -0
  40. package/dist/guide/recipes/charts.md +177 -0
  41. package/dist/guide/recipes/code-editor.md +135 -0
  42. package/dist/guide/recipes/data-grid.md +155 -0
  43. package/dist/guide/recipes/data-table.md +196 -0
  44. package/dist/guide/recipes/i18n.md +222 -0
  45. package/dist/guide/recipes/icons.md +115 -0
  46. package/dist/guide/recipes/overview.md +33 -0
  47. package/dist/guide/recipes/rich-text.md +154 -0
  48. package/dist/guide/resources.md +471 -0
  49. package/dist/guide/ssr.md +255 -0
  50. package/dist/guide/timers.md +178 -0
  51. package/dist/guide/ui/accordion.md +93 -0
  52. package/dist/guide/ui/combobox.md +144 -0
  53. package/dist/guide/ui/dialog.md +124 -0
  54. package/dist/guide/ui/disclosure.md +60 -0
  55. package/dist/guide/ui/menu.md +125 -0
  56. package/dist/guide/ui/overview.md +166 -0
  57. package/dist/guide/ui/popover.md +101 -0
  58. package/dist/guide/ui/select.md +114 -0
  59. package/dist/guide/ui/tabs.md +161 -0
  60. package/dist/guide/ui/toaster.md +152 -0
  61. package/dist/guide/ui/tooltip.md +103 -0
  62. package/dist/guide/undo.md +178 -0
  63. package/dist/guide/virtual-collections.md +183 -0
  64. package/dist/guide/web-components.md +179 -0
  65. package/dist/guide/widgets.md +217 -0
  66. package/dist/index.cjs.js +15283 -6279
  67. package/dist/index.cjs.js.map +1 -0
  68. package/dist/index.d.ts +3739 -370
  69. package/dist/index.esm.js +15230 -6274
  70. package/dist/index.esm.js.map +1 -0
  71. package/dist/jsx-dev-runtime.cjs.js +27 -329
  72. package/dist/jsx-dev-runtime.cjs.js.map +1 -0
  73. package/dist/jsx-dev-runtime.esm.js +20 -322
  74. package/dist/jsx-dev-runtime.esm.js.map +1 -0
  75. package/dist/jsx-runtime.cjs.js +27 -329
  76. package/dist/jsx-runtime.cjs.js.map +1 -0
  77. package/dist/jsx-runtime.esm.js +20 -322
  78. package/dist/jsx-runtime.esm.js.map +1 -0
  79. package/dist/jsx.cjs.js +11 -309
  80. package/dist/jsx.cjs.js.map +1 -0
  81. package/dist/jsx.esm.js +9 -310
  82. package/dist/jsx.esm.js.map +1 -0
  83. package/dist/react.cjs.js +117 -0
  84. package/dist/react.cjs.js.map +1 -0
  85. package/dist/react.esm.js +115 -0
  86. package/dist/react.esm.js.map +1 -0
  87. package/dist/shims/globalthis.cjs +20 -0
  88. package/dist/sygnal.min.js +2 -1
  89. package/dist/sygnal.min.js.map +1 -0
  90. package/dist/ui-combobox.cjs.js +169 -0
  91. package/dist/ui-combobox.cjs.js.map +1 -0
  92. package/dist/ui-combobox.esm.js +148 -0
  93. package/dist/ui-combobox.esm.js.map +1 -0
  94. package/dist/ui-menu.cjs.js +87 -0
  95. package/dist/ui-menu.cjs.js.map +1 -0
  96. package/dist/ui-menu.esm.js +66 -0
  97. package/dist/ui-menu.esm.js.map +1 -0
  98. package/dist/ui-select.cjs.js +104 -0
  99. package/dist/ui-select.cjs.js.map +1 -0
  100. package/dist/ui-select.esm.js +83 -0
  101. package/dist/ui-select.esm.js.map +1 -0
  102. package/dist/ui.cjs.js +738 -0
  103. package/dist/ui.cjs.js.map +1 -0
  104. package/dist/ui.esm.js +727 -0
  105. package/dist/ui.esm.js.map +1 -0
  106. package/dist/vike/ClientOnly.cjs.js +5 -14
  107. package/dist/vike/ClientOnly.cjs.js.map +1 -0
  108. package/dist/vike/ClientOnly.mjs +5 -14
  109. package/dist/vike/ClientOnly.mjs.map +1 -0
  110. package/dist/vike/{+config.js → config/+config.js} +10 -1
  111. package/dist/vike/config/+config.js.map +1 -0
  112. package/dist/vike/config/package.json +6 -0
  113. package/dist/vike/onRenderClient.cjs.js +166 -95
  114. package/dist/vike/onRenderClient.cjs.js.map +1 -0
  115. package/dist/vike/onRenderClient.mjs +166 -95
  116. package/dist/vike/onRenderClient.mjs.map +1 -0
  117. package/dist/vike/onRenderHtml.cjs.js +60 -24
  118. package/dist/vike/onRenderHtml.cjs.js.map +1 -0
  119. package/dist/vike/onRenderHtml.mjs +61 -25
  120. package/dist/vike/onRenderHtml.mjs.map +1 -0
  121. package/dist/vite/plugin.cjs.js +926 -65
  122. package/dist/vite/plugin.cjs.js.map +1 -0
  123. package/dist/vite/plugin.mjs +925 -65
  124. package/dist/vite/plugin.mjs.map +1 -0
  125. package/dist/zag.cjs.js +408 -0
  126. package/dist/zag.cjs.js.map +1 -0
  127. package/dist/zag.esm.js +405 -0
  128. package/dist/zag.esm.js.map +1 -0
  129. package/llms.txt +313 -0
  130. package/package.json +109 -16
  131. package/src/astro/client.ts +40 -18
  132. package/src/astro/index.d.ts +48 -1
  133. package/src/astro/index.ts +106 -9
  134. package/src/astro/server.ts +11 -3
  135. package/src/collection.ts +6 -90
  136. package/src/core/actions.ts +134 -0
  137. package/src/core/cell.ts +202 -0
  138. package/src/core/debug.ts +23 -0
  139. package/src/core/define.ts +242 -0
  140. package/src/core/hooks.ts +314 -0
  141. package/src/core/hosts/collection.ts +325 -0
  142. package/src/core/hosts/switchable.ts +146 -0
  143. package/src/core/instance.ts +592 -0
  144. package/src/core/markers/clientonly.ts +13 -0
  145. package/src/core/markers/lazy.ts +40 -0
  146. package/src/core/markers/portal.ts +96 -0
  147. package/src/core/markers/suspense.ts +41 -0
  148. package/src/core/markers/transition.ts +70 -0
  149. package/src/core/registry.ts +25 -0
  150. package/src/core/runtime.ts +573 -0
  151. package/src/core/statics.ts +104 -0
  152. package/src/core/teardown.ts +60 -0
  153. package/src/core/view.ts +37 -0
  154. package/src/cycle/dom/DocumentDOMSource.ts +13 -8
  155. package/src/cycle/dom/ElementFinder.ts +7 -9
  156. package/src/cycle/dom/EventDelegator.ts +174 -223
  157. package/src/cycle/dom/IsolateModule.ts +65 -35
  158. package/src/cycle/dom/MainDOMSource.ts +13 -2
  159. package/src/cycle/dom/PriorityQueue.ts +4 -2
  160. package/src/cycle/dom/SymbolTree.ts +18 -47
  161. package/src/cycle/dom/classNameModule.ts +76 -0
  162. package/src/cycle/dom/controlledInputModule.ts +50 -0
  163. package/src/cycle/dom/enrichEventStream.ts +29 -45
  164. package/src/cycle/dom/fragment.ts +7 -0
  165. package/src/cycle/dom/isolate.ts +30 -27
  166. package/src/cycle/dom/makeDOMDriver.ts +115 -57
  167. package/src/cycle/dom/mockDOMSource.ts +83 -9
  168. package/src/cycle/dom/modules.ts +21 -4
  169. package/src/cycle/dom/propsModule.ts +65 -0
  170. package/src/cycle/dom/selectModule.ts +22 -17
  171. package/src/cycle/dom/snabbdom.ts +1 -6
  172. package/src/cycle/dom/thunk.ts +3 -0
  173. package/src/cycle/dom/utils.ts +98 -0
  174. package/src/cycle/dom/viewTransition.ts +43 -0
  175. package/src/cycle/state/StateSource.ts +20 -4
  176. package/src/cycle/state/objIsEqual.ts +50 -0
  177. package/src/cycle/state/types.ts +0 -10
  178. package/src/defineComponent.ts +34 -0
  179. package/src/devtools.d.ts +151 -0
  180. package/src/devtools.ts +34 -0
  181. package/src/element.d.ts +59 -0
  182. package/src/element.ts +235 -0
  183. package/src/extra/backoff.ts +9 -0
  184. package/src/extra/behaviors.ts +169 -0
  185. package/src/extra/browserSignals.ts +23 -0
  186. package/src/extra/browserSources.ts +326 -0
  187. package/src/extra/command.ts +3 -3
  188. package/src/extra/controls.ts +47 -0
  189. package/src/extra/copyAsTest.ts +286 -0
  190. package/src/extra/devtools.ts +109 -31
  191. package/src/extra/devtoolsActions.ts +379 -0
  192. package/src/extra/devtoolsHook.ts +9 -0
  193. package/src/extra/devtoolsNext.ts +83 -0
  194. package/src/extra/diagnostics/checks/actionLog.ts +108 -0
  195. package/src/extra/diagnostics/checks/behaviors.ts +49 -0
  196. package/src/extra/diagnostics/checks/browserSources.ts +96 -0
  197. package/src/extra/diagnostics/checks/collections.ts +67 -0
  198. package/src/extra/diagnostics/checks/controls.ts +148 -0
  199. package/src/extra/diagnostics/checks/dataset.ts +57 -0
  200. package/src/extra/diagnostics/checks/dom.ts +250 -0
  201. package/src/extra/diagnostics/checks/elementCommands.ts +175 -0
  202. package/src/extra/diagnostics/checks/events.ts +83 -0
  203. package/src/extra/diagnostics/checks/fetch.ts +135 -0
  204. package/src/extra/diagnostics/checks/forms.ts +163 -0
  205. package/src/extra/diagnostics/checks/index.ts +202 -0
  206. package/src/extra/diagnostics/checks/inspect.ts +427 -0
  207. package/src/extra/diagnostics/checks/next.ts +417 -0
  208. package/src/extra/diagnostics/checks/persist.ts +54 -0
  209. package/src/extra/diagnostics/checks/props.ts +56 -0
  210. package/src/extra/diagnostics/checks/public.d.ts +302 -0
  211. package/src/extra/diagnostics/checks/replies.ts +128 -0
  212. package/src/extra/diagnostics/checks/router.ts +100 -0
  213. package/src/extra/diagnostics/checks/rxjsHints.ts +88 -0
  214. package/src/extra/diagnostics/checks/shared.ts +203 -0
  215. package/src/extra/diagnostics/checks/shorthand.ts +115 -0
  216. package/src/extra/diagnostics/checks/sortable.ts +129 -0
  217. package/src/extra/diagnostics/checks/state.ts +148 -0
  218. package/src/extra/diagnostics/checks/statics.ts +48 -0
  219. package/src/extra/diagnostics/checks/strict.ts +55 -0
  220. package/src/extra/diagnostics/checks/timers.ts +80 -0
  221. package/src/extra/diagnostics/checks/viewTransitions.ts +47 -0
  222. package/src/extra/diagnostics/checks/virtual.ts +73 -0
  223. package/src/extra/diagnostics/checks/widgets.ts +109 -0
  224. package/src/extra/diagnostics/checks/wiring.ts +121 -0
  225. package/src/extra/diagnostics/codes.ts +477 -0
  226. package/src/extra/diagnostics/index.ts +353 -0
  227. package/src/extra/diagnostics/legacy.ts +76 -0
  228. package/src/extra/driverFactories.ts +172 -60
  229. package/src/extra/elementCommands.ts +53 -0
  230. package/src/extra/eventDriver.ts +4 -0
  231. package/src/extra/fetchDriver.ts +519 -0
  232. package/src/extra/flatten.ts +75 -0
  233. package/src/extra/focusWithin.ts +27 -0
  234. package/src/extra/form.ts +268 -0
  235. package/src/extra/formHelpers.ts +139 -0
  236. package/src/extra/head.ts +106 -0
  237. package/src/extra/hmr.ts +2 -3
  238. package/src/extra/owned.ts +24 -0
  239. package/src/extra/pager.ts +50 -0
  240. package/src/extra/persist.ts +133 -0
  241. package/src/extra/pwa.ts +1 -1
  242. package/src/extra/queryCache.ts +107 -0
  243. package/src/extra/reducers.ts +13 -6
  244. package/src/extra/reduxDevtools.ts +92 -0
  245. package/src/extra/replies.ts +54 -0
  246. package/src/extra/router.ts +323 -0
  247. package/src/extra/run.ts +94 -210
  248. package/src/extra/selection.ts +76 -0
  249. package/src/extra/socketDriver.ts +265 -0
  250. package/src/extra/sortable.ts +377 -0
  251. package/src/extra/ssr.ts +427 -160
  252. package/src/extra/standardSchema.ts +27 -0
  253. package/src/extra/testing.ts +3158 -190
  254. package/src/extra/timers.ts +95 -0
  255. package/src/extra/undo.ts +261 -0
  256. package/src/extra/viewTransitions.ts +38 -0
  257. package/src/extra/virtual.ts +513 -0
  258. package/src/extra/widget.ts +201 -0
  259. package/src/extra/xstreamExtras.ts +269 -0
  260. package/src/index.d.ts +3012 -87
  261. package/src/index.ts +32 -10
  262. package/src/jsx-runtime.ts +15 -1
  263. package/src/jsx.ts +2 -1
  264. package/src/lazy.ts +50 -7
  265. package/src/portal.ts +3 -1
  266. package/src/pragma/index.ts +262 -134
  267. package/src/react-peers.d.ts +5 -0
  268. package/src/react.d.ts +43 -0
  269. package/src/react.ts +110 -0
  270. package/src/shared.ts +48 -0
  271. package/src/slot.ts +1 -1
  272. package/src/suspense.ts +3 -1
  273. package/src/switchable.ts +6 -119
  274. package/src/transition.ts +3 -1
  275. package/src/ui/accordion.ts +64 -0
  276. package/src/ui/dialog.ts +129 -0
  277. package/src/ui/disclosure.ts +35 -0
  278. package/src/ui/popover.ts +45 -0
  279. package/src/ui/shared.ts +94 -0
  280. package/src/ui/tabs.ts +82 -0
  281. package/src/ui/toaster.ts +198 -0
  282. package/src/ui/tooltip.ts +70 -0
  283. package/src/ui/zag/combobox.ts +115 -0
  284. package/src/ui/zag/menu.ts +40 -0
  285. package/src/ui/zag/select.ts +54 -0
  286. package/src/ui/zag/shared.ts +43 -0
  287. package/src/ui-combobox.d.ts +20 -0
  288. package/src/ui-combobox.ts +6 -0
  289. package/src/ui-menu.d.ts +30 -0
  290. package/src/ui-menu.ts +6 -0
  291. package/src/ui-select.d.ts +17 -0
  292. package/src/ui-select.ts +6 -0
  293. package/src/ui-zag-types.d.ts +42 -0
  294. package/src/ui.d.ts +208 -0
  295. package/src/ui.ts +15 -0
  296. package/src/vike/+config.ts +9 -1
  297. package/src/vike/ClientOnly.ts +1 -1
  298. package/src/vike/onRenderClient.ts +144 -96
  299. package/src/vike/onRenderHtml.ts +69 -26
  300. package/src/vike/types.ts +27 -4
  301. package/src/vite/globalthis-shim.ts +18 -0
  302. package/src/vite/globalthis.ts +56 -0
  303. package/src/vite/plugin.d.ts +114 -2
  304. package/src/vite/plugin.ts +920 -56
  305. package/src/zag.d.ts +64 -0
  306. package/src/zag.ts +238 -0
  307. package/dist/astro/astro/client.d.ts +0 -5
  308. package/dist/astro/astro/index.d.ts +0 -16
  309. package/dist/astro/astro/server.d.ts +0 -12
  310. package/dist/astro/client.d.ts +0 -5
  311. package/dist/astro/client.esm.js +0 -4665
  312. package/dist/astro/collection.d.ts +0 -12
  313. package/dist/astro/component.d.ts +0 -22
  314. package/dist/astro/cycle/dom/BodyDOMSource.d.ts +0 -10
  315. package/dist/astro/cycle/dom/DOMSource.d.ts +0 -11
  316. package/dist/astro/cycle/dom/DocumentDOMSource.d.ts +0 -12
  317. package/dist/astro/cycle/dom/ElementFinder.d.ts +0 -8
  318. package/dist/astro/cycle/dom/EventDelegator.d.ts +0 -34
  319. package/dist/astro/cycle/dom/IsolateModule.d.ts +0 -23
  320. package/dist/astro/cycle/dom/MainDOMSource.d.ts +0 -32
  321. package/dist/astro/cycle/dom/PriorityQueue.d.ts +0 -7
  322. package/dist/astro/cycle/dom/ScopeChecker.d.ts +0 -9
  323. package/dist/astro/cycle/dom/SymbolTree.d.ts +0 -9
  324. package/dist/astro/cycle/dom/VNodeWrapper.d.ts +0 -8
  325. package/dist/astro/cycle/dom/enrichEventStream.d.ts +0 -24
  326. package/dist/astro/cycle/dom/fromEvent.d.ts +0 -6
  327. package/dist/astro/cycle/dom/index.d.ts +0 -8
  328. package/dist/astro/cycle/dom/isolate.d.ts +0 -9
  329. package/dist/astro/cycle/dom/makeDOMDriver.d.ts +0 -11
  330. package/dist/astro/cycle/dom/mockDOMSource.d.ts +0 -17
  331. package/dist/astro/cycle/dom/modules.d.ts +0 -5
  332. package/dist/astro/cycle/dom/snabbdom.d.ts +0 -22
  333. package/dist/astro/cycle/dom/styleModule.d.ts +0 -13
  334. package/dist/astro/cycle/dom/thunk.d.ts +0 -11
  335. package/dist/astro/cycle/dom/utils.d.ts +0 -8
  336. package/dist/astro/cycle/isolate/index.d.ts +0 -42
  337. package/dist/astro/cycle/run/adapt.d.ts +0 -6
  338. package/dist/astro/cycle/run/index.d.ts +0 -36
  339. package/dist/astro/cycle/run/internals.d.ts +0 -8
  340. package/dist/astro/cycle/run/types.d.ts +0 -49
  341. package/dist/astro/cycle/state/Collection.d.ts +0 -29
  342. package/dist/astro/cycle/state/StateSource.d.ts +0 -20
  343. package/dist/astro/cycle/state/index.d.ts +0 -5
  344. package/dist/astro/cycle/state/pickCombine.d.ts +0 -3
  345. package/dist/astro/cycle/state/pickMerge.d.ts +0 -3
  346. package/dist/astro/cycle/state/types.d.ts +0 -18
  347. package/dist/astro/cycle/state/withState.d.ts +0 -17
  348. package/dist/astro/extra/classes.d.ts +0 -7
  349. package/dist/astro/extra/devtools.d.ts +0 -78
  350. package/dist/astro/extra/dragDriver.d.ts +0 -20
  351. package/dist/astro/extra/driverFactories.d.ts +0 -12
  352. package/dist/astro/extra/eventDriver.d.ts +0 -9
  353. package/dist/astro/extra/exactState.d.ts +0 -1
  354. package/dist/astro/extra/hmr.d.ts +0 -17
  355. package/dist/astro/extra/logDriver.d.ts +0 -2
  356. package/dist/astro/extra/processDrag.d.ts +0 -19
  357. package/dist/astro/extra/processForm.d.ts +0 -15
  358. package/dist/astro/extra/run.d.ts +0 -13
  359. package/dist/astro/extra/xstreamCompat.d.ts +0 -5
  360. package/dist/astro/index.d.ts +0 -19
  361. package/dist/astro/index.esm.js +0 -27
  362. package/dist/astro/jsx-dev-runtime.d.ts +0 -1
  363. package/dist/astro/jsx-runtime.d.ts +0 -4
  364. package/dist/astro/jsx.d.ts +0 -2
  365. package/dist/astro/pragma/fn.d.ts +0 -7
  366. package/dist/astro/pragma/index.d.ts +0 -7
  367. package/dist/astro/pragma/is.d.ts +0 -10
  368. package/dist/astro/server.d.ts +0 -12
  369. package/dist/astro/server.esm.js +0 -25
  370. package/dist/astro/switchable.d.ts +0 -7
  371. package/dist/collection.d.ts +0 -12
  372. package/dist/component.d.ts +0 -22
  373. package/dist/cycle/dom/BodyDOMSource.d.ts +0 -10
  374. package/dist/cycle/dom/DOMSource.d.ts +0 -11
  375. package/dist/cycle/dom/DocumentDOMSource.d.ts +0 -12
  376. package/dist/cycle/dom/ElementFinder.d.ts +0 -8
  377. package/dist/cycle/dom/EventDelegator.d.ts +0 -34
  378. package/dist/cycle/dom/IsolateModule.d.ts +0 -23
  379. package/dist/cycle/dom/MainDOMSource.d.ts +0 -32
  380. package/dist/cycle/dom/PriorityQueue.d.ts +0 -7
  381. package/dist/cycle/dom/ScopeChecker.d.ts +0 -9
  382. package/dist/cycle/dom/SymbolTree.d.ts +0 -9
  383. package/dist/cycle/dom/VNodeWrapper.d.ts +0 -8
  384. package/dist/cycle/dom/enrichEventStream.d.ts +0 -24
  385. package/dist/cycle/dom/fromEvent.d.ts +0 -6
  386. package/dist/cycle/dom/index.d.ts +0 -8
  387. package/dist/cycle/dom/isolate.d.ts +0 -9
  388. package/dist/cycle/dom/makeDOMDriver.d.ts +0 -11
  389. package/dist/cycle/dom/mockDOMSource.d.ts +0 -17
  390. package/dist/cycle/dom/modules.d.ts +0 -5
  391. package/dist/cycle/dom/snabbdom.d.ts +0 -22
  392. package/dist/cycle/dom/styleModule.d.ts +0 -13
  393. package/dist/cycle/dom/thunk.d.ts +0 -11
  394. package/dist/cycle/dom/utils.d.ts +0 -8
  395. package/dist/cycle/isolate/index.d.ts +0 -42
  396. package/dist/cycle/run/adapt.d.ts +0 -6
  397. package/dist/cycle/run/index.d.ts +0 -36
  398. package/dist/cycle/run/internals.d.ts +0 -8
  399. package/dist/cycle/run/types.d.ts +0 -49
  400. package/dist/cycle/state/Collection.d.ts +0 -29
  401. package/dist/cycle/state/StateSource.d.ts +0 -20
  402. package/dist/cycle/state/index.d.ts +0 -5
  403. package/dist/cycle/state/pickCombine.d.ts +0 -3
  404. package/dist/cycle/state/pickMerge.d.ts +0 -3
  405. package/dist/cycle/state/types.d.ts +0 -18
  406. package/dist/cycle/state/withState.d.ts +0 -17
  407. package/dist/extra/classes.d.ts +0 -7
  408. package/dist/extra/devtools.d.ts +0 -78
  409. package/dist/extra/dragDriver.d.ts +0 -20
  410. package/dist/extra/driverFactories.d.ts +0 -12
  411. package/dist/extra/eventDriver.d.ts +0 -9
  412. package/dist/extra/exactState.d.ts +0 -1
  413. package/dist/extra/hmr.d.ts +0 -17
  414. package/dist/extra/logDriver.d.ts +0 -2
  415. package/dist/extra/processDrag.d.ts +0 -19
  416. package/dist/extra/processForm.d.ts +0 -15
  417. package/dist/extra/run.d.ts +0 -13
  418. package/dist/extra/xstreamCompat.d.ts +0 -5
  419. package/dist/jsx-dev-runtime.d.ts +0 -1
  420. package/dist/jsx-dev-runtime.js +0 -224
  421. package/dist/jsx-runtime.d.ts +0 -4
  422. package/dist/jsx-runtime.js +0 -224
  423. package/dist/jsx.d.ts +0 -2
  424. package/dist/pragma/fn.d.ts +0 -7
  425. package/dist/pragma/index.d.ts +0 -7
  426. package/dist/pragma/is.d.ts +0 -10
  427. package/dist/switchable.d.ts +0 -7
  428. package/dist/vike/+config.cjs.js +0 -65
  429. package/src/component.ts +0 -2256
  430. package/src/cycle/isolate/index.ts +0 -196
  431. package/src/cycle/run/index.ts +0 -151
  432. package/src/cycle/run/internals.ts +0 -143
  433. package/src/cycle/state/Collection.ts +0 -174
  434. package/src/cycle/state/index.ts +0 -5
  435. package/src/cycle/state/pickCombine.ts +0 -167
  436. package/src/cycle/state/pickMerge.ts +0 -122
  437. package/src/cycle/state/withState.ts +0 -47
  438. package/src/pragma/fn.ts +0 -55
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../src/shared.ts","../src/defineComponent.ts","../src/cycle/dom/fragment.ts","../src/core/registry.ts","../src/extra/xstreamCompat.ts","../src/extra/xstreamExtras.ts","../src/cycle/run/adapt.ts","../src/cycle/state/objIsEqual.ts","../src/cycle/state/StateSource.ts","../src/extra/diagnostics/codes.ts","../src/extra/diagnostics/index.ts","../src/extra/diagnostics/legacy.ts","../src/core/teardown.ts","../src/core/define.ts","../src/core/cell.ts","../src/extra/elementCommands.ts","../src/core/view.ts","../src/core/statics.ts","../src/core/debug.ts","../src/core/actions.ts","../src/extra/command.ts","../src/cycle/dom/utils.ts","../src/core/instance.ts","../src/core/hosts/collection.ts","../src/collection.ts","../src/pragma/is.ts","../src/pragma/index.ts","../src/extra/virtual.ts","../src/core/hosts/switchable.ts","../src/switchable.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/modules.ts","../src/core/markers/portal.ts","../src/portal.ts","../src/core/markers/transition.ts","../src/transition.ts","../src/core/markers/suspense.ts","../src/suspense.ts","../src/slot.ts","../src/core/markers/lazy.ts","../src/lazy.ts","../src/extra/replies.ts","../src/extra/driverFactories.ts","../src/extra/backoff.ts","../src/extra/browserSignals.ts","../src/extra/standardSchema.ts","../src/extra/fetchDriver.ts","../src/extra/queryCache.ts","../src/extra/socketDriver.ts","../src/extra/router.ts","../src/cycle/dom/fromEvent.ts","../src/cycle/dom/enrichEventStream.ts","../src/cycle/dom/DocumentDOMSource.ts","../src/cycle/dom/BodyDOMSource.ts","../src/cycle/dom/ScopeChecker.ts","../src/cycle/dom/ElementFinder.ts","../src/cycle/dom/isolate.ts","../src/cycle/dom/MainDOMSource.ts","../src/cycle/dom/VNodeWrapper.ts","../src/cycle/dom/SymbolTree.ts","../src/cycle/dom/IsolateModule.ts","../src/cycle/dom/PriorityQueue.ts","../src/cycle/dom/EventDelegator.ts","../src/cycle/dom/makeDOMDriver.ts","../src/cycle/dom/viewTransition.ts","../src/extra/viewTransitions.ts","../src/extra/head.ts","../src/extra/timers.ts","../src/extra/browserSources.ts","../src/extra/focusWithin.ts","../src/extra/processForm.ts","../src/extra/processDrag.ts","../src/extra/dragDriver.ts","../src/extra/exactState.ts","../src/cycle/dom/thunk.ts","../src/cycle/dom/mockDOMSource.ts","../src/extra/eventDriver.ts","../src/extra/logDriver.ts","../src/core/markers/clientonly.ts","../src/core/runtime.ts","../src/extra/run.ts","../src/extra/hmr.ts","../src/extra/classes.ts","../src/extra/ref.ts","../src/extra/controls.ts","../src/extra/widget.ts","../src/extra/behaviors.ts","../src/extra/pager.ts","../src/extra/formHelpers.ts","../src/extra/form.ts","../src/extra/selection.ts","../src/extra/sortable.ts","../src/extra/undo.ts","../src/extra/persist.ts","../src/extra/owned.ts","../src/extra/ssr.ts","../src/extra/diagnostics/checks/actionLog.ts","../src/extra/diagnostics/checks/elementCommands.ts","../src/extra/testing.ts","../src/extra/reducers.ts","../src/extra/pwa.ts","../src/extra/devtoolsHook.ts","../src/extra/flatten.ts"],"sourcesContent":["/*\n * Tiny helpers shared by the core and the helper modules (behaviors, undo, the dev entry), kept\n * out of the core so importing them never pulls it in.\n */\n\n/** The \"no change / send nothing\" sentinel (a registered symbol: the same in every copy) */\nexport const ABORT = Symbol.for('sygnal.ABORT')\n\n/**\n * Whether a value is ABORT. Compares the description, not the identity, in case bundlers (e.g.\n * Vite) create duplicate module instances with separate Symbol.for() registries. (G-214: the\n * one copy, for the core, behaviors, undo and the action log)\n */\nexport const isAbort = (v: any): boolean => typeof v == 'symbol' && v.description == 'sygnal.ABORT'\n\n/**\n * Set on a dev-only wrapper of a model function (SYG222's) to the function it wraps, so the\n * action log and t.explain() show the user's reducer (G-214 follow-up)\n */\nexport const ORIGINAL = Symbol.for('sygnal.original')\n\n/**\n * PLAN-4 GS-9 / G-214: one part of a uid() path (a child's path or `id` prop, a Collection item\n * key, a Switchable page name), encoded injectively into [A-Za-z0-9_]: letters and digits stay,\n * anything else (including '_' and '-') becomes '_<UTF-16 code>_' ('0.2' → '0_46_2', 'a_b' →\n * 'a_95_b'), so the '-' between parts is unambiguous too. renderToString encodes the same way\n * (ssr.ts).\n */\nexport const uidPart = (s: any): string => (s + '').replace(/\\W|_/g, c => '_' + c.charCodeAt(0) + '_')\n\n/**\n * PLAN-5 A-1: a Collection item's style with its view-transition name and class\n * (`viewTransitionName=\"card\"`): `card-<id>`, the id escaped as uidPart does (a valid CSS\n * identifier, unique per id), and the class `card`; the item's own style wins, except its\n * `undefined` values (G-418: no value is no override; snabbdom would leave the old one). The\n * core's Collection host and SSR share it\n */\nexport const vtStyle = (p: string, id: any, style?: any) => {\n const o: any = {viewTransitionName: p + '-' + uidPart(id), viewTransitionClass: p}\n for (const k in style) if (style[k] !== undefined) o[k] = style[k]\n return o\n}\n\n/**\n * P45-D: sources that aren't drivers get no sinks: props$, children$, dispose$, commands$, CHILD;\n * PARENT, EFFECT and ELEMENT are built-in sinks; __k, __d, __uid... are internal\n */\nexport const NOT_SINK = /^(__|(props|children|dispose|commands)\\$$|(CHILD|PARENT|EFFECT|ELEMENT)$)/\n","/**\n * PLAN-4.6 (D162): `defineComponent(opts)` builds a component from an options object, for code\n * that makes components from data (generators, wrappers). It returns an ordinary function\n * component: a new function that calls `view` with the one view argument, with the other options\n * assigned as its statics. There is no separate instantiation path: the core reads the statics\n * like any function component's.\n *\n * const Counter = defineComponent({ name: 'Counter', view, intent, model, initialState: { n: 0 } })\n *\n * `name` becomes `componentName` (diagnostics, devtools, uid()); without it, the view's\n * componentName or function name (G-343: not the `view` an inline `view: () => …` is given;\n * 'Component' then). Statics already on the view are copied, and the options override them. The\n * view function itself is not changed, so one view can back several definitions; the dev checks\n * read it from `__sygnalView` (its arity: positional views).\n */\nexport function defineComponent(opts: Record<string, any>): any {\n if (!opts || typeof opts !== 'object') {\n throw new TypeError('defineComponent(opts): pass an options object, e.g. defineComponent({ view, model, initialState })')\n }\n const {view, name, ...statics} = opts\n if (typeof view !== 'function') {\n throw new TypeError(`defineComponent(${name ? `{ name: '${name}' }` : 'opts'}): view must be a function (the view: ({ state, context, ...props }) => vnode)`)\n }\n const C: any = (args: any) => view(args)\n for (const k of Object.keys(view)) C[k] = view[k]\n const componentName = name || view.componentName || (view.name && view.name != 'view' ? view.name : 'Component')\n C.componentName = componentName\n try { Object.defineProperty(C, 'name', {value: componentName, configurable: true}) } catch (_) { /* name not configurable */ }\n for (const k of Object.keys(statics)) if (statics[k] !== undefined) C[k] = statics[k]\n Object.defineProperty(C, '__sygnalView', {value: view.__sygnalView || view, configurable: true})\n return C\n}\n\nexport default defineComponent\n","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 * PLAN-4.6 core: the module registries (04-hooks-contract §2.1). A feature module fills them\n * when it is imported; the core only looks them up, so an app that never imports the module pays\n * nothing (D157). R2 fills hosts (core/hosts: Collection, Switchable) and the markers\n * (core/markers: Portal, Transition, ClientOnly, Suspense, lazy), each imported by its public\n * module; R3 adds the definition hooks (behaviors, undo, selection, pager, persist, resources).\n *\n * The entries are core modules: they get the owner's raw instance (hooks get InstanceViews).\n */\nimport type {ComponentFn, DefSource} from './hooks'\n\n/**\n * marker sel -> a child that renders in place of the marker (Collection, Switchable): render(),\n * setProps(props, children, marker, id), dispose(), ready, outv / last, insts() (its instances)\n */\nexport const hosts: Record<string, (owner: any, props: Record<string, any>, children: any[], id: string, marker: any) => any> = {}\n/** marker sel -> a template rewrite during the reconcile walk (Portal, Transition, ClientOnly, Slot,\n * widget); `path` is the marker's place in the owner's template ('r.0.2': a widget's identity) */\nexport const pres: Record<string, (vnode: any, owner: any, path: string) => any> = {}\n/** marker sel -> a post-processor of an instance's injected vnode whose template had it (Suspense) */\nexport const posts: Record<string, (vnode: any, owner: any) => any> = {}\n/** component function -> the function to instantiate (lazy: the loaded component once resolved) */\nexport const resolvers: Array<(view: ComponentFn, owner: any) => ComponentFn | undefined> = []\n/** definition time, every app: (src, view) -> src (behaviors, undo, selection, pager, persist, resources) */\nexport const defHooks: Array<(src: DefSource, view: ComponentFn) => DefSource | void> = []\n","import * as xstreamNamespace from 'xstream';\n\nexport function resolveInteropDefault(namespaceValue: any): any {\n if (\n namespaceValue &&\n namespaceValue.default &&\n namespaceValue.default.default &&\n typeof namespaceValue.default.default === 'function'\n ) {\n return namespaceValue.default.default;\n }\n\n if (namespaceValue && namespaceValue.default) {\n return namespaceValue.default;\n }\n\n return namespaceValue;\n}\n\nfunction getXs(namespaceValue: any): any {\n const value = resolveInteropDefault(namespaceValue);\n\n if (\n value &&\n value.default &&\n typeof value.default.create === 'function'\n ) {\n return value.default;\n }\n\n return value;\n}\n\nconst xs = getXs(xstreamNamespace);\nconst Stream =\n (xstreamNamespace as any).Stream ||\n ((xstreamNamespace as any).default && (xstreamNamespace as any).default.Stream) ||\n (xs && xs.Stream);\n\nexport {Stream};\nexport default xs;\n","/**\n * ESM ports of xstream's `concat`, `debounce`, `throttle`, `delay`, `dropRepeats` and\n * `sampleCombine` extras (xstream, MIT, André Staltz), behaviour-identical.\n *\n * Why not import 'xstream/extra/*': those modules are CommonJS with `exports.default`. Under\n * Vite/Vitest the default import resolves to the function, but in the rollup CJS build and in\n * native Node ESM it resolves to the module object `{ default: fn }`, so the re-exports from\n * 'sygnal' were not callable there (and neither were sygnal's own internal uses). ESM classes\n * are also tree-shaken when an app does not use them. See also ./flatten.ts.\n */\nimport {Stream} from 'xstream'\n\n// ---------------------------------------------------------------- concat\n\nclass ConcatProducer {\n type = 'concat'\n out: any = null\n i = 0\n constructor(public streams: any[]) {}\n _start(out: any) { this.out = out; this.streams[this.i]._add(this) }\n _stop() {\n const streams = this.streams\n if (this.i < streams.length) streams[this.i]._remove(this)\n this.i = 0\n this.out = null\n }\n _n(t: any) { const u = this.out; if (u) u._n(t) }\n _e(err: any) { const u = this.out; if (u) u._e(err) }\n _c() {\n const u = this.out\n if (!u) return\n const streams = this.streams\n streams[this.i]._remove(this)\n if (++this.i < streams.length) streams[this.i]._add(this)\n else u._c()\n }\n}\n\n/** Emits everything from the first stream, then (once it completes) the second, and so on. */\nexport function concat<T>(...streams: Stream<T>[]): Stream<T> {\n return new Stream<T>(new ConcatProducer(streams) as any)\n}\n\n// ---------------------------------------------------------------- debounce\n\nconst NO_VALUE = {}\n\nclass DebounceOperator {\n type = 'debounce'\n out: any = null\n id: any = null\n t: any = NO_VALUE\n constructor(public dt: number, public ins: any) {}\n _start(out: any) { this.out = out; this.ins._add(this) }\n _stop() { this.ins._remove(this); this.out = null; this.clearInterval() }\n clearInterval() {\n const id = this.id\n if (id !== null) clearInterval(id)\n this.id = null\n }\n _n(t: any) {\n const u = this.out\n if (!u) return\n this.clearInterval()\n this.t = t\n this.id = setInterval(() => {\n this.clearInterval()\n u._n(t)\n this.t = NO_VALUE\n }, this.dt)\n }\n _e(err: any) {\n const u = this.out\n if (!u) return\n this.clearInterval()\n u._e(err)\n }\n _c() {\n const u = this.out\n if (!u) return\n this.clearInterval()\n if (this.t != NO_VALUE) u._n(this.t)\n this.t = NO_VALUE\n u._c()\n }\n}\n\n/** Emits a value only after `period` ms have passed without another value. */\nexport function debounce(period: number): <T>(ins: Stream<T>) => Stream<T> {\n return function debounceOperator<T>(ins: Stream<T>): Stream<T> {\n return new Stream<T>(new DebounceOperator(period, ins) as any)\n }\n}\n\n// ---------------------------------------------------------------- throttle\n\nclass ThrottleOperator {\n type = 'throttle'\n out: any = null\n id: any = null\n constructor(public dt: number, public ins: any) {}\n _start(out: any) { this.out = out; this.ins._add(this) }\n _stop() { this.ins._remove(this); this.out = null; this.id = null }\n clearInterval() {\n const id = this.id\n if (id !== null) clearInterval(id)\n this.id = null\n }\n _n(t: any) {\n const u = this.out\n if (!u) return\n if (this.id) return\n u._n(t)\n this.id = setInterval(() => { this.clearInterval() }, this.dt)\n }\n _e(err: any) {\n const u = this.out\n if (!u) return\n this.clearInterval()\n u._e(err)\n }\n _c() {\n const u = this.out\n if (!u) return\n this.clearInterval()\n u._c()\n }\n}\n\n/** Emits a value, then ignores further values for `period` ms. */\nexport function throttle(period: number): <T>(ins: Stream<T>) => Stream<T> {\n return function throttleOperator<T>(ins: Stream<T>): Stream<T> {\n return new Stream<T>(new ThrottleOperator(period, ins) as any)\n }\n}\n\n// ---------------------------------------------------------------- delay\n\nclass DelayOperator {\n type = 'delay'\n out: any = null\n constructor(public dt: number, public ins: any) {}\n _start(out: any) { this.out = out; this.ins._add(this) }\n _stop() { this.ins._remove(this); this.out = null }\n _n(t: any) {\n const u = this.out\n if (!u) return\n const id = setInterval(() => { u._n(t); clearInterval(id) }, this.dt)\n }\n _e(err: any) {\n const u = this.out\n if (!u) return\n const id = setInterval(() => { u._e(err); clearInterval(id) }, this.dt)\n }\n _c() {\n const u = this.out\n if (!u) return\n const id = setInterval(() => { u._c(); clearInterval(id) }, this.dt)\n }\n}\n\n/** Delays every event (values, error, completion) by `period` ms. */\nexport function delay(period: number): <T>(ins: Stream<T>) => Stream<T> {\n return function delayOperator<T>(ins: Stream<T>): Stream<T> {\n return new Stream<T>(new DelayOperator(period, ins) as any)\n }\n}\n\n// ---------------------------------------------------------------- dropRepeats\n\nconst EMPTY = {}\n\nclass DropRepeatsOperator {\n type = 'dropRepeats'\n out: any = null\n v: any = EMPTY\n isEq: (x: any, y: any) => boolean\n constructor(public ins: any, fn?: (x: any, y: any) => boolean) {\n this.isEq = fn ? fn : (x: any, y: any) => x === y\n }\n _start(out: any) { this.out = out; this.ins._add(this) }\n _stop() { this.ins._remove(this); this.out = null; this.v = EMPTY }\n _n(t: any) {\n const u = this.out\n if (!u) return\n const v = this.v\n if (v !== EMPTY && this.isEq(t, v)) return\n this.v = t\n u._n(t)\n }\n _e(err: any) { const u = this.out; if (u) u._e(err) }\n _c() { const u = this.out; if (u) u._c() }\n}\n\n/** Drops consecutive duplicates (`===`, or the given equality function). */\nexport function dropRepeats<T>(isEqual?: (x: T, y: T) => boolean): (ins: Stream<T>) => Stream<T> {\n return function dropRepeatsOperator(ins: Stream<T>): Stream<T> {\n return new Stream<T>(new DropRepeatsOperator(ins, isEqual as any) as any)\n }\n}\n\n// ---------------------------------------------------------------- sampleCombine\n\nconst NO = {}\n\nclass SampleCombineListener {\n constructor(public i: number, public p: SampleCombineOperator) { p.ils[i] = this }\n _n(t: any) {\n const p = this.p\n if (p.out === NO) return\n p.up(t, this.i)\n }\n _e(err: any) { this.p._e(err) }\n _c() { this.p.down(this.i, this) }\n}\n\nclass SampleCombineOperator {\n type = 'sampleCombine'\n out: any = NO\n ils: any[] = []\n Nn = 0\n vals: any[] = []\n constructor(public ins: any, public others: any[]) {}\n _start(out: any) {\n this.out = out\n const s = this.others\n const n = this.Nn = s.length\n const vals = this.vals = new Array(n)\n for (let i = 0; i < n; i++) {\n vals[i] = NO\n s[i]._add(new SampleCombineListener(i, this))\n }\n this.ins._add(this)\n }\n _stop() {\n const s = this.others\n const n = s.length\n const ils = this.ils\n this.ins._remove(this)\n for (let i = 0; i < n; i++) s[i]._remove(ils[i])\n this.out = NO\n this.vals = []\n this.ils = []\n }\n _n(t: any) {\n const out = this.out\n if (out === NO) return\n if (this.Nn > 0) return\n out._n([t, ...this.vals])\n }\n _e(err: any) { const out = this.out; if (out !== NO) out._e(err) }\n _c() { const out = this.out; if (out !== NO) out._c() }\n up(t: any, i: number) {\n const v = this.vals[i]\n if (this.Nn > 0 && v === NO) this.Nn--\n this.vals[i] = t\n }\n down(i: number, l: any) { this.others[i]._remove(l) }\n}\n\n/**\n * Operator: whenever the source emits, emits `[source, latest(a), latest(b), ...]`\n * (only once every other stream has emitted at least once).\n */\nexport function sampleCombine(...streams: Stream<any>[]): (sampler: Stream<any>) => Stream<any[]> {\n return function sampleCombineOperator(sampler: Stream<any>): Stream<any[]> {\n return new Stream<any[]>(new SampleCombineOperator(sampler, streams) as any)\n }\n}\n","import {Stream} from 'xstream';\n\ndeclare var window: any;\ndeclare var global: any;\n\nfunction getGlobal(this: any): any {\n let globalObj: any;\n if (typeof window !== 'undefined') {\n globalObj = window;\n } else if (typeof global !== 'undefined') {\n globalObj = global;\n } else {\n globalObj = this;\n }\n globalObj.Cyclejs = globalObj.Cyclejs || {};\n globalObj = globalObj.Cyclejs;\n globalObj.adaptStream = globalObj.adaptStream || ((x: any) => x);\n return globalObj;\n}\n\nexport interface AdaptStream {\n (s: Stream<any>): any;\n}\n\nexport function setAdapt(f: AdaptStream): void {\n getGlobal().adaptStream = f;\n}\n\nexport function adapt(stream: Stream<any>): any {\n return getGlobal().adaptStream(stream);\n}\n","/** Structural equality (to depth 5): the core's state/props/context diffing and STATE.watch (GS-6) */\nexport function objIsEqual(obj1: any, obj2?: any, maxDepth: number = 5, depth: number = 0): boolean {\n // Past maxDepth the values count as different (false): the caller then treats them as changed\n if (depth > maxDepth) {\n return false;\n }\n\n // If both are the same object or are both exactly null or undefined\n if (obj1 === obj2) {\n return true;\n }\n\n // If either is not an object (null, undefined, or primitive), directly compare\n if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) {\n return false;\n }\n\n // Special handling for arrays\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\n if (obj1.length !== obj2.length) {\n return false;\n }\n for (let i = 0; i < obj1.length; i++) {\n if (!objIsEqual(obj1[i], obj2[i], maxDepth, depth + 1)) {\n return false;\n }\n }\n return true;\n }\n\n // Get keys of both objects\n const keys1 = Object.keys(obj1);\n\n // Check if the number of properties is different\n if (keys1.length !== Object.keys(obj2).length) {\n return false;\n }\n\n // Recursively check each property\n for (const key of keys1) {\n if (!(key in obj2)) {\n return false;\n }\n if (!objIsEqual(obj1[key], obj2[key], maxDepth, depth + 1)) {\n return false;\n }\n }\n\n return true;\n}\n","import xs, {Stream, MemoryStream} from 'xstream';\nimport {dropRepeats} from '../../extra/xstreamExtras';\nimport {DevToolEnabledSource} from '../run/types';\nimport {adapt} from '../run/adapt';\nimport {Getter, Setter, Scope, Reducer} from './types';\nimport {objIsEqual} from './objIsEqual';\n\nfunction updateArrayEntry<T>(\n array: Array<T>,\n scope: number | string,\n newVal: any\n): Array<T> {\n if (newVal === (array as any)[scope]) {\n return array;\n }\n const index = parseInt(scope as string);\n if (typeof newVal === 'undefined') {\n return array.filter((_val, i) => i !== index);\n }\n return array.map((val, i) => (i === index ? newVal : val));\n}\n\nfunction makeGetter<T, R>(scope: Scope<T, R>): Getter<T, R> {\n if (typeof scope === 'string' || typeof scope === 'number') {\n return function lensGet(state: T | undefined) {\n if (typeof state === 'undefined' || state === null) {\n return void 0;\n } else {\n return (state as any)[scope];\n }\n };\n } else {\n return scope.get;\n }\n}\n\nfunction makeSetter<T, R>(scope: Scope<T, R>): Setter<T, R> {\n if (typeof scope === 'string' || typeof scope === 'number') {\n return function lensSet(\n state: T | undefined,\n childState: R | undefined\n ): T {\n if (Array.isArray(state)) {\n return updateArrayEntry(state, scope, childState) as any;\n } else if (typeof state === 'undefined') {\n return ({[scope]: childState} as any) as T;\n } else {\n return {...(state as any), [scope]: childState};\n }\n };\n } else {\n return scope.set;\n }\n}\n\nexport function isolateSource<T, R>(\n source: StateSource<T>,\n scope: Scope<T, R>\n): StateSource<R> {\n return source.select(scope);\n}\n\nexport function isolateSink<T, R>(\n innerReducer$: Stream<Reducer<R>>,\n scope: Scope<T, R>\n): Stream<Reducer<T>> {\n const get = makeGetter(scope);\n const set = makeSetter(scope);\n\n return innerReducer$.map(\n innerReducer =>\n function outerReducer(outer: T | undefined) {\n const prevInner = get(outer);\n const nextInner = innerReducer(prevInner);\n if (prevInner === nextInner) {\n return outer;\n } else {\n return set(outer, nextInner);\n }\n }\n );\n}\n\n/**\n * Represents a piece of application state dynamically changing over time.\n */\nexport class StateSource<S> {\n public stream: MemoryStream<S>;\n private _stream: MemoryStream<S>;\n private _name: string;\n private _end?: Stream<any>;\n\n // raw (P45-D): `stream` is another StateSource's stream mapped, already without undefined and\n // repeats (a component's own source), so one stream instead of four\n constructor(stream: Stream<S>, name: string, end?: Stream<any>, raw?: any) {\n this._end = end;\n this._stream = raw ? stream.remember() : stream\n .filter(s => typeof s !== 'undefined')\n .compose(dropRepeats())\n .remember();\n this._name = name;\n this.stream = adapt(this._stream);\n (this._stream as MemoryStream<S> &\n DevToolEnabledSource)._isCycleSource = name;\n }\n\n /**\n * Selects a part (or scope) of the state object and returns a new StateSource\n * dynamically representing that selected part of the state.\n */\n public select<R>(scope: Scope<S, R>): StateSource<R> {\n const get = makeGetter(scope);\n // G-214: keeps the end stream, so a selected source's watch() also ends on dispose\n return new StateSource<R>(this._stream.map(get) as Stream<R>, this._name, this._end);\n }\n\n /**\n * PLAN-4 GS-6: selector(state) whenever it changes structurally (objIsEqual). The current\n * value is the baseline, not a change, unless { immediate: true }. Ends with the state stream\n * or, for a component's own STATE source, when the component is disposed\n */\n public watch<R>(selector: (state: S) => R, {immediate}: {immediate?: boolean} = {}): Stream<R> {\n const s$ = this._stream.map(selector).compose(dropRepeats(objIsEqual)).endWhen(this._end || xs.never());\n return immediate ? s$ : s$.drop(1);\n }\n\n public isolateSource = isolateSource;\n public isolateSink = isolateSink;\n}\n","/**\n * Sygnal diagnostic code registry.\n *\n * Every diagnostic Sygnal reports has a stable code (`SYG123`), a default\n * severity, a short title, and a docs anchor (`docsSlug`) on\n * https://sygnal.js.org/reference/errors (base URL = the `site` field of\n * docs/astro.config.mjs).\n *\n * The registry is stored as two parallel tables so the published bundle only\n * carries what the runtime needs:\n * - CODE_SEVERITY: code → default severity (used by report(); in the bundle)\n * - CODE_TITLES: code → title (docs/inspect/static-checker metadata; pure\n * object literal, tree-shaken unless something imports it)\n * getCodeInfo(code) / listCodes() assemble the full\n * { code, severity, title, docsSlug } records. To add a code, add it to BOTH\n * tables below (inside your reserved range), or call registerCodes() from a\n * workstream's own module. docsSlug is always the lower-cased code\n * ('SYG101' → https://sygnal.js.org/reference/errors#syg101).\n *\n * (Comments are attached to type-only declarations so the TypeScript emit\n * drops them — keeps them out of the published bundle and the size gate.)\n *\n * Severity (PLAN-2 1-B, G-044):\n * - 'error' — the operation failed: thrown at the call site, or caught there\n * (reducer, EFFECT, view, sub-component) and logged with\n * console.error while the app keeps running\n * - 'warn' — likely mistake, behaviour continues: console + collected\n * (when diagnostics mode is 'warn')\n * - 'info' — collected only; surfaced through inspect / test helpers\n * A call site may report a lower severity than the default (SYG405 for\n * Collection/Switchable children, SYG406 handled by onError: 'warn').\n * Every code surfaces under its own code: an error thrown by fail() and\n * caught by a reducer/EFFECT/instantiation handler is reported under the\n * thrown code (legacy.caught), not the handler's.\n *\n * Ranges (see dev-plans/PLAN-1.md §2):\n * SYG1xx Wiring: intent <-> model <-> view <-> events\n * SYG2xx State & reducers\n * SYG3xx Streams & intent construction (incl. xstream hints)\n * SYG4xx Collections, Switchable, sub-components, context\n * SYG5xx Strict mode / canonical-form violations\n * SYG6xx Drivers & run configuration\n * SYG7xx Accessibility (a11y; static only, sygnal-check, PLAN-4 GS-3)\n * SYG9xx Internal invariants\n *\n * ---------------------------------------------------------------------------\n * RESERVED RANGES (PLAN-1 workstream allocation — add entries only inside the\n * range your workstream owns; changes outside go through the coordinator):\n *\n * 0B (diagnostics core) SYG900 (check-failure invariant)\n * 1A (runtime checks) SYG101-105, SYG110, SYG201, SYG202, SYG301,\n * SYG401 (pre-seeded below), plus SYG106-199\n * and SYG302-399 for new checks\n * 1E (message retrofit) SYG206-299, SYG402-499, SYG601-699, SYG901-999\n * 2A (strict mode) SYG500-599\n * unallocated SYG100, SYG200, SYG203-205, SYG300, SYG400,\n * SYG600 (coordinator assigns on request)\n * ---------------------------------------------------------------------------\n */\nexport type DiagnosticSeverity = 'error' | 'warn' | 'info'\n\nexport interface DiagnosticCodeInfo {\n code: string\n severity: DiagnosticSeverity\n title: string\n // anchor on the errors reference page, e.g. 'syg101' → /reference/errors#syg101\n docsSlug: string\n}\n\nexport const DOCS_BASE_URL = 'https://sygnal.js.org'\n\nexport const CODE_SEVERITY: Record<string, DiagnosticSeverity> = {\n SYG101: 'warn',\n SYG102: 'info',\n SYG103: 'info',\n SYG104: 'warn',\n SYG105: 'info',\n SYG106: 'warn',\n SYG110: 'warn',\n SYG111: 'warn',\n SYG201: 'warn',\n SYG202: 'warn',\n SYG301: 'error',\n SYG401: 'warn',\n SYG900: 'warn',\n // ---- 1E retrofit codes (SYG206-299, 402-499, 601-699, 901-999) ----\n SYG206: 'error',\n SYG207: 'warn',\n SYG208: 'warn',\n SYG209: 'error',\n SYG210: 'warn',\n SYG211: 'error',\n SYG212: 'error',\n SYG213: 'warn',\n SYG214: 'error',\n SYG215: 'error',\n SYG216: 'error',\n SYG217: 'warn',\n SYG218: 'error',\n SYG219: 'warn',\n SYG220: 'warn',\n SYG402: 'error',\n SYG403: 'error',\n SYG404: 'error',\n SYG405: 'error',\n SYG406: 'error',\n SYG407: 'error',\n SYG408: 'error',\n SYG409: 'warn',\n SYG410: 'error',\n SYG411: 'error',\n SYG412: 'error',\n SYG413: 'error',\n SYG414: 'error',\n SYG415: 'error',\n SYG416: 'error',\n SYG417: 'warn',\n SYG418: 'error',\n SYG419: 'error',\n SYG420: 'error',\n SYG601: 'error',\n SYG602: 'error',\n SYG603: 'error',\n SYG604: 'error',\n SYG605: 'error',\n SYG606: 'error',\n SYG607: 'error',\n SYG608: 'warn',\n SYG609: 'warn',\n SYG610: 'error',\n SYG901: 'error',\n SYG902: 'error',\n SYG903: 'error',\n // ---- end 1E retrofit codes ----\n}\n\nexport const CODE_TITLES: Record<string, string> = {\n // SYG1xx wiring (1A)\n SYG101: 'Intent action has no model entry',\n SYG102: 'Model entry is unreachable',\n SYG103: 'Intent selector matched no rendered element',\n SYG104: 'Intent selector crosses an isolation boundary',\n SYG105: 'EVENTS type selected but never emitted, or emitted but never selected',\n SYG106: 'Parent prop is overwritten by a reserved view argument',\n SYG110: 'Intent selector not present in the component view',\n SYG111: 'Controlled input has no input listener',\n SYG115: 'Unknown DOM event shorthand',\n SYG116: 'EVENTS value has no string type',\n SYG124: 'Component used as a control or selector',\n SYG125: 'Control given .intent, .model or .initialState',\n SYG126: 'Control rendered but never listened to',\n SYG127: 'Behavior collision or unresolvable uses entry',\n SYG128: 'Duplicate control key',\n SYG129: \"CHILD.select() of a component this one doesn't render\",\n SYG112: 'Reply action has no model entry',\n SYG130: 'href() names no route or leaves out a param',\n SYG131: 'Route params the pattern does not use',\n SYG132: 'Declaration static that is never sent',\n SYG133: 'SPA router inside a Vike app',\n // PLAN-5 W-1: widgets (defineWidget; checks/widgets.ts, checks/elementCommands.ts; SYG141 static only)\n SYG140: 'Widget dispatched an undeclared event',\n SYG141: 'Listener for an event the widget does not declare',\n SYG142: 'Widget command not declared',\n SYG143: 'Widget tag used as a selector',\n SYG144: 'Widget event the host element also fires natively',\n // PLAN-5 B-1 (3-D): the sortable behavior (checks/sortable.ts; sortable.ts calls the bridge's sortable hook)\n SYG145: 'Sortable item without its id attribute',\n SYG146: 'Sortable item or handle selector matches nothing',\n SYG147: 'Sortable list key is not an array in the host state',\n // PLAN-5 3-F G-419: a Collection's viewTransitionName (checks/next.ts)\n SYG148: 'Collection viewTransitionName is not a CSS identifier',\n SYG149: 'Two items with the same view-transition name',\n // PLAN-5 V-1: VirtualCollection (checks/virtual.ts)\n SYG430: 'VirtualCollection has no bounded height',\n SYG431: 'VirtualCollection items without ids',\n SYG432: 'VirtualCollection item does not render one element',\n SYG433: 'VirtualCollection scroll target not in the list',\n SYG434: 'Invalid VirtualCollection estimateSize or overscan',\n // PLAN-5 3-H (G-449): sortable over a list shown in another order (checks/sortable.ts)\n SYG435: 'Sortable list shown filtered or in another order',\n // SYG2xx state & reducers (1A)\n SYG201: 'STATE reducer dropped keys from the previous state',\n SYG202: 'STATE reducer returned undefined',\n // SYG3xx streams & intent construction (1A)\n SYG301: 'RxJS operator used on an xstream stream',\n // SYG4xx collections / switchable / sub-components / context (1A)\n SYG401: \"Collection 'from' field is missing or not an array\",\n // SYG5xx strict mode / canonical forms (2A; dev-plans/PLAN-1-canonical-forms.md)\n SYG501: \"Removed in 6.0: view with positional arguments\",\n SYG502: 'Retired in 6.0: STATE reducer signals no change without ABORT',\n SYG503: 'Side effect in a STATE reducer that returns ABORT',\n SYG504: \"Removed in 6.0: 'ACTION | SINK' model key\",\n SYG505: 'Non-canonical EVENTS emit',\n SYG506: \"Removed in 6.0: CHILD.select() with a component name\",\n SYG507: 'Prop drilled through more than 2 component levels',\n SYG508: 'select()/errors() round trip where reply actions would do',\n // SYG9xx internal (0B)\n SYG900: 'A diagnostics check threw',\n // ---- 1E retrofit codes (SYG206-299, 402-499, 601-699, 901-999) ----\n SYG206: 'Invalid calculated field definition',\n SYG207: 'Calculated field shadows an initialState key',\n SYG208: 'Calculated field depends on an unknown key',\n SYG209: 'Circular calculated field dependency',\n SYG210: 'INITIALIZE used with a sink other than STATE',\n SYG211: \"Retired in 6.0: Invalid model shorthand entry\",\n SYG212: 'Model entry is not a function or an object of sinks',\n SYG213: \"Retired in 6.0: Duplicate model entry for the same action and sink\",\n SYG214: 'EFFECT handler threw',\n SYG215: 'next() delay is not a number',\n SYG216: 'Reducer threw',\n SYG217: 'Driver-sink reducer returned undefined',\n SYG218: 'Reducer returned an unsupported type',\n SYG219: 'EFFECT handler returned a value',\n SYG220: 'Calculated field threw',\n SYG221: 'set() called with a string',\n SYG222: 'STATE reducer returned the same object after it was mutated in place',\n SYG223: 'persist pick or omit names a key that is not in initialState',\n SYG224: 'persist on a component that is not the root',\n SYG226: 'Undo track, resetOn or coalesce names an unknown action',\n // PLAN-5 F-1: the form behavior (checks/forms.ts)\n SYG230: 'Form field name not in values',\n SYG231: 'form() schema is not a Standard Schema',\n SYG232: 'Form submit dropped while one is in progress',\n SYG233: 'Form value missing from the schema output',\n SYG234: 'Form submit action has no model entry',\n SYG235: 'Form check names an unknown field or sets reply fields',\n SYG236: 'Form array rows without an id',\n SYG237: 'Two forms in one component listen on the same form selector',\n // PLAN-5 2-R (G-393; checks/state.ts; dev entry)\n SYG238: 'Root component with a model but no initial state',\n SYG402: 'Context is not an object',\n SYG403: 'Invalid context entry',\n SYG404: 'Context stream errored',\n SYG405: 'Sub-component has initialState without isolatedState',\n SYG406: 'View threw',\n SYG407: 'onError handler threw',\n SYG408: 'Sub-component failed to instantiate',\n SYG409: 'Child tried to update a calculated field',\n SYG410: \"Invalid sub-component 'state' prop\",\n SYG411: \"Collection 'of' is missing or not a component\",\n SYG412: \"Invalid Collection 'from' prop\",\n SYG413: \"Retired in 6.0: Unnamed component factory not found\",\n SYG414: \"Retired in 6.0: Component not found\",\n SYG415: \"Switchable 'of' is missing or invalid\",\n SYG416: \"Switchable 'current' is missing or invalid\",\n SYG417: 'Portal target not found',\n SYG418: 'Invalid Collection sort prop',\n SYG419: \"Retired in 6.0: Invalid switchable() 'name$' parameter\",\n SYG420: 'JSX tag is undefined',\n SYG421: 'Invalid data (dataset) key',\n SYG422: 'Invalid timer spec',\n // PLAN-4.6 R4: the core's dev checks (checks/next.ts; dev entry)\n SYG423: 'Context change skipped a view whose output it changes',\n SYG424: 'Duplicate Collection item id',\n SYG425: 'isolatedState slice lacks initialState keys',\n SYG601: \"Retired in 6.0: Missing or invalid sources\",\n SYG602: 'Intent is not a function',\n SYG603: 'Intent returned an invalid value',\n SYG604: \"Retired in 6.0: Invalid hmrActions\",\n SYG605: \"Retired in 6.0: Intent action name contains '|'\",\n SYG606: 'calculated is not an object',\n SYG607: \"Retired in 6.0: State source not found\",\n SYG608: 'Strict mode requested without the diagnostics entry',\n SYG609: 'Sink or source has no driver',\n SYG610: \"Request has a 'then' or 'catch' key\",\n SYG611: 'Socket message not sent or connection not opened',\n // PLAN-4.6 R4 (D173): a form 6.0 removed, met at runtime (checks/next.ts; dev entry)\n SYG612: 'Removed in 6.0',\n SYG620: 'Router command not performed',\n // PLAN-3 5-3: makeFetchDriver's cache, invalidation and validation (dev entry; SYG634 static only)\n SYG630: 'Cached request is not idempotent',\n SYG631: 'validate is not a Standard Schema',\n SYG632: 'invalidate matched nothing',\n SYG633: 'abort names a lane the requests do not use',\n SYG634: 'latest: true with a computed key',\n // PLAN-3 5-5 (D88)\n SYG635: 'Caching asked for without a queryCache',\n // PLAN-4 GS-2: element commands (reported by the dev entry, checks/elementCommands.ts)\n SYG640: 'Element command target not found',\n SYG641: 'Unknown element command',\n // PLAN-4 GS-5: persist() (src/extra/persist.ts reports SYG642 with an explicit severity, like SYG611)\n SYG642: 'Persisted state could not be restored or saved',\n // PLAN-4 GS-7: timers (checks/timers.ts; dev entry)\n SYG643: 'Declaration static with no driver to take it',\n // PLAN-4 D131: sygnal/element (reported through the core bridge when diagnostics are on)\n SYG644: 'Custom element prop hides an HTMLElement member',\n // PLAN-4 GS-12 (D129): View Transitions (checks/viewTransitions.ts; dev entry)\n SYG645: \"viewTransitions that can't run\",\n // PLAN-5 W-1: a widget's mount / update / unmount threw (checks/widgets.ts; dev entry)\n SYG660: 'Widget mount threw',\n SYG661: 'Widget update threw or reported an error',\n SYG662: 'Widget unmount threw',\n // PLAN-5 B-3: browser sources (makeBrowserDriver; checks/browserSources.ts; dev entry)\n SYG663: 'Invalid browser-source spec or command',\n SYG664: 'Browser source not in the driver',\n SYG665: 'Browser source failed with no error action',\n // PLAN-5 W-2 (D203): the adapter entries (sygnal/react, sygnal/zag, sygnal/ui/menu|select|combobox): SYG666 from\n // sygnal/vite (an entry imported without its optional peer dependencies), SYG667 thrown by\n // fromZag / fromReact\n SYG666: 'Adapter peer dependency missing',\n SYG667: 'Invalid adapter argument',\n // PLAN-5 2-R (G-383, G-387)\n SYG668: 'Browser source has no element to observe',\n // PLAN-5 2-T (G-410): Sygnal components / widget tags / special JSX inside a fromZag render\n SYG669: 'Sygnal component inside a fromZag render',\n // PLAN-4 GS-3: a11y lane (static only, sygnal-check)\n SYG701: 'Click listener on a non-interactive element',\n SYG702: 'Form field without an accessible label',\n SYG703: 'Image without alt text',\n SYG704: 'Link without href used as a button',\n SYG705: 'Button without an accessible name',\n SYG706: 'Positive tabIndex',\n SYG707: 'Unknown ARIA attribute or invalid role',\n SYG708: 'Label or ARIA reference to an id that is not rendered',\n // PLAN-5 2-T (D211): Zag UI parts (sygnal-check rules/a11y/syg722-ui-name.js)\n SYG722: 'Menu, Select or Combobox without an accessible name',\n // PLAN-5 B-1 (3-D): static only (sygnal-check)\n SYG724: 'Sortable handle not keyboard-accessible, or no live region',\n SYG901: \"Retired in 6.0: Sub-component sink stream errored\",\n SYG902: \"Retired in 6.0: EFFECT stream errored\",\n SYG903: \"Retired in 6.0: Component factory returned invalid sinks\",\n // ---- end 1E retrofit codes ----\n}\n\n// 2A: strict-mode (SYG5xx) default severities. Kept OUT of CODE_SEVERITY so the\n// main bundle doesn't carry them (D29: zero bytes); the 'sygnal/diagnostics'\n// entry registers them (registerCodes) and its reports pass the severity\n// explicitly. sygnal-check keeps the same table in sygnal-check/src/codes.js.\nexport const STRICT_CODE_SEVERITY: Record<string, DiagnosticSeverity> = {\n SYG501: 'error',\n SYG502: 'warn',\n SYG503: 'warn',\n SYG504: 'error',\n SYG505: 'warn',\n SYG506: 'error',\n SYG507: 'info',\n SYG508: 'warn',\n}\n\n// PLAN-3 1-G (G-143): codes only the 'sygnal/diagnostics' dev entry reports. Like the strict\n// table, kept OUT of CODE_SEVERITY (zero bytes in the main bundle); the entry registers them\n// and passes the severity explicitly.\n// PLAN-3 1-D: SYG112 (a reply action has no model entry) too.\n// PLAN-3 2-A: SYG611 too, though makeSocketDriver reports it (legacy error(), severity passed\n// explicitly): kept out of CODE_SEVERITY so the core bundle doesn't pay for an opt-in driver.\nexport const DEV_CODE_SEVERITY: Record<string, DiagnosticSeverity> = {\n SYG112: 'error',\n SYG115: 'warn',\n SYG116: 'error',\n // PLAN-4 1-D: controls, static (sygnal-check)\n SYG124: 'error',\n SYG125: 'error',\n SYG126: 'info',\n // PLAN-4 GS-1: behaviors (checks/behaviors.ts)\n SYG127: 'error',\n SYG128: 'error',\n // PLAN-4 4-G2: static only (sygnal-check); listed so the entry knows its title\n SYG129: 'warn',\n SYG221: 'error',\n // PLAN-4 GS-4 (state.ts)\n SYG222: 'warn',\n // PLAN-4 GS-5 (checks/persist.ts; sygnal-check statically)\n SYG223: 'warn',\n SYG224: 'error',\n // PLAN-4 GS-8 (undo.ts reports it when diagnostics are on; sygnal-check statically)\n SYG226: 'warn',\n // PLAN-5 F-1: the form behavior (checks/forms.ts; form.ts calls the bridge's form hook)\n SYG230: 'warn',\n SYG231: 'error',\n SYG232: 'info',\n SYG233: 'warn',\n SYG234: 'warn',\n SYG235: 'warn',\n SYG236: 'warn',\n SYG237: 'warn',\n SYG238: 'warn',\n SYG421: 'error',\n SYG611: 'error',\n // PLAN-3 5-4b: router (SYG620 is reported by the router itself, like SYG611) and G-167\n SYG130: 'error',\n SYG131: 'warn',\n SYG132: 'warn',\n SYG133: 'warn',\n SYG620: 'error',\n // PLAN-3 5-3 (fetch.ts)\n SYG630: 'warn',\n SYG631: 'error',\n SYG632: 'info',\n SYG633: 'warn',\n // static only (sygnal-check); listed so the entry knows its title\n SYG634: 'info',\n // PLAN-3 5-5 (fetch.ts)\n SYG635: 'warn',\n // PLAN-4 GS-2 (checks/elementCommands.ts, through the core bridge; renderComponent too)\n SYG640: 'warn',\n SYG641: 'error',\n // PLAN-4 GS-5 (persist.ts, through legacy warn(): printed in production too)\n SYG642: 'warn',\n // PLAN-4 GS-7 (timers.ts): an invalid timer spec (not started); timers / connections /\n // resources declared with no driver registered\n SYG422: 'error',\n SYG643: 'warn',\n // PLAN-4.6 R4 (checks/next.ts): D168 context-tracking safety net, D169 duplicate ids, D174 kept\n // slice, D173 removed forms\n SYG423: 'warn',\n SYG424: 'warn',\n SYG425: 'warn',\n SYG612: 'error',\n // PLAN-4 D131 (element.ts, through the core bridge; a console warning in dev with diagnostics off)\n SYG644: 'warn',\n // PLAN-4 GS-12 (viewTransitions.ts): the static set, but the app's DOM driver isn't makeViewTransitionDOMDriver()\n SYG645: 'warn',\n // PLAN-5 W-1: widgets (checks/widgets.ts, checks/elementCommands.ts; SYG141 static only, listed\n // so the entry knows its title)\n SYG140: 'warn',\n SYG141: 'warn',\n SYG142: 'error',\n SYG143: 'warn',\n SYG144: 'info',\n // PLAN-5 B-1 (3-D): the sortable behavior (checks/sortable.ts)\n SYG145: 'warn',\n SYG146: 'warn',\n SYG147: 'warn',\n // PLAN-5 3-F G-419 (checks/next.ts: onHostProps, onPatch)\n SYG148: 'warn',\n SYG149: 'warn',\n SYG660: 'error',\n SYG661: 'error',\n SYG662: 'error',\n SYG663: 'error',\n SYG664: 'error',\n SYG665: 'warn',\n SYG666: 'error',\n SYG667: 'error',\n SYG668: 'warn',\n SYG669: 'warn',\n // PLAN-5 V-1: VirtualCollection (checks/virtual.ts, through the core bridge)\n SYG430: 'warn',\n SYG431: 'warn',\n SYG432: 'warn',\n SYG433: 'warn',\n SYG434: 'warn',\n // PLAN-5 3-H (G-449): sortable (checks/sortable.ts)\n SYG435: 'warn',\n // PLAN-4 GS-3: a11y lane, static only (sygnal-check; warn, also under --strict; error with --a11y=error, D144); listed so the entry knows its title\n SYG701: 'warn',\n SYG702: 'warn',\n SYG703: 'warn',\n SYG704: 'warn',\n SYG705: 'warn',\n SYG706: 'warn',\n SYG707: 'warn',\n SYG708: 'warn',\n SYG722: 'warn',\n // PLAN-5 B-1 (3-D): static only (sygnal-check)\n SYG724: 'warn',\n}\n\nexport function getCodeInfo(code: string): DiagnosticCodeInfo | undefined {\n const severity = CODE_SEVERITY[code]\n return severity && { code, severity, title: CODE_TITLES[code] || '', docsSlug: code.toLowerCase() }\n}\n\nexport function listCodes(): DiagnosticCodeInfo[] {\n return Object.keys(CODE_SEVERITY).map(c => getCodeInfo(c)!)\n}\n\nexport function registerCodes(entries: Array<[string, DiagnosticSeverity, string]>): void {\n for (const [code, severity, title] of entries) {\n CODE_SEVERITY[code] = severity\n CODE_TITLES[code] = title\n }\n}\n\nexport function docsUrlFor(code: string): string {\n return `${DOCS_BASE_URL}/reference/errors#${code.toLowerCase()}`\n}\n","/**\n * Sygnal diagnostics core.\n *\n * ===========================================================================\n * FROZEN INTERFACE (PLAN-1 workstream 0B). Changes after the 0B merge go\n * through the coordinator. Later workstreams add checks (registerCheck) and\n * codes (./codes.ts, inside their reserved range) — they do not change these\n * signatures.\n * ===========================================================================\n *\n * --- Reporting ------------------------------------------------------------\n *\n * report(code: string, details: {\n * component?: string | { name?: string } // component name or instance\n * message: string // what is wrong\n * fix?: string // how to fix it\n * data?: any // structured payload\n * severity?: 'error' | 'warn' | 'info' // override the code's default\n * }): Diagnostic | undefined\n *\n * - mode 'off' → no-op, returns undefined (nothing collected/printed)\n * - code in ignore list → no-op, returns undefined\n * - mode 'collect' → collected, no console output\n * - mode 'warn' → collected; 'warn' → console.warn, 'error' → console.error,\n * 'info' → collected only\n * - mode 'error' → collected; 'warn'/'error' severities throw a\n * DiagnosticError (err.diagnostic holds the Diagnostic);\n * 'info' collected only. Called directly this throws\n * synchronously; raised during a hook (i.e. from a\n * check) it is rethrown asynchronously — see Hooks.\n *\n * `diagnostic.text` is formatted lazily (getter) on first read.\n *\n * formatDiagnostic(code, details): string\n * → `[Sygnal SYG123] <Component>: <message>. <fix> <docsUrl>`\n * (works in every mode; for call sites that must keep printing in 'off')\n *\n * getDiagnostics(): Diagnostic[] // copy of the collected list\n * clearDiagnostics(): void\n * onDiagnostic(cb: (d: Diagnostic) => void): () => void // returns unsubscribe\n *\n * --- Configuration --------------------------------------------------------\n *\n * configureDiagnostics({ mode?: DiagnosticsMode | undefined, ignore?: string[] }): void\n * getDiagnosticsMode(): 'off' | 'collect' | 'warn' | 'error'\n * isDiagnosticsEnabled(): boolean\n *\n * Mode resolution — first defined wins:\n * 1. explicit mode: run(App, drivers, { diagnostics }) or configureDiagnostics({ mode })\n * 2. globalThis.__SYGNAL_DEV__ (=== true → 'warn'; injected by the Vite plugin in serve)\n * 3. 'off'\n * The mode is resolved at module load, on every run() call and on every\n * configureDiagnostics() call. `configureDiagnostics({ mode: undefined })`\n * clears the explicit mode and falls back to steps 2-3.\n * A run() call with the `diagnostics` option sets both the explicit mode and\n * the ignore list from it. run() WITHOUT the option resets them to the\n * defaults (no explicit mode, empty ignore list), so a setting from an earlier\n * run()/configureDiagnostics() does not leak in, unless another app is still\n * running (G-212: a second app or a custom element keeps the host's mode).\n *\n * --- Checks ---------------------------------------------------------------\n *\n * registerCheck(check: DiagnosticCheck): () => void // returns unregister\n *\n * interface DiagnosticCheck {\n * id: string\n * onIntent?(component, actionNames: string[], selectorsUsed: string[] | undefined): void\n * onModel?(component, modelMap: Record<string, string[]>): void\n * onRender?(component, rootVnode: any): void\n * onReducer?(component, action: string, prevState: any, nextState: any, sinkName: string): void\n * onDispose?(component): void\n * }\n *\n * A check that throws (other than a DiagnosticError from 'error' mode) is\n * isolated: the exception is reported as SYG900 and other checks still run.\n *\n * --- Hooks (dispatched by checks/next.ts from the core's hook layer) ----\n *\n * onIntent(component, actionNames, selectorsUsed?)\n * after intent is built. actionNames = keys of the intent object ([] for a\n * single-stream intent). selectorsUsed is currently always undefined —\n * TODO(1A): collect via MainDOMSource.select instrumentation in src/cycle/dom.\n * onModel(component, modelMap)\n * after the model is normalized; modelMap = action → sink names, shorthand\n * ('A | SINK') expanded, plain functions mapped to the state sink,\n * includes built-ins such as INITIALIZE.\n * onRender(component, rootVnode)\n * after each render of the component (fully injected vnode, before the DOM\n * driver patches it; `rootVnode.elm` is populated after the patch, so DOM\n * checks should defer, e.g. with a microtask/timeout).\n * onReducer(component, action, prevState, nextState, sinkName)\n * after each STATE reducer returns (not for ABORT, not when the reducer\n * throws). nextState is the raw reducer return value (before calculated\n * field cleanup). Currently only fired for the state sink; sinkName is the\n * component's state source name.\n * onDispose(component)\n * at the start of component disposal.\n *\n * onSelector(domSource, selector) (additive, 1A)\n * from MainDOMSource.select() in src/cycle/dom, for every CSS selector\n * (not 'document' / 'body' / ':root'). domSource is the source select()\n * was called on (its `.namespace` holds the isolation scopes and any\n * earlier selectors; `._isolateModule` the DOM driver's isolate module).\n * onBusEmit(type, emitterName?) (additive, 1A)\n * from the EVENTS driver (src/extra/eventDriver.ts) for every bus event.\n * onBusSelect(type) (additive, 1A)\n * from EVENTS.select(type); type is the raw argument (string, string[]\n * or undefined for \"all events\").\n *\n * Checks live in the separate 'sygnal/diagnostics' entry\n * (src/extra/diagnostics/checks). That bundle reaches THIS module instance\n * through globalThis.__SYGNAL_DIAGNOSTICS__ = { registerCheck, report }\n * (set below), so it never carries a second copy of the core state.\n *\n * onIntent and onModel are each called exactly once per component instance,\n * in that order, during construction (also when the component has no\n * intent → actionNames [], or no model → modelMap {}).\n *\n * `component` is the internal Component instance (stable identity per\n * instance; `.name` is the component name).\n *\n * In mode 'off' a hook only runs the checks registered with `always: true`\n * (internal: renderComponent's own bookkeeping, R2-3); none are registered\n * in an app, so the hooks do nothing.\n *\n * Hooks NEVER throw synchronously into Sygnal's stream pipeline (a throw\n * there would kill the state/view stream for good). Every exception from a\n * check is caught. In 'error' mode a DiagnosticError raised during a hook —\n * by a check's report() call, or by the SYG900 report for a check that\n * threw a plain Error — is rethrown ASYNCHRONOUSLY (queueMicrotask, falling\n * back to setTimeout), so test runners still see an uncaught error while\n * the app's streams keep running. The remaining checks still run.\n * `_setAsyncThrow(fn?)` replaces the async rethrow (test seam; no argument\n * restores the default; `_resetDiagnostics()` also restores it).\n *\n * (This comment is attached to the type-only import below so the TypeScript\n * emit drops it — keeps it out of the published bundle and the size gate.)\n */\nimport type { DiagnosticSeverity } from './codes'\nimport { CODE_SEVERITY, docsUrlFor } from './codes'\n\n\nexport type DiagnosticsMode = 'off' | 'collect' | 'warn' | 'error'\n\nexport interface DiagnosticDetails {\n component?: string | { name?: string }\n message: string\n fix?: string\n data?: any\n severity?: DiagnosticSeverity\n}\n\nexport interface Diagnostic {\n code: string\n severity: DiagnosticSeverity\n component?: string\n message: string\n fix?: string\n data?: any\n docsUrl: string\n text: string\n timestamp: number\n}\n\nexport interface DiagnosticsOptions {\n mode?: DiagnosticsMode\n ignore?: string[]\n}\n\nexport interface DiagnosticCheck {\n id: string\n /** internal: also runs when diagnostics are 'off' (renderComponent's harness hooks) */\n always?: boolean\n onIntent?: (component: any, actionNames: string[], selectorsUsed: string[] | undefined) => void\n onModel?: (component: any, modelMap: Record<string, string[]>) => void\n onRender?: (component: any, rootVnode: any) => void\n onReducer?: (component: any, action: string, prevState: any, nextState: any, sinkName: string) => void\n onDispose?: (component: any) => void\n onSelector?: (domSource: any, selector: string) => void\n onBusEmit?: (type: string, emitterName?: string) => void\n onBusSelect?: (type: string | string[] | undefined) => void\n /**\n * (additive, PLAN-2 E2) Called before a component's intent runs. May return a replacement\n * for `sources` (e.g. a Proxy that reports or fakes a source with no driver); the intent\n * gets the last one returned. See sourcesFor().\n */\n sources?: (component: any, sources: any) => any\n}\n\nexport class DiagnosticError extends Error {\n diagnostic: Diagnostic\n constructor(diagnostic: Diagnostic) {\n super(diagnostic.text)\n this.diagnostic = diagnostic\n }\n}\n\nlet explicitMode: DiagnosticsMode | undefined\nlet mode: DiagnosticsMode = 'off'\nlet enabled = false\nlet ignored = new Set<string>()\nlet collected: Diagnostic[] = []\nlet listeners: Array<(d: Diagnostic) => void> = []\nlet checks: DiagnosticCheck[] = []\n\nexport function resolveDiagnosticsMode(): DiagnosticsMode {\n mode = explicitMode || ((globalThis as any).__SYGNAL_DEV__ === true ? 'warn' : 'off')\n enabled = mode !== 'off'\n return mode\n}\n\nexport function configureDiagnostics(options: DiagnosticsOptions = {}): void {\n if ('mode' in options) explicitMode = options.mode\n if (options.ignore) ignored = new Set(options.ignore)\n resolveDiagnosticsMode()\n}\n\n/** Internal: the explicit configuration (not the resolved mode), so it can be restored exactly. */\nexport function _getDiagnosticsConfig(): { mode: DiagnosticsMode | undefined, ignore: string[] } {\n return { mode: explicitMode, ignore: [...ignored] }\n}\n\nexport function getDiagnosticsMode(): DiagnosticsMode {\n return mode\n}\n\nexport function isDiagnosticsEnabled(): boolean {\n return enabled\n}\n\nconst nameOf = (c: DiagnosticDetails['component']) => (c && typeof c === 'object' ? c.name : c) || undefined\nconst sentence = (s: string) => /[.!?]$/.test(s) ? s : s + '.'\n\nexport function formatDiagnostic(code: string, details: DiagnosticDetails): string {\n const name = nameOf(details.component)\n return `[Sygnal ${code}] ${name ? name + ': ' : ''}${sentence(details.message)}` +\n (details.fix ? ' ' + sentence(details.fix) : '') + ' ' + docsUrlFor(code)\n}\n\nexport function report(code: string, details: DiagnosticDetails): Diagnostic | undefined {\n if (!enabled || ignored.has(code)) return\n const severity = details.severity || CODE_SEVERITY[code] || 'warn'\n const d: Diagnostic = {\n code,\n severity,\n component: nameOf(details.component),\n message: details.message,\n fix: details.fix,\n data: details.data,\n docsUrl: docsUrlFor(code),\n get text() { return formatDiagnostic(code, this) },\n timestamp: Date.now(),\n }\n if (collected.push(d) > 500) collected.shift()\n listeners.forEach(cb => { try { cb(d) } catch (_) {} })\n if (severity !== 'info') {\n if (mode === 'error') throw new DiagnosticError(d)\n if (mode === 'warn') console[severity](d.text)\n }\n return d\n}\n\nexport function getDiagnostics(): Diagnostic[] {\n return collected.slice()\n}\n\nexport function clearDiagnostics(): void {\n collected = []\n}\n\nexport function onDiagnostic(cb: (d: Diagnostic) => void): () => void {\n listeners = [...listeners, cb]\n return () => { listeners = listeners.filter(l => l !== cb) }\n}\n\nexport function registerCheck(check: DiagnosticCheck): () => void {\n checks = [...checks, check]\n return () => { checks = checks.filter(c => c !== check) }\n}\n\ntype HookName = Exclude<keyof DiagnosticCheck, 'id'>\n\nconst defaultAsyncThrow = (err: any): void => {\n const raise = () => { throw err }\n typeof queueMicrotask === 'function' ? queueMicrotask(raise) : setTimeout(raise)\n}\nlet asyncThrow = defaultAsyncThrow\n\n/** Test seam: replace the async rethrow used for 'error'-mode diagnostics raised in hooks. */\nexport function _setAsyncThrow(fn?: (err: any) => void): void {\n asyncThrow = fn || defaultAsyncThrow\n}\n\nconst hook = (name: HookName) => (component: any, ...args: any[]): void => {\n for (const check of checks) {\n if (!enabled && !check.always) continue\n try {\n (check[name] as any)?.(component, ...args)\n } catch (err: any) {\n // Never throw into the stream pipeline: 'error'-mode diagnostics (also a\n // SYG900 escalated by 'error' mode) are rethrown asynchronously.\n try {\n if (err instanceof DiagnosticError) throw err\n report('SYG900', {\n component,\n message: `Diagnostics check '${check.id}' threw in ${name}: ${err?.message}`,\n data: { check: check.id, hook: name, error: err },\n })\n } catch (e) {\n asyncThrow(e)\n }\n }\n }\n}\n\nexport const onIntent: (component: any, actionNames: string[], selectorsUsed?: string[]) => void = hook('onIntent')\nexport const onModel: (component: any, modelMap: Record<string, string[]>) => void = hook('onModel')\nexport const onRender: (component: any, rootVnode: any) => void = hook('onRender')\nexport const onReducer: (component: any, action: string, prevState: any, nextState: any, sinkName: string) => void = hook('onReducer')\nexport const onDispose: (component: any) => void = hook('onDispose')\nexport const onSelector: (domSource: any, selector: string) => void = hook('onSelector')\nexport const onBusEmit: (type: string, emitterName?: string) => void = hook('onBusEmit')\nexport const onBusSelect: (type: string | string[] | undefined) => void = hook('onBusSelect')\n\n/**\n * (PLAN-2 E2) The sources object a component's intent is called with: `component.sources`,\n * wrapped by every active check with a `sources` hook (the dev entry's SYG609 check,\n * renderComponent's fake sources). Without such a check it is `component.sources` itself.\n */\nexport function sourcesFor(component: any): any {\n let s = component.sources\n for (const check of checks) {\n if (!check.sources || (!enabled && !check.always)) continue\n try { s = check.sources(component, s) || s } catch (_) {}\n }\n return s\n}\n\n// Bridge for the separately bundled 'sygnal/diagnostics' checks entry.\n// PLAN-4.6 R4: the hook dispatchers too, for the dev entry's core adapter (checks/next.ts)\n;(globalThis as any).__SYGNAL_DIAGNOSTICS__ = { registerCheck, report, hooks: { onIntent, onModel, onRender, onReducer, onDispose, sourcesFor, on: isDiagnosticsEnabled } }\n\nexport function _resetDiagnostics(): void {\n explicitMode = undefined\n ignored = new Set()\n collected = []\n listeners = []\n checks = []\n asyncThrow = defaultAsyncThrow\n resolveDiagnosticsMode()\n}\n\nresolveDiagnosticsMode()\n","/**\n * Coded console output for Sygnal's pre-existing warnings and errors\n * (PLAN-1 workstream 1E).\n *\n * warn(code, component, message, fix?, extra?)\n * error(code, component, message, fix?, extra?)\n * fail(code, component, message, fix?): never\n *\n * `component` is a component instance (anything with `.name`), a name string,\n * or undefined. `extra` (an Error, the offending value, ...) is passed to the\n * console after the formatted text, as the old messages did.\n *\n * Unlike report(), warn()/error() keep printing when diagnostics are 'off',\n * so production apps see the same messages as before (now with a code):\n * - 'off' → console.warn/error(formatDiagnostic(...), extra?)\n * - 'collect' → report(): collected; error severity is also printed with\n * console.error (so exceptions stay visible in tests), warn isn't\n * - 'warn' → report(): collected and printed once by report(); `extra`\n * (e.g. the caught Error with its stack) printed after it\n * - 'error' → report() throws a DiagnosticError; it is rethrown\n * asynchronously so the stream pipeline that hit the problem\n * keeps running (same contract as the hooks in ./index)\n * - code in the ignore list → nothing printed\n *\n * fail() always throws an Error whose message is the formatted text and whose\n * `.code` is the diagnostic code. It does not go through report(): the throw\n * itself is the signal, in every mode.\n *\n * A call site that catches an exception and keeps running reports it with the\n * core's caught() (src/core/runtime.ts: an error thrown by fail() under ITS code,\n * G-027 / G-044), then the app's onError hook (callHook, PLAN-4 GS-11).\n *\n * `error` is also published on the core bridge\n * (globalThis.__SYGNAL_DIAGNOSTICS__.error) for the separately bundled JSX\n * runtime (SYG420).\n *\n * (This comment is attached to the type-only import below so the TypeScript\n * emit drops it.)\n */\nimport type { DiagnosticSeverity } from './codes'\nimport { report, formatDiagnostic, getDiagnosticsMode } from './index'\n\nconst emit = (severity: Extract<DiagnosticSeverity, 'warn' | 'error'>) =>\n (code: string, component: any, message: string, fix?: string, ...extra: any[]): void => {\n const details = { component, message, fix, severity, data: extra[0] }\n const mode = getDiagnosticsMode()\n if (mode === 'off') {\n console[severity](formatDiagnostic(code, details), ...extra)\n return\n }\n try {\n const d = report(code, details)\n if (d && mode === 'collect' && severity === 'error') console.error(d.text, ...extra)\n else if (d && mode === 'warn' && extra.length) console[severity](...extra)\n } catch (err) {\n setTimeout(() => { throw err })\n }\n }\n\nexport const warn = emit('warn')\nexport const error = emit('error')\n\nexport function fail(code: string, component: any, message: string, fix?: string): never {\n const err: any = new Error(formatDiagnostic(code, { component, message, fix }))\n err.code = code\n err.sygnal = [component, message, fix]\n throw err\n}\n\n// PLAN-4 GS-11: the app's error hook (run(App, drivers, { onError })), reporting only (each app\n// has its own). A throwing hook is logged once and swallowed\nexport const callHook = (hook: any, err: any, info: any): void => {\n try { hook && hook(err, info) } catch (e) { console.error(e) }\n}\n\n;(globalThis as any).__SYGNAL_DIAGNOSTICS__.error = error\n","/**\n * PLAN-4.6 core: teardown without timers (D165 / Q18). xstream stops a stream left without\n * listeners in a setTimeout of its own (1-2k timers to unmount 1k components). While an instance\n * unsubscribes (tearDown), Stream.prototype._remove queues such a stream instead (_stopID 0: an\n * _add before the stop cancels it, as xstream's clearTimeout would), and stopQueued() stops the\n * queue at the first macrotask after the drain / flush (G-302: xstream's timing; the runtime's\n * setImmediate / MessageChannel ping, no setTimeout). The swap is scoped to the call (PLAN-4.5's\n * tearDown, narrowed; R5 deleted the 5.x core's permanent one).\n */\nimport xs from '../extra/xstreamCompat'\n\n// G-315: probed on first use (a top-level probe would survive the D175 strip of production builds)\nlet SP: any, NO: any, down: any[] | null = null, outer: any, owner: any\n// G-342/G-267: the instance a queued stream was left by (its stop() error is reported for it)\nconst owners = new WeakMap<object, any>()\nconst probe = () => { if (!SP) { const s: any = xs.create(); SP = Object.getPrototypeOf(s); NO = s._prod } }\n\nfunction removeQueued(this: any, il: any) {\n if (this._target) return this._target._remove(il)\n const a = this._ils, i = a.indexOf(il)\n if (i < 0) return\n a.splice(i, 1)\n if (this._prod !== NO && !a.length) { this._err = NO; this._stopID = 0; down!.push(this); if (owner) owners.set(this, owner) }\n else if (a.length == 1) this._pruneCycles()\n}\n\n/** run f with _remove queuing into q (nested calls share the outermost swap); `by`: the instance */\nexport function tearDown(f: () => void, q: any[], by?: any) {\n probe()\n const prev = down, prevBy = owner\n if (!prev) { outer = SP._remove; SP._remove = removeQueued }\n down = q\n if (by) owner = by\n try { f() } finally { down = prev; owner = prevBy; if (!prev) SP._remove = outer }\n}\n\n/**\n * stop the queued streams; a stop that leaves its upstream without listeners queues it here too.\n * A throwing stop() (a producer's) stops nothing else from stopping; G-342/G-267: it is reported\n * through `err` (with the instance that left the stream), not swallowed\n */\nexport function stopQueued(q: any[], err?: (e: any, by: any) => void) {\n probe()\n for (let i = 0; i < q.length; i++) {\n const s = q[i]\n if (s._stopID === 0 && !s._ils.length) {\n s._stopID = NO\n const by = owners.get(s)\n tearDown(() => { if (s._prod !== NO) try { s._stopNow() } catch (e) { err?.(e, by) } }, q, by)\n }\n }\n q.length = 0\n}\n\n/** the instance behind an intent's sources object (the source getters read it) */\nexport const INST = /*#__PURE__*/ Symbol('sygnal.inst')\n/** the queue's action type for a state write (runtime setState, a child's seeded slice) */\nexport const SET = /*#__PURE__*/ Symbol('setState')\n/** a child's seeded slice (D174), written even when it reads its initialState as the default */\nexport const SEED = /*#__PURE__*/ Symbol('seed')\n","/**\n * PLAN-4.6 core: definitions, normalized once per component function (03-proposal §1.4).\n *\n * defOf(view) reads the component's statics into a DefSource, runs the definition hooks on it\n * (registry.defHooks, then an app's transformDef), and normalizes it into a Def:\n * - model -> Map<action, [sink, handler][]> in model order (a function entry is STATE); the sinks\n * used; INITIALIZE keeps only STATE (SYG210)\n * - calculated: fn | [deps, fn], Kahn order; SYG206 (invalid entry) and SYG209 (cycle, with its\n * path) are thrown here; SYG207 / SYG208 warn\n * - context entries (functions of the state; anything else is SYG403 and skipped)\n * - isolatedState, READY presence, onError, name\n *\n * The removed forms (D162-D164: 'A | S' keys, string/true context entries, `.components`, ...)\n * are not read. The cache is a WeakMap per function; an app with its own transformDef keeps its\n * own cache (the hook is per app).\n */\nimport type {ComponentFn, Def, DefSource, Handler} from './hooks'\nimport {defHooks} from './registry'\nimport {fail, warn, error as logError} from '../extra/diagnostics/legacy'\n\nexport type Calc = [field: string, fn: (s: any) => any, deps: string[] | null]\n\nexport interface CoreDef extends Def {\n readonly handlers: Map<string, Handler[]>\n readonly sinks: Set<string>\n readonly calculated: Calc[] | null\n /** the calculated field names (a child bound to one can't write it: SYG409) */\n readonly calcNames: Set<string> | null\n /** the model has a READY entry: the instance starts not ready */\n readonly ready: boolean\n /** the definition has a model (a root without one renders from `initialState || true`) */\n readonly model: boolean\n}\n\nexport const isObj = (o: any): o is Record<string, any> => o !== null && typeof o == 'object' && !Array.isArray(o)\n\n/** a component function's name (the removed `.label` is not read, D164) */\nexport const nameOf = (view: any): string => view.componentName || view.name || 'FUNCTION_COMPONENT'\n\nfunction normCalc(name: string, calculated: any, initialState: any): [Calc[], Set<string>] | null {\n if (!calculated) return null\n if (!isObj(calculated)) fail('SYG606', name, 'calculated must be an object', 'Use calculated = { field: state => value }')\n const norm: Record<string, [any, string[] | null]> = {}\n for (const f in calculated) {\n const e = calculated[f]\n if (typeof e == 'function') norm[f] = [e, null]\n else if (Array.isArray(e) && e.length == 2 && Array.isArray(e[0]) && typeof e[1] == 'function') norm[f] = [e[1], e[0]]\n else fail('SYG206', name, `Invalid calculated field '${f}'`, 'Use fn or [deps, fn]')\n if (isObj(initialState) && f in initialState) warn('SYG207', name, `Calculated field '${f}' overwrites the initialState key of the same name`, 'Rename one of them')\n }\n const names = new Set(Object.keys(norm))\n // Kahn: per field the calculated fields it waits for, and its dependents\n const deps: Record<string, string[]> = {}, waiting: Record<string, number> = {}, dependents: Record<string, string[]> = {}\n for (const f of names) {\n for (const d of norm[f][1] || []) {\n if (!names.has(d) && initialState && !(d in initialState)) warn('SYG208', name, `Calculated field '${f}' depends on unknown key '${d}'`, 'Add it to initialState')\n }\n const d = deps[f] = (norm[f][1] || []).filter(x => names.has(x))\n waiting[f] = d.length\n dependents[f] ||= []\n for (const x of d) (dependents[x] ||= []).push(f)\n }\n const sorted = [...names].filter(f => !waiting[f])\n for (let i = 0; i < sorted.length; i++) for (const d of dependents[sorted[i]]) if (!--waiting[d]) sorted.push(d)\n if (sorted.length != names.size) {\n const inCycle = [...names].filter(f => !sorted.includes(f)), path: string[] = []\n const trace = (n: string): boolean => {\n if (path.includes(n)) return path.push(n), true\n path.push(n)\n if (deps[n].some(d => inCycle.includes(d) && trace(d))) return true\n path.pop()\n return false\n }\n trace(inCycle[0])\n const start = path[path.length - 1]\n fail('SYG209', name, `Circular calculated dependency: ${path.slice(path.indexOf(start)).join(' → ')}`, 'Break the cycle')\n }\n return [sorted.map(f => [f, norm[f][0], norm[f][1]] as Calc), names]\n}\n\n/** the statics a definition hook may edit, read from the component function */\nexport const sourceOf = (view: ComponentFn): DefSource => ({\n model: view.model, intent: view.intent, initialState: view.initialState, idle: null,\n calculated: view.calculated, context: view.context, behaviorActions: {},\n})\n\n/**\n * The definition shim (spike finding 5): the instance fields a behavior's existing\n * `merge(component, key)` reads and writes, so behaviors / undo / selection run unchanged, once\n * per function. `isSubComponent: true` sends a slice to `_idle` (the defaults a bound\n * sub-component reads until it writes them); an `isolatedState` definition gets it in its\n * initialState, as today. A root gets the slices in its initialState (rootDef). fromShim()\n * reads the result back.\n */\nexport const shimOf = (src: DefSource, view: ComponentFn): any => ({\n model: src.model, intent: src.intent, initialState: src.initialState, view, name: nameOf(view),\n stateSourceName: 'STATE', isSubComponent: true, isolatedState: !!view.isolatedState, _idle: src.idle, _behaviorActions: src.behaviorActions,\n})\nexport const fromShim = (shim: any, src: DefSource): DefSource => ({\n ...src, model: shim.model, intent: shim.intent, initialState: shim.initialState,\n idle: shim._idle, behaviorActions: shim._behaviorActions || src.behaviorActions,\n})\n\n/** the built-in RESOURCE reducer (a model RESOURCE entry replaces it) */\nconst RESOURCE = (s: any, {name, ...r}: any) => ({...s, [name]: r})\n\n/**\n * The definition-time built-ins, in the 5.x core's order: `resources` (PLAN-3\n * 3-A: the RESOURCE entry first in the model; each resource reads `{ status: 'idle' }` until\n * written), then `uses` (GS-1: each behavior's own merge() on the shim, D114; the core only\n * loops over `uses`).\n */\nfunction builtIns(src: DefSource, view: ComponentFn): DefSource {\n const res = view.resources\n if (res) {\n const idle: Record<string, any> = {...src.idle}\n for (const k in res) idle[k] = {status: 'idle'}\n src = {...src, model: {RESOURCE, ...src.model}, idle}\n }\n const uses = view.uses\n if (uses) {\n const shim = shimOf(src, view)\n for (const k in uses) uses[k]?.merge?.(shim, k)\n src = fromShim(shim, src)\n }\n return src\n}\n\nexport function normalize(view: ComponentFn, src: DefSource): CoreDef {\n const name = nameOf(view)\n const handlers = new Map<string, Handler[]>(), sinks = new Set<string>()\n const model = src.model\n for (const key in model || {}) {\n let e = model![key]\n if (typeof e == 'function') e = {STATE: e}\n else if (!isObj(e)) fail('SYG212', name, `Model entry '${key}' must be a function or an object`, 'Use { STATE: reducer }')\n if (key == 'INITIALIZE') {\n for (const s in e) if (s != 'STATE') warn('SYG210', name, `INITIALIZE only supports the STATE sink; ignoring '${s}'`, 'Use another action')\n if (!('STATE' in e)) continue\n e = {STATE: e.STATE}\n }\n const list: Handler[] = []\n for (const sink in e) list.push([sink, e[sink]]), sinks.add(sink)\n handlers.set(key, list)\n }\n const c = normCalc(name, src.calculated, src.initialState)\n let context: Array<[string, (s: any) => any]> | null = null\n if (src.context !== undefined && src.context !== null) {\n if (!isObj(src.context)) logError('SYG402', name, `context must be an object, got ${typeof src.context}; ignoring it`, 'Use context = { name: state => value }')\n else {\n context = []\n for (const k in src.context) {\n const f = src.context[k]\n if (typeof f == 'function') context.push([k, f])\n else logError('SYG403', name, `Invalid context entry '${k}' (a ${typeof f}); skipping it`, 'Context entries are functions of state only: { name: state => value }. See https://sygnal.js.org/guide/migrating-to-6#leftovers')\n }\n }\n }\n const intent = src.intent\n if (intent !== undefined && typeof intent != 'function') fail('SYG602', name, 'intent must be a function', 'Use intent = sources => ({ ACTION: stream$ })')\n return {\n name, view, intent, handlers, sinks,\n initialState: src.initialState,\n idle: src.idle,\n isolated: !!view.isolatedState,\n calculated: c && c[0], calcNames: c && c[1],\n context: context && context.length ? context : null,\n statics: [],\n behaviorActions: src.behaviorActions,\n ready: sinks.has('READY'),\n model: model !== undefined,\n onError: typeof view.onError == 'function' ? view.onError : undefined,\n }\n}\n\nconst defs = new WeakMap<ComponentFn, CoreDef>()\n/**\n * the statics a Def was made from: a later assignment (a test, a hot edit) makes a new Def; so\n * does a definition hook registered since (G-383: the browser driver's, added when the first one\n * is made, binds a `browser` declarer's DOM), the last entry of the snapshot\n */\nconst KEYS = ['model', 'intent', 'initialState', 'calculated', 'context', 'isolatedState', 'onError', 'componentName', 'uses', 'resources', 'browser']\nconst read = new WeakMap<CoreDef, any[]>()\nconst stale = (d: CoreDef, view: any) => {\n const r = read.get(d)!\n for (let i = 0; i < KEYS.length; i++) if (r[i] !== view[KEYS[i]]) return true\n return r[KEYS.length] !== defHooks.length\n}\n\n/**\n * The Def of a component function. `transform`: an app's own transformDef (its Defs are cached\n * in `cache`, not shared); `override`: renderComponent's root (test intent, initial state, name),\n * normalized uncached.\n */\nexport function defOf(view: ComponentFn, transform?: (src: DefSource, view: ComponentFn) => DefSource | void, cache?: WeakMap<ComponentFn, CoreDef>, override?: Partial<DefSource> & {name?: string}): CoreDef {\n const store = transform ? cache! : defs\n let d = override ? undefined : store.get(view)\n if (d && !stale(d, view)) return d\n const r = [...KEYS.map(k => view[k]), defHooks.length]\n d = normalize(view, pipeline(view, transform, override))\n if (override?.name) (d as any).name = override.name\n if (!override) store.set(view, d), read.set(d, r)\n return d\n}\n\ntype Transform = ((src: DefSource, view: ComponentFn) => DefSource | void) | undefined\n\n/** the statics, through the built-ins, a root's own steps, the definition hooks and the app's transformDef */\nfunction pipeline(view: ComponentFn, transform: Transform, override?: Partial<DefSource> & {name?: string}, root?: (src: DefSource) => DefSource): DefSource {\n let src = sourceOf(view)\n if (override) src = {...src, ...override}\n // G-172: a root without a model renders from `initialState || true`, decided before the\n // built-ins add a model (as in 5.x)\n if (root && src.model === undefined && !src.initialState) src = {...src, initialState: true}\n src = builtIns(src, view)\n if (root) src = root(src)\n for (const h of defHooks) src = h(src, view) || src\n if (transform) src = transform(src, view) || src\n return src\n}\n\n/**\n * An app's root Def (uncached; renderComponent's `override` too). As defOf, plus the root-only\n * steps of today's constructor: a behavior's slice is part of the root's initialState\n * (behaviors.ts's root merge: the slice wins over an initialState key of its name), then\n * `setup(src)`: persist's root setup (it may restore into the initialState and rewrites the\n * model; persist.ts, root only, as in 5.x).\n */\nexport function rootDef(view: ComponentFn, transform: Transform, override?: Partial<DefSource> & {name?: string; testActions?: string[]}, setup?: (src: DefSource) => DefSource): CoreDef {\n const d = normalize(view, pipeline(view, transform, override, (src) => {\n const uses = view.uses, idle = src.idle\n if (uses && idle) {\n const sl: Record<string, any> = {}\n for (const k in uses) if (k in idle) sl[k] = idle[k]\n src = {...src, initialState: {...(isObj(src.initialState) ? src.initialState : {}), ...sl}}\n }\n return setup ? setup(src) : src\n }))\n if (override?.name) (d as any).name = override.name\n if (override?.testActions) (d as any).testActions = override.testActions\n return d\n}\n","/**\n * PLAN-4.6 core: state cells (03-proposal §4). Pull-based views of the one state tree,\n * memoized on the parent value's identity. A write goes straight to the parent (no reducer\n * wrappers climbing the tree); the root's (or an isolated instance's local) write commits.\n *\n * | cell | get | set |\n * | root | app.state | app.state = v; commit |\n * | key | parent.get()[k] (or a default, isolated) | parent.set({...p, [k]: v}); SYG409 when k is a calculated field of the parent |\n * | lens | lens.get(parent.get()) | parent.set(lens.set(p, v)) |\n * | local | its own value; the parent's until written | own value; commit (isolatedState) |\n *\n * Calculated fields (and `idle` defaults) are a decorator: get() adds them, memoized per input\n * identity and per declared dependency values; set() stores them (the only behaviour after D164).\n * Children read through their parent's decorated cell, so they see its calculated fields, and a\n * child's write stores freshly computed ones (4-F).\n */\nimport {uidPart} from '../shared'\nimport type {CoreDef} from './define'\nimport {isObj} from './define'\nimport {warn, error as logError} from '../extra/diagnostics/legacy'\n\nexport interface Cell {\n get(): any\n set(v: any): void\n}\nexport interface CalcCell extends Cell {\n /** the raw value (calculated fields only as stored), for STATE.stream */\n raw(): any\n}\n\nexport const rootCell = (app: {state: any; commit(): void}): Cell =>\n ({get: () => app.state, set: (v) => { app.state = v; app.commit() }})\n\n/** isolatedState without a `state` prop: owned by the instance; the parent's state until first written */\nexport function localCell(app: {commit(): void}, parent: Cell): Cell {\n let v: any, own = false\n return {local: true, get: () => (own ? v : parent.get()), set: (n) => { v = n; own = true; app.commit() }} as Cell\n}\n\n/**\n * state=\"key\". `owner`: the parent's name when `k` is one of its calculated fields (SYG409:\n * writes ignored; `what` names the writer in the message). `dflt`: an isolated child's\n * initialState, read while the slice is undefined. `has()`: the slice itself is defined (D174).\n */\nexport function keyCell(parent: Cell, k: string, owner?: string | false, dflt?: any, what = 'Sub-component'): Cell & {has(): boolean} {\n let lp: any = {}, lv: any\n return {\n get() {\n const p = parent.get()\n if (p !== lp) { lp = p; lv = p == null ? undefined : p[k]; if (lv === undefined) lv = dflt }\n return lv\n },\n set(v) {\n if (owner) return warn('SYG409', owner, `${what} tried to update calculated field '${k}'; ignored`, 'Bind it to a non-calculated field')\n const p = parent.get()\n if (p?.[k] !== v) parent.set({...p, [k]: v})\n },\n has: () => parent.get()?.[k] !== undefined,\n }\n}\n\n/**\n * state={{ get, set }} (no get: SYG410, the parent's whole state). G-298: a get() that throws\n * keeps the last value (SYG410, and `onErr` for the app's onError). `dflt`, `has()`: as keyCell's\n * (G-314, D179: an isolated child's initialState read while the lensed slice is undefined)\n */\nexport function lensCell(parent: Cell, lens: any, owner: string, onErr?: (e: any) => void, dflt?: any): Cell & {has?(): boolean} {\n if (typeof lens?.get != 'function') {\n logError('SYG410', owner, `Sub-component 'state' prop ${isObj(lens) ? 'has no get()' : `is a ${typeof lens}`}; it gets the parent's whole state`, 'Use a state key string or { get, set }')\n return parent\n }\n let lp: any = {}, lv: any, raw: any\n return {\n get() {\n const p = parent.get()\n if (p !== lp) {\n lp = p\n try { raw = lv = lens.get(p) } catch (e) {\n logError('SYG410', owner, \"Sub-component 'state' lens get() threw; it keeps its last value\", 'Guard the getter against missing data', e)\n onErr?.(e)\n }\n if (lv === undefined) lv = dflt\n }\n return lv\n },\n has() { this.get(); return raw !== undefined },\n set(v) {\n if (typeof lens.set != 'function') return\n const p = parent.get(), n = lens.set(p, v)\n if (n !== p) parent.set(n)\n },\n }\n}\n\n/** calculated fields and `idle` defaults over a base cell */\nexport function calcCell(base: Cell, def: CoreDef): CalcCell {\n const calc = def.calculated, idle = def.idle\n const caches = calc ? calc.map(() => ({v: null as any[] | null, r: undefined as any})) : []\n let ls: any = {}, lr: any\n const add = (s: any) => {\n if (!isObj(s)) return s\n if (s === ls) return lr\n ls = s\n let m = idle ? {...idle, ...s} : s\n if (calc) {\n if (m === s) m = {...s}\n for (let i = 0; i < calc.length; i++) {\n const [f, fn, deps] = calc[i], c = caches[i]\n const dv = deps && deps.map(d => m[d])\n if (dv && c.v && dv.every((x, j) => x === c.v![j])) { m[f] = c.r; continue }\n try {\n const r = fn(m)\n if (dv) c.v = dv, c.r = r\n m[f] = r\n } catch (e: any) {\n warn('SYG220', def.name, `Calculated field '${f}' threw (${e instanceof Error ? e.message : e}); skipped this update`, 'Guard against missing data')\n }\n }\n }\n return (lr = m)\n }\n return {\n raw: () => base.get(),\n get: () => add(base.get()),\n set(v) {\n if (!isObj(v) || !(calc || idle)) return base.set(v)\n // stored with its calculated fields (and idle defaults), as cleanupCalculated did\n const c = {...add(v)}\n ls = c; lr = c\n base.set(c)\n },\n }\n}\n\n\n// ------------------------------------------------------------------ Collection items\n\n/**\n * An item's key: the `id` of an object item (anything but undefined / null, compared as a string,\n * as today's stringified keys), else its raw index in the state array (D169: not its\n * filtered/sorted position), in a namespace of its own ('\\0' + index: G-306/G-307, so an index\n * never collides with an id).\n */\nexport const keyOf = (it: any, i: number): string => (isObj(it) && it.id != null ? '' + it.id : '\\0' + i)\n/**\n * the key as it appears in an item's uid: an id through uidPart; an index key as `_i<index>`\n * (G-322: uidPart never makes '_' followed by a letter, so an index never collides with an id,\n * e.g. `[{ t }, { id: 0 }]`; renderToString matches it)\n */\nexport const keyName = (k: string) => (k[0] == '\\0' ? '_i' + k.slice(1) : uidPart(k))\nconst hasId = (it: any) => isObj(it) && it.id != null\n\nconst EMPTY: any[] = []\nexport type Index = () => [items: any[], byKey: Map<any, number>]\n\n/** one per Collection: the key -> raw index map (first occurrence), rebuilt once per array identity, shared by its items */\nexport function indexer(arr: Cell): Index {\n let la: any, map = new Map<any, number>()\n return () => {\n const g = arr.get(), a = Array.isArray(g) ? g : EMPTY\n if (a !== la) {\n la = a\n map = new Map()\n for (let i = 0; i < a.length; i++) { const k = keyOf(a[i], i); if (!map.has(k)) map.set(k, i) }\n }\n return [a, map]\n }\n}\n\n/**\n * A Collection item: the element of its key. An id-less element is a copy with its index as `id`\n * (a primitive `{ value, id }`, written back as the primitive); that `id` is not written back. Writing `undefined` removes the\n * element; the other elements keep their identity (PF-1).\n */\nexport function itemCell(arr: Cell, index: Index, key: any): Cell {\n let lraw: any = {}, lval: any\n return {\n get() {\n const [a, m] = index(), j = m.get(key)\n // removed: its last state (a disposing item's DISPOSE / dispose$ handlers read it, as today)\n if (j === undefined) return lval\n const raw = a[j]\n if (raw === lraw) return lval\n lraw = raw\n return (lval = isObj(raw) ? (hasId(raw) ? raw : {...raw, id: j}) : {value: raw, id: j})\n },\n set(v) {\n const [a, m] = index(), j = m.get(key)\n if (j === undefined) return\n if (v === undefined) return arr.set(a.filter((_: any, x: number) => x !== j))\n const cur = a[j]\n if (v === cur || (v === lval && cur === lraw)) return\n const n = a.slice()\n if (isObj(cur) || !isObj(v)) {\n // G-306: the index id an id-less element was given is not stored\n if (isObj(cur) && !hasId(cur) && isObj(v) && v.id === j) { v = {...v}; delete v.id }\n n[j] = v\n } else n[j] = v.value\n arr.set(n)\n },\n }\n}\n","/*\n * PLAN-4 GS-2: element commands, the built-in ELEMENT sink.\n *\n * SUBMIT: { STATE: validate, ELEMENT: (s) => (s.errors.email ? { focus: Email } : ABORT) },\n * OPEN_HELP: { ELEMENT: { showModal: HelpDialog } },\n *\n * A command is `{ <method>: target, ...options }`: the FIRST key is the method, the other keys\n * are its options (D118); an array sends several, in order. The target (a control or a\n * selector) is resolved in the SENDING instance's own DOM source, so isolation applies (a\n * Collection item reaches only its own elements; a parent doesn't reach its children's).\n *\n * The method: D102 first, a control whose spec object declares `commands` runs\n * `commands[method](element, options)` (it overrides a native method of the same name; only the\n * control itself carries a spec, a template-string selector doesn't). A widget host\n * (src/extra/widget.ts) carries its widget's commands, which win the same way for a selector\n * target (PLAN-5 D196: `{ focus: '.editor' }` runs the widget's `focus`). Then the element's own\n * method: `close` gets `returnValue` as its argument (D118), `togglePopover` its `force` (a\n * boolean, or no argument: a browser that only takes a boolean treats an object as true), every\n * other method the options object (focus { preventScroll }, scrollIntoView { block, inline,\n * behavior }, blur, select, click, showModal, show, showPopover, hidePopover; also play, pause, showPicker,\n * requestSubmit, reset...). The core runs any method the element has (no list: it\n * would cost ~60 B); the dev entry reports the ones that change the DOM Sygnal renders (SYG641).\n *\n * Timing: a command runs once the render it may depend on is on the page. The instance's DOM\n * source emits after every DOM mutation of the app (a patch), so the command runs in a microtask\n * after the next patch at which its target exists. When no patch comes (the action changed\n * nothing that renders), it runs at the first 16 ms check instead; the checks repeat every 16 ms\n * while the target is missing, about 1 s, then it is given up (SYG640 in dev). A disposed\n * instance's pending commands are dropped. Without a DOM source nothing runs (SSR renders views\n * without instances); a null command is skipped (ABORT is the way to send nothing).\n *\n * Failures (no match: SYG640; neither a spec command nor an element method: SYG641) go to the\n * 'sygnal/diagnostics' dev entry through the core bridge (`elementCommand`), which words them;\n * the core carries no message text. In production a failed command does nothing.\n */\nexport function runElementCommands(c: any, cmds: any): void {\n const dom = c.sources[c.DOMSourceName];\n if (dom) for (const cmd of ([] as any[]).concat(cmds)) if (cmd) {\n const m = Object.keys(cmd)[0], {[m]: t, ...o} = cmd, s = dom.select('' + t).elements();\n let els: any, n = 0, k = 0, l: any;\n const run = (last?: any) => {\n const e = !c._disposed && els?.[0], f = t?.spec?.commands?.[m] || e?.__sw?.w.commands[m];\n if (!l || !e && !last) return;\n s.removeListener(l);\n clearInterval(i);\n l = 0;\n e && (f || e[m]) ? f ? f(e, o) : e[m](m == 'close' ? o.returnValue : m == 'togglePopover' ? o.force : o)\n : (globalThis as any).__SYGNAL_DIAGNOSTICS__?.elementCommand?.(c, cmd, e);\n }, i = setInterval(() => run(++k > 62), 16);\n // the first value (the DOM as it is now) is skipped; the next ones follow a patch\n s.addListener(l = {next: (x: any) => { els = x; n++ && queueMicrotask(run); }});\n }\n}\n","/**\n * PLAN-4.6 core: the read-only InstanceView hooks and tools get (04 §2.3), never the raw\n * instance. Made on the first hook call that needs it (an app without hooks makes none).\n */\nimport type {InstanceView} from './hooks'\nimport type {Inst} from './instance'\n\nclass View implements InstanceView {\n constructor(private i: Inst) {}\n get id() { return this.i.id }\n get parentId() { return this.i.parent?.id }\n get name() { return this.i.def.name }\n get def() { return this.i.def }\n get state() { return this.i.cell.get() }\n get props() { return this.i.props }\n get context() { return this.i.context() }\n get isRoot() { return !this.i.parent }\n get kind() { return this.i.kind }\n /** false on a hidden Switchable page and below it */\n get shown() {\n for (let i: any = this.i; i; i = i.parent) if (!i.shown) return false\n return true\n }\n get disposed() { return this.i.disposed }\n get uid() { return this.i.uidBase }\n get sources() { return this.i.sources() }\n children(): InstanceView[] {\n const out: InstanceView[] = []\n this.i.kids.forEach((k: any) => {\n if (k.def && k.app) out.push(viewOf(k))\n else if (k.insts) for (const j of k.insts()) out.push(viewOf(j))\n })\n return out\n }\n}\n\nexport const viewOf = (i: Inst): InstanceView => (i.iv ||= new View(i))\n","/**\n * PLAN-4.6 core: declaration statics and reply actions (04-hooks-contract §2.1 \"statics\",\n * §3.7; spike 0-S proto/statics.ts). The core names no static: a driver source marked\n * `__sygnalStatic: 'timers'` (makeTimerDriver; 'resources' makeFetchDriver, 'connections'\n * makeSocketDriver, 'route' the router, 'head' makeHeadDriver, a testing fake) takes that static\n * of every component that declares it.\n *\n * - A declaring instance's value of `view[static]` (a function of the calculated state, an object\n * of such functions, or a constant such as a `route` string) is recomputed when its state or its\n * shown flag changed: in the flush (after each render pass, so a new instance and a parent's\n * write are covered) and synchronously after each of its own actions (G-158: before that\n * action's own values on any driver sink; D170/Q21).\n * - Sent as `{ [static]: value }`, without deep-equal repeats (objIsEqual); while the instance is\n * on a hidden Switchable page, an object value keeps only its `background: true` entries.\n * Stamped and scoped like any sink value (actions.ts send()). A throwing declaration is SYG216\n * ('declaration'; nothing sent).\n * - Reply actions: an instance listens to `replies(id)` of each reply-capable source\n * (`__sygnalReplies: true`) it sends to or declares a static to, from its creation; a reply is\n * dispatched to it with cause 'reply'. Disposing completes them at once, so the driver stops the\n * instance's timers / aborts its requests (G-144), after DISPOSE and dispose$ ran.\n */\nimport type {Inst} from './instance'\nimport type {App} from './runtime'\nimport type {CoreDef} from './define'\nimport {objIsEqual} from '../cycle/state/objIsEqual'\nimport {send} from './actions'\nimport {viewOf} from './view'\n\n/** the drivers' statics and reply-capable sources (once per app, at start) */\nexport function scanSources(app: App) {\n for (const n in app.sources) {\n const s = app.sources[n]\n if (!s || typeof s != 'object') continue\n if (typeof s.__sygnalStatic == 'string') app.stat.push([n, s.__sygnalStatic])\n if (s.__sygnalReplies === true && typeof s.replies == 'function') app.rep.push(n)\n }\n if (app.stat.length) app.afterRender = () => { for (const i of app.statics) checkStatics(i) }\n}\n\n/** the [sink, static] pairs this definition declares (null: none), cached per app */\nexport function staticsOf(app: App, def: CoreDef): Array<[string, string]> | null {\n let s = app.stc.get(def)\n if (s === undefined) {\n const v = def.view, l = app.stat.filter(([, k]) => v[k] != null)\n app.stc.set(def, (s = l.length ? l : null))\n }\n return s\n}\n\n/** at creation (before the intent): the statics it declares and the replies it listens to */\nexport function attach(inst: Inst) {\n const app = inst.app, def = inst.def\n const st = inst.st = app.stat.length ? staticsOf(app, def) : null\n // (made in a flush's render: that pass's statics step computes it, G-323; else a flush does)\n if (st) { inst.sv = {}; app.statics.add(inst); if (!app.flushing) app.commit() }\n for (const n of app.rep) {\n if (!def.sinks.has(n) && !st?.some(s => s[0] == n)) continue\n const src = inst.src(n), r$ = (typeof src?.replies == 'function' ? src : app.sources[n]).replies(inst.id)\n ;(inst.rep ||= []).push(r$)\n r$.subscribe({next: (a: any) => a && app.dispatch(inst, a.type, a.data, 'reply', n)})\n }\n}\n\n/** on dispose: no more declarations; the replies end now (the drivers drop the instance) */\nexport function detach(inst: Inst) {\n if (inst.st) inst.app.statics.delete(inst)\n const r = inst.rep\n if (r) { inst.rep = null; for (const r$ of r) try { r$.shamefullySendComplete() } catch (_) {} }\n}\n\nconst shownOf = (inst: Inst) => {\n for (let i: Inst | null = inst; i; i = i.parent) if (!i.shown) return false\n return true\n}\n\n/** recompute the instance's declarations when its state or shown flag changed; send the changed ones */\nexport function checkStatics(inst: Inst) {\n if (inst.disposed) return\n const s = inst.cell.get(), shown = shownOf(inst)\n // no state yet: nothing declared (as the state stream, which skips undefined)\n if (s === undefined || (s === inst.sS && shown === inst.sH)) return\n inst.sS = s; inst.sH = shown\n const view = inst.def.view, sv = inst.sv!\n for (const [n, k] of inst.st!) {\n const f = view[k]\n let v: any = f\n try {\n if (typeof f == 'function') v = f(s)\n else if (f && typeof f == 'object') { v = {}; for (const r in f) v[r] = f[r](s) }\n } catch (e) {\n // as today: nothing sent; the next value is sent even when equal to the last one\n inst.app.caught(inst, 'SYG216', `${k} threw; nothing sent`, e, 'declaration')\n sv[n] = undefined\n continue\n }\n // D85: a hidden page keeps only its background entries (an object value)\n if (!shown && v && typeof v == 'object') { const w = v; v = {}; for (const r in w) if (w[r]?.background) v[r] = w[r] }\n const out = {[k]: v}\n if (n in sv && objIsEqual(out, sv[n])) continue\n sv[n] = out\n inst.app.hooks.onSink?.(viewOf(inst), null, n, out)\n send(inst, n, out)\n }\n}\n","/**\n * PLAN-4.6 core: the documented debug logging (integration/debugging: `Component.debug =\n * true`, `window.SYGNAL_DEBUG = 'true'` / `SYGNAL_DEBUG=true` in Node), as the 5.x core's\n * `log()`: `[<id> | <Name>] <message>` on the console, and to a connected DevTools extension\n * (onDebugLog). `inst.debug`: the DevTools toggle for one instance. The message is built only\n * when logging is on.\n */\nimport type {Inst} from './instance'\n\ndeclare const process: {env: Record<string, any>}\nconst ENV: any = (typeof window != 'undefined' && window) || (typeof process != 'undefined' && process.env) || {}\n\nexport function dbg(inst: Inst, msg: () => string) {\n if (!(inst.debug || inst.def.view.debug || ENV.SYGNAL_DEBUG === 'true' || ENV.SYGNAL_DEBUG === true)) return\n // G-331: the message (JSON of a BigInt or circular value) and the DevTools bridge never break\n // the action being logged\n let m: string\n try { m = msg() } catch (e) { m = '(message not shown: ' + e + ')' }\n const text = `[${inst.id} | ${inst.def.name}] ${m}`\n console.log(text)\n const dt = typeof window != 'undefined' && (window as any).__SYGNAL_DEVTOOLS__\n try { if (dt?.connected) dt.onDebugLog(inst.id, text) } catch (_) { /* the bridge's own bug */ }\n}\n","/**\n * PLAN-4.6 core: running one action (03-proposal §3, 04 §2.4.1).\n *\n * The action's handlers run in model order with (pre, data, next, props), where `pre` is the\n * state (calculated fields included) from before the action, for every sink:\n * - STATE: applied at once (D165). ABORT, or the object it was given (GS-4), is no change.\n * D205: during an input / change event (an action triggered by typing in a field), no change\n * still re-renders the instance, so a controlled field shows the model's value again\n * - EFFECT: run synchronously (preventDefault on the live event still works); `props.signal`\n * aborts on dispose; a returned value is SYG219, a rejected promise SYG214.\n * - PARENT: straight to the parent's CHILD.select listeners as { name, component, value }.\n * - READY: the instance's ready flag (the parent re-renders it with data-sygnal-ready).\n * - ELEMENT: element commands, run after the next patch (extra/elementCommands).\n * - any other sink (EVENTS, LOG, drivers): stamped and scoped (send), then the app's bus.\n * A dispatch from a handler (a driver answering synchronously, an EFFECT) is queued (FIFO).\n */\nimport type {Inst} from './instance'\nimport {isAbort} from '../shared'\nimport {isObj} from './define'\nimport {warn, error as logError, fail} from '../extra/diagnostics/legacy'\nimport {runElementCommands} from '../extra/elementCommands'\nimport {viewOf} from './view'\nimport {checkStatics} from './statics'\nimport {objIsEqual} from '../cycle/state/objIsEqual'\nimport {dbg} from './debug'\n\nexport function handle(inst: Inst, type: string, data: any, cause: any, src?: string) {\n const hs = inst.def.handlers.get(type), app = inst.app, H = app.hooks\n // (an action with no model entry is seen too: the action log lists it with no sinks)\n if (H.onAction) H.onAction(viewOf(inst), {type, data, cause, target: viewOf(inst), source: src})\n dbg(inst, () => `<${type}> Action triggered`)\n if (!hs) return\n const def = inst.def\n const pre = inst.cell.get()\n let props: any, outs: any[] | undefined\n const next = (t: string, d?: any, ms: any = 10, effect?: boolean) => {\n if (typeof ms !== 'number') fail('SYG215', inst, `next() delay in '${type}' must be a number`, \"Use next('ACTION', data, ms)\")\n // G-300: none for an instance being disposed; dispose() clears the pending ones\n if (inst.disposed || inst.dying) return dbg(inst, () => `next(${t}) ignored: disposed`)\n H.onNext?.(viewOf(inst), t, d, ms)\n dbg(inst, () => `<${type}> ${effect ? 'EFFECT triggered' : 'Triggered'} a next() action: <${t}> ${ms}ms delay`)\n const ts = inst.timers ||= new Set()\n const id = setTimeout(() => { ts.delete(id); inst.disposed || app.dispatch(inst, t, d, 'next') }, ms)\n ts.add(id)\n }\n for (const [sink, h0] of hs) {\n const h = H.wrapHandler ? H.wrapHandler(viewOf(inst), type, sink, h0) || h0 : h0\n if (sink == 'EFFECT') {\n if (typeof h != 'function') continue\n const failed = (e: any) => app.caught(inst, 'SYG214', `EFFECT handler '${type}' threw`, e, 'effect', type)\n try {\n const p = {...(props ||= inst_props(inst, pre)), signal: (inst.ac ||= globalThis.AbortController && new AbortController())?.signal}\n const r = h(pre, data, (t: string, d?: any, ms?: any) => next(t, d, ms, true), p)\n if (r?.then) r.then(null, failed)\n else if (r !== undefined && !isAbort(r)) warn('SYG219', inst, `EFFECT handler '${type}' returned a value, which is ignored`, 'Use a STATE or driver sink')\n } catch (e) { failed(e) }\n continue\n }\n let v: any\n if (typeof h == 'function') {\n try { v = h(pre, data, next, props ||= inst_props(inst, pre)) } catch (e) {\n app.caught(inst, 'SYG216', `Reducer for '${type}' threw; ${sink == 'STATE' ? 'state unchanged' : 'nothing sent'}`, e, 'reducer', type)\n continue\n }\n } else v = h === undefined || h === true ? data : h\n if (sink == 'STATE' && (isAbort(v) || v === pre)) {\n // D205: the DOM event being dispatched (window.event) is the one this action came from\n if (/^(input|change)$/.test((globalThis as any).event?.type)) inst.refresh()\n continue\n }\n if (isAbort(v)) continue\n if (sink == 'STATE') {\n H.onReducer?.(viewOf(inst), type, pre, v)\n dbg(inst, () => `<${type}> State reducer added`)\n inst.cell.set(v)\n // GS-12: this app's DOM driver patches inside a View Transition (makeViewTransitionDOMDriver\n // reads the flag on its IsolateModule); includes?.: a non-array static lists nothing (G-228).\n // Only for a state that changed structurally: today an equal one renders nothing (its\n // request expires unused); here it would re-render the same view, so it asks for nothing\n if (def.view.viewTransitions?.includes?.(type) && (v === undefined || !objIsEqual(pre, inst.cell.get()))) { const m = inst.dom?._isolateModule; if (m) m.vt = 1 }\n continue\n }\n if (typeof v == 'symbol') { logError('SYG218', inst, `Reducer for '${type}' returned a symbol; nothing sent`, 'Return a value, or ABORT to send nothing'); continue }\n if (v === undefined) warn('SYG217', inst, `Reducer for '${type}' sent undefined to the driver`, 'Return a value, or ABORT to send nothing')\n if (H.onSink) H.onSink(viewOf(inst), type, sink, v)\n dbg(inst, () => `<${type}> Data sent to [${sink}]: ${JSON.stringify(v)}`)\n if (sink == 'PARENT') {\n const e = {name: def.name, component: def.view, value: v}\n if (inst.parent) inst.parent.toChild(e)\n else app.out('PARENT', e)\n } else if (sink == 'READY') inst.setReady(!!v)\n else if (sink == 'ELEMENT') {\n // onElementCommand returning false: recorded, not run (renderComponent's mock DOM)\n if (H.onElementCommand?.(viewOf(inst), v) !== false) runElementCommands(inst.el ||= {name: def.name, DOMSourceName: 'DOM', sources: {DOM: inst.dom}, get _disposed() { return inst.disposed }}, v)\n } else if (inst.st) (outs ||= []).push(sink, v)\n else send(inst, sink, v)\n }\n // G-158 (D170/Q21): a static this action changed reaches its driver before the action's own\n // driver values (a connection the action opens exists before its first message)\n if (inst.st) {\n checkStatics(inst)\n if (outs) for (let i = 0; i < outs.length; i += 2) send(inst, outs[i], outs[i + 1])\n }\n}\n\n/** the handlers' 4th argument: the props, children, slots, context, uid and the pre-action state */\nfunction inst_props(inst: Inst, pre: any) {\n return {...inst.props, children: inst.children, slots: inst.slots, context: inst.context(), uid: inst.uid, state: pre}\n}\n\n/**\n * A sink value of an instance: stamped with its sender (EVENTS; object values for a reply-capable\n * source), scoped through every ancestor's isolation (a driver's value-level isolateValue, else\n * one stream per instance and sink through isolateSink), then onto the app's bus for that sink.\n */\nexport function send(inst: Inst, n: string, v: any) {\n const app = inst.app, src = app.sources[n]\n if (n == 'EVENTS' || (src?.__sygnalReplies && isObj(v))) {\n v = Object.defineProperties({...v}, {__emitterId: {value: inst.id, configurable: true}, __emitterName: {value: inst.def.name, configurable: true}})\n }\n if (inst.parent && src && typeof src.isolateSink == 'function') {\n let w = v\n for (let i: Inst = inst; i.parent; i = i.parent) {\n const o = i.parent.src(n)\n if (typeof o?.isolateValue != 'function') return app.pipe(inst, n, v, (s$: any) => {\n for (let j: Inst = inst; j.parent; j = j.parent) { const p = j.parent.src(n); if (typeof p?.isolateSink == 'function') s$ = p.isolateSink(s$, j.scope) }\n return s$\n }, (x: any) => app.out(n, x))\n w = o.isolateValue(w, i.scope)\n }\n v = w\n }\n app.out(n, v)\n}\n","import xs from './xstreamCompat';\nimport type {Stream} from 'xstream';\n\nexport interface CommandMessage {\n type: string;\n data?: any;\n}\n\nexport interface CommandSource {\n select(type: string): Stream<any>;\n}\n\nexport interface Command {\n send(type: string, data?: any): void;\n /** @internal — raw stream used by component wiring */\n _stream: Stream<CommandMessage>;\n /** @internal — marker for the core's detection */\n __sygnalCommand: true;\n /** @internal — stamped by the core when wired to a child */\n _targetComponentId?: number;\n /** @internal — stamped by the core when wired to a child */\n _targetComponentName?: string;\n}\n\nexport function createCommand(): Command {\n const listener: { next: (val: CommandMessage) => void } = { next: () => {} };\n\n const _stream: Stream<CommandMessage> = xs.create({\n start(l: any) { listener.next = (val) => l.next(val); },\n stop() { listener.next = () => {}; },\n });\n\n const cmd: Command = {\n send: (type: string, data?: any) => {\n listener.next({ type, data });\n if (typeof window !== 'undefined' && (window as any).__SYGNAL_DEVTOOLS__?.connected) {\n (window as any).__SYGNAL_DEVTOOLS__.onCommandSent(type, data, cmd._targetComponentId, cmd._targetComponentName);\n }\n },\n _stream,\n __sygnalCommand: true as const,\n };\n\n return cmd;\n}\n\nexport function makeCommandSource(cmd: Command): CommandSource {\n return {\n select(type: string): Stream<any> {\n return cmd._stream.filter(msg => msg.type === type).map(msg => msg.data);\n },\n };\n}\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)\nexport const POKE = 'sygnal-dom';\nexport const pokeDOM = (el: any): any => el?.dispatchEvent(new Event(POKE, {bubbles: true}));\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","/**\n * PLAN-4.6 core: a component instance (03-proposal §5).\n *\n * - Created synchronously: the state cell, the initial state written, onCreate, INITIALIZE\n * queued, the intent subscribed (an emission on subscribe only queues: it is drained after the\n * construction, or in the flush that created the instance). BOOTSTRAP is dispatched a\n * microtask after the flush that rendered it first (D165).\n * - Sources at the edge (lazy getters): every driver source isolated to the instance, DOM with\n * the event shorthand, STATE (stream: identity, watch: deep, as today, D170), CHILD.select(Fn),\n * props$ / children$ / dispose$ for sub-components.\n * - render(): the cached vnode unless its state, props, children, a context key its view read\n * (D168), or a child's vnode / READY changed. Children are keyed in a Map by `name::id|path`.\n * - dispose(): DISPOSE, onDispose, dispose$, the EFFECT signal aborted, the subtree, then the\n * streams (the scoped _remove swap: no xstream stop timers, D165/Q18).\n */\nimport xs from '../extra/xstreamCompat'\nimport {StateSource} from '../cycle/state/StateSource'\nimport {uidPart} from '../shared'\nimport {warn, error as logError, fail} from '../extra/diagnostics/legacy'\nimport type {App} from './runtime'\nimport {tearDown, INST, SEED} from './teardown'\nimport {CoreDef, defOf, isObj} from './define'\nimport {Cell, CalcCell, calcCell, keyCell, lensCell, localCell} from './cell'\nimport {hosts, posts, pres, resolvers} from './registry'\nimport {handle} from './actions'\nimport {viewOf} from './view'\nimport {makeCommandSource} from '../extra/command'\nimport {attach, detach} from './statics'\nimport {dbg} from './debug'\nimport {sameData} from '../cycle/dom/utils'\n\nconst ERR_FIX = 'See the attached error'\n\n// 4-I G-557: a fragment root (a Collection's): each of its top-level elements is marked.\n// 4-K G-572: a text root (no element; an attribute would land on a Text node) gets `ready: false`\n// (read by Suspense)\nconst notReady = (v: any): any => v?.sel ? {...v, data: {...v.data, attrs: {...v.data?.attrs, 'data-sygnal-ready': 'false'}}}\n : v?.children ? {...v, children: v.children.map(notReady)} : v && {...v, ready: false}\nconst errorDiv = (name: string) => ({sel: 'div', data: {attrs: {'data-sygnal-error': name}}, children: [], text: undefined, elm: undefined, key: undefined})\n\n/** <Slot name=\"x\"> children -> slots.x; the rest -> slots.default and `children` */\nfunction extractSlots(children: any[]): [any[], Record<string, any[]>] {\n const slots: Record<string, any[]> = {}, rest: any[] = []\n for (const c of children) {\n // G-480: the <Slot> marker (`data.m`), not a plain <slot> element (a shadow-DOM component's)\n if (c?.data?.m && c.sel === 'slot') {\n const k = c.children\n ;(slots[c.data?.props?.name || 'default'] ||= []).push(...(Array.isArray(k) ? k : k ? [k] : []))\n } else rest.push(c)\n }\n if (rest.length) (slots.default ||= []).push(...rest)\n return [slots.default || [], slots]\n}\n\n/** an instance's id among its parent's children: its `id` prop, else its path in the view */\nconst idOf = (n: any, path: string) => {\n const id = n.data?.props?.id\n let s: any\n // (G-298: an id JSON can't encode, a BigInt, is used as its string)\n if (id) try { s = JSON.stringify(id) } catch (_) { s = String(id) }\n return `${n.sel}::${(s && s.replace(/\"/g, '')) || path}`\n}\n\n/**\n * a component vnode's props, without `resetState` (D174: read at creation, like `state`, never a\n * prop of the child)\n */\nfunction propsOf(p: any) {\n if (!p) return {}\n if (!('resetState' in p)) return p\n const {resetState, ...rest} = p\n return rest\n}\n\nexport function sameKids(a: any, b: any) {\n if (a === b) return true\n if (!a || !b || a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false\n return true\n}\nexport function shallowEq(a: any, b: any) {\n if (a === b) return true\n if (!isObj(a) || !isObj(b)) return false\n const ka = Object.keys(a)\n if (ka.length !== Object.keys(b).length) return false\n for (const k of ka) if (a[k] !== b[k]) return false\n return true\n}\n\n/**\n * P46-P: two pragma-plain trees (no component, form field or foreign vnode) that render the same:\n * the same tags, keys, text and data (each bucket shallow-equal). A re-run view whose output is\n * the same keeps its last vnode, so the patch skips that subtree by identity.\n * G-349: a vnode with a `hook` is never the same (its update/postpatch run on every patch, a\n * hoisted hook object too; refs and autoFocus chain their hooks there).\n * G-353: at most SAME_MAX vnodes are compared; a larger tree is not the same (it patches, as\n * before P46-P), so a big view whose last row changed doesn't walk the whole tree before the patch\n */\nconst SAME_MAX = 1000\nlet left = 0\nexport const sameTree = (a: any, b: any): boolean => (left = SAME_MAX, same(a, b))\nfunction same(a: any, b: any): boolean {\n if (a === b) return true\n if (--left < 0 || !a || !b || a.sel !== b.sel || a.key !== b.key || a.text !== b.text || b.data?.hook || !sameData(a.data, b.data)) return false\n const x = a.children, y = b.children\n if (x === y) return true\n if (!x || !y || x.length !== y.length) return false\n for (let i = 0; i < x.length; i++) if (!same(x[i], y[i])) return false\n return true\n}\n\nconst EMPTY_CTX: any = Object.freeze({})\n/** a view read every key (spread, Object.keys): any context change re-renders it */\nconst ALL = '\\u0000all'\n\nlet IDS = 0\n\n/** a child that failed to instantiate: renders the owner's error fallback (SYG408) */\nclass Failed {\n last: any; lr = true; ready = true; def: any = null; disposed = false; shown = true\n constructor(public outv: any) {}\n render() { return this.outv }\n setProps() {}\n dispose() {}\n}\n\nexport class Inst {\n readonly id = IDS++\n disposed = false\n /** debug logging for this instance (the DevTools toggle; core/debug.ts) */\n debug = false\n /** in dispose(), while dispose$ emits: its actions run at once */\n dying = false\n ready: boolean\n shown = true\n /** the decorated cell (calculated fields, idle defaults) and the raw value */\n cell: CalcCell\n props: Record<string, any>\n children!: any[]\n /** the children as the parent passed them (slots included) */\n raw!: any[]\n slots: Record<string, any[]> = {}\n kids = new Map<string, any>()\n uidBase: string\n /** the parent's view of this instance's output (last vnode / READY it injected) */\n last: any; lr = true\n outv: any\n // the last render's inputs: state, props, children, context, the context keys its view read\n ls: any = {}; lp: any; lc: any; lctx: any; keys: Set<string> | null = null; tmpl: any; forced = true\n postSels: string[] | null = null\n // context memo: the app's write version it was computed at, the value\n cver = -1; cv: any\n subs: any[] = []\n srcs: Record<string, any> | null = null\n fb: Record<string, any> | null = null\n ac: AbortController | null = null\n disp$: any\n st$: any; stLast: any; stateSrc: any\n props$: any; children$: any\n /** CHILD.select listeners (the children's PARENT values) */\n hub: Set<(e: any) => void> | null = null\n wd: any; so: any; el: any\n iv: any\n cmds: any\n /** the app's render epoch it last rendered at (G-311) */\n ep = 0\n /** pending next() timers (G-300) */\n timers: Set<any> | null = null\n // statics.ts: the [sink, static] pairs it declares, the last values sent, the state / shown\n // flag they were computed from; its reply streams\n st: Array<[string, string]> | null = null\n sv: Record<string, any> | null = null\n sS: any; sH: any\n rep: any[] | null = null\n\n constructor(\n public app: App, public def: CoreDef, public parent: Inst | null, base: Cell,\n public dom: any, props: Record<string, any>, children: any[], public scope: string | undefined,\n uidBase: string, public kind: 'root' | 'child' | 'item' | 'page' = parent ? 'child' : 'root', reset = false,\n ) {\n this.props = props\n this.setChildren(children)\n this.uidBase = uidBase\n this.ready = !def.ready\n this.cell = def.calculated || def.idle ? calcCell(base, def) : {get: () => base.get(), set: (v) => base.set(v), raw: () => base.get()}\n const H = app.hooks\n // the initial state, synchronously (INITIALIZE at construction, D165): a root (or the state an\n // HMR swap keeps), an isolated child's local state. D174: an isolated child bound to a slice\n // (state=\"key\" or a lens) seeds it with initialState only while it is undefined (with a model,\n // as today's INITIALIZE; without one it reads initialState while the slice is missing), and\n // `resetState` replaces it at creation; an existing slice is kept (onStateSeed: R4's warning)\n let init = !parent && app.initState !== undefined ? app.initState : def.initialState\n // a root without a model renders from `initialState || true` (G-172, as today)\n if (!parent && !def.model && !init) init = true\n // R4: a shallow copy, as today's INITIALIZE reducer made ({...initialState}): the static is\n // shared by every instance (and the dev entry freezes it, D152), the state is the instance's\n else if (isObj(init)) init = {...init}\n if (init !== undefined) {\n if (!parent || (def.isolated && (base as any).local)) this.cell.set(init)\n else if (def.isolated) {\n const b: any = base, has = b.has ? b.has() : b.get() !== undefined\n // the parent's slice is written as a queued action (before INITIALIZE), so a child that\n // fails to start (G-295) never touches it: the drain skips a disposed instance\n if (reset || (!has && def.model)) app.dispatch(this, SEED, {v: init, r: reset, b}, 'built-in')\n else if (has) H.onStateSeed?.(viewOf(this), b.get(), init)\n }\n } else if (def.idle && isObj(this.cell.raw()) && !parent) this.cell.set(this.cell.raw())\n H.onCreate?.(viewOf(this))\n dbg(this, () => 'Instantiated')\n if (def.handlers.has('INITIALIZE')) app.dispatch(this, 'INITIALIZE', init, 'built-in')\n if (app.stat.length || app.rep.length) attach(this)\n if (def.intent) {\n try { this.subscribe() } catch (e) {\n // G-295: undone (its queued actions are skipped, no STATE watcher, onDispose pairs onCreate)\n this.disposed = true\n app.watchers.delete(this)\n detach(this)\n H.onDispose?.(viewOf(this))\n throw e\n }\n }\n if (def.handlers.has('BOOTSTRAP')) app.born.push(this)\n }\n\n get name() { return this.def.name }\n\n // ---------------------------------------------------------------- sources (the stream edge)\n subscribe() {\n const app = this.app, H = app.hooks, def = this.def\n // an emission on subscribe (startWith, xs.of) only queues; drained after the construction\n const was = app.draining\n app.draining = true\n try {\n let so = this.sources()\n if (H.wrapSources) so = H.wrapSources(viewOf(this), so) || so\n const actions = def.intent!(so)\n // G-338: one stream of { type, data } (a form 6.0 removed), not an object of streams\n if (actions && typeof actions.addListener == 'function') fail('SYG603', this, 'intent returned a single stream, a form Sygnal 6.0 removed', 'Return an object of streams, one per action: { ACTION: stream$ }. See https://sygnal.js.org/guide/migrating-to-6#leftovers')\n if (!isObj(actions)) fail('SYG603', this, 'intent must return an object of streams', 'Return { ACTION: stream$ }')\n H.onIntent?.(viewOf(this), Object.keys(actions))\n for (const type in actions) {\n const s = actions[type]\n if (s == null) continue\n if (typeof s.subscribe != 'function') fail('SYG603', this, `intent entry '${type}' is not a stream`, 'Return { ACTION: stream$ }')\n this.subs.push(s.subscribe({\n next: (d: any) => this.dying ? handle(this, type, d, 'intent') : app.dispatch(this, type, d, 'intent'),\n // (no code of its own yet: R4's diagnostics may add one)\n error: (e: any) => { console.error(`[Sygnal] ${def.name}: intent stream '${type}' errored; it stops emitting`, e); app.appError(this, e, 'intent', type) },\n }))\n }\n } catch (e) {\n // a failed instance keeps no subscription (its parent renders the error fallback)\n for (const s of this.subs) s.unsubscribe()\n this.subs = []\n throw e\n } finally { app.draining = was }\n if (!was && !app.rendering && app.queue.length) app.drain()\n }\n\n sources() {\n if (this.so) return this.so\n const so = this.so = Object.defineProperties({}, this.app.srcDesc(!!this.parent))\n Object.defineProperty(so, INST, {value: this})\n return so\n }\n /** a driver source isolated to this instance (the parent's, isolated to this scope; cached) */\n src(n: string): any {\n const c = this.srcs ||= {}\n if (n in c) return c[n]\n let s = this.parent ? this.parent.src(n) : this.app.sources[n]\n if (this.scope !== undefined && s && typeof s.isolateSource == 'function') s = s.isolateSource(s, this.scope)\n return (c[n] = s)\n }\n /** STATE: today's StateSource over a memory stream fed on changes (identity; undefined skipped) */\n stateSource() {\n if (this.stateSrc) return this.stateSrc\n this.st$ = xs.createWithMemory()\n const v = this.stLast = this.cell.raw()\n if (v !== undefined) this.st$.shamefullySendNext(v)\n this.app.watchers.add(this)\n return (this.stateSrc = new StateSource(this.st$, 'STATE', this.dispose$(), 1))\n }\n /** called after each action and before each render pass: STATE.stream emits a new state */\n notify() {\n const v = this.cell.raw()\n if (v !== this.stLast && v !== undefined) { this.stLast = v; this.st$.shamefullySendNext(v) }\n }\n dispose$() {\n return this.disp$ ||= xs.create()\n }\n childSource() {\n return {\n select: (fn: any) => {\n let f: any\n return xs.create({\n start: (l: any) => { (this.hub ||= new Set()).add(f = (e: any) => e.component === fn && l.next(e.value)) },\n stop: () => { this.hub?.delete(f) },\n })\n },\n }\n }\n setChildren(children: any[]) {\n // G-294: the raw children (before the slots are split out) decide whether the view re-runs\n this.raw = children\n const [kids, slots] = children.length ? extractSlots(children) : [children, {}]\n this.children = kids\n this.slots = slots\n }\n setProps(props: Record<string, any>, children: any[]) {\n this.props = props\n this.setChildren(children)\n this.app.hooks.onPropsChanged?.(viewOf(this), props)\n this.props$?.shamefullySendNext(props)\n this.children$?.shamefullySendNext(this.children)\n }\n /** commands$: the source of the first Command among the props (undefined without one) */\n commands(): any {\n if (this.cmds !== undefined) return this.cmds\n for (const k in this.props) {\n const c = this.props[k]\n if (c && c.__sygnalCommand) {\n c._targetComponentName = this.def.name\n c._targetComponentId = this.id\n return (this.cmds = makeCommandSource(c))\n }\n }\n return (this.cmds = undefined)\n }\n /** a PARENT value from a child: to this instance's CHILD.select listeners */\n toChild(e: any) {\n this.hub?.forEach(f => f(e))\n }\n\n uid = (n?: string) => (n ? this.uidBase + '-' + n : this.uidBase)\n\n // ---------------------------------------------------------------- context (D168)\n context(): any {\n const app = this.app\n if (this.cver === app.ver) return this.cv\n const par = this.parent ? this.parent.context() : EMPTY_CTX\n let v = par\n const entries = this.def.context\n if (entries) {\n const s = this.cell.get()\n v = {...par}\n for (const [k, f] of entries) {\n try { v[k] = f(s) } catch (e) {\n logError('SYG404', this, `Context entry '${k}' threw; it keeps its last value`, ERR_FIX, e)\n app.appError(this, e, 'context')\n if (this.cv) v[k] = this.cv[k]\n }\n }\n // the same values: the same object, so readers see no change\n if (this.cv && shallowEq(v, this.cv)) v = this.cv\n else if (this.cv && app.hooks.onContextChanged) app.hooks.onContextChanged(viewOf(this), v, Object.keys(v).filter(k => v[k] !== this.cv[k]))\n }\n this.cver = app.ver\n return (this.cv = v)\n }\n /** a context change touches a key the last view read */\n ctxChanged(ctx: any): boolean {\n const last = this.lctx\n if (ctx === last) return false\n const keys = this.keys\n if (keys) {\n if (keys.has(ALL)) return true\n for (const k of keys) if (ctx[k] !== last[k]) return true\n }\n // D168: skipped. The dev check (onContextSkip) re-runs a sample of these views\n this.app.ctxSkip?.(this, last, ctx)\n this.lctx = ctx\n return false\n }\n\n /** render again in the next flush though no input changed (a lazy component loaded) */\n refresh() {\n if (this.disposed) return\n this.forced = true\n this.app.commit()\n }\n\n setReady(r: boolean) {\n if (r !== this.ready) {\n this.ready = r\n if (this.parent) this.app.hooks.onReady?.(viewOf(this.parent), viewOf(this), r)\n this.app.commit()\n }\n }\n\n // ---------------------------------------------------------------- render\n render(): any {\n if (this.disposed) return this.outv\n const state = this.cell.get(), ctx = this.context()\n let same = false, viewDirty = this.forced || state !== this.ls || !shallowEq(this.props, this.lp) || !sameKids(this.raw, this.lc) || this.ctxChanged(ctx)\n // no state (yet): the view isn't called; it keeps its last render (as today's state stream,\n // which skips undefined). A child with none is left out of its parent's vnode\n if (state === undefined && viewDirty) {\n if (!this.tmpl) return this.outv\n viewDirty = false\n }\n if (viewDirty) {\n const H = this.app.hooks\n if (H.onStateChanged && state !== this.ls && !this.forced) H.onStateChanged(viewOf(this), state)\n this.forced = false\n this.ls = state; this.lp = this.props; this.lc = this.raw; this.lctx = ctx\n const prev = this.tmpl\n this.view(state, ctx)\n dbg(this, () => 'View rendered')\n // P46-P: the same plain output as last time: the last vnode, by identity\n if (prev?.$p && this.tmpl.$p && this.outv && sameTree(prev, this.tmpl)) { this.tmpl = prev; same = this.app.ran = true }\n else this.reconcile()\n }\n // G-311: after a render that threw (the app's epoch moved), the kids are injected again once\n let kidsDirty = this.ep !== this.app.ep\n this.ep = this.app.ep\n for (const k of this.kids.values()) {\n const v = k.render()\n if (v !== k.last || k.ready !== k.lr) { k.last = v; k.lr = k.ready; kidsDirty = true }\n }\n if (!viewDirty && !kidsDirty) return this.outv\n if (same && !kidsDirty) { this.app.hooks.onRender?.(viewOf(this), this.tmpl); return this.outv }\n let v = this.kids.size ? this.inject(this.tmpl, 'r') : this.tmpl\n if (this.postSels) for (const s of this.postSels) v = posts[s](v, this)\n this.app.hooks.onRender?.(viewOf(this), v)\n return (this.outv = this.parent ? this.app.scopeValue(this.parent, 'DOM', v, this) : v)\n }\n\n /**\n * G-319 (a hidden Switchable page, or below one): no render, but its Collections follow their\n * arrays, so removed items stop and new ones start (statics, replies) while hidden\n */\n sync() {\n if (!this.disposed) for (const k of this.kids.values()) k.sync?.()\n }\n\n /** calls the view with one argument (D164); the onError boundary */\n view(state: any, ctx: any) {\n const def = this.def\n let keys: Set<string> | null = null, context = ctx\n if (ctx !== EMPTY_CTX) {\n const ks = keys = new Set<string>()\n context = new Proxy(ctx, {\n get: (t, k) => (typeof k == 'string' && ks.add(k), t[k as any]),\n has: (t, k) => (typeof k == 'string' && ks.add(k), k in t),\n ownKeys: (t) => (ks.add(ALL), Reflect.ownKeys(t)),\n })\n }\n try {\n this.tmpl = def.view({...this.props, state, children: this.children, slots: this.slots, context, uid: this.uid})\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err))\n let out: any = errorDiv(def.name)\n if (def.onError) {\n try {\n out = def.onError(e, {componentName: def.name})\n warn('SYG406', this, 'View threw; rendered the onError fallback', undefined, e)\n } catch (fe) {\n logError('SYG406', this, 'View threw; rendering the error fallback', undefined, e)\n logError('SYG407', this, 'onError threw; rendering an empty error <div>', 'Make onError return a vnode', fe)\n }\n } else logError('SYG406', this, 'View threw; rendering the error fallback', 'Add .onError for a custom fallback', e)\n this.app.appError(this, e, 'view')\n this.tmpl = out\n }\n const t = this.tmpl\n // G-567: a view that returns a string or a number renders it as text (as renderToString)\n if (typeof t == 'string' || typeof t == 'number') this.tmpl = {text: '' + t}\n else if (!t) this.tmpl = {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n this.keys = keys\n }\n\n /** the components in the template, by id: kept (new props), created, or disposed */\n reconcile() {\n const seen = new Set<string>()\n let ps: string[] | null = null\n const walk = (n: any, path: string, parent: any, idx: number): void => {\n if (!n || n.$p) return\n const sel = n.sel\n // a fragment (no sel): its children are walked in place (G-256)\n if (sel && pres[sel]) {\n const r = pres[sel](n, this, path)\n if (r === n) return\n if (parent) (parent.children = parent.children.slice())[idx] = r\n else this.tmpl = r\n return walk(r, path, parent, idx)\n }\n const data = n.data, host = sel && hosts[sel]\n if (data?.c || host) {\n const id = idOf(n, path)\n seen.add(id)\n const props = propsOf(data.props), children = n.children || (n.text != null ? [{text: n.text}] : [])\n let view = data.c\n if (view) for (const r of resolvers) view = r(view, this) || view\n let k = this.kids.get(id)\n if (k && view && k.def && k.def.view !== view) { k.dispose(); this.kids.delete(id); k = undefined }\n if (k) k.setProps(props, children, n, id)\n else this.kids.set(id, host ? this.host(host, props, children, id, n) : this.child(view, props, children, id, !!data.props?.resetState))\n return\n }\n if (posts[sel] && !(ps ||= []).includes(sel)) ps.push(sel)\n const c = n.children\n if (c) for (let i = 0; i < c.length; i++) walk(c[i], path + '.' + i, n, i)\n }\n walk(this.tmpl, 'r', null, 0)\n this.postSels = ps\n if (this.kids.size > seen.size) for (const [id, k] of this.kids) if (!seen.has(id)) { k.dispose(); this.kids.delete(id) }\n }\n\n /** a host (Collection, Switchable); one that throws renders the owner's error fallback (SYG408) */\n host(make: any, props: Record<string, any>, children: any[], id: string, n: any): any {\n try { return make(this, props, children, id, n) } catch (err) { return this.failed(err) }\n }\n\n /** the owner's error fallback for a child that failed to instantiate (SYG408) */\n failed(err: any): Failed {\n const e = err instanceof Error ? err : new Error(String(err))\n let out: any = errorDiv(this.def.name)\n if (this.def.onError) {\n try { out = this.def.onError(e, {componentName: this.def.name}) || out }\n catch (fe) { logError('SYG407', this, 'onError threw; rendering an empty error <div>', 'Make onError return a vnode', fe) }\n }\n this.app.caught(this, 'SYG408', 'Sub-component threw; rendering the error fallback', e, 'instantiate')\n return new Failed(out)\n }\n\n /** a tag child: state=\"key\" | state={lens} | none (the parent's state) | isolatedState (D174: `resetState`) */\n child(view: any, props: Record<string, any>, children: any[], id: string, reset = false): any {\n const app = this.app\n try {\n const def = app.def(view)\n const st = props.state, calcOf = this.def.calcNames\n if (def.initialState && !def.isolated) {\n fail('SYG405', def.name, 'Sub-component initialState replaces the state its parent passes in', 'Remove initialState, or set isolatedState = true')\n }\n const dflt = def.isolated ? def.initialState : undefined\n const cell = typeof st == 'string' ? keyCell(this.cell, st, calcOf?.has(st) && this.def.name, dflt)\n : st !== undefined ? lensCell(this.cell, st, this.def.name, (e) => app.appError(this, e, 'view'), dflt)\n : def.isolated ? localCell(app, this.cell) : this.cell\n const scope = app.scope()\n return new Inst(app, def, this, cell, this.dom && this.dom.isolateSource(this.dom, scope), props, children, scope,\n this.uid(uidPart(id.replace(/.*::(r\\.)?/, ''))), 'child', reset)\n } catch (err) {\n return this.failed(err)\n }\n }\n\n inject(n: any, path: string): any {\n if (!n || n.$p) return n\n if (n.data?.c || (n.sel && hosts[n.sel])) {\n const k = this.kids.get(idOf(n, path))\n return k && (k.ready ? k.outv : notReady(k.outv))\n }\n const c = n.children\n if (!c) return n\n let out: any\n for (let i = 0; i < c.length; i++) {\n const v = this.inject(c[i], path + '.' + i)\n if (v !== c[i]) (out ||= c.slice())[i] = v\n }\n return out ? {...n, children: out} : n\n }\n\n // ---------------------------------------------------------------- actions\n handle(type: string, data: any, cause: any, src?: string) {\n handle(this, type, data, cause, src)\n }\n\n // ---------------------------------------------------------------- dispose\n dispose() {\n if (this.disposed) return\n const app = this.app\n if (this.def.handlers.has('DISPOSE')) handle(this, 'DISPOSE', undefined, 'built-in')\n // dispose$: the actions it drives run now, while the instance still exists (as today: a\n // `CLEANUP: dispose$` action's driver sinks go out)\n if (this.disp$) { this.dying = true; try { this.disp$.shamefullySendNext(true) } finally { this.dying = false } }\n this.disposed = true\n app.hooks.onDispose?.(viewOf(this))\n if (this.disp$) this.disp$.shamefullySendComplete()\n // G-144: the replies end now (after DISPOSE and dispose$), so the drivers drop its timers and\n // abort its requests; its statics are no longer recomputed\n if (this.st || this.rep) detach(this)\n this.ac?.abort()\n if (this.timers) { this.timers.forEach(clearTimeout); this.timers = null }\n this.kids.forEach(k => k.dispose())\n this.kids.clear()\n const subs = this.subs\n if (subs.length) tearDown(() => { for (const s of subs) s.unsubscribe() }, app.dq, this)\n this.subs = []\n if (this.st$) app.watchers.delete(this)\n this.hub = null\n }\n}\n","/**\n * PLAN-4.6 core: the Collection host (03-proposal §2 hosts/, R2). Registered on import (the\n * public `Collection` module imports this file); the core only looks `hosts.collection` up.\n *\n * It stands where the `<Collection>` marker was in its owner's template and renders the items\n * inside the owner's render: no stream of its own, no pickCombine.\n * - `of`: a component function (D163: no names). `from`: a state key (SYG409 on a calculated\n * one), a `{ get, set }` lens (SYG412 without get(); SYG401 for a non-array) or none (the\n * owner's state is the array).\n * - Items are keyed by `id`, an id-less item by its raw index (D169); one key -> index map per\n * array identity serves every item (cell.ts indexer). A duplicate key renders its first element\n * only; the dev warning is R4's (hooks.onDuplicateKey is the hook point).\n * - `filter` / `sort` (every form today's core accepts; SYG418 for an invalid one) change what\n * renders and in which order; the state array keeps its order, and an item writes back to its\n * own element. An item returning `undefined` removes itself.\n * - The other props go to every item, and the Collection's children are each item's children.\n * - 4-H (D229): no element of its own. It renders a keyed fragment of the items' vnodes (its key:\n * the marker's, else its id), which the DOM driver splices into the parent's children before\n * each patch (utils.ts flat): the items are the parent element's own children, and their keys\n * take the fragment's, so two sibling Collections' items never collide. The wrapper `div` of\n * 5.x is gone: `className` / `style` / `class` / ... on the marker are a removed-form error in development\n * (checks/next.ts) and are ignored.\n * - Removed items are disposed synchronously in the render that drops them (G-257: a move between\n * two Collections is one patch).\n * - PLAN-5 A-1: `viewTransitionName=\"card\"` styles each keyed item's root element with\n * `view-transition-name: card-<id>` (shared.ts vtStyle) and `view-transition-class:\n * card`, the item's own style winning, so a `viewTransitions` action animates each item between\n * its places, across Collections with the same prefix too. Id-less items (keyed by index) and\n * fragment roots get none.\n */\nimport {hosts, resolvers} from '../registry'\nimport {Inst, shallowEq} from '../instance'\nimport {Cell, Index, indexer, itemCell, keyCell, keyOf, keyName} from '../cell'\nimport {CoreDef, isObj} from '../define'\nimport {uidPart, vtStyle} from '../../shared'\nimport {viewOf} from '../view'\nimport {warn, error as logError, fail} from '../../extra/diagnostics/legacy'\n\nconst SORT_FIX = \"Use a field name, { field: 'asc'|'desc'|1|-1 }, or a function\"\nconst sortError = (msg: string, value: any): undefined => void logError('SYG418', 'Collection', msg, SORT_FIX, value)\nconst base = (a: any, b: any, asc = true) => (a > b ? (asc ? 1 : -1) : a < b ? (asc ? -1 : 1) : 0)\n\nfunction fromObj(item: Record<string, any>): ((a: any, b: any) => number) | undefined {\n const e = Object.entries(item)\n if (e.length > 1) return sortError('sort object must have one key; ignored', item)\n const [f, d] = e[0]\n let asc\n if (typeof d == 'string') {\n const x = d.toLowerCase()\n if (x != 'asc' && x != 'desc') return sortError(\"sort direction must be 'asc' or 'desc'; ignored\", item)\n asc = x == 'asc'\n } else if (typeof d == 'number') {\n if (d !== 1 && d !== -1) return sortError('sort direction must be 1 or -1; ignored', item)\n asc = d === 1\n } else return sortError('sort direction must be a string or number; ignored', item)\n return (a, b) => base(a[f], b[f], asc)\n}\n\n/** the comparator of a `sort` prop (today's sortFunctionFromProp) */\nexport function sortFn(p: any): ((a: any, b: any) => number) | undefined {\n if (!p) return\n if (typeof p == 'function') return p\n if (typeof p == 'string') {\n const d = p.toLowerCase()\n if (d == 'asc' || d == 'desc') return (a, b) => base(a, b, d == 'asc')\n return (a, b) => base(a[p], b[p])\n }\n if (Array.isArray(p)) {\n const fs: any[] = p.map(i => typeof i == 'function' ? i\n : typeof i == 'string' ? (['asc', 'desc'].includes(i.toLowerCase()) ? undefined : (a: any, b: any) => base(a[i], b[i]))\n : isObj(i) ? fromObj(i) : undefined).filter(f => typeof f == 'function')\n return (a, b) => fs.reduce((r, f) => (r !== 0 ? r : f(a, b)), 0)\n }\n if (isObj(p)) return fromObj(p)\n return sortError('Invalid sort prop; ignored', p)\n}\n\n/** the Collection's own props (`idfield`, removed in 6.0 (D164), is still kept off the items) */\nconst OWN = new Set(['of', 'from', 'filter', 'sort', 'idfield', 'className', 'viewTransitionName'])\nconst NONE: any[] = []\n\n/** the array cell for `from` (D178: a missing key renders once it appears), or null for an invalid `from` (renders nothing) */\nfunction arrayCell(owner: Inst, from: any): Cell | null {\n const oc = owner.cell, name = owner.def.name\n if (from === undefined) {\n // the owner's state is the array (or its `value`, as today)\n return {\n get: () => { const s = oc.get(); return !Array.isArray(s) && Array.isArray(s?.value) ? s.value : s },\n set: (v) => oc.set(v),\n }\n }\n if (typeof from == 'string') {\n const cs = oc.get(), calc = owner.def.calcNames?.has(from)\n if (isObj(cs) && !(from in cs) && !calc) {\n const arrays = Object.keys(cs).filter(k => Array.isArray(cs[k]))\n warn('SYG401', name, `Collection from=\"${from}\" is not in state${arrays.length ? ` (array fields: '${arrays.join(\"', '\")}')` : ''}; it renders nothing until it exists`, 'Set it to an array in initialState')\n } else if (isObj(cs) && !Array.isArray(cs[from])) warn('SYG401', name, `Collection 'from' field '${from}' is not an array; it renders nothing`, 'Set it to an array in initialState')\n return keyCell(oc, from, calc && name, undefined, 'Collection')\n }\n if (isObj(from) && typeof from.get == 'function') {\n let lp: any = {}, lv: any\n return {\n get() {\n const p = oc.get()\n if (p !== lp) {\n lp = p\n let g: any\n try { g = from.get(p) } catch (e) {\n // G-298: keeps the items it had\n logError('SYG412', name, \"Collection 'from' getter threw; it keeps its items\", 'Guard the getter against missing data', e)\n owner.app.appError(owner, e, 'view')\n return lv\n }\n lv = g\n if (!Array.isArray(lv)) { warn('SYG401', name, \"Collection 'from' getter returned a non-array; it renders nothing\", 'Return an array from get()', lv); lv = NONE }\n }\n return lv\n },\n set(v) {\n if (typeof from.set != 'function') return\n const p = oc.get(), n = from.set(p, v)\n if (n !== p) oc.set(n)\n },\n }\n }\n logError('SYG412', name, \"Collection 'from' prop is invalid; it renders nothing\", 'Use a state key string or { get, set }', from)\n return null\n}\n\n/** a component function through the view resolvers (lazy: the loaded one; the owner renders again when it loads) */\nexport function resolve(view: any, owner: Inst) {\n for (const r of resolvers) view = r(view, owner) || view\n return view\n}\n\nexport class CollectionHost {\n /** key -> item instance */\n items = new Map<any, Inst>()\n /** the items shown, in render order */\n shown: Inst[] = []\n arr: Cell | null\n index: Index | null\n def!: CoreDef\n ready = true\n disposed = false\n outv: any; last: any; lr = true\n ip: Record<string, any> = {}\n kids: any[] = NONE\n props!: Record<string, any>\n // the inputs of the last item list: array, filter, sort prop, comparator\n la: any; lf: any; ls: any; cmp: any\n uidBase: string\n /** the fragment's key (the marker's, else the Collection's id) */\n key: any\n tr: any\n /** the app's render epoch it last rendered at (G-311) */\n ep = 0\n\n constructor(public owner: Inst, props: Record<string, any>, children: any[], id: string, marker: any) {\n this.hostProps(props, marker)\n const of = props.of\n if (!of) fail('SYG411', owner, \"Collection is missing 'of'\", 'Use of={ItemComponent}')\n if (typeof of != 'function') fail('SYG411', owner, `Collection 'of' is a ${typeof of}`, 'Use of={ItemComponent}')\n this.uidBase = owner.uid(uidPart(id.replace(/.*::(r\\.)?/, '')))\n this.arr = arrayCell(owner, props.from)\n this.index = this.arr && indexer(this.arr)\n this.def = owner.app.def(this.view = resolve(of, owner))\n this.setProps(props, children, marker, id)\n }\n\n /**\n * onHostProps (R4): the Collection checks of the dev entry (SYG401 for a missing `from`, D173's\n * string `of`, 4-H's wrapper props: the marker's data); the marker's sel tells a\n * VirtualCollection from a Collection\n */\n hostProps(props: Record<string, any>, m: any) {\n const H = this.owner.app.hooks\n if (H.onHostProps) H.onHostProps(viewOf(this.owner), m.sel, props, m.data)\n }\n\n /** the item component (a lazy() one: the loaded component once it has loaded, G-317) */\n view: any\n\n setProps(props: Record<string, any>, children: any[], marker?: any, id?: string) {\n // (the constructor called the hook before its own checks)\n if (this.props) this.hostProps(props, marker)\n const v = typeof props.of == 'function' ? resolve(props.of, this.owner) : this.view\n if (v !== this.view) {\n // another item component (or a lazy one loaded): the items are made again\n this.def = this.owner.app.def(this.view = v)\n this.clear()\n }\n this.props = props\n if (marker) {\n // tr: a <Transition> around it, applied to each item (4-I G-559, markers/transition.ts):\n // the fragment is made again on each of the owner's renders while there is one (or was)\n const k = marker.key ?? id\n if (this.tr !== (this.tr = marker.data?.tr) || k !== this.key) { this.key = k; this.outv = undefined }\n }\n const ip: Record<string, any> = {}\n for (const k in props) if (!OWN.has(k)) ip[k] = props[k]\n const kids = children.length ? children : NONE\n if (!shallowEq(ip, this.ip) || kids !== this.kids) {\n this.ip = ip\n this.kids = kids\n this.items.forEach(i => i.setProps(ip, kids))\n }\n }\n\n clear() {\n this.items.forEach(i => i.dispose())\n this.items.clear()\n this.shown = []\n this.la = undefined\n }\n\n /** the item instances in the order shown (byId, InstanceView.children) */\n insts(): Inst[] { return this.shown }\n\n /** the visible keys in order: filter and sort over the raw array; a duplicate key once */\n list(a: any[], m: Map<any, number>): any[] {\n const {filter, sort} = this.props\n const cmp = sort !== this.ls ? sortFn(sort) : this.cmp\n let idx: number[] | null = null\n if (typeof filter == 'function' || cmp) {\n idx = []\n for (let i = 0; i < a.length; i++) if (typeof filter != 'function' || filter(a[i], i, a)) idx.push(i)\n if (cmp) idx.sort((x, y) => cmp(a[x], a[y]))\n }\n // G-311: the inputs are kept only once the list was made (a throwing filter / sort is retried)\n this.ls = sort; this.cmp = cmp\n const n = idx ? idx.length : a.length, keys: any[] = []\n for (let x = 0; x < n; x++) {\n const i = idx ? idx[x] : x, k = keyOf(a[i], i)\n // D169: a duplicate key renders its first element (R4 reports it)\n if (m.get(k) !== i) { const H = this.owner.app.hooks; H.onDuplicateKey && H.onDuplicateKey(viewOf(this.owner), k[0] == '\\0' ? i : a[i].id); continue }\n keys.push(k)\n }\n return keys\n }\n\n /**\n * G-319: on a hidden Switchable page (no render): the items follow the array (removed ones are\n * disposed, new ones created, so their background statics and replies run), with no view call\n */\n sync() {\n if (this.disposed) return\n this.items_()\n for (const i of this.shown) i.sync()\n }\n\n /** the item instances for the current array, filter and sort; true when the list changed */\n items_(): boolean {\n if (!this.index) return false\n const app = this.owner.app\n let changed = false\n {\n const [a, m] = this.index()\n const {filter, sort} = this.props\n if (a !== this.la || filter !== this.lf || sort !== this.ls) {\n const keys = this.list(a, m), seen = new Set(keys)\n this.la = a; this.lf = filter\n for (const [k, inst] of this.items) if (!seen.has(k)) { inst.dispose(); this.items.delete(k) }\n const o = this.owner, shown: Inst[] = []\n for (const k of keys) {\n let inst = this.items.get(k)\n if (!inst) {\n const scope = app.scope()\n inst = new Inst(app, this.def, o, itemCell(this.arr!, this.index, k), o.dom && o.dom.isolateSource(o.dom, scope),\n this.ip, this.kids, scope, this.uidBase + '-' + keyName(k), 'item')\n this.items.set(k, inst);\n // its key (A-1's view-transition name)\n (inst as any).k = k\n }\n shown.push(inst)\n }\n if (shown.length != this.shown.length || shown.some((s, i) => s !== this.shown[i])) changed = true\n this.shown = shown\n }\n }\n return changed\n }\n\n render(): any {\n if (this.disposed) return this.outv\n // G-311: after a render that threw, every container is made again once\n const app = this.owner.app\n let changed = !this.outv || this.ep !== app.ep\n this.ep = app.ep\n if (this.items_()) changed = true\n const shown = this.shown, out: any[] = Array(shown.length), vn = this.props.viewTransitionName\n let j = 0\n for (let i = 0; i < shown.length; i++) {\n const inst: any = shown[i], v = inst.render()\n if (v !== inst.last) { inst.last = v; changed = true }\n // an item without state yet (or a removed one) is left out\n if (v !== undefined) out[j++] = this.tr ? this.tr(vn ? named(inst, v, vn) : v) : vn ? named(inst, v, vn) : v\n }\n out.length = j\n if (!changed) return this.outv\n return (this.outv = {sel: undefined, data: {}, children: out, text: undefined, elm: undefined, key: this.key})\n }\n\n dispose() {\n if (this.disposed) return\n this.disposed = true\n this.clear()\n }\n}\n\n/**\n * A-1: the item's vnode with its view-transition name (cached per item, so an unchanged item\n * keeps its vnode). VirtualCollection's rows too (extra/virtual.ts, G-417)\n */\nexport function named(inst: any, v: any, p: string): any {\n const k = inst.k\n if (!v.sel || k[0] == '\\0') return v\n if (inst.vi !== v || inst.vp !== p) {\n inst.vi = v; inst.vp = p\n inst.vo = {...v, data: {...v.data, style: vtStyle(p, k, v.data?.style)}}\n }\n return inst.vo\n}\n\nhosts.collection = (owner, props, children, id, marker) => new CollectionHost(owner, props, children, id, marker)\n","import {h} from './cycle/dom/snabbdom';\n// the core's handler for this marker, registered on import (D157)\nimport './core/hosts/collection';\n\n/** `<Collection of={Item} from=\"items\" />`: a marker vnode the core's Collection host renders */\nconst Collection = (props: any) => {\n const {children, ...sanitizedProps} = props;\n return h('collection', {props: sanitizedProps}, children);\n};\n(Collection as any).componentName = 'collection';\n(Collection as any).preventInstantiation = true;\n\nexport {Collection};\nexport default Collection;\n","\nexport const nullv = (v: any): v is null => v === null\n\nexport const undefinedv = (v: any): v is undefined => v === undefined\n\nexport const number = (v: any): v is number => typeof v === 'number'\n\nexport const string = (v: any): v is string => typeof v === 'string'\n\nexport const text = (v: any): v is string | number => string(v) || number(v)\n\nexport const array = (v: any): v is any[] => Array.isArray(v)\n\nexport const object = (v: any): v is Record<string, any> => typeof v === 'object' && v !== null\n\nexport const fun = (v: any): v is Function => typeof v === 'function'\n\nexport const vnode = (v: any): boolean => object(v) && 'sel' in v && 'data' in v && 'children' in v && 'text' in v\n\nconst svgPropsMap: Record<string, number> = {\n // Container / structural\n svg: 1, g: 1, defs: 1, symbol: 1, use: 1,\n // Shape\n circle: 1, ellipse: 1, line: 1, path: 1, polygon: 1, polyline: 1, rect: 1,\n // Text (no HTML collision: HTML has no <text>, <tspan>, or <textPath>)\n text: 1, tspan: 1, textPath: 1,\n // Gradient / paint\n linearGradient: 1, radialGradient: 1, stop: 1, pattern: 1,\n // Clipping / masking\n clipPath: 1, mask: 1,\n // Marker\n marker: 1,\n // Filter primitives\n filter: 1, feBlend: 1, feColorMatrix: 1, feComponentTransfer: 1,\n feComposite: 1, feConvolveMatrix: 1, feDiffuseLighting: 1,\n feDisplacementMap: 1, feDropShadow: 1, feFlood: 1, feGaussianBlur: 1,\n feImage: 1, feMerge: 1, feMergeNode: 1, feMorphology: 1, feOffset: 1,\n fePointLight: 1, feSpecularLighting: 1, feSpotLight: 1, feTile: 1,\n feTurbulence: 1, feFuncR: 1, feFuncG: 1, feFuncB: 1, feFuncA: 1,\n // Descriptive (excluding 'title' — collides with HTML <title>)\n desc: 1, metadata: 1,\n // Other (excluding 'a', 'image', 'style', 'script' — collide with HTML)\n foreignObject: 1, switch: 1,\n // Animation\n animate: 1, animateMotion: 1, animateTransform: 1, set: 1, mpath: 1,\n}\n\nexport const svg = (v: any): boolean => v.sel in svgPropsMap\n","\nimport * as is from './is'\n\n// P45-B: a vnode this pragma made whose subtree has no component (or other marker the view\n// walk handles), no form field and no vnode from elsewhere. the core's view walk skips it\n// (and, at the root, the whole walk). The flag is on the prototype, not enumerable, so the\n// vnode's own fields are snabbdom's six. Checked by name (`$p`), not by class (a second copy of\n// the core, e.g. Astro's SSR bundle, makes its own).\nfunction Plain(this: any, sel: any, data: any, children: any, text: any, key: any) {\n this.sel = sel\n this.data = data\n this.children = children\n this.text = text\n this.elm = undefined\n this.key = key\n}\nObject.defineProperty(Plain.prototype, '$p', { value: 1 })\n\nconst createTextElement = (text: any): any => is.text(text) ? new (Plain as any)(undefined, undefined, undefined, text, undefined) : undefined\n// A tag whose tree isn't plain: a form field (a superset of isField: a re-run view with the same\n// output keeps its last vnode (P46-P sameTree), which would skip the controlled-input module's\n// re-sync of the DOM value) or a host the view walk knows by its string tag (<collection>,\n// <switchable>). D196: a custom element (a hyphenated tag) may be a form-associated field\nconst FIELD = /^(input|textarea|select)|-/i\n// P46-P: by tag: 1 a form field (FIELD: a prefix), 4 a host (<collection>, <switchable>), 2 an SVG\n// tag. G-350: keyed by the tag part of the selector (before its first '#' or '.'), so dynamic\n// selectors (`li#row-${id}`) don't grow it. A selector with an id or class keeps only bit 1, as\n// P46-P's full-selector tests did (the host and SVG tags match the whole selector)\nconst tags: Record<string, number> = Object.create(null)\nconst bits = (tag: string): number => tags[tag] = +FIELD.test(tag) | (/^(collection|switchable)$/i.test(tag) ? 4 : 0) | (tag in svgTags ? 2 : 0) | (/-/.test(tag) ? 8 : 0)\nconst tagBits = (sel: string): number => {\n const t = tags[sel]\n if (t !== undefined) return t\n let i = 0\n for (let c; i < sel.length && (c = sel.charCodeAt(i)) != 35 && c != 46; i++);\n if (i == sel.length) return bits(sel)\n const tag = sel.slice(0, i)\n return (tags[tag] ?? bits(tag)) & 9\n}\n\n// Mutates the vnode (and its SVG children, not below a foreignObject: that contains HTML):\n// the props become attributes (className as class, attrs win), and the SVG namespace is set\nconst applySvg = (vnode: any): void => {\n // Skip text vnodes (sel is undefined) and nullish values; a vnode this pragma made in the\n // SVG namespace was done, with its subtree, when it was made\n if (!vnode || vnode.sel === undefined || (vnode.$p && vnode.data.ns)) return\n const data = vnode.data || {}\n const props = data.props || {}\n const attrs: any = {}\n for (const k in props) if (k != 'className' && props[k] !== undefined) attrs[k] = props[k]\n if (props.className !== undefined) attrs.class = props.className\n for (const k in data.attrs) if (data.attrs[k] !== undefined) attrs[k] = data.attrs[k]\n const svgData = { ...data, ns: 'http://www.w3.org/2000/svg', attrs }\n delete svgData.props\n vnode.data = svgData\n if (Array.isArray(vnode.children) && vnode.sel !== 'foreignObject') vnode.children.forEach(applySvg)\n}\n\nconst svgTags: Record<string, number> = {\n // Container / structural\n svg: 1, g: 1, defs: 1, symbol: 1, use: 1,\n // Shape\n circle: 1, ellipse: 1, line: 1, path: 1, polygon: 1, polyline: 1, rect: 1,\n // Text (no HTML collision: HTML has no <text>, <tspan>, or <textPath>)\n text: 1, tspan: 1, textPath: 1,\n // Gradient / paint\n linearGradient: 1, radialGradient: 1, stop: 1, pattern: 1,\n // Clipping / masking\n clipPath: 1, mask: 1,\n // Marker\n marker: 1,\n // Filter primitives\n filter: 1, feBlend: 1, feColorMatrix: 1, feComponentTransfer: 1,\n feComposite: 1, feConvolveMatrix: 1, feDiffuseLighting: 1,\n feDisplacementMap: 1, feDropShadow: 1, feFlood: 1, feGaussianBlur: 1,\n feImage: 1, feMerge: 1, feMergeNode: 1, feMorphology: 1, feOffset: 1,\n fePointLight: 1, feSpecularLighting: 1, feSpotLight: 1, feTile: 1,\n feTurbulence: 1, feFuncR: 1, feFuncG: 1, feFuncB: 1, feFuncA: 1,\n // Descriptive (excluding 'title' — collides with HTML <title>)\n desc: 1, metadata: 1,\n // Other (excluding 'a', 'image', 'style', 'script' — collide with HTML)\n foreignObject: 1, switch: 1,\n // Animation\n animate: 1, animateMotion: 1, animateTransform: 1, set: 1, mpath: 1,\n}\n\n// Adds snabbdom hooks to data.hook (a copy); a hook already there runs first (also PLAN-5\n// widget hosts: extra/widget.ts)\nexport const chainHooks = (data: any, hooks: Record<string, (...args: any[]) => void>): void => {\n const existing = data.hook || {}\n const hook = { ...existing }\n // G-485 / G-521: a chained hook function is marked `s` (hydration adopts an element whose\n // chained insert has a postpatch: a ref, autoFocus, a widget); `u`, an insert hook of the\n // user's own under it (its element is made again so that insert runs, as an unchained one is)\n if (existing.insert && !existing.insert.s) hook.u = 1\n for (const name in hooks) {\n const f: any = hook[name] = (...args: any[]) => {\n if (existing[name]) existing[name](...args)\n hooks[name](...args)\n }\n f.s = 1\n }\n data.hook = hook\n}\n\nconst applyFocusProps = (data: any): void => {\n const { autoFocus, autoSelect, ...rest } = data.props\n\n data.props = rest\n data._autoFocus = !!autoFocus\n data._autoSelect = !!autoSelect\n\n const doFocus = (elm: any) => {\n if (elm && typeof elm.focus === 'function') {\n requestAnimationFrame(() => {\n elm.focus()\n if (autoSelect && typeof elm.select === 'function') {\n elm.select()\n }\n })\n }\n }\n\n chainHooks(data, {\n insert: (vnode: any) => doFocus(vnode.elm),\n postpatch: (oldVnode: any, vnode: any) => {\n const wasFocused = oldVnode.data?._autoFocus\n const isFocused = vnode.data?._autoFocus\n if (!wasFocused && isFocused) doFocus(vnode.elm)\n },\n })\n}\n\nconst applyRefProps = (data: any, ref: any): void => {\n const setRef = (elm: any) => {\n if (typeof ref === 'function') {\n ref(elm)\n } else if (ref && typeof ref === 'object' && 'current' in ref) {\n ref.current = elm\n }\n }\n\n chainHooks(data, {\n insert: (vnode: any) => setRef(vnode.elm),\n postpatch: (_oldVnode: any, vnode: any) => setRef(vnode.elm),\n destroy: () => setRef(null),\n })\n}\n\n// B-014: snabbdom's classModule wants a { name: boolean } map. A string (\"a b\") or an\n// array (['a', cond && 'b']) would be iterated by index, adding the classes \"0\", \"1\", ...\n// G-096: clsx-style: strings, nested arrays, objects (truthy keys); falsy entries skipped\nconst addClasses = (map: Record<string, boolean>, klass: any): any => {\n if (klass && typeof klass === 'object') for (const k in klass) Array.isArray(klass) ? addClasses(map, klass[k as any]) : klass[k] && addClasses(map, k)\n else if (klass) for (const name of String(klass).split(/\\s+/)) if (name) map[name] = true\n return map\n}\n\nconst toClassMap = (klass: any): any =>\n typeof klass !== 'string' && !Array.isArray(klass) ? klass : addClasses({}, klass)\n\nconst isObject = (v: any): boolean => is.object(v) && !Array.isArray(v)\n\n// P45-B (D146): nested objects are passed by reference. An object with an undefined entry is\n// copied without it (the DOM modules would write \"undefined\"; the old deep copy dropped it)\nconst clean = (obj: any): any => {\n if (isObject(obj)) for (const k in obj) if (obj[k] === undefined) {\n const out: any = {}\n for (const j in obj) if (obj[j] !== undefined) out[j] = obj[j]\n return out\n }\n return obj\n}\n\n// One pass over the JSX props into snabbdom's module buckets (audit rec 6):\n// - `<module>-<name>` (on-click, attrs-href, data-task-id → dataset.taskId) and `<module>={...}`\n// go to that module's bucket (`data` is snabbdom's `dataset`)\n// - on an element tag, for, role, tabindex, aria-*, form and list (G-463: getter-only DOM\n// properties, which the props module would throw on) and the popover / invoker / anchor attributes\n// (ATTRS) go to attrs (G-370: a component placeholder keeps them as props); an aria-* true is\n// written as \"true\" (D196: snabbdom writes true as \"\", which ARIA doesn't read as true), false\n// as \"false\" for a state whose values include false (G-372: ARIA_FALSE), else (an IDREF, a\n// string, a number) it removes the attribute, as null does; key is dropped; anything else is a\n// prop\n// - an undefined value is skipped (a `<module>-<name>` one still makes its bucket)\n// A bucket is the object passed (`lent`) until a second source adds to it; then it is a copy.\n// sanitizeData doesn't re-enter, so `lent` is per call (null until a bucket is lent).\nlet lent: any\nconst bucket = (out: any, b: string): any => {\n const o = out[b]\n if (is.object(o) && !lent?.[b]) return o\n if (lent) lent[b] = 0\n return out[b] = is.object(o) ? { ...o } : {}\n}\nconst add = (out: any, b: string, v: any): void => {\n if (isObject(out[b]) && isObject(v)) {\n const o = bucket(out, b)\n for (const k in v) if (v[k] !== undefined) o[k] = v[k]\n } else {\n out[b] = clean(v);\n (lent ||= {})[b] = 1\n }\n}\n// P46-P: where a key goes, by key (per modules map; 0: skipped): [bucket, name, kind]. kind 1: a\n// `<module>-<name>` key (its bucket is made even for undefined); 2: a module's own object\n// (3: `class`, made a map first); else the bucket's `name` (no bucket: the data's own key; 4:\n// aria-*, a boolean stringified)\nconst ATTRS = /^(for|form|list|role|tabindex|popovertarget(action)?|command(for)?|closedby|interestfor|anchor|aria-.*)$/\n// G-372: the WAI-ARIA 1.2 states and properties whose value set includes \"false\" (true/false,\n// tristate, and the tokens aria-current / aria-invalid / aria-haspopup), by a prefix no other\n// ARIA 1.2/1.3 attribute has: atomic, busy, checked, current, disabled, expanded, grabbed,\n// haspopup, hidden, invalid, modal, multiline, multiselectable, pressed, readonly, required,\n// selected (sel: not setsize)\nconst ARIA_FALSE = /^aria-(at|bu|ch|cu|di|ex|gr|ha|hi|in|mo|mu|pr|re[aq]|sel)/\n// `c`: a component placeholder (G-370: ATTRS stay props)\nconst route = (key: string, modules: Record<string, any>, c?: any): any => {\n if (key == 'ref' || key == 'key' || key == 'children') return 0\n const dash = key.indexOf('-')\n const prefix = dash > -1 && key.slice(0, dash)\n // G-152: data-task-id → dataset key taskId (a hyphenated dataset key makes the DOM throw)\n if (prefix && modules[prefix] !== undefined) return [modules[prefix] || prefix, prefix == 'data' ? key.slice(dash + 1).replace(/-([a-z])/g, (_, c) => c.toUpperCase()) : key.slice(dash + 1), 1]\n // G-492: on a custom element (c 2), list is its own property (Lit, sygnal/element). G-519: form\n // stays an attribute (a form-associated element's `form` is a getter; the attribute links it).\n // G-542: there, only a string form (an object is the element's own property: r[3])\n if (c != 1 && modules.attrs !== undefined && ATTRS.test(key) && !(c && key == 'list')) return ['attrs', key, prefix == 'aria' && 4, c && key == 'form']\n if (modules[key] !== undefined) return [modules[key] || key, 0, key == 'class' && modules.class !== undefined ? 3 : 2]\n return [modules.props !== undefined && 'props', key]\n}\nconst own = Object.prototype.hasOwnProperty\nconst sanitizeData = (data: any, modules: Record<string, any>, routes: Map<string, any>, c?: any): any => {\n const out: any = {}\n lent = null\n for (const key in data) {\n // G-354: own properties only, as the rest-spread copy had (about 1 ns a call)\n if (!own.call(data, key)) continue\n const val = data[key]\n let r = routes.get(key)\n // G-350: capped (data-dependent keys, e.g. `data-${id}`, are routed but not kept)\n if (r === undefined && (r = route(key, modules, c), routes.size < 1024)) routes.set(key, r)\n if (!r) continue\n const [b, name, kind] = r\n if (kind == 1) {\n const o = bucket(out, b)\n if (val !== undefined) o[name] = val\n } else if (val === undefined) continue\n else if (kind & 2) add(out, b, kind == 3 ? toClassMap(val) : val)\n else if (b) bucket(out, r[3] && typeof val != 'string' ? 'props' : b)[name] = kind ? val === !!val ? (val || ARIA_FALSE.test(key)) && '' + val : val ?? false : val\n else out[key] = val\n }\n const props = out.props\n if (props && (props.autoFocus || props.autoSelect)) applyFocusProps(out)\n if (data.ref) applyRefProps(out, data.ref)\n return out\n}\n\nconst sanitizeText = (children: any[]): string | undefined => children.length > 1 || !is.text(children[0]) ? undefined : children[0].toString()\n\n// Flattens the children into `out` (a non-vnode child becomes a text vnode, or undefined);\n// 1 when every child is plain: none, text, or a plain vnode\nconst flatten = (children: any[], out: any[]): number => {\n let plain = 1\n for (let i = 0; i < children.length; i++) {\n const child = children[i]\n if (is.array(child)) plain &= flatten(child, out)\n else if (is.vnode(child)) {\n out.push(child)\n if (!child.$p && (child.sel !== undefined || child.children)) plain = 0\n } else out.push(createTextElement(child))\n }\n return plain\n}\n\nconst defaultModules: Record<string, string> = {\n attrs: '',\n props: '',\n class: '',\n data: 'dataset',\n style: '',\n hook: '',\n on: ''\n}\n\nexport const createElementWithModules = (modules: Record<string, any>) => {\n // G-370: a component placeholder's keys route without ATTRS, so in their own cache\n const routes = new Map<string, any>(), croutes = new Map<string, any>(), xroutes = new Map<string, any>()\n // the children as one array (`k`: a key that wins over data.key: the JSX runtime's own)\n const ca = (sel: any, data: any, children: any[], k?: any): any => {\n if (typeof sel === 'undefined') {\n sel = 'UNDEFINED'\n // Through the diagnostics bridge (G-044: collected like the other codes), or, with\n // diagnostics not loaded, the same pre-formatted text.\n const msg = 'A JSX tag is undefined, so <UNDEFINED> is rendered instead', fix = 'Import or define the component in this file'\n const core = (globalThis as any).__SYGNAL_DIAGNOSTICS__\n if (core && core.error) core.error('SYG420', 'JSX', msg, fix)\n else console.error(`[Sygnal SYG420] JSX: ${msg}. ${fix}. https://sygnal.js.org/reference/errors#syg420`)\n }\n // CT-1: a control (src/extra/controls.ts) renders its element itself and stamps its marker.\n // It gets this createElement (the JSX runtime entries use the core's, D188).\n const isComponent = is.fun(sel)\n if (isComponent && (sel as any).__sygnalControl) return (sel as any).__sygnalControl(data, children, ce)\n // the core instantiates a component from the vnode's `data.c` (the component function, with\n // its statics); `sel` is its name\n let fn: any\n if (isComponent) {\n if ((sel as any).__sygnalFragment || sel.name === 'Fragment') {\n return sel(data || {}, children)\n }\n data ||= {}\n // preventInstantiation (Portal/Suspense/...): a marker vnode, its function in `data.m` (G-470:\n // how a check tells it from a plain element of that tag), not `data.c`; its children\n // stay an array (they read vnode.children), as for every component below\n fn = sel\n sel = (sel as any).componentName || sel.name || 'FUNCTION_COMPONENT'\n }\n // B-011: a vnode is either text-only (`text`, no children) or has a children array,\n // never both; snabbdom's diff mishandles a vnode with both. A component placeholder\n // keeps an array so the component receives its text child via `children`.\n const text = isComponent ? undefined : sanitizeText(children)\n let kids: any\n const t = tagBits(sel)\n let plain = !isComponent && is.string(sel) && !(t & 5)\n if (typeof text === 'undefined') plain = !!(flatten(children, kids = []) & +plain)\n // G-492: a custom element (bit 8) routes list as a prop, in its own cache\n const d = data ? sanitizeData(data, modules, isComponent ? croutes : t & 8 ? xroutes : routes, isComponent || t & 8 && 2) : {}\n if (fn) d[fn.preventInstantiation ? 'm' : 'c'] = fn\n const key = k !== undefined ? k : data ? data.key : undefined\n const vnode = plain ? new (Plain as any)(sel, d, kids, text, key) : { sel, data: d, children: kids, text, elm: undefined, key }\n if (t & 2) applySvg(vnode)\n return vnode\n }\n const ce = (sel: any, data: any, ...children: any[]): any => ca(sel, data, children)\n // P46-P: the JSX runtime's element path (its props object is the data as is: sanitizeData\n // skips `children`)\n ;(ce as any).a = ca\n ;(ce as any).$r = routes\n return ce\n}\n\nexport const createElement = createElementWithModules(defaultModules)\n/** G-350 (tests): the sizes of the tag cache and of a createElement's route cache */\nexport const __cacheSizes = (ce: any) => ({ tags: Object.keys(tags).length, routes: ce.$r.size })\n\nexport default {\n createElement,\n createElementWithModules\n}\n","/**\n * PLAN-5 V-1: `<VirtualCollection>`, a Collection that renders only the rows in view.\n *\n * <VirtualCollection of={Row} from=\"rows\" className=\"rows\" estimateSize={32} />\n * // a fixed height in CSS: .rows { height: 400px }\n * // jump: JUMP: { ELEMENT: (s, i) => ({ scrollToIndex: '.rows', index: i }) }\n * // FIND: { ELEMENT: (s, id) => ({ scrollToId: '.rows', id, align: 'center' }) }\n *\n * The same `of` / `from` / `filter` / `sort` as Collection (it is the core's Collection host with\n * a window: D169 keys, D177 duplicates, D178 a missing `from`, SYG401/411/412/418), and the other\n * props go to every item. Measurement and the window come from `@tanstack/virtual-core`, a regular\n * dependency of sygnal (D209; tree-shaken when unused).\n *\n * 0 B when unused: nothing runs on import. The tag is a function carrying the pragma's render\n * hook (`__sygnalControl`, as `defineWidget` tags), so its first render registers the host\n * (`hosts['virtual-collection']`) and returns the marker the core's reconcile hands to it.\n *\n * - The element is its own scroll container: a `div` (className, id, style, aria-label/-labelledby/\n * -describedby, `role` (default `list`), tabIndex (default 0, so the keyboard scrolls it)) with\n * `overflow-y: auto` and `overflow-anchor: none` (the virtualizer corrects the offset itself).\n * Inside: a spacer as tall as every row (measured or estimated), and a window moved down to the\n * first rendered row; the rows are in normal flow inside it, so a row's height is its own.\n * - Only the rows in view (+ `overscan`, default 5) have instances. A row scrolled out is disposed\n * like a removed Collection item and made again when it comes back. Its state is its element\n * of the array, so nothing in state is lost; what lives only in the DOM (an uncontrolled input's\n * text, a running EFFECT) is. Keep row state in the array (the canonical Collection item).\n * - G-401: rows are keyed (a row's element is its own). The row holding the focus stays rendered\n * while scrolled out (pinned at its own offset, out of the window's flow) until the focus leaves\n * the list, and no row element is moved in the DOM (a move blurs it in every engine): a window\n * that loses rows at its front while its end changes is patched in two steps. G-424: the pin\n * follows the row's key through a reorder (filter, sort, a new array), and a row element a\n * reorder moves gets the focus back (when it went nowhere; preventScroll; G-462: the element\n * inside a shadow root in the row when the focus is there).\n * - Row heights: `estimateSize` (a number, or `(item, index) => number`, default 32) until a row is\n * rendered; then its measured height (ResizeObserver follows later changes, applied in the next\n * frame: G-402). A 0 measurement (no layout: jsdom) keeps the estimate. A new function at each\n * render is the same estimate (G-394); a number that changes, or a switch between a number and a\n * function, re-measures.\n * - Each row's root element gets `data-index`, `aria-setsize` and `aria-posinset` (1-based, over the\n * filtered list), and `role=\"listitem\"` when the container's role is `list` and the row's root has\n * no role of its own. A row must render one element (SYG432 for a fragment or text).\n * - `scrollToIndex` / `scrollToId` are element commands (methods of the container element):\n * `{ scrollToIndex: '.rows', index, align?, behavior? }`, `{ scrollToId: '.rows', id, align?,\n * behavior? }` (align: 'auto' (default: only when not in view) | 'start' | 'center' | 'end').\n * The row needs no element: the virtualizer scrolls to its offset and keeps correcting it while\n * the rows around it are measured. An id not in the (filtered) list: SYG433 in dev, no scroll.\n * - Without layout (SSR, the mock DOM, jsdom), the window is the first 10 rows' estimate + overscan.\n * - The container must have a bounded height. When it has none (0 tall: SYG430) or grows with its\n * rows (it would render every row: SYG430), the window is clamped to the viewport's height.\n * Whether it grows is measured (G-395, G-427): a max-height that fits the rows bounds it; a\n * percentage of an unbounded parent, calc() or fit-content that follows the rows doesn't.\n * G-462: also under an ancestor's CSS zoom (G-525: not a transform), and the measurement\n * doesn't move the page (scroll anchoring is off around it meanwhile).\n * Items without `id`: SYG431 (index keys: rows and measured heights follow the position).\n * - `viewTransitionName=\"row\"` names each keyed row's root element as Collection does (`row-<id>`,\n * class `row`; G-417), as its SSR markup does.\n *\n * Dev text lives in 'sygnal/diagnostics' (checks/virtual.ts), reached through the core bridge as\n * `virtual(code, owner, extra)`; production reports nothing.\n */\nimport {hosts} from '../core/registry'\nimport {CollectionHost, named} from '../core/hosts/collection'\nimport {Inst} from '../core/instance'\nimport {itemCell, keyName, keyOf} from '../core/cell'\nimport {chainHooks} from '../pragma/index'\nimport {Virtualizer, defaultRangeExtractor, elementScroll, observeElementOffset, observeElementRect} from '@tanstack/virtual-core'\n\nconst SEL = 'virtual-collection'\n/** the container's props (not passed to the items) */\nconst OWN = /^(estimateSize|overscan|role|tabIndex|style|id|aria-(label|labelledby|describedby))$/\nconst NONE: any[] = []\n/** rows in the window when there is no layout (SSR, mock DOM, jsdom) */\nconst ROWS0 = 10\n\nconst dev = (code: number, owner: any, x?: any): any => (globalThis as any).__SYGNAL_DIAGNOSTICS__?.virtual?.(code, owner, x)\n\nconst px = (n: number) => n + 'px'\n/** the element with the focus in `el`'s root (its shadow root: G-426), if any */\nconst act = (el: any): any => el && (el.getRootNode?.() || el.ownerDocument)?.activeElement\n/** G-462: the focused element itself when it is inside open shadow roots (`a` is their host) */\nconst deep = (a: any): any => {\n while (a?.shadowRoot?.activeElement) a = a.shadowRoot.activeElement\n return a\n}\n/** the props the container's vnode data is made from (not estimateSize / overscan: G-394) */\nconst BOX = (x: string) => x != 'estimateSize' && x != 'overscan'\nconst same = (a: any, b: any, d?: any): boolean => {\n const k = Object.keys(a).filter(x => d || BOX(x))\n return k.length == Object.keys(b).filter(x => d || BOX(x)).length && k.every(x => a[x] === b[x] || !d && x == 'style' && a[x] && b[x] && typeof a[x] == 'object' && same(a[x], b[x], 1))\n}\n/** an estimate's kind: a number (by value) or 'f' (any function: an inline one is new each render, G-394) */\nconst kind = (e: any) => (typeof e == 'function' ? 'f' : e)\n\nexport class VirtualHost extends CollectionHost {\n // (no field initializers: the base constructor calls setProps() before they would run)\n declare vp: Record<string, any>\n /** every visible key in order (filter, sort applied); the virtualizer's items */\n declare all: any[]\n declare v: Virtualizer<any, any> | undefined\n /** the scroll container, once on the page */\n declare el: any\n /** the last window: start offset, total size, first index, rows; the container's data */\n declare lw: any\n declare cd: any\n declare gk: (i: number) => any\n /** per item instance: [its vnode, index, set size, role, pinned top, the decorated vnode] */\n declare dc: WeakMap<Inst, any[]>\n /** the shown rows' indexes (aligned with `shown`) */\n declare si: number[]\n /** the focused row's key and index (G-401: kept in the range), and the index pinned outside the window */\n declare fk: any\n declare fi: number\n declare pin: number\n /** the range extractor (a new one when the focused row changes: the virtualizer memoizes the range on it) */\n declare re: (r: any) => number[]\n /** the stable estimateSize the virtualizer calls (it reads the current prop, G-394) */\n declare sz: (i: number) => number\n /** a first patch step that only removed rows ran (G-401) */\n declare p1: boolean\n /** the element in the list with the focus before a patch (G-424) */\n declare fa: any\n declare warned: number\n declare un: (() => void) | undefined\n\n setProps(props: Record<string, any>, children: any[], marker?: any, id?: string) {\n const vp: Record<string, any> = {}, rest: Record<string, any> = {}\n for (const k in props) (OWN.test(k) ? vp : rest)[k] = props[k]\n rest.className = props.className\n if (!this.dc) { this.dc = new WeakMap(); this.all = NONE; this.warned = 0; this.si = []; this.fi = this.pin = -1 }\n const was = this.vp, cls = this.props?.className\n this.vp = vp\n super.setProps(rest, children, marker, id)\n // G-394: the virtualizer reads the estimate through a stable function, so a new inline function\n // keeps the measurements; a number that changes, or a switch between a number and a function,\n // re-measures\n const re = was && kind(vp.estimateSize) !== kind(was.estimateSize)\n if (!was || re || vp.overscan !== was.overscan) this.opts(re)\n // the container's data is made again when its props change (a style object one level deep)\n if (!was || cls !== rest.className || !same(vp, was)) this.cd = undefined\n }\n\n /** the virtualizer, (re)configured from the props and the current list */\n opts(remeasure?: any) {\n const p = this.vp, est = p.estimateSize, o = p.overscan\n if (est !== undefined && !(typeof est == 'function' || est > 0)) dev(434, this.owner, {prop: 'estimateSize', value: est})\n if (o !== undefined && !(o >= 0)) dev(434, this.owner, {prop: 'overscan', value: o})\n this.sz ||= (i: number) => {\n const e = this.vp.estimateSize, s = typeof e == 'function' ? e(this.itemAt(i), i) : e\n return s > 0 ? s : 32\n }\n this.re ||= (r: any) => this.range(r)\n const opts: any = {\n count: this.all.length,\n getItemKey: this.gk ||= (i: number) => this.all[i],\n getScrollElement: () => this.el,\n estimateSize: this.sz,\n rangeExtractor: this.re,\n // G-402: ResizeObserver results are applied in the next frame (no ResizeObserver loop error)\n useAnimationFrameWithResizeObserver: typeof requestAnimationFrame == 'function',\n overscan: o >= 0 ? o : 5,\n initialRect: {width: 0, height: (est > 0 ? est : 32) * ROWS0},\n scrollToFn: elementScroll,\n observeElementOffset,\n observeElementRect: (v: any, cb: any) => observeElementRect(v, (r: any) => cb(this.bound(r))),\n // the height unrounded (rows are in normal flow: rounded sizes would drift from where the\n // browser puts them, by up to half a pixel a row); 0 (no layout: jsdom) is no measurement\n measureElement: (e: any, entry: any, v: any) =>\n entry?.borderBoxSize?.[0]?.blockSize || e.getBoundingClientRect().height || e.offsetHeight || v.options.estimateSize(v.indexFromElement(e)),\n onChange: () => this.disposed || this.owner.app.commit(),\n }\n if (this.v) {\n this.v.setOptions(opts)\n if (remeasure) this.v.measure()\n } else this.v = new Virtualizer(opts)\n }\n\n /**\n * G-401: the default range, plus the focused row when it is outside it (its element must stay:\n * removing it loses the focus). It is pinned at its own offset, out of the window's flow.\n */\n range(r: any): number[] {\n const out = defaultRangeExtractor(r), f = this.fk === undefined ? -1 : this.fi\n this.pin = -1\n if (f >= 0 && f < r.count && out.length && (f < out[0] || f > out[out.length - 1])) {\n this.pin = f\n f < out[0] ? out.unshift(f) : out.push(f)\n }\n return out\n }\n\n /** the row element (container > spacer > window > row) holding `t`, if any */\n rowOf(t: any): any {\n const el = this.el\n for (let n = t; n && n !== el; n = n.parentNode) if (n.parentNode?.parentNode?.parentNode === el && n.hasAttribute?.('data-index')) return n\n }\n\n /** the focused row's key changed: a new range (the virtualizer memoizes it on the extractor) */\n focus(k: any) {\n if (k === this.fk || this.disposed) return\n this.fk = k\n this.fi = k === undefined ? -1 : this.all.indexOf(k)\n this.re = (r: any) => this.range(r)\n this.opts()\n this.owner.app.commit()\n }\n\n /** the raw array element shown at index i */\n itemAt(i: number) {\n const [a, m] = this.index!()\n return a[m.get(this.all[i])!]\n }\n\n /**\n * The rect the window is computed from. No height: SYG430 when the element is laid out (in jsdom\n * nothing is), and the no-layout window. As tall as all the rows and taller than the viewport:\n * the container grows with its rows (no bounded height), so the window is the viewport's height\n */\n bound(r: {width: number; height: number}) {\n const el = this.el, v = this.v!, total = v.getTotalSize(), win = el?.ownerDocument?.defaultView\n if (!r.height) {\n if (el?.getClientRects?.().length) this.warn(1, {reason: 'height'})\n return {width: r.width, height: v.options.initialRect!.height}\n }\n const vh = win?.innerHeight || 0\n // G-462: (the rect is scaled by an ancestor's CSS zoom, clientHeight isn't, as the sizes)\n if (vh && total > vh && Math.max(r.height, el.clientHeight || 0) >= total - 1 && this.grows(el)) {\n this.warn(2, {reason: 'grows', height: r.height})\n // G-502: the viewport's height in the rows' px under an ancestor's CSS zoom. G-525: the zoom\n // only (currentCSSZoom), not a transform (scale(0.02) would make it 50 viewports, and no\n // resize is observed when it goes); without currentCSSZoom the rect / offsetHeight ratio,\n // capped (0.1 to 10)\n const z = el.currentCSSZoom || Math.min(Math.max(el.getBoundingClientRect().height / el.offsetHeight || 1, 0.1), 10)\n return {width: r.width, height: vh / z}\n }\n return r\n }\n\n /**\n * G-395 / G-427: as tall as its rows and taller than the viewport is \"grows\" only when its\n * height follows its content. Measured, not parsed (a max-height that is a percentage of an\n * unbounded parent, calc(), fit-content, a flex or grid item): the spacer is made 1e6 px taller\n * for one forced layout and put back before anything renders (no resize is observed); a\n * container that grows with it is unbounded, one bounded by a max-height that fits its rows\n * stops at it. G-462: with scroll anchoring off in the scrollers around it meanwhile (the\n * content after the list moves by 1e6 px and back: the page would move with it, or in WebKit not\n * quite back)\n */\n grows(el: any): boolean {\n const s = el.firstElementChild?.style\n if (!s) return true\n const up: any[] = [], O = 'overflow-anchor'\n // (G-498: a slotted element's scroller can be in the shadow tree: its slot first)\n for (let n = el.assignedSlot || el.parentElement || el.getRootNode?.().host; n?.style; n = n.assignedSlot || n.parentElement || n.getRootNode?.().host) {\n up.push(n, n.style.getPropertyValue(O), n.style.getPropertyPriority(O), n.hasAttribute('style'))\n n.style.setProperty(O, 'none')\n }\n const h = s.height, a = el.offsetHeight\n s.height = (parseFloat(h) || 0) + 1e6 + 'px'\n const b = el.offsetHeight\n s.height = h\n // (laid out again before anchoring is back)\n void el.offsetHeight\n // G-498: put back through the CSSOM (setting the style attribute is blocked under a CSP\n // style-src without 'unsafe-inline'); no style attribute stays none (read first: Chromium and\n // WebKit write the attribute lazily, and would add style=\"\" after the removal)\n for (let i = 0; i < up.length; i += 4) {\n const n = up[i]\n up[i + 1] ? n.style.setProperty(O, up[i + 1], up[i + 2]) : n.style.removeProperty(O)\n if (!up[i + 3]) n.getAttribute('style'), n.removeAttribute('style')\n }\n return b - a > 5e5\n }\n\n warn(bit: number, x: any) {\n if (this.warned & bit) return\n this.warned |= bit\n dev(430, this.owner, x)\n }\n\n /** the list of keys (as a Collection's: filter, sort, the first of a duplicate key); true when it changed */\n keys(): boolean {\n if (!this.index) return false\n const [a, m] = this.index(), {filter, sort} = this.props\n if (a === this.la && filter === this.lf && sort === this.ls) return false\n // no filter, no sort and no duplicate key: the index's keys are the list, in order (100k rows:\n // no second pass making keys)\n let all: any[]\n if (typeof filter != 'function' && !sort && m.size == a.length) { all = [...m.keys()]; this.ls = sort; this.cmp = undefined }\n else all = this.list(a, m)\n this.la = a; this.lf = filter\n // SYG431 (dev only: a pass over the array)\n if (a.length && !(this.warned & 4) && (globalThis as any).__SYGNAL_DIAGNOSTICS__?.virtual && a.some((x, i) => keyOf(x, i)[0] == '\\0')) { this.warned |= 4; dev(431, this.owner, {count: a.length}) }\n // G-407: the same keys in the same order (a row edited): the virtualizer keeps its key\n // function, so it doesn't rebuild every row's measurement\n const old = this.all\n if (all.length == old.length && all.every((x, i) => x === old[i])) return false\n this.all = all\n if (this.fk !== undefined) {\n if ((this.fi = all.indexOf(this.fk)) < 0) this.fk = undefined\n // G-424: the focused row's new index (or none): a new extractor, since the virtualizer\n // memoizes the indexes on it and on the range (a reorder can keep both)\n this.re = (r: any) => this.range(r)\n }\n // a new key function: the virtualizer re-reads the keys (its measurements are by key)\n this.gk = (i: number) => this.all[i]\n this.opts()\n return true\n }\n\n /** the item instances in the window; true when they changed */\n items_(): boolean {\n const kc = this.keys()\n const v = this.v!, app = this.owner.app, o = this.owner, all = this.all\n const vis = all.length ? v.getVirtualIndexes() : NONE\n const want = new Set<any>()\n for (const i of vis) want.add(all[i])\n const prev = this.shown\n // G-401: rows are keyed, and snabbdom moves (detaches: the focus is lost) every kept row when\n // rows leave the front while the end changes too. Then the rows leaving the front are removed\n // in a patch of their own first (the ends match: nothing moves), the rest in the next one\n // (the starts match): a microtask after the first patch, before the frame is painted. The\n // flush may render again before it patches: the first step's rows stay until then.\n if (this.p1 && !kc) return false\n if (!kc && prev.length && vis.length) {\n const k = (j: number) => (prev[j] as any).k\n let h = 0, e = 0\n while (h < prev.length && h < vis.length && k(h) === all[vis[h]]) h++\n for (e = h; e < prev.length && !want.has(k(e)); e++);\n if (e > h && e < prev.length && k(prev.length - 1) !== all[vis[vis.length - 1]]) {\n for (let j = h; j < e; j++) { prev[j].dispose(); this.items.delete(k(j)) }\n this.shown = prev.slice(0, h).concat(prev.slice(e))\n this.si = this.si.slice(0, h).concat(this.si.slice(e))\n this.p1 = true\n queueMicrotask(() => { this.p1 = false; this.disposed || app.commit() })\n return true\n }\n }\n this.p1 = false\n for (const [k, inst] of this.items) if (!want.has(k)) { inst.dispose(); this.items.delete(k) }\n const shown: Inst[] = []\n for (const i of vis) {\n const k = all[i]\n let inst = this.items.get(k)\n if (!inst) {\n const scope = app.scope()\n inst = new Inst(app, this.def, o, itemCell(this.arr!, this.index!, k), o.dom && o.dom.isolateSource(o.dom, scope),\n this.ip, this.kids, scope, this.uidBase + '-' + keyName(k), 'item')\n this.items.set(k, inst);\n (inst as any).k = k\n }\n shown.push(inst)\n }\n const changed = shown.length != prev.length || shown.some((s, i) => s !== prev[i])\n this.shown = shown\n this.si = vis as number[]\n return changed\n }\n\n clear() {\n super.clear()\n this.all = NONE\n this.si = []\n }\n\n /** a row's root with its index, ARIA position and measuring hook (the same vnode while nothing changed) */\n deco(inst: Inst, x: any, i: number, n: number, list: boolean, top?: string): any {\n const c = this.dc.get(inst)\n if (c && c[0] === x && c[1] === i && c[2] === n && c[3] === list && c[4] === top) return c[5]\n let out = x\n if (!x.sel) {\n // a fragment or text: nothing to measure or label\n if (!(this.warned & 8)) { this.warned |= 8; dev(432, this.owner, {component: this.def.name}) }\n } else {\n // the position for a row with a role (its own, or listitem in a list): not on a generic element\n const d = x.data || {}, role = d.attrs?.role || d.props?.role, attrs: any = {...d.attrs, 'data-index': i}\n if (list || role) attrs['aria-posinset'] = i + 1, attrs['aria-setsize'] = n\n if (list && !role) attrs.role = 'listitem'\n const data: any = {...d, attrs}\n // G-401: the focused row out of the window, at its own offset (relative to the window)\n if (top !== undefined) data.style = {...d.style, position: 'absolute', top, left: '0', width: '100%'}\n chainHooks(data, {insert: (y: any) => this.v?.measureElement(y.elm)})\n // keyed (G-401): a row's element is its own, not the one at its position before\n out = {...x, data, key: (inst as any).k}\n }\n this.dc.set(inst, [x, i, n, list, top, out])\n return out\n }\n\n /** the container's vnode data: its props, attributes, style and the hooks that attach the virtualizer */\n box() {\n if (this.cd) return this.cd\n const p = this.vp, attrs: any = {role: p.role === undefined ? 'list' : p.role, tabindex: p.tabIndex ?? 0}\n for (const k of ['id', 'aria-label', 'aria-labelledby', 'aria-describedby']) if (p[k] != null) attrs[k] = p[k]\n if (attrs.role == null) delete attrs.role\n return (this.cd = {\n props: this.props.className ? {className: this.props.className} : {},\n attrs,\n style: {overflowY: 'auto', overflowAnchor: 'none', ...p.style},\n // (the mock DOM's command check: these methods are the container's)\n vc: {commands: {scrollToIndex: 1, scrollToId: 1}},\n hook: {\n // (`s`: Sygnal's own, so hydration adopts the container: postpatch attaches it, G-521)\n insert: Object.assign((y: any) => this.attach(y.elm), {s: 1}),\n // G-424: a row element the patch moves (a reorder) loses the focus in every engine: the\n // element in the list that had it gets it back when it is still on the page and the\n // focus went nowhere\n // G-462: none when the cached vnode is patched again (snabbdom calls no postpatch then:\n // nothing would let go of the element); in a shadow root in a row, its focused element\n prepatch: (o: any, y: any) => { const a = o !== y && act(this.el); this.fa = a && this.el.contains(a) ? deep(a) : null },\n // G-500: \"went nowhere\" is the document's active element (body or none): in a shadow root,\n // the root's own is none when the focus went to an element outside it\n postpatch: (_: any, y: any) => {\n const a = this.fa, b = a?.ownerDocument.activeElement\n this.fa = null\n if (a?.isConnected && (!b || b === a.ownerDocument.body)) a.focus({preventScroll: true})\n y.elm !== this.el && this.attach(y.elm)\n },\n destroy: () => this.detach(),\n },\n })\n }\n\n attach(el: any) {\n if (this.el) this.detach()\n this.el = el\n el.scrollToIndex = (x: any) => this.scrollTo(typeof x == 'number' ? x : x?.index, x)\n el.scrollToId = (x: any) => {\n const id = typeof x == 'object' && x ? x.id : x, i = id == null ? -1 : this.all.indexOf('' + id)\n if (i < 0) return void dev(433, this.owner, {id, count: this.all.length})\n this.scrollTo(i, x)\n }\n // G-401: which row holds the focus (a focusout to outside the list: none)\n const fin = (e: any) => this.focus(this.all[this.rowOf(e.target)?.getAttribute('data-index')])\n // G-428: no relatedTarget while the focus is still in the list: the window lost the focus\n // (another window, devtools), and it comes back to the same element\n const fout = (e: any) => el.contains(e.relatedTarget || act(el)) || this.focus(undefined)\n el.addEventListener('focusin', fin)\n el.addEventListener('focusout', fout)\n const un = this.v!._didMount()\n this.un = () => { un(); el.removeEventListener('focusin', fin); el.removeEventListener('focusout', fout) }\n this.v!._willUpdate()\n }\n\n scrollTo(i: any, x: any) {\n const n = this.all.length\n if (!(i >= 0 && i < n) || i % 1) return void dev(433, this.owner, {index: i, count: n})\n this.v!.scrollToIndex(i, {align: x?.align, behavior: x?.behavior})\n }\n\n detach() {\n const el = this.el\n if (!el) return\n this.el = undefined\n delete el.scrollToIndex\n delete el.scrollToId\n this.un?.()\n }\n\n render(): any {\n if (this.disposed) return this.outv\n const app = this.owner.app\n let changed = !this.outv || this.ep !== app.ep\n this.ep = app.ep\n if (this.items_()) changed = true\n const v = this.v!, all = this.all, n = all.length, shown = this.shown, si = this.si\n const ms: any[] = n && si.length ? (v as any).getMeasurements() : NONE, pin = this.pin\n // the window starts at its first row in the flow (a pinned row is out of it)\n const w0 = si[0] === pin && si.length > 1 ? si[1] : si[0]\n const start = ms[w0] ? ms[w0].start : 0, total = v.getTotalSize()\n const list = (this.vp.role === undefined ? 'list' : this.vp.role) == 'list'\n const lw = this.lw\n if (!lw || lw[0] !== start || lw[1] !== total || lw[2] !== si[0]) changed = true\n const out: any[] = []\n const vn = this.props.viewTransitionName\n for (let j = 0; j < shown.length; j++) {\n const inst = shown[j], x = inst.render(), i = si[j]\n if (x !== inst.last) { inst.last = x; changed = true }\n // an item without state yet (or a removed one) is left out; G-417: named as a Collection's\n if (x !== undefined) out.push(this.deco(inst, vn ? named(inst, x, vn) : x, i, n, list, i === pin && ms[i] ? px(ms[i].start - start) : undefined))\n }\n const data = this.box()\n if (data !== lw?.[3]) changed = true\n if (!changed) return this.outv\n this.lw = [start, total, si[0], data]\n const win = {sel: 'div', data: {style: {position: 'absolute', top: '0', left: '0', width: '100%', transform: `translateY(${px(start)})`}}, children: out, text: undefined, elm: undefined, key: undefined}\n const spacer = {sel: 'div', data: {style: {position: 'relative', width: '100%', height: px(total)}}, children: [win], text: undefined, elm: undefined, key: undefined}\n return (this.outv = {sel: 'div', data, children: [spacer], text: undefined, elm: undefined, key: this.key})\n }\n\n dispose() {\n if (this.disposed) return\n super.dispose()\n this.detach()\n }\n}\n\nconst make = (owner: any, props: Record<string, any>, children: any[], id: string, marker: any) => new VirtualHost(owner, props, children, id, marker)\n\n/**\n * `<VirtualCollection of={Row} from=\"rows\" className=\"rows\" estimateSize={32} overscan={5} />`:\n * a Collection that instantiates only the rows in view (see the module comment)\n */\nexport const VirtualCollection: any = () => {}\nVirtualCollection.__sygnalControl = (props: any, children: any) => {\n hosts[SEL] ||= make\n const {key, children: c, ...p} = props || {}\n const kids = children?.length ? children : c ? [].concat(c) : NONE\n // (G-493: `m`, a marker mark as the pragma's marker vnodes carry (there, the function): SYG669\n // tells it from a plain element. Not the function itself: the self-reference keeps the module\n // in bundles that don't use it)\n return {sel: SEL, data: {props: p, m: 1}, children: kids, text: undefined, elm: undefined, key}\n}\nVirtualCollection.componentName = SEL\n","/**\n * PLAN-4.6 core: the Switchable host (R2). Registered on import (the public `Switchable`\n * module imports this file).\n *\n * - `of={{ name: Fn }}` (D163: functions only; SYG415), `current` (SYG416), `state` (a key, a\n * lens or none: the pages' state; SYG409 / SYG410 as for a tag child), `instance` (D83).\n * - Every page is created at mount and stays alive while hidden: its intent, actions, PARENT\n * (to the owner's CHILD.select) and, in R3, its background statics run from mount (R4-1).\n * - A hidden page is not rendered: its view is first called when it is first shown, and a page\n * shown again renders only if its inputs changed meanwhile (G-121; D172: no `lazy` prop).\n * - An `isolatedState` page owns its state (a local cell), whatever the Switchable's `state` is,\n * so it never sees a state-bound sibling's slice, nor they its local state (G-292).\n * - D83: the current page shown with another `instance` than it last had is disposed and made\n * again (fresh local state, DISPOSE / BOOTSTRAP); a page never shown adopts the first one.\n * - Its output is the current page's vnode (the page's own DOM scope); READY stays out, as today\n * (the owner treats the Switchable as ready).\n */\nimport {hosts} from '../registry'\nimport {resolve} from './collection'\nimport {Inst, shallowEq} from '../instance'\nimport {Cell, keyCell, lensCell, localCell} from '../cell'\nimport {isObj} from '../define'\nimport {uidPart} from '../../shared'\nimport {error as logError, fail} from '../../extra/diagnostics/legacy'\n\n/** `view`: the page component as given; `fn`: as resolved (a lazy() page: the loaded one, G-317) */\ninterface Page { inst: Inst; i: any; view: any; fn: any }\n\nconst OF_FIX = 'Use of={{ name: Component }}', CUR_FIX = \"Set current to a key of 'of'\"\n\n/** today's addComponent checks (thrown: the owner renders its error fallback, SYG408) */\nfunction check(owner: Inst, props: Record<string, any>) {\n const of = props.of\n if (!of) fail('SYG415', owner, \"Switchable is missing 'of'\", OF_FIX)\n if (!isObj(of)) fail('SYG415', owner, `Switchable 'of' is a ${typeof of}`, OF_FIX)\n if (!Object.values(of).every(c => typeof c == 'function')) fail('SYG415', owner, \"Switchable 'of' has a value that is not a component\", OF_FIX)\n const cur = props.current\n if (!cur || typeof cur != 'string') fail('SYG416', owner, `Switchable 'current' is missing or a ${typeof cur}`, CUR_FIX)\n if (!(cur in of)) fail('SYG416', owner, `Switchable 'current' '${cur}' is not a key of 'of'`, CUR_FIX)\n}\n\n/** a page's props: the Switchable's, kept by identity while equal (`of` compared shallowly) */\nfunction sameProps(a: any, b: any) {\n if (!a || !b) return false\n const ka = Object.keys(a)\n if (ka.length !== Object.keys(b).length) return false\n for (const k of ka) if (a[k] !== b[k] && !(k == 'of' && shallowEq(a[k], b[k]))) return false\n return true\n}\n\nexport class SwitchableHost {\n pages: Record<string, Page> = {}\n cell: Cell\n cur!: string\n ready = true\n disposed = false\n outv: any; last: any; lr = true\n props: any\n kids: any[] = []\n uidBase: string\n\n constructor(public owner: Inst, props: Record<string, any>, children: any[], id: string) {\n check(owner, props)\n const st = props.state, calc = typeof st == 'string' && owner.def.calcNames?.has(st)\n this.cell = typeof st == 'string' ? keyCell(owner.cell, st, calc && owner.def.name, undefined, 'Switchable sub-component')\n : st !== undefined ? lensCell(owner.cell, st, owner.def.name, (e) => owner.app.appError(owner, e, 'view'))\n : owner.cell\n this.uidBase = owner.uid(uidPart(id.replace(/.*::(r\\.)?/, '')))\n this.props = props\n this.kids = children\n for (const name in props.of) {\n const view = props.of[name], fn = resolve(view, owner)\n this.pages[name] = {inst: this.make(name, fn), i: undefined, view, fn}\n }\n this.setProps(props, children)\n }\n\n make(name: string, view: any): Inst {\n const o = this.owner, app = o.app, def = app.def(view), scope = app.scope()\n const inst = new Inst(app, def, o, def.isolated ? localCell(app, this.cell) : this.cell, o.dom && o.dom.isolateSource(o.dom, scope),\n this.props, this.kids, scope, this.uidBase + '-' + uidPart(name), 'page')\n inst.shown = false\n return inst\n }\n\n setProps(props: Record<string, any>, children: any[]) {\n let cur = props.current\n if (!(typeof cur == 'string' && cur in this.pages)) {\n // (today this threw out of the owner's render; the core keeps the page shown)\n logError('SYG416', this.owner, `Switchable 'current' '${cur}' is not a key of 'of'`, CUR_FIX)\n cur = this.cur\n }\n if (!sameProps(props, this.props) || children !== this.kids) {\n this.props = props\n this.kids = children\n for (const n in this.pages) this.pages[n].inst.setProps(props, children)\n }\n // G-317: a lazy() page that has loaded is made again with the loaded component\n for (const n in this.pages) {\n const p = this.pages[n], fn = resolve(p.view, this.owner)\n if (fn !== p.fn) {\n const shown = p.inst.shown\n p.inst.dispose()\n p.inst = this.make(n, p.fn = fn)\n p.inst.shown = shown\n }\n }\n const page = this.pages[cur]\n if (page) {\n // D83: shown with another instance key than it was last shown with: made again\n if (page.i !== undefined && page.i !== props.instance) {\n page.inst.dispose()\n page.inst = this.make(cur, page.fn)\n }\n page.i = props.instance\n }\n if (cur !== this.cur) {\n if (this.cur !== undefined) this.pages[this.cur].inst.shown = false\n this.cur = cur\n }\n if (page) page.inst.shown = true\n }\n\n insts(): Inst[] { return Object.values(this.pages).map(p => p.inst) }\n\n /** only the current page renders (G-121); a hidden page keeps its last vnode and catches up when shown */\n /** G-319: a hidden page's Collections follow their arrays (no view call) */\n sync() {\n if (!this.disposed) for (const n in this.pages) this.pages[n].inst.sync()\n }\n\n render(): any {\n if (this.disposed) return this.outv\n for (const n in this.pages) if (n !== this.cur) this.pages[n].inst.sync()\n const page = this.pages[this.cur]\n return (this.outv = page ? page.inst.render() : undefined)\n }\n\n dispose() {\n if (this.disposed) return\n this.disposed = true\n for (const n in this.pages) this.pages[n].inst.dispose()\n }\n}\n\nhosts.switchable = (owner, props, children, id) => new SwitchableHost(owner, props, children, id)\n","import {h} from './cycle/dom/snabbdom';\n// the core's handler for this marker, registered on import (D157)\nimport './core/hosts/switchable';\n\n/** `<Switchable of={{ a: A, b: B }} current={state.tab} />`: a marker vnode the core's Switchable host renders */\nconst Switchable = (props: any) => {\n const {children, ...sanitizedProps} = props;\n return h('switchable', {props: sanitizedProps}, children);\n};\n(Switchable as any).componentName = 'switchable';\n(Switchable as any).preventInstantiation = true;\n\nexport {Switchable};\nexport default Switchable;\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 {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","/**\n * PLAN-4.6 core: the Portal marker (R2), registered on import by the public `Portal` module.\n * A template rewrite (registry `pres`): the `portal` marker becomes a hidden placeholder whose\n * hooks patch its children into the target with a separate snabbdom patch function. As today\n * (the 5.x core's createPortalPlaceholder):\n * - the target is looked up on insert; one rendered later is retried 10 times, 5 ms apart, and a\n * late mount pokes the DOM driver (G-261 pokeDOM); never found: SYG417;\n * - an update patches the portal's content; a removal patches it to empty (its destroy hooks\n * run: G-359) and removes it;\n * - the children move into the placeholder unprocessed (components inside a Portal are not\n * instantiated, as today).\n * G-316: the mount state lives in one object the placeholder's successive\n * vnodes share (`_p`, handed on by postpatch), so a late-target retry mounts the latest children\n * once, and a removal cancels a pending retry. `_portalVnode` stays on the current vnode (testing).\n */\nimport {pres} from '../registry'\nimport {init as snabbdomInit} from '../../cycle/dom/snabbdom'\nimport defaultModules from '../../cycle/dom/modules'\nimport {pokeDOM, flat} from '../../cycle/dom/utils'\nimport {warn} from '../../extra/diagnostics/legacy'\n\nlet patch: any\nconst notFound = (target: string) => warn('SYG417', 'Portal', `Target '${target}' not found; content not rendered`, 'Render the target first')\n// (fragments among the children are flattened, as the DOM driver does)\nconst box = (children: any[]) => flat({sel: 'div', data: {}, children, text: undefined, elm: undefined, key: undefined})\n\ninterface PortalState { v: any; kids: any[]; pv: any; c: any; t: any; dead: boolean }\n\nfunction mount(st: PortalState, target: string): boolean {\n const container = document.querySelector(target)\n if (!container) return false\n const anchor = document.createElement('div')\n container.appendChild(anchor)\n st.pv = st.v.data._portalVnode = (patch ||= snabbdomInit(defaultModules))(anchor, box(st.kids))\n st.c = st.v.data._portalContainer = container\n return true\n}\n\n/** mount the portal's children into its target (retried while the target isn't rendered yet) */\nfunction start(vnode: any, target: string, kids: any[]) {\n const st: PortalState = vnode.data._p = {v: vnode, kids, pv: null, c: null, t: 0, dead: false}\n let attempts = 0\n const tryMount = () => {\n st.t = 0\n if (st.dead || st.pv) return\n if (mount(st, target)) { if (attempts) pokeDOM(st.c) }\n else if (attempts++ < 10) st.t = setTimeout(tryMount, 5)\n else notFound(target)\n }\n tryMount()\n}\n\nexport function portalPlaceholder(target: string, children: any[]): any {\n const portalChildren = children || []\n return {\n // G-328: a selector a plain div can't match, so snabbdom replaces (destroy / insert) the\n // placeholder when a plain div takes its place, or the reverse, instead of patching it\n sel: 'div.sygnal-portal',\n data: {\n style: {display: 'none'},\n attrs: {'data-sygnal-portal': target},\n portalChildren,\n hook: {\n insert: (vnode: any) => start(vnode, target, portalChildren),\n postpatch: (oldVnode: any, newVnode: any) => {\n const st: PortalState | undefined = oldVnode.data?._p\n // G-318: reached by a patch, never inserted (hydration over server markup, or a plain\n // div at the same position before): it starts here, as the 5.x core mounted it\n if (!st) return void start(newVnode, target, newVnode.data?.portalChildren || [])\n newVnode.data._p = st\n st.v = newVnode\n st.kids = newVnode.data?.portalChildren || []\n // not mounted yet: the pending retry mounts these children\n if (!st.pv) return\n st.pv = newVnode.data._portalVnode = patch(st.pv, box(st.kids))\n newVnode.data._portalContainer = st.c\n },\n destroy: (vnode: any) => {\n const st: PortalState | undefined = vnode.data?._p\n if (!st) return\n st.dead = true\n clearTimeout(st.t)\n const el = st.pv?.elm\n // G-359: patched to empty first, so the content's destroy hooks run (a widget unmounts)\n if (el) patch(st.pv, box([])), el.remove()\n },\n },\n },\n children: [],\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n}\n\npres.portal = (n) => portalPlaceholder(n.data?.props?.target, n.children || [])\n","import {h} from './cycle/dom/snabbdom';\n// the core's handler for this marker, registered on import (D157)\nimport './core/markers/portal';\n\nconst Portal = (props: any) => {\n const {children, ...sanitizedProps} = props;\n return h('portal', {props: sanitizedProps}, children);\n};\n(Portal as any).componentName = 'portal';\n(Portal as any).preventInstantiation = true;\n\nexport {Portal};\nexport default Portal;\n","/**\n * PLAN-4.6 core: the Transition marker (R2), registered on import by the public `Transition`\n * module. A template rewrite (registry `pres`): the `transition` marker is replaced by its first\n * child (walked on, at the marker's path), with snabbdom hooks that add the classes as today\n * (the 5.x core's applyTransitionHooks):\n * `${name}-enter|leave-from` + `-active`, two frames later `-from` becomes `-to`, and at the end\n * (transitionend, or `duration` ms) `-active` and `-to` go. A user's insert/remove hooks on the\n * child still run. G-279: a leaving element pokes the DOM driver once it is gone. Around a\n * Collection (4-I G-559): on each item.\n */\nimport {pres} from '../registry'\nimport {pokeDOM} from '../../cycle/dom/utils'\n\nfunction onEnd(el: any, duration: number | undefined, cb: () => void): void {\n if (typeof duration === 'number') return void setTimeout(cb, duration)\n const h = () => { el.removeEventListener('transitionend', h); cb() }\n el.addEventListener('transitionend', h)\n}\n\n/** a copy of the vnode with the hooks (4-I: a copy, so an item's own vnode keeps its hooks) */\nexport function transitionHooks(vnode: any, p: {name?: string, duration?: number}): any {\n const hook = {...vnode.data?.hook}, {insert, remove} = hook, name = p.name || 'v', duration = p.duration\n const run = (el: any, phase: string, done?: () => void) => {\n const c = (s: string) => `${name}-${phase}-${s}`\n el.classList.add(c('from'), c('active'))\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n el.classList.remove(c('from'))\n el.classList.add(c('to'))\n onEnd(el, duration, () => {\n el.classList.remove(c('active'), c('to'))\n done && done()\n })\n })\n })\n }\n hook.insert = (vn: any) => {\n if (insert) insert(vn)\n const el = vn.elm\n if (el && el.classList) run(el, 'enter')\n }\n hook.remove = (vn: any, rm: () => void) => {\n if (remove) remove(vn, () => {})\n const el = vn.elm\n if (!el || !el.classList) return void rm()\n run(el, 'leave', () => {\n const p = el.parentNode, f = () => el.parentNode || pokeDOM(p)\n rm()\n f()\n el.addEventListener('transitionend', f)\n })\n }\n return {...vnode, data: {...vnode.data, hook}}\n}\n\n// 4-J G-566 / 4-K G-573: an item vnode's copies, per name and duration, under a private symbol\n// (no global symbol registry entry per name)\nconst T = Symbol()\n\npres.transition = (n) => {\n const child = n.children?.[0], p = n.data?.props || {}, k = p.name + ' ' + p.duration\n // no element child: the text child (or the marker itself, left as it is: today's behaviour)\n if (!child?.sel) return child || n\n // 4-I G-559 (D229): a Collection has no element of its own: each item's root element takes the\n // hooks (each item enters and leaves on its own). The host calls `tr` per item vnode; the copy is\n // kept on that vnode for the name and duration, so an unchanged item keeps its vnode (4-J G-566:\n // under a symbol, which nothing that walks a vnode's fields sees). An item whose root is a\n // fragment or text has no element to animate: nothing happens\n return child.sel == 'collection' ? {...child, data: {...child.data, tr: (v: any) => (v[T] ||= {})[k] ||= transitionHooks(v, p)}} : transitionHooks(child, p)\n}\n","import {h} from './cycle/dom/snabbdom';\n// the core's handler for this marker, registered on import (D157)\nimport './core/markers/transition';\n\nconst Transition = (props: any) => {\n const {children, ...sanitizedProps} = props;\n return h('transition', {props: sanitizedProps}, children);\n};\n(Transition as any).componentName = 'transition';\n(Transition as any).preventInstantiation = true;\n\nexport {Transition};\nexport default Transition;\n","/**\n * PLAN-4.6 core: Suspense (R2), registered on import by the public `Suspense` module. A\n * post-processor (registry `posts`) of the injected vnode of an instance whose template has a\n * `suspense` marker (the 5.x core's processSuspensePost):\n * - the core injects a child whose READY is false with data-sygnal-ready=\"false\", and a lazy\n * component still loading renders data-sygnal-lazy=\"loading\";\n * - a boundary with a `fallback` shows it (in a data-sygnal-suspense=\"pending\" div) while any\n * child below it, not below an inner boundary, is either; else its children (one child\n * unwrapped, several in a \"resolved\" div). A child's scoped vnode (data.isolate) was processed\n * by its own instance.\n */\nimport {posts} from '../registry'\n\n// (4-I G-556: through fragments, e.g. a Collection's items)\nfunction hasNotReadyChild(v: any): boolean {\n if (!v) return false\n const a = v.data?.attrs\n // (4-K G-572: a not-ready child whose view returns text is marked `ready: false`: no element to mark)\n if (v.ready === false || a?.['data-sygnal-ready'] === 'false' || a?.['data-sygnal-lazy'] === 'loading') return true\n if (v.sel === 'suspense') return false\n return Array.isArray(v.children) && v.children.some(hasNotReadyChild)\n}\n\nexport function suspensePost(v: any): any {\n if (!v || v.data?.isolate) return v\n if (v.sel === 'suspense') {\n const fallback = v.data?.props?.fallback, children = v.children || []\n const pending = fallback && children.some(hasNotReadyChild)\n if (!pending && children.length === 1) return suspensePost(children[0])\n return {sel: 'div', data: {attrs: {'data-sygnal-suspense': pending ? 'pending' : 'resolved'}}, children: pending ? [typeof fallback === 'string' ? {text: fallback} : fallback] : children.map(suspensePost), text: undefined, elm: undefined, key: undefined}\n }\n const kids = v.children\n let out: any\n for (let i = 0; kids && i < kids.length; i++) {\n const o = suspensePost(kids[i])\n if (o !== kids[i]) (out ||= kids.slice())[i] = o\n }\n return out ? {...v, children: out} : v\n}\n\nposts.suspense = suspensePost\n","import {h} from './cycle/dom/snabbdom';\n// the core's handler for this marker, registered on import (D157)\nimport './core/markers/suspense';\n\nconst Suspense = (props: any) => {\n const {children, ...sanitizedProps} = props;\n return h('suspense', {props: sanitizedProps}, children);\n};\n(Suspense as any).componentName = 'suspense';\n(Suspense as any).preventInstantiation = true;\n\nexport {Suspense};\nexport default Suspense;\n","import {h} from './cycle/dom/snabbdom';\n\nconst Slot = (props: any) => {\n const {children, ...sanitizedProps} = props;\n return h('slot', {props: sanitizedProps}, children);\n};\n(Slot as any).componentName = 'slot';\n(Slot as any).preventInstantiation = true;\n\nexport {Slot};\nexport default Slot;\n","/**\n * PLAN-4.6 core: lazy() components (R2), registered on import by the public `lazy` module.\n * A view resolver (registry `resolvers`): until the import resolves, the LazyWrapper itself is\n * the component (it renders the data-sygnal-lazy=\"loading\" placeholder Suspense waits for, or\n * the error placeholder); once it has, the loaded component replaces it under the same id (a\n * new instance, its state slice as the wrapper's). When the promise settles the owner renders\n * again (Inst.refresh: no state write, unlike the 5.x core's `__sygnalLazyTick`); so does it\n * when a deferred import (`when`) starts (G-385: its placeholder, \"deferred\" until then, is then the\n * \"loading\" one Suspense waits for).\n * G-386: the owners waiting are a set per wrapper with one `.then` each; an owner leaves it when\n * disposed, so a `when` that never triggers keeps no disposed owner.\n */\nimport {resolvers} from '../registry'\n\n/** wrapper -> the owners waiting for it (`done`: settled, nobody waits any more) */\nexport const waiting = new WeakMap<any, Set<any> & {done?: boolean}>()\n\nresolvers.push((view, owner) => {\n if (!view.__sygnalLazy) return\n if (view.__sygnalLazyLoaded()) return view.__sygnalLazyLoadedComponent || undefined\n let w = waiting.get(view)\n if (!w) {\n const set: Set<any> & {done?: boolean} = w = new Set()\n waiting.set(view, set)\n // the owners render again, and so do the wrapper's own instances (a failed load renders its\n // error placeholder: G-310; a started deferred one, its placeholder without `when`)\n const again = () => set.forEach(o => {\n const force = (k: any) => { if (k.def?.view === view && !k.disposed) k.forced = true }\n for (const k of o.kids.values()) k.insts ? k.insts().forEach(force) : force(k)\n o.refresh()\n })\n view.__sygnalLazyStarted?.then(again)\n view.__sygnalLazyPromise?.then(() => { set.done = true; again(); set.clear() })\n }\n const set = w\n if (!set.done && !set.has(owner)) {\n set.add(owner)\n owner.dispose$?.().addListener({next: () => set.delete(owner)})\n }\n})\n","// the core's resolver for lazy components, registered on import (D157)\nimport './core/markers/lazy';\n\n/**\n * PLAN-5 B-4 (D103): `when` defers the import: 'visible' starts it when a placeholder enters the\n * viewport (IntersectionObserver, `rootMargin`; at once without one), 'idle' when the browser is\n * idle after a placeholder is on the page (requestIdleCallback with a 2 s timeout; setTimeout\n * without it). Until then the placeholder is data-sygnal-lazy=\"deferred\" (not \"loading\": a Suspense\n * boundary doesn't wait for it, G-385) plus `data-sygnal-when`, in its own place, so it can scroll\n * into view; once the import starts the owners render again (markers/lazy.ts) and it is the\n * loading one. `placeholderHeight` gives the\n * placeholders a min-height (empty ones stacked together would all be visible at once).\n * SSR and renderComponent's mock DOM run no hooks: the placeholder stays until `load()`\n * (preloading, e.g. on hover). All instances share one import.\n */\nexport interface LazyOptions {\n when?: 'visible' | 'idle';\n /** 'visible': the IntersectionObserver's rootMargin ('200px' starts the import a little earlier) */\n rootMargin?: string;\n /** the placeholder's min-height (a number: px), e.g. the component's expected height */\n placeholderHeight?: number | string;\n}\n\nconst WHEN = 'data-sygnal-when';\n\nexport function lazy(loadFn: () => Promise<any>, options?: LazyOptions): any {\n let cachedComponent: any = null;\n let loadError: any = null;\n const g: any = globalThis, when = options?.when, ph = options?.placeholderHeight;\n // the deferred import's trigger (once), its observer, the placeholder's hooks\n let go: any, io: any;\n const start = () => { io?.disconnect(); go?.(); go = 0; };\n const arm = (v: any) => {\n if (!go) return;\n if (when == 'idle') {\n const f = () => start();\n g.requestIdleCallback ? g.requestIdleCallback(f, {timeout: 2000}) : setTimeout(f, 1);\n } else if (!g.IntersectionObserver) start();\n else (io ||= new g.IntersectionObserver((es: any[]) => es.some(e => e.isIntersecting) && start(), {rootMargin: options?.rootMargin})).observe(v.elm);\n };\n const hook = when && {insert: arm, update: (_: any, v: any) => when != 'idle' && arm(v), destroy: (v: any) => io?.unobserve(v.elm)};\n const style = ph != null && {minHeight: typeof ph == 'number' ? ph + 'px' : ph};\n\n // View function that delegates to the loaded component\n function LazyWrapper(viewArgs: any) {\n if (loadError) {\n return {\n sel: 'div', data: { attrs: { 'data-sygnal-error': 'lazy' } },\n children: [], text: undefined, elm: undefined, key: undefined,\n };\n }\n if (!cachedComponent) {\n return {\n sel: 'div', data: { attrs: { 'data-sygnal-lazy': go ? 'deferred' : 'loading', ...go && { [WHEN]: when } }, ...go && { hook }, ...style && { style } },\n children: [], text: undefined, elm: undefined, key: undefined,\n };\n }\n return cachedComponent(viewArgs);\n }\n\n // Start loading eagerly (with `when`, once triggered) and copy static properties when done\n const started = when && new Promise(r => go = r);\n const loadPromise = (started ? started.then(loadFn) : loadFn())\n .then((mod: any) => {\n cachedComponent = mod.default || mod;\n (LazyWrapper as any).__sygnalLazyLoadedComponent = cachedComponent;\n // Copy static properties so the component works on next render\n const statics = ['model', 'intent', 'context', 'initialState', 'calculated', 'isolatedState',\n 'onError', 'debug', 'componentName', 'connections', 'resources', 'route', 'head', 'uses', 'timers', 'persist', 'viewTransitions', 'browser'];\n for (const key of statics) {\n if (cachedComponent[key] !== undefined && (LazyWrapper as any)[key] === undefined) {\n (LazyWrapper as any)[key] = cachedComponent[key];\n }\n }\n })\n .catch((err: any) => {\n loadError = err;\n console.error('[lazy] Failed to load component:', err);\n });\n\n // Expose lazy loading metadata for Suspense detection\n (LazyWrapper as any).__sygnalLazy = true;\n (LazyWrapper as any).__sygnalLazyLoaded = () => cachedComponent !== null;\n (LazyWrapper as any).__sygnalLazyLoadedComponent = null;\n (LazyWrapper as any).__sygnalLazyPromise = loadPromise;\n // a deferred import's start (G-385: Suspense waits for its placeholder from then on)\n (LazyWrapper as any).__sygnalLazyStarted = started;\n (LazyWrapper as any).__sygnalLazyReRenderScheduled = false;\n // start the import now (a deferred one too); resolves once it has loaded (or failed)\n (LazyWrapper as any).load = () => (start(), loadPromise);\n\n return LazyWrapper;\n}\n","import xs from 'xstream';\nimport {error as logError} from './diagnostics/legacy';\n\n/*\n * PLAN-3 reply actions: the shared part of every driver that answers a request\n * with the sender's own actions (makeFetchDriver, driverFromAsync, the socket driver).\n *\n * - The core stamps each object a component sends to a source marked\n * `__sygnalReplies: true` with the sending instance (`__emitterId`, the same\n * non-enumerable stamp EVENTS gets), and merges `source.replies(instance)` into\n * that instance's actions.\n * - A request that names `ok` / `error` actions from a stamped sender gets reply actions:\n * the driver answers it with `reply(sender, type, data)`, which reaches exactly\n * that instance (never select()/errors()).\n * - When the instance stops listening (disposed), `onStop(sender)` lets the\n * driver abort what it still has in flight for it.\n */\n\nconst SENDER = '__emitterId';\n\n/** the instance that sent a request (undefined when it wasn't sent by a component) */\nexport const senderOf = (req: any) => req[SENDER];\n\n/** `to` (a copy of `from`) with `from`'s sender stamp (a spread drops non-enumerables) */\nexport const keepSender = (from: any, to: any) => {\n if (from[SENDER] !== undefined) Object.defineProperty(to, SENDER, {value: from[SENDER]});\n return to;\n};\n\n/**\n * D57: a request object with a `then` / `catch` key is a thenable (it breaks `await`), so\n * reply-action drivers refuse it (SYG610). True when the request may be sent.\n */\nexport const allowed = (req: any, driver: string) =>\n !('then' in req || 'catch' in req) ||\n logError('SYG610', req.__emitterName, `${driver}: request not sent: it has a 'then'/'catch' key`, \"Use ok: 'ACTION' / error: 'ACTION'\", req);\n\n/** the reply-action half of a driver's source */\nexport const makeReplies = (onStop?: (sender: any) => void) => {\n const to = new Map<any, any>();\n return {\n replies: {\n __sygnalReplies: true,\n replies: (sender: any) => xs.create<any>({\n start: l => { to.set(sender, l); },\n stop: () => { to.delete(sender); onStop?.(sender); },\n }),\n },\n /** deliver `{ type, data }` to the sender's actions (dropped when it's gone) */\n reply: (sender: any, type: any, data: any) => { to.get(sender)?.next({type, data}); },\n /** whether the sender listens to its replies now (a reply to it would not be dropped) */\n listening: (sender: any) => to.has(sender),\n };\n};\n","import xs, {Stream} from 'xstream';\nimport {senderOf, allowed, makeReplies} from './replies';\n\ninterface DriverFromAsyncOptions {\n selector?: string;\n args?: string | string[] | ((val: any) => any);\n return?: string;\n pre?: (val: any) => any;\n post?: (val: any, incoming?: any) => any;\n}\n\n/**\n * Create a driver from a promise-returning function.\n *\n * Each value the app sends to the driver calls the function (arguments picked\n * by `args`, after `pre`). The resolved value, after `post`, is delivered as\n * `{ [return]: value, [selector]: request[selector] }` (defaults:\n * `{ value, category }`) and read with `source.select(category)`. A promise\n * that resolves to `null`/`undefined` is delivered the same way. Replies that\n * resolve before any `select()` listener exists (a BOOTSTRAP request, say) are\n * held and delivered once the first one subscribes.\n *\n * Errors: if the function's promise (or a promise returned by `post`)\n * rejects, or `post` throws, the error is delivered on `source.errors()`,\n * never on `select()`:\n *\n * ```js\n * // payload: { error, category: request.category, request }\n * intent: ({ QUOTE }) => ({\n * GOT_QUOTE: QUOTE.select('quote'),\n * QUOTE_ERROR: QUOTE.errors('quote'), // or .errors() / .errors(e => ...)\n * })\n * ```\n *\n * `errors(selector?)` filters like `select()`: no argument = all errors, a\n * string matches the request's selector property, a function is a predicate on\n * the error payload. An error no errors() listener matches is logged with\n * console.error. Errors that occur before the first errors() listener\n * subscribes (a BOOTSTRAP request) are held like early replies.\n *\n * Reply actions (PLAN-3): a request object a component sends with `ok` /\n * `error` action names gets its outcome as that action, on exactly the sending\n * instance (never on select()/errors()): `ok` data is the resolved value (after\n * `post`), `error` data `{ error, request }`. A request naming only one of them\n * sends the other outcome down select()/errors(). A reply for a disposed\n * instance is dropped. Requests with a `then` / `catch` key are refused (SYG610).\n */\nfunction driverFromAsync(\n promiseReturningFunction: (...args: any[]) => Promise<any>,\n opts: DriverFromAsyncOptions = {}\n): (fromApp$: Stream<any>) => {select: (selector?: any) => Stream<any>; errors: (selector?: any) => Stream<any>; [k: string]: any} {\n const {\n selector: selectorProperty = 'category',\n args: functionArgs = 'value',\n return: returnProperty = 'value',\n pre: preFunction = (val: any) => val,\n post: postFunction = (val: any) => val,\n } = opts;\n\n const functionName = promiseReturningFunction.name || '[anonymous function]';\n const functionArgsType = typeof functionArgs;\n if (\n functionArgsType !== 'string' &&\n functionArgsType !== 'function' &&\n !(Array.isArray(functionArgs) && functionArgs.every((arg: any) => typeof arg === 'string'))\n ) {\n throw new Error(\n `The 'args' option for driverFromAsync(${functionName}) must be a string, array of strings, or a function. Received ${functionArgsType}`\n );\n }\n\n if (typeof selectorProperty !== 'string') {\n throw new Error(\n `The 'selector' option for driverFromAsync(${functionName}) must be a string. Received ${typeof selectorProperty}`\n );\n }\n\n return (fromApp$: Stream<any>) => {\n // G-069: a reply can resolve before anything has subscribed to select() (e.g. a\n // BOOTSTRAP request to an instantly-resolving promise under run()). Such replies are\n // buffered (at most EARLY_REPLY_LIMIT, oldest dropped) until the first select()\n // listener subscribes, then delivered in order on a microtask, so every select()\n // wired in the same pass sees them. After that, a reply that arrives while no one\n // listens is dropped, as with any xstream source.\n const EARLY_REPLY_LIMIT = 100;\n let sendFn: ((val: any) => void) | null = null;\n let started = false;\n let pending: any[] = [];\n const flush = () => {\n const queued = pending;\n pending = [];\n queued.forEach(reply => sendFn?.(reply));\n };\n const deliver = (reply: any) => {\n if (!started || pending.length > 0) {\n pending.push(reply);\n if (pending.length > EARLY_REPLY_LIMIT) pending.shift();\n return;\n }\n sendFn?.(reply);\n };\n\n const toApp$ = xs.create<any>({\n start: (listener) => {\n sendFn = listener.next.bind(listener);\n if (!started) {\n started = true;\n if (pending.length > 0) queueMicrotask(flush);\n }\n },\n stop: () => {\n sendFn = null;\n },\n });\n\n // Active errors(selector) streams (1H-6): an error goes to the ones it matches, and is\n // logged when none matches.\n const errorSubs = new Set<{listener: any; selector: any}>();\n const matches = (selector: any, val: any) =>\n selector === undefined ||\n (typeof selector === 'function' ? selector(val) : val?.[selectorProperty] === selector);\n const filterBy = (stream: Stream<any>, selector?: any) =>\n selector === undefined ? stream : stream.filter((val: any) => matches(selector, val));\n const errMsg = `Error in driver created using driverFromAsync(${functionName})`;\n const dispatchError = (val: any) => {\n let handled = false;\n errorSubs.forEach(sub => {\n let hit = false;\n try { hit = matches(sub.selector, val); } catch (_) {}\n if (hit) {\n handled = true;\n sub.listener.next(val);\n }\n });\n if (!handled) console.error(`${errMsg}: ${val.error}`);\n };\n // G-092: like early replies, errors that occur before the first errors() listener\n // subscribes are held (same limit) and dispatched on a microtask once it does. If\n // nothing has subscribed by the next macrotask, they are dispatched (i.e. logged) then.\n let errStarted = false;\n let pendingErrors: any[] = [];\n const flushErrors = () => {\n errStarted = true;\n const queued = pendingErrors;\n pendingErrors = [];\n queued.forEach(dispatchError);\n };\n\n // 3E/R11: set by the source's dispose(), which Cycle's engine calls on teardown just\n // before it completes the sink proxies; that completion is expected, not worth a warning.\n let disposing = false;\n const {replies, reply} = makeReplies();\n\n fromApp$.addListener({\n next: (incoming: any) => {\n const isObject = typeof incoming === 'object' && incoming !== null;\n if (isObject && !allowed(incoming, `driverFromAsync(${functionName})`)) return;\n const sender = isObject ? senderOf(incoming) : undefined;\n const ok = sender !== undefined && incoming.ok;\n const error = sender !== undefined && incoming.error;\n const preProcessed = preFunction(incoming);\n let argArr: any[] = [];\n if (typeof preProcessed === 'object' && preProcessed !== null) {\n if (typeof functionArgs === 'function') {\n const extractedArgs = functionArgs(preProcessed);\n argArr = Array.isArray(extractedArgs) ? extractedArgs : [extractedArgs];\n }\n if (typeof functionArgs === 'string') {\n argArr = [preProcessed[functionArgs]];\n }\n if (Array.isArray(functionArgs)) {\n argArr = functionArgs.map((arg: string) => preProcessed[arg]);\n }\n }\n const constructReply = (rawVal: any) => {\n let outgoing: any;\n if (returnProperty === undefined) {\n outgoing = rawVal;\n if (typeof outgoing === 'object' && outgoing !== null) {\n outgoing[selectorProperty] = incoming[selectorProperty];\n } else {\n console.warn(\n `The 'return' option for driverFromAsync(${functionName}) was not set, but the promise returned an non-object. The result will be returned as-is, but the '${selectorProperty}' property will not be set, so will not be filtered by the 'select' method of the driver.`\n );\n }\n } else if (typeof returnProperty === 'string') {\n outgoing = {\n [returnProperty]: rawVal,\n [selectorProperty]: incoming[selectorProperty],\n };\n } else {\n throw new Error(\n `The 'return' option for driverFromAsync(${functionName}) must be a string. Received ${typeof returnProperty}`\n );\n }\n return outgoing;\n };\n // Rejections (of the function, a thenable it resolves to, or post()) go to errors();\n // an error no active errors() selector matches is logged, as before.\n const reportError = (err: any) => {\n if (error) return reply(sender, error, {error: err, request: incoming});\n const val = {error: err, [selectorProperty]: incoming?.[selectorProperty], request: incoming};\n if (errStarted) return dispatchError(val);\n if (pendingErrors.push(val) === 1) setTimeout(flushErrors);\n if (pendingErrors.length > EARLY_REPLY_LIMIT) pendingErrors.shift();\n };\n const isThenable = (val: any) => val != null && typeof val.then === 'function';\n promiseReturningFunction(...argArr)\n .then((innerVal: any) =>\n isThenable(innerVal)\n ? innerVal.then((innerOutgoing: any) => postFunction(innerOutgoing, incoming))\n : postFunction(innerVal, incoming)\n )\n .then((val: any) => (ok ? val : constructReply(val)))\n .then((outgoing: any) => {\n try {\n ok ? reply(sender, ok, outgoing) : deliver(outgoing);\n } catch (err) {\n console.error(`${errMsg}: ${err}`);\n }\n }, reportError);\n },\n error: (err: any) => {\n console.error(\n `Error received from sink stream in driver created using driverFromAsync(${functionName}):`,\n err\n );\n },\n complete: () => {\n if (disposing) return;\n console.warn(\n `Unexpected completion of sink stream to driver created using driverFromAsync(${functionName})`\n );\n },\n });\n\n return {\n dispose: () => {\n disposing = true;\n },\n select: (selector?: any) => filterBy(toApp$, selector),\n ...replies,\n errors: (selector?: any) => {\n let sub: any;\n return xs.create<any>({\n start: (listener) => {\n errorSubs.add((sub = {listener, selector}));\n if (!errStarted) queueMicrotask(flushErrors);\n },\n stop: () => {\n errorSubs.delete(sub);\n },\n });\n },\n };\n };\n}\n\nexport {driverFromAsync};\n","/*\n * PLAN-3: the retry delay shared by makeSocketDriver's `reconnect` and makeFetchDriver's `retry`.\n * Delay of retry n (from 0): `min(maxDelayMs, delayMs * 2^n)`, varied by ±`jitter` (a fraction;\n * `false` = none). Defaults `{ delayMs: 500, maxDelayMs: 10000, jitter: 0.2 }`.\n */\nexport const backoff = (p: {delayMs?: number; maxDelayMs?: number; jitter?: number | boolean}, n: number) => {\n const j = p.jitter === false ? 0 : p.jitter == null || p.jitter === true ? 0.2 : +p.jitter;\n return Math.min(p.maxDelayMs ?? 10000, (p.delayMs ?? 500) * 2 ** n) * (1 + j * (2 * Math.random() - 1));\n};\n","/*\n * Browser signals (PLAN-3 §1.6, H-6): window focus / the page becoming visible, and the network\n * coming back online. makeFetchDriver's refetchOnFocus / refetchOnReconnect and refetchEvery use\n * them; PLAN-4's browser sources reuse them. Safe without a DOM (SSR, Node): nothing fires.\n */\n\nexport type BrowserSignal = 'focus' | 'online';\n\n/** true while the document is hidden (a background tab); false without a DOM */\nexport const isHidden = (): boolean => (globalThis as any).document?.visibilityState == 'hidden';\n\n/**\n * Calls `fn('focus')` when the window gains focus or the document becomes visible, and\n * `fn('online')` when the browser goes online. Returns the unsubscribe function.\n */\nexport const onBrowserSignals = (fn: (signal: BrowserSignal) => void): (() => void) => {\n const w: any = (globalThis as any).window;\n if (!w?.addEventListener) return () => {};\n const focus = () => isHidden() || fn('focus'), online = () => fn('online');\n const on: Array<[any, string, () => void]> = [[w, 'focus', focus], [w, 'online', online], [w.document, 'visibilitychange', focus]];\n on.forEach(([t, e, f]) => t?.addEventListener(e, f));\n return () => on.forEach(([t, e, f]) => t?.removeEventListener(e, f));\n};\n","/*\n * Standard Schema (https://standardschema.dev) without a dependency: any validator that exposes\n * `schema['~standard'].validate(value)` (zod, valibot, arktype, ...), sync or async.\n * Used by makeFetchDriver's `validate` (PLAN-3 §1.6, D80); PLAN-4's forms and server functions\n * reuse it.\n */\n\n/** One validation failure, as the schema reports it */\nexport type SchemaIssue = {message: string; path?: ReadonlyArray<PropertyKey | {key: PropertyKey}>};\n\n/** true for a Standard Schema object (it has `~standard.validate`) */\nexport const isStandardSchema = (schema: any): boolean =>\n !!schema && (typeof schema == 'object' || typeof schema == 'function') && typeof schema['~standard']?.validate == 'function';\n\n/**\n * Validates `value`: resolves with the schema's (possibly transformed) value, or rejects with an\n * Error named 'ValidationError' whose `issues` are the schema's issues. A `schema` that isn't a\n * Standard Schema rejects with a TypeError.\n */\nexport const validateWith = async (schema: any, value: any): Promise<any> => {\n const r = await schema['~standard'].validate(value);\n if (!r.issues) return r.value;\n const e: any = new Error('Validation failed: ' + r.issues.map((i: SchemaIssue) => i.message).join('; '));\n e.name = 'ValidationError';\n e.issues = r.issues;\n throw e;\n};\n","import xs, {Stream} from 'xstream';\nimport {senderOf, keepSender, allowed, makeReplies} from './replies';\nimport {backoff} from './backoff';\nimport {isHidden} from './browserSignals';\nimport {validateWith} from './standardSchema';\n\n/*\n * makeFetchDriver(options?) (PLAN-2 E2): an opt-in HTTP driver over `fetch`. Docs on the\n * declarations in src/index.d.ts and docs/guide/drivers.md. Summary:\n *\n * - Request (sink value): `{ url, ok?, error?, key?, category?, method?, headers?, query?, json?,\n * body?, latest?, timeoutMs?, parse?, init? }` or a URL string. `json` is stringified with a JSON\n * content-type; method defaults to POST with a body/json, else GET. `query` is appended as a\n * query string (null/undefined values skipped, arrays repeat the key, before any #fragment).\n * Other fetch options (credentials, mode, cache, ...) go under `init` (R4-5); other top-level\n * keys are the app's own: not sent, but returned on `request`.\n * - Reply actions (PLAN-3, D57/D58): a component's request naming `ok` / `error` actions gets its\n * reply as that action, delivered to exactly the sending instance (./replies.ts), never to\n * select()/errors(): `ok` data is the parsed body (the Response with parse: 'response'),\n * `error` data `{ error, status?, body?, request }`. A request naming only one of them sends\n * the other outcome down the plain path (select()/errors()). `latest` acts per (sender,\n * `key ?? ok ?? error`); `{ abort: 'LOADED' }` / `{ abort: true, key }` cancel the sender's\n * requests under that key; when the sender is disposed its requests with reply actions are aborted.\n * Requests with a `then` / `catch` key are refused (SYG610).\n * - `{ category?, abort: true }` cancels the component's requests in flight in that category\n * (all of its requests without a category); a cancelled request delivers nothing.\n * - `latest: true` (per request, or the driver option): a new request aborts the component's\n * requests still in flight in its category; their late responses/errors are never delivered.\n * - Responses on `select(category?)`: `{ category, value, status, request }`. 2xx only.\n * - Failures on `errors(category?)`: `{ error, category, request, status?, body? }` for a\n * non-2xx status (`error.status`, `error.body` too), a network error, a body that doesn't\n * parse, a timeout (`error.name === 'TimeoutError'`) or no fetch. Never delivered for an\n * aborted/superseded request. Unheard failures are console.error'd.\n * - Isolation (R4-2, D54, like @cycle/http): an isolated component's requests are tagged with\n * its scope (isolateSink); its select()/errors() see only the replies to its own and its\n * descendants' requests (isolateSource); latest/abort act per (scope, category). The root\n * component sees every reply, as an unisolated app always did.\n * - parse: 'auto' (default: JSON when the content-type says json, else text; 204 → null),\n * 'json', 'text', 'response' (the Response itself) or `res => value`. A non-2xx status is\n * always a failure (its body parsed with 'auto').\n * - Early replies (before anything listens) are held until the first select() listener;\n * early failures until the first errors() listener or the next macrotask (R4-4, G-092).\n * - Resources (PLAN-3 3-A; D78): the core sends a component's `resources` static as\n * `{ resources: { name: request | falsy } }` (sender-stamped). Per (sender, name), a request\n * that changed (by JSON) is fetched with latest semantics (the stale one aborted); falsy aborts\n * it. Each step is the reply action RESOURCE `{ name, status, data, error, refreshing }`:\n * - a new request (key change): 'loading', data and error cleared, unless `keepPrevious: true`;\n * - a refetch of the same request (`{ refresh: name | names }`, invalidation, focus, polling,\n * or the same request declared again after a pause): `data` and `error` kept, `status`\n * unchanged, `refreshing: true` (a resource with no result yet stays 'loading');\n * - 'success' (data: the parsed body, validated), 'error' (error: the Error, with\n * `status`/`body` for a non-2xx; `data` kept), 'idle' (back to falsy).\n * `ok` / `error` on the request also dispatch those actions after the RESOURCE write.\n * G-177 / D85: a name left out of the declaration (a hidden Switchable page) is paused: its\n * request is aborted and it keeps its last result (`refreshing` off; 'idle' if it had none);\n * declared again, the same request is a refetch that keeps data, another one a key change.\n * - Cache (D79; D88: opt-in, `cache: queryCache({ staleTime, gcTime, refetchOnFocus,\n * refetchOnReconnect, initial })`, ./queryCache.ts owns the entries, keys, gc, de-duplication,\n * the triggers and SSR seeding; this driver only calls its hooks). Cached: resources' GET/HEAD\n * requests, and any request with `cache: true` or `staleTime`. A resource with a cached entry\n * shows it at once ('success', `refreshing` while it refetches); an entry younger than\n * `staleTime` (default 0) is served without a fetch. Identical cacheable requests in flight\n * share one fetch (each sender gets its own reply); the fetch aborts only when no request\n * still wants it. Focus / reconnect refetch stale mounted (not paused) resources. Without a\n * queryCache, `cache: true` / `staleTime` / `{ prefetch }` do nothing (dev: SYG635).\n * - `{ prefetch: request }` (H-7): fetched into the cache with no reply (a fresh entry or a\n * fetch in flight: nothing new).\n * - `refetchEvery: ms` on a resource polls (after each result; skipped while the document is hidden).\n * - `{ invalidate: tag | tags | '/url-prefix' | (request) => boolean }` (D80): matching cache\n * entries go stale and matching mounted resources refetch (keeping data). Tags are explicit\n * (`tags: ['quotes']` on the request); a string starting with '/' is a URL prefix.\n * `invalidates: …` on any request does the same after its success. G-184: a refetch aborts\n * the resource's older read; a shared fetch in flight for a matching entry still answers its\n * waiters but never writes the cache.\n * - `updates: name | names | { name: true | (data, reply) => data }` (G-184, setQueryData): on\n * a 2xx, before the `ok` action and `invalidates`, the reply becomes the data of the sender's\n * named resources that have a request, and of their cache entries; their reads in flight\n * are aborted and the other mounted resources on those entries show it too.\n * - `retry: n | { count, delayMs, maxDelayMs, jitter }` (default 0; the driver option applies\n * to GET/HEAD only): network errors, 408, 429 (Retry-After honoured) and 5xx are retried with\n * the socket driver's backoff; the failure (with `attempts`) is delivered once, at the end.\n * - `validate: schema` (a Standard Schema): the parsed body is validated (and transformed); a\n * failure is an error with `issues`.\n * - dispose / sink completion aborts everything in flight.\n * - `fetch` is read at request time (options.fetch, else globalThis.fetch), so test stubs work.\n * - PLAN-3 5-1 (H-9): renderComponent's HTTP fake runs this driver over an in-memory fetch;\n * the internal `_tap(request, resourceName?)` option is called right before each fetch so the\n * fake can name what is pending. There is no other copy of these rules.\n */\n\nconst EARLY_LIMIT = 100;\n// the fetch() init keys a request's `init` may set (the driver owns `signal`)\nconst INIT_KEYS = ['method', 'headers', 'body', 'mode', 'credentials', 'cache', 'redirect', 'referrer',\n 'referrerPolicy', 'integrity', 'keepalive', 'priority', 'window', 'duplex'];\n\n// R4-2: the isolation scope path of a request, outermost first (non-enumerable, so a request\n// still toEqual()s what the model returned)\nconst SCOPE = '__sygnalScope';\nexport const scopeOfRequest = (req: any): any[] => (req && typeof req == 'object' && req[SCOPE]) || [];\n/** a copy of the request tagged with one more (outer) scope */\nexport const tagRequest = (req: any, scope: any) => {\n const r = typeof req == 'string' ? {url: req} : req && typeof req == 'object' ? keepSender(req, {...req}) : req;\n if (r && typeof r == 'object') Object.defineProperty(r, SCOPE, {value: [scope, ...scopeOfRequest(req)]});\n return r;\n};\n/** a source at scope path `ns` sees replies to requests made at or under it */\nexport const inScope = (ns: any[], req: any) => {\n const rs = scopeOfRequest(req);\n return ns.every((s, i) => rs[i] === s);\n};\nexport const scopeKey = (req: any) => scopeOfRequest(req).join('\\u0001');\n\n/**\n * a URL with the query appended (arrays repeat the key) before any #fragment (R4-6); `sort`:\n * sorted by name (the cache key)\n */\nexport const withQuery = (href: string, query: any, sort?: any) => {\n if (!query) return href;\n const qs = new URLSearchParams();\n Object.keys(query).forEach(k => [].concat(query[k]).forEach((v: any) => v != null && qs.append(k, String(v))));\n if (sort) qs.sort();\n const s = qs.toString();\n if (!s) return href;\n const hash = href.indexOf('#');\n const base = hash < 0 ? href : href.slice(0, hash);\n return base + (base.includes('?') ? (/[?&]$/.test(base) ? '' : '&') : '?') + s + (hash < 0 ? '' : href.slice(hash));\n};\n\nconst autoParse = async (res: any) => {\n if (res.status == 204) return null;\n const h = res.headers;\n const ct = h && typeof h.get == 'function' ? h.get('content-type') || '' : null;\n // a non-standard fetch stub without headers: prefer json() when it has one\n if (ct === null) return typeof res.json == 'function' ? res.json() : res.text();\n if (!/[/+]json\\b/i.test(ct)) return res.text();\n const text = await res.text();\n return text ? JSON.parse(text) : null;\n};\n\nconst PARSERS: Record<string, (res: any) => any> = {\n auto: autoParse,\n json: res => res.json(),\n text: res => res.text(),\n response: res => res,\n};\n\nconst pickInit = (init: any) => {\n const out: any = {};\n if (init && typeof init == 'object') INIT_KEYS.forEach(k => { if (init[k] !== undefined) out[k] = init[k]; });\n return out;\n};\n\n/** headers merged case-insensitively (R4-5); plain objects and Headers instances */\nconst mergeHeaders = (...all: any[]) => {\n if (typeof Headers != 'function') return Object.assign({}, ...all);\n const h = new Headers();\n all.forEach(x => x && new Headers(x).forEach((v, k) => h.set(k, v)));\n const out: Record<string, string> = {};\n h.forEach((v, k) => { out[k] = v; });\n return out;\n};\n\nconst IDEMPOTENT = /^(GET|HEAD)$/i;\n// D80: an invalidate value matches a request by tag, URL prefix ('/…') or predicate\nexport const hit = (x: any, q: any) => {\n try {\n return typeof x == 'function' ? !!x(q) : [].concat(x).some((t: any) =>\n t[0] == '/' ? String(q.url).startsWith(t) : [].concat(q.tags).includes(t as never));\n } catch (_) { return false; }\n};\n// a settled resource status ('success' / 'error')\nconst SETTLED = /^[se]/;\n\nexport function makeFetchDriver(options: any = {}) {\n // D88: the query cache (queryCache()), or none\n const C = options.cache;\n if (C && !C.key) throw new Error('[Sygnal] makeFetchDriver: cache takes queryCache(...) from sygnal');\n const driver = (request$: Stream<any>) => {\n let seq = 0;\n let disposed = false;\n // requests in flight: id → { category, scope (key), sender, rk (reply key), rn (resource),\n // q (the request), timer, f (the fetch it waits on), ok / ko (its outcomes) }\n const inflight = new Map<number, any>();\n const subs = new Set<{l: any; sel: any; err: boolean; ns: any[]}>();\n // R4-4: replies held until the first select() listener, failures until the first errors()\n // listener (or the next macrotask, when they're logged if nothing listens)\n const started = [false, false];\n const early: any[][] = [[], []];\n\n const matches = (s: any, v: any) =>\n inScope(s.ns, v.request) && (s.sel === undefined || (typeof s.sel == 'function' ? s.sel(v) : v.category === s.sel));\n const dispatch = (err: boolean, v: any) => {\n let heard = false;\n subs.forEach(s => {\n let hit = false;\n try { hit = s.err === err && matches(s, v); } catch (_) {}\n if (!hit) return;\n heard = true;\n // R4-3: a throwing listener doesn't stop the others\n try { s.l.next(v); } catch (e) { console.error('[Sygnal] makeFetchDriver: a listener threw', e); }\n });\n if (err && !heard) console.error(`[Sygnal] makeFetchDriver: request${v.category === undefined ? '' : ` '${v.category}'`} failed (nothing listens to errors()):`, v.error);\n };\n const flush = (k: number) => {\n started[k] = true;\n const q = early[k];\n early[k] = [];\n q.forEach(v => dispatch(!!k, v));\n };\n const emit = (err: boolean, v: any) => {\n if (disposed) return;\n const k = +err;\n if (started[k]) return dispatch(err, v);\n if (early[k].push(v) > EARLY_LIMIT) early[k].shift();\n if (err && early[k].length == 1) setTimeout(() => started[k] || flush(k));\n };\n const source = (ns: any[]): any => {\n const make = (err: boolean) => (sel?: any) => {\n let sub: any;\n return xs.create<any>({\n start: l => {\n subs.add((sub = {l, sel, err, ns}));\n const k = +err;\n if (!started[k]) { started[k] = true; queueMicrotask(() => flush(k)); }\n },\n stop: () => { subs.delete(sub); },\n });\n };\n return {\n select: make(false),\n errors: make(true),\n isolateSource: (_: any, scope: any) => source(ns.concat(scope)),\n isolateSink: (sink$: any, scope: any) => sink$.map((req: any) => tagRequest(req, scope)),\n // PLAN-4.6: the same per value (the core scopes a request without a stream per instance)\n isolateValue: tagRequest,\n // the core sends a component's `resources` static here (PLAN-3 3-A)\n __sygnalStatic: 'resources',\n // 5-3: what is in flight, cached and declared (t.cache, inspect()); how many cache\n // entries / mounted resources an `invalidate` value matches (dev diagnostics)\n __inspect: inspect,\n __matches: (x: any) => inval(x, 1),\n ...replies,\n };\n };\n\n // marks matching cache entries stale and refetches matching mounted resources (keeping\n // data); `dry`: only counts them\n const inval = (x: any, dry?: any) => {\n let n = C ? C.inval(x, dry) : 0;\n // G-184: a shared fetch already in flight for a matching entry never writes the cache\n // (and nothing new joins it)\n dry || C?.f.forEach((F: any) => hit(x, F.q) && stale(F));\n const m = seq;\n rsrc.forEach((cur, s) => cur.forEach((R, name) => { if (!R.p && R.q && hit(x, R.q)) { n++; dry || load(s, name, R, 1, m); } }));\n return n;\n };\n\n // ends a request: true if it was still live (so its result may be delivered). D79: its fetch\n // is aborted when no request still wants it\n const finish = (id: number) => {\n const r = inflight.get(id);\n if (!r) return false;\n inflight.delete(id);\n clearTimeout(r.timer);\n const F = r.f;\n if (F && !F.x && F.s.delete(r) && !F.s.size) {\n done(F);\n try { F.c.abort?.(); } catch (_) {}\n }\n return true;\n };\n const done = (F: any) => {\n F.x = 1;\n clearTimeout(F.t);\n if (C?.f.get(F.k) === F) C.f.delete(F.k);\n };\n const stale = (F: any) => { F.z = 1; C.f.delete(F.k); };\n const cancel = (which: (r: any) => boolean) =>\n inflight.forEach((r, id) => { if (which(r)) finish(id); });\n\n // 3-A: sender → resource name → R { j (JSON of its request), q (the request), k (cache key),\n // last (the last write), p (paused), t (poll timer), i (its request id) }\n const rsrc = new Map<any, Map<string, any>>();\n const stop = (s: any, n: string, R: any) => {\n clearTimeout(R.t);\n cancel(r => r.sender === s && r.rk === '\\0' + n);\n };\n // a disposed sender's requests with reply actions (and resources) are aborted\n const {replies, reply} = makeReplies(sender => {\n rsrc.get(sender)?.forEach(R => { clearTimeout(R.t); C?.use(R); });\n rsrc.delete(sender);\n cancel(r => r.rk !== undefined && r.sender === sender);\n });\n // G-184: `updates` (setQueryData): the reply (or fn(current data, reply)) becomes the data\n // of the sender's named resources that have a request, and of their cache entries; a read\n // of them in flight is aborted, and every mounted resource on that entry shows it at once\n const upd = (s: any, u: any, v: any) => {\n const cur = rsrc.get(s);\n (typeof u == 'object' && !Array.isArray(u) ? Object.keys(u) : [].concat(u)).forEach((n: string) => {\n const R = cur?.get(n), q = R?.q, f = u[n];\n if (!q) return;\n const k = C?.key(q, 1), d = typeof f == 'function' ? f(R.last?.data ?? C?.get(k)?.v, v) : v;\n if (k !== undefined) {\n C.put(k, q, d);\n const F = C.f.get(k);\n F && stale(F);\n }\n rsrc.forEach((c, s2) => c.forEach((R2, n2) => {\n if (R2 === R || (k !== undefined && !R2.p && R2.k === k)) { stop(s2, n2, R2); write(s2, n2, R2, 'success', d); }\n }));\n });\n };\n const write = (s: any, n: string, R: any, status: string, data?: any, error?: any, refreshing?: any) => {\n reply(s, 'RESOURCE', {name: n, ...(R.last = {status, data, error, refreshing: refreshing || undefined})});\n // refetchEvery: polls after each result, skipping while the document is hidden\n clearTimeout(R.t);\n const ms = R.q?.refetchEvery;\n if (ms > 0 && !R.p && !refreshing && SETTLED.test(status))\n R.t = setTimeout(function tick() { isHidden() ? (R.t = setTimeout(tick, ms)) : load(s, n, R, 1, seq); }, ms);\n };\n // D78: (re)loads resource R. `same`: the same request again (keeps data); `after` (a\n // refetch: refresh, invalidation, focus, polling) skips the cache and fetches anew\n const load = (s: any, n: string, R: any, same?: any, after?: number) => {\n const q = R.q, k = C?.key(q, 1), E = C?.get(k), L = R.last, go = after !== undefined || !C?.fresh(k, q);\n stop(s, n, R);\n C?.use(R, k);\n if (E && 'v' in E && !q.validate) write(s, n, R, 'success', E.v, undefined, go);\n else if ((same || q.keepPrevious) && L && SETTLED.test(L.status)) write(s, n, R, L.status, L.data, L.error, true);\n else write(s, n, R, 'loading');\n if (go || q.validate) R.i = send(q, s, n, after, R);\n };\n\n // `pf`: a prefetch (into the cache, no reply)\n const send = (req: any, sender = senderOf(req), rn?: string, after = -1, R?: any, pf?: any): any => {\n if (typeof req == 'string') req = {url: req};\n if (!req || typeof req != 'object' || disposed || !allowed(req, 'makeFetchDriver')) return;\n const {url, category, method, headers, query, json, body, latest, timeoutMs, parse, abort, init, ok, error, key, resources, refresh, invalidates, updates, retry, validate, prefetch} = req;\n if ('invalidate' in req) return inval(req.invalidate);\n if (prefetch) return C && send(prefetch, 0, rn, -1, R, 1);\n if (resources || refresh) {\n if (sender === undefined) return;\n const cur = rsrc.get(sender) || new Map();\n rsrc.set(sender, cur);\n if (refresh) return [].concat(refresh).forEach((n: string) => { const R = cur.get(n); R?.q && !R.p && load(sender, n, R, 1, seq); });\n new Set([...cur.keys(), ...Object.keys(resources)]).forEach(n => {\n let R = cur.get(n);\n // D85 / G-177: left out (a hidden Switchable page): paused, keeping its last result\n if (!(n in resources)) {\n if (R && !R.p) {\n R.p = 1;\n stop(sender, n, R);\n C?.use(R);\n const L = R.last;\n if (!L || !SETTLED.test(L.status)) write(sender, n, R, 'idle');\n else if (L.refreshing) write(sender, n, R, L.status, L.data, L.error);\n }\n return;\n }\n let q = resources[n];\n if (q && typeof q == 'string') q = {url: q};\n const j = q ? JSON.stringify(q) : '', paused = R?.p;\n if (!R) cur.set(n, (R = {j: ''}));\n R.p = 0;\n if (R.j === j && !paused) return;\n const same = R.j === j;\n R.j = j;\n R.q = q;\n if (q) load(sender, n, R, same);\n else { stop(sender, n, R); C?.use(R); write(sender, n, R, 'idle'); }\n });\n return;\n }\n const scope = scopeKey(req);\n // reply actions: keyed per (sender, key ?? ok ?? error); a resource per (sender, '\\0' + name)\n const rk = rn !== undefined ? '\\0' + rn : !pf && sender !== undefined && (ok || error) ? key ?? ok ?? error : undefined;\n if (sender !== undefined && (typeof abort == 'string' || (abort && key !== undefined)))\n return cancel(r => r.sender === sender && r.rk === (key ?? abort));\n // per (scope, category): another component's requests are never cancelled\n if (abort) return cancel(r => r.scope === scope && (!('category' in req) || r.category === category));\n if (rn !== undefined || (!pf && (latest ?? options.latest))) cancel(rk === undefined ? r => r.rk === undefined && r.scope === scope && r.category === category : r => r.sender === sender && r.rk === rk);\n\n const href = withQuery((options.baseUrl || '') + (url ?? ''), query);\n const base = options.init, own = init;\n const h = mergeHeaders(options.headers, base?.headers, own?.headers, headers);\n let b = body ?? own?.body;\n if (json !== undefined) {\n b = JSON.stringify(json);\n if (!Object.keys(h).some(k => k.toLowerCase() == 'content-type')) h['content-type'] = 'application/json';\n }\n const m = method || own?.method || base?.method || (b !== undefined ? 'POST' : 'GET');\n const k = C?.key(req, rn !== undefined || pf);\n const id = ++seq;\n const r: any = {category, scope, sender, rk};\n inflight.set(id, r);\n // an outcome with a reply action goes to the sender's actions, the other to errors()/select()\n const fail = r.ko = (e: any, extra?: any) => finish(id) && (R && write(sender, rn!, R, 'error', R.last?.data, e),\n rk !== undefined && error ? reply(sender, error, {error: e, request: req, ...extra}) : rn === undefined && !pf && emit(true, {error: e, category, request: req, ...extra}));\n r.ok = async (v: any, status: number) => {\n if (validate) try { v = await validateWith(validate, v); } catch (e: any) { return fail(e, {status, issues: e.issues}); }\n if (!finish(id)) return;\n if (R) write(sender, rn!, R, 'success', v);\n if (updates) upd(sender, updates, v);\n rk !== undefined && ok ? reply(sender, ok, v) : rn === undefined && !pf && emit(false, {category, value: v, status, request: req});\n if (invalidates) inval(invalidates);\n };\n const ms = timeoutMs ?? options.timeoutMs;\n if (ms > 0) {\n r.timer = setTimeout(() => {\n const e: any = new Error(`Request timed out after ${ms}ms: ${href}`);\n e.name = 'TimeoutError';\n fail(e);\n }, ms);\n }\n // D79: a fresh cache entry answers without a fetch\n if (after < 0 && C?.fresh(k, req)) return queueMicrotask(() => r.ok(C.get(k).v, 200)), id;\n // D79: identical cacheable requests share a fetch (a refetch only one started after it asked)\n let F = k !== undefined && C.f.get(k);\n if (!F || F.id <= after) {\n const rp = retry ?? (IDEMPOTENT.test(m) ? options.retry : 0);\n const pol = rp && typeof rp == 'object' ? rp : {count: +rp || 0};\n const tries = pol.count ?? 3;\n F = {id, k, q: req, s: new Set(), n: 0};\n if (k !== undefined) C.f.set(k, F);\n const pz = parse || options.parse || 'auto';\n const parser = typeof pz == 'function' ? pz : PARSERS[pz] || autoParse;\n // the global fetch is called as a method: a detached window.fetch throws \"Illegal invocation\"\n const g: any = globalThis;\n const doFetch = options.fetch || (typeof g.fetch == 'function' && ((u: string, i: any) => g.fetch(u, i)));\n const fetchInit = {\n ...pickInit(base),\n ...pickInit(own),\n method: m,\n headers: h,\n body: b,\n };\n // the outcome, to every request waiting on this fetch (the failure once, after the last attempt)\n const end = (e: any, x?: any, status?: number) => {\n done(F);\n F.s.forEach((w: any) => e ? w.ko(e, tries ? {...x, attempts: F.n} : x) : w.ok(x, status));\n };\n const go = () => {\n const ctl: any = F.c = typeof AbortController == \"function\" ? new AbortController() : {};\n const live = () => F.c === ctl && !F.x;\n // D80: retries left: the next attempt is scheduled (a Retry-After in seconds wins)\n const again = (res?: any) => {\n if (F.n > tries) return false;\n F.t = setTimeout(go, res?.headers?.get?.('retry-after') * 1e3 || backoff(pol, F.n - 1));\n return true;\n };\n F.n++;\n let p: Promise<any>;\n try {\n if (typeof doFetch != 'function') throw new Error('fetch is not available in this environment (pass makeFetchDriver({ fetch }))');\n // 5-1 (H-9): renderComponent's fake learns which request (and resource) the next fetch is for\n options._tap?.(req, rn, pf);\n // called synchronously, so a test sees the call right after the sink emitted\n p = Promise.resolve(doFetch(href, {...fetchInit, signal: ctl.signal}));\n } catch (e) {\n p = Promise.reject(e);\n }\n p.then(async (res: any) => {\n if (!live()) return;\n // R4-3: anything that throws here (a non-Response, a parser) fails the request\n try {\n const st = res.status;\n if (res.ok === false || st < 200 || st > 299) {\n let errBody: any;\n try { errBody = await autoParse(res); } catch (_) {}\n if (!live() || ((st == 408 || st == 429 || st > 499) && again(res))) return;\n const e: any = new Error(`HTTP ${st}${res.statusText ? ' ' + res.statusText : ''}: ${href}`);\n e.status = st;\n e.body = errBody;\n return end(e, {status: st, body: errBody});\n }\n let v: any;\n try { v = await parser(res); } catch (e) { return live() && end(e, {status: st}); }\n if (!live()) return;\n if (k !== undefined && !F.z) C.put(k, req, v);\n end(0, v, st);\n } catch (e) {\n live() && end(e);\n }\n }, (e: any) => { live() && !again() && end(e); });\n };\n go();\n }\n F.s.add(r);\n r.f = F;\n return id;\n };\n\n // D79: focus / reconnect refetch the stale mounted resources (the fake passes `_on`)\n const off = C?.on(options._on, () => {\n const m = seq;\n rsrc.forEach((cur, s) => cur.forEach((R, n) => {\n if (!R.p && R.q && R.k !== undefined && !inflight.has(R.i) && !C.fresh(R.k, R.q)) load(s, n, R, 1, m);\n }));\n });\n if (C) C.d = send;\n // the cache listing (t.cache, inspect()); undefined without a queryCache (dev: SYG635)\n const inspect = () => ({cache: C?.list()});\n const shut = () => {\n cancel(() => true);\n off?.();\n rsrc.forEach(cur => cur.forEach(R => clearTimeout(R.t)));\n };\n\n request$.addListener({\n next: (req: any) => { try { send(req); } catch (e) { console.error('[Sygnal] makeFetchDriver: invalid request', req, e); } },\n error: (e: any) => console.error('[Sygnal] makeFetchDriver: the request stream errored', e),\n complete: shut,\n });\n\n return {...source([]), dispose: () => { shut(); disposed = true; }};\n };\n // the Vike glue hydrates the cache of the drivers it is given (pageContext.queryCache)\n driver.cache = C;\n return driver;\n}\n","import {onBrowserSignals} from './browserSignals';\nimport {withQuery, hit} from './fetchDriver';\n\n/*\n * queryCache(options?) (PLAN-3 D88, 5-5): the opt-in query cache of makeFetchDriver, in its own\n * export so apps that only make requests don't pay for it:\n *\n * makeFetchDriver({ cache: queryCache({ staleTime, gcTime, refetchOnFocus, refetchOnReconnect, initial }) })\n *\n * It owns the entries (key → { k, q (the request), v (data), at (fetched at), s (marked stale),\n * n (resources using it), g (gc timer) }), gc, freshness (the stale-while-revalidate decision),\n * the fetches identical requests share (de-duplication, `f`), entry invalidation, the focus /\n * reconnect trigger and SSR seeding. The driver calls its hooks (key, fresh, get, put, use,\n * inval, on, list) and keeps resources, polling, retries and validation.\n *\n * - Keys: method + URL as written (the driver's baseUrl left out, query sorted) + body + parse.\n * Cacheable: a resource's GET/HEAD request, and any request with `cache: true` or `staleTime`\n * (`cache: false` opts out; a `parse` function / 'response' or a non-string body never is).\n * - SSR seeding (H-7): `dehydrate()` returns a JSON-safe snapshot `[{ key, data, updatedAt, tags }]`\n * of the entries with data; `hydrate(snapshot)` / `queryCache({ initial })` write it back (an\n * entry newer than the snapshot's is kept). `set(request, data)` writes one entry (a loader on\n * the server). Entries keep their `updatedAt`, so a seeded entry is fresh for `staleTime`.\n * - `prefetch(request)`: the attached driver (the last makeFetchDriver given this cache) fetches\n * the request into the cache without a reply, like the `{ prefetch }` sink command.\n */\n\nconst IDEMPOTENT = /^(GET|HEAD)$/i;\n\nexport function queryCache(o: any = {}): any {\n const map = new Map<string, any>();\n const now = () => Date.now();\n const gc = (E: any) => {\n clearTimeout(E.g);\n const ms = o.gcTime ?? 3e5;\n // unref: a server's seeded cache never keeps Node alive\n if (ms < 1 / 0) (E.g = setTimeout(() => E.n || map.delete(E.k), ms) as any).unref?.();\n };\n const entry = (k: string, q: any) => {\n let E = map.get(k);\n if (!E) map.set(k, (E = {k, q, n: 0}));\n return E;\n };\n // the key of a cacheable request (else undefined); `res`: a resource's\n const key = (q: any, res?: any) => {\n if (typeof q == 'string') q = {url: q};\n const {method, json, body, parse, query} = q;\n const m = (method || (json !== undefined || body !== undefined ? 'POST' : 'GET')).toUpperCase();\n const b = json !== undefined ? JSON.stringify(json) : body ?? '';\n if (q.cache === false || typeof b != 'string' || typeof parse == 'function' || parse == 'response' ||\n !(q.cache || q.staleTime != null || (res && IDEMPOTENT.test(m)))) return;\n return [m, withQuery(q.url ?? '', query, 1), b, parse].join(' ').trim();\n };\n const fresh = (k: any, q: any) => {\n const E = map.get(k);\n return E?.at > 0 && !E.s && now() - E.at < (q?.staleTime ?? o.staleTime ?? 0);\n };\n const put = (k: string, q: any, v: any, at = now()) => {\n const E = entry(k, q);\n E.v = v;\n E.at = at;\n E.s = 0;\n E.q = q;\n E.n || gc(E);\n };\n const C: any = {\n key,\n fresh,\n put,\n get: (k: any) => map.get(k),\n // the fetches identical cacheable requests share (the driver's flight records), key → flight\n f: new Map(),\n // resource R now uses key k (or none): the entries' subscriber counts, gc when unused\n use: (R: any, k?: string) => {\n if (R.k === k) return;\n const O = map.get(R.k);\n if (O && !--O.n) gc(O);\n if ((R.k = k) !== undefined) {\n const E = entry(k as string, R.q);\n E.n++;\n clearTimeout(E.g);\n }\n },\n // D80: marks the matching entries stale (`dry`: only counts them)\n inval: (x: any, dry?: any) => {\n let n = 0;\n map.forEach(E => { if (hit(x, E.q)) { n++; dry || (E.s = 1); } });\n return n;\n },\n // focus / reconnect call `fn` (the driver refetches its stale mounted resources); `on`: the\n // test fake's signal source\n on: (on: any, fn: () => void) => (on || onBrowserSignals)((sig: string) => {\n o[sig == 'focus' ? 'refetchOnFocus' : 'refetchOnReconnect'] === false || fn();\n }),\n list: () => [...map.values()].map(E => ({key: E.k, age: E.at && now() - E.at, stale: !fresh(E.k, E.q), subscribers: E.n, data: E.v, tags: E.q?.tags})),\n dehydrate: () => [...map.values()].filter(E => E.at > 0).map(E => ({key: E.k, data: E.v, updatedAt: E.at, tags: E.q?.tags})),\n hydrate: (snap: any) => snap?.forEach?.((e: any) => {\n if (!(map.get(e.key)?.at >= e.updatedAt)) put(e.key, {url: e.key.split(' ')[1], tags: e.tags}, e.data, e.updatedAt);\n }),\n set: (q: any, data: any) => {\n const k = key(q, 1);\n if (k !== undefined) put(k, typeof q == 'string' ? {url: q} : q, data);\n },\n prefetch: (q: any) => C.d?.({prefetch: q}),\n };\n C.hydrate(o.initial);\n return C;\n}\n","import xs, {Stream} from 'xstream';\nimport {senderOf, keepSender, allowed, makeReplies} from './replies';\nimport {error as logError} from './diagnostics/legacy';\nimport {backoff} from './backoff';\n\n/*\n * makeSocketDriver(options?) (PLAN-3 §1.3): WebSocket and server-sent events, declared per\n * component instance and answered with reply actions (./replies.ts). Docs on the declarations\n * in src/index.d.ts. Summary:\n *\n * - Sink values:\n * - `{ connections: { [name]: spec | falsy } }`: the sender's whole set of connections. Diffed\n * per (sender, name): a new name opens, a removed or falsy one closes, a changed URL /\n * protocols / withCredentials / share closes and reopens, anything else (action names,\n * reconnect) only rebinds.\n * - `{ to: name, json? | text? | binary? }`: send on the sender's connection `name` (json is\n * stringified). Queued while (re)connecting, bounded (`queueLimit`, oldest dropped). A send\n * to no such connection, a closed one, or an SSE one is SYG611 (not sent).\n * - A value with a `then` / `catch` key (or a spec with one) is SYG610 (ignored).\n * - Spec: `{ socket: url, protocols?, message?, open?, close?, error?, reconnect?, share? }` or\n * `{ sse: url, withCredentials?, message?, open?, close?, error?, events?, reconnect?, share? }`.\n * URLs are prefixed with `baseUrl` unless absolute; a socket path resolves against `location`\n * with ws:/wss: for http:/https:.\n * - Reply actions (to exactly the sender): `message` (data: the JSON-parsed frame when it parses,\n * else the raw data), `open` ({ reconnected }), `close` ({ code, reason, willReconnect }: only\n * for closes the driver didn't make, G-148), `error` ({ error }); SSE `events: { name: 'ACTION' }`\n * names actions for named events. An event type without an action name goes to `select(name?)` as\n * `{ name, type, data }` (the plain form).\n * - Reconnect (default on): jittered exponential backoff, `{ delayMs: 500, maxDelayMs: 10000,\n * jitter: 0.2 }`, per spec over the driver's `reconnect`; `jitter: false` + equal delays is a\n * fixed delay. A failure to open is a drop. Removal, replacement or dispose cancels a retry.\n * SSE: EventSource retries transient drops itself (close fires with willReconnect: true); the\n * driver's reconnect applies when it gives up (readyState CLOSED).\n * - Sharing (default): connections with the same URL (and protocols / withCredentials) share one\n * socket, ref-counted; every subscriber gets each event. `share: false` opts out.\n * - A disposed sender's connections close (and their retries stop); app dispose closes all.\n * - No WebSocket / EventSource (SSR): nothing opens, nothing is reported.\n * - `WebSocket` / `EventSource` are read at connect time: options.WebSocket ?? globalThis.WebSocket.\n */\n\nconst SCOPE = '__sygnalScope';\nconst scopeOf = (v: any): any[] => v[SCOPE] || [];\n/** a copy of a sink value tagged with one more (outer) scope */\nconst tag = (v: any, scope: any) => v && typeof v == 'object'\n ? Object.defineProperty(keepSender(v, {...v}), SCOPE, {value: [scope, ...scopeOf(v)]}) : v;\n\nexport function makeSocketDriver(options: any = {}) {\n return (sink$: Stream<any>) => {\n const g: any = globalThis;\n // sender → name → entry { sender, name, spec, scope, key, t (its transport), opened }\n const conns = new Map<any, Map<string, any>>();\n // key → transport { key, url, spec, subs: Set<entry>, s (socket), open, queue, n (attempts), timer, on (SSE names) }\n const transports = new Map<string, any>();\n const subs = new Set<any>();\n let disposed = false;\n let unshared = 0;\n\n const bad = (msg: string, v: any) =>\n logError('SYG611', v.__emitterName, `makeSocketDriver: ${msg}`, \"Declare { connections: { room: { socket: url } } }, then send { to: 'room', json }\", v);\n\n const deliver = (e: any, type: string, data: any) => {\n const action = e.spec[type];\n if (typeof action == 'string' && e.sender !== undefined) return reply(e.sender, action, data);\n const ev = {name: e.name, type, data};\n subs.forEach(s => {\n if ((s.name === undefined || s.name === e.name) && s.ns.every((x: any, i: number) => e.scope[i] === x)) {\n try { s.l.next(ev); } catch (err) { console.error(err); }\n }\n });\n };\n const each = (t: any, f: (e: any) => any) => [...t.subs].forEach(f);\n const parse = (d: any) => {\n if (typeof d == 'string') try { return JSON.parse(d); } catch (_) {}\n return d;\n };\n const resolve = (u: string, sse: boolean) => {\n if (!/^[a-z][a-z\\d+.-]*:/i.test(u)) u = (options.baseUrl || '') + u;\n const loc = g.location;\n if (sse || /^wss?:/i.test(u) || !loc) return u;\n try {\n const r = new URL(u, loc.href);\n r.protocol = r.protocol == 'https:' ? 'wss:' : 'ws:';\n return r.href;\n } catch (_) { return u; }\n };\n const policy = (spec: any) => {\n const r = spec.reconnect, d = options.reconnect;\n return r === false || (r == null && d === false) ? null : {...(d && typeof d == 'object' && d), ...(r && typeof r == 'object' && r)};\n };\n\n const out = (t: any, data: any, e: any) => {\n try { t.s.send(data); } catch (error) { deliver(e, 'error', {error}); }\n };\n // SSE named events: one listener per name across the subscribers\n const listen = (t: any) => t.s && t.sse && each(t, e => Object.keys(e.spec.events || {}).forEach(name => {\n if (t.on.has(name)) return;\n t.on.add(name);\n const s = t.s;\n s.addEventListener(name, (m: any) => t.s === s && each(t, x => {\n const a = x.spec.events?.[name];\n if (typeof a == 'string' && x.sender !== undefined) reply(x.sender, a, parse(m.data));\n }));\n }));\n\n // the socket closed (or failed to open) without the driver closing it\n const gone = (t: any, info: any) => {\n t.s = null;\n t.open = false;\n let again: any;\n each(t, e => {\n const p = !t.x && policy(e.spec);\n deliver(e, 'close', {...info, willReconnect: !!p});\n if (p) again = again || p;\n else detach(e, true);\n });\n if (again && t.subs.size) t.timer = setTimeout(() => connect(t), backoff(again, t.n++));\n };\n\n const connect = (t: any) => {\n t.timer = 0;\n const C = t.sse ? options.EventSource ?? g.EventSource : options.WebSocket ?? g.WebSocket;\n if (typeof C != 'function') return;\n let s: any;\n try {\n s = t.sse ? new C(t.url, {withCredentials: !!t.spec.withCredentials}) : new C(t.url, t.spec.protocols);\n } catch (error) {\n // a URL the constructor rejects never opens: no retry\n each(t, e => deliver(e, 'error', {error}));\n t.x = 1;\n return gone(t, {code: 1006, reason: '' + error});\n }\n t.s = s;\n t.on = new Set();\n const mine = (f: any) => (ev: any) => { if (t.s === s) f(ev); };\n s.onopen = mine(() => {\n t.n = 0;\n t.open = true;\n each(t, e => { deliver(e, 'open', {reconnected: !!e.opened}); e.opened = true; });\n const q = t.queue;\n t.queue = [];\n q.forEach((x: any) => t.s === s && out(t, x.data, x.e));\n });\n s.onmessage = mine((m: any) => { const d = parse(m.data); each(t, e => deliver(e, 'message', d)); });\n s.onerror = mine((error: any) => {\n each(t, e => deliver(e, 'error', {error}));\n if (t.sse) {\n // CLOSED: EventSource gave up (the driver's reconnect applies); else it retries itself\n if (s.readyState == 2 || ![...t.subs].some(e => policy(e.spec))) { s.close(); gone(t, {}); }\n else if (t.open) { t.open = false; each(t, e => deliver(e, 'close', {willReconnect: true})); }\n }\n });\n if (!t.sse) s.onclose = mine((c: any) => gone(t, {code: c.code, reason: c.reason}));\n listen(t);\n };\n\n // closes the driver makes: no `close` action, late events ignored, retry cancelled\n const end = (t: any) => {\n clearTimeout(t.timer);\n transports.delete(t.key);\n const s = t.s;\n t.s = null;\n if (s) try { s.close(); } catch (_) {}\n };\n const detach = (e: any, keep?: boolean) => {\n const t = e.t;\n if (!keep) conns.get(e.sender)?.delete(e.name);\n if (!t) return;\n e.t = null;\n t.subs.delete(e);\n t.queue = t.queue.filter((x: any) => x.e !== e);\n if (!t.subs.size) end(t);\n };\n const attach = (e: any) => {\n const key = e.spec.share === false ? e.key + '#' + ++unshared : e.key;\n let t = transports.get(key);\n const fresh = !t;\n if (fresh) transports.set(key, (t = {key, sse: e.sse, url: e.url, spec: e.spec, subs: new Set(), queue: [], n: 0, on: new Set()}));\n e.t = t;\n t.subs.add(e);\n if (fresh) connect(t);\n else {\n listen(t);\n // joined an open shared socket: it is open for this subscriber too\n if (t.open) queueMicrotask(() => { if (e.t === t && t.open && !e.opened) { e.opened = true; deliver(e, 'open', {reconnected: false}); } });\n }\n };\n\n const declare = (sender: any, next: any, scope: any[]) => {\n let mine = conns.get(sender);\n if (!mine) conns.set(sender, (mine = new Map()));\n mine.forEach((e, name) => { if (!next[name]) detach(e); });\n Object.keys(next).forEach(name => {\n const spec = next[name];\n if (!spec) return;\n const old = mine!.get(name);\n if (typeof spec != 'object' || (typeof spec.socket != 'string' && typeof spec.sse != 'string') || !allowed(spec, 'makeSocketDriver')) {\n if (old) detach(old);\n if (typeof spec == 'object' && ('then' in spec || 'catch' in spec)) return;\n return bad(`connection '${name}' needs a socket or sse URL`, spec);\n }\n const sse = typeof spec.sse == 'string';\n const url = resolve(sse ? spec.sse : spec.socket, sse);\n // the connection's identity: a change reconnects, anything else only rebinds\n const key = (spec.share === false ? 'u' : '') + (sse ? 'e' + !!spec.withCredentials : 's' + JSON.stringify(spec.protocols)) + url;\n if (old && old.key === key) {\n old.spec = spec;\n if (old.t) listen(old.t);\n return;\n }\n if (old) detach(old);\n const e = {sender, name, spec, scope, key, sse, url, t: null, opened: false};\n mine!.set(name, e);\n attach(e);\n });\n };\n\n const send = (sender: any, v: any) => {\n const e = conns.get(sender)?.get(v.to);\n const t = e?.t;\n if (!t || t.sse) return bad(t ? `'${v.to}' is a server-sent events connection (read-only)` : `no connection named '${v.to}' is open`, v);\n const data = v.json !== undefined ? JSON.stringify(v.json) : v.text ?? v.binary;\n if (t.open) out(t, data, e);\n else if (t.queue.push({data, e}) > (options.queueLimit ?? 100)) t.queue.shift();\n };\n\n const closeAll = () => {\n conns.forEach(m => m.forEach(e => detach(e)));\n conns.clear();\n };\n const {replies, reply} = makeReplies(sender => {\n conns.get(sender)?.forEach(e => detach(e));\n conns.delete(sender);\n });\n\n sink$.addListener({\n next: (v: any) => {\n if (!v || typeof v != 'object' || disposed || !allowed(v, 'makeSocketDriver')) return;\n try {\n const sender = senderOf(v);\n if (v.connections !== undefined) declare(sender, v.connections || {}, scopeOf(v));\n else if (v.to !== undefined) send(sender, v);\n else bad('expected { connections } or { to, json | text | binary }', v);\n } catch (e) { console.error('[Sygnal] makeSocketDriver', v, e); }\n },\n error: (e: any) => console.error('[Sygnal] makeSocketDriver', e),\n complete: closeAll,\n });\n\n const source = (ns: any[]): any => ({\n select: (name?: string) => {\n let sub: any;\n return xs.create<any>({start: l => { subs.add((sub = {l, name, ns})); }, stop: () => { subs.delete(sub); }});\n },\n isolateSource: (_: any, scope: any) => source(ns.concat(scope)),\n isolateSink: (sink: any, scope: any) => sink.map((v: any) => tag(v, scope)),\n // PLAN-4.6: the same per value (the core scopes a value without a stream per instance)\n isolateValue: tag,\n // the core sends a component's `connections` static here (PLAN-3 2-B)\n __sygnalStatic: 'connections',\n ...replies,\n });\n\n return {...source([]), dispose: () => { closeAll(); disposed = true; }};\n };\n}\n","import {Stream} from 'xstream';\nimport {senderOf, makeReplies} from './replies';\nimport {SET} from '../core/teardown';\n\n/*\n * makeRouter({ routes, base?, mode?, scroll?, focus?, prefetch?, navigate?, window?, ... })\n * (PLAN-3 §1.7, D81, D84). Public docs: src/index.d.ts and docs guide/router.md. Summary:\n *\n * - `routes`: { name: '/path/:param' | '*' }. First match wins; '*' is the not-found route.\n * Matching ignores a trailing slash and empty segments; the reported `path` is normalised\n * (no trailing slash, base removed). `href()` never adds a trailing slash.\n * - The returned object: `href(name, params?, query?, hash?)` and `match(url)` are pure (SSR);\n * `current(url?)` reads the location (or `url`: SSR passes the request URL); `driver` is the\n * driver for `run(App, { ROUTER: router.driver })`; `options` is what the 5-4c fake reuses.\n * - Reading: a component declares `App.route = 'ROUTE'` (a string static, `__sygnalStatic:\n * 'route'`); the driver replies ROUTE with `{ name, params, query, hash, path }` on\n * declaration and on every change. `{ route }` is the declaration: commands never use it.\n * - Redirect order (G-168): the FIRST declarer (the outermost one: declarations are kept in\n * mount order) is the guard owner. It gets each new route at once; the other declarers get it\n * once its ROUTE ran (in the same flush, G-565), and only if no newer navigation (a redirect\n * from the guard's ROUTE entry, e.g. `ROUTER: { to: 'login', replace: true }`) happened.\n * G-571: past 32 navigations before a microtask (a redirect loop) each next one waits a task.\n * - Commands: `{ to: name, params?, query?, hash?, replace?, scroll? }`, `{ url, replace? }`,\n * `{ back: true }`, `{ forward: true }`, `{ go: n }`, `{ block: 'ACTION' | false }`,\n * `{ prefetch: name | url, params?, query? }` (calls options.prefetch(route, url); else a\n * no-op hook until the fetch cache, 5-5). `force: true` skips a block. `block` may come with a\n * navigation: `{ ...proceed, block: false }` clears the block and makes it.\n * - Block: while a component has `{ block: 'ACTION' }`, an attempted navigation (link click,\n * command, back/forward) is not made; the last blocker gets ACTION with `{ to, route,\n * proceed }` (`proceed` is the command that makes it anyway). A back/forward is undone with\n * history.go(-delta) first. beforeunload is prevented while any block is set.\n * - Links: document-level click interception of same-origin `<a href>` (HTML and SVG,\n * inside shadow roots via composedPath(), resolved against <base>), except modified or\n * non-left clicks, `target` other than _self, `download`, `rel=\"external\"`,\n * `data-router-ignore`, defaultPrevented, outside `base`, and (history mode) a hash-only link\n * to the current page. Forms are left alone.\n * - Scroll (option `scroll`, default true): `history.state` carries `{ key, i }`; positions are\n * kept per key in memory. Push: top (or the hash target after render); back/forward: the saved\n * position after render; replace: unchanged (or the hash target). Reload: the browser's own\n * (scrollRestoration goes back to 'auto' on pagehide).\n * - Focus (option `focus`, default '[data-router-focus],main h1,h1'; false disables): after a push or a\n * back/forward, once the DOM has been quiet for `settleMs` (MutationObserver; capped at 1 s),\n * the first match of the comma-separated selectors, tried in order, gets focus (tabindex=-1\n * added when needed, preventScroll). Content that renders later (data still loading) is\n * missed; the scroll restore has the same limit.\n * - No window (SSR): no listeners, no history, no replies; href/match/current(url) still work.\n * - Vike (`navigate` option, Vike's navigate()): no link interception (Vike owns links),\n * navigation calls navigate(url, { overwriteLastHistoryEntry }), scroll is left to Vike, and\n * the route is re-read on popstate and on the 'sygnal:navigate' event the Vike client hook\n * dispatches before each client-side render.\n */\n\ntype Routes = Record<string, string>;\n\nconst enc = encodeURIComponent;\nconst dec = (s: string) => { try { return decodeURIComponent(s); } catch (_) { return s; } };\nconst g: any = globalThis;\nconst PARAM = /:(\\w+)/g;\n// G-571: synchronous navigations (redirects) before a microtask, after which each waits a task\nconst HOPS = 32;\n\n/** the names of the params a pattern requires */\nexport const paramsOf = (pat: string) => (pat.match(PARAM) || []).map(p => p.slice(1));\n\n// the core's coded error() (published on the diagnostics bridge): no import, so the router\n// costs nothing more standalone; prints in production too (like SYG611)\nconst bad = (v: any, msg: string, fix: string) => (g.__SYGNAL_DIAGNOSTICS__?.error || console.error)('SYG620', v.__emitterName, `router: ${msg}; not navigated`, fix, v);\n\nexport function makeRouter(options: any = {}) {\n const {mode, prefetch, navigate} = options, routes: Routes = options.routes || {};\n const base = (options.base || '').replace(/\\/$/, '');\n const hashMode = mode == 'hash';\n const focusSel = options.focus ?? '[data-router-focus],main h1,h1';\n const doScroll = options.scroll ?? !navigate;\n\n const href = (name: string, params: any = {}, query?: any, hash?: string) => {\n // dev entry only (SYG130: unknown name, missing or extra params)\n g.__SYGNAL_DIAGNOSTICS__?.routerHref?.(routes, name, params);\n const pat = routes[name];\n const path = pat == null || pat == '*' ? '/' : pat.replace(PARAM, (_, k) => enc(params[k] ?? ''));\n const q = query && new URLSearchParams(Object.entries(query).filter(([, v]) => v != null) as any) + '';\n return base + (hashMode ? (base ? '/#' : '#') : '') + path + (q ? '?' + q : '') + (hash ? '#' + hash : '');\n };\n\n const matchPath = (path: string) => {\n const segs = path.split('/').filter(Boolean);\n let notFound: any = null;\n for (const name in routes) {\n const pat = routes[name];\n if (pat == '*') { notFound ??= name; continue; }\n const ps = pat.split('/').filter(Boolean), params: any = {};\n if (ps.length == segs.length && ps.every((p, i) => p[0] == ':' ? (params[p.slice(1)] = dec(segs[i]), 1) : p == segs[i])) return {name, params};\n }\n return {name: notFound, params: {}};\n };\n\n /** `{ name, params, query, hash, path }` for a URL (a path, or absolute) */\n const match = (url: string) => {\n let u = new URL(url, 'http://x');\n if (hashMode) u = new URL(u.hash.slice(1) || '/', 'http://x');\n let p = u.pathname;\n if (!hashMode && base && (p == base || p.startsWith(base + '/'))) p = p.slice(base.length);\n const path = '/' + p.split('/').filter(Boolean).join('/');\n return {...matchPath(path), query: Object.fromEntries(new URLSearchParams(u.search)), hash: dec(u.hash.slice(1)), path};\n };\n\n const win = () => options.window || (typeof window != 'undefined' ? window : null);\n const current = (url?: string) => {\n const w = win();\n return match(url ?? (w ? (options.location || w.location).href : '/'));\n };\n\n const driver = (sink$: Stream<any>) => {\n const w: any = win();\n const L: any = w && (options.location || w.location);\n const H: any = w && (options.history || w.history);\n const D: any = w && (options.document || w.document);\n // sender → reply action; insertion (mount) order: the first is the guard owner (G-168)\n const declared = new Map<any, string>();\n // sender → block action; the last one set gets the attempted navigation\n const blocks = new Map<any, string>();\n const pos = new Map<string, number[]>();\n let ver = 0, idx = 0, key = '', last = '', force = 0, undo = 0, n = 0, hops = 0, warned = 0;\n let cur: any = null, cancel: any = null, pendingKind = '';\n\n const newKey = () => Date.now().toString(36) + (n++);\n const stamp = (i: number) => ({key: (key = newKey()), i: (idx = i)});\n\n const settle = (kind: string) => {\n if (!D) return;\n pendingKind = cancel && kind == 'replace' ? pendingKind : kind;\n cancel?.();\n let t: any, mo: any;\n const done = () => {\n cancel?.();\n const k = pendingKind, h = cur.hash && D.getElementById(cur.hash), p = k == 'pop' && pos.get(key);\n if (doScroll) p ? w.scrollTo(p[0], p[1]) : h?.scrollIntoView?.();\n if (focusSel && k != 'replace') for (const sel of focusSel.split(',')) {\n const el = D.querySelector(sel);\n if (el) {\n if (el.tabIndex < 0 && !el.hasAttribute('tabindex')) el.setAttribute('tabindex', '-1');\n el.focus({preventScroll: true});\n break;\n }\n }\n };\n const quiet = () => { clearTimeout(t); t = setTimeout(done, options.settleMs ?? 30); };\n const cap = setTimeout(done, 1000);\n if (w.MutationObserver) (mo = new w.MutationObserver(quiet)).observe(D.body || D.documentElement, {childList: true, subtree: true, characterData: true});\n cancel = () => { clearTimeout(t); clearTimeout(cap); mo?.disconnect(); cancel = null; };\n quiet();\n };\n\n // G-565: `f` runs once the actions queued so far ran: a state write that changes nothing,\n // queued behind them through the replies of the instances `ss` (one listening, else a task\n // later). The first declarer's ROUTE (and any redirect it makes) runs first; the others get\n // theirs in the same flush, before the patch, as long as no redirect happened (G-168).\n // G-570: queued on every listening one and run by the first that is still there (the queue\n // skips a disposed instance: the first declarer navigating from its DISPOSE / dispose$)\n const after = (ss: any[], f: any) => {\n let d = 0;\n const l = ss.filter(listening), g = (x: any) => (d++ || f(), x);\n l.length ? l.forEach(s => reply(s, SET, g)) : setTimeout(f);\n };\n\n const emit = (kind: string) => {\n last = L.href;\n const r = (cur = current()), list = [...declared], v = ++ver;\n const send = () => {\n if (ver != v || !list.length) return;\n reply(list[0][0], list[0][1], r);\n after(list.map(x => x[0]), () => { if (ver == v) for (const [s, a] of list.slice(1)) if (declared.get(s) == a) reply(s, a, r); });\n };\n // G-571: a redirect made from a ROUTE entry is delivered at once (a chain /secret → /login\n // → /other is one flush, one patch); past HOPS of them before a microtask (a redirect\n // loop) each next one waits a task, so the loop can't hang the page (a warning, once, when the\n // diagnostics are on: in development)\n if (!hops++) queueMicrotask(() => { hops = 0; });\n if (hops > HOPS) {\n if (g.__SYGNAL_DIAGNOSTICS__?.hooks?.on?.() && !warned++) console.warn(`[Sygnal] router: more than ${HOPS} navigations in one flush (a redirect loop?); each next one waits a task (reported once)`, r.path);\n setTimeout(send);\n } else send();\n if (kind != 'start') settle(kind);\n };\n\n const blocked = (data: any) => {\n const b = [...blocks].pop();\n return b && (reply(b[0], b[1], data), 1);\n };\n\n const go = (url: string, replace?: boolean, scroll?: boolean, f?: any) => {\n if (!f && blocked({to: url, route: match(url), proceed: {url, replace, force: true}})) return;\n if (navigate) return navigate(url, {overwriteLastHistoryEntry: !!replace});\n pos.set(key, [w.scrollX, w.scrollY]);\n H[replace ? 'replaceState' : 'pushState'](stamp(replace ? idx : idx + 1), '', url);\n if (doScroll && !replace && scroll !== false) w.scrollTo(0, 0);\n emit(replace ? 'replace' : 'push');\n };\n\n const onPop = () => {\n const st = H.state, i = st?.i ?? idx + 1;\n if (undo) return void (undo = 0);\n if (!force && blocked({to: L.href, route: current(), proceed: {go: i - idx, force: true}})) {\n undo = 1;\n return H.go(idx - i);\n }\n force = 0;\n pos.set(key, [w.scrollX, w.scrollY]);\n if (st?.key) { key = st.key; idx = i; }\n else H.replaceState({...st, ...stamp(i)}, '');\n if (L.href != last) emit('pop');\n };\n\n const onClick = (e: any) => {\n if (e.defaultPrevented || e.button || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;\n const a = (e.composedPath?.() || []).find((x: any) => x.localName == 'a') || e.target?.closest?.('a');\n const at = (k: string) => a.getAttribute(k);\n const raw = a && (at('href') ?? a.getAttributeNS?.('http://www.w3.org/1999/xlink', 'href'));\n if (raw == null || (at('target') || '_self') != '_self' || a.hasAttribute('download') ||\n a.hasAttribute('data-router-ignore') || /(^|\\s)external(\\s|$)/i.test(at('rel') || '')) return;\n const u = new URL(raw, D.baseURI || L.href), same = u.pathname == L.pathname && u.search == L.search;\n if (u.origin != L.origin) return;\n if (hashMode ? !(same && u.hash.startsWith('#/')) : (base && u.pathname != base && !u.pathname.startsWith(base + '/')) || (u.hash && same)) return;\n e.preventDefault();\n go(u.pathname + u.search + u.hash);\n };\n\n const onUnload = (e: any) => { e.preventDefault(); e.returnValue = ''; };\n const onHide = () => { H.scrollRestoration = 'auto'; };\n const listen = (on: boolean) => {\n const m = on ? 'addEventListener' : 'removeEventListener';\n w[m]('popstate', onPop);\n if (hashMode) w[m]('hashchange', onPop);\n if (navigate) w[m]('sygnal:navigate', onNav);\n else D[m]('click', onClick);\n if (doScroll) w[m]('pagehide', onHide);\n };\n const syncUnload = () => w?.[blocks.size ? 'addEventListener' : 'removeEventListener']('beforeunload', onUnload);\n // Vike: the client hook says a navigation happened (Vike already updated the URL)\n // (once the hook's microtasks ran, and again a task later in case the URL changes after it)\n const onNav = () => { const f = () => L.href != last && emit('push'); queueMicrotask(f); setTimeout(f); };\n\n const {replies, reply, listening} = makeReplies(s => {\n declared.delete(s);\n if (blocks.delete(s)) syncUnload();\n });\n\n const stop = () => {\n if (!w) return;\n listen(false);\n blocks.clear();\n syncUnload();\n cancel?.();\n onHide();\n };\n\n if (w) {\n const st = H.state;\n if (st?.key) { key = st.key; idx = st.i; }\n else H.replaceState({...st, ...stamp(0)}, '');\n if (doScroll && 'scrollRestoration' in H) H.scrollRestoration = 'manual';\n listen(true);\n emit('start');\n }\n\n const target = (v: any, name: any) => {\n if (!(name in routes) || routes[name] == '*') return bad(v, `no route named '${name}'`, `Use one of: ${Object.keys(routes).filter(k => routes[k] != '*').join(', ')}`);\n const missing = paramsOf(routes[name]).filter(k => v.params?.[k] == null);\n if (missing.length) return bad(v, `route '${name}' (${routes[name]}) needs params: ${missing.join(', ')}`, `{ to: '${name}', params: { ${missing.join(', ')} } }`);\n return href(name, v.params, v.query, v.hash);\n };\n\n sink$.addListener({\n next: (v: any) => {\n if (!v || typeof v != 'object') return;\n const s = senderOf(v);\n if ('route' in v) {\n // the core sends { route: 'ACTION' } (or a falsy value) for a component's `route` static\n if (Object.keys(v).length > 1 || v.route in routes) return bad(v, '`route` is the declaration key', \"Navigate with { to: 'name', params }\");\n if (!v.route || s === undefined) return void declared.delete(s);\n declared.set(s, v.route);\n // G-555: the guard owner (first declarer) gets it at once when it listens to its replies\n // (the core subscribes them at creation, before its statics), so its ROUTE is part of\n // the flush that declared it: a task later came after the first render and undid what\n // happened in between (a field typed into). G-565: the others too, once the actions\n // queued before (the guard owner's ROUTE) ran, as for a navigation; a redirect in\n // between supersedes the route (G-168). A declarer not listening yet (a Vike Layout):\n // a task later\n const v0 = ver, f = () => declared.get(s) == v.route && ver == v0 && reply(s, v.route, cur);\n if (cur) declared.keys().next().value === s && listening(s) ? f() : after([s], f);\n return;\n }\n // `block` combines with a navigation: { ...proceed, block: false } clears it and goes\n const nav = v.back || v.forward || v.go || v.to != null || v.url != null;\n if ('block' in v) {\n v.block ? blocks.set(s, v.block) : blocks.delete(s);\n syncUnload();\n if (!nav) return;\n }\n if ('prefetch' in v) {\n const url = v.prefetch in routes ? target({...v, to: v.prefetch}, v.prefetch) : v.prefetch;\n if (url) prefetch?.(match(url), url);\n } else if (!w) return;\n else if (v.back || v.forward || v.go) {\n force = v.force ? 1 : 0;\n H.go(v.back ? -1 : v.forward ? 1 : v.go);\n } else if (nav) {\n const url = v.url ?? target(v, v.to);\n if (url) go(url, v.replace, v.scroll, v.force);\n } else bad(v, 'unknown command', \"{ to: 'name', params?, query?, hash?, replace? }, { back: true }, { forward: true }, { block: 'ACTION' } or { prefetch: 'name' }\");\n },\n error: (e: any) => console.error('[Sygnal] router', e),\n complete: stop,\n });\n\n return {...replies, __sygnalStatic: 'route', __sygnalRouter: options, current: () => cur, href, dispose: stop};\n };\n\n return {routes, href, match, current, driver, options};\n}\n\n/** `makeRouter(options).driver`: for a router whose href() the app doesn't need */\nexport const makeRouterDriver = (options: any) => makeRouter(options).driver;\n","import {Stream, Producer, Listener} from 'xstream';\n\nexport type Predicate = (ev: Event) => boolean;\nexport type Comparator = Record<string, unknown>;\nexport type PreventDefaultOpt = boolean | Predicate | Comparator;\n\nexport function fromEvent(\n element: Element | Document,\n eventName: string,\n useCapture = false,\n preventDefault: PreventDefaultOpt = false,\n passive = false\n): Stream<Event> {\n let next: ((e: Event) => void) | null = null;\n return Stream.create<Event>({\n start: function start(listener: Listener<Event>) {\n if (preventDefault) {\n next = function _next(event: Event) {\n preventDefaultConditional(event, preventDefault);\n listener.next(event);\n };\n } else {\n next = function _next(event: Event) {\n listener.next(event);\n };\n }\n element.addEventListener(eventName, next, {\n capture: useCapture,\n passive,\n });\n },\n stop: function stop() {\n element.removeEventListener(eventName, next as EventListener, useCapture);\n next = null;\n },\n } as Producer<Event>);\n}\n\nfunction matchObject(matcher: Record<string, unknown>, obj: Record<string, unknown>): boolean {\n const keys = Object.keys(matcher);\n const n = keys.length;\n for (let i = 0; i < n; i++) {\n const k = keys[i];\n if (typeof matcher[k] === 'object' && matcher[k] !== null && typeof obj[k] === 'object' && obj[k] !== null) {\n if (!matchObject(matcher[k] as Record<string, unknown>, obj[k] as Record<string, unknown>)) {\n return false;\n }\n } else if (matcher[k] !== obj[k]) {\n return false;\n }\n }\n return true;\n}\n\nexport function preventDefaultConditional(\n event: Event,\n preventDefault: PreventDefaultOpt\n): void {\n if (preventDefault) {\n if (typeof preventDefault === 'boolean') {\n event.preventDefault();\n } else if (isPredicate(preventDefault)) {\n if (preventDefault(event)) {\n event.preventDefault();\n }\n } else if (typeof preventDefault === 'object') {\n if (matchObject(preventDefault as Record<string, unknown>, event as unknown as Record<string, unknown>)) {\n event.preventDefault();\n }\n } else {\n throw new Error(\n 'preventDefault has to be either a boolean, predicate function or object'\n );\n }\n }\n}\n\nfunction isPredicate(fn: PreventDefaultOpt): fn is Predicate {\n return typeof fn === 'function';\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 // .value(fn?) — e.target.value; .checked(fn?) — e.target.checked as a boolean\n stream$.value = pick(stream$, (e: any) => e?.target?.value)\n stream$.checked = pick(stream$, (e: any) => !!e?.target?.checked)\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 stream$.data = (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(stream$, (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 stream$.target = pick(stream$, (e: any) => e?.target)\n stream$.key = pick(stream$, (e: any) => e?.key)\n // .detail(fn?) — e.detail (CustomEvents: widgets' emit(), web components) (PLAN-5 W-3)\n stream$.detail = pick(stream$, (e: any) => e?.detail)\n return stream$\n}\n","import xs, {Stream, MemoryStream} from 'xstream';\nimport {adapt} from '../run/adapt';\nimport {DevToolEnabledSource} from '../run/types';\nimport {EventsFnOptions} from './DOMSource';\nimport {fromEvent} from './fromEvent';\nimport {enrichEventStream, EnrichedEventStream} from './enrichEventStream';\n\nexport class DocumentDOMSource {\n private _selector: string | null;\n\n constructor(private _name: string, selector?: string) {\n this._selector = selector || null;\n }\n\n // CT-1: a control works as is: querySelectorAll() and matches() stringify their argument,\n // and a control stringifies to its selector\n public select(selector: string): DocumentDOMSource {\n return new DocumentDOMSource(this._name, selector);\n }\n\n public elements(): MemoryStream<Array<Document | Element>> {\n if (this._selector) {\n const out: DevToolEnabledSource & MemoryStream<Array<Document | Element>> = adapt(\n xs.of<Array<Document | Element>>(Array.from(document.querySelectorAll(this._selector)))\n );\n out._isCycleSource = this._name;\n return out;\n }\n const out: DevToolEnabledSource & MemoryStream<Array<Document | Element>> = adapt(\n xs.of<Array<Document | Element>>([document])\n );\n out._isCycleSource = this._name;\n return out;\n }\n\n public element(): MemoryStream<Document | Element | null> {\n if (this._selector) {\n const out: DevToolEnabledSource & MemoryStream<Document | Element | null> = adapt(\n xs.of<Document | Element | null>(document.querySelector(this._selector))\n );\n out._isCycleSource = this._name;\n return out;\n }\n const out: DevToolEnabledSource & MemoryStream<Document | Element | null> = adapt(\n xs.of<Document | Element | null>(document)\n );\n out._isCycleSource = this._name;\n return out;\n }\n\n public events<K extends keyof DocumentEventMap>(\n eventType: K,\n options?: EventsFnOptions,\n bubbles?: boolean\n ): EnrichedEventStream<DocumentEventMap[K]>;\n // PLAN-5 0-S6: any other name (a custom element's 'wa-hover', a widget's or element's\n // CustomEvent): the overload above only typed the built-in names (types only)\n public events(eventType: string, options?: EventsFnOptions, bubbles?: boolean): EnrichedEventStream<Event>;\n public events(\n eventType: string,\n options: EventsFnOptions = {},\n bubbles?: boolean\n ): EnrichedEventStream<Event> {\n let stream: Stream<Event>;\n\n stream = fromEvent(\n document,\n eventType,\n options.useCapture,\n options.preventDefault\n );\n\n if (this._selector) {\n const selector = this._selector;\n stream = stream.filter((ev: Event) => {\n const target = ev.target;\n if (!(target instanceof Element)) return false;\n return target.matches(selector) || target.closest(selector) !== null;\n });\n }\n\n const out: DevToolEnabledSource & EnrichedEventStream<Event> = enrichEventStream(adapt(stream));\n out._isCycleSource = this._name;\n return out as EnrichedEventStream<Event>;\n }\n}\n","import xs, {Stream, MemoryStream} from 'xstream';\nimport {adapt} from '../run/adapt';\nimport {DevToolEnabledSource} from '../run/types';\nimport {EventsFnOptions} from './DOMSource';\nimport {fromEvent} from './fromEvent';\n\nexport class BodyDOMSource {\n constructor(private _name: string) {}\n\n public select(selector: string): BodyDOMSource {\n return this;\n }\n\n public elements(): MemoryStream<Array<HTMLBodyElement>> {\n const out: DevToolEnabledSource &\n MemoryStream<Array<HTMLBodyElement>> = adapt(xs.of([document.body]));\n out._isCycleSource = this._name;\n return out;\n }\n\n public element(): MemoryStream<HTMLBodyElement> {\n const out: DevToolEnabledSource & MemoryStream<HTMLBodyElement> = adapt(\n xs.of(document.body)\n );\n out._isCycleSource = this._name;\n return out;\n }\n\n public events<K extends keyof HTMLBodyElementEventMap>(\n eventType: K,\n options?: EventsFnOptions,\n bubbles?: boolean\n ): Stream<HTMLBodyElementEventMap[K]>;\n public events(\n eventType: string,\n options: EventsFnOptions = {},\n bubbles?: boolean\n ): Stream<Event> {\n let stream: Stream<Event>;\n\n stream = fromEvent(\n document.body,\n eventType,\n options.useCapture,\n options.preventDefault\n );\n\n const out: DevToolEnabledSource & Stream<Event> = adapt(stream);\n out._isCycleSource = this._name;\n return out;\n }\n}\n","import {IsolateModule} from './IsolateModule';\nimport {Scope} from './isolate';\nimport {isEqualNamespace} from './utils';\n\nexport class ScopeChecker {\n public readonly _namespace: Array<Scope>;\n constructor(\n public readonly namespace: Array<Scope>,\n private isolateModule: IsolateModule\n ) {\n this._namespace = namespace.filter(n => n.type !== 'selector');\n }\n\n public isDirectlyInScope(leaf: Element): boolean {\n const namespace = this.isolateModule.getNamespace(leaf);\n if (!namespace) {\n return false;\n }\n\n if (\n this._namespace.length > namespace.length ||\n !isEqualNamespace(\n this._namespace,\n namespace.slice(0, this._namespace.length)\n )\n ) {\n return false;\n }\n for (let i = this._namespace.length; i < namespace.length; i++) {\n if (namespace[i].type === 'total') {\n return false;\n }\n }\n return true;\n }\n}\n","import {ScopeChecker} from './ScopeChecker';\nimport {getSelectors} from './utils';\nimport {Scope} from './isolate';\nimport {IsolateModule} from './IsolateModule';\n\nfunction toElArray(input: any): Array<Element> {\n return Array.prototype.slice.call(input) as Array<Element>;\n}\n\nexport class ElementFinder {\n constructor(\n public namespace: Array<Scope>,\n public isolateModule: IsolateModule\n ) {}\n\n public call(): Array<Element> {\n const namespace = this.namespace;\n const selector = getSelectors(namespace);\n\n const scopeChecker = new ScopeChecker(namespace, this.isolateModule);\n // G-144: every root element of the scope (a fragment-rooted component has several)\n const topNodes = this.isolateModule.getElements(\n namespace.filter(n => n.type !== 'selector')\n );\n\n if (selector === '') {\n return topNodes;\n }\n\n return topNodes.reduce((out: Array<Element>, topNode) => out.concat(\n toElArray(topNode.querySelectorAll(selector)).filter(scopeChecker.isDirectlyInScope, scopeChecker),\n topNode.matches(selector) ? [topNode] : []\n ), []);\n }\n}\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\n */\nexport function makeIsolateValue(namespace: Array<Scope>): (node: any, scope: string) => any {\n return (node, scope) => {\n if (scope === ':root' || !node) {\n return node;\n }\n const isolate = namespace.concat([getScopeObj(scope)]);\n const newNode = scoped(node, isolate);\n return {\n ...newNode,\n key:\n newNode.key !== undefined\n ? newNode.key\n : JSON.stringify((newNode.data && newNode.data.isolate) || isolate),\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 xs from 'xstream';\nimport {Stream, MemoryStream} from 'xstream';\nimport {DevToolEnabledSource} from '../run/types';\nimport {adapt} from '../run/adapt';\nimport {DOMSource, EventsFnOptions} from './DOMSource';\nimport {DocumentDOMSource} from './DocumentDOMSource';\nimport {BodyDOMSource} from './BodyDOMSource';\nimport {VNode} from './snabbdom';\nimport {enrichEventStream, EnrichedEventStream} from './enrichEventStream';\nimport {ElementFinder} from './ElementFinder';\nimport {makeIsolateSink, makeIsolateValue, getScopeObj, Scope, IsolateSink} from './isolate';\nimport {IsolateModule} from './IsolateModule';\nimport {EventDelegator} from './EventDelegator';\n// [diagnostics hook] no-op when diagnostics are off\nimport {onSelector} from '../../extra/diagnostics/index';\n\nexport interface SpecialSelector {\n body: BodyDOMSource;\n document: DocumentDOMSource;\n}\n\nexport class MainDOMSource {\n constructor(\n private _rootElement$: Stream<Element>,\n private _sanitation$: Stream<null>,\n private _namespace: Array<Scope> = [],\n public _isolateModule: IsolateModule,\n private _eventDelegator: EventDelegator,\n private _name: string\n ) {\n this.isolateSource = (source, scope) =>\n new MainDOMSource(\n source._rootElement$,\n source._sanitation$,\n source._namespace.concat(getScopeObj(scope)),\n source._isolateModule,\n source._eventDelegator,\n source._name\n );\n this.isolateSink = makeIsolateSink(this._namespace) as any;\n this.isolateValue = makeIsolateValue(this._namespace);\n }\n\n private _elements(): Stream<Array<Element>> {\n if (this._namespace.length === 0) {\n return this._rootElement$.map(x => [x]);\n } else {\n const elementFinder = new ElementFinder(\n this._namespace,\n this._isolateModule\n );\n return this._rootElement$.map(() => elementFinder.call());\n }\n }\n\n public elements(): MemoryStream<Array<Element>> {\n const out: DevToolEnabledSource & MemoryStream<Array<Element>> = adapt(\n this._elements().remember()\n );\n out._isCycleSource = this._name;\n return out;\n }\n\n public element(): MemoryStream<Element> {\n const out: DevToolEnabledSource & MemoryStream<Element> = adapt(\n this._elements()\n .filter(arr => arr.length > 0)\n .map(arr => arr[0])\n .remember()\n );\n out._isCycleSource = this._name;\n return out;\n }\n\n get namespace(): Array<Scope> {\n return this._namespace;\n }\n\n public select<T extends keyof SpecialSelector>(\n selector: T\n ): SpecialSelector[T];\n public select(selector: string): MainDOMSource;\n public select(selector: any): DOMSource {\n // CT-1: a control (controls()) selects its elements by its marker, [data-control=\"<Key>\"]\n if (selector?.__sygnalControl) selector = '' + selector;\n if (typeof selector !== 'string') {\n throw new Error(\n `DOM driver's select() expects the argument to be a ` +\n `string as a CSS selector`\n );\n }\n if (selector === 'document') {\n return new DocumentDOMSource(this._name);\n }\n if (selector === 'body') {\n return new BodyDOMSource(this._name);\n }\n\n if (selector !== ':root') onSelector(this, selector.trim());\n\n const namespace =\n selector === ':root'\n ? []\n : this._namespace.concat({type: 'selector', scope: selector.trim()});\n\n return new MainDOMSource(\n this._rootElement$,\n this._sanitation$,\n namespace,\n this._isolateModule,\n this._eventDelegator,\n this._name\n ) as DOMSource;\n }\n\n public events<K extends keyof HTMLElementEventMap>(\n eventType: K,\n options?: EventsFnOptions,\n bubbles?: boolean\n ): EnrichedEventStream<HTMLElementEventMap[K]>;\n // PLAN-5 0-S6: any other name (a custom element's 'wa-hover', a widget's or element's\n // CustomEvent): the overload above only typed the built-in names (types only)\n public events(eventType: string, options?: EventsFnOptions, bubbles?: boolean): EnrichedEventStream<Event>;\n public events(\n eventType: string,\n options: EventsFnOptions = {},\n bubbles?: boolean\n ): EnrichedEventStream<Event> {\n if (typeof eventType !== `string`) {\n throw new Error(\n `DOM driver's events() expects argument to be a ` +\n `string representing the event type to listen for.`\n );\n }\n const event$: Stream<Event> = this._eventDelegator.addEventListener(\n eventType,\n this._namespace,\n options,\n bubbles\n );\n\n const out: DevToolEnabledSource & EnrichedEventStream<Event> = enrichEventStream(adapt(event$));\n out._isCycleSource = this._name;\n return out as EnrichedEventStream<Event>;\n }\n\n public dispose(): void {\n this._sanitation$.shamefullySendNext(null);\n }\n\n public isolateSource: (source: MainDOMSource, scope: string) => MainDOMSource;\n public isolateSink: IsolateSink<VNode>;\n public isolateValue: (node: any, scope: string) => any;\n}\n","import {h, VNode, vnode as vnodeFn} from './snabbdom';\nimport {isDocFrag} from './utils';\n\nfunction selectorParser(node: VNode) {\n if (!node.sel) {\n return { tagName: '', id: '', className: '' };\n }\n const sel = node.sel as string;\n const hashIdx = sel.indexOf('#');\n const dotIdx = sel.indexOf('.', hashIdx);\n const hash = hashIdx > 0 ? hashIdx : sel.length;\n const dot = dotIdx > 0 ? dotIdx : sel.length;\n const tagName = hashIdx !== -1 || dotIdx !== -1\n ? sel.slice(0, Math.min(hash, dot))\n : sel;\n const id = hash < dot ? sel.slice(hash + 1, dot) : void 0;\n const className = dotIdx > 0 ? sel.slice(dot + 1).replace(/\\./g, ' ') : void 0;\n return { tagName, id, className };\n}\n\nfunction classNameFromVNode(vNode: VNode): string {\n let { className: cn = '' } = selectorParser(vNode);\n if (!vNode.data) return cn;\n const { class: dataClass, props } = vNode.data;\n if (dataClass) {\n const c = Object.keys(dataClass).filter((cl: string) => dataClass[cl]);\n cn += ` ${c.join(` `)}`;\n }\n if (props && props.className) {\n cn += ` ${props.className}`;\n }\n return cn && cn.trim();\n}\n\nexport class VNodeWrapper {\n constructor(public rootElement: Element | DocumentFragment) {}\n\n public call(vnode: VNode | null): VNode {\n if (isDocFrag(this.rootElement)) {\n return this.wrapDocFrag(vnode === null ? [] : [vnode]);\n }\n if (vnode === null) {\n return this.wrap([]);\n }\n const {tagName: selTagName, id: selId} = selectorParser(vnode);\n const vNodeClassName = classNameFromVNode(vnode);\n const vNodeData = vnode.data || {};\n const vNodeDataProps = vNodeData.props || {};\n const {id: vNodeId = selId} = vNodeDataProps;\n\n const isVNodeAndRootElementIdentical =\n typeof vNodeId === 'string' &&\n vNodeId.toUpperCase() === this.rootElement.id.toUpperCase() &&\n selTagName.toUpperCase() === this.rootElement.tagName.toUpperCase() &&\n vNodeClassName.toUpperCase() === this.rootElement.className.toUpperCase();\n\n if (isVNodeAndRootElementIdentical) {\n return vnode;\n }\n\n return this.wrap([vnode]);\n }\n\n private wrapDocFrag(children: Array<VNode>) {\n return vnodeFn('', {isolate: []}, children, undefined, this\n .rootElement as any);\n }\n\n private wrap(children: Array<VNode>) {\n const {tagName, id, className} = this.rootElement as Element;\n const selId = id ? `#${id}` : '';\n const selClass = className ? `.${className.split(` `).join(`.`)}` : '';\n const vnode = h(\n `${tagName.toLowerCase()}${selId}${selClass}`,\n {},\n children\n );\n vnode.data = vnode.data || {};\n (vnode.data as any).isolate = (vnode.data as any).isolate || [];\n return vnode;\n }\n}\n","// [payload, children, number of children]: the count makes delete's \"is this node empty\" O(1)\n// (G-290: Object.keys(children) per removal made removing n siblings O(n²))\ntype Node<Payload> = [Payload | undefined, InternalTree<Payload>, number];\n\ninterface InternalTree<Payload> {\n [name: string]: Node<Payload>;\n}\n\nexport default class SymbolTree<Payload, T> {\n private tree: Node<Payload> = [, {}, 0];\n\n constructor(private mapper: (t: T) => string) {}\n\n public get(\n path: Array<T>,\n mkDefaultElement?: () => Payload,\n max = path.length\n ): Payload | undefined {\n let curr = this.tree;\n for (let i = 0; i < max; i++) {\n const n = this.mapper(path[i]);\n if (!curr[1][n]) {\n if (!mkDefaultElement) return undefined;\n curr[2]++; // G-290: count the children\n curr[1][n] = [, {}, 0];\n }\n curr = curr[1][n];\n }\n if (mkDefaultElement && !curr[0]) {\n curr[0] = mkDefaultElement();\n }\n return curr[0];\n }\n\n // P45-A: drop the payload at path and prune the nodes left empty; true when node is empty\n public delete(path: Array<T>, max = path.length, node = this.tree, i = 0): boolean {\n if (i < max) {\n const k = this.mapper(path[i]), child = node[1][k];\n if (child && this.delete(path, max, child, i + 1)) delete node[1][k], node[2]--;\n } else node[0] = undefined;\n return !node[0] && !node[2];\n }\n}\n","import {VNode} from './snabbdom';\nimport {EventDelegator} from './EventDelegator';\nimport {Scope} from './isolate';\nimport {isEqualNamespace} from './utils';\nimport SymbolTree from './SymbolTree';\n\n// G-356 (D196): the element an event bubbles to and a scope walk goes up to: a moved element's\n// home (`__sygnalHome`), else its parent. G-381: a home inside the element (a cycle) isn't\n// followed, nor more than 98 homes per walk (`c` counts them: two elements naming each other)\nexport const upOf = (e: any, c: any): any => {\n const h = e.__sygnalHome;\n return h && !e.contains(h) && (c.$h = (c.$h | 0) + 1) < 99 ? h : e.parentNode;\n};\n\nexport class IsolateModule {\n // G-144: a scope can own several root elements (a fragment-rooted component)\n private namespaceTree = new SymbolTree<Set<Element>, Scope>(x => x.scope);\n private namespaceByElement: WeakMap<Element, Array<Scope>>;\n private eventDelegator: EventDelegator | undefined;\n\n private vnodesBeingRemoved: Array<Element>;\n\n constructor() {\n this.namespaceByElement = new WeakMap<Element, Array<Scope>>();\n this.vnodesBeingRemoved = [];\n }\n\n public setEventDelegator(del: EventDelegator): void {\n this.eventDelegator = del;\n }\n\n private insertElement(namespace: Array<Scope>, el: Element): void {\n this.namespaceByElement.set(el, namespace);\n this.namespaceTree.get(namespace, () => new Set())!.add(el);\n }\n\n // the element keeps its scope (a leaving element under a Transition still is the\n // child's); only the scope's set of root elements forgets it\n private removeElement(elm: Element): void {\n const namespace = this.namespaceByElement.get(elm);\n const els = namespace && this.namespaceTree.get(namespace);\n if (els) {\n els.delete(elm);\n // P45-A: an unmounted scope leaves no node behind\n if (!els.size) this.namespaceTree.delete(namespace!);\n }\n }\n\n public getElements(namespace: Array<Scope>): Array<Element> {\n return [...(this.namespaceTree.get(namespace) || [])];\n }\n\n public getRootElement(elm: Element): Element | undefined {\n if (this.namespaceByElement.has(elm)) {\n return elm;\n }\n\n // G-356 (D196): an element a hook moved out of its component's DOM (a toaster region\n // re-parented into an open modal <dialog>) names where it belongs as `__sygnalHome` (an\n // element of its component), so it stays in its component's scope. With no scope root above\n // elm (moved without one, or out of the app) the event has no scope here (before: threw\n // 'No root element found'). G-381: upOf guards against a home cycle\n let curr = elm;\n const c = {};\n while (!this.namespaceByElement.has(curr)) {\n curr = upOf(curr, c);\n if (!curr || curr.tagName === 'HTML') {\n return undefined;\n }\n }\n return curr;\n }\n\n public getNamespace(elm: Element): Array<Scope> | undefined {\n const rootElement = this.getRootElement(elm);\n if (!rootElement) {\n return undefined;\n }\n return this.namespaceByElement.get(rootElement) as Array<Scope>;\n }\n\n public createModule() {\n const self = this;\n // G-564: a vnode can be in the old tree and the new one (a component's cached vnode, a\n // Collection item's copy, a hoisted vnode). When an ancestor is recreated (`alt ? <ol>{c}</ol>\n // : <ul>{c}</ul>`, a new key), snabbdom creates it again and gives it the new element before it\n // destroys the old subtree, so destroy hooks saw the new element (a widget inside wasn't\n // unmounted, its scope lost the new element). A created element notes its children's elements\n // (M: a child with one is mounted, or was), before they are created; a destroyed vnode gives\n // its noted children their old elements back for their destroy hooks (and theirs, down the\n // subtree), and they get the new ones again when the removal starts (S), before the insert\n // hooks. (A vnode that moves to another parent still gives its own destroy hook the new one)\n const M = new Map<any, any>(), S: any[] = [];\n // G-573: a vnode in the new tree twice: its first note (its element before the patch) wins.\n // A destroy hook that throws ends the patch before remove / post: the next patch first gives\n // the vnodes their new elements back and forgets the notes (pre)\n const back = (c: any) => M.has(c) && (S.push(c, c.elm), c.elm = M.get(c));\n const ret = () => { for (let e; S.length; ) e = S.pop(), S.pop().elm = e; };\n return {\n pre() {\n ret();\n M.clear();\n },\n\n create(emptyVNode: VNode, vNode: VNode) {\n const {elm, data = {}, children} = vNode;\n const namespace: Array<Scope> = (data as any).isolate;\n\n if (Array.isArray(namespace)) {\n self.insertElement(namespace, elm as Element);\n }\n children?.forEach((c: any) => c?.elm && M.set(c, M.get(c) || c.elm));\n },\n\n update(oldVNode: VNode, vNode: VNode) {\n const {elm: oldElm, data: oldData = {}} = oldVNode;\n const {elm, data = {}} = vNode;\n const oldNamespace: Array<Scope> = (oldData as any).isolate;\n const namespace: Array<Scope> = (data as any).isolate;\n\n if (!isEqualNamespace(oldNamespace, namespace)) {\n if (Array.isArray(oldNamespace)) {\n self.removeElement(oldElm as Element);\n }\n }\n if (Array.isArray(namespace)) {\n self.insertElement(namespace, elm as Element);\n }\n },\n\n // (the elements as they are now: post runs after the vnodes got their new ones back)\n destroy(vNode: VNode) {\n vNode.children?.forEach(back);\n self.vnodesBeingRemoved.push(vNode.elm as Element);\n },\n\n remove(vNode: VNode, cb: Function) {\n self.vnodesBeingRemoved.push(vNode.elm as Element);\n ret();\n cb();\n },\n\n post() {\n // G-144: a removed root element is no longer one of its scope's roots (an element no\n // scope has as a root isn't in any set: removing it does nothing)\n for (const elm of self.vnodesBeingRemoved) {\n self.removeElement(elm);\n (self.eventDelegator as EventDelegator).removeElement(elm);\n }\n self.vnodesBeingRemoved = [];\n M.clear();\n },\n };\n }\n}\n","export default class PriorityQueue<T> {\n private arr: Array<T> = [];\n private prios: Array<number> = [];\n\n public add(t: T, prio: number): void {\n for (let i = 0; i < this.arr.length; i++) {\n if (this.prios[i] < prio) {\n this.arr.splice(i, 0, t);\n this.prios.splice(i, 0, prio);\n return;\n }\n }\n this.arr.push(t);\n this.prios.push(prio);\n }\n\n public forEach(f: (t: T, i: number, arr: Array<T>) => void): void {\n for (let i = 0; i < this.arr.length; i++) {\n f(this.arr[i], i, this.arr);\n }\n }\n\n // returns how many are left\n public delete(t: T): number {\n for (let i = 0; i < this.arr.length; i++) {\n if (this.arr[i] === t) {\n this.arr.splice(i, 1);\n this.prios.splice(i, 1);\n break;\n }\n }\n return this.arr.length;\n }\n}\n","import xs, {Stream, Subscription} from 'xstream';\nimport {ScopeChecker} from './ScopeChecker';\nimport {IsolateModule, upOf} from './IsolateModule';\nimport {getSelectors, isEqualNamespace} from './utils';\nimport {ElementFinder} from './ElementFinder';\nimport {EventsFnOptions} from './DOMSource';\nimport {Scope} from './isolate';\nimport SymbolTree from './SymbolTree';\nimport PriorityQueue from './PriorityQueue';\nimport {\n fromEvent,\n preventDefaultConditional,\n PreventDefaultOpt,\n} from './fromEvent';\n\ndeclare var requestIdleCallback: any;\n\ninterface Destination {\n useCapture: boolean;\n bubbles: boolean;\n passive: boolean;\n scopeChecker: ScopeChecker;\n subject: Stream<Event>;\n preventDefault?: PreventDefaultOpt;\n}\n\nexport interface CycleDOMEvent extends Event {\n propagationHasBeenStopped: boolean;\n ownerTarget: Element;\n}\n\nexport const eventTypesThatDontBubble = [\n // Focus\n `blur`,\n `focus`,\n // Mouse\n `mouseenter`,\n `mouseleave`,\n // Pointer\n `pointerenter`,\n `pointerleave`,\n `gotpointercapture`,\n `lostpointercapture`,\n // Media (and img/script/link error, abort)\n `abort`,\n `error`,\n `loadstart`,\n `progress`,\n `canplay`,\n `canplaythrough`,\n `durationchange`,\n `emptied`,\n `ended`,\n `loadeddata`,\n `loadedmetadata`,\n `pause`,\n `play`,\n `playing`,\n `ratechange`,\n `seeked`,\n `seeking`,\n `stalled`,\n `suspend`,\n `timeupdate`,\n `volumechange`,\n `waiting`,\n // Resource\n `load`,\n `unload`,\n // Form\n `invalid`,\n `reset`,\n `submit`,\n `formdata`,\n // details, popover, dialog\n `toggle`,\n `beforetoggle`,\n `cancel`,\n `close`,\n // Animation / Transition\n `animationstart`,\n `animationend`,\n `animationiteration`,\n `transitionrun`,\n `transitionstart`,\n `transitionend`,\n // Scroll\n `scroll`,\n `scrollend`,\n];\n\ninterface DOMListener {\n sub: Subscription;\n passive: boolean;\n}\n\ninterface NonBubblingListener {\n sub: Subscription | undefined;\n destination: Destination;\n}\n\n// [subject, type, finder, destination, number of started streams]\ntype NonBubblingMeta = [Stream<Event>, string, ElementFinder, Destination, number]\n\nexport class EventDelegator {\n private virtualListeners = new SymbolTree<\n Map<string, PriorityQueue<Destination>>,\n Scope\n >(x => x.scope);\n private origin: Element | undefined;\n\n private domListeners: Map<string, DOMListener>;\n private nonBubblingListeners: Map<string, Map<Element, NonBubblingListener>>;\n private domListenersToAdd: Map<string, boolean>;\n private nonBubblingListenersToAdd = new Set<NonBubblingMeta>();\n\n private virtualNonBubblingListener: Array<Destination> = [];\n\n constructor(\n private rootElement$: Stream<Element>,\n public isolateModule: IsolateModule\n ) {\n this.isolateModule.setEventDelegator(this);\n this.domListeners = new Map<string, DOMListener>();\n this.domListenersToAdd = new Map<string, boolean>();\n this.nonBubblingListeners = new Map<\n string,\n Map<Element, NonBubblingListener>\n >();\n rootElement$.addListener({\n next: (el: Element) => {\n if (this.origin !== el) {\n this.origin = el;\n this.resetEventListeners();\n this.domListenersToAdd.forEach((passive, type) =>\n this.setupDOMListener(type, passive)\n );\n this.domListenersToAdd.clear();\n }\n\n this.nonBubblingListenersToAdd.forEach(arr => {\n this.setupNonBubblingListener(arr);\n });\n },\n });\n }\n\n public addEventListener(\n eventType: string,\n namespace: Array<Scope>,\n options: EventsFnOptions,\n bubbles?: boolean\n ): Stream<Event> {\n const scopeChecker = new ScopeChecker(namespace, this.isolateModule);\n\n const shouldBubble =\n bubbles === undefined\n ? eventTypesThatDontBubble.indexOf(eventType) === -1\n : bubbles;\n\n if (shouldBubble) {\n if (!this.domListeners.has(eventType)) {\n this.setupDOMListener(eventType, !!options.passive);\n }\n\n // P45-A: the destination is in the delegator only while the stream has listeners, so\n // a disposed component leaves nothing behind (audit rec 3). Each stream has its own\n // destination; xstream counts the stream's own listeners\n let dest: Destination;\n const out: Stream<Event> = xs.create({\n start: () => {\n dest = this.insertListener(out, scopeChecker, eventType, options);\n },\n stop: () => this.removeListener(dest, eventType),\n });\n return out;\n }\n\n // one record, and one listener per element, per type and scope: the streams on it share\n // it, and the last one to stop removes it. G-263: a stream finds (or makes) the live record\n // each time it starts, so a stream never started leaves none, and one restarted after its\n // record was removed shares the record made meanwhile\n let rec: NonBubblingMeta | undefined, subscription: any;\n return xs.create({\n start: listener => {\n rec = undefined;\n this.nonBubblingListenersToAdd.forEach(x => {\n if (!rec && x[1] === eventType && isEqualNamespace(x[2].namespace, namespace)) rec = x;\n });\n if (!rec) {\n const s = xs.never();\n rec = [s, eventType, new ElementFinder(namespace, this.isolateModule), this.insertListener(s, scopeChecker, eventType, options), 0];\n this.nonBubblingListenersToAdd.add(rec);\n }\n if (!rec[4]++) this.setupNonBubblingListener(rec);\n subscription = rec[0].subscribe(listener);\n },\n stop: () => {\n const r = rec!;\n subscription.unsubscribe();\n if (!--r[4]) {\n const map = this.nonBubblingListeners.get(eventType);\n if (map) map.forEach((l, element: any) => {\n if (l.destination === r[3]) {\n l.sub!.unsubscribe();\n delete element.subs[eventType];\n map.delete(element);\n }\n });\n this.nonBubblingListenersToAdd.delete(r);\n this.removeListener(r[3], eventType);\n }\n },\n });\n }\n\n public removeElement(element: Element): void {\n const types: Array<string> = [];\n this.nonBubblingListeners.forEach((map, type) => {\n if (map.has(element)) {\n types.push(type);\n const subs = (element as any).subs;\n if (subs) Object.keys(subs).forEach(key => subs[key].unsubscribe());\n }\n });\n types.forEach(type => {\n const map = this.nonBubblingListeners.get(type);\n if (!map) return;\n map.delete(element);\n if (!map.size) this.nonBubblingListeners.delete(type);\n });\n }\n\n // the queues a destination goes in: its scope's and its ancestors' up to the nearest total scope\n private eachSet(\n n: Array<Scope>,\n eventType: string,\n f: (map: Map<string, PriorityQueue<Destination>>, max: number) => void,\n create?: boolean\n ): void {\n let max = n.length;\n do {\n const map = this.virtualListeners.get(n, create ? () => new Map() : undefined, max);\n if (map) f(map, max);\n max--;\n } while (max >= 0 && n[max].type !== 'total');\n }\n\n private insertListener(\n subject: Stream<Event>,\n scopeChecker: ScopeChecker,\n eventType: string,\n options: EventsFnOptions\n ): Destination {\n const n = scopeChecker._namespace;\n const destination = {\n ...options,\n scopeChecker,\n subject,\n bubbles: !!options.bubbles,\n useCapture: !!options.useCapture,\n passive: !!options.passive,\n };\n\n this.eachSet(n, eventType, map => {\n if (!map.has(eventType)) map.set(eventType, new PriorityQueue<Destination>());\n map.get(eventType)!.add(destination, n.length);\n }, true);\n\n return destination;\n }\n\n // P45-A: take a stopped stream's destination out, and drop the queues and scopes left empty\n private removeListener(dest: Destination, eventType: string): void {\n const n = dest.scopeChecker._namespace;\n this.eachSet(n, eventType, (map, max) => {\n const q = map.get(eventType);\n if (q && !q.delete(dest)) {\n map.delete(eventType);\n if (!map.size) this.virtualListeners.delete(n, max);\n }\n });\n }\n\n private getVirtualListeners(\n eventType: string,\n namespace: Array<Scope>\n ): PriorityQueue<Destination> {\n // up to the innermost total scope (none: the root's)\n let _max = namespace.length;\n while (_max && namespace[_max - 1].type !== 'total') _max--;\n\n // a lookup never adds a scope (P45-A)\n const map = this.virtualListeners.get(namespace, undefined, _max);\n return (map && map.get(eventType)) || ([] as any);\n }\n\n private setupDOMListener(eventType: string, passive: boolean): void {\n if (this.origin) {\n const sub = fromEvent(\n this.origin,\n eventType,\n false,\n false,\n passive\n ).subscribe({\n next: (event: Event) => this.onEvent(eventType, event, passive),\n error: () => {},\n complete: () => {},\n });\n this.domListeners.set(eventType, {sub, passive});\n } else {\n this.domListenersToAdd.set(eventType, passive);\n }\n }\n\n private setupNonBubblingListener(\n input: NonBubblingMeta\n ): void {\n const [_, eventType, elementFinder, destination, started] = input;\n if (!this.origin || !started) {\n return;\n }\n\n elementFinder.call().forEach((element: Element) => {\n const subs = (element as any).subs;\n if (!subs || !subs[eventType]) {\n const sub = fromEvent(\n element,\n eventType,\n false,\n false,\n destination.passive\n ).subscribe({\n next: (ev: Event) =>\n this.onEvent(eventType, ev, !!destination.passive, false),\n error: () => {},\n complete: () => {},\n });\n let map = this.nonBubblingListeners.get(eventType);\n if (!map) this.nonBubblingListeners.set(eventType, map = new Map());\n map.set(element, {sub, destination});\n\n (element as any).subs = {\n ...subs,\n [eventType]: sub,\n };\n }\n });\n }\n\n private resetEventListeners(): void {\n this.domListeners.forEach(({sub, passive}, type) => {\n sub.unsubscribe();\n this.setupDOMListener(type, passive);\n });\n }\n\n private putNonBubblingListener(\n eventType: string,\n elm: Element,\n useCapture: boolean,\n passive: boolean\n ): void {\n const map = this.nonBubblingListeners.get(eventType);\n if (!map) {\n return;\n }\n const listener = map.get(elm);\n if (\n listener &&\n listener.destination.passive === passive &&\n listener.destination.useCapture === useCapture\n ) {\n this.virtualNonBubblingListener[0] = listener.destination;\n }\n }\n\n private onEvent(\n eventType: string,\n event: Event,\n passive: boolean,\n bubbles = true\n ): void {\n const cycleEvent = this.patchEvent(event);\n const target = event.target as Element;\n const rootElement = this.isolateModule.getRootElement(target);\n\n if (bubbles) {\n const namespace = this.isolateModule.getNamespace(target);\n if (!namespace) {\n return;\n }\n const listeners = this.getVirtualListeners(eventType, namespace);\n const phase = (useCapture: boolean) => this.bubble(\n eventType,\n target,\n rootElement,\n cycleEvent,\n listeners,\n namespace,\n namespace.length - 1,\n useCapture,\n passive\n );\n phase(true);\n phase(false);\n } else {\n const phase = (useCapture: boolean) => {\n this.putNonBubblingListener(eventType, target, useCapture, passive);\n this.doBubbleStep(\n eventType,\n target,\n rootElement,\n cycleEvent,\n this.virtualNonBubblingListener,\n useCapture,\n passive\n );\n };\n phase(true);\n phase(false);\n event.stopPropagation();\n }\n }\n\n private bubble(\n eventType: string,\n elm: Element,\n rootElement: Element | undefined,\n event: CycleDOMEvent,\n listeners: PriorityQueue<Destination>,\n namespace: Array<Scope>,\n index: number,\n useCapture: boolean,\n passive: boolean\n ): void {\n if (!useCapture && !event.propagationHasBeenStopped) {\n this.doBubbleStep(\n eventType,\n elm,\n rootElement,\n event,\n listeners,\n useCapture,\n passive\n );\n }\n\n // G-356: a moved element bubbles to its home (an element of its component), not to the\n // element it was moved into (G-381: upOf counts the homes on the event)\n const up = upOf(elm, event) as Element;\n let newRoot: Element | undefined = rootElement;\n let newIndex = index;\n let newListeners = listeners;\n if (elm === rootElement) {\n if (index < 0 || !up) {\n return;\n }\n // the parent scope's root that contains elm (G-144: it may have several)\n newRoot = this.isolateModule.getRootElement(up);\n newIndex--;\n // G-145: like the browser, the event bubbles out of a total scope (a child\n // component) to the parent's own elements; their listeners live in the parent's\n // scope, and isDirectlyInScope keeps them from matching the child's elements\n if (namespace[index].type === 'total') {\n newListeners = this.getVirtualListeners(eventType, namespace.slice(0, index));\n }\n }\n\n if (up && newRoot) {\n this.bubble(\n eventType,\n up,\n newRoot,\n event,\n newListeners,\n namespace,\n newIndex,\n useCapture,\n passive\n );\n }\n\n if (useCapture && !event.propagationHasBeenStopped) {\n this.doBubbleStep(\n eventType,\n elm,\n rootElement,\n event,\n listeners,\n useCapture,\n passive\n );\n }\n }\n\n private doBubbleStep(\n eventType: string,\n elm: Element,\n rootElement: Element | undefined,\n event: CycleDOMEvent,\n listeners: PriorityQueue<Destination> | Array<Destination>,\n useCapture: boolean,\n passive: boolean\n ): void {\n if (!rootElement) {\n return;\n }\n this.mutateEventCurrentTarget(event, elm);\n listeners.forEach(dest => {\n if (dest.passive === passive && dest.useCapture === useCapture) {\n const sel = getSelectors(dest.scopeChecker.namespace);\n if (\n !event.propagationHasBeenStopped &&\n dest.scopeChecker.isDirectlyInScope(elm) &&\n (sel ? elm.matches(sel) : elm === rootElement)\n ) {\n preventDefaultConditional(\n event,\n dest.preventDefault as PreventDefaultOpt\n );\n\n dest.subject.shamefullySendNext(event);\n }\n }\n });\n }\n\n private patchEvent(event: Event): CycleDOMEvent {\n const pEvent = event as CycleDOMEvent;\n pEvent.propagationHasBeenStopped = false;\n const oldStopPropagation = pEvent.stopPropagation;\n pEvent.stopPropagation = function stopPropagation() {\n oldStopPropagation.call(this);\n this.propagationHasBeenStopped = true;\n };\n return pEvent;\n }\n\n private mutateEventCurrentTarget(\n event: CycleDOMEvent,\n currentTargetElement: Element\n ) {\n try {\n Object.defineProperty(event, `currentTarget`, {\n value: currentTargetElement,\n configurable: true,\n });\n } catch (err) {\n // Some browsers don't allow redefining currentTarget.\n // event.ownerTarget is always set as a reliable alternative.\n }\n event.ownerTarget = currentTargetElement;\n }\n}\n","import {Driver} from '../run/types';\nimport {init, Module, Options as SnabbdomOptions, VNode} from './snabbdom';\nimport xs, {Stream, Listener} from 'xstream';\nimport {MainDOMSource} from './MainDOMSource';\nimport {VNodeWrapper} from './VNodeWrapper';\nimport {getValidNode, checkValidContainer, POKE, flat} from './utils';\nimport defaultModules from './modules';\nimport {IsolateModule} from './IsolateModule';\nimport {EventDelegator} from './EventDelegator';\n\nfunction makeDOMDriverInputGuard(modules: Array<Partial<Module>> | unknown) {\n if (!Array.isArray(modules)) {\n throw new Error(\n `Optional modules option must be an array for snabbdom modules`\n );\n }\n}\n\nfunction domDriverInputGuard(view$: Stream<VNode>): void {\n if (\n !view$ ||\n typeof view$.addListener !== `function` ||\n typeof view$.fold !== `function`\n ) {\n throw new Error(\n `The DOM driver function expects as input a Stream of ` +\n `virtual DOM elements`\n );\n }\n}\n\nexport interface DOMDriverOptions {\n modules?: Array<Partial<Module>>;\n reportSnabbdomError?(err: unknown): void;\n snabbdomOptions?: SnabbdomOptions;\n}\n\nfunction unwrapElementFromVNode(vnode: VNode): Element {\n return vnode.elm as Element;\n}\n\nconst ERR = 'data-sygnal-error';\n\nfunction makeDOMReady$(): Stream<null> {\n return xs.create<null>({\n start(lis: Listener<null>) {\n if (document.readyState === 'loading') {\n document.addEventListener('readystatechange', () => {\n const state = document.readyState;\n if (state === 'interactive' || state === 'complete') {\n lis.next(null);\n lis.complete();\n }\n });\n } else {\n lis.next(null);\n lis.complete();\n }\n },\n stop() {},\n });\n}\n\n// G-456 (D217): the app's first patch adopts markup already in the mount point (server HTML, an\n// Astro island, a Vike page). Its old vnode is built from the DOM with the client's vnode as the\n// template, by position (no toVNode): an element with the client's tag takes the client's\n// selector and key (so component roots and Collection items match), and its data is what the\n// modules need to reach the client's from what the server wrote: the dataset (stale keys go:\n// data-sygnal-ssr), the class as the className prop (the className module drops stale classes),\n// and each attribute the client sets as an attribute or a prop, with the server's value (nothing\n// is written again: an iframe's src isn't reloaded). Any other attribute is removed now; so is a\n// style (G-483: the style module writes the client's declarations, so none of the server's\n// stays). A single text child keeps its text node. Whitespace and comments where the client has\n// no text go; any other node that doesn't match stays as a placeholder that snabbdom replaces\n// with the client's node, in place (the lists stay aligned, so the nodes after it are still\n// adopted). Made again that way, as a fresh render makes them: an element whose selector has a\n// class or id (G-486: `h('p.card')`, the Portal placeholder; patching never corrects them), and\n// one whose hook expects a new element (G-485): a create or init hook (a thunk), an insert hook\n// without a postpatch (a Transition's enter, a measured row, the toaster region, a lazy()\n// placeholder), and any insert hook of the user's own (G-521: with a postpatch too; `u` when a\n// ref, autoFocus or widget chained theirs after it; `s` marks a function chainHooks made)\nconst adopt = (e: any, v: any): any => {\n // (a hole, `{cond && <X/>}`, has no node: snabbdom skips it. G-481: no fragment either, they\n // are flat by now: their nodes pair with their children in their parent's run)\n const c = (v.children || []).filter((z: any) => z), out: any[] = [];\n for (let j = 0, x = e.firstChild, y: any; x; x = y) {\n const w = c[j], t = x.nodeType, d = w?.data || {}, k = d.hook;\n // a node that doesn't match stays in its place under a selector no vnode has: snabbdom makes\n // the client's node before it and removes it (the lists stay aligned: no other node is paired)\n let n: any = {sel: '', data: {}, elm: x};\n // G-520: client text vnodes next to each other (`Hello, {name}!`) are one server text node:\n // it is split by the client's text when that is its start, so the nodes after stay paired\n t == 3 && c[j + 1]?.text != null && !c[j + 1].sel && w?.text && x.data.startsWith(w.text) && x.splitText(w.text.length);\n y = x.nextSibling;\n if (t == 3 && w && !w.sel && w.text != null) n = {text: x.data, elm: x};\n else if (t == 1 && x.localName == w?.sel && !(k && (k.create || k.init || k.u || k.insert && !(k.postpatch && k.insert.s)))) {\n const p = d.props || {}, a = d.attrs || {}, o: any = {}, at: any = {}, pr: any = {}, f = x.firstChild;\n o.class = 'className';\n for (const m in p) o[m == 'htmlFor' ? 'for' : m.toLowerCase()] = m;\n // G-482: a data-* attribute the client sets as an attribute isn't in the dataset (the\n // dataset module would remove it): it goes, and the attributes module writes it again.\n // G-487: `open` (a <details> the user opened) stays when the client doesn't render it\n for (const {name: m, value: y} of [...x.attributes])\n /^data-/.test(m) ? m in a && x.removeAttribute(m)\n : m in a ? at[m] = y\n : m == 'open' ? 0\n : m in o && !d.ns ? pr[o[m]] = y\n : x.removeAttribute(m);\n // G-484: a textarea's value no longer follows its text, which goes\n x.localName == 'textarea' && (x.value = x.value);\n const s = w.text != null && f?.nodeType == 3 && !f.nextSibling;\n n = {sel: w.sel, key: w.key, data: {dataset: {...x.dataset}, attrs: at, props: pr}, children: s ? undefined : adopt(x, w), text: s ? f.data : undefined, elm: x};\n } else if (t != 1 && (t != 3 || !/\\S/.test(x.data))) {\n x.remove();\n continue;\n }\n out.push(n);\n j++;\n }\n return out;\n};\n\nfunction makeDOMDriver(\n container: string | Element | DocumentFragment,\n options: DOMDriverOptions = {}\n): Driver<Stream<VNode>, MainDOMSource> {\n checkValidContainer(container);\n const modules = options.modules || defaultModules;\n makeDOMDriverInputGuard(modules);\n const isolateModule = new IsolateModule();\n const snabbdomOptions = options && options.snabbdomOptions || undefined;\n const patch = init([isolateModule.createModule() as Partial<Module>].concat(modules), undefined, snabbdomOptions);\n const domReady$ = makeDOMReady$();\n let vnodeWrapper: VNodeWrapper;\n\n function DOMDriver(vnode$: Stream<VNode>, name = 'DOM'): MainDOMSource {\n domDriverInputGuard(vnode$);\n const sanitation$ = xs.create<null>();\n\n let r: any;\n const firstRoot$ = domReady$.map(() => {\n const firstRoot = getValidNode(container) || document.body;\n vnodeWrapper = new VNodeWrapper(firstRoot);\n r = {sel: '', data: {isolate: []}, elm: firstRoot};\n return firstRoot;\n });\n\n const rememberedVNode$ = vnode$.remember();\n rememberedVNode$.addListener({});\n\n // P45-C (rec 9, D146): the root element, when the DOM is ready and then after each patch\n // (it was a MutationObserver on the root's subtree: DOM changes made outside a patch no\n // longer emit)\n // G-261: and when Sygnal changes the DOM outside a patch (a Transition's leave, a Portal\n // mounted late): an event that bubbles up to the root. G-276: on the current root (a patch\n // can replace the first one). G-277: the innermost app's root takes it (a nested app or\n // custom element doesn't re-emit the outer app's DOM source)\n let pl: any, cur: any;\n const poke = (e: Event) => pl && (e.stopPropagation(), pl.next(cur));\n const off = () => cur?.removeEventListener(POKE, poke);\n // G-545: run() gives any DOM driver its reporter (onError, phase 'patch') on the isolate\n // module; an explicit reportSnabbdomError comes first\n const rep = (e: any) => (options.reportSnabbdomError || (isolateModule as any).rep || console.error)(e);\n let dead = 0, end = 0;\n const rootElement$ = firstRoot$\n .map(\n (firstRoot, P = (o: any, v: any) => (v = flat(v), patch(o == r ? (cur.removeAttribute?.(ERR), {...r, sel: v.sel, key: v.key, children: adopt(firstRoot, v)}) : o, v))) =>\n xs.merge(\n xs\n .merge(rememberedVNode$.endWhen(sanitation$), sanitation$.map(() => (end = 1, null)))\n .map(vnode => vnodeWrapper.call(vnode))\n // the first step gives the root its scope; the second, the app's first patch,\n // adopts the markup in it (G-456). The root keeps its own attributes (G-466)\n .startWith(r)\n // G-540: a patch that throws (a hook, a module) is reported once, and the app's DOM\n // stops updating: snabbdom stopped half way (some elements patched, created or\n // removed, the rest not; insert hooks not run), and no vnode tree matches that DOM\n // (patching on from either tree, or adopting the DOM again, left wrong or duplicated\n // DOM). The stream doesn't end (its events, the root element), and a patch to no\n // children (dispose) still runs, so what the last good tree mounted (a Portal's\n // content) is removed; its errors aren't reported again. G-549: only dispose (`end`:\n // the sanitation signal), not a live render that has no children. G-543 (D224): the\n // root element is marked data-sygnal-error=\"patch\" while its DOM is stopped (CSS can\n // show it; dispose removes it). G-550: marked before the error is reported (onError\n // can read it); the first patch clears a mark a failed, undisposed app left in the\n // container, and dispose removes it only when this app set it; a throw while\n // flattening the tree (a key JSON.stringify can't take) is a patch error too (P\n // flattens). A DocumentFragment mount point has no attributes: no mark\n .fold((o: any, v: any) => {\n if (!dead || end) try { o = P(o, v) } catch (e) { dead++ || (cur.setAttribute?.(ERR, 'patch'), rep(e)) }\n end && dead && cur.removeAttribute?.(ERR)\n return o\n }, {...r, data: {}})\n .drop(1)\n .map(unwrapElementFromVNode)\n .startWith(firstRoot as any)\n .map((el: any) => (off(), el.addEventListener(POKE, poke), cur = el)),\n // never completes (nor does the root element). G-285: the listener moves with the\n // root and goes when the app stops (a disposed app's driver isn't kept by its root)\n xs.create<any>({start: l => pl = l, stop: () => (pl = 0, off())})\n )\n )\n .flatten()\n .endWhen(sanitation$)\n .remember();\n\n rootElement$.addListener({error: rep});\n\n const delegator = new EventDelegator(rootElement$, isolateModule);\n\n return new MainDOMSource(\n rootElement$,\n sanitation$,\n [],\n isolateModule,\n delegator,\n name\n );\n }\n\n return DOMDriver as any;\n}\n\nexport {makeDOMDriver};\n","import xs, {Stream} from 'xstream';\nimport type {VNode} from './snabbdom';\n\n/**\n * PLAN-4 GS-12 (D129): the patch that something asked for runs inside\n * `document.startViewTransition()`. The ask is `flags().vt`, set by the core when a component's\n * `viewTransitions` action changes state (on the app's IsolateModule, so it is per app).\n *\n * - No API, or `prefers-reduced-motion: reduce`, or the first render: patched at once.\n * - P45-C: one action is one patch (the app's render scheduler flushes every component, a\n * Collection move included, into one), so the update callback patches with the latest vnode\n * that arrived before the browser called back, and is done once that patch is (no quiet\n * window: it was 20 ms, capped at 200 ms, for the several patches of a move).\n * - A new transition while one animates: the browser skips the running one (it jumps to its end).\n * - G-489: a skipped transition's `ready` rejection is handled (no uncaught InvalidStateError).\n */\nexport function viewTransition$(vnode$: Stream<VNode>, flags: () => any): Stream<VNode> {\n const g: any = globalThis, out$ = xs.create<VNode>();\n let held: VNode[] | 0 = 0, first = 1;\n return xs.merge(vnode$.filter(v => {\n const f = flags() || {}, d = g.document, want = f.vt && !first;\n // the first render has no old view to transition from (a ROUTE reply at start asks too)\n f.vt = first = 0;\n if (held) return held[0] = v, false;\n if (!want || !d?.startViewTransition || g.matchMedia?.('(prefers-reduced-motion: reduce)').matches) return true;\n held = [v];\n const update = () => {\n const h = held as VNode[];\n held = 0;\n out$.shamefullySendNext(h[0]);\n };\n try {\n // G-489: a transition the browser skips (duplicate names, a newer one) rejects `ready`:\n // handled (the update still runs; `finished` / `updateCallbackDone` reject only when it throws).\n // (a stand-in without `ready` must not throw here: the update would run twice)\n d.startViewTransition(update)?.ready?.catch(Object);\n } catch (_) {\n // the browser refused (e.g. an invalid state): patch now\n update();\n }\n return false;\n }), out$);\n}\n","import type {Stream} from 'xstream';\nimport type {VNode} from '../cycle/dom/snabbdom';\nimport {makeDOMDriver, DOMDriverOptions} from '../cycle/dom/makeDOMDriver';\nimport {viewTransition$} from '../cycle/dom/viewTransition';\n\n/**\n * PLAN-4 GS-12 (D129): a DOM driver that can patch inside `document.startViewTransition()`.\n * It is `makeDOMDriver(mountPoint, options)`, as run()'s own DOM driver, plus the hook: the patch caused by an action listed in a component's\n * `viewTransitions` static (`Board.viewTransitions = ['MOVE']`, `App.viewTransitions = ['ROUTE']`)\n * runs as a View Transition. Opt-in, so the hook costs nothing in apps that don't import it.\n *\n * run(App, { DOM: makeViewTransitionDOMDriver('#root') })\n */\nexport function makeViewTransitionDOMDriver(mountPoint: string | Element | DocumentFragment = '#root', options: DOMDriverOptions = {}) {\n const inner: any = makeDOMDriver(mountPoint, options);\n return (vnode$: Stream<VNode>, name?: string) => {\n let source: any;\n // the flags live on the driver's IsolateModule (the core sets `vt` there; it is per app),\n // which exists once the inner driver has run: read lazily, at the first vnode\n source = inner(viewTransition$(vnode$, () => source?._isolateModule), name);\n const im = source._isolateModule;\n // SYG645 (dev): this app's DOM driver can do View Transitions\n im.vtDriver = 1;\n // a request is consumed by the next vnode (viewTransition$ resets it), however late: a render\n // may take long. It expires when the page has been idle for 100 ms without one, since a listed\n // action whose new state renders the same view (the first ROUTE reply, say) sends no vnode and\n // must not animate a later, unrelated patch. A slow render keeps the main thread busy, so the\n // expiry timer then runs late: it is re-armed instead (late by more than 30 ms = busy)\n let on = 0, t: any;\n const expire = (due: number): any => t = setTimeout(() => Date.now() - due > 30 ? expire(Date.now() + 100) : on = 0, 100);\n Object.defineProperty(im, 'vt', {\n configurable: true,\n get: () => on,\n set: (v: any) => { clearTimeout(t); (on = v ? 1 : 0) && expire(Date.now() + 100); },\n });\n return source;\n };\n}\n","import {Stream} from 'xstream';\nimport {senderOf, makeReplies} from './replies';\n\n/*\n * makeHeadDriver({ titleTemplate?, document? }) (PLAN-3 §1.7, X-1). Docs: src/index.d.ts and\n * docs guide/head.md. Summary:\n *\n * - Values `{ title?, meta?: { [name | property]: content | null }, link?: [{ rel, href, key?, ... }] }`\n * come from a component's `head` static (`App.head = state => ({ title })`, sent as\n * `{ head }`, `__sygnalStatic: 'head'`) or from a model entry (`HEAD: (s, d) => ({ title })`).\n * Each component instance has one entry, replaced by its next value; a falsy value or the\n * instance's dispose removes it.\n * - Merge, in mount order (first declaration; a removed entry that comes back goes last): a\n * later `title` wins, `meta` keys merge (null removes a key), `link`s merge by `key`, else by\n * `rel` for canonical, else by `rel` + `href`. Meta keys with an `og:`/`article:`/... prefix\n * use `property`, the others `name`.\n * - DOM: `document.title` (the page's original title when no entry sets one); meta and link\n * tags it creates carry `data-sygnal-head=\"<key>\"`. An existing unmarked `<meta>` with the same\n * name is updated and restored when no entry sets it. Marked tags from SSR (`renderHead()`)\n * are adopted, or removed once no entry sets them.\n * - SSR: `renderToString(App, { head: list })` pushes each rendered component's `head` static\n * into `list`; `renderHead(list, { titleTemplate })` gives the tags. No document: no-op.\n */\n\nconst PROPERTY = /^(og|fb|article|book|profile|music|video|al):/;\nconst esc = (s: any) => String(s).replace(/[&<>\"]/g, c => `&#${c.charCodeAt(0)};`);\nconst attrOf = (k: string) => PROPERTY.test(k) ? 'property' : 'name';\n\n/** merged `{ title, meta: [[key, content]], link: [[key, attrs]] }` of head values, in order */\nexport function mergeHead(list: any[], titleTemplate?: string) {\n let title: any;\n const meta: Record<string, any> = {}, link: Record<string, any> = {};\n for (const h of list) {\n if (!h || typeof h != 'object') continue;\n if (h.title != null) title = h.title;\n Object.assign(meta, h.meta);\n for (const l of h.link || []) if (l) link['l:' + (l.key ?? (l.rel == 'canonical' ? l.rel : l.rel + ' ' + l.href))] = l;\n }\n return {\n title: title != null && titleTemplate ? titleTemplate.replace('%s', title) : title,\n meta: Object.keys(meta).filter(k => meta[k] != null).map(k => ['m:' + k, k, meta[k]]),\n link: Object.entries(link),\n };\n}\n\n/** the `<title>`, `<meta>` and `<link>` tags of head values (SSR) */\nexport function renderHead(list: any[], options: {titleTemplate?: string} = {}): string {\n const m = mergeHead(list, options.titleTemplate);\n const attrs = (o: any) => Object.keys(o).filter(k => k != 'key' && o[k] != null && o[k] !== false).map(k => ` ${k}=\"${esc(o[k])}\"`).join('');\n return (m.title != null ? `<title>${esc(m.title)}</title>` : '') +\n m.meta.map(([key, k, c]) => `<meta${attrs({[attrOf(k)]: k, content: c})} data-sygnal-head=\"${esc(key)}\">`).join('') +\n m.link.map(([key, l]) => `<link${attrs(l)} data-sygnal-head=\"${esc(key)}\">`).join('');\n}\n\nexport function makeHeadDriver(options: {titleTemplate?: string, document?: any} = {}) {\n return (sink$: Stream<any>) => {\n const d: any = options.document || (typeof document != 'undefined' ? document : null);\n const entries = new Map<any, any>();\n // key → element this driver manages; adopted: element → its original content\n const made = new Map<string, any>(), adopted = new Map<any, any>();\n const title0 = d?.title;\n d?.querySelectorAll('[data-sygnal-head]').forEach((el: any) => made.set(el.getAttribute('data-sygnal-head'), el));\n\n const set = (el: any, o: any) => { for (const k in o) if (k != 'key') o[k] == null || o[k] === false ? el.removeAttribute(k) : el.setAttribute(k, o[k]); };\n const apply = () => {\n if (!d) return;\n const m = mergeHead([...entries.values()], options.titleTemplate), want = new Set<string>();\n d.title = m.title ?? title0;\n const put = (key: string, tag: string, o: any, find?: string) => {\n want.add(key);\n let el = made.get(key);\n if (!el) {\n el = find && d.head.querySelector(find);\n if (el) adopted.set(el, el.getAttribute('content'));\n else (el = d.createElement(tag)).setAttribute('data-sygnal-head', key), d.head.appendChild(el);\n made.set(key, el);\n }\n set(el, o);\n };\n for (const [key, k, c] of m.meta) put(key, 'meta', {[attrOf(k)]: k, content: c}, `meta[${attrOf(k)}=\"${k}\"]`);\n for (const [key, l] of m.link) put(key, 'link', l);\n made.forEach((el, key) => {\n if (want.has(key)) return;\n made.delete(key);\n if (adopted.has(el)) set(el, {content: adopted.get(el)}), adopted.delete(el);\n else el.remove();\n });\n };\n\n const {replies} = makeReplies(s => { if (entries.delete(s)) apply(); });\n\n sink$.addListener({\n next: (v: any) => {\n if (!v || typeof v != 'object') return;\n const s = senderOf(v), h = 'head' in v ? v.head : v;\n if (h && typeof h == 'object') entries.set(s, h);\n else entries.delete(s);\n apply();\n },\n error: (e: any) => console.error('[Sygnal] head', e),\n });\n\n const dispose = () => { entries.clear(); apply(); };\n return {...replies, __sygnalStatic: 'head', dispose};\n };\n}\n","import {makeReplies} from './replies';\n\n/*\n * makeTimerDriver() (PLAN-4 GS-7, D114): timers declared per component instance from state,\n * answered with reply actions (./replies.ts). Registered: `run(App, { TIMER: makeTimerDriver() })`.\n * The core has no timer code (0 B): it sends a component's `timers` static to the source marked\n * `__sygnalStatic: 'timers'` (initStatics), stamped with the sender (`__emitterId`).\n *\n * - Declaration: `C.timers = (state) => ({ [name]: spec | falsy })`, spec one of\n * `{ every: ms, action }`, `{ after: ms, action }`, `{ frame: 'ACTION' }`, each with an\n * optional `background: true`.\n * - Diffed per (sender, name), comparing specs structurally: a new name starts, a removed or\n * falsy one stops, a changed spec restarts (an equal one keeps running).\n * - `every`: drift-free; tick n is due at start + n * every (each delay is computed from the\n * start, not chained). A late tick (a throttled background tab) coalesces the missed ones:\n * n jumps. Data `{ n, t }`: the tick number from 1, `t` = Date.now().\n * - `after`: fires once, data `{ t }`. It doesn't fire again while the same spec stays declared.\n * - `frame`: every animation frame (requestAnimationFrame; setTimeout 16 ms without it), data\n * `{ t, dt }`: Date.now() and the ms since the previous frame (0 on the first).\n * - A hidden Switchable page's timers stop unless `background: true` (the core sends only those\n * while hidden) and start again from scratch when it is shown.\n * - A disposed instance's timers stop; app dispose stops all. SSR runs no drivers: no timers.\n * - An invalid spec (non-positive `every`, negative `after`, no action) doesn't start; the dev\n * entry reports SYG422 through the `timerSpec` diagnostics hook.\n */\n\nconst g: any = globalThis;\nconst now = () => Date.now();\n\nconst valid = (s: any) => s.frame\n ? typeof s.frame == 'string'\n : typeof s.action == 'string' && !!s.action && (s.every == null ? s.after >= 0 : s.after == null && s.every > 0) && (s.every || s.after) < 1 / 0;\n\n// starts one timer; `e` (its entry) gets `d` once an `after` has fired. Returns the stop function.\n// The next tick / frame is scheduled before the action is sent, so an action that stops (or\n// changes) the timer clears the pending one.\nconst start = (s: any, send: (type: string, data: any) => void, e: any): (() => void) => {\n let id: any, n = 0, last: any;\n const t0 = now(), every = s.every, raf = s.frame && g.requestAnimationFrame;\n const later = (ms: number) => id = raf ? requestAnimationFrame(tick) : setTimeout(tick, ms);\n // a frame's `ts` is requestAnimationFrame's timestamp (the fallback passes none: the clock)\n const tick = (ts = now()) => {\n const t = now();\n if (s.frame) {\n later(16);\n send(s.frame, {t, dt: last == null ? 0 : ts - last});\n last = ts;\n } else if (every) {\n n = Math.max(n + 1, Math.floor((t - t0) / every));\n later(t0 + (n + 1) * every - t);\n send(s.action, {n, t});\n } else {\n e.d = 1;\n send(s.action, {t});\n }\n };\n later(s.frame ? 16 : every || s.after);\n return () => raf ? cancelAnimationFrame(id) : clearTimeout(id);\n};\n\n/**\n * The driver over `runners` (sender → { c: component name, on: { [name]: entry } }, an entry\n * being { k: the spec's JSON, s: the spec, x: stop, ok: started, d: an `after` that fired }).\n * The testing fake passes its own map to list the active timers (t.timers).\n */\nexport const timerDriver = (runners: Map<any, any>) => (sink$: any) => {\n const update = (id: any, d: any, c?: any) => {\n let r = runners.get(id);\n if (!r) runners.set(id, r = {c, on: {}});\n const on = r.on;\n for (const n in on) if (on[n].k != JSON.stringify(d?.[n])) on[n].x(), delete on[n];\n for (const n in d) {\n const s = d[n];\n if (!s || on[n]) continue;\n const e: any = on[n] = {k: JSON.stringify(s), s, x: () => {}};\n if (e.ok = valid(s)) e.x = start(s, (type, data) => reply(id, type, data), e);\n else g.__SYGNAL_DIAGNOSTICS__?.timerSpec?.(n, s, c);\n }\n if (!d) runners.delete(id);\n };\n const stopAll = () => runners.forEach((_, id) => update(id, 0));\n const {replies, reply} = makeReplies(id => update(id, 0));\n sink$.addListener({\n next: (v: any) => { if (v && v.__emitterId !== undefined && 'timers' in v) update(v.__emitterId, v.timers, v.__emitterName); },\n error: () => {},\n complete: stopAll,\n });\n return {...replies, __sygnalStatic: 'timers', dispose: stopAll};\n};\n\n/**\n * Timers declared by components (`C.timers = (state) => ({ tick: state.running && { every: 100,\n * action: 'TICK' } })`), delivered as their own actions: `run(App, { TIMER: makeTimerDriver() })`.\n */\nexport const makeTimerDriver = () => timerDriver(new Map());\n","import {makeReplies} from './replies';\nimport {defHooks} from '../core/registry';\n\n/*\n * PLAN-5 B-3: browser sources, in the timers declaration shape (GS-7, S-8). A component declares\n * what it watches as a function of its state; each entry's events come back as its own actions:\n *\n * Card.browser = (state) => ({\n * seen: !state.seen && { intersection: '.cover', action: 'SEEN' },\n * dark: { media: '(prefers-color-scheme: dark)', action: 'DARK' },\n * })\n * run(App, { BROWSER: makeBrowserDriver() })\n *\n * - Declaration: `C.browser = (state) => ({ [name]: spec | falsy })` (or an object of such\n * functions), the spec's kind being the source key it has (the first of KINDS): `intersection` / `resize` (a selector in\n * the component's own DOM, or `true` for its root element), `media` (a query), `storage` (a key;\n * `area: 'session'`, `json: true`), `visibility: true`, `online: true`, `geolocation` (true or\n * PositionOptions). `action` names the action; `error` (geolocation, storage) the failure one.\n * - Diffed per (instance, name), comparing specs structurally, as timers: a new name starts, a\n * removed or falsy one stops, a changed spec restarts. The core sends only `background: true`\n * entries while the instance is on a hidden Switchable page (they restart when it's shown);\n * dispose stops them, app dispose stops all; SSR runs no drivers.\n * - Sources that have a current value (media, storage, visibility, online) send it when they\n * start; intersection / resize send what their observer reports (each element once at first).\n * - Commands, sent on the driver's sink from a model entry (the method: a key the driver knows):\n * `{ copy: text, ok?, error? }` and `{ paste: true, ok, error? }` (the clipboard, data\n * `{ text }`), `{ setItem: key, value, area?, json? }` / `{ removeItem: key, area? }` (storage;\n * this page's `storage` declarations hear a change; an unchanged value is silent, G-384).\n * - The core has no code for any of it (0 B): the driver's source is marked `__sygnalStatic:\n * 'browser'` (statics.ts) and answers with reply actions (replies.ts). A component's DOM\n * (intersection, resize) reaches the driver through a definition hook registered by the first\n * driver made (renderComponent's fake too): it binds each declaring instance's DOM source at\n * its creation (G-383: a definition cached before the hook existed is made again, define.ts).\n * - Unused sources cost nothing with makeBrowserDriverWith(intersectionSource, ...);\n * makeBrowserDriver() has them all.\n * - Diagnostics (dev entry, through the `browserSource` hook): SYG663 an invalid spec or command,\n * SYG664 a kind the driver wasn't made with, SYG665 a failure with no `error` action, SYG668\n * an intersection / resize declaration with nothing to observe (no DOM source bound). A\n * component declaring `browser` with no driver is SYG643, as timers.\n */\n\nconst g: any = globalThis;\nconst noop = () => {};\nconst KINDS = ['intersection', 'resize', 'media', 'storage', 'visibility', 'online', 'geolocation'];\nconst diag = (...a: any[]) => g.__SYGNAL_DIAGNOSTICS__?.browserSource?.(...a);\n\n/** What a declared source gets: the instance's DOM source, its action, its failure */\nexport interface BrowserCtx {\n dom: any;\n send: (data: any) => void;\n fail: (data: any) => void;\n /** G-383: a DOM-backed source that has nothing to observe reports it (SYG668; dev entry) */\n miss: (why: string) => void;\n /** G-390: the driver's shared observers, by kind and options */\n obs: Map<string, any>;\n}\n/** A browser source: the declaration kinds (`d`) and sink commands (`c`) it adds to the driver */\nexport interface BrowserSource {\n d?: Record<string, (spec: any, ctx: BrowserCtx) => (() => void) | void>;\n c?: Record<string, (cmd: any, ok: (data: any) => void, fail: (data: any) => void) => void>;\n}\n\n// the driver names in use (the definition hook looks each up in a declaring instance's sources)\nconst names = new Set<string>();\nlet hooked: any;\nconst hook = () => hooked ||= defHooks.push((src: any, view: any) => view.browser == null ? undefined : {\n ...src,\n intent: (so: any) => {\n for (const n of names) if (n in so) so[n]?.__b?.(so.DOM);\n return src.intent ? src.intent(so) : {};\n },\n});\n\n/** `{ ...el.dataset }` and its place among the target's elements */\nconst where = (els: any[], el: any) => ({index: els.indexOf(el), dataset: {...el.dataset}});\n\n/**\n * G-390: one observer per driver for each kind and options (`key`), shared by every declaration\n * of them: it maps each element to the declarations' handlers. A declaration that starts on an\n * element already observed gets its last report (a microtask later), as its own observer's first\n * one; the observer is disconnected when nothing is left to observe.\n */\nconst shared = (c: BrowserCtx, key: string, Obs: any, opts: any) => {\n let r = c.obs.get(key);\n if (!r) {\n const h = new Map<any, Set<any>>(), last = new Map<any, any>();\n const o = new Obs((es: any[]) => es.forEach(e => { last.set(e.target, e); h.get(e.target)?.forEach(f => f(e)); }), opts);\n c.obs.set(key, r = {\n add: (el: any, f: any) => {\n let s = h.get(el);\n if (!s) h.set(el, s = new Set()), o.observe(el);\n else if (last.has(el)) Promise.resolve().then(() => s!.has(f) && f(last.get(el)));\n s.add(f);\n },\n del: (el: any, f: any) => {\n const s = h.get(el);\n if (!s?.delete(f) || s.size) return;\n h.delete(el); last.delete(el); o.unobserve(el);\n if (!h.size) { o.disconnect(); c.obs.delete(key); }\n },\n });\n }\n return r;\n};\n// G-390: a DOM source's elements() stream per target, shared by its declarations (one query a patch)\nconst found = new WeakMap<any, Record<string, any>>();\nconst elementsOf = (dom: any, target: any) => {\n let m = found.get(dom);\n if (!m) found.set(dom, m = {});\n const t = target === true ? '' : '' + target;\n return m[t] ||= dom.select(t).elements();\n};\n\n/**\n * Observe the elements `target` selects in the instance's DOM (`true`: its root element) with the\n * driver's shared observer of `kind` (IntersectionObserver, ResizeObserver) and options: new ones\n * are observed and gone ones let go after every patch. Nothing without a DOM source (SYG668) or\n * the observer.\n */\nconst track = (c: BrowserCtx, kind: string, target: any, Obs: any, opts: any, data: (e: any) => any) => {\n if (!c.dom) return c.miss('dom');\n if (!Obs) return;\n let els: any[] = [];\n const o = shared(c, kind + JSON.stringify(opts), Obs, opts), f = (e: any) => c.send({...data(e), ...where(els, e.target)});\n const $ = elementsOf(c.dom, target);\n const l = {next: (now: any[]) => {\n for (const e of now) els.includes(e) || o.add(e, f);\n for (const e of els) now.includes(e) || o.del(e, f);\n els = [...now];\n }};\n $.addListener(l);\n return () => { $.removeListener(l); els.forEach(e => o.del(e, f)); };\n};\n\n/** Element visibility: `{ intersection: '.cover' | true, action, threshold?, rootMargin? }`, data `{ visible, ratio, index, dataset }` */\nexport const intersectionSource: BrowserSource = {d: {\n intersection: (s, c) => track(c, 'i', s.intersection, g.IntersectionObserver, {threshold: s.threshold, rootMargin: s.rootMargin},\n (e) => ({visible: e.isIntersecting, ratio: e.intersectionRatio})),\n}};\n\n/** Element size: `{ resize: '.chart' | true, action }`, data `{ width, height, index, dataset }` (the content box) */\nexport const resizeSource: BrowserSource = {d: {\n resize: (s, c) => track(c, 'r', s.resize, g.ResizeObserver, undefined,\n (e) => ({width: e.contentRect.width, height: e.contentRect.height})),\n}};\n\n/** A media query: `{ media: '(prefers-color-scheme: dark)', action }`, data `{ matches, media }` */\nexport const mediaSource: BrowserSource = {d: {\n media: (s, c) => {\n const m = g.matchMedia?.(s.media);\n if (!m) return;\n const f = () => c.send({matches: m.matches, media: s.media});\n f();\n m.addEventListener('change', f);\n return () => m.removeEventListener('change', f);\n },\n}};\n\nconst area = (s: any) => g[s.area == 'session' ? 'sessionStorage' : 'localStorage'];\nconst failed = (e: any) => ({name: e?.name, message: e?.message});\n\n/**\n * A storage key (read and observed, other tabs' writes included): `{ storage: 'theme', action,\n * area?: 'session', json?: true, error? }`, data `{ key, value }` (null when absent; parsed with\n * `json`). Commands `{ setItem: key, value, area?, json? }`, `{ removeItem: key, area? }`.\n * For a component's state that should survive a reload, use persist() instead.\n */\n// this page's storage declarations (every driver's): a write here reaches them directly\nconst watching = new Set<(e: any) => void>();\nexport const storageSource: BrowserSource = {\n d: {storage: (s, c) => {\n const key = s.storage;\n const f = (e?: any) => {\n try {\n const a = area(s);\n if (e && (e.storageArea != a || e.key != null && e.key != key)) return;\n let v = a.getItem(key);\n if (s.json && v != null) v = JSON.parse(v);\n c.send({key, value: v});\n } catch (x) { c.fail(failed(x)); }\n };\n f();\n watching.add(f);\n g.addEventListener?.('storage', f);\n return () => { watching.delete(f); g.removeEventListener?.('storage', f); };\n }},\n c: (() => {\n const write = (v: any, value: any, ok: any, fail: any) => {\n try {\n const a = area(v), key = v.setItem ?? v.removeItem, old = a.getItem(key);\n value == null ? a.removeItem(key) : a.setItem(key, value);\n // G-384: this page's declarations hear a change (the browser fires `storage` in the other\n // tabs only), and only a change: a model that writes back what it read settles. Not\n // dispatched on window, so other `storage` listeners see other tabs' writes only.\n if (old !== (value ?? null)) [...watching].forEach(f => f({key, storageArea: a}));\n ok({key});\n } catch (x) { fail(failed(x)); }\n };\n return {\n setItem: (v, ok, fail) => write(v, v.json ? JSON.stringify(v.value) : '' + v.value, ok, fail),\n removeItem: (v, ok, fail) => write(v, null, ok, fail),\n };\n })(),\n};\n\n/** The document's visibility: `{ visibility: true, action }`, data `{ visible }` */\nexport const visibilitySource: BrowserSource = {d: {\n visibility: (_, c) => {\n const d = g.document;\n if (!d) return;\n const f = () => c.send({visible: d.visibilityState != 'hidden'});\n f();\n d.addEventListener('visibilitychange', f);\n return () => d.removeEventListener('visibilitychange', f);\n },\n}};\n\n/** The network: `{ online: true, action }`, data `{ online }` */\nexport const onlineSource: BrowserSource = {d: {\n online: (_, c) => {\n if (!g.navigator || !g.addEventListener) return;\n const f = () => c.send({online: g.navigator.onLine});\n f();\n g.addEventListener('online', f);\n g.addEventListener('offline', f);\n return () => { g.removeEventListener('online', f); g.removeEventListener('offline', f); };\n },\n}};\n\n/**\n * The position (permission-gated): `{ geolocation: true | PositionOptions, action, error? }`,\n * data `{ latitude, longitude, accuracy, altitude, altitudeAccuracy, heading, speed, timestamp }`;\n * a failure (denied, unavailable, timeout) `{ code, message }` to `error`.\n */\nexport const geolocationSource: BrowserSource = {d: {\n geolocation: (s, c) => {\n const geo = g.navigator?.geolocation;\n if (!geo) return c.fail({code: 2, message: 'Geolocation is not available'});\n const id = geo.watchPosition((p: any) => {\n const {latitude, longitude, accuracy, altitude, altitudeAccuracy, heading, speed} = p.coords;\n c.send({latitude, longitude, accuracy, altitude, altitudeAccuracy, heading, speed, timestamp: p.timestamp});\n }, (e: any) => c.fail({code: e.code, message: e.message}), s.geolocation === true ? undefined : s.geolocation);\n return () => geo.clearWatch(id);\n },\n}};\n\n/**\n * The clipboard (permission-gated), as commands: `{ copy: text, ok?, error? }` and\n * `{ paste: true, ok, error? }`, data `{ text }`; a failure `{ name, message }` to `error`.\n */\nexport const clipboardSource: BrowserSource = {c: {\n copy: (v, ok, fail) => {\n const text = '' + v.copy, cb = g.navigator?.clipboard;\n cb ? cb.writeText(text).then(() => ok({text}), (e: any) => fail(failed(e))) : fail({name: 'NotSupportedError', message: 'Clipboard is not available'});\n },\n paste: (_, ok, fail) => {\n const cb = g.navigator?.clipboard;\n cb ? cb.readText().then((text: string) => ok({text}), (e: any) => fail(failed(e))) : fail({name: 'NotSupportedError', message: 'Clipboard is not available'});\n },\n}};\n\n/**\n * The driver over `sources` and `runners` (sender → { c: component name, on: { [name]: entry } },\n * an entry being { k: the spec's JSON, s: the spec, x: stop }). renderComponent's fake passes its\n * own sources and map.\n */\nexport const browserDriver = (sources: BrowserSource[], runners: Map<any, any>) => (sink$: any, name?: string) => {\n const d: any = {}, cmd: any = {}, doms = new Map<any, any>(), obs = new Map<string, any>();\n for (const s of sources) { Object.assign(d, s.d); Object.assign(cmd, s.c); }\n const update = (id: any, decl: any, comp?: any) => {\n let r = runners.get(id);\n if (!r) runners.set(id, r = {c: comp, on: {}});\n const on = r.on;\n for (const n in on) if (on[n].k != JSON.stringify(decl?.[n])) on[n].x(), delete on[n];\n for (const n in decl) {\n const s = decl[n];\n if (!s || on[n]) continue;\n const e: any = on[n] = {k: JSON.stringify(s), s, x: noop};\n const k = typeof s == 'object' && KINDS.find(k => k in s);\n if (!k || !s.action || typeof s.action != 'string' || (k == 'intersection' || k == 'resize') && s[k] !== true && (typeof s[k] != 'string' || !s[k])) diag('SYG663', n, s, comp);\n else if (!d[k]) diag('SYG664', n, s, comp, k);\n else e.x = d[k](s, {\n dom: doms.get(id),\n send: (v: any) => reply(id, s.action, v),\n fail: (v: any) => s.error ? reply(id, s.error, v) : diag('SYG665', n, s, comp, v),\n miss: (why: string) => diag('SYG668', n, s, comp, why),\n obs,\n }) || noop;\n }\n if (!decl) runners.delete(id);\n };\n const stopAll = () => runners.forEach((_, id) => update(id, 0));\n const {replies, reply} = makeReplies(id => { update(id, 0); doms.delete(id); });\n hook();\n if (name) names.add(name);\n sink$.addListener({\n next: (v: any) => {\n if (!v || typeof v != 'object') return;\n const id = v.__emitterId;\n if ('browser' in v && id !== undefined) return update(id, v.browser, v.__emitterName);\n // G-388: the method is any key the driver knows ({ ok, copy } too); G-389: a handler that\n // throws (a value JSON can't encode, a clipboard without the method) fails like a rejection\n const k = Object.keys(v), m = k.find(k => k in cmd) || k[0], f = cmd[m];\n if (!f) return diag('SYG663', m, v, v.__emitterName, 0, Object.keys(cmd));\n const fail = (x: any) => v.error ? reply(id, v.error, x) : diag('SYG665', m, v, v.__emitterName, x);\n try { f(v, (x: any) => v.ok && reply(id, v.ok, x), fail); } catch (x) { fail(failed(x)); }\n },\n error: noop,\n complete: stopAll,\n });\n // a declaring instance's own source (its DOM bound by the definition hook)\n const src = (): any => {\n const o: any = {...replies, __sygnalStatic: 'browser', replies: (id: any) => (o.i = id, replies.replies(id)), isolateSource: src, __b: (dom: any) => doms.set(o.i, dom)};\n return o;\n };\n return {...src(), dispose: stopAll};\n};\n\n/**\n * A driver for the components' `browser` declarations and the BROWSER sink commands, with only\n * the given sources: `run(App, { BROWSER: makeBrowserDriverWith(intersectionSource, mediaSource) })`.\n */\nexport const makeBrowserDriverWith = (...sources: BrowserSource[]) => browserDriver(sources, new Map());\n\n/** Every browser source: `run(App, { BROWSER: makeBrowserDriver() })` */\nexport const makeBrowserDriver = () => makeBrowserDriverWith(intersectionSource, resizeSource, mediaSource, storageSource, visibilitySource, onlineSource, geolocationSource, clipboardSource);\n","/*\n * PLAN-5 D194: focusWithin(selector), an ELEMENT target for focusing an element inside the\n * sender's children (a child component's field, an input in a Collection item):\n *\n * ADD: { STATE: addRow, ELEMENT: (s) => ({ focus: focusWithin(`[data-id=\"${s.next}\"] .title`) }) },\n * SUBMIT: { ELEMENT: { focus: focusWithin('[name=\"email\"]'), preventScroll: true } },\n *\n * A plain `{ focus: '.x' }` is resolved in the sender's isolated scope, so it can't reach into\n * a child. This target selects the sender's root element (its selector is '') and declares a\n * `focus` spec command (D102, elementCommands.ts) that focuses the first element under the root\n * matching `selector` (the root itself if it matches), with the command's options. 0 B core.\n *\n * It runs after the next patch, as every element command: a Collection item added by the same\n * action is on the page by then. No match: nothing happens (renderComponent's mock DOM reports\n * SYG640 when nothing in the view, children included, matches). A fragment-rooted sender\n * searches its first root element.\n */\n\n/** An ELEMENT target: `{ focus: focusWithin('.title') }` focuses `.title` anywhere under the sender's root, children included. */\nexport const focusWithin = (selector: string): any => ({\n within: selector,\n toString: () => '',\n spec: {commands: {focus: (root: any, o: any) => {\n const el = root.matches?.(selector) ? root : root.querySelector?.(selector)\n el?.focus(o)\n }}},\n})\n","import xs, {Stream} from 'xstream';\n\ninterface DOMSelector {\n events(eventType: string): Stream<any>;\n}\n\ninterface ProcessFormOptions {\n events?: string | string[];\n preventDefault?: boolean;\n}\n\ninterface FormEntries {\n event: Event;\n eventType: string;\n [key: string]: any;\n}\n\nexport default function processForm(\n form: DOMSelector,\n options: ProcessFormOptions = {}\n): Stream<FormEntries> {\n if (!form || typeof form.events !== 'function') {\n throw new Error(\n 'processForm: first argument must have an .events() method (e.g. DOM.select(...))'\n );\n }\n let {events = ['input', 'submit'], preventDefault = true} = options;\n if (typeof events === 'string') events = [events];\n\n const eventStream$ = (events as string[]).map((event) => form.events(event));\n const merged$ = xs.merge(...eventStream$);\n\n return merged$.map((e: any) => {\n if (preventDefault) e.preventDefault();\n const formEl = e.type === 'submit' ? e.srcElement : e.currentTarget;\n const formData = new FormData(formEl);\n const entries: FormEntries = {event: e, eventType: e.type};\n const submitBtn = formEl.querySelector('input[type=submit]:focus');\n if (submitBtn) {\n const {name, value} = submitBtn;\n entries[name || 'submit'] = value;\n }\n for (const [name, value] of formData.entries()) {\n entries[name] = value;\n }\n return entries;\n });\n}\n","import xs, {Stream} from 'xstream';\n\ninterface DOMSelector {\n events(eventType: string): Stream<any>;\n}\n\ninterface ProcessDragSources {\n draggable?: DOMSelector;\n dropZone?: DOMSelector;\n}\n\ninterface ProcessDragOptions {\n effectAllowed?: DataTransfer['effectAllowed'];\n}\n\ninterface ProcessDragStreams {\n dragStart$: Stream<DragEvent>;\n dragEnd$: Stream<null>;\n dragOver$: Stream<null>;\n drop$: Stream<DragEvent>;\n}\n\nexport default function processDrag(\n {draggable, dropZone}: ProcessDragSources = {},\n options: ProcessDragOptions = {}\n): ProcessDragStreams {\n if (draggable && typeof draggable.events !== 'function') {\n throw new Error(\n 'processDrag: draggable must have an .events() method (e.g. DOM.select(...))'\n );\n }\n if (dropZone && typeof dropZone.events !== 'function') {\n throw new Error(\n 'processDrag: dropZone must have an .events() method (e.g. DOM.select(...))'\n );\n }\n const {effectAllowed = 'move'} = options;\n\n const dragStart$ = draggable\n ? draggable.events('dragstart').map((e: DragEvent) => {\n e.dataTransfer!.effectAllowed = effectAllowed;\n return e;\n })\n : xs.never();\n\n const dragEnd$ = draggable\n ? draggable.events('dragend').mapTo(null)\n : xs.never();\n\n const dragOver$ = dropZone\n ? dropZone.events('dragover').map((e: DragEvent) => {\n e.preventDefault();\n return null;\n })\n : xs.never();\n\n const drop$ = dropZone\n ? dropZone.events('drop').map((e: DragEvent) => {\n e.preventDefault();\n return e;\n })\n : xs.never();\n\n return {dragStart$, dragEnd$, dragOver$, drop$};\n}\n","import xs, {Stream} from 'xstream';\n\nexport interface DragConfig {\n category: string;\n draggable?: string;\n dropZone?: string;\n accepts?: string;\n dragImage?: string;\n}\n\n// ─── Enriched DND Event Streams ──────────────────────────────────────────────\n\nexport interface EnrichedDragStream<T = any> extends Stream<T> {\n /** Extract a `data-*` attribute value from the payload's element/dataset.\n * Optional transform fn: `.data('id', Number)` */\n data(name: string): EnrichedDragStream<string | undefined>;\n data<R>(name: string, fn: (val: string | undefined) => R): EnrichedDragStream<R>;\n\n /** Extract the dragged element (dragstart) or dropZone element (drop) */\n element(): EnrichedDragStream<Element | null>;\n element<R>(fn: (el: Element | null) => R): EnrichedDragStream<R>;\n}\n\n/**\n * Adds chainable convenience methods to a DND event stream,\n * mirroring the DOM driver's `enrichEventStream` pattern.\n *\n * DND.dragstart('task').data('taskId')\n * DND.dragstart('task').data('taskId', Number)\n * DND.drop('lane').data('laneId')\n * DND.dragstart('task').element()\n */\nfunction enrichDragStream(stream$: any): any {\n // .data(name, fn?) — extract dataset[name] from dragstart payload,\n // or dropZone.dataset[name] from drop payload\n stream$.data = function data(name: string, fn?: (val: any) => any): any {\n const mapped = stream$.map((e: any) => {\n // dragstart payload: { element, dataset }\n // drop payload: { dropZone, insertBefore }\n const val = e?.dataset?.[name]\n ?? (e?.dropZone as HTMLElement)?.dataset?.[name]\n ?? (e?.element as HTMLElement)?.dataset?.[name]\n return fn ? fn(val) : val\n });\n return enrichDragStream(mapped);\n }\n\n // .element(fn?) — extract the primary element from the payload\n stream$.element = function element(fn?: (el: any) => any): any {\n const mapped = stream$.map((e: any) => {\n const el = e?.element ?? e?.dropZone ?? null\n return fn ? fn(el) : el\n });\n return enrichDragStream(mapped);\n }\n\n return stream$\n}\n\n// ─── DND Source Interfaces ───────────────────────────────────────────────────\n\nexport interface DragSourceEvents {\n events(eventType: string): EnrichedDragStream<any>;\n}\n\nexport interface DragSource {\n select(category: string): DragSourceEvents;\n dragstart(category: string): EnrichedDragStream<any>;\n dragend(category: string): Stream<any>;\n drop(category: string): EnrichedDragStream<any>;\n dragover(category: string): Stream<any>;\n dispose(): void;\n}\n\n// ─── Driver Factory ──────────────────────────────────────────────────────────\n\nexport function makeDragDriver(): (sink$: Stream<any>) => DragSource {\n return function dragDriver(sink$: Stream<any>): DragSource {\n const categories = new Map<string, DragConfig>();\n const bus = new EventTarget();\n const domListeners: Array<[string, EventListener]> = [];\n let draggingCategory: string | null = null;\n\n const register = (config: any) => {\n if (!config?.category) return;\n const existing = categories.get(config.category) ?? {};\n categories.set(config.category, {...existing, ...config});\n };\n\n sink$.subscribe({\n next(incoming: any) {\n const items = incoming?.configs ?? (Array.isArray(incoming) ? incoming : [incoming]);\n items.forEach(register);\n },\n error() {},\n complete() {},\n });\n\n const emit = (name: string, detail: any) =>\n bus.dispatchEvent(new CustomEvent(name, {detail}));\n\n const on = (type: string, fn: EventListener) => {\n document.addEventListener(type, fn);\n domListeners.push([type, fn]);\n };\n\n on('dragstart', (e: Event) => {\n const de = e as DragEvent;\n for (const [category, config] of categories) {\n if (!config.draggable) continue;\n const el = (de.target as Element).closest(config.draggable);\n if (!el) continue;\n draggingCategory = category;\n de.dataTransfer!.effectAllowed = 'move';\n\n if (config.dragImage) {\n const imgEl = el.closest(config.dragImage);\n if (imgEl) {\n const rect = imgEl.getBoundingClientRect();\n de.dataTransfer!.setDragImage(imgEl, de.clientX - rect.left, de.clientY - rect.top);\n }\n }\n\n emit(`${category}:dragstart`, {element: el, dataset: {...(el as HTMLElement).dataset}});\n return;\n }\n });\n\n on('dragend', () => {\n if (!draggingCategory) return;\n emit(`${draggingCategory}:dragend`, null);\n draggingCategory = null;\n });\n\n on('dragover', (e: Event) => {\n const de = e as DragEvent;\n for (const [, config] of categories) {\n if (!config.dropZone) continue;\n if (draggingCategory && config.accepts && config.accepts !== draggingCategory) continue;\n if ((de.target as Element).closest(config.dropZone)) {\n de.preventDefault();\n return;\n }\n }\n });\n\n on('drop', (e: Event) => {\n const de = e as DragEvent;\n for (const [category, config] of categories) {\n if (!config.dropZone) continue;\n if (draggingCategory && config.accepts && config.accepts !== draggingCategory) continue;\n const zone = (de.target as Element).closest(config.dropZone);\n if (!zone) continue;\n de.preventDefault();\n\n let insertBefore: Element | null = null;\n const draggingConfig = draggingCategory ? categories.get(draggingCategory) : null;\n if (draggingConfig?.draggable) {\n insertBefore = (de.target as Element).closest(draggingConfig.draggable) ?? null;\n }\n\n emit(`${category}:drop`, {dropZone: zone, insertBefore});\n return;\n }\n });\n\n const source: DragSource = {\n select(category: string): DragSourceEvents {\n return {\n events(eventType: string): EnrichedDragStream<any> {\n const busEventName = `${category}:${eventType}`;\n let handler: ((e: Event) => void) | undefined;\n const stream$ = xs.create({\n start(listener) {\n handler = ({detail}: any) => listener.next(detail);\n bus.addEventListener(busEventName, handler);\n },\n stop() {\n if (handler) bus.removeEventListener(busEventName, handler);\n },\n });\n return enrichDragStream(stream$);\n },\n };\n },\n\n dragstart(category: string) { return source.select(category).events('dragstart'); },\n dragend(category: string) { return source.select(category).events('dragend'); },\n drop(category: string) { return source.select(category).events('drop'); },\n dragover(category: string) { return source.select(category).events('dragover'); },\n\n dispose() {\n domListeners.forEach(([type, fn]) => document.removeEventListener(type, fn));\n },\n };\n\n return source;\n };\n}\n","export default function exactState<S>(): (state: S) => S {\n return (state: S) => state;\n}\n","import {h, VNode, VNodeData} from './snabbdom';\nimport {flat} from './utils';\n\nexport interface ThunkData extends VNodeData {\n fn(): VNode;\n args: Array<any>;\n}\n\nexport interface Thunk extends VNode {\n data: ThunkData;\n}\n\nfunction copyToThunk(vnode: VNode, thunkVNode: Thunk): void {\n // (rendered during the patch: its fragments are flattened here, as the DOM driver does)\n vnode = flat(vnode);\n thunkVNode.elm = vnode.elm;\n (vnode.data as ThunkData).fn = thunkVNode.data.fn;\n (vnode.data as ThunkData).args = thunkVNode.data.args;\n (vnode.data as any).isolate = (thunkVNode.data as any).isolate;\n thunkVNode.data = vnode.data as ThunkData;\n thunkVNode.children = vnode.children;\n thunkVNode.text = vnode.text;\n thunkVNode.elm = vnode.elm;\n}\n\nfunction init(thunkVNode: Thunk): void {\n const cur = thunkVNode.data as VNodeData;\n const vnode = (cur as any).fn.apply(undefined, (cur as any).args);\n copyToThunk(vnode, thunkVNode);\n}\n\nfunction prepatch(oldVnode: Thunk, thunkVNode: Thunk): void {\n const old = oldVnode.data as VNodeData,\n cur = thunkVNode.data as VNodeData;\n let i: number;\n const oldArgs = (old as any).args,\n args = (cur as any).args;\n if ((old as any).fn !== (cur as any).fn || oldArgs.length !== args.length) {\n copyToThunk((cur as any).fn.apply(undefined, args), thunkVNode);\n }\n for (i = 0; i < args.length; ++i) {\n if (oldArgs[i] !== args[i]) {\n copyToThunk((cur as any).fn.apply(undefined, args), thunkVNode);\n return;\n }\n }\n copyToThunk(oldVnode, thunkVNode);\n}\n\nexport function thunk(sel: string, fn: Function, args: Array<any>): Thunk;\nexport function thunk(\n sel: string,\n key: any,\n fn: Function,\n args: Array<any>\n): Thunk;\nexport function thunk(sel: string, key?: any, fn?: any, args?: any): VNode {\n if (args === undefined) {\n args = fn;\n fn = key;\n key = undefined;\n }\n return h(sel, {\n key: key,\n hook: {init: init as any, prepatch: prepatch as any},\n fn: fn,\n args: args,\n } as VNodeData);\n}\n\nexport default thunk;\n","import xs, {Stream, MemoryStream} from 'xstream';\nimport {DevToolEnabledSource, FantasyObservable} from '../run/types';\nimport {VNode} from './snabbdom';\nimport {EventsFnOptions} from './DOMSource';\nimport {adapt} from '../run/adapt';\nimport {enrichEventStream} from './enrichEventStream';\n\n/**\n * Optional simulated-event hub (used by renderComponent's simulateEvent): a\n * stream of `{type, event, match(path)}`; each source's events(type) also emits\n * the hub events whose `match` accepts its selector path (isolation scopes\n * included as '.___scope' segments).\n */\nexport type MockEventHub = Stream<{type: string; event: any; match: (path: string[]) => boolean}>;\n\n/**\n * Optional listener callback (renderComponent): called with `live` undefined when events() is\n * called (SYG103/104 checks), then with true / false when that hub listener is subscribed /\n * unsubscribed (simulateEvent waits for a just-mounted child's listeners, G-039).\n */\nexport type MockOnEvents = (path: string[], eventType: string, live?: boolean) => void;\n\nexport type MockConfig = {\n [name: string]: FantasyObservable<any> | MockConfig;\n};\n\nconst SCOPE_PREFIX = '___';\n\nexport class MockedDOMSource {\n private _elements: FantasyObservable<any>;\n\n constructor(\n private _mockConfig: MockConfig,\n private _hub?: MockEventHub,\n public _path: string[] = [],\n private _onEvents?: MockOnEvents\n ) {\n if (_mockConfig.elements) {\n this._elements = _mockConfig.elements as FantasyObservable<any>;\n } else {\n this._elements = adapt(xs.empty());\n }\n }\n\n public elements(): any {\n const out: Partial<DevToolEnabledSource> & FantasyObservable<any> = this\n ._elements;\n out._isCycleSource = 'MockedDOM';\n return out;\n }\n\n public element(): any {\n const output$: MemoryStream<Element> = this.elements()\n .filter((arr: Array<any>) => arr.length > 0)\n .map((arr: Array<any>) => arr[0])\n .remember();\n const out: DevToolEnabledSource & MemoryStream<Element> = adapt(output$);\n out._isCycleSource = 'MockedDOM';\n return out;\n }\n\n public events(\n eventType: string,\n options?: EventsFnOptions,\n bubbles?: boolean\n ): any {\n const configured = this._mockConfig[eventType] as any;\n const {_hub: hub, _path: path, _onEvents: on} = this;\n if (on) on(path, eventType);\n let hub$: Stream<any> | undefined;\n if (hub) {\n const ev$ = hub.filter(e => e.type === eventType && e.match(path)).map(e => e.event);\n let l: any;\n hub$ = on\n ? xs.create({\n start: (x: any) => {\n ev$.addListener(l = {next: (v: any) => x.next(v), error: (e: any) => x.error(e), complete: () => x.complete()});\n on(path, eventType, true);\n },\n stop: () => {\n ev$.removeListener(l);\n on(path, eventType, false);\n },\n })\n : ev$;\n }\n const out: DevToolEnabledSource & FantasyObservable<any> = enrichEventStream(adapt(\n hub$\n ? xs.merge(configured ? xs.fromObservable(configured) : xs.empty(), hub$)\n : configured || xs.empty()\n ));\n\n out._isCycleSource = 'MockedDOM';\n\n return out;\n }\n\n public select(selector: any): MockedDOMSource {\n // CT-1: a control selects by its marker; a component (any other function) is rejected\n // like the real DOM source does (SYG124 in the dev entry names the fixes)\n if (typeof selector == 'function') {\n if (!selector.__sygnalControl) {\n throw new Error(`DOM driver's select() expects the argument to be a string as a CSS selector`);\n }\n selector = '' + selector;\n }\n const mockConfigForSelector = this._mockConfig[selector] || {};\n\n return new MockedDOMSource(\n mockConfigForSelector as MockConfig,\n this._hub,\n this._path.concat(selector),\n this._onEvents\n );\n }\n\n public isolateSource(\n source: MockedDOMSource,\n scope: string\n ): MockedDOMSource {\n return source.select('.' + SCOPE_PREFIX + scope);\n }\n\n /**\n * PLAN-4.6: isolateSink for one vnode (a copy, with the scope class). 4-I G-558: a fragment (a\n * Collection's, `<>…</>`) has no element: each of its top-level elements gets the class (as the\n * real driver's scoped()); a text vnode is left as it is\n */\n public isolateValue(vnode: any, scope: string): any {\n // G-305: the scope's class token exactly (scope s1 is not s14)\n return !vnode || typeof vnode != 'object' ? vnode\n : !vnode.sel ? (vnode.children ? {...vnode, children: vnode.children.map((c: any) => this.isolateValue(c, scope))} : vnode)\n : vnode.sel.split('.').indexOf(SCOPE_PREFIX + scope) > 0 ? vnode : {...vnode, sel: vnode.sel + `.${SCOPE_PREFIX}${scope}`};\n }\n\n public isolateSink(sink: any, scope: string): any {\n return adapt(\n xs.fromObservable<any>(sink).map((vnode: VNode) => {\n // B-025: a Switchable's DOM sink starts with undefined (nothing rendered yet); the\n // real DOM driver's isolateSink passes it through too\n if (!vnode) return vnode;\n if (vnode.sel && vnode.sel.indexOf(SCOPE_PREFIX + scope) !== -1) {\n return vnode;\n } else {\n vnode.sel += `.${SCOPE_PREFIX}${scope}`;\n return vnode;\n }\n })\n );\n }\n}\n\nexport function mockDOMSource(\n mockConfig: MockConfig,\n hub?: MockEventHub,\n onEvents?: MockOnEvents\n): MockedDOMSource {\n return new MockedDOMSource(mockConfig, hub, [], onEvents);\n}\n","import xs, {Stream} from 'xstream';\nimport {adapt} from '../cycle/run/adapt';\n// [diagnostics hook] no-op when diagnostics are off\nimport {onBusEmit, onBusSelect} from './diagnostics/index';\n\nexport interface EventBusSource {\n select(type?: string | string[]): any;\n}\n\nexport interface BusEvent {\n type: string;\n data?: any;\n}\n\nexport default function eventBusDriver(out$: Stream<BusEvent>): EventBusSource {\n const events = new EventTarget();\n\n out$.subscribe({\n next: (event: BusEvent) => {\n onBusEmit(event && event.type, (event as any)?.__emitterName);\n events.dispatchEvent(new CustomEvent('data', {detail: event}));\n if (typeof window !== 'undefined' && (window as any).__SYGNAL_DEVTOOLS__?.connected) {\n (window as any).__SYGNAL_DEVTOOLS__.onBusEvent(event);\n }\n },\n error: (err: any) =>\n console.error('[EVENTS driver] Error in sink stream:', err),\n });\n\n return {\n select: (type?: string | string[]) => {\n onBusSelect(type);\n const all = !type;\n const _type = Array.isArray(type) ? type : [type];\n let cb: ((e: Event) => void) | undefined;\n const in$ = xs.create<any>({\n start: (listener) => {\n cb = ({detail: event}: any) => {\n const data = (event && event.data) || null;\n if (all || _type.includes(event.type)) listener.next(data);\n };\n events.addEventListener('data', cb);\n },\n stop: () => {\n if (cb) events.removeEventListener('data', cb);\n },\n });\n\n return adapt(in$);\n },\n };\n}\n","import {Stream} from 'xstream';\n\nexport default function logDriver(out$: Stream<any>): void {\n out$.addListener({\n next: (val: any) => {\n console.log(val);\n },\n error: (err: any) => {\n console.error('[LOG driver] Error in sink stream:', err);\n },\n });\n}\n","/**\n * PLAN-4.6 core: the ClientOnly marker (R2), registered on import by the public `ClientOnly`\n * module (sygnal/vike). On the client it is unwrapped, as today: one child stands in its place\n * (at the marker's path), none renders an empty div, several are wrapped in a div. SSR renders\n * its fallback (extra/ssr.ts, unchanged).\n */\nimport {pres} from '../registry'\n\npres.clientonly = (n) => {\n const c = n.children || []\n if (c.length < 2) return c.length ? c[0] : {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n return {sel: 'div', data: {}, children: c, text: undefined, elm: undefined, key: undefined}\n}\n","/**\n * PLAN-4.6 core: the app runtime, one per run() (03-proposal §3, 04 §2.4: the flush contract).\n *\n * - dispatch(): one FIFO queue, run to completion. An action dispatched while the queue drains\n * (a driver answering synchronously during sink delivery, an EFFECT, a PARENT, a hook) is\n * appended, never run nested; one dispatched while the flush renders is drained in that flush.\n * - commit(): a state write schedules one flush (a microtask).\n * - flush(): repeat { STATE streams, render top-down (dirty-checked), statics (R3's hook point),\n * drain the queue } until nothing changed; then ONE vnode to the DOM driver (one patch), then\n * the disposed instances' streams are stopped, and BOOTSTRAP goes to the instances created in\n * it a microtask later (D165). No startup timers, gates or holds.\n * - loop guard (G-260 / G-283 / G-284): at most 100 passes per flush; a flush caused by the one\n * before it (a commit while it ran or emitted: a loop that never settles) is chained, and past\n * 100 chained flushes, or 1,000 flushes of any kind without a macrotask, the next one waits for\n * a MessageChannel message. No setTimeout anywhere.\n * - teardown (D165 / Q18): while an instance unsubscribes, Stream.prototype._remove queues the\n * streams it leaves without listeners instead of arming xstream's stop timer, and the queue is\n * stopped at the first macrotask after the drain / flush (G-302). The swap is scoped to dispose().\n */\nimport xs from '../extra/xstreamCompat'\nimport {makeDOMDriver} from '../cycle/dom/index'\nimport eventBusDriver from '../extra/eventDriver'\nimport logDriver from '../extra/logDriver'\nimport {NOT_SINK, isAbort} from '../shared'\nimport {error as logError, callHook} from '../extra/diagnostics/legacy'\nimport type {ComponentFn, DefSource, Hooks, RuntimeAPI, ActionCause} from './hooks'\nimport {CoreDef, defOf, rootDef} from './define'\nimport {rootCell} from './cell'\nimport {Inst} from './instance'\nimport {viewOf} from './view'\nimport {stopQueued, INST, SET, SEED} from './teardown'\nimport {scanSources} from './statics'\n// the public ClientOnly is a separate bundle (sygnal/vike/ClientOnly) with no core of its own, so\n// its marker handler registers with the core (the other markers register from their modules)\nimport './markers/clientonly'\n\nconst LOOP = 100, HARD = 1000\n// the macrotask, captured at load (a test's fake timers don't hold the ping): Node drains a\n// MessagePort's messages back to back (timers starve), so its setImmediate is the macrotask\n// there; browsers have no setImmediate and get a MessageChannel\nconst G: any = globalThis\nconst SI: ((f: () => void) => void) | undefined = typeof G.setImmediate == 'function' ? G.setImmediate.bind(G) : undefined\nconst MC: any = typeof G.MessageChannel == 'function' ? G.MessageChannel : undefined\nconst ERR_FIX = 'See the attached error'\n\nexport interface StartOptions {\n mountPoint?: string | Element\n /** no effect (3-Q: the DOM driver flattens fragments) */\n fragments?: boolean\n useDefaultDrivers?: boolean\n onError?: (error: any, info: any) => void\n uid?: string\n /** internal: this app's hooks (testing, devtools, diagnostics) */\n __hooks?: Hooks\n /** internal: the root's state at start (an HMR swap) */\n __state?: any\n /** internal: an HMR swap: the instances its first flush makes get no BOOTSTRAP (as today's `__hmr`) */\n __swap?: boolean\n /** internal: renderComponent's root (test intent, initial state, name) */\n __override?: Partial<DefSource> & {name?: string; testActions?: string[]}\n}\n\nexport class App {\n state: any = undefined\n queue: any[] = []\n draining = false\n rendering = false\n flushing = false\n scheduled = false\n dirty = false\n /** in a flush's emission (a commit there chains the next flush) */\n tail = false\n chained = false\n chain = 0\n flushes = 0\n /** bumped on every state write (context memo) */\n ver = 0\n /** render epoch: bumped when a render threw (G-311: every instance injects its kids again once) */\n ep = 0\n root!: Inst\n last: any\n /** P46-P: a view ran but kept its last vnode (the flush still emits, as when it changed) */\n ran = false\n vdomL: any\n vdom$: any\n sources: Record<string, any> = {}\n proxies: Record<string, any> = {}\n bus: Record<string, any> = {}\n busL: Record<string, any> = {}\n /** G-296: before the first flush emitted, the sink values sent, per sink */\n early = true\n log: Record<string, any[]> = {}\n ex: Record<string, any> = {}\n exL: Record<string, any> = {}\n hooks: Hooks\n /** run()'s hooks, then each addHooks() layer (G-297) */\n layers: Hooks[]\n born: Inst[] = []\n watchers = new Set<Inst>()\n /** streams the disposed instances left without listeners, stopped when the drain / flush ends */\n dq: any[] = []\n stopping = false\n disposed = false\n initState: any\n /** D168 hook point (onContextSkip): a view context tracking skipped, with the context before and after */\n ctxSkip: ((inst: Inst, prev: any, next: any) => void) | null = null\n /** the statics step, recomputed after each render pass (statics.ts; set when a driver takes a static) */\n afterRender: (() => void) | null = null\n /** [sink, static] of the drivers that take a static; the reply-capable sources (statics.ts) */\n stat: Array<[string, string]> = []\n rep: string[] = []\n /** a definition's [sink, static] pairs (this app's drivers) */\n stc = new WeakMap<CoreDef, Array<[string, string]> | null>()\n /** the live instances that declare a static */\n statics = new Set<Inst>()\n defs = new WeakMap<ComponentFn, CoreDef>()\n waiters: Array<() => void> = []\n scopeN = 0\n mc: any\n hops: Array<() => void> = []\n ping = false\n desc: any[] = []\n\n constructor(public opts: StartOptions = {}) {\n this.hooks = {...opts.__hooks}\n this.layers = [opts.__hooks || {}]\n this.initState = opts.__state\n this.compose()\n // the dev entries' hooks ('sygnal/diagnostics', 'sygnal/devtools'), one layer each (04 §2.2:\n // what the bridge holds becomes hooks, read once per app); none without a dev entry\n const L = G.__SYGNAL_DIAGNOSTICS__?.layers\n // G-330: a throwing layer factory (a dev-entry bug) is reported and skipped; the app starts\n if (L) for (const f of L) {\n let h\n try { h = f(this.api()) } catch (e) { logError('SYG900', 'run', 'A dev-tools hook layer threw while the app started; it is skipped', 'Report this as a Sygnal bug', e); continue }\n this.addHooks(h)\n }\n }\n\n def(view: ComponentFn, override?: StartOptions['__override']) {\n return defOf(view, this.hooks.transformDef, this.defs, override)\n }\n /** a child's isolation scope (one for every channel of the instance, as isolate() gave) */\n scope() { return 's' + ++this.scopeN }\n\n // ---------------------------------------------------------------- queue\n /** `src`: for a reply, the source that delivered it (the action log's replySink) */\n dispatch(inst: Inst, type: any, data: any, cause: ActionCause = 'intent', src?: string) {\n if (this.disposed) return\n this.queue.push(inst, type, data, cause, src)\n if (!this.draining && !this.rendering) this.drain()\n }\n drain() {\n this.draining = true\n const q = this.queue\n try {\n for (let i = 0; i < q.length; i += 5) {\n const inst: Inst = q[i]\n if (inst.disposed) continue\n // G-331: one item that throws (a setState function from devtools / Vike / sygnal/element,\n // a hook) is reported; the rest of the queue still runs\n try {\n if (q[i + 1] === SET) {\n const f = q[i + 2], c = inst.cell\n const v = typeof f == 'function' ? f(c.get()) : f\n // (ABORT: no change, as from a reducer)\n if (v !== c.get() && !isAbort(v)) c.set(v)\n } else if (q[i + 1] === SEED) {\n // G-309: decided when it is applied: a parent write queued before it keeps the slice (D174)\n const d = q[i + 2], b = d.b\n if (d.r || !(b.has ? b.has() : b.get() !== undefined)) inst.cell.set(d.v)\n else this.hooks.onStateSeed?.(viewOf(inst), b.get(), d.v)\n }\n else inst.handle(q[i + 1], q[i + 2], q[i + 3], q[i + 4])\n } catch (e) {\n this.caught(inst, 'SYG216', `${typeof q[i + 1] == 'string' ? `Action '${q[i + 1]}'` : 'A state update'} threw; the actions queued after it still run`, e, 'reducer', typeof q[i + 1] == 'string' ? q[i + 1] : undefined)\n }\n if (this.watchers.size) this.notify()\n }\n } finally {\n q.length = 0\n this.draining = false\n if (!this.flushing && this.dq.length) this.stopLater()\n }\n }\n /** STATE.stream: the instances whose state changed emit it */\n notify() {\n for (const i of this.watchers) i.notify()\n }\n\n // ---------------------------------------------------------------- flush\n commit() {\n this.ver++\n if (this.flushing) { this.dirty = true; return }\n if (this.tail) this.chained = true\n if (this.scheduled || this.disposed) return\n this.scheduled = true\n const chained = this.chained\n this.chained = false\n this.chain = chained ? this.chain + 1 : 0\n // the first flush since the last macrotask pings one, which resets the count\n if (!this.flushes++) this.macro()\n if (this.chain > LOOP || this.flushes > HARD) this.macro(() => { this.chain = 0; this.flush() })\n else queueMicrotask(() => this.flush())\n }\n /**\n * A macrotask without a timer: one MessageChannel per app, at most one message in flight (it\n * resets the flush count, then runs the hops waiting for it)\n */\n macro(f?: () => void) {\n if (f) this.hops.push(f)\n if (this.ping) return\n this.ping = true\n if (SI) return void SI(() => this.pong())\n if (!MC) return void setTimeout(() => this.pong())\n if (!this.mc) {\n this.mc = new MC()\n this.mc.port1.onmessage = () => this.pong()\n this.mc.port1.unref?.()\n }\n this.mc.port2.postMessage(0)\n }\n /**\n * G-302: the streams disposed instances left without listeners stop at the first macrotask, as\n * xstream's own deferred stop does (a shared stream unmounted in one flush and mounted again in\n * the next keeps running), but through macro(): no setTimeout per stream\n */\n stopLater() {\n if (this.stopping) return\n this.stopping = true\n this.macro(() => { this.stopping = false; stopQueued(this.dq, this.stopErr) })\n }\n pong() {\n this.ping = false\n this.flushes = 0\n for (const g of this.hops.splice(0)) g()\n }\n flush() {\n this.scheduled = false\n if (this.disposed) return this.release()\n try { this.flushOnce() } finally { this.release() }\n }\n /** G-301: flushed() resolves once nothing is scheduled, after a throwing flush, or on dispose */\n release() {\n if (this.waiters.length && (!this.scheduled || this.disposed)) for (const w of this.waiters.splice(0)) w()\n }\n flushOnce() {\n this.flushing = true\n let v: any, n = 0\n try {\n do {\n this.dirty = false\n if (this.watchers.size) this.notify()\n this.rendering = true\n try { v = this.root.render() } catch (e) {\n // G-298: an error that escaped every boundary (a hook, a host): reported; the DOM keeps\n // its last render and the flush still ends (BOOTSTRAP, teardown, waiters)\n this.rendering = false\n this.caught(this.root, 'SYG406', 'Render threw; the page keeps its last render', e, 'view')\n v = this.last\n // G-311: the instances that rendered before the throw are injected at the next render\n this.ep++\n // G-320: the statics still follow the state (a throwing render doesn't freeze them)\n try { this.afterRender?.() } catch (_) { /* reported by the statics step */ }\n break\n }\n this.afterRender?.()\n this.rendering = false\n if (this.queue.length) this.drain()\n } while (this.dirty && ++n < LOOP)\n } finally {\n this.rendering = false\n this.flushing = false\n }\n this.tail = true\n try {\n // G-311 (c): what the throwing pass queued (a new child's INITIALIZE / seed) is still applied\n if (this.queue.length) this.drain()\n if (v !== this.last || this.ran) {\n this.ran = false\n this.last = v\n this.hooks.onPatch?.(v)\n this.vdomL?.next(v)\n }\n if (this.dq.length) this.stopLater()\n } finally {\n // G-313: a throwing patch / onPatch still ends the startup log and dispatches BOOTSTRAP\n this.tail = false\n // an HMR swap: what the start rendered was already bootstrapped in the old app\n if (this.opts.__swap) { this.opts.__swap = false; this.born.length = 0 }\n if (this.born.length) {\n const b = this.born.splice(0)\n queueMicrotask(() => { for (const i of b) if (!i.disposed) this.dispatch(i, 'BOOTSTRAP', undefined, 'built-in') })\n }\n if (this.dirty) { this.chained = true; this.dirty = false; this.commit() }\n if (this.early) { this.early = false; this.log = {} }\n }\n }\n\n // ---------------------------------------------------------------- sinks\n /** the app's stream for one sink (every instance's values; drivers get them synchronously) */\n sink(n: string) {\n return this.bus[n] ||= xs.create({start: (l: any) => { this.busL[n] = l }, stop: () => { delete this.busL[n] }})\n }\n out(n: string, v: any) {\n // G-296: until the first flush has emitted, a sink's values are kept for a listener added\n // right after run() / renderComponent (sinks[n], as Cycle's run buffered its sinks)\n if (this.early) (this.log[n] ||= []).push(v)\n const l = this.busL[n]\n if (!l) return\n try { l.next(v) } catch (e) {\n // GS-11: a driver that throws handling a sink value goes to the app's onError ('driver'),\n // and to the hooks' onError (G-303)\n const info: any = {phase: 'driver', driver: n}\n callHook(this.opts.onError, e, info)\n callHook(this.hooks.onError, e, info)\n queueMicrotask(() => { throw e })\n }\n }\n /** run()'s sinks[n]: the bus, with the values sent before the first flush replayed to its first listener (G-296) */\n exposed(n: string) {\n return this.ex[n] ||= xs.create({\n start: (l: any) => {\n const early = this.early ? this.log[n] : undefined\n if (early) for (const v of early.slice()) l.next(v)\n this.sink(n).addListener(this.exL[n] = {next: (v: any) => l.next(v), error: (e: any) => l.error(e), complete: () => l.complete()})\n },\n stop: () => { this.sink(n).removeListener(this.exL[n]) },\n })\n }\n /**\n * The value-level fallback (a source without isolateValue): one stream per instance and key\n * through `build` (isolateSink at each level), delivered to `to` synchronously.\n */\n pipe(inst: Inst, key: string, v: any, build: (s$: any) => any, to: (x: any) => void) {\n const fb = inst.fb ||= {}\n let p = fb[key]\n if (!p) {\n const in$ = xs.create()\n p = fb[key] = in$\n inst.subs.push(build(in$).subscribe({next: to}))\n }\n p.shamefullySendNext(v)\n }\n /** an instance's vnode, scoped by its parent's DOM source (isolateValue, else a pipe) */\n scopeValue(parent: Inst, _: string, v: any, inst: Inst) {\n const d = parent.dom\n if (!d || inst.scope === undefined) return v\n if (typeof d.isolateValue == 'function') return d.isolateValue(v, inst.scope)\n let r: any\n this.pipe(inst, '\\u0000DOM', v, (s$) => d.isolateSink(s$, inst.scope), (x) => { r = x })\n return r\n }\n\n // ---------------------------------------------------------------- errors\n /** G-342/G-267: a stream's stop() threw while an instance's streams were torn down */\n stopErr = (e: any, inst: any) => {\n console.error(`[Sygnal] ${inst ? inst.def.name + ': ' : ''}a stream's stop() threw while it was torn down; the other streams stopped`, e)\n inst ? this.appError(inst, e, 'dispose') : callHook(this.opts.onError, e, {phase: 'dispose'})\n }\n appError(inst: Inst, e: any, phase: string, action?: string) {\n const info: any = {componentName: inst.def.name, action, phase}\n callHook(this.opts.onError, e, info)\n // 3-W G-546: a hook layer's onError that throws is logged (as the app's is)\n callHook(this.hooks.onError, e, info)\n }\n /** an error caught at a call site that keeps running (as legacy caught(): a fail()'s own code) */\n caught(inst: Inst, code: string, message: string, err: any, phase: string, action?: string) {\n const s = err && err.sygnal\n s ? logError(err.code, s[0], `${s[1]} (${message})`, s[2], err) : logError(code, inst, message, ERR_FIX, err)\n this.appError(inst, err, phase, action)\n }\n\n // ---------------------------------------------------------------- intent sources\n /** the getters of an instance's intent sources (one descriptor map per app and kind) */\n srcDesc(child: boolean) {\n const k = +child\n if (this.desc[k]) return this.desc[k]\n const d: any = {}\n const get = (f: (i: Inst) => any) => ({get(this: any) { return f(this[INST]) }, enumerable: true, configurable: true})\n for (const n in this.sources) if (n !== 'DOM') d[n] = get(i => i.src(n))\n d.DOM = get(i => i.dom && (i.wd ||= wrapDOM(i.dom)))\n d.STATE = get(i => i.stateSource())\n d.CHILD = get(i => i.childSource())\n d.dispose$ = get(i => i.dispose$())\n if (child) {\n d.props$ = get(i => i.props$ || seeded(i, 'props$', i.props))\n d.children$ = get(i => i.children$ || seeded(i, 'children$', i.children))\n // a Command passed as a prop (createCommand): its messages, as today's `commands$`\n d.commands$ = get(i => i.commands())\n }\n return (this.desc[k] = d)\n }\n\n // ---------------------------------------------------------------- the runtime API (04 §2.3)\n api(): RuntimeAPI {\n const app = this\n const find = (t: any): Inst | undefined => t === 'root' ? app.root : typeof t == 'number' ? byId(app.root, t) : t && byId(app.root, t.id)\n return {\n get root() { return viewOf(app.root) },\n get: (id) => { const i = byId(app.root, id); return i && viewOf(i) },\n getState: () => app.state,\n setState: (t, s) => { const i = find(t); if (i) app.dispatch(i, SET, s, 'setState') },\n dispatch: (t, type, data, cause = 'simulateAction') => { const i = find(t); if (i) app.dispatch(i, type, data, cause) },\n addHooks: (h) => app.addHooks(h),\n setDebug: (t, on) => { const i = find(t); if (i) i.debug = on },\n flushed: () => new Promise<void>(r => (app.scheduled || app.flushing ? app.waiters.push(r) : r())),\n }\n }\n /**\n * A layer of hooks on top of run()'s own (devtools connecting late, a dev entry). G-297: the\n * remover drops only its own layer; the hooks are composed again from the layers left.\n */\n addHooks(h: Hooks) {\n this.layers.push(h)\n this.compose()\n return () => {\n const i = this.layers.indexOf(h)\n if (i >= 0) { this.layers.splice(i, 1); this.compose() }\n }\n }\n compose() {\n const H: any = this.hooks\n for (const k in H) delete H[k]\n this.ctxSkip = null\n for (const layer of this.layers) {\n const added: any = layer\n for (const k in added) {\n const a = added[k], b = H[k]\n if (!a) continue\n // G-312: a wrapping layer that returns nothing keeps what the layers below gave\n H[k] = !b ? a\n : k == 'wrapHandler' ? (i: any, t: any, s: any, f: any) => { const x = b(i, t, s, f) || f; return a(i, t, s, x) || x }\n : k == 'wrapSources' ? (i: any, s: any) => { const x = b(i, s) || s; return a(i, x) || x }\n : k == 'transformDef' ? (src: any, v: any) => { const x = b(src, v) || src; return a(x, v) || x }\n // onElementCommand: false (not run) from either layer\n : k == 'onElementCommand' ? (i: any, c: any) => { const x = b(i, c); return a(i, c) === false || x === false ? false : undefined }\n : (...args: any[]) => { b(...args); a(...args) }\n }\n }\n // D168's safety net (R4): a view context tracking skipped, offered for a re-run check\n const cs = H.onContextSkip\n if (cs) this.ctxSkip = (i, a, b) => cs(viewOf(i), (c: any) => i.def.view({...i.props, state: i.cell.get(), children: i.children, slots: i.slots, context: c, uid: i.uid}), a, b, [...(i.keys || [])])\n }\n\n dispose() {\n if (this.disposed) return\n try { this.root?.dispose() } finally {\n stopQueued(this.dq, this.stopErr)\n this.disposed = true\n for (const n in this.sources) try { this.sources[n]?.dispose?.() } catch (_) {}\n for (const n in this.proxies) try { this.proxies[n]._c() } catch (_) {}\n this.mc?.port1.close()\n this.release()\n }\n }\n}\n\nfunction wrapDOM(dom: any) {\n return new Proxy(dom, {get: (t, p, r) => (typeof p == 'symbol' || p in t ? Reflect.get(t, p, r) : (sel: any) => t.select(sel).events(p))})\n}\n/** props$ / children$: a memory stream with the current value, fed by setProps */\nfunction seeded(i: any, k: string, v: any) {\n const s = xs.createWithMemory()\n s.shamefullySendNext(v)\n return (i[k] = s)\n}\nfunction byId(i: Inst, id: number): Inst | undefined {\n if (i.id === id) return i\n for (const k of i.kids.values()) {\n if (k instanceof Inst) { const f = byId(k, id); if (f) return f }\n else if (k.insts) for (const j of k.insts()) { const f = byId(j, id); if (f) return f }\n }\n}\n\n/**\n * The root shim a root setup (persist, GS-5: `Root.persist.setup(component)`, root only as today)\n * runs on before the root exists (04 §3.2, §4 #1): the instance fields it reads and writes today.\n * It may restore into `initialState` and rewrite `model` (both read back into the root's Def);\n * `sources.STATE.stream`, `_dispose$` and `vdom$` are the root's, linked once it exists (the\n * returned function); `action$.shamefullySendNext` dispatches to the root (RESTORE).\n */\nfunction rootShim(app: App, Root: ComponentFn, src: DefSource): [any, () => void] {\n const st$ = xs.create(), dsp$ = xs.create()\n const shim = {\n name: (Root as any).componentName || Root.name || 'FUNCTION_COMPONENT', view: Root,\n model: src.model, initialState: src.initialState, calculated: src.calculated, stateSourceName: 'STATE',\n sources: {...app.sources, STATE: {stream: st$}},\n vdom$: app.vdom$, _dispose$: dsp$,\n action$: {shamefullySendNext: (a: any) => { if (app.root) app.dispatch(app.root, a.type, a.data, 'built-in') }},\n }\n return [shim, () => {\n const r = app.root\n r.stateSource().stream.addListener({next: (v: any) => st$.shamefullySendNext(v), error: () => {}})\n r.dispose$().addListener({next: (v: any) => dsp$.shamefullySendNext(v), error: () => {}})\n }]\n}\n\nexport interface Started {\n app: App\n sources: Record<string, any>\n sinks: Record<string, any>\n dispose: () => void\n api: RuntimeAPI\n}\n\n/**\n * Start an app: the drivers (run()'s defaults unless useDefaultDrivers is\n * false), the root instance, the first flush. Returns run()'s shape (sources with the root's\n * STATE, sinks: one stream per driver sink, DOM and the root's PARENT) plus the runtime API.\n */\nexport function start(Root: ComponentFn, drivers: Record<string, any> = {}, opts: StartOptions = {}): Started {\n const app = new App(opts)\n const {mountPoint = '#root', useDefaultDrivers = true} = opts\n // G-537 (D223): a DOM patch that throws goes to onError (phase 'patch') and the hooks' onError;\n // it is logged only without an onError. G-545: given to any DOM driver (one passed in drivers,\n // makeViewTransitionDOMDriver) through its source's isolate module\n const patchErr = (e: any, i: any = {phase: 'patch'}) => {\n opts.onError ? callHook(opts.onError, e, i) : console.error(e)\n callHook(app.hooks.onError, e, i)\n }\n const all: Record<string, any> = {\n ...(useDefaultDrivers && {EVENTS: eventBusDriver, DOM: makeDOMDriver(mountPoint as any), LOG: logDriver, __m: () => mountPoint}),\n ...drivers,\n }\n // the Cycle run loop, reduced: a proxy sink per driver, the driver's source, then the app's\n // streams imitated (values reach a driver synchronously; the DOM gets one vnode per flush)\n for (const n in all) {\n const p = app.proxies[n] = xs.create()\n const src = app.sources[n] = all[n](p, n)\n if (src && typeof src == 'object') try { src._isCycleSource = n } catch (_) {}\n if (src?._isolateModule) src._isolateModule.rep = patchErr\n }\n scanSources(app)\n app.vdom$ = xs.create({start: (l: any) => { app.vdomL = l; if (app.last) l.next(app.last) }, stop: () => { app.vdomL = null }})\n for (const n in all) {\n if (n == 'DOM') app.proxies.DOM.imitate(app.vdom$)\n // a PARENT driver (sygnal/element) gets the root's PARENT values, as under Cycle's run\n else if (!NOT_SINK.test(n) || n == 'PARENT') app.proxies[n].imitate(app.sink(n))\n }\n const was = app.draining\n app.draining = true\n let link: (() => void) | undefined\n try {\n const setup = (Root as any).persist?.setup\n const def = rootDef(Root, app.hooks.transformDef, opts.__override, typeof setup == 'function' ? (src) => {\n const [shim, l] = rootShim(app, Root, src)\n link = l\n setup(shim)\n return {...src, model: shim.model, initialState: shim.initialState}\n } : undefined)\n app.root = new Inst(app, def, null, rootCell(app), app.sources.DOM, {}, [], undefined,\n opts.uid ? opts.uid.replace(/[^\\w-]+/g, '_') : 'u', 'root')\n link?.()\n } catch (e) {\n app.draining = was\n app.dispose()\n throw e\n }\n app.draining = was\n if (app.queue.length) app.drain()\n app.commit()\n let dom$: any\n const sinks: Record<string, any> = {__dispose: () => app.dispose()}\n for (const n of new Set([...Object.keys(all), 'PARENT'])) {\n if (n == 'DOM') Object.defineProperty(sinks, n, {get: () => dom$ ||= app.vdom$.remember(), enumerable: true})\n else if (!NOT_SINK.test(n) || n == 'PARENT') Object.defineProperty(sinks, n, {get: () => app.exposed(n), enumerable: true})\n }\n const sources: Record<string, any> = {...app.sources}\n Object.defineProperty(sources, 'STATE', {get: () => app.root.stateSource(), enumerable: true})\n return {app, sources, sinks, dispose: () => app.dispose(), api: app.api()}\n}\n\n","import {configureDiagnostics, isDiagnosticsEnabled} from './diagnostics/index';\nimport {warn} from './diagnostics/legacy';\nimport type {DiagnosticsMode, DiagnosticsOptions} from './diagnostics/index';\nimport {start} from '../core/runtime';\n\ninterface RunDiagnosticsOptions extends DiagnosticsOptions {\n /** Strict (canonical-form) runtime checks; needs the 'sygnal/diagnostics' dev entry (G-036). */\n strict?: boolean;\n}\n\ninterface RunOptions {\n mountPoint?: string;\n /** @deprecated No effect since 6.0 (3-Q): fragments always work (the DOM driver flattens them) */\n fragments?: boolean;\n useDefaultDrivers?: boolean;\n /** Diagnostics mode (or mode + ignore list + strict). Overrides globalThis.__SYGNAL_DEV__. */\n diagnostics?: DiagnosticsMode | RunDiagnosticsOptions;\n /** PLAN-4 GS-11: app-level error hook, reporting only (after the component's onError boundary) */\n onError?: (error: any, info: {componentName?: string; action?: string; phase: string; driver?: string}) => void;\n /** PLAN-4 G-206: the root of this app's uid() strings (default 'u'); give each app on a page its own */\n uid?: string;\n}\n\nlet warnedStrict = false;\n// G-212: apps running now (an HMR swap disposes, then starts the new one)\nlet liveApps = 0;\n\ninterface SygnalRunResult {\n sources: any;\n sinks: any;\n dispose: () => void;\n hmr?: (newComponent: any, explicitState?: any) => void;\n /** internal: the app's runtime API (devtools, HMR, sygnal/element, Vike) */\n __runtime?: any;\n}\n\nfunction resolveHotModule(incoming: any): any {\n if (!incoming) return null;\n if (Array.isArray(incoming)) return resolveHotModule(incoming.find(Boolean));\n if (incoming.default && typeof incoming.default === 'function') return incoming;\n if (typeof incoming === 'function') return {default: incoming};\n return null;\n}\n\nexport default function run(\n app: any,\n drivers: Record<string, any> = {},\n options: RunOptions = {},\n // G-216 (internal): a hot swap's { u: swapping, s: state to keep }, this app's `__hmr` source\n hmrSwap?: {u: boolean; s: any}\n): SygnalRunResult {\n // D77: the DevTools bridge is not installed here; 'sygnal/devtools' (injected by\n // sygnal/vite in dev) installs window.__SYGNAL_DEVTOOLS__ before run() is called.\n\n // Resolve diagnostics mode: explicit option > globalThis.__SYGNAL_DEV__ > 'off'.\n // Each run() with the option is authoritative. Without it, mode and ignore list reset to\n // the defaults (no leakage from an earlier run()/configureDiagnostics()), unless another\n // app is still running (G-212: a second app or a custom element keeps the host's mode).\n const {diagnostics} = options;\n const diagOptions: RunDiagnosticsOptions = typeof diagnostics === 'string' ? {mode: diagnostics} : diagnostics || {};\n const {mode, strict} = diagOptions;\n if (diagnostics || !liveApps) configureDiagnostics({mode, ignore: diagOptions.ignore || []});\n // G-036: strict is applied only when given (an earlier configureStrict() is kept). It sets\n // the flag the dev entry's strict checks read; strict without a mode turns diagnostics on.\n // G-093: dispose() restores the previous value (an HMR swap disposes, then re-applies it).\n const core = (globalThis as any).__SYGNAL_DIAGNOSTICS__;\n const prevStrict = core.strict;\n if (strict !== undefined) {\n if ((core.strict = strict)) {\n if (!mode && !isDiagnosticsEnabled()) configureDiagnostics({mode: 'warn'});\n // SYG608 (once): the long explanation is in the docs / sygnal-check explain\n if (!core.__uninstallChecks && !warnedStrict) {\n warnedStrict = true;\n warn('SYG608', 'run', \"strict needs 'sygnal/diagnostics'\");\n }\n }\n }\n\n const {uid} = options;\n // (R4) an HMR swap: the kept state is the new root's first state, and the instances made at\n // its start get no BOOTSTRAP (as the 5.x core's `__hmr` source); no 0/20 ms re-sends\n const started = start(app, drivers, {...options, __hooks: (options as any).__hooks, __state: hmrSwap?.s, __swap: !!hmrSwap} as any);\n liveApps++;\n let off = false;\n const exposed: SygnalRunResult = {\n sources: started.sources,\n sinks: started.sinks,\n dispose: () => {\n if (off) return;\n off = true;\n liveApps--;\n // G-212: unregister from DevTools (a later app, or this app's hot-swapped successor, registers)\n if (typeof window !== 'undefined' && window.__SYGNAL_DEVTOOLS_APP__ === exposed) window.__SYGNAL_DEVTOOLS_APP__ = undefined;\n started.dispose();\n if (strict !== undefined) core.strict = prevStrict;\n },\n };\n (exposed as any).__runtime = started.api;\n // G-214: the uid option, as the 5.x core's __uid source\n if (uid !== undefined) Object.defineProperty(exposed.sources, '__uid', {value: uid.replace(/[^\\w-]+/g, '_'), enumerable: false, configurable: true});\n if (typeof window !== 'undefined') window.__SYGNAL_DEVTOOLS_APP__ ||= exposed;\n // (R4, 04 §3.12) hmr(): this app's current state through the runtime API (runtime.getState(),\n // no STATE.stream._v), then the new component started with it\n let current = app;\n exposed.hmr = (newComponent: any, explicitState?: any) => {\n const mod = resolveHotModule(newComponent) || {default: current};\n const state = explicitState !== undefined ? explicitState : (exposed as any).__runtime.getState();\n if (typeof window !== 'undefined') window.__SYGNAL_HMR_LAST_CAPTURED_STATE = state;\n const wasRegistered = typeof window !== 'undefined' && window.__SYGNAL_DEVTOOLS_APP__ === exposed;\n exposed.dispose();\n current = mod.default;\n const updated: any = run(current, drivers, options, state === undefined ? undefined : {u: true, s: state});\n exposed.sources = updated.sources;\n exposed.sinks = updated.sinks;\n (exposed as any).__runtime = updated.__runtime;\n // the registration follows the swap (the successor is this same object)\n if (typeof window !== 'undefined' && (window.__SYGNAL_DEVTOOLS_APP__ === updated || wasRegistered)) window.__SYGNAL_DEVTOOLS_APP__ = exposed;\n const d = updated.dispose;\n exposed.dispose = () => { if (typeof window !== 'undefined' && window.__SYGNAL_DEVTOOLS_APP__ === exposed) window.__SYGNAL_DEVTOOLS_APP__ = undefined; d(); };\n };\n return exposed;\n}\n","interface ModuleWithDefault {\n default: (...args: any[]) => any;\n}\n\ninterface HotModule {\n accept: (...args: any[]) => void;\n dispose?: (cb: () => void) => void;\n}\n\ninterface SygnalApp {\n hmr: (next: any, state?: any) => void;\n dispose?: () => void;\n}\n\nfunction normalizeModule(maybeModule: any): ModuleWithDefault | null {\n if (!maybeModule) return null;\n const candidate = maybeModule.default || maybeModule;\n if (typeof candidate !== 'function') return null;\n return maybeModule.default ? maybeModule : {default: candidate};\n}\n\nexport default function enableHMR(\n app: SygnalApp,\n hot: HotModule,\n loadComponent?: () => Promise<any>,\n acceptDependencies?: string | string[]\n): SygnalApp {\n if (!app || typeof app.hmr !== 'function') return app;\n if (!hot || typeof hot.accept !== 'function') return app;\n\n let applying = false;\n\n const apply = async (acceptedModules: any) => {\n if (applying) return;\n applying = true;\n const incoming = Array.isArray(acceptedModules)\n ? acceptedModules.find(Boolean)\n : acceptedModules;\n try {\n let next = normalizeModule(incoming);\n if (!next && typeof loadComponent === 'function') {\n const loaded = await loadComponent();\n next = normalizeModule(loaded);\n }\n if (next) {\n // (hmr() keeps the app's current state, read through the runtime API)\n app.hmr(next);\n }\n } finally {\n applying = false;\n }\n };\n\n const invoke = (modules: any) => {\n Promise.resolve(apply(modules)).catch(() => {});\n };\n\n if (typeof acceptDependencies !== 'undefined') {\n hot.accept(acceptDependencies, invoke);\n }\n // Fallback boundary for bundlers/environments where dependency accept is not triggered as expected.\n hot.accept(invoke);\n\n if (typeof hot.dispose === 'function' && typeof app.dispose === 'function') {\n hot.dispose(() => app.dispose!());\n }\n\n return app;\n}\n","type ClassArg = string | string[] | Record<string, boolean | (() => boolean)>;\n\n/**\n * Return a validated and properly separated string of CSS class names from\n * any number of strings, arrays, and objects.\n */\nexport default function classes(...args: ClassArg[]): string {\n return args\n .reduce<string[]>((acc, arg) => {\n if (typeof arg === 'string' && !acc.includes(arg)) {\n acc.push(...classes_processString(arg));\n } else if (Array.isArray(arg)) {\n acc.push(...classes_processArray(arg));\n } else if (typeof arg === 'object') {\n acc.push(...classes_processObject(arg));\n }\n return acc;\n }, [])\n .join(' ');\n}\n\nfunction isValidClassName(className: string): boolean {\n return /^[a-zA-Z0-9-_]+$/.test(className);\n}\n\nfunction classes_processString(str: string): string[] {\n if (typeof str !== 'string') throw new Error('Class name must be a string');\n return str\n .trim()\n .split(' ')\n .reduce<string[]>((acc, item) => {\n if (item.trim().length === 0) return acc;\n if (!isValidClassName(item))\n throw new Error(`${item} is not a valid CSS class name`);\n acc.push(item);\n return acc;\n }, []);\n}\n\nfunction classes_processArray(arr: string[]): string[] {\n return arr.map(classes_processString).flat();\n}\n\nfunction classes_processObject(\n obj: Record<string, boolean | (() => boolean)>\n): string[] {\n return Object.entries(obj)\n .filter(([_key, predicate]) =>\n typeof predicate === 'function' ? predicate() : !!predicate\n )\n .map(([key, _]) => {\n const trimmed = key.trim();\n if (!isValidClassName(trimmed))\n throw new Error(`${trimmed} is not a valid CSS class name`);\n return trimmed;\n });\n}\n","import xs from './xstreamCompat';\nimport type {MemoryStream} from 'xstream';\n\nexport interface Ref<T = HTMLElement> {\n current: T | null;\n}\n\nexport interface Ref$<T = HTMLElement> extends Ref<T> {\n stream: MemoryStream<T | null>;\n}\n\nexport function createRef<T = HTMLElement>(): Ref<T> {\n return { current: null };\n}\n\nexport function createRef$<T = HTMLElement>(): Ref$<T> {\n const listener: { next: (val: T | null) => void } = { next: () => {} };\n const stream: MemoryStream<T | null> = xs.createWithMemory({\n start(l: any) { listener.next = (val) => l.next(val); },\n stop() { listener.next = () => {}; },\n });\n\n const ref: Ref$<T> = {\n current: null,\n stream,\n };\n\n return new Proxy(ref, {\n set(target, prop, value) {\n if (prop === 'current') {\n (target as any).current = value;\n listener.next(value);\n return true;\n }\n (target as any)[prop] = value;\n return true;\n },\n });\n}\n","/**\n * controls(spec) (PLAN-4 CT-1): element tokens that link a view to its intent by identifier.\n *\n * const { Draft, Add } = controls({ Draft: 'input', Add: 'button' })\n * <Draft value={state.draft} /><Add>Add</Add>\n * App.intent = ({ DOM }) => ({ DRAFT: DOM.input(Draft).value(), ADD: DOM.click(Add) })\n *\n * Each key becomes a control: a JSX tag that renders its spec's element with every prop passed\n * through plus data-control=\"<Key>\" (merged into data.attrs), and that stringifies to\n * [data-control=\"<Key>\"], so it is accepted wherever a selector string is (DOM.select and the\n * DOM.<event> shorthands through MainDOMSource.select, simulateEvent, query, template strings).\n *\n * A control is not a component: the pragma recognises it by its `__sygnalControl` render hook\n * (src/pragma/index.ts) and calls it with the props, the children and its own createElement.\n * The JSX runtime entries use the core's pragma (D188), so the `h` passed in is the core\n * createElement; the hook keeps it a parameter (spec.vnode's contract, D101/D116).\n *\n * A spec is an intrinsic tag name or a spec object { kind, vnode(props, children, h), commands? }\n * (the frozen contract D101/D116, PLAN-5 widgets build on it). vnode() must return one element\n * vnode; the stamp keeps its key, hooks and other data, and the props' key is copied onto it\n * when it has none. `kind` ('element' for a tag) and `spec` stay on the control (inspect(),\n * element commands).\n *\n * In dev, the 'sygnal/diagnostics' entry publishes `control(control, vnode)` on the core bridge:\n * SYG125 (component statics on a control, or a vnode() that isn't one element vnode) and the\n * controls listed by inspect(). Without it (production) the call is skipped.\n */\nexport function controls(spec: Record<string, any>): Record<string, any> {\n const out: Record<string, any> = {}\n for (const key in spec) {\n const s = spec[key]\n const control: any = () => {}\n control.__sygnalControl = (data: any, children: any[], h: any) => {\n const v = typeof s == 'string' ? h(s, data, ...children) : s.vnode(data || {}, children, h)\n ;(globalThis as any).__SYGNAL_DIAGNOSTICS__?.control?.(control, v)\n const d = v.data ||= {}\n d.attrs = {...d.attrs, 'data-control': key}\n if (v.key === undefined && data) v.key = data.key\n return v\n }\n control.toString = () => `[data-control=\"${key}\"]`\n control.kind = typeof s == 'string' ? 'element' : s.kind\n control.spec = s\n out[key] = control\n }\n return out\n}\n","/**\n * PLAN-5 W-1 (D189/D190/D196): `defineWidget`, a framework-agnostic third-party widget (a date\n * picker, a chart, an editor) as a JSX tag (canonical) that also works as a control spec.\n *\n * const DatePicker = defineWidget({\n * tag: 'input',\n * mount: (el, props, dispatch) => flatpickr(el, { defaultDate: props.value, onChange: ([d]) => dispatch('pick', d) }),\n * update: (fp, props) => fp.setDate(props.value, false),\n * unmount: (fp) => fp.destroy(),\n * events: ['pick'],\n * commands: { open: (fp) => fp.open() },\n * })\n * // view: <label>Due <DatePicker className=\"due\" value={state.due} /></label>\n * // intent: DUE: DOM.select('.due').events('pick').detail()\n * // model: OPEN_DUE: { ELEMENT: { open: '.due' } }\n * // alt: const { Due } = controls({ Due: DatePicker }); DOM.select(Due).events('pick'), { open: Due }\n *\n * 0 B in the core when unused: everything is in this module, and the marker handler is registered\n * by the first defineWidget() call, not on import.\n * - The tag is a function carrying the pragma's control render hook (`__sygnalControl`, CT-1), so\n * `<DatePicker …/>` never becomes a component. It is also a control spec object (D101/D116:\n * `kind`, `vnode(props, children, h)`, `commands`), so `controls({ Due: DatePicker })` works.\n * - `vnode()` returns a `widget` marker; the owner's reconcile walk rewrites it through the marker\n * registry (`pres.widget`, given the marker's path) into the host vnode, with the owner instance\n * at hand (onError). The host has no children (opaque to snabbdom) and carries the newest props\n * in `data.wp`; its hooks read the vnode they are given, so `update` always gets the props of\n * the render being patched (no closure over mount-time props). Each host has its own hook\n * object: the widget's, then a `ref`'s (the host element), then a `<Transition>`'s (G-363).\n * - 1-R (G-360): the host's key names the widget and the instance (its key in the parent, or its\n * place when unkeyed), so snabbdom never patches a host into another vnode (a plain element of\n * the same tag, another widget, the error fallback) or the reverse: the host is destroyed and\n * the widget unmounts.\n * - The record `{ w (the tag), p (props), i (instance), e (dispatch) }` lives on the host element\n * as the non-enumerable `__sw` (D200: short, the core reads it), so the instance survives re-renders and keyed moves\n * (snabbdom moves the element). Mount runs on insert, or on the first patch of an element that\n * has none (SSR hydration). `update` runs when the props change (shallow; an object host prop\n * such as `style` one level deep, G-362); without `update`, a change remounts (G-367: a mount\n * that throws then is SYG660 and leaves no record). `unmount` on destroy (a removed Portal\n * destroys its content too, G-359).\n * - `className` goes to the host as class-module tokens (G-364): a change toggles only those, not\n * the classes the library added (flatpickr's `flatpickr-input`).\n * - `dispatch(name, detail)` (mount's third parameter) dispatches a bubbling CustomEvent on the\n * host: the intent reads it like any DOM event (`.detail()`); isolation (Collection items)\n * applies as for any element.\n * - Commands: D102's `spec.commands[name](hostElement, options)` resolves the instance from the\n * host. For selector targets each command whose name the element doesn't already have is also\n * a method of the host (D190); a declared command whose name is a native method (`focus`,\n * `close`) is found by the core through `__sw` and wins over the native one, with the\n * options object (D196, D200).\n * - A widget tag is not a selector: `DOM.select(DatePicker)` matches nothing (SYG143 in dev).\n * - G-413: `ownProps` names props that stay off the host although they'd go there (a part that\n * puts `aria-label` on its own control).\n * - G-409: mount's fourth parameter `error(e)` reports a later failure the widget caught itself\n * (fromZag's machine-driven redraws): handled as a throwing `update` (SYG661 + fallback; G-580:\n * the dev message says the widget reported it through error(e)).\n * - A `mount`/`update` that throws (SYG660/661): reported to the app's onError with phase\n * 'widget' (D105), and the owner's next render shows its `onError` fallback in that instance's\n * place (G-361: per instance; a render with other props tries again, and the failure is\n * forgotten when the fallback leaves the page). `unmount` (SYG662): reported, nothing to replace.\n * - Inside `<Portal>`: the Portal's children are rewritten here too (Portal children are not\n * walked by the core), so a widget works in a portal.\n * - SSR (extra/ssr.ts): the host, with `fallback` inside it; the client patch replaces it with\n * the keyed host and mounts.\n *\n * Dev text lives in the 'sygnal/diagnostics' entry (checks/widgets.ts), reached through the core\n * bridge as `widget(code, widgetTag, owner, extra)`: SYG140 (dispatch of an undeclared event),\n * SYG143, SYG144 (a declared event the host fires natively), SYG660–662. Without the entry, a\n * thrown mount/update/unmount is logged as `[Sygnal SYG66x]` with the error.\n */\nimport {pres} from '../core/registry'\nimport {chainHooks} from '../pragma/index'\n\nconst W = '__sw'\n\n// props that also go to the host element (every prop but key goes to the widget; ref is the host's)\nconst HOST = /^(id|class(Name)?|style|title|name|placeholder|role|tab[iI]ndex|hidden|lang|dir|attrs)$|^(aria|data)-/\n\n/** the dev entry's reporter (checks/widgets.ts); returns the diagnostic when one was reported\n * (r: G-580, a 661 the widget reported through error(e), not a throwing update) */\nconst dev = (code: number, w: any, o?: any, x?: any, r?: any): any => (globalThis as any).__SYGNAL_DIAGNOSTICS__?.widget?.(code, w, o, x, r)\n\nlet ids = 0\n\n// shallow; G-362: an object host prop (style, attrs, a class map) compares one level deep, so a\n// new object with the same entries is no change (snabbdom patches the host from it anyway)\nconst same = (a: any, b: any, d?: any): any => {\n const k = Object.keys(a)\n return k.length == Object.keys(b).length && k.every(x => a[x] === b[x] ||\n !d && HOST.test(x) && typeof a[x] == 'object' && typeof b[x] == 'object' && a[x] && b[x] && same(a[x], b[x], 1))\n}\n\n// k: the host's key, the failure's place; [error, the props of the fallback's last render]; r:\n// reported through error(e)\nfunction fail(o: any, w: any, k: any, code: number, e: any, r?: any) {\n e = e instanceof Error ? e : Error(e)\n dev(code, w, o, e, r) || console.error(`[Sygnal SYG${code}]`, e)\n o.app.appError(o, e, 'widget')\n if (code < 662 && !o.disposed) (o.$wf ||= new Map()).set(k, [e]), o.refresh()\n}\n\nfunction mount(v: any) {\n const el = v.elm, {ww: w, wp: p, wo: o} = v.data\n const d = (n: string, detail?: any) => { dev(140, w, o, n); el.dispatchEvent(new CustomEvent(n, {detail, bubbles: true})) }\n let i: any\n dev(144, w, o, el)\n // G-409: mount's fourth parameter reports a later failure (an adapter's own redraw): SYG661,\n // the owner's onError fallback in this instance's place, as for a throwing update (G-580: the\n // dev text says error(e) reported it)\n const err = (x: any) => { el[W] && fail(o, w, v.key, 661, x, 1) }\n try { i = w.def.mount(el, p, d, err) } catch (x) { return fail(o, w, v.key, 660, x) }\n Object.defineProperty(el, W, {value: {w, p, i, e: d}, configurable: true})\n // the tag form's commands: a host method for each one the element doesn't have (D190)\n for (const m in w.def.commands) m in el || (el[m] = (x: any) => el[W]?.w.commands[m]?.(el, x))\n}\n\nfunction destroy(v: any) {\n const el = v.elm, s = el[W]\n if (s) {\n delete el[W]\n try { s.w.def.unmount?.(s.i, el) } catch (x) { fail(v.data.wo, s.w, v.key, 662, x) }\n }\n}\n\nconst hooks: any = {\n insert: mount,\n postpatch(_: any, v: any) {\n const el = v.elm, p = v.data.wp, s = el[W]\n // SSR hydration (the element was patched in place, never inserted): mount now\n if (!s) return mount(v)\n const u = s.w.def.update\n if (same(s.p, p)) return\n // G-367: without update, a change remounts\n if (!u) return destroy(v), mount(v)\n try { u(s.i, p, el); s.p = p } catch (x) { fail(v.data.wo, s.w, v.key, 661, x) }\n },\n destroy,\n}\n\n/** the host vnode for a widget marker (client: the hooks, the owner and the key k; SSR adds the fallback) */\nfunction host(n: any, o?: any, k?: any): any {\n const {ww: w, wp: p, h, attrs, r} = n.data, def = w.def, hp: any = {ref: r}\n for (const x in p) if ((HOST.test(x) || def.hostProps?.includes(x)) && !def.ownProps?.includes(x)) hp[x] = p[x]\n if (hp.className) hp.class = [hp.class, hp.className], delete hp.className\n const v = h(def.tag || 'div', hp), d = v.data\n if (attrs) d.attrs = {...d.attrs, ...attrs}\n if (o) {\n v.key = k\n d.ww = w; d.wp = p; d.wo = o; v.children = undefined\n // a hook object per host: a ref's hooks (from h), the widget's, then a Transition's (marker)\n chainHooks(d, hooks)\n n.data.hook && chainHooks(d, n.data.hook)\n }\n return v\n}\n\n/** pres.widget: the host, or the owner's fallback where this instance failed */\nfunction rewrite(n: any, o: any, path: string): any {\n const w = n.data.ww, p = n.data.wp, wf = o.$wf\n // the instance: the widget and its key, or its place when unkeyed\n const k = 'w' + w.$i + (n.key == null ? path : '#' + n.key)\n let f = wf?.get(k)\n // a render with other props than the fallback's last one tries again\n if (f && f[1] && !same(f[1], p)) wf.delete(k), f = 0\n if (!f) return host(n, o, k)\n f[1] = p\n const def = o.def, x = n.data.h('div', {attrs: {'data-sygnal-error': def.name}})\n let r: any = x\n try { r = def.onError?.(f[0], {componentName: def.name}) || x } catch (_) {}\n // its own key; the failure is forgotten when it leaves the page (a reopened panel tries again)\n chainHooks((r = {...r, key: k + '!', data: {...r.data}}).data, {destroy: () => wf.delete(k)})\n return r\n}\n\n/** widget markers among a Portal's children (the core doesn't walk them) */\nconst inPortal = (c: any[], o: any, x: string): any[] =>\n c.map((n, i) => n?.sel == 'widget' ? rewrite(n, o, x + '.' + i) : n?.children ? {...n, children: inPortal(n.children, o, x + '.' + i)} : n)\n\nexport function defineWidget(def: any): any {\n pres.widget ||= rewrite\n const p: any = pres.portal\n if (p && !p.$w) ((pres.portal = (n: any, o: any, x: string) => p({...n, children: inPortal(n.children || [], o, x)}, o, x)) as any).$w = 1\n const w: any = () => {}, commands: any = {}\n // D200: any name, `close` and `togglePopover` too (the core passes a widget command the options)\n for (const m in def.commands) commands[m] = (el: any, o: any) => el[W] && def.commands[m](el[W].i, o || {}, el)\n return Object.assign(w, {\n kind: 'widget',\n def,\n $i: ++ids,\n events: def.events || [],\n commands,\n // D101/D116: the control spec's vnode(props, children, h): one (marker) element vnode; also\n // the tag form's pragma render hook (no data-control stamp)\n vnode: w.__sygnalControl = (props: any, _: any, h: any) => {\n const {key, ref, ...p} = props || {}\n return {sel: 'widget', data: {ww: w, wp: p, h, r: ref}, children: undefined, text: undefined, key}\n },\n $ssr: host,\n // D190/D199: a widget tag is not a selector (SYG143 in dev): select its className or a control\n toString: () => (dev(143, w), ':not(*)'),\n })\n}\n","/*\n * PLAN-4 GS-1: reusable behaviors.\n *\n * const pager = defineBehavior({ initialState, intent: (sources, options) => ..., model, calculated })\n * TaskList.uses = { pager: pager({ pageSize: 10, next: Newer, prev: Older }) }\n *\n * A behavior runs on state[key] (a lens). Its actions are '<key>.<ACTION>' (D109). Each value a\n * factory returns carries its own `merge(component, key)`; the core only loops over `uses` and\n * calls it (D114), so an app that never imports this module pays nothing.\n *\n * Merge rules (applied to the component instance, never to its statics):\n * - initialState: state[key] = the behavior's initialState, with the options that name one of its\n * keys (pageSize) overriding it, plus its calculated fields. On a sub-component host (a\n * Collection item, a child with a `state` prop) the slice isn't written into initialState\n * (that would replace the parent's slice, SYG405): state[key] reads as that default until the\n * first write (the core's `_idle` defaults, as for resources).\n * - calculated: fields of the slice, stored on it (state.pager.offset), recomputed after every\n * behavior reducer and after any host STATE reducer that changes state[key].\n * - model: each entry gets the slice (STATE returns the new slice; ABORT and the slice itself\n * mean no change, GS-4), `next('ACTION')` names the behavior's own actions. A host entry for\n * the same action ('pager.NEXT') runs after the behavior's: a host STATE reducer gets the full\n * state with the behavior's update applied (its ABORT keeps that update), a host EFFECT runs\n * after the behavior's, and a host value sink (EVENTS, PARENT, a driver) replaces the\n * behavior's value for that sink.\n * - intent: gets the host's sources (DOM is the host's isolated DOM source; CHILD, EVENTS and\n * drivers as they are) with STATE lensed to the slice, plus the options. A host intent action\n * with the same namespaced name overrides the behavior's trigger.\n * - `instance._behaviorActions` maps each behavior-owned action to its key (t.actions, 2-C).\n * A host intent action of the same name makes it host-owned (removed from the map).\n * - renderComponent marks the streams it adds for simulateAction (`__sygnalTestActions`); they\n * are merged with a behavior trigger of the same name instead of overriding it.\n * - D197 (PLAN-5): every model handler gets `(slice, data, next, props, options, key)`: the\n * use's options and its key in `uses` (so a driver request can name a reply action\n * `key + '.LOADED'`); the intent gets `(sources, options, key)`.\n * - D197: `HOST: (state, data, next, props, options, key) => state` in a model entry is a STATE\n * reducer on the host's whole state (sortable reorders the host's array); ABORT or the same\n * state is no change; the slice's calculated fields are recomputed when it changed. G-378:\n * with a STATE in the same entry, STATE runs first and HOST gets its result.\n * - D197: `timers: (slice, options, key) => ({ name: spec })` declares timers (makeTimerDriver)\n * for the host: named '<key>.<name>', a spec's action / frame naming one of the behavior's\n * actions is namespaced as next() does. They join the host's own `timers` static through an\n * accessor on the component function (installed once; the host's own value is kept as is and\n * can still be assigned), which reads the host's current `uses`.\n * - Limitations: a host intent must return an object (not one stream).\n */\nimport xs from './xstreamCompat'\nimport {isAbort} from '../shared'\n// a model entry as { sink: fn }: a constant is sent as is, `true` sends the action's data, an\n// EFFECT constant does nothing (as the core treats them)\nconst sinksOf = (e: any, S: string): any => {\n const o: any = typeof e == 'function' ? {[S]: e} : {...e}\n for (const s in o) {\n const v = o[s]\n if (typeof v != 'function') o[s] = s == 'EFFECT' ? () => {} : v === true || v === undefined ? (_: any, d: any) => d : () => v\n }\n return o\n}\n\n// two STATE reducers in turn: the second gets the first's state (the given one when it ABORTs);\n// an ABORT from the second keeps the first's\nconst seq = (bf: any, hf: any) => (st: any, ...x: any[]) => {\n const r = bf(st, ...x), q = hf(isAbort(r) ? st : r, ...x)\n return isAbort(q) ? r : q\n}\n\nconst calcOf = (calcs: any) => (r: any) => {\n if (r && typeof r == 'object') for (const f in calcs) r = {...r, [f]: calcs[f](r)}\n return r\n}\n\n// the hosts whose `timers` static is an accessor (D197); the accessor's getter: the host's own\n// timers plus each behavior's (from the host's current `uses`)\nconst timed = new WeakSet<any>()\nconst addTimers = (v: any): void => {\n if (timed.has(v)) return\n timed.add(v)\n let own = v.timers\n const all = (st: any) => {\n const o: any = {}, f = own\n if (typeof f == 'function') Object.assign(o, f(st))\n else if (f && typeof f == 'object') for (const r in f) o[r] = f[r](st)\n const u = v.uses\n for (const k in u) {\n const b = u[k], t = b?.timers?.(st?.[k] ?? b.state, b.options, k), rn = (a: any) => a in (b.model || {}) ? k + '.' + a : a\n for (const n in t) {\n const x = t[n]\n o[k + '.' + n] = x && {...x, ...(x.action && {action: rn(x.action)}), ...(x.frame && {frame: rn(x.frame)})}\n }\n }\n return o\n }\n Object.defineProperty(v, 'timers', {configurable: true, enumerable: true, get: () => all, set: (x: any) => { own = x }})\n}\n\nconst mergeBehavior = (c: any, k: string, b: any): void => {\n const S = c.stateSourceName, calcs = b.calculated, calc = calcOf(calcs), model = c.model = {...c.model}, slice = b.state\n const owned = c._behaviorActions ||= {}, ns = (a: string) => k + '.' + a, opts = b.options\n if (b.timers && c.view) addTimers(c.view)\n if (c.isSubComponent && !c.isolatedState) c._idle = {...c._idle, [k]: slice}\n else c.initialState = {...(typeof c.initialState == 'object' ? c.initialState : {}), [k]: slice}\n\n // the slice's calculated fields stay fresh when a host reducer changes state[key]\n const fresh = (f: any) => (st: any, ...x: any[]) => {\n const r = f(st, ...x)\n return r && typeof r == 'object' && st && r[k] !== st[k] ? {...r, [k]: calc(r[k])} : r\n }\n if (calcs) for (const a in model) {\n const e = model[a]\n if (typeof e == 'function') { if (!a.includes('|') || a.split('|')[1].trim() == S) model[a] = fresh(e) }\n else if (e?.[S]) model[a] = {...e, [S]: fresh(e[S])}\n }\n\n for (const a in b.model) {\n const e = sinksOf(b.model[a], S), m: any = {}, host = model[ns(a)]\n for (const s in e) {\n // HOST: a STATE reducer on the host's whole state (D197). G-378: with a STATE in the same\n // entry, STATE runs first and HOST gets the state with its update (seq)\n const whole = s == 'HOST', o = whole ? S : s\n const f = (st: any, d: any, next: any, p: any) => {\n const r = e[s](whole ? st : st?.[k], d, next && ((t: string, ...y: any[]) => next(t in b.model ? ns(t) : t, ...y)), p, opts, k)\n return whole ? (isAbort(r) || r === st || !r || r[k] === st?.[k] ? r : {...r, [k]: calc(r[k])})\n : s != S || isAbort(r) ? r : r === st[k] ? st : {...st, [k]: calc(r)}\n }\n m[o] = !m[o] ? f : whole ? seq(m[o], f) : seq(f, m[o])\n }\n if (host) {\n const hs = sinksOf(host, S)\n for (const s in hs) {\n const bf = m[s], hf = hs[s]\n m[s] = !bf ? hf\n : s == S ? seq(bf, hf)\n : s == 'EFFECT' ? (...x: any[]) => { bf(...x); hf(...x) }\n : hf\n }\n }\n model[ns(a)] = m\n owned[ns(a)] = k\n }\n\n // one combined intent per instance: the behaviors' actions, then the host's own (which win)\n if (!c._uses) {\n const own = c.intent, list: any[] = c._uses = []\n c.intent = (so: any) => {\n const o: any = {}\n for (const [k, b, slice] of list) {\n const st = so[S], i = b.intent?.({...so, [S]: st?.select({get: (s: any) => s?.[k] ?? slice})}, b.options, k)\n for (const a in i) o[k + '.' + a] = i[a], owned[k + '.' + a] = k\n }\n const h = own?.(so), test = h?.__sygnalTestActions || []\n // renderComponent adds a stream for each static model action (simulateAction): merged in, not an override\n for (const a in h) test.includes(a) && o[a] ? o[a] = xs.merge(o[a], h[a]) : (delete owned[a], o[a] = h[a])\n return o\n }\n }\n c._uses.push([k, b, slice])\n}\n\n/**\n * defineBehavior({ initialState, intent?, model?, calculated?, timers? }) returns a factory; call\n * it with the options for one use (`pager({ pageSize: 10, next: Newer })`) in a component's `uses`.\n */\nexport const defineBehavior = (def: any) => (options: any = {}): any => {\n const init = {...def.initialState}, b: any = {...def, options}\n for (const o in options) if (o in init) init[o] = options[o]\n // the slice a host starts with: initialState, the options naming its keys, its calculated fields\n b.state = calcOf(def.calculated)(init)\n b.merge = (c: any, k: string) => mergeBehavior(c, k, b)\n return b\n}\n","/*\n * PLAN-4 GS-1: the first-party `pager` behavior.\n *\n * const { Older, Newer } = controls({ Older: 'button', Newer: 'button' })\n * List.uses = { pager: pager({ pageSize: 10, next: Newer, prev: Older }) }\n *\n * Slice: { page, pageSize, total } plus the calculated offset, pages, hasPrev, hasNext.\n * Actions: pager.NEXT, pager.PREV (ABORT at the bounds), pager.GOTO (page number, clamped),\n * pager.SET_TOTAL (item count; keeps the page in range). `total` is optional: without it NEXT\n * has no upper bound and `pages` is null. A host reducer may also write `state.pager.total`;\n * the calculated fields follow.\n */\nimport { defineBehavior } from './behaviors'\nimport { ABORT } from '../shared'\n\nconst pagesOf = (p: any) => p.total == null ? null : Math.max(1, Math.ceil(p.total / p.pageSize))\nconst to = (p: any, page: number) => {\n const n = pagesOf(p)\n page = Math.max(0, Math.min(page | 0, n == null ? page : n - 1))\n return page === p.page ? ABORT : {...p, page}\n}\n\n/**\n * A page cursor over a list (GS-1 behavior). Options: `pageSize` (20), `page` (0), `total`\n * (null: unknown), and the controls `next` / `prev` whose clicks move the page. Use it as\n * `uses = { pager: pager({ pageSize: 10, next: Newer, prev: Older }) }`, then render\n * `items.slice(state.pager.offset, state.pager.offset + state.pager.pageSize)`.\n */\nexport const pager = /*#__PURE__*/ defineBehavior({\n initialState: {page: 0, pageSize: 20, total: null},\n intent: ({DOM}: any, {next, prev}: any) => ({\n ...(next && {NEXT: DOM.click(next)}),\n ...(prev && {PREV: DOM.click(prev)}),\n }),\n model: {\n NEXT: (p: any) => to(p, p.page + 1),\n PREV: (p: any) => to(p, p.page - 1),\n GOTO: (p: any, page: number) => to(p, page),\n SET_TOTAL: (p: any, total: number) => {\n const q = {...p, total}, r = to(q, p.page)\n return r === ABORT ? q : r\n },\n },\n calculated: {\n offset: (p: any) => p.page * p.pageSize,\n pages: pagesOf,\n hasPrev: (p: any) => p.page > 0,\n hasNext: (p: any) => p.total == null || p.page + 1 < pagesOf(p)!,\n },\n})\n","/*\n * PLAN-5 F-1: form helpers. The `form` behavior (./form.ts) is built on them, and they are\n * exported as the escape hatch for a form written with plain model actions (D193, shape B).\n * Pure functions over a plain `values` object, for model reducers; 0 B core.\n *\n * Field names: a field's `name=` attribute is its path in `values`, dot-separated. A segment\n * inside an array of objects is the row's `id` (not its index), so touched/errors follow a row\n * when another row is removed: `addresses.7.street` is `values.addresses.find(r => r.id == 7).street`.\n * An array of non-objects (or rows without an id) uses the index; a row with an id is named by\n * its id only (G-380: `addresses.0.city` is no field when the rows have ids).\n *\n * Validation: any Standard Schema (`schema['~standard'].validate`: zod, valibot, arktype, a\n * hand-written object), no dependency. A sync schema validates inside reducers; an async one\n * (validate returns a Promise) returns a Promise here, for an EFFECT.\n */\nimport type {SchemaIssue} from './standardSchema'\nimport {focusWithin} from './focusWithin'\nimport {ABORT} from '../shared'\n\nexport type FieldErrors = Record<string, string>\nexport type FormCheck = {errors: FieldErrors; value: any}\n\nconst isRow = (r: any) => r?.id != null\n// the key of segment `s` in `v`: an array's row with that id, else the index unless the element\n// there is a row (G-380: a row is named by its id only; -1, no element), an object's key\nconst key = (v: any, s: string): any => {\n if (!Array.isArray(v)) return s\n const i = v.findIndex(r => isRow(r) && r.id + '' == s)\n return i < 0 && !isRow(v[+s]) ? +s : i\n}\n\n/** the field name (id-based path) of a schema issue path (index-based) */\nexport const fieldName = (values: any, path: ReadonlyArray<any> = []): string => {\n let v = values\n return path.map(p => {\n p = p?.key ?? p\n const r = Array.isArray(v) && isRow(v[p]) ? v[p].id : p\n v = v?.[p]\n return r\n }).join('.')\n}\n\n/** the value at a field name (undefined when there is none) */\nexport const getField = (values: any, name: string): any =>\n name.split('.').reduce((v, s) => v?.[key(v, s)], values)\n\n/** whether `name` is a field of `values`: its path exists (G-379: also when the value is undefined) */\nexport const hasField = (values: any, name: string): boolean => {\n let v = values\n for (const s of name.split('.')) {\n const k = v && typeof v == 'object' ? key(v, s) : -1\n if (!(k in Object(v))) return false\n v = v[k]\n }\n return true\n}\n\n/** `values` with the field at `name` set to `value` (immutable; an unknown row is left alone) */\nexport const setField = (values: any, name: string, value: any): any => {\n const [s, ...rest] = name.split('.'), k = key(values, s), a = Array.isArray(values)\n const x = rest.length ? setField(values?.[k] ?? {}, rest.join('.'), value) : value\n if (x === values?.[k] || a && !(k in values)) return values\n const c = a ? values.slice() : {...values}\n c[k] = x\n return c\n}\n\n/**\n * every field name of `values`, in object order: each leaf, and each array itself (for an\n * array-level error such as \"at least one address\"); a row's `id` is not a field\n */\nexport const fieldNames = (v: any, at = '', row?: boolean): string[] => {\n if (!v || typeof v != 'object') return at ? [at] : []\n const a = Array.isArray(v), out = a ? [at] : []\n for (const k in v) {\n const x = (v as any)[k]\n if (!row || k != 'id') out.push(...fieldNames(x, (at && at + '.') + (a && isRow(x) ? x.id : k), a))\n }\n return out\n}\n\nconst errorsOf = (values: any, issues: ReadonlyArray<SchemaIssue> = []): FieldErrors => {\n const e: FieldErrors = {}\n for (const i of issues) {\n const n = fieldName(values, i.path)\n n in e || (e[n] = i.message)\n }\n return e\n}\n\n/**\n * Validates `values` with a Standard Schema: `{ errors, value }` (errors by field name, '' for\n * a form-level issue, the first message per field; `value` is the schema's output, transformed,\n * when there are none). A Promise of it when the schema is async. `schema` must be a Standard\n * Schema object (the `form` behavior reports SYG231 in dev).\n */\nexport const checkForm = (schema: any, values: any): FormCheck | Promise<FormCheck> => {\n const r = schema['~standard'].validate(values)\n const done = (r: any): FormCheck => ({errors: errorsOf(values, r.issues), value: r.issues ? undefined : r.value})\n return r.then ? r.then(done) : done(r)\n}\n\n/** the errors only, by field name ({} when valid); a Promise of them for an async schema */\nexport const formErrors = (schema: any, values: any): any => {\n const r: any = checkForm(schema, values)\n return r.then ? r.then((x: FormCheck) => x.errors) : r.errors\n}\n\n/**\n * Server errors as field errors: an error reply (a driver's `{ error, status?, body?, request }`\n * or `{ status, body }`; the body `{ errors }` or the map itself), a map `{ name: message |\n * messages }`, or a list of Standard-Schema-like issues `[{ path, message }]` (index paths\n * become field names with `values`). With `values`, a message for a name that isn't one of its\n * fields (`message`, `error`) is the form-level message (''); a reply without any becomes\n * 'Request failed (status)' under ''.\n */\nexport const replyErrors = (reply: any, values?: any): FieldErrors => {\n let e = reply && ('request' in reply || 'body' in reply && 'status' in reply) ? reply.body : reply\n e = e?.errors ?? e\n const out: FieldErrors = Array.isArray(e) ? errorsOf(values, e) : {}\n if (e && typeof e == 'object' && !Array.isArray(e)) for (const k in e) {\n const m = [].concat(e[k])[0] + ''\n k && values && !hasField(values, k) ? out[''] ||= m : out[k] = m\n }\n return Object.keys(out).length ? out : {'': 'Request failed' + (reply?.status ? ` (${reply.status})` : '')}\n}\n\n/**\n * An ELEMENT command that focuses the first field, in DOM order, whose `name` is one of `names`\n * (a list, or an errors map: its names with a message; '' is skipped), anywhere in the sender's view, fields\n * of child components and Collection items included (`focusWithin`, D194). With `within` (a\n * selector: the form element's), only fields inside a matching element (G-373: a second form,\n * or a child component's field of the same name outside the form, isn't focused). ABORT when\n * there is nothing to focus: `ELEMENT: (state) => focusInvalid(state.errors, '.signup')`.\n */\nexport const focusInvalid = (names: string[] | FieldErrors, within?: string): any => {\n const list = (Array.isArray(names) ? names : Object.keys(names).filter(n => names[n])).filter(n => n)\n return list.length ? {focus: focusWithin(list.map(n => `${within ? within + ' ' : ''}[name=${JSON.stringify(n)}]`).join())} : ABORT\n}\n","/*\n * PLAN-5 F-1 (D193): the `form` behavior, the canonical form recipe.\n *\n * Signup.uses = { form: form(signupSchema, {\n * values: { email: '', password: '', addresses: [{ id: 1, street: '', city: '' }] },\n * submit: 'SIGN_UP', // the host action a valid submit dispatches (data: the schema's output)\n * check: { email: { request: (email) => ({ url: '/api/email-free', query: { email } }), error: (body) => !body.free && 'Taken' } },\n * }) }\n *\n * Fields are addressed by their `name=` attribute (the path in `values`; rows of an array by\n * id: `addresses.7.street`), heard on the form element (option `form`, default 'form'): input\n * and focusout bubble to it, also from fields rendered by Collection items. Nothing is wired per\n * field.\n *\n * Options: `values` (the start values; D239: or a function of the host's state, called when the\n * form starts), `submit` (host action), `check` (async per-field checks through a driver: a\n * request with a reply action, `latest`), `show` ('blur' default: a schema error shows once its\n * field was blurred; 'input'; 'submit'), `form` (selector), `http` (the driver sink of the\n * checks, 'HTTP'), `resetOnShow` (D239).\n *\n * D239 (G-578): `resetOnShow: true` starts the form over (the start values, as a new form: touched,\n * errors, server errors, checks and the submit state cleared) each time it is shown: when its\n * host starts (VALIDATE: a component mounted again, a Switchable page made again for another\n * `instance`, a slice kept in the parent's state) and each time the form element appears again\n * in the host's DOM after being absent (a Switchable page shown again: hidden pages stay alive;\n * a form rendered conditionally). Re-renders while it is shown keep what the user typed. Off by\n * default: a wizard step keeps its values when the user comes back. Without a real DOM (the mock\n * DOM, SSR) only the host start counts. A `values` function is called with the host's state at\n * each start over (without resetOnShow: once, when the host starts with the slice untouched);\n * before that (a child's first render) the fields come from calling it with a blank state.\n *\n * Slice (state.form): values, initial, errors (all current schema errors by name), touched,\n * server (server errors), remote (async check results: '' passed), pending (name -> value being\n * checked), submitting, submitted, submitCount, queued (a submit waits for a check or an async\n * schema), validating (an async schema runs), validated (the schema has answered since the start\n * or the last reset); calculated: fields (per name: { name, value, error, invalid, touched,\n * dirty, pending }; `error` is what to show), valid (G-382: the last answer's, kept while an async\n * schema re-validates), dirty, error (form-level message).\n *\n * Actions: form.CHANGE ({ name, value, item? }: G-376: a checkbox gives `checked`, and `item`, its\n * value, which toggles membership when the field is an array; <select multiple> an array of the\n * selected values; type=file is ignored), form.BLUR (name), form.SUBMIT, form.ADD ({ field,\n * value }), form.REMOVE ({ field, id }), form.ERRORS (an error reply or a map: server errors),\n * form.DONE (saved), form.RESET (values?); internal: form.RESULT (an async schema's result),\n * form.CHECKED_<name> (a check's reply; a failed check passes: the server checks on submit),\n * form.VALIDATE (the first validation, when the host starts: G-375; `valid` is false until the\n * schema answered; with resetOnShow also each time the form element appears, D239).\n *\n * G-575 (D236): a valid submit is `submitting` (until form.DONE / form.ERRORS, a second submit\n * dropped) only when the host's submit entry has the `http` sink; any other submit (STATE, PARENT,\n * EVENTS, EFFECT, ...) sends no request and is done at once (submitted, as form.DONE would). A\n * slice kept in parent state from a host that unmounted mid-submit starts unstuck: VALIDATE (each\n * host start) clears submitting, queued and pending.\n *\n * Each action is one step function, `(slice, data, key) => outcome | null` (null: no change),\n * the outcome `{ s: new slice, focus: ELEMENT command, req: a check request, send: 1 (dispatch\n * submit), wait: { values, submit? } (an async schema to await) }`. Its sinks (STATE, EFFECT,\n * ELEMENT, and the checks' driver) read that outcome, computed once per (slice, data). D197:\n * the handlers get the `uses` key, which names the reply actions.\n *\n * Dev diagnostics (checks/forms.ts, through the core bridge's `form` hook; nothing in\n * production): SYG230 a field name not in values, SYG231 not a Standard Schema (throws), SYG232\n * a submit dropped, SYG233 a values key missing from the schema's output, SYG234 a submit that\n * dispatched one of the form's own actions (G-577), SYG235 a check request that sets reply\n * fields. The host checks (SYG234 submit, SYG235 check names, SYG236 row ids)\n * run when the host is created.\n */\nimport xs from './xstreamCompat'\nimport {defineBehavior} from './behaviors'\nimport {ABORT} from '../shared'\nimport {isStandardSchema} from './standardSchema'\nimport {checkForm, fieldNames, getField, hasField, setField, replyErrors, focusInvalid} from './formHelpers'\n\nconst dev = (...a: any[]): any => (globalThis as any).__SYGNAL_DIAGNOSTICS__?.form?.(...a)\nconst keys = (o: any) => Object.keys(o).filter(k => o[k])\nconst drop = (o: any, p: string) => {\n const r: any = {}\n for (const k in o) if (k != p && !k.startsWith(p + '.')) r[k] = o[k]\n return r\n}\n\nexport const form = (schema: any, o: any = {}): any => {\n isStandardSchema(schema) || dev(231, schema)\n const {values: vo = {}, submit, check: checks = {}, show = 'blur', http = 'HTTP', form: sel = 'form', resetOnShow: again} = o\n // D239: `values` can be a function of the host's state, called when the form starts (and each\n // show, resetOnShow). Before that (the host's first render, before its first action) the\n // fields come from calling it with a blank state: every read gives '' in the result\n const fn = typeof vo == 'function', B: any = new Proxy(() => B, {get: (_, k) => k == Symbol.toPrimitive ? () => '' : B})\n const clean = (x: any): any => x === B ? '' : Array.isArray(x) ? x.map(clean) : x && typeof x == 'object' ? Object.fromEntries(Object.entries(x).map(([k, y]) => [k, clean(y)])) : x\n let values: any = vo\n if (fn) try { values = clean(vo(B)) } catch (_) { values = {} }\n const cache = new WeakMap(), checked = Object.keys(checks)\n // G-575: a submit is pending (until form.DONE / form.ERRORS) only when the host's submit entry\n // sends a request on the `http` sink; any other submit is done once its entry has run. Set when\n // the form merges into its host\n let req = true\n // the schema's result, once per values object; an async one replaces its Promise when it settles\n const v = (vals: any): any => {\n let r = cache.get(vals)\n if (!r) {\n cache.set(vals, r = checkForm(schema, vals))\n r.then?.((x: any) => cache.set(vals, x))\n }\n return r\n }\n // G-379: a field is a path of values (an undefined value too); `quiet`: no SYG230 (a focusout\n // from a named button)\n const known = (s: any, n: any, quiet?: any) => {\n const k = n && hasField(s.values, n)\n n && !k && !quiet && dev(230, n, s.values)\n return k\n }\n // new values: errors now (sync schema), or after the schema's Promise (RESULT)\n const edit = (s: any, vals: any, x?: any) => {\n const r = v(vals), a = !!r.then\n return {s: {...s, ...x, values: vals, validating: a, ...(!a && {errors: r.errors, validated: true})}, wait: a && {values: vals}}\n }\n // the first check due: no schema error, a value, and not checked or running for it\n const due = (s: any, only?: string) => checked.find(f => {\n const x = getField(s.values, f)\n return (!only || f == only) && !s.errors[f] && x !== '' && x != null && !(f in s.pending) && !(f in s.remote)\n })\n const ask = (s: any, f: string, k: string, queued: boolean) => {\n const x = getField(s.values, f), q = checks[f].request(x), ok = `${k}.CHECKED_${f}`\n dev(235, f, q)\n return {s: {...s, queued, pending: {...s.pending, [f]: x}}, req: {...q, ok, error: ok, latest: true}}\n }\n // a submit with s's errors: blocked (focus the first), a check to run or to wait for, or sent\n const attempt = (s: any, k: string) => {\n const bad = [...keys(s.errors), ...keys(s.remote)], f = due(s)\n return bad.length ? {s: {...s, queued: false}, focus: focusInvalid(bad, sel)}\n : f ? ask(s, f, k, true)\n : Object.keys(s.pending).length ? {s: {...s, queued: true}}\n : {s: req ? {...s, queued: false, submitting: true} : done({...s, queued: false}), send: 1}\n }\n const base = (vals: any) => ({initial: vals, values: vals, touched: {}, server: {}, remote: {}, pending: {},\n submitting: false, submitted: false, submitCount: 0, queued: false, errors: {}, validated: false})\n const fresh = (vals: any) => edit(base(vals), vals)\n const done = (s: any) => ({...s, submitting: false, submitted: true, initial: s.values, server: {}, touched: {}})\n const group = (cur: any, d: any) => {\n if (!Array.isArray(cur) || !('item' in d)) return d.value\n const r = cur.filter(x => x !== d.item)\n return d.value ? [...r, d.item] : r\n }\n\n const steps: Record<string, (s: any, d: any, k: string, h?: any) => any> = {\n // G-376: a checkbox (`item`: its value) on an array field is one of a group: checked adds\n // its value, unchecked removes it\n CHANGE: (s, d) => known(s, d?.name) ? edit(s, setField(s.values, d.name, group(getField(s.values, d.name), d)), {\n server: drop(drop(s.server, d.name), ''), remote: drop(s.remote, d.name), pending: drop(s.pending, d.name), queued: false,\n touched: show == 'input' ? {...s.touched, [d.name]: true} : s.touched,\n }) : null,\n BLUR: (s, n, k) => {\n if (!known(s, n, 1)) return null\n const t = show == 'submit' || s.touched[n] ? s.touched : {...s.touched, [n]: true}, x = {...s, touched: t}\n return due(s, n) ? ask(x, n, k, s.queued) : t != s.touched ? {s: x} : null\n },\n SUBMIT: (s, _, k) => {\n if (s.submitting || s.queued) return void dev(232, s)\n const n = {...s, submitCount: s.submitCount + 1}, r = v(s.values)\n // G-371: a submit waiting for an async schema is queued (a second one is dropped)\n return r.then ? {s: {...n, validating: true, queued: true}, wait: {values: s.values, submit: 1}} : attempt({...n, errors: r.errors}, k)\n },\n RESULT: (s, d, k) => {\n if (d.values !== s.values) return\n const n = {...s, errors: v(d.values).errors, validating: false, validated: true}\n // the submit it was queued for (G-575: a done local submit isn't `submitting`, so not that)\n return d.submit && s.queued ? attempt(n, k) : {s: n}\n },\n ADD: (s, {field, value}) => {\n const rows = getField(s.values, field) || []\n return edit(s, setField(s.values, field, [...rows, {id: rows.reduce((m: number, r: any) => Math.max(m, +r.id || 0), 0) + 1, ...value}]))\n },\n REMOVE: (s, {field, id}) => {\n const p = field + '.' + id\n return edit(s, setField(s.values, field, getField(s.values, field).filter((r: any) => r.id + '' != id)),\n {touched: drop(s.touched, p), server: drop(s.server, p)})\n },\n ERRORS: (s, d) => {\n const e = replyErrors(d, s.values)\n return {s: {...s, server: e, submitting: false, queued: false}, focus: focusInvalid(e, sel)}\n },\n DONE: (s) => ({s: done(s)}),\n RESET: (s, d) => fresh(d && typeof d == 'object' ? d : s.initial),\n // G-375: the first validation, when the host starts (form() doesn't validate at module load).\n // G-575: a slice kept in parent state from a host that unmounted mid-submit starts unstuck.\n // D239: with resetOnShow (also each time the form element appears again), or a `values`\n // function not called yet, the slice starts over from the start values (h: the host state)\n VALIDATE: (s, _, _k, h) => again || fn && s.values === values ? fresh(fn ? vo(h) : vo)\n : edit({...s, submitting: false, queued: false, pending: {}}, s.values),\n }\n // a check's reply (ok and error: an error reply carries an Error and passes)\n for (const f of checked) steps['CHECKED_' + f] = (s, d, k) => {\n if (!(f in s.pending)) return\n const n = {...s, pending: drop(s.pending, f), remote: {...s.remote, [f]: d?.error instanceof Error ? '' : checks[f].error?.(d) || ''}}\n return s.queued ? attempt(n, k) : {s: n}\n }\n\n const model: any = {}\n for (const a in steps) {\n let last: any[] = []\n // (HOST, with the host state h, always computes: one slice object starts every app's host)\n const out = (s: any, d: any, k: string, h?: any) => !h && last[0] === s && last[1] === d ? last[2] : (last = [s, d, steps[a](s, d, k, h)])[2]\n model[a] = {\n // VALIDATE: on the host's state (HOST), for a `values` function; the slice's own steps on it\n ...a == 'VALIDATE' ? {HOST: (h: any, d: any, _n: any, _p: any, _o: any, k: string) => { const x = out(h[k], d, k, h); return x ? {...h, [k]: x.s} : h }}\n : {STATE: (s: any, d: any, _n: any, _p: any, _o: any, k: string) => out(s, d, k)?.s || ABORT},\n EFFECT: (s: any, d: any, next: any, _p: any, _o: any, k: string) => {\n const x = out(s, d, k), w = x?.wait\n if (x?.send) {\n const r = v(x.s.values).value\n dev(233, s.values, r)\n // G-577: a submit named after one of the form's own actions goes to that one\n submit in steps && dev(234, submit, k, b)\n next(submit, r, 0)\n }\n w && Promise.resolve(v(w.values)).then(() => next('RESULT', w, 0))\n },\n ELEMENT: (s: any, d: any, _n: any, _p: any, _o: any, k: string) => out(s, d, k)?.focus || ABORT,\n ...(checked.length && {[http]: (s: any, d: any, _n: any, _p: any, _o: any, k: string) => out(s, d, k)?.req || ABORT}),\n }\n }\n\n const b = defineBehavior({\n form: schema,\n // validating until VALIDATE (sync) or its RESULT (async): not valid yet (G-375, not validated)\n initialState: {...base(values), validating: true},\n intent: ({DOM}: any) => {\n const f = DOM.select(sel)\n let on = 0\n return {\n // D239: resetOnShow also starts over each time the form element appears again (a\n // Switchable page shown again: hidden pages stay alive; a form rendered again)\n VALIDATE: again ? xs.merge(xs.of(0), f.elements().filter((e: any) => { const r = e.length && !on; on = e.length; return r })) : xs.of(0),\n // G-376: a checkbox (native, or a hyphenated tag with a boolean `checked`: a\n // form-associated custom checkbox / switch) gives `checked` and its value as `item`; a\n // <select multiple> the selected values; type=file is left alone; others give `value`\n CHANGE: f.events('input').filter(({target: t}: any) => t.type != 'file').map(({target: t}: any) =>\n t.type == 'checkbox' || /-/.test(t.tagName) && typeof t.checked == 'boolean' ? {name: t.name, value: t.checked, item: t.value}\n : {name: t.name, value: t.type == 'select-multiple' ? [...t.selectedOptions].map((o: any) => o.value) : t.value}),\n BLUR: f.events('focusout').map((e: any) => e.target.name),\n SUBMIT: f.events('submit', {preventDefault: true}),\n }\n },\n model,\n calculated: {\n fields: (s: any) => {\n const out: any = {}\n for (const n of fieldNames(s.values)) {\n const value = getField(s.values, n)\n const error = s.server[n] || s.remote[n] || ((s.submitCount || show != 'submit' && s.touched[n]) && s.errors[n]) || ''\n out[n] = {name: n, value, error, invalid: !!error, touched: !!s.touched[n], dirty: value !== getField(s.initial, n), pending: n in s.pending}\n }\n return out\n },\n // G-382: an async schema re-validating keeps the last answer's validity (no flicker)\n valid: (s: any) => s.validated && !keys(s.errors).length && !keys(s.remote).length,\n dirty: (s: any) => JSON.stringify(s.values) != JSON.stringify(s.initial),\n error: (s: any) => s.server[''] || (s.submitCount && s.errors['']) || '',\n },\n })({...o, values}), merge = b.merge\n b.merge = (c: any, k: string) => {\n const e = c.model?.[submit]\n req = !!e && typeof e == 'object' && http in e\n merge(c, k)\n }\n return b\n}\n","/*\n * PLAN-4 GS-1: the first-party `selection` behavior.\n *\n * const { Pick, All } = controls({ Pick: 'input', All: 'input' })\n * Mailbox.uses = { sel: selection({ multi: true, item: Pick, all: All, from: 'mails' }) }\n * <Pick type=\"checkbox\" data-id={mail.id} checked={isSelected(state.sel, mail.id)} aria-label={mail.subject} />\n *\n * Slice: { selected } (ids as strings, in selection order) plus the calculated `count`.\n * Actions: sel.SELECT (an id, or a click on the `item` control: its `attr`, default data-id;\n * single mode replaces the selection, multi mode toggles the id), sel.SELECT_ALL (an id array,\n * or every `idField` of the host's `state[from]` list), sel.TOGGLE_ALL (the `all` control: all\n * selected → none, else all), sel.CLEAR. Each is ABORT when nothing changes.\n *\n * `from` is read from the host state, which a behavior's own reducers don't see, so this\n * factory wraps the merged SELECT_ALL / TOGGLE_ALL entries to pass the host list's ids.\n */\nimport { defineBehavior } from './behaviors'\nimport { ABORT } from '../shared'\n\nconst ids = (d: any) => Array.isArray(d) ? d.map(String) : null\nconst set = (s: any, selected: string[]) =>\n selected.join('\\0') === s.selected.join('\\0') ? ABORT : {...s, selected}\n// an id, or a click event: the item element's attribute (target.closest: a click on an icon inside)\nconst idOf = (d: any, attr: string, item: any): any => {\n if (!d || typeof d != 'object') return d\n const el = d.target?.closest?.(String(item)) || d.ownerTarget || d.target\n return el?.getAttribute?.(attr) ?? el?.dataset?.[attr.slice(5).replace(/-(\\w)/g, (_: any, c: string) => c.toUpperCase())]\n}\n\n/** Is `id` selected in a `selection` slice (`isSelected(state.sel, item.id)`)? Ids compare as strings. */\nexport const isSelected = (slice: any, id: any): boolean => !!slice?.selected?.includes(String(id))\n\nconst def = (multi: boolean, attr: string, item: any) => ({\n initialState: {selected: [] as string[]},\n intent: ({DOM}: any, {item, all, clear}: any) => ({\n ...(item && {SELECT: DOM.click(item)}),\n ...(all && {TOGGLE_ALL: DOM.click(all)}),\n ...(clear && {CLEAR: DOM.click(clear)}),\n }),\n model: {\n SELECT: (s: any, d: any) => {\n const id = idOf(d, attr, item)\n if (id == null) return ABORT\n const k = String(id), has = s.selected.includes(k)\n return set(s, !multi ? [k] : has ? s.selected.filter((x: string) => x !== k) : [...s.selected, k])\n },\n SELECT_ALL: (s: any, d: any) => ids(d) ? set(s, ids(d)!) : ABORT,\n TOGGLE_ALL: (s: any, d: any) => {\n const all = ids(d)\n return !all ? ABORT : set(s, all.every(k => s.selected.includes(k)) ? [] : all)\n },\n CLEAR: (s: any) => set(s, []),\n },\n calculated: {count: (s: any) => s.selected.length},\n})\n\n/**\n * Single or multiple selection over a list (GS-1 behavior). Options: `multi` (false), the\n * controls `item` (on each row, with the id in `attr`, default 'data-id'), `all` (select-all\n * toggle; needs `from`) and `clear`, `from` (the host state key of the list) and `idField`\n * ('id', the id field of its items). Read it with `state.sel.selected`, `state.sel.count` and\n * `isSelected(state.sel, id)`.\n */\nexport const selection = (options: any = {}): any => {\n const {multi = false, attr = 'data-id', from, idField = 'id'} = options\n const b = defineBehavior(def(multi, attr, options.item))(options), merge = b.merge\n b.merge = (c: any, k: string) => {\n merge(c, k)\n if (from) for (const a of ['SELECT_ALL', 'TOGGLE_ALL']) {\n const e = c.model[k + '.' + a], S = c.stateSourceName, f = e?.[S]\n if (f) c.model[k + '.' + a] = {...e, [S]: (st: any, d: any, ...x: any[]) =>\n f(st, Array.isArray(d) ? d : (st?.[from] || []).map((i: any) => i?.[idField]), ...x)}\n }\n }\n return b\n}\n","/*\n * PLAN-5 B-1 (3-D): the `sortable` behavior, drag-and-drop reordering of a host's list by pointer\n * (mouse, pen, touch) and keyboard. Spike 0-S5, rebuilt on D197 (HOST reducers, the key in the\n * handlers) and D194 (focusWithin).\n *\n * List.uses = { sort: sortable({ from: 'tasks', item: '.task', handle: '.grip' }) }\n * List.context = { sort: (state) => state.sort } // items read the drag state\n * List.model = { 'sort.DROPPED': { EFFECT: … } } // save the order\n * <ul><Collection of={Task} from=\"tasks\" /></ul>\n * <p role=\"status\" aria-live=\"assertive\">{state.sort.message}</p>\n * // Task: <li className=\"task\" data-id={state.id}>\n * // <button className=\"grip\" aria-label={…} aria-describedby={context.sort.helpId}>⠿</button>…\n *\n * Slice (state.sort): { dragging, over, after, list, mode, press, origin, message, helpId }\n * dragging the id (a string) of the item being moved, or null\n * over the id the pointer is over (pointer mode; null over a gap or outside the list)\n * after true: the item lands after `over`, false: before it\n * list the `from` key the item would land in (pointer: `over`'s list, or a `data-list`\n * container; keyboard: unused)\n * mode 'pointer' | 'keyboard' | null\n * message the text for an ARIA live region (lift / move / drop / cancel)\n * helpId a uid() id for the instructions element the handles' aria-describedby names:\n * unique per host instance, null until the first focus, press or key inside the\n * host (G-448: nothing is written at startup). The server renders none, nor does\n * the client's first render, so hydration matches (G-453); a focused handle has it\n * press, origin: internal (the pointer press before the threshold; where the item started)\n * Actions: sort.PRESS, MOVE, UP, CANCEL (pointer), KEY (keyboard), INIT (the start), HELP, END\n * (unmounted: a drag in progress is cancelled; INIT and a press or key over drag state another\n * instance started do the same, G-475), and sort.DROPPED ({ id, list, index, fromList, fromIndex })\n * once per completed move: the host adds an entry for it to save the order.\n *\n * A keyboard drag that ends without a drop (Escape, END, INIT, `live`) restores (D219, 3-P) only\n * when the lists are exactly the arrays its last step made (identity, kept in `drags` under the\n * drag's `origin` object, never in the state): it puts back the lists it lifted from (no index\n * math). Anything else that changed them (undo, an edit, an ADD, new data, a restored or synced\n * slice: its `origin` is another object) leaves the item where it is, and the drag just ends. The\n * slice such an end leaves is marked (`ended`), as is a keyboard drop where the item started (no\n * DROPPED, 3-W G-535): undo() reads it through `undoEnd` (internal) and settles the gesture's\n * pending base (G-510).\n *\n * Pointer feedback is an indicator (over / after) while the pointer moves; the list is reordered\n * on the drop. Keyboard moves reorder live (the arrow keys), and Escape puts the item back.\n *\n * Collection items are isolated, so the behavior listens on the host's ROOT (`DOM.events`), which\n * hears the events that bubble out of the items (G-145), and reads the item from\n * `target.closest(item)` and its id from `attr`. Pointer moves, the release, Escape, `selectstart`\n * and `dragstart` (no text selection, no native drag while pressed) are document listeners, subscribed only while\n * a press or a drag is active. The item under the pointer comes from `elementFromPoint` (a touch\n * pointer is implicitly captured by the pressed element, so its events keep that target); no\n * pointer capture.\n *\n * Nested sortables: an event is claimed by the first (innermost) sortable host it bubbles\n * through, so an outer sortable ignores the items of an inner one. A host's own items are the\n * item elements below its root that aren't inside another item below it (an item inside an item\n * belongs to a nested list, whose ids may repeat this host's: G-444/G-445): the press, key, the\n * item under the pointer (the outermost one there) and the focus target are resolved among them.\n *\n * Focus: each keyboard step (but Tab) sends `{ focus: <target> }`, a focusWithin-style target\n * (D194: `within` '<item>[<attr>=\"<id>\"] <handle>', the first match among this host's own items):\n * the keyed Collection may move the focused node when the list reorders. A keyboard\n * drag drops at its current position when focus moves to another element (Tab, a click\n * elsewhere: focusout with a relatedTarget) or on any pointer press (a press on a handle then\n * starts a pointer press at once, G-451); focus lost to nothing (the window, a node move) keeps\n * the drag.\n *\n * Dev diagnostics through the core bridge's `sortable` hook (checks/sortable.ts): SYG145 an item\n * without `attr`, SYG146 `item` / `handle` matching nothing under the host at the first\n * interaction, SYG147 a `from` key that isn't an array in the host state, SYG435 (3-H) a list\n * shown in another order than its array's (a Collection's sort / filter).\n */\nimport {defineBehavior} from './behaviors'\nimport {ABORT, isAbort} from '../shared'\nimport xs from './xstreamCompat'\nimport {dropRepeats} from './xstreamExtras'\n\nconst dev = (...a: any[]): any => (globalThis as any).__SYGNAL_DIAGNOSTICS__?.sortable?.(...a)\nconst LIFT = /^( |Enter|Spacebar)$/\nconst KEYS = /^(Arrow(Up|Down|Left|Right)|Home|End|Escape|Tab)$/\nconst S = String\nconst FIELDS = 'button,a,input,select,textarea,label,[contenteditable]'\n// the events a sortable host has taken: an outer (nested) sortable leaves them alone\nconst claimed = new WeakSet<any>()\n// a selector usable as one compound (`.task`, `li[data-x]`), else wrapped in :is()\nconst one = (s: string) => /^[\\w.#\\-[\\]=\"']+$/.test(s) ? s : `:is(${s})`\n// D219: a keyboard drag's lists at lift (`snap`) and after its last step (`made`), under its\n// origin object; the slices a drag ended in without a drop (for undo(): G-510). 3-U G-532: the\n// reducers write it (lift, each step): bookkeeping outside the state, so a reducer replayed or run\n// twice for one action (a dev double-invoke, a devtools replay) can leave `made` one step ahead of\n// the lists, and that drag's Escape / END then \"stays\" (never a wrong restore: a miss is a stay)\nconst drags = new WeakMap<any, any>(), ended = new WeakSet<any>()\n\nconst defaults = {\n lift: (l: string, n: number, m: number, kb: boolean) => `Picked up ${l}, position ${n} of ${m}.` +\n (kb ? ' Use the arrow keys to move, Space to drop, Escape to cancel.' : ''),\n move: (l: string, n: number, m: number, list?: string) => `${l}: ${list ? list + ', ' : ''}position ${n} of ${m}.`,\n drop: (l: string, n: number, m: number, list?: string) => `Dropped ${l} at ${list ? list + ', ' : ''}position ${n} of ${m}.`,\n cancel: (l: string, n: number, m: number) => `Reorder cancelled. ${l} is back at position ${n} of ${m}.`,\n stay: (l: string, n: number, m: number, list?: string) => `Reorder cancelled. The list changed, so ${l} stays at ${list ? list + ', ' : ''}position ${n} of ${m}.`,\n}\n\nconst idle = {dragging: null, over: null, after: false, list: null, mode: null, press: null, origin: null, message: ''}\n\n/**\n * Drag-and-drop reordering of `state[from]` (GS-1 behavior). Options: `from` (required: the host\n * state key of the list, or an array of keys for moves between lists, each container marked\n * `data-list=\"<key>\"`), `item` (each item's element, carrying its id in `attr`; default\n * `[data-id]`), `handle` (the part that starts a drag and takes keyboard focus; default: the\n * item), `axis` ('y' | 'x': the arrow keys that move), `threshold` (px a pointer moves before a\n * drag starts, 4), `attr` ('data-id'), `idField` ('id'), `label` (item → its name in\n * announcements), `messages` ({ lift, move, drop, cancel, stay }: (label, position, count, extra) =>\n * text; `stay`: Escape after something else changed the list, the item stays where it is).\n */\nexport const sortable = (options: any = {}): any => {\n const {from, handle, axis = 'y', threshold = 4, attr = 'data-id', idField = 'id'} = options\n const item = options.item || `[${attr}]`, lists: string[] = [].concat(from), grip = handle || item\n const label = options.label || ((i: any) => S(i?.title ?? i?.name ?? i?.label ?? i?.[idField]))\n const msg = {...defaults, ...options.messages}\n const [prevKey, nextKey] = axis == 'x' ? ['ArrowLeft', 'ArrowRight'] : ['ArrowUp', 'ArrowDown']\n // an element's id attribute (dataset: the event targets of renderComponent's mock DOM)\n const idOf = (el: any) => el?.getAttribute?.(attr) ?? el?.dataset?.[attr.slice(5).replace(/-(\\w)/g, (_: any, c: string) => c.toUpperCase())] ?? null\n\n // where an id is: { list, index, item, size }\n const find = (st: any, id: any) => {\n for (const l of lists) {\n const a = st?.[l], i = id != null && Array.isArray(a) ? a.findIndex((x: any) => S(x?.[idField]) === S(id)) : -1\n if (i >= 0) return {list: l, index: i, item: a[i], size: a.length}\n }\n return null\n }\n // move the item at `f` to list `l` at index `to` (the index it ends at)\n const move = (st: any, f: any, l: string, to: number) => {\n const out = {...st}, src = [...st[f.list]]\n src.splice(f.index, 1)\n const dst = l == f.list ? src : [...(st[l] || [])]\n dst.splice(Math.max(0, Math.min(to, dst.length)), 0, f.item)\n out[f.list] = src\n out[l] = dst\n return out\n }\n const put = (st: any, k: string, s: any) => ({...st, [k]: {...st[k], ...s}})\n const pick = (st: any) => { const o: any = {}; for (const l of lists) o[l] = st[l]; return o }\n // the slice of a drag that ended without a drop (undo() settles its base)\n const stop = (st: any, k: string, s: any) => { const r = put(st, k, s); ended.add(r[k]); return r }\n // a drag ended without a drop (Escape; unmounted; drag state this instance didn't start:\n // restored, synced, a host made again): a keyboard drag's lists go back to the ones it lifted\n // from when they are exactly the arrays its last step made (D219), else the item stays where it\n // is; `say`: announce it\n const back = (st: any, k: string, say?: any) => {\n const s = st[k], o = s.origin, d = s.mode == 'keyboard' && drags.get(o)\n const own = d && lists.every(l => st[l] === d.made[l]), out = own ? {...st, ...d.snap} : st, f = say && s.mode == 'keyboard' && find(out, s.dragging)\n return stop(out, k, {...idle, message: !f ? '' : own ? msg.cancel(label(f.item), f.index + 1, f.size) : msg.stay(label(f.item), f.index + 1, f.size, where(o, f))})\n }\n // where a pointer drop would land: over an item (in its own list: before it, after it when\n // moving down; from another list: before or after it by the pointer's half, `low`: G-454), or\n // at the end of another list's container\n const landing = (st: any, f: any, o: any, list: any, low?: any) =>\n o ? o.list == f.list ? {list: o.list, to: o.index, after: f.index < o.index} : {list: o.list, to: o.index + (low ? 1 : 0), after: !!low}\n : list && lists.includes(list) && list != f.list ? {list, to: (st[list] || []).length, after: true}\n : null\n const where = (f: any, n: any) => n.list != f.list ? n.list : undefined\n // a keyboard drag ends where the item is (DROPPED when it moved; 3-W G-535: else the slice is\n // marked ended, so undo() settles the gesture: moved back after another change, it is a step)\n const drop = (st: any, k: string, next: any) => {\n const s = st[k], f = find(st, s.dragging), o = s.origin, m = f && (o.list != f.list || o.index != f.index)\n if (m) next('DROPPED', {id: s.dragging, list: f.list, index: f.index, fromList: o.list, fromIndex: o.index}, 0)\n return (m ? put : stop)(st, k, f ? {...idle, message: msg.drop(label(f.item), f.index + 1, f.size, where(o, f))} : idle)\n }\n // an element below the host's root `r` (the root is an item of an outer sortable; in\n // renderComponent's mock DOM, where the event's target is the root, it counts)\n const inside = (el: any, r: any) => el !== r ? !r?.contains || r.contains(el) : !r.nodeType\n // one of this host's own items: below the root and not inside another item below it (that one\n // is a nested list's, whose ids may repeat this host's: G-444)\n const own = (it: any, r: any) => {\n if (!it || !inside(it, r)) return false\n const up = it.parentElement?.closest?.(item)\n return !(up && inside(up, r))\n }\n // focus the moved item's handle: a focusWithin target (D194: the sender's root, a `focus` spec\n // command) that keeps to this host's own items (G-445)\n const focus = (_s: any, d: any) => {\n if (d.key == 'Tab' || d.id == null) return ABORT\n const sel = ':scope ' + one(item) + `[${attr}=\"${S(d.id).replace(/[\"\\\\]/g, '\\\\$&')}\"]` + (handle ? ' ' + one(handle) : '')\n return {focus: {within: sel, toString: () => '', spec: {commands: {focus: (root: any, o: any) => {\n for (const el of root.querySelectorAll?.(sel) || []) if (own(handle ? el.closest(item) : el, root)) return el.focus(o)\n }}}}}\n }\n\n // dev: SYG435, the list shown in another order than the array's (G-449)\n const check = (st: any, seen: any, k: string) => seen && dev(435, seen, st, lists, idField, k)\n // a press or key handler: drag state this instance didn't start (its token `n` isn't the\n // event's: restored, synced) is dropped first (G-452)\n const live = (h: any) => (st: any, d: any, next: any, _p: any, _o: any, k: string) => {\n const s = st[k], c = (s.press || s.dragging) && (s.press || s.origin)?.n !== d.n ? back(st, k, 1) : st, r = h(c, d, next, k)\n // the slice it leaves says a drag ended (a new lift on top: still, for undo())\n return isAbort(r) ? c === st ? r : c : (c !== st && ended.add(r[k]), r)\n }\n\n const def = {\n initialState: {...idle, helpId: null},\n // drag state is UI state: persist() leaves this slice out (G-452)\n persist: false,\n // with undo(): a drag is one undo step, recorded at its drop (G-447)\n undoStep: ['DROPPED'],\n // internal (not public API): the slice an action left ended a drag without a drop (G-510)\n undoEnd: (s: any) => ended.has(s),\n intent: ({DOM, STATE, dispose$}: any, _o: any, key: string) => {\n // `me`: this instance's token in the press / drag it starts (G-452): drag state it didn't\n // start (restored by persist, synced, written by devtools) arms no document listener\n const doc = DOM.select('document'), slice$ = STATE.stream, me = Math.random()\n let root: any, checked: any // this host's root element (from its last press); SYG146 done\n const on = (f: (s: any) => any, s$: () => any) =>\n slice$.map(f).compose(dropRepeats()).map((a: any) => a ? s$() : xs.empty()).flatten()\n const pressed = (s: any) => s.press?.n === me\n // the pointer's position and what it is over: the id of this host's item around the\n // element there (the outermost item below the root: G-444), and the data-list container\n const pt = (e: any) => {\n const x = e.clientX, y = e.clientY, d = typeof document != 'undefined' ? document : null\n const el = (typeof x == 'number' && d?.elementFromPoint?.(x, y)) || e.target\n let o: any\n for (let it = el?.closest?.(item); it && inside(it, root); it = it.parentElement?.closest?.(item)) o = it\n // over the item's second half (along the axis): an item from another list lands after it\n const box = lists.length > 1 && el?.closest?.('[data-list]'), b = o?.getBoundingClientRect?.()\n return {x: x || 0, y: y || 0, over: o ? idOf(o) : null, list: box && inside(box, root) ? box.getAttribute?.('data-list') : null,\n low: !!b?.height && (axis == 'x' ? x > b.left + b.width / 2 : y > b.top + b.height / 2)}\n }\n // the id of the item whose handle (or the item itself) the event happened on; `self`: the\n // handle must be the event's own target (keys)\n const gripOf = (e: any, self?: boolean) => {\n const t = e.target, r = e.ownerTarget || e.currentTarget\n if (!checked) checked = dev(146, r, item, handle, attr)\n const g = !claimed.has(e) && t?.closest?.(grip)\n if (!g || self && g !== t) return null\n // no handle: a press or key on a button, link or field inside the item is its own\n const inner = !handle && t !== g && t.closest?.(FIELDS)\n if (inner && inner !== g && (!g.contains || g.contains(inner))) return null\n // one of this host's own items (not its root, not a nested list's item)\n const it = handle ? g.closest?.(item) : g\n if (!own(it, r)) return null\n const id = idOf(it)\n if (id == null) dev(145, it, item, attr)\n return id\n }\n const keyed = (keys: RegExp, kb?: any) => (e: any) => keys.test(e.key) && (kb || e.key != 'Tab') && gripOf(e, true) != null\n const lift = keyed(LIFT), step = keyed(KEYS, 1)\n // dev (SYG435): this host's own items' ids in the order they're shown (computed by the\n // diagnostics entry only)\n const shown = (e: any) => dev(435, () => {\n const r = e.ownerTarget || e.currentTarget\n return [[...r.querySelectorAll(item)].filter((it: any) => own(it, r)), r]\n }, key, lists, idOf)\n const take = (e: any) => {\n const id = gripOf(e, true)\n claimed.add(e)\n return {key: e.key == 'Spacebar' ? ' ' : e.key, id, n: me, seen: LIFT.test(e.key) && shown(e)}\n }\n return {\n INIT: xs.of(0),\n // the host is unmounted (its state may live on in a parent's)\n END: dispose$.mapTo(0),\n // the first focus, press or key inside the host sets the instructions id (G-448: no\n // write at startup, so a Collection-item host's parent data stays clean until it is used)\n HELP: on((s: any) => !s.helpId, () => xs.merge(DOM.events('focusin'), DOM.events('pointerdown'), DOM.events('keydown')).mapTo(0)),\n PRESS: DOM.events('pointerdown')\n .filter((e: any) => e.isPrimary !== false && !e.button)\n .map((e: any) => {\n const id = gripOf(e)\n if (id == null) return null\n claimed.add(e)\n root = e.ownerTarget || e.currentTarget\n return {id, x: e.clientX || 0, y: e.clientY || 0, n: me, seen: shown(e)}\n })\n .filter((d: any) => d != null),\n // no text selection and no native drag (an image or link in the item: its dragstart\n // would cancel the pointer, G-450) while a pointer is pressed (the listeners only filter)\n MOVE: on(pressed, () => xs.merge(\n doc.events('pointermove').map(pt),\n xs.merge(doc.events('selectstart', {preventDefault: true}), doc.events('dragstart', {preventDefault: true})).filter(() => false))),\n UP: on(pressed, () => doc.events('pointerup').map(pt)),\n CANCEL: on(pressed, () => xs.merge(\n doc.events('pointercancel'),\n doc.events('keydown', {preventDefault: (e: any) => e.key == 'Escape'}).filter((e: any) => e.key == 'Escape'))),\n KEY: xs.merge(\n // a held Space / Enter (auto-repeat) neither drops nor lifts again (G-446)\n DOM.events('keydown', {preventDefault: lift}).filter((e: any) => !e.repeat && lift(e)).map(take),\n on((s: any) => s.mode == 'keyboard' && s.origin?.n === me, () => xs.merge(\n DOM.events('keydown', {preventDefault: keyed(KEYS)}).filter(step).map(take),\n // focus moved to another element, or a pointer press anywhere: drop where it is\n DOM.events('focusout').filter((e: any) => e.relatedTarget),\n doc.events('pointerdown')).map((d: any) => d.key ? d : {key: 'Tab', n: me}))),\n }\n },\n model: {\n // SYG147 (dev); drag state the host starts with (restored with a parent's data, a host made\n // again by HMR, a second host of the slice) is reset, as at END\n INIT: {HOST: (st: any, _d: any, _n: any, _p: any, _o: any, k: string) => {\n for (const l of lists) Array.isArray(st?.[l]) || dev(147, l, st, k)\n return st[k].press || st[k].dragging ? back(st, k) : ABORT\n }},\n // unmounted mid-drag: the drag is cancelled (no DROPPED; a keyboard drag's item goes back\n // where it started), so data that outlives the host isn't left half-moved or stuck\n END: {HOST: (st: any, _d: any, _n: any, _p: any, _o: any, k: string) => {\n const s = st[k]\n return s.press || s.dragging ? back(st, k) : ABORT\n }},\n // the instructions id: a uid() of the host (unique per host instance)\n HELP: {HOST: (st: any, _d: any, _n: any, p: any, _o: any, k: string) =>\n st[k].helpId || !p?.uid ? ABORT : put(st, k, {helpId: p.uid(k + '-help')})},\n PRESS: {HOST: live((st: any, {seen, ...d}: any, next: any, k: string) => {\n const s = st[k]\n if (s.mode == 'pointer' || !find(st, d.id)) return ABORT\n check(st, seen, k)\n // during a keyboard drag: it drops where it is, and the press starts (G-451)\n return put(s.mode == 'keyboard' ? drop(st, k, next) : st, k, {press: d})\n })},\n MOVE: {HOST: (st: any, d: any, _n: any, _p: any, _o: any, k: string) => {\n const s = st[k], p = s.press, f = p && find(st, p.id)\n if (!f) return ABORT\n // past the threshold: the drag starts\n const start = !s.dragging && {dragging: S(p.id), mode: 'pointer', origin: {list: f.list, index: f.index}, message: msg.lift(label(f.item), f.index + 1, f.size, false)}\n if (!s.dragging && Math.hypot(d.x - p.x, d.y - p.y) < threshold) return ABORT\n const o = find(st, d.over), L = landing(st, f, o, d.list, d.low)\n const next = {...start, over: o ? S(o.item[idField]) : null, list: L?.list ?? null, after: !!L?.after}\n return !start && next.over === s.over && next.list === s.list && next.after === s.after ? ABORT : put(st, k, next)\n }},\n UP: {HOST: (st: any, d: any, next: any, _p: any, _o: any, k: string) => {\n const s = st[k]\n if (!s.dragging) return s.press ? put(st, k, idle) : ABORT\n const f = find(st, s.dragging)\n // the release point decides (a last move may not have been rendered)\n const L = f && landing(st, f, find(st, d.over), d.list, d.low)\n if (!f || !L || L.list == f.list && L.to == f.index) return put(st, k, {...idle, message: f ? msg.cancel(label(f.item), f.index + 1, f.size) : ''})\n const out = move(st, f, L.list, L.to), n = find(out, s.dragging)!\n next('DROPPED', {id: s.dragging, list: n.list, index: n.index, fromList: f.list, fromIndex: f.index}, 0)\n return put(out, k, {...idle, message: msg.drop(label(f.item), n.index + 1, n.size, where(f, n))})\n }},\n CANCEL: {HOST: (st: any, _d: any, _n: any, _p: any, _o: any, k: string) => {\n const s = st[k], f = s.dragging && find(st, s.dragging)\n return s.press ? put(st, k, {...idle, message: f ? msg.cancel(label(f.item), f.index + 1, f.size) : ''}) : ABORT\n }},\n KEY: {\n HOST: live((st: any, {key, id, n: me, seen}: any, next: any, k: string) => {\n const s = st[k], f = find(st, s.dragging ?? id)\n if (s.mode == 'pointer' || s.press) return ABORT\n // the lifted item left the list (removed by another action): the drag ends\n if (!f) return s.dragging ? stop(st, k, idle) : ABORT\n const l = label(f.item), o = s.origin\n if (!s.dragging) {\n if (!LIFT.test(key)) return ABORT\n check(st, seen, k)\n // the drag's lists at lift (D219: also the ones its last step made, so far)\n const origin = {list: f.list, index: f.index, n: me}\n drags.set(origin, {snap: pick(st), made: pick(st)})\n return put(st, k, {...idle, dragging: S(id), mode: 'keyboard', origin, message: msg.lift(l, f.index + 1, f.size, true)})\n }\n if (LIFT.test(key) || key == 'Tab') return drop(st, k, next)\n if (key == 'Escape') return back(st, k, 1)\n // a step: the lists it made (D219)\n const step = (out: any, m: string) => { const d = drags.get(o); if (d) d.made = pick(out); return put(out, k, {message: m}) }\n // the cross axis moves between lists (from: [a, b]): to the same index, clamped\n const side = ({ArrowUp: -1, ArrowDown: 1, ArrowLeft: -1, ArrowRight: 1} as any)[key]\n if (side && key != prevKey && key != nextKey) {\n const to = lists[lists.indexOf(f.list) + side]\n if (!to) return ABORT\n const out = move(st, f, to, f.index), n = find(out, s.dragging)!\n return step(out, msg.move(l, n.index + 1, n.size, to))\n }\n const to = key == prevKey ? f.index - 1 : key == nextKey ? f.index + 1 : key == 'Home' ? 0 : key == 'End' ? f.size - 1 : -1\n return to < 0 || to >= f.size || to == f.index ? ABORT : step(move(st, f, f.list, to), msg.move(l, to + 1, f.size))\n }),\n // keep focus on the moved item's handle (its node may move or be re-created)\n ELEMENT: focus,\n },\n DROPPED: ABORT,\n },\n }\n return defineBehavior(def)(options)\n}\n","/*\n * PLAN-4 GS-8: undo / redo.\n *\n * Editor.model = undoable({ TYPE: ..., LOAD: ... }, { key: 'doc', coalesceMs: 500, resetOn: ['LOAD'] })\n * → state.history = { past, future }; adds UNDO and REDO (the host's intent triggers them)\n * Editor.uses = { history: undo({ key: 'doc', undo: UndoButton, redo: RedoButton }) }\n * → the same as a behavior: state.history also has canUndo / canRedo, the actions are\n * 'history.UNDO' / 'history.REDO', and the controls trigger them\n *\n * Every STATE reducer (function entries, `STATE` of object entries, 'ACTION | STATE' keys) is\n * wrapped: when its result has a different state[key], the old state[key] is pushed onto\n * `past` (at most `limit`, default 100) and `future` is cleared. With `track`, only those\n * actions are recorded; built-in actions (INITIALIZE ...) only when tracked. A change by the\n * same action within `coalesceMs` of the previous one joins that step (typing). With\n * `coalesce` (4-G1, D143) only the listed actions join (`coalesceMs` then defaults to 500);\n * every other action is always its own step (two quick clicks on Larger are two). `resetOn`\n * actions clear the history and are not recorded. Snapshots are references: reducers must\n * return new objects (they do in Sygnal). A model's own UNDO / REDO entry runs after the\n * built-in one (as a host entry for a behavior action does, D123).\n *\n * Gestures (3-H G-447): another behavior in the host's `uses` that declares `undoStep` (its\n * actions that complete a step: sortable's DROPPED) makes its other actions gesture steps. Their\n * changes aren't recorded; `history.base` holds the value from before the gesture until the\n * completing action records it as one entry. Works in either `uses` order (undo first: the\n * behavior's actions get host entries that run after them). undo() as a behavior only:\n * undoable() can't see `uses`. 3-L: a recorded action, UNDO or REDO during a gesture first\n * records the value from before it (G-473: it stays reachable); a gesture step that brings the\n * value back to where the gesture started (a cancel) leaves nothing pending, nor does a gesture\n * action after the value was changed outside the gesture (G-475 / G-479). `track` / `coalesce`\n * naming any of a gesture behavior's actions apply to its steps; `resetOn` naming one of them\n * resets the history at that action (G-477). 3-O: an untracked gesture is like an untracked\n * action, its changes are never recorded, nor pending (G-506); drops join only when `coalesce`\n * names a gesture action (G-507); REDO mid-gesture records the value from before the gesture in\n * place of the current one, as a recorded action does (G-508); \"back where it started\" compares\n * arrays and plain objects shallowly (G-509). 3-U: with `key: [...]` every comparison is key by key\n * (G-529 / G-530), a key the state didn't have stays out on UNDO / REDO, and `key: []` throws (G-531).\n *\n * SYG226 (dev, warn): a `track` / `resetOn` / `coalesce` name with no model entry (nor an action\n * of a behavior in the host's `uses`).\n */\nimport { defineBehavior } from './behaviors'\nimport { ABORT, isAbort } from '../shared'\n\nconst BUILT_IN = /^(BOOTSTRAP|INITIALIZE|DISPOSE|READY|RESOURCE)$/\n// the last recorded change of a history, keyed by its `past` array (which a behavior's calculated\n// fields keep while they copy the history object): [action, time] (coalescing; never in state)\nconst last = new WeakMap<object, [string, number]>()\nconst reported = new WeakSet<object>()\n\nexport interface UndoOptions { key: string | string[], limit?: number, track?: string[], coalesce?: string[], coalesceMs?: number, resetOn?: string[] }\n\nconst actionOf = (a: string) => a.split('|')[0].trim()\n\n// 3-U G-531: `key: []` keeps nothing (a definition error, in every build)\nconst keyed = (o: UndoOptions) => {\n if (Array.isArray(o?.key) && !o.key.length) throw new Error(\"undo: `key: []` names no state key; use key: 'name' or key: ['a', 'b']\")\n}\n\n// SYG226: report through the diagnostics core when it is enabled (dev); nothing in production\nconst check = (model: any, o: UndoOptions, component?: any, skip?: any) => {\n const known = new Set(Object.keys(model || {}).map(actionOf))\n for (const a of [...(o.track || []), ...(o.resetOn || []), ...(o.coalesce || [])]) {\n const i = a.indexOf('.'), m = i > 0 && skip?.[a.slice(0, i)]?.model\n // a behavior's action (G-477: one it doesn't have is reported)\n if (known.has(a) || m && a.slice(i + 1) in m) continue\n try {\n (globalThis as any).__SYGNAL_DIAGNOSTICS__?.report('SYG226', {\n severity: 'warn', component, data: {action: a},\n message: `undo ${o.track?.includes(a) ? 'track' : o.resetOn?.includes(a) ? 'resetOn' : 'coalesce'} names '${a}', which has no model entry`,\n fix: `Use the name of a model entry, or add '${a}' to the model`,\n })\n } catch (e) { queueMicrotask(() => { throw e }) }\n }\n}\n\n// a history without the pending gesture base\nconst settled = (h: any) => { const {base: _, ...o} = h; return o }\n// the same value (a gesture step that put everything back: a cancel): arrays and plain objects\n// compare their entries by identity (G-509), anything else is itself\nconst plain = (x: any) => Array.isArray(x) ? 1 : x && typeof x == 'object' && Object.getPrototypeOf(x) === Object.prototype ? 2 : 0\nconst same1 = (a: any, b: any) => {\n const k = a !== b && plain(a) && plain(a) == plain(b) && Object.keys(a)\n return a === b || !!k && k.length == Object.keys(b).length && k.every(i => i in b && a[i] === b[i])\n}\n\nconst wrap = (model: any, o: UndoOptions, hk: string, ns: string, S = 'STATE', g: any = {}): any => {\n const {key, limit = 100, track, coalesce, coalesceMs = coalesce ? 500 : 0, resetOn = []} = o, keys = typeof key == 'string' ? null : key\n const out: any = {}\n const hist = (s: any) => s?.[hk] || {past: [], future: []}\n // the value undo keeps: state[key], or (3-P G-515: `key: ['todo', 'done']`) an object of those\n // keys the state has; values compare key by key (3-U G-529 / G-530: no shared identity, no cache).\n // 3-W G-536: a key the state lacks and one it has as `undefined` differ for an array key (a key\n // that appears or goes is a change); for a string key both are the value `undefined`. Primitive\n // state (before the first object) has none of the keys\n const val = (s: any) => {\n if (!keys) return s?.[key as string]\n const v: any = {}\n for (const k of keys) if (s && typeof s == 'object' && k in s) v[k] = s[k]\n return v\n }\n const by = (a: any, b: any, f: any) => !!a && !!b && keys!.every(k => k in a == k in b && f(a[k], b[k]))\n const eq = (a: any, b: any) => keys ? a === b || by(a, b, (x: any, y: any) => x === y) : a === b\n const same = (a: any, b: any) => keys ? by(a, b, same1) : same1(a, b)\n // G-531: a key the snapshot didn't have is left out (not set to undefined); G-536: so is a string\n // key whose snapshot is undefined\n const set = (s: any, v: any) => {\n const r = keys ? {...s, ...v} : {...s, [key as string]: v}\n for (const k of keys || [key as string]) if (keys ? !(k in v) : v === undefined) delete r[k]\n return r\n }\n // one more entry in `past` (`join`: the change joins the last one)\n const rec = (r: any, h: any, v: any, name: string, joins: any) => {\n const at = Date.now(), prev = last.get(h.past)\n const join = joins && prev && prev[0] == name && at - prev[1] < coalesceMs && h.past.length\n const nh = {...settled(h), past: join ? h.past : [...h.past, v].slice(-limit), future: []}\n last.set(nh.past, [name, at])\n return {...r, [hk]: nh}\n }\n // 3-H G-447: a gesture's actions (`g`: another behavior's actions, 1 a step, 2 the one that\n // completes it, its `undoStep`). A step's change isn't recorded: `base` keeps [the value before\n // the gesture's first step, the value after its last]; the completing action records that\n // first value as one entry. A gesture that ends without it (cancelled) records nothing. The\n // pre-action state comes from the handler's props (`state`): as the host entry after the\n // behavior's (undo before it in `uses`), the reducer gets the behavior's result. `all`: the\n // gesture behavior's actions (G-477: `track` / `coalesce` naming any of them cover its steps);\n // `n` its key in `uses`, `end` its internal `undoEnd(slice)`: true when the slice an action\n // left ended the gesture without completing it (3-P G-510: sortable's Escape, unmount, reset)\n const gw = (f: any, [kind, all, n, end]: any, name: string) => {\n const has = (l?: string[]) => !!l && all.some((x: string) => l.includes(x))\n // G-507: drops join only when `coalesce` names the gesture (two separate drags are two steps)\n const tracked = !track || has(track), joins = coalesceMs > 0 && has(coalesce), reset = resetOn.includes(name)\n return (s: any, ...x: any[]) => {\n const r0 = f ? f(s, ...x) : s, r = isAbort(r0) ? s : r0, pre = x[2]?.state || s, none = f ? r0 : ABORT\n if (!r || typeof r != 'object' || !pre) return none\n const h = hist(r), b = h.base, v = val(r), p = val(pre)\n // G-477: resetOn names this gesture action\n if (reset) return h.past.length || h.future.length || b ? {...r, [hk]: {...settled(h), past: [], future: []}} : none\n // G-506: an untracked gesture is an untracked change: nothing recorded, nothing pending\n if (!tracked) return none\n // the base holds while the value is the one the gesture's last step left (G-475: else it\n // was changed outside the gesture, e.g. restored, and the base is stale)\n const on = b && eq(b[1], p) && b, stop = kind == 1 && end?.(r[n])\n if (kind == 1 && !stop) {\n if (eq(v, p)) return b && !on ? {...r, [hk]: settled(h)} : none\n const b0 = on ? on[0] : p\n // back where the gesture started (Escape, an item moved back): nothing pending (G-479);\n // the base is this behavior's (G-514: a step joins another's pending base and takes it)\n return {...r, [hk]: same(b0, v) ? settled(h) : {...h, base: [b0, v, n]}}\n }\n // G-514: only the behavior that opened the base completes it\n if (b && b[2] != null && b[2] !== n || !b && !stop) return none\n // G-510: ended without completing: what it leaves (the item where it is, or a restore after\n // the value changed) is one step from the value before the gesture, unless it is that value\n if (stop) {\n const b0 = on ? on[0] : p\n return same(b0, v) ? b ? {...r, [hk]: settled(h)} : none : rec(r, h, b0, name, 0)\n }\n return !on || eq(b[0], v) ? {...r, [hk]: settled(h)} : rec(r, h, b[0], name, joins)\n }\n }\n // G-473: a pending gesture's base, recorded before another change: the value from before the\n // gesture stays reachable (its steps join that change's entry)\n const before = (h: any, v: any) => { const b = h.base; return b && eq(b[1], v) && !eq(b[0], v) ? [b[0]] : null }\n for (const a in g) if (!(a in model)) out[a] = {[S]: gw(null, g[a], a)}\n for (const a in model) {\n const e = model[a], [name, sink] = a.split('|').map(x => x.trim())\n if (g[a]) {\n const f = typeof e == 'function' ? e : e?.[S]\n out[a] = typeof e == 'function' ? gw(e, g[a], a) : {...e, [S]: gw(typeof f == 'function' ? f : null, g[a], a)}\n continue\n }\n const reset = resetOn.includes(name), joins = coalesceMs > 0 && (!coalesce || coalesce.includes(name))\n const f0 = sink ? (sink == S ? e : null) : typeof e == 'function' ? e : e?.[S]\n // a constant STATE value isn't a reducer: the entry is left alone (G-214)\n if (f0 != null && typeof f0 != 'function') { out[a] = e; continue }\n const f = f0\n // an entry without a STATE reducer is left alone, except a resetOn object entry (gets one)\n if (!(f || reset && !sink) || !(reset || (track ? track.includes(name) : !BUILT_IN.test(name)))) { out[a] = e; continue }\n const w = (s: any, ...x: any[]) => {\n const r = f ? f(s, ...x) : s, h = hist(s)\n if (!r || typeof r != 'object' || isAbort(r)) return r\n if (reset) return h.past.length || h.future.length || h.base ? {...r, [hk]: {...settled(h), past: [], future: []}} : r\n const v = val(s)\n if (r === s || eq(val(r), v)) return r\n const b0 = before(h, v)\n return rec(r, h, b0 ? b0[0] : v, name, !b0 && joins)\n }\n out[a] = sink || typeof e == 'function' ? w : {...e, [S]: w}\n }\n // mid-gesture, the value from before the gesture stands in for the current one: UNDO goes back\n // to it (G-473: the drag so far is the step undone), REDO records it (G-508: the drag so far\n // joins the redone step, as with a recorded action; at most `limit`)\n const step = (u: boolean) => (s: any) => {\n const h = hist(s), v = val(s), b = before(h, v), {past, future} = h\n if (!(u ? b || past.length : future.length)) return ABORT\n return {...set(s, u ? b ? b[0] : past[past.length - 1] : future[0]), [hk]: {...settled(h),\n past: u ? b ? past : past.slice(0, -1) : [...past, b ? b[0] : v].slice(-limit),\n future: u ? [v, ...future] : future.slice(1)}}\n }\n const add = (a: string, f: any) => {\n const own = out[ns + a]\n if (!own) return out[ns + a] = f\n const g = typeof own == 'function' ? own : own[S]\n // the model's own entry runs after the built-in step (its ABORT keeps the step)\n const both = typeof g != 'function' ? f : (s: any, ...x: any[]) => {\n const r = f(s, ...x), q = g(isAbort(r) ? s : r, ...x)\n return isAbort(q) ? r : q\n }\n out[ns + a] = typeof own == 'function' ? both : {...own, [S]: both}\n }\n add('UNDO', step(true))\n add('REDO', step(false))\n return out\n}\n\n/**\n * Wraps a model's STATE reducers so `state[key]` gets undo / redo (GS-8): `state.history =\n * { past, future }`, plus UNDO and REDO entries for the intent to trigger. Options: `key` (the\n * state key to snapshot), `limit` (100), `track` (only these actions), `coalesceMs` (join rapid\n * changes by one action), `coalesce` (only these actions join; default window 500 ms), `resetOn`\n * (actions that clear the history). Returns a new model.\n */\nexport const undoable = (model: any, options: UndoOptions): any => {\n keyed(options)\n check(model, options)\n return wrap(model, options, 'history', '')\n}\n\n/**\n * undoable() as a behavior (GS-8 + GS-1): `uses = { history: undo({ key: 'doc', undo: Undo,\n * redo: Redo }) }` gives `state.history = { past, future, canUndo, canRedo }` and the actions\n * 'history.UNDO' / 'history.REDO' (the `undo` / `redo` controls trigger them; so can a host\n * intent action of that name). The other options are undoable()'s; `track` and `resetOn` name\n * the host's actions.\n */\nexport const undo = (options: UndoOptions & { undo?: any, redo?: any }): any => {\n keyed(options)\n const b = defineBehavior({\n initialState: {past: [], future: []},\n intent: ({DOM}: any, {undo, redo}: any) => ({\n ...(undo && {UNDO: DOM.click(undo)}),\n ...(redo && {REDO: DOM.click(redo)}),\n }),\n // placeholders (no change): they make the actions behavior-owned; the full-state UNDO / REDO\n // that wrap() adds for 'key.UNDO' runs after them, as a host entry would (D123)\n model: {UNDO: () => ABORT, REDO: () => ABORT},\n calculated: {canUndo: (h: any) => h.past.length > 0, canRedo: (h: any) => h.future.length > 0},\n })(options), merge = b.merge\n b.merge = (c: any, k: string) => {\n const u = c.view?.uses, g: any = {}\n if (!reported.has(b)) reported.add(b), check(c.model, options, c, u)\n // the gestures of the host's other behaviors (sortable's drag: one step per drop), in either `uses` order\n for (const n in u) {\n const s = u[n]?.undoStep, all = Object.keys(u[n]?.model || {}).map(a => n + '.' + a)\n if (s) for (const a in u[n].model) g[n + '.' + a] = [s.includes(a) ? 2 : 1, all, n, u[n].undoEnd]\n }\n c.model = wrap(c.model || {}, options, k, k + '.', c.stateSourceName, g)\n merge(c, k)\n }\n return b\n}\n","import {warn} from './diagnostics/legacy';\n\n/*\n * PLAN-4 GS-5 (D114): state persistence for the root component, as a helper value:\n *\n * TodoApp.persist = persist({ key: 'todo-app', pick: ['todos', 'filter'], version: 2, migrate })\n *\n * The core has no persistence code: a root component calls `persist.setup(this)` once, in its\n * root setup (src/core/runtime.ts rootShim); an app that never imports persist() pays 0 B.\n *\n * - Stored as JSON `{ version, state }` under `key`; `state` has the picked top-level keys\n * (`pick`), or all but `omit` and the calculated fields. A `uses` key whose behavior is marked\n * `persist: false` (sortable: drag state) is left out of both the save and the restore (the root's own\n * `uses` only: a sub-component's or Collection item's behavior slice is part of its data, 3-L G-476). `format: 'plain'` (4-G1, D143) stores\n * that object itself, with no envelope; `version` / `migrate` then don't apply (a type error;\n * ignored here), and a stored value that isn't an object is ignored.\n * - Restore: a synchronous read before INITIALIZE, merged into initialState, so the restore is\n * part of the initial-state action. A stored `version` other than `version` (default 1) goes\n * through `migrate(old, fromVersion)`; without migrate, or when it returns nothing, the entry\n * is ignored. Hydrating server HTML, the restore is a RESTORE action after the first state\n * instead, so the first render matches the server's. Hydrating: the `hydrate` option when given,\n * else the integration's `__hydrate` source (Astro: a server-rendered island; Vike: a hydration),\n * else whether run()'s mount point (its `__m` source) starts with renderToString's markup (the\n * root element carries `data-sygnal-ssr`; 3-R).\n * - Writes: debounced (`debounceMs`, default 100), skipped when the stored text is the same,\n * flushed on `pagehide` and on dispose.\n * - `PERSIST: { clear: true }` in any model entry's object form (a value or a function of\n * (state, data)) removes the stored copy; the state that same action produces isn't written\n * (later changes are). The entry's PERSIST sink is turned into an EFFECT here, so it needs no\n * driver. An 'ACTION | PERSIST' key (non-canonical) isn't handled (3-B2).\n * - `sync: true`: another tab's write is applied through RESTORE (the `storage` event, or an\n * adapter's `subscribe(fn)`).\n * - `storage`: 'local' (default), 'session', or a synchronous { getItem, setItem, removeItem }\n * adapter (optionally with subscribe). renderComponent passes its fake stores as the\n * `__storage` source ({ local, session, f: flush functions t.settle() calls }).\n * - Failures (unreadable entry, migrate throws, quota) are SYG642 (warn, printed in production\n * too), once per kind (restore / save / clear; a save that works again re-arms it); the app\n * continues on initialState / unsaved, and a failed save is retried at the next change.\n */\nconst g: any = globalThis;\n\nexport const setupPersist = (c: any, o: any): void => {\n const {key, pick, omit, version = 1, migrate, sync, debounceMs = 100} = o, plain = o.format == 'plain', src = c.sources, m = src.__m;\n const env = src.__storage, calc = c.calculated || {};\n // hydrating: the option, else the integration's signal (__hydrate: Astro, Vike), else whether\n // run()'s mount point starts with renderToString's markup (its root element is marked; a\n // client-only app's loading placeholder isn't server markup)\n const hydrate = o.hydrate ?? src.__hydrate ?? !!(typeof m == 'string' ? g.document?.querySelector(m) : m)?.firstElementChild?.hasAttribute('data-sygnal-ssr');\n let S: any, t: any, last: any, raw: any, skip: any, off: any;\n // (the docs link the message ends with explains the causes and fixes). Once per kind (restore,\n // save, clear): a storage that throws on every write must not warn on every change; a save that\n // works again re-arms the save report\n const bad: any = {};\n const fail = (what: string, e?: any) => bad[what] || (bad[what] = 1, warn('SYG642', c, `persist '${key}': ${what} failed`, undefined, e));\n // a behavior's slice marked `persist: false` (UI state: sortable's drag) is never saved or restored (3-H G-452)\n const uses = c.view?.uses || {};\n const only = (s: any) => {\n const out: any = {};\n for (const k in s) if ((pick ? pick.includes(k) : !omit?.includes(k)) && !(k in calc) && uses[k]?.persist !== false) out[k] = s[k];\n return out;\n };\n const read = (r: any) => {\n try {\n if (r == null) return;\n const j = JSON.parse(r);\n if (plain) return j && typeof j == 'object' && !Array.isArray(j) ? only(j) : undefined;\n const {version: v = 1, state} = j, s = v === version ? state : migrate && migrate(state, v);\n return s && only(s);\n } catch (e) { fail('restore', e); }\n };\n const write = () => {\n clearTimeout(t); t = 0;\n const r = JSON.stringify(plain ? only(last) : {version, state: only(last)}), p = raw;\n // a failed save is retried at the next change (raw stays the stored text)\n if (r != raw) try { raw = r; S.setItem(key, r); bad.save = 0; } catch (e) { raw = p; fail('save', e); }\n };\n const clear = () => {\n clearTimeout(t); t = 0; skip = 1; raw = null;\n setTimeout(() => skip = 0);\n try { S?.removeItem(key); } catch (e) { fail('clear', e); }\n };\n const send = (d: any) => d && c.action$.shamefullySendNext({type: 'RESTORE', data: d});\n // PERSIST sinks become EFFECTs (no driver); a model RESTORE entry replaces the built-in one\n const wrap = (p: any, e?: any) => (...a: any[]) => { const r = e?.(...a), v = typeof p == 'function' ? p(...a) : p; v?.clear && clear(); return r; };\n const model: any = {RESTORE: (s: any, d: any) => ({...s, ...d})};\n for (const k in c.model) {\n let v = c.model[k];\n if (v && typeof v == 'object' && 'PERSIST' in v) { const {PERSIST, ...rest} = v; v = {...rest, EFFECT: wrap(PERSIST, rest.EFFECT)}; }\n model[k] = v;\n }\n c.model = model;\n try { S = typeof o.storage == 'object' ? o.storage : (env || g)[(o.storage || 'local') + (env ? '' : 'Storage')]; } catch (_) {}\n if (!S) return;\n try {\n raw = S.getItem(key);\n if (!hydrate) { const r = read(raw); if (r) c.initialState = {...c.initialState, ...r}; }\n } catch (e) { fail('restore', e); }\n const state$ = c.sources[c.stateSourceName].stream;\n let first = 1;\n const L = {next: (s: any) => {\n last = s;\n // the initial state (restored or not) isn't written back. hydrate: it is the server's; restore\n // once it has rendered (the DOM driver patches before this listener hears the vtree)\n if (first) {\n first = 0;\n let once = hydrate;\n const v$ = c.vdom$, l = {next: () => once && setTimeout(() => (v$.removeListener(l), send(read(raw))), once = 0)};\n return hydrate && v$.addListener(l);\n }\n if (!skip) clearTimeout(t), t = setTimeout(write, debounceMs);\n }};\n state$.addListener(L);\n const flush = () => t && write();\n const onSync = (k: any, v: any) => { if (k == key && v != raw) send(read(raw = v)); };\n const onStorage = (e: any) => (!e.storageArea || e.storageArea == S) && onSync(e.key, e.newValue);\n if (sync) off = S.subscribe ? S.subscribe(onSync) : (g.addEventListener?.('storage', onStorage), () => g.removeEventListener?.('storage', onStorage));\n g.addEventListener?.('pagehide', flush);\n env?.f.add(flush);\n c._dispose$.addListener({next: () => {\n flush();\n state$.removeListener(L);\n off?.();\n g.removeEventListener?.('pagehide', flush);\n env?.f.delete(flush);\n }});\n};\n\n/**\n * `App.persist = persist({ key, pick | omit, version, migrate, format, storage, sync, hydrate, debounceMs })`:\n * the root component's state, saved to localStorage (or sessionStorage, or an adapter) and\n * restored at startup. Only an app that imports it pays for it.\n */\nexport const persist = (o: any) => ({options: o, setup: (c: any) => setupPersist(c, o)});\n","/**\n * PLAN-4.5 G-275: marks an initial state that a wrapper built from its caller's values (an\n * element's host props, Vike's pageContext.data or hydrated state, renderComponent's\n * initialState option). The dev statics freeze (D152, checks/statics.ts) leaves a marked object\n * and everything in it alone: the caller may still change those values. A non-enumerable symbol\n * key: spreads, JSON and Object.keys don't see it.\n */\nexport const OWNED = Symbol.for('sygnal.owned')\n\nexport const owned = <T>(v: T): T => {\n // G-289: an object that refuses the key (a Proxy) is returned as is\n try { if (v && typeof v == 'object' && Object.isExtensible(v)) Object.defineProperty(v, OWNED, {value: 1}) } catch {}\n return v\n}\n\n/**\n * G-289: owned() of a shallow copy of a plain object or array (the caller's own object stays\n * unmarked: it may be a component's static, which the freeze must still cover, or sealed, which\n * can't be marked); anything else as owned()\n */\nexport const ownedCopy = <T>(v: T): T => {\n const p = v && typeof v == 'object' ? Object.getPrototypeOf(v) : 0\n return owned(Array.isArray(v) ? [...v] as any : p == Object.prototype || p === null ? {...v} : v)\n}\n","/**\n * Server-Side Rendering utilities for Sygnal components.\n *\n * Renders Sygnal component trees to HTML strings without a browser DOM.\n * Handles sub-components, Collections, Suspense boundaries, and Portals.\n */\nimport {uidPart, vtStyle} from '../shared'\nimport {sortFn} from '../core/hosts/collection'\nimport {keyOf} from '../core/cell'\n\n// Void elements that must not have closing tags\nconst VOID_ELEMENTS = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'link', 'meta', 'param', 'source', 'track', 'wbr',\n])\n\n// Characters that need escaping in HTML text and attribute values\nconst ESC_MAP: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n}\n\n// 4-F: renderComponent's t.html() serialises like the browser's innerHTML: text escapes only\n// & < >, attribute values only & and \" (SSR output keeps escaping all five)\nlet innerHtmlMode = false\n// G-480: the <Slot> marker (its function in `data.m`), not a plain <slot> element\nconst isSlot = (v: any): boolean => v?.data?.m && v.sel === 'slot'\n\nfunction escapeHtml(str: string, attr?: boolean): string {\n return String(str).replace(innerHtmlMode ? (attr ? /[&\"]/g : /[&<>]/g) : /[&<>\"']/g, (ch) => ESC_MAP[ch])\n}\n\n/** @internal renderToString serialised like innerHTML (for renderComponent's t.html()) */\nexport function renderToInnerHtml(componentDef: any): string {\n innerHtmlMode = true\n try {\n return renderToString(componentDef)\n } finally {\n innerHtmlMode = false\n }\n}\n\n/**\n * Convert a CSS property name from camelCase to kebab-case.\n * E.g. \"backgroundColor\" → \"background-color\"\n * Handles vendor prefixes: \"WebkitTransform\" → \"-webkit-transform\"\n */\nfunction camelToKebab(str: string): string {\n return str\n .replace(/^(Webkit|Moz|Ms|O)/, (m) => '-' + m.toLowerCase())\n .replace(/([A-Z])/g, '-$1')\n .toLowerCase()\n}\n\n/**\n * Serialize an inline style object to a CSS string.\n */\nfunction serializeStyle(style: Record<string, any>): string {\n const parts: string[] = []\n for (const key of Object.keys(style)) {\n const val = style[key]\n if (val == null || val === '') continue\n // Skip snabbdom's delayed/remove/destroy style hooks\n if (key === 'delayed' || key === 'remove' || key === 'destroy') continue\n const cssKey = camelToKebab(key)\n parts.push(`${cssKey}: ${val}`)\n }\n return parts.join('; ')\n}\n\nexport interface RenderToStringOptions {\n /** Initial state for the root component */\n state?: any\n /** Props to pass to the root component */\n props?: Record<string, any>\n /** Context from a parent (for nested rendering) */\n context?: Record<string, any>\n /**\n * Embed serialized state in a <script> tag for client hydration.\n * When true, appends `<script>window.__SYGNAL_STATE__=...</script>`.\n * When a string, uses that as the variable name instead.\n */\n hydrateState?: boolean | string\n /**\n * PLAN-3 (HEAD driver): an array that receives each rendered component's `head` static\n * value (in render order); `renderHead(list)` turns it into tags.\n */\n head?: any[]\n /**\n * PLAN-3 5-5 (H-7): a queryCache() the components' `resources` render from: a cached entry\n * renders as `{ status: 'success', data }`, any other request as `{ status: 'loading' }`.\n * Nothing is fetched during SSR; seed the cache in a loader (`cache.set(request, data)`)\n */\n cache?: any\n /**\n * PLAN-4 GS-11: the app-level error hook, as run()'s `onError`: called with phase 'view' after\n * the component's onError boundary chose the fallback. Reporting only\n */\n onError?: (error: any, info: {componentName?: string; action?: string; phase: string}) => void\n /**\n * PLAN-4 G-206: the root of the uid() strings (default 'u'), as run()'s `uid` option: pass the\n * same value to both so the hydrated ids match\n */\n uid?: string\n}\n\n// the `onError` option of the outermost renderToString call that has one (GS-11)\nlet ssrOnError: any\n\n// the `head` option of the outermost renderToString call that has one\nlet heads: any[] | undefined\n// 5-5: the `cache` option of the outermost renderToString call that has one\nlet ssrCache: any\n\n/**\n * PLAN-4 GS-1: a host's behaviors: each `uses` key missing from the state is the slice the\n * behavior starts with (its initialState, the options naming its keys, its calculated fields: the\n * factory's precomputed `state`), as the client's merge gives it (behaviors.ts). A host with no\n * state gets an object with just its slices\n */\nfunction withUses(def: any, state: any): any {\n const uses = def && def.uses\n if (!uses || typeof uses !== 'object') return state\n if (state == null) state = {}\n if (typeof state !== 'object' || Array.isArray(state)) return state\n let out = state\n for (const k in uses) {\n const u = uses[k]\n if (!u) continue\n let v = out[k] === undefined ? u.state : out[k]\n // G-423: a sygnal/ui part (ui/shared.ts keyed()) names its ids by its `uses` key (or its\n // `id` option) when the slice has no id, as the client's merge and calculated `id` do\n if (u.keyed && v && typeof v === 'object' && v.id == null) v = {...v, id: u.options?.id ?? k}\n if (v !== out[k] && v !== undefined) {\n if (out === state) out = {...state}\n out[k] = v\n }\n }\n return out\n}\n\n/**\n * 5-5 (H-7): the state a component's view renders with: each `resources` entry missing from the\n * state reads from the cache ('success' with the cached data), else 'loading' ('idle' for a\n * falsy request), as the client's first paint does with the same (hydrated) cache\n */\nfunction withResources(def: any, state: any): any {\n state = withUses(def, state)\n const res = def && def.resources\n if (!res || !state || typeof state !== 'object' || Array.isArray(state)) return state\n const out = {...state}\n for (const n of Object.keys(res)) {\n if (out[n] !== undefined) continue\n let q: any\n try { q = typeof res[n] === 'function' ? res[n](state) : res[n] } catch (_) {}\n const E = q && ssrCache ? ssrCache.get(ssrCache.key(q, 1)) : undefined\n out[n] = E && E.at > 0 ? {status: 'success', data: E.v} : {status: q ? 'loading' : 'idle'}\n }\n return out\n}\n\n// PLAN-4 GS-9: uid(name?) as on the client: the root is 'u'; a child component adds its path in\n// the parent's view (or its `id` prop), as getComponentIdFromElement and instantiateSubComponents\n// in the core do; a Collection item adds its key, a Switchable page its name; anything but\n// each part encoded by uidPart (G-214); in the root option anything but [A-Za-z0-9_-] becomes '_'\n// (as run() does). SSR ids = hydration ids\nconst makeUid = (base: string) => (n?: string) => n ? base + '-' + n : base\nfunction childUid(uid: string, vnode: any, path: string): string {\n const id = vnode.data?.props?.id\n return uid + '-' + uidPart(('::' + ((id && JSON.stringify(id).replaceAll('\"', '')) || path)).replace(/.*::(r\\.)?/, ''))\n}\n\n// G-567: a view that returns a string or a number renders it as text (core/instance.ts view());\n// another falsy value, an empty <div>\nconst textOr = (r: any): any => typeof r == 'string' || typeof r == 'number' ? {text: '' + r} : r\nconst viewOut = (r: any): any => textOr(r) || {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\nconst errorDiv = (): any => ({sel: 'div', data: {attrs: {'data-sygnal-error': ''}}, children: [], text: undefined, elm: undefined, key: undefined})\n\n/**\n * A view threw: the component's onError boundary picks the fallback (the error <div> without\n * one, or when it throws), then the app's onError hook is told (GS-11)\n */\nfunction viewFailed(def: any, err: any, name: string): any {\n let vnode: any = errorDiv()\n if (typeof def.onError === 'function') {\n try {\n vnode = def.onError(err, {componentName: name})\n } catch (_) {\n vnode = errorDiv()\n }\n }\n // reporting only: a throwing hook is logged and swallowed (no diagnostics import: the Astro and\n // Vike server bundles carry this file without the core)\n try { ssrOnError && ssrOnError(err, {componentName: name, phase: 'view'}) } catch (e) { console.error(e) }\n return vnode\n}\n\nfunction collectHead(def: any, state: any): void {\n const h = def && def.head\n if (!heads || !h) return\n try { heads.push(typeof h === 'function' ? h(state) : h) } catch (_) {}\n}\n\n/**\n * Render a Sygnal component to an HTML string.\n *\n * Calls the component's view function with the provided (or initial) state,\n * recursively renders sub-components, and serializes the VNode tree to HTML.\n *\n * ```ts\n * import { renderToString } from 'sygnal'\n *\n * const html = renderToString(App, { state: { count: 0 } })\n * // → '<div data-sygnal-ssr=\"\"><h1>Count: 0</h1></div>'\n * ```\n *\n * The root element (a fragment's first element) carries an empty `data-sygnal-ssr` attribute,\n * which marks the markup as Sygnal's server HTML (persist() under plain run() then restores after\n * the first render); the first client render removes it.\n */\nexport function renderToString(\n componentDef: any,\n options: RenderToStringOptions = {}\n): string {\n const prevHeads = heads, prevCache = ssrCache, prevOnError = ssrOnError\n if (options.head) heads = options.head\n if (options.cache) ssrCache = options.cache\n if (options.onError) ssrOnError = options.onError\n try {\n return renderRoot(componentDef, options)\n } finally {\n heads = prevHeads\n ssrCache = prevCache\n ssrOnError = prevOnError\n }\n}\n\nfunction renderRoot(componentDef: any, options: RenderToStringOptions): string {\n const {state, props = {}, context = {}, hydrateState} = options\n // G-206: the uid root (sanitized as run() does)\n const uid = (options.uid || 'u').replace(/[^\\w-]+/g, '_')\n\n const ownState = state !== undefined ? state : componentDef.initialState\n // 5-5: the view sees its resources; the hydration script keeps the state as it was given\n const resolvedState = withResources(componentDef, ownState)\n collectHead(componentDef, resolvedState)\n\n // Build context: merge parent context with component's own context definitions\n const componentContext = componentDef.context || {}\n const mergedContext: Record<string, any> = {...context}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && resolvedState != null) {\n try {\n mergedContext[key] = contextFn(resolvedState)\n } catch (_) {}\n }\n }\n\n // Call the view function\n let vnode: any\n try {\n vnode = componentDef({\n ...props,\n state: resolvedState,\n children: props.children || [],\n slots: props.slots || {},\n context: mergedContext,\n uid: makeUid(uid),\n })\n } catch (err: any) {\n // Error boundary\n vnode = viewFailed(componentDef, err, componentDef.componentName || componentDef.name || 'Component')\n }\n\n if (!vnode) {\n vnode = {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n // Process special components in the VNode tree\n vnode = processSSRTree(vnode, mergedContext, resolvedState, uid, 'r')\n\n // PLAN-4 3-R: mark the root element (a fragment's first element) as Sygnal's server markup, so\n // persist() under plain run() can tell it from a client-only app's loading placeholder. The\n // first client render drops the attribute (the new vnode doesn't have it)\n // (4-H: through nested fragments, e.g. a Collection's)\n const firstEl = (v: any): any => {\n if (v?.sel) return v.sel !== '!' && v\n if (Array.isArray(v?.children)) for (const c of v.children) { const f = firstEl(c); if (f) return f }\n }\n const first = vnode?.sel ? vnode : firstEl(vnode)\n if (first && !innerHtmlMode) first.data = {...first.data, attrs: {'data-sygnal-ssr': '', ...first.data?.attrs}}\n\n // Serialize to HTML\n let html = vnodeToHtml(vnode)\n\n // Optionally embed state for hydration\n if (hydrateState && ownState != null) {\n const varName = typeof hydrateState === 'string' ? hydrateState : '__SYGNAL_STATE__'\n const serialized = escapeHtml(JSON.stringify(ownState))\n html += `<script>window.${varName}=${JSON.stringify(ownState)}</script>`\n }\n\n return html\n}\n\n/**\n * Walk the VNode tree and recursively render sub-components,\n * handle Suspense/Portal/Transition markers, and process Collections.\n */\nfunction processSSRTree(vnode: any, context: Record<string, any>, parentState: any, uid: string, path: string): any {\n if (!vnode) return vnode\n if (typeof vnode === 'string' || vnode.text != null) return vnode\n\n const sel = vnode.sel\n\n // Fragment: no selector, recurse into children\n if (!sel && vnode.children && Array.isArray(vnode.children)) {\n vnode.children = vnode.children\n .map((c: any, i: number) => processSSRTree(c, context, parentState, uid, `${path}.${i}`))\n .filter((c: any) => c != null)\n return vnode\n }\n\n // Portal: render children inline (no target container on server)\n if (sel === 'portal') {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState, uid, `${path}.0`)\n // P46-Q (D187): the client placeholder's selector (div.sygnal-portal), so hydration patches\n // this element in place and the Portal mounts from its postpatch (G-318)\n return {\n sel: 'div.sygnal-portal',\n data: {attrs: {'data-sygnal-portal': vnode.data?.props?.target ?? ''}},\n children: children.map((c: any, i: number) => processSSRTree(c, context, parentState, uid, `${path}.${i}`)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Transition: unwrap to child (no animation on server)\n if (sel === 'transition') {\n const children = vnode.children || []\n const child = children[0]\n if (!child) return null\n return processSSRTree(child, context, parentState, uid, path)\n }\n\n // Suspense: render children (SSR always shows content, not fallback)\n if (sel === 'suspense') {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState, uid, `${path}.0`)\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-suspense': 'resolved'}},\n children: children.map((c: any, i: number) => processSSRTree(c, context, parentState, uid, `${path}.${i}`)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // ClientOnly: render fallback during SSR, skip children (they need a browser)\n if (sel === 'clientonly') {\n const props = vnode.data?.props || {}\n const fallback = props.fallback\n if (fallback) {\n // fallback can be a VNode or a string\n return processSSRTree(fallback, context, parentState, uid, path)\n }\n // No fallback — render an empty placeholder div\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-clientonly': ''}},\n children: [],\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // PLAN-5 W-1 widget marker: the host element with the widget's `fallback` inside (processed like\n // any children); the client patch replaces the fallback and mounts the widget (extra/widget.ts)\n if (sel === 'widget' && vnode.data?.ww) {\n const {ww, wp, h} = vnode.data, fb = ww.def.fallback, host = ww.$ssr(vnode)\n if (fb != null) host.children = [].concat(typeof fb == 'function' ? fb(wp, h) : fb).map((c: any) => typeof c == 'object' ? c : {text: String(c)})\n return processSSRTree(host, context, parentState, uid, path)\n }\n\n // Slot: unwrap to children\n if (isSlot(vnode)) {\n const children = vnode.children || []\n if (children.length === 0) return null\n if (children.length === 1) return processSSRTree(children[0], context, parentState, uid, `${path}.0`)\n return {\n sel: 'div',\n data: {},\n children: children.map((c: any, i: number) => processSSRTree(c, context, parentState, uid, `${path}.${i}`)),\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Sub-component: render recursively\n const props = vnode.data?.props || {}\n // (PLAN-4.6: the pragma's `data.c`, the component function)\n if (typeof vnode.data?.c === 'function') {\n return renderSubComponent(vnode, context, parentState, childUid(uid, vnode, path))\n }\n\n // Collection: render each item\n if (sel === 'collection') {\n return renderCollection(vnode, context, parentState, childUid(uid, vnode, path))\n }\n\n // PLAN-5 V-1: a VirtualCollection renders its no-layout window (the first rows) in its container\n if (sel === 'virtual-collection') {\n return renderVirtual(vnode, context, parentState, childUid(uid, vnode, path))\n }\n\n // Switchable: render the active component\n if (sel === 'switchable') {\n return renderSwitchable(vnode, context, parentState, childUid(uid, vnode, path))\n }\n\n // Regular element: recurse into children\n if (vnode.children) {\n if (Array.isArray(vnode.children)) {\n if (vnode.children.length > 0) {\n vnode.children = vnode.children\n .map((c: any, i: number) => processSSRTree(c, context, parentState, uid, `${path}.${i}`))\n .filter((c: any) => c != null)\n }\n } else if (vnode.children && typeof vnode.children === 'object') {\n // Single child object (text element)\n vnode.children = processSSRTree(vnode.children, context, parentState, uid, `${path}.0`)\n }\n }\n\n return vnode\n}\n\n/**\n * Render a sub-component (the pragma's `data.c`: the component function, with its statics).\n */\nfunction renderSubComponent(vnode: any, context: Record<string, any>, parentState: any, uid: string): any {\n const childProps = vnode.data?.props || {}\n const componentDef: any = vnode.data?.c\n\n if (!componentDef || typeof componentDef !== 'function') {\n // Can't render — return children or empty div\n return {\n sel: 'div',\n data: {attrs: {'data-sygnal-ssr': vnode.sel || 'component'}},\n children: vnode.children || [],\n text: undefined,\n elm: undefined,\n key: undefined,\n }\n }\n\n // Determine child state via state lens\n let childState = componentDef.initialState\n const stateProp = childProps.state\n if (typeof stateProp === 'string' && parentState != null && parentState[stateProp] != null) {\n childState = parentState[stateProp]\n } else if (stateProp != null && typeof stateProp !== 'string') {\n // State passed directly\n childState = stateProp\n }\n childState = withResources(componentDef, childState)\n\n // Build child context\n const childContext: Record<string, any> = {...context}\n const componentContext = componentDef.context || {}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && childState != null) {\n try {\n childContext[key] = contextFn(childState)\n } catch (_) {}\n }\n }\n\n // Extract slots from children\n const slots: Record<string, any[]> = {}\n const defaultSlotChildren: any[] = []\n const vnodeChildren = vnode.children || []\n for (const child of vnodeChildren) {\n if (isSlot(child)) {\n const slotName = child.data?.props?.name || 'default'\n if (!slots[slotName]) slots[slotName] = []\n const slotChildren = child.children || []\n slots[slotName].push(...slotChildren)\n } else {\n defaultSlotChildren.push(child)\n }\n }\n if (defaultSlotChildren.length > 0) {\n if (!slots.default) slots.default = []\n slots.default.push(...defaultSlotChildren)\n }\n\n collectHead(componentDef, childState)\n\n // Call the view function\n let result: any\n try {\n result = componentDef({\n ...childProps,\n state: childState,\n children: slots.default || vnodeChildren,\n slots,\n context: childContext,\n uid: makeUid(uid),\n })\n } catch (err: any) {\n result = viewFailed(componentDef, err, componentDef.componentName || componentDef.name || 'Component')\n }\n\n // Recursively process the rendered sub-tree\n return processSSRTree(viewOut(result), childContext, childState, uid, 'r')\n}\n\n/** the Collection's own props (core/hosts/collection.ts OWN): the others go to every item */\nconst COLLECTION_OWN = new Set(['of', 'from', 'filter', 'sort', 'idfield', 'className', 'viewTransitionName'])\n/** the VirtualCollection container's props (extra/virtual.ts OWN) */\nconst VIRTUAL_OWN = /^(estimateSize|overscan|role|tabIndex|style|id|aria-(label|labelledby|describedby))$/\n\n/**\n * PLAN-5 2-S G-396: the items a Collection shows, as the client's host lists them\n * (core/hosts/collection.ts arrayCell + list()): `from` a state key (missing or not an array:\n * none, D178), a `{ get }` lens, or none (the owner's state is the array, or its `value`); then\n * `filter` (item, index, array) and `sort` (every form sortFn takes); a duplicate key once (D177).\n * Each entry: [the item, its raw index]\n */\nfunction collectionItems(props: any, parentState: any): any[][] {\n const {from, filter, sort} = props\n let a: any\n if (from === undefined) a = !Array.isArray(parentState) && Array.isArray(parentState?.value) ? parentState.value : parentState\n else if (typeof from === 'string') a = parentState?.[from]\n else if (from && typeof from === 'object' && typeof from.get === 'function') {\n try { a = from.get(parentState) } catch (_) { a = undefined }\n }\n if (!Array.isArray(a)) return []\n let idx: number[] = a.map((_: any, i: number) => i)\n try {\n if (typeof filter === 'function') idx = idx.filter((i) => filter(a[i], i, a))\n const cmp = sort ? sortFn(sort) : undefined\n if (cmp) idx.sort((x, y) => cmp(a[x], a[y]))\n } catch (_) { /* as the client: a throwing filter / sort renders the array as it is */ }\n const first = new Map<string, number>(), out: any[][] = []\n for (let i = 0; i < a.length; i++) { const k = keyOf(a[i], i); if (!first.has(k)) first.set(k, i) }\n for (const i of idx) if (first.get(keyOf(a[i], i)) === i) out.push([a[i], i])\n return out\n}\n\n/** a component's children split into slots (as renderSubComponent: `<Slot name>` children by name, the rest `default`) */\nfunction slotsOf(children: any[]): Record<string, any[]> {\n const slots: Record<string, any[]> = {}\n for (const child of children) {\n const name = isSlot(child) ? child.data?.props?.name || 'default' : 'default'\n ;(slots[name] ||= []).push(...(isSlot(child) ? child.children || [] : [child]))\n }\n return slots\n}\n\n/**\n * Render a Collection: its items (collectionItems: from, filter, sort), each with the other\n * props and the Collection's children, as the client's host gives them (G-396). `limit`: only\n * the first that many (a VirtualCollection's window); `skip`: props that aren't the items'.\n * 4-H (D229): a fragment of the items (no wrapper element), as the client's.\n */\nfunction renderCollection(vnode: any, context: Record<string, any>, parentState: any, uid: string, limit?: number, skip?: RegExp, deco?: (row: any, i: number) => any): any {\n const props = vnode.data?.props || {}\n const {of: itemComponent, viewTransitionName: vtn} = props\n const frag = (children: any[]) => ({sel: undefined, data: {}, children, text: undefined, elm: undefined, key: undefined})\n\n if (!itemComponent || typeof itemComponent !== 'function') return frag([])\n\n let items = collectionItems(props, parentState)\n const count = items.length\n if (limit !== undefined) items = items.slice(0, limit)\n const itemProps: Record<string, any> = {}\n for (const k in props) if (!COLLECTION_OWN.has(k) && !(skip && skip.test(k)) && k !== 'key' && k !== 'children') itemProps[k] = props[k]\n const kids = vnode.children || []\n const slots = slotsOf(kids)\n\n const renderedItems = items.map(([raw, index]: any[], pos: number) => {\n let itemState = raw\n // GS-9: the key the client's Collection gives this item\n const isItemObj = itemState && typeof itemState === 'object' && !Array.isArray(itemState)\n // PLAN-4.6 G-322: an id-less item's uid part is `_i<index>` (core/cell.ts keyName)\n const itemUid = uid + '-' + (isItemObj && itemState.id != null ? uidPart(itemState.id) : '_i' + index)\n // GS-1: an item host's behavior slices (the client reads them as defaults, behaviors.ts)\n itemState = withUses(itemComponent, itemState)\n // Build context for this item\n const itemContext: Record<string, any> = {...context}\n const componentContext = itemComponent.context || {}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function') {\n try {\n itemContext[key] = contextFn(itemState)\n } catch (_) {}\n }\n }\n\n let itemVnode: any\n try {\n itemVnode = itemComponent({\n ...itemProps,\n state: itemState,\n children: slots.default || kids,\n slots,\n context: itemContext,\n uid: makeUid(itemUid),\n })\n } catch (err: any) {\n itemVnode = viewFailed(itemComponent, err, itemComponent.name || 'CollectionItem')\n }\n\n const out = processSSRTree(textOr(itemVnode), itemContext, itemState, itemUid, 'r')\n // PLAN-5 A-1: the names the client's Collection gives a keyed item's root element\n const named = vtn && isItemObj && itemState.id != null && out?.sel\n ? {...out, data: {...out.data, style: vtStyle(vtn, itemState.id, out.data?.style)}}\n : out\n // a VirtualCollection's row decoration, with the row's position in the list (G-431: counted\n // before the rows that render nothing are left out, as the client counts them)\n return deco && named?.sel ? deco(named, pos) : named\n }).filter((v: any) => v != null)\n\n return frag(renderedItems)\n}\n\n/**\n * PLAN-5 V-1: a VirtualCollection on the server: the client's markup (extra/virtual.ts) for the\n * window it computes without layout, the first 10 rows + overscan, with the spacer as tall as\n * every row's estimate. The client measures and moves the window once it has layout. G-396: the\n * rows are the Collection's (from, filter, sort, the other props and the children to every\n * item); aria-setsize and the spacer count the filtered list.\n */\nfunction renderVirtual(vnode: any, context: Record<string, any>, parentState: any, uid: string): any {\n const p = vnode.data?.props || {}, est = p.estimateSize, size = est > 0 ? est : 32\n const n = 10 + (p.overscan >= 0 ? p.overscan : 5)\n const items = typeof p.of === 'function' ? collectionItems(p, parentState) : []\n const role = p.role === undefined ? 'list' : p.role\n const rows = renderCollection(vnode, context, parentState, uid, n, VIRTUAL_OWN, (r: any, i: number) => {\n const own = r.data?.attrs?.role || r.data?.props?.role, attrs: any = {...r.data?.attrs, 'data-index': i}\n if (role == 'list' || own) attrs['aria-posinset'] = i + 1, attrs['aria-setsize'] = items.length\n if (role == 'list' && !own) attrs.role = 'listitem'\n return {...r, data: {...r.data, attrs}}\n }).children\n const attrs: any = {tabindex: p.tabIndex ?? 0}\n if (role != null) attrs.role = role\n for (const k of ['id', 'aria-label', 'aria-labelledby', 'aria-describedby']) if (p[k] != null) attrs[k] = p[k]\n let total = 0\n for (let i = 0; i < items.length; i++) {\n const s = typeof est == 'function' ? est(items[i][0], i) : size\n total += s > 0 ? s : 32\n }\n const div = (data: any, children: any[]) => ({sel: 'div', data, children, text: undefined, elm: undefined, key: undefined})\n return div({props: p.className ? {className: p.className} : {}, attrs, style: {overflowY: 'auto', overflowAnchor: 'none', ...p.style}}, [\n div({style: {position: 'relative', width: '100%', height: total + 'px'}}, [\n div({style: {position: 'absolute', top: '0', left: '0', width: '100%', transform: 'translateY(0px)'}}, rows),\n ]),\n ])\n}\n\n/**\n * Render a Switchable by determining the active component from state.\n */\nfunction renderSwitchable(vnode: any, context: Record<string, any>, parentState: any, uid: string): any {\n const props = vnode.data?.props || {}\n const {components, active, initial} = props\n\n if (!components) {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n // Determine which component to render\n let activeName: string | undefined\n if (typeof active === 'string') {\n // Direct name or state property\n if (components[active]) {\n activeName = active\n } else if (parentState && typeof parentState[active] === 'string') {\n activeName = parentState[active]\n }\n }\n if (!activeName && initial) {\n activeName = initial\n }\n if (!activeName) {\n activeName = Object.keys(components)[0]\n }\n\n const activeComponent = components[activeName]\n if (!activeComponent || typeof activeComponent !== 'function') {\n return {sel: 'div', data: {}, children: [], text: undefined, elm: undefined, key: undefined}\n }\n\n return renderToStringInternal(activeComponent, parentState, context, uid + '-' + uidPart(activeName))\n}\n\n/**\n * Internal helper: render a component def to a VNode (not HTML string).\n */\nfunction renderToStringInternal(componentDef: any, state: any, context: Record<string, any>, uid: string): any {\n const resolvedState = withResources(componentDef, state !== undefined ? state : componentDef.initialState)\n\n const componentContext = componentDef.context || {}\n const mergedContext: Record<string, any> = {...context}\n for (const key of Object.keys(componentContext)) {\n const contextFn = componentContext[key]\n if (typeof contextFn === 'function' && resolvedState != null) {\n try {\n mergedContext[key] = contextFn(resolvedState)\n } catch (_) {}\n }\n }\n\n collectHead(componentDef, resolvedState)\n let vnode: any\n try {\n vnode = componentDef({\n state: resolvedState,\n children: [],\n slots: {},\n context: mergedContext,\n uid: makeUid(uid),\n })\n } catch (err: any) {\n vnode = viewFailed(componentDef, err, componentDef.name || 'Component')\n }\n\n return processSSRTree(viewOut(vnode), mergedContext, resolvedState, uid, 'r')\n}\n\n// G-465: a form field's `value` (a DOM property) has no attribute on <textarea> / <select>: the\n// textarea's goes in as its text, the select's marks the matching <option> (`sv`: the values, as\n// strings, of the <select> the option is in, and whether it is multiple) as selected. G-495: as\n// the browser does: an option without a value matches by its text with ASCII whitespace stripped\n// and collapsed; a single select marks only its first match; an explicit `selected` (true or\n// false) is the option's own. G-496: not in t.html()'s innerHTML mode (a property, which\n// innerHTML doesn't show)\ntype SV = {v: string[]; m: boolean}\nconst ws = (t: string): string => t.replace(/[\\t\\n\\f\\r ]+/g, ' ').replace(/^ | $/g, '')\nconst fieldValue = (data: any): any => data?.props?.value ?? data?.attrs?.value\nconst withoutValue = (data: any): any => {\n const out = {...data}\n if (out.props) { out.props = {...out.props}; delete out.props.value }\n if (out.attrs) { out.attrs = {...out.attrs}; delete out.attrs.value }\n return out\n}\nconst textOf = (v: any): string => v == null ? '' : typeof v != 'object' ? String(v)\n : v.text != null ? String(v.text) : Array.isArray(v.children) ? v.children.map(textOf).join('') : ''\n\n/**\n * Serialize a VNode tree to an HTML string.\n */\nfunction vnodeToHtml(vnode: any, sv?: SV): string {\n if (vnode == null) return ''\n\n // Text node\n if (typeof vnode === 'string') return escapeHtml(vnode)\n if (vnode.text != null && !vnode.sel) return escapeHtml(String(vnode.text))\n\n // VNode with text content and a selector\n const sel = vnode.sel\n if (!sel) {\n if (vnode.text != null) return escapeHtml(String(vnode.text))\n // Fragment: no selector, but has children — concatenate child HTML\n if (vnode.children && Array.isArray(vnode.children)) {\n return vnode.children.map((c: any) => vnodeToHtml(c, sv)).join('')\n }\n return ''\n }\n\n // Parse selector: tag#id.class1.class2\n const {tag, id, selectorClasses} = parseSelector(sel)\n\n let data = vnode.data || {}, content: string | undefined\n const value = fieldValue(data)\n if (innerHtmlMode) {\n // (G-496)\n } else if (tag == 'textarea' && value != null) {\n data = withoutValue(data)\n // the HTML parser drops a leading newline (a CR or CRLF is one: G-495), so one is added\n const t = String(value)\n content = escapeHtml((t[0] == '\\n' || t[0] == '\\r' ? '\\n' : '') + t)\n } else if (tag == 'select' && value != null) {\n data = withoutValue(data)\n sv = {v: ([] as any[]).concat(value).map(String), m: !!(data.props?.multiple ?? data.attrs?.multiple)}\n } else if (tag == 'option' && sv && data.props?.selected == null && data.attrs?.selected == null) {\n if (sv.v.includes(value != null ? String(value) : ws(textOf(vnode)))) {\n data = {...data, attrs: {...data.attrs, selected: true}}\n if (!sv.m) sv.v = []\n }\n }\n if (tag != 'select' && tag != 'optgroup' && tag != 'option') sv = undefined\n\n // Build attributes from VNode data\n const attrs = buildAttributes(data, id, selectorClasses, tag.includes('-'))\n\n // Opening tag\n let html = `<${tag}`\n for (const [key, val] of attrs) {\n if (val === true) {\n html += ` ${key}`\n } else if (val !== false && val != null) {\n html += ` ${key}=\"${escapeHtml(String(val), true)}\"`\n }\n }\n html += '>'\n\n // Void elements\n if (VOID_ELEMENTS.has(tag)) {\n return html\n }\n\n // If innerHTML is set via props, use it as raw content (no escaping)\n if (vnode.data?.props?.innerHTML != null) {\n html += String(vnode.data.props.innerHTML)\n html += `</${tag}>`\n return html\n }\n\n // Children — snabbdom uses `text` for single text children (even when\n // `children` holds a text element object). Prioritize `text` when set.\n if (content !== undefined) {\n html += content\n } else if (vnode.text != null) {\n html += escapeHtml(String(vnode.text))\n } else if (vnode.children) {\n // children can be an array or a single text element object\n const kids = Array.isArray(vnode.children) ? vnode.children : [vnode.children]\n for (const child of kids) {\n html += vnodeToHtml(child, sv)\n }\n }\n\n html += `</${tag}>`\n return html\n}\n\n/**\n * Parse a snabbdom selector string like \"div#myId.foo.bar\" into parts.\n */\nfunction parseSelector(sel: string): {tag: string; id: string | null; selectorClasses: string[]} {\n let tag = sel\n let id: string | null = null\n const selectorClasses: string[] = []\n\n // Extract id\n const hashIdx = sel.indexOf('#')\n if (hashIdx !== -1) {\n const rest = sel.slice(hashIdx + 1)\n const dotIdx = rest.indexOf('.')\n if (dotIdx !== -1) {\n id = rest.slice(0, dotIdx)\n tag = sel.slice(0, hashIdx)\n // Classes after #id\n const classStr = rest.slice(dotIdx + 1)\n if (classStr) selectorClasses.push(...classStr.split('.'))\n } else {\n id = rest\n tag = sel.slice(0, hashIdx)\n }\n } else {\n // Extract classes from selector\n const dotIdx = sel.indexOf('.')\n if (dotIdx !== -1) {\n tag = sel.slice(0, dotIdx)\n const classStr = sel.slice(dotIdx + 1)\n if (classStr) selectorClasses.push(...classStr.split('.'))\n }\n }\n\n if (!tag) tag = 'div'\n\n return {tag, id, selectorClasses}\n}\n\n/**\n * Build an ordered list of [attrName, attrValue] from VNode data.\n */\n// 1-R G-365: camelCase HTML IDL properties whose content attribute is their lowercase name\nconst IDL_ATTRS = /^(tabIndex|readOnly|maxLength|minLength|contentEditable|accessKey|inputMode|enterKeyHint|spellCheck|autoFocus|autoComplete|autoCapitalize|autoPlay|noValidate|formAction|formEnctype|formMethod|formNoValidate|formTarget|crossOrigin|referrerPolicy|useMap|isMap|dateTime|colSpan|rowSpan|srcSet|allowFullscreen|playsInline|noModule|popoverTarget|popoverTargetAction|encType)$/\nconst kebab = (k: string): string => k.replace(/[A-Z]/g, (c) => '-' + c.toLowerCase())\n\nfunction buildAttributes(\n data: any,\n selectorId: string | null,\n selectorClasses: string[],\n custom?: boolean\n): Array<[string, any]> {\n const result: Array<[string, any]> = []\n const classNames: string[] = [...selectorClasses]\n\n // From data.props (DOM properties like className, htmlFor, etc.)\n if (data.props) {\n for (let [key, val] of Object.entries(data.props)) {\n if (key === 'className') {\n if (typeof val === 'string' && val) classNames.push(val)\n } else if (key === 'htmlFor') {\n result.push(['for', val])\n } else if (key === 'innerHTML' || key === 'textContent') {\n // Skip — handled separately if needed\n } else if (custom && (typeof val === 'function' || (val && typeof val === 'object'))) {\n // PLAN-5 D199: a custom element's function / object property has no attribute form\n } else {\n // PLAN-5 D199 / 1-R G-365: a custom element's camelCase property as attributes. A\n // reflected HTML IDL name gets its attribute (tabIndex → tabindex, readOnly → readonly),\n // an ARIA reflection its aria-* one (ariaLabel → aria-label). Any other camelCase name is\n // written twice: kebab-case (withClear → with-clear: Web Awesome / Shoelace's declared\n // attributes, Stencil's default, sygnal/element's defineElement) and lowercase\n // (withclear: Lit's and FAST's default attribute name); the element reads the one it\n // observes and ignores the other\n const keys = !custom || !/[A-Z]/.test(key) ? [key]\n : IDL_ATTRS.test(key) ? [key.toLowerCase()]\n : /^aria[A-Z]/.test(key) ? [kebab(key)]\n : [kebab(key), key.toLowerCase()]\n for (const k of keys) {\n if (typeof val === 'boolean') {\n if (val) result.push([k, true])\n } else if (val != null) {\n result.push([k, val])\n }\n }\n }\n }\n }\n\n // From data.attrs (HTML attributes)\n if (data.attrs) {\n for (const [key, val] of Object.entries(data.attrs)) {\n if (key === 'class') {\n if (typeof val === 'string' && val) classNames.push(val)\n } else if (typeof val === 'boolean') {\n if (val) result.push([key, true])\n } else if (val != null) {\n result.push([key, val])\n }\n }\n }\n\n // From data.class (conditional class map: { active: true, disabled: false })\n if (data.class) {\n for (const [key, val] of Object.entries(data.class)) {\n if (val) classNames.push(key)\n }\n }\n\n // From data.dataset (data-* attributes)\n if (data.dataset) {\n for (const [key, val] of Object.entries(data.dataset)) {\n if (val != null) {\n result.push([`data-${camelToKebab(key)}`, val])\n }\n }\n }\n\n // ID (selector id takes precedence, then props/attrs)\n if (selectorId) {\n result.unshift(['id', selectorId])\n }\n\n // Class attribute\n if (classNames.length > 0) {\n const unique = [...new Set(classNames)]\n result.unshift(['class', unique.join(' ')])\n }\n\n // Style\n if (data.style && typeof data.style === 'object') {\n const styleStr = serializeStyle(data.style)\n if (styleStr) {\n result.push(['style', styleStr])\n }\n }\n\n return result\n}\n","/**\n * PLAN-4 2-C (GS-10): the action log. Records every action a component instance runs as\n * { type, data, component, instance, sinks, cause, time }\n * for renderComponent's t.actions / t.explain() (src/extra/testing.ts), inspect({ actions }) in\n * the 'sygnal/diagnostics' dev entry (./inspect.ts) and the DevTools action log\n * (src/extra/devtoolsActions.ts).\n *\n * 0 B in apps: nothing in the core calls this. actionHooks() is a hook layer of the core\n * (04-hooks-contract §3.3): onAction opens the record (the core passes the cause: 'intent',\n * 'next', 'reply', 'built-in', 'simulateAction'; an intent action a behavior owns is\n * 'behavior'), wrapHandler sees which sinks produced a value. (The old core's version patched\n * each instance; R5 removed it.)\n *\n * Sinks: a function reducer counts when it returns a value: not ABORT (or another symbol, which\n * the core drops), and for STATE not the state it was given (GS-4: no change); EFFECT counts when\n * the handler ran without ABORT. A constant / `true` entry always sends. A throwing reducer\n * sends nothing.\n */\nimport {isAbort, ORIGINAL} from '../../../shared'\n\nexport type ActionCause = 'intent' | 'next' | 'reply' | 'built-in' | 'simulateAction' | 'behavior'\n\nexport interface ActionRecord {\n type: string\n data: any\n /** the component's name */\n component: string\n /** the instance's id (its component number, as inspect()'s component ids) */\n instance: string\n /** sinks that produced a value for this action (live: STATE fills in when the reducer runs) */\n sinks: string[]\n cause: ActionCause\n /** clock time (fake-timer aware) when the action reached the model */\n time: number\n /** a reply: the source that delivered it */\n source?: string\n}\n\nexport interface ActionListener {\n action(record: ActionRecord, component: any): void\n /** a sink produced a value for `record` (reducer: the model's function, when there is one) */\n sink?(record: ActionRecord, sink: string, reducer: any): void\n}\n\nconst BUILT_IN = /^(BOOTSTRAP|INITIALIZE|DISPOSE|RESOURCE)$/\n\n/** now on the test's fake clock when there is one (vi.useFakeTimers()), else Date.now() */\nexport const clockNow = (): number => {\n const c = (setTimeout as any).clock\n return c ? c.now : Date.now()\n}\n\n/**\n * PLAN-4.6 R4: the same log on the core, from its hooks (04 §3.3) instead of instance\n * patches: onAction opens the record (the core passes the cause: 'intent', 'next', 'reply',\n * 'built-in', 'simulateAction'), wrapHandler sees which sinks produced a value. Same records,\n * same cause rules: a built-in type is 'built-in' unless simulated; an intent action a behavior\n * owns is 'behavior'. `only(inst)`: the instances to record (renderComponent: its own tree).\n */\nexport function actionHooks(listener: ActionListener, only?: (inst: any) => boolean): any {\n const cur = new WeakMap<object, [ActionRecord, string[]]>()\n // INITIALIZE: the core writes the initial state at creation (no action, unless the model\n // has an INITIALIZE entry); today's log has an INITIALIZE record with STATE, so it is opened here\n const init = new WeakMap<object, ActionRecord>()\n return {\n onCreate(inst: any) {\n const d = inst.def\n if ((only && !only(inst)) || d.initialState === undefined || !(inst.isRoot || d.isolated)) return\n const rec: ActionRecord = {type: 'INITIALIZE', data: d.initialState, component: inst.name, instance: String(inst.id), sinks: [], cause: 'built-in', time: clockNow()}\n init.set(inst, rec)\n try { listener.action(rec, inst) } catch (_) { /* ignore */ }\n addSink(listener, rec, ['STATE'], 'STATE', undefined)\n },\n onAction(inst: any, a: any) {\n if (only && !only(inst)) return\n const type = String(a.type), owned = inst.def.behaviorActions\n const hs = inst.def.handlers.get(type) || [], order = hs.map((h: any) => h[0])\n const opened = type == 'INITIALIZE' && init.get(inst)\n if (opened) { init.delete(inst); cur.set(inst, [opened, order]); return }\n const cause: ActionCause = a.cause == 'simulateAction' ? a.cause : BUILT_IN.test(type) ? 'built-in'\n : a.cause == 'next' || a.cause == 'reply' ? a.cause\n : owned && Object.prototype.hasOwnProperty.call(owned, type) ? 'behavior' : 'intent'\n const rec: ActionRecord = {type, data: a.data, component: inst.name, instance: String(inst.id), sinks: [], cause, time: clockNow(), ...(a.source !== undefined && {source: a.source})}\n cur.set(inst, [rec, order])\n try { listener.action(rec, inst) } catch (_) { /* a listener never breaks the app */ }\n // a constant / `true` entry always sends (EFFECT runs functions only)\n for (const [sink, h] of hs) if (typeof h != 'function' && sink != 'EFFECT') addSink(listener, rec, order, sink, undefined)\n },\n wrapHandler(inst: any, type: string, sink: string, fn: any) {\n const c = cur.get(inst)\n if (!c || c[0].type !== type || typeof fn != 'function') return\n const [rec, order] = c, isState = sink == 'STATE', isEffect = sink == 'EFFECT'\n return function (this: any, state: any) {\n const r = fn.apply(this, arguments)\n if (!isAbort(r) && (isEffect || typeof r != 'symbol') && !(isState && r === state)) addSink(listener, rec, order, sink, fn[ORIGINAL] || fn)\n return r\n }\n },\n }\n}\n\nfunction addSink(l: ActionListener, rec: ActionRecord, order: string[], sink: string, reducer: any): void {\n if (!rec.sinks.includes(sink)) {\n rec.sinks.push(sink)\n rec.sinks.sort((a, b) => order.indexOf(a) - order.indexOf(b))\n }\n try { l.sink?.(rec, sink, reducer) } catch (_) { /* ignore */ }\n}\n","/**\n * PLAN-4 GS-2: element command diagnostics (dev entry; the core carries no text).\n *\n * The core (src/extra/elementCommands.ts) calls `__SYGNAL_DIAGNOSTICS__.elementCommand(component,\n * command, element?)` when a command can't run:\n * - no element (`element` falsy): SYG640 (warn): nothing in the sending instance's DOM scope\n * matched the target within about 1 s;\n * - an element, but neither the control's spec command nor a method of the element: SYG641\n * (error). It names the control's declared commands. When the element is a widget's host\n * (PLAN-5 W-1, `__sw`): SYG142 (error), naming the widget's declared commands.\n * installElementCommandHooks() publishes it on the core bridge.\n *\n * When a command is sent (checkSentCommand, from the elementCommands check's onModel, which wraps\n * the instance's ELEMENT stream before the core subscribes it): SYG641 for a value that is not a\n * command object, and for a method that changes the DOM Sygnal renders (remove, append,\n * setAttribute...): the core runs any method the element has, and those break the next patch.\n *\n * renderComponent uses these functions too (mock DOM, and the real DOM without the dev entry), so\n * this module has no side effects and doesn't import ./shared (which registers codes when loaded).\n */\nimport type {DiagnosticCheck} from '../index'\nimport {DEV_CODE_SEVERITY} from '../codes'\n\n/** The element commands Sygnal documents and types (the core runs any method of the element) */\nexport const NATIVE_COMMAND_NAMES = ['focus', 'blur', 'select', 'click', 'scrollIntoView', 'showModal', 'show', 'close', 'showPopover', 'hidePopover', 'togglePopover']\n\nconst core = (): any => (globalThis as any).__SYGNAL_DIAGNOSTICS__\n\nconst send = (code: string, details: any): void => {\n try {\n core()?.report(code, {severity: DEV_CODE_SEVERITY[code], ...details})\n } catch (err) {\n // 'error' mode: rethrown asynchronously (never into the caller)\n setTimeout(() => { throw err })\n }\n}\n\nconst isControl = (x: any): boolean => typeof x == 'function' && !!x.__sygnalControl\nconst keyOf = (control: any): string => String(control).slice(15, -2)\n\n/** a command as written: `{ focus: Email, preventScroll: true }` */\nexport const describeCommand = (cmd: any): string => {\n if (!cmd || typeof cmd != 'object') return JSON.stringify(cmd) ?? String(cmd)\n const parts = Object.keys(cmd).map(k => {\n const v = cmd[k]\n let text: string\n if (isControl(v)) text = keyOf(v)\n else try { text = JSON.stringify(v) ?? String(v) } catch (_) { text = String(v) }\n return `${k}: ${text}`\n })\n return `{ ${parts.join(', ')} }`\n}\n\nconst distance = (a: string, b: string): number => {\n const row = Array.from({length: b.length + 1}, (_, i) => i)\n for (let i = 1; i <= a.length; i++) {\n let prev = row[0]\n row[0] = i\n for (let j = 1; j <= b.length; j++) {\n const cur = row[j]\n row[j] = Math.min(row[j] + 1, row[j - 1] + 1, prev + (a[i - 1] == b[j - 1] ? 0 : 1))\n prev = cur\n }\n }\n return row[b.length]\n}\n\nconst closest = (name: string, names: string[]): string | undefined => {\n let best: string | undefined, d = 3\n for (const n of names) {\n const x = n.toLowerCase() == name.toLowerCase() ? 0 : distance(name, n)\n if (x < d) { d = x; best = n }\n }\n return best\n}\n\nconst tagOf = (el: any): string => el && typeof el.tagName == 'string' ? `<${el.tagName.toLowerCase()}>` : 'element'\n\nconst notACommand = (component: any, name: string, cmd: any) => send('SYG641', {\n component,\n message: `${name} sent ${describeCommand(cmd)} to the ELEMENT sink, which is not a command`,\n fix: `Send { <method>: control or selector, ...options }, e.g. { focus: Email }, or an array of them`,\n data: {command: cmd},\n})\n\n/** SYG640 (no `el`) or SYG641 (an element, but no command of that name) for `cmd` sent by `component` */\nexport function reportElementCommand(component: any, cmd: any, el?: any): void {\n // a disposed instance's pending commands are dropped silently\n if (component && component._disposed) return\n const name = (component && component.name) || 'component'\n const method = cmd && typeof cmd == 'object' ? Object.keys(cmd)[0] : undefined\n if (method === undefined) return notACommand(component, name, cmd)\n const target = cmd[method]\n const what = `ELEMENT ${describeCommand(cmd)}`\n const control = isControl(target) ? keyOf(target) : undefined\n const data: any = {method, command: cmd, ...(control ? {control} : {selector: target == null ? target : String(target)})}\n if (!el) {\n const missing = target == null || target === ''\n return send('SYG640', {\n component,\n message: missing\n ? `${what} in ${name} has no target (${String(target)}), so the command was dropped`\n : `${what} in ${name} matched no element: nothing in ${name}'s own view matches ${control ? `the control ${control}` : `'${String(target)}'`} (waited 1 s), so the command was dropped`,\n fix: missing\n ? `Give the method a control or a selector: { ${method}: Email }`\n : `Render the element in ${name}'s view, or send the command from the component that renders it: a child component's elements are isolated from its parent, and a command reaches only its sender's own elements (in a Collection, each item sends its own)`,\n data,\n })\n }\n // PLAN-5 W-1: the matched element is a widget's host (selector or control target): SYG142 names\n // the widget's declared commands\n const widget = el.__sw?.w\n if (widget) {\n const declared = Object.keys(widget.commands)\n const hint = closest(method, [...declared, ...NATIVE_COMMAND_NAMES])\n return send('SYG142', {\n component,\n message: `${what} in ${name}: the matched ${tagOf(el)} is a widget's host, and the widget declares no '${method}' command` +\n (hint ? ` (did you mean '${hint}'?)` : '') + (declared.length ? `; it declares: ${declared.join(', ')}` : '; it declares none'),\n fix: `Add '${method}' to the widget's commands (defineWidget({ commands: { ${method}: (instance, options) => … } })), or send one it declares`,\n data: {...data, element: tagOf(el), commands: declared},\n })\n }\n const commands = control && target.spec && typeof target.spec == 'object' && target.spec.commands\n ? Object.keys(target.spec.commands) : []\n data.element = tagOf(el)\n if (commands.length) data.commands = commands\n let message: string, fix: string\n if (NATIVE_COMMAND_NAMES.includes(method)) {\n message = `${what} in ${name}: the matched ${tagOf(el)} has no ${method}() method${commands.length ? `, and the control ${control}'s spec declares no '${method}' command (it declares: ${commands.join(', ')})` : ''}`\n fix = /^(show|showModal|close)$/.test(method)\n ? `${method}() works on a <dialog> element: render the target as a <dialog>`\n : /Popover$/.test(method)\n ? `The popover methods need an element with the popover attribute (attrs: { popover: 'auto' }) in a browser with the Popover API`\n : `Target an element that has ${method}()`\n } else {\n const hint = closest(method, [...commands, ...NATIVE_COMMAND_NAMES])\n message = `${what} in ${name}: '${method}' is not an element command` + (hint ? ` (did you mean '${hint}'?)` : '') +\n (el.tagName ? `: the matched ${tagOf(el)} has no such method` : '') +\n (commands.length ? `, and the control ${control}'s spec declares only: ${commands.join(', ')}` : '')\n fix = `Use ${commands.length ? `one of its commands (${commands.join(', ')}) or ` : ''}one of: ${NATIVE_COMMAND_NAMES.join(', ')} (or another method of the element, like play). The first key of a command is the method, the others are its options: { scrollIntoView: Row, block: 'nearest' }`\n }\n send('SYG641', {component, message, fix, data})\n}\n\n// methods that change the DOM snabbdom owns (the next patch undoes them or trips over them)\nconst DOM_MUTATORS = /^(remove|append|prepend|before|after|replaceWith|replaceChildren|appendChild|removeChild|insertBefore|replaceChild|insertAdjacent(Element|HTML|Text)|(set|remove|toggle)Attribute(NS|Node)?|attachShadow|setHTML(Unsafe)?|normalize)$/\n\n/** SYG641 when it is sent: not a command object, or a method that changes the DOM Sygnal renders */\nexport function checkSentCommand(component: any, cmd: any): void {\n if (cmd == null) return\n const name = (component && component.name) || 'component'\n if (typeof cmd != 'object' || Array.isArray(cmd) || !Object.keys(cmd).length) return notACommand(component, name, cmd)\n const method = Object.keys(cmd)[0], target = cmd[method]\n if (!DOM_MUTATORS.test(method) || (isControl(target) && target.spec?.commands?.[method])) return\n send('SYG641', {\n component,\n message: `ELEMENT ${describeCommand(cmd)} in ${name}: ${method}() changes the DOM that ${name}'s view renders, so the next render undoes it or fails`,\n fix: `Change the state and render the result instead; element commands are for what a view can't express (focus, scrolling, dialogs, popovers, media)`,\n data: {method, command: cmd},\n })\n}\n\n/** The dev entry check: checkSentCommand runs on every ELEMENT value through the core's onElementCommand hook (checks/next.ts) */\nexport const elementCommandsCheck: DiagnosticCheck = {\n id: 'elementCommands',\n}\n\n/** Publish the element command hook on the core bridge. Returns an uninstall function. */\nexport function installElementCommandHooks(): () => void {\n const c = core()\n if (!c) return () => {}\n c.elementCommand = reportElementCommand\n return () => { if (c.elementCommand === reportElementCommand) c.elementCommand = undefined }\n}\n","import {start as startNext} from '../core/runtime';\nimport {mockDOMSource} from '../cycle/dom/mockDOMSource';\nimport {makeDOMDriver} from '../cycle/dom/makeDOMDriver';\nimport {enrichEventStream} from '../cycle/dom/enrichEventStream';\nimport eventBusDriver from './eventDriver';\nimport logDriver from './logDriver';\nimport {ownedCopy} from './owned';\nimport {renderToInnerHtml} from './ssr';\nimport {_getDiagnosticsConfig, configureDiagnostics, getDiagnosticsMode, isDiagnosticsEnabled, onDiagnostic, report} from './diagnostics/index';\nimport xs from './xstreamCompat';\nimport {tagRequest, inScope, makeFetchDriver} from './fetchDriver';\nimport {senderOf} from './replies';\nimport {makeSocketDriver} from './socketDriver';\nimport {makeRouter, paramsOf} from './router';\nimport {mergeHead} from './head';\nimport {timerDriver} from './timers';\nimport {browserDriver} from './browserSources';\nimport {makeReplies} from './replies';\nimport type {Stream} from 'xstream';\nimport type {Diagnostic, DiagnosticsMode} from './diagnostics/index';\nimport type {InspectGraph, InspectOptions} from './diagnostics/checks/public';\nimport {actionHooks} from './diagnostics/checks/actionLog';\nimport type {ActionCause, ActionListener, ActionRecord} from './diagnostics/checks/actionLog';\nimport {reportElementCommand, checkSentCommand, NATIVE_COMMAND_NAMES} from './diagnostics/checks/elementCommands';\n\n/*\n * (Docs live on these type-only declarations so the TypeScript emit drops\n * them — keeps them out of the published bundle.)\n *\n * renderComponent(Component, options?) runs a component on a minimal runtime\n * (mock DOM, EVENTS, LOG, STATE + any `drivers`).\n *\n * - simulateEvent(selector, type, init?) sends a synthetic DOM event through\n * the mock DOM source, so the component's real intent streams fire\n * (DOM.click('.x'), DOM.select('.x').events('click'), .value(), .data(), ...).\n * The target is the first rendered element matching `selector`; it is\n * delivered to every listener whose selector matches that element or one of\n * its ancestors in the same isolation scope (bubbling), and to\n * DOM.select('document'|'body') listeners. `simulateEvent('document'|'body', ...)`\n * goes to the listeners with exactly that selector. Selectors match the\n * rendered vnode tree like the real DOM: tag, .class, #id, [attr], [attr=v]\n * (^= $= *= ~=), :first-child, :last-child, :only-child, :nth-child(an+b),\n * :nth-last-child, :*-of-type, :not(), ' ' and '>' combinators, ',' lists\n * (G-070); other syntax (:has(), '+', '~', ...) throws at the call. If no\n * rendered element matches yet, the event waits (up to 300ms, re-tried on\n * every render) for one, then targets the first match. If none appears, the\n * test fails (G-070): the error rejects the pending next()/waitForState()/\n * settle(), or is thrown by the next t.* call or dispose(); when nothing is\n * pending and the tree is quiet it is thrown by simulateEvent itself. With\n * `{allowMissing: true}` it is dropped with SYG103 instead (it is never sent\n * to every listener with that selector string, G-049).\n * It also waits until the listeners it would reach are subscribed (a\n * just-mounted child subscribes a few ms after it renders, G-039).\n * `target.value/checked/dataset` default from the element's\n * vnode (as strings, like the DOM) and are overridden by `init`.\n * - simulateAction(name, data?) pushes `{type: name, data}` into the real\n * intent → model pipeline, so every sink of the model entry runs and hooks /\n * diagnostics see the real action name. (Model actions that have no intent\n * stream get one added under their real name; the injected names are listed\n * on the intent object's non-enumerable `__sygnalTestActions` property.)\n * - simulateAction/simulateEvent calls are delivered in call order. Calls made\n * before the component is subscribed are buffered and replayed once it is\n * ready; `await t.ready()` is an explicit sync point. An event that waits\n * (see above) holds the calls after it.\n * - Waiting: waitForState(pred) matches the recorded history too; next(pred)\n * matches only states emitted after the call; both resolve once the whole\n * tree has rendered the state. settle() resolves once nothing is pending.\n * - Diagnostics: `diagnostics` (default 'collect', or the already-active\n * mode when diagnostics are on) is applied with configureDiagnostics. The\n * explicit config from before the first live instance is restored when the\n * last live instance is disposed (overlapping/nested instances are fine). Most runtime checks live\n * in a separate entry: `import 'sygnal/diagnostics'` in the test (or vitest\n * setupFiles) to enable them. Two DOM checks are built in (G-024), since the\n * real-DOM versions can't run on the mock DOM:\n * - SYG104 (warn): an intent selector matches nothing in its component's own\n * scope but matches elements inside a child component / Collection item\n * (parents can't see those events). Checked after every render and when\n * simulateEvent targets such an element; reported once per component +\n * selector.\n * - SYG103 (info): simulateEvent's selector matches no rendered element and\n * no intent listens on it (typo?).\n *\n * ```js\n * const t = renderComponent(Counter, { initialState: { count: 0 } })\n * t.simulateEvent('.inc', 'click')\n * await t.waitForState(s => s.count === 1)\n * t.dispose()\n * ```\n *\n * Implementation notes:\n * - parse() turns a selector into compounds + combinators (cached; unsupported\n * syntax throws); index() records each vnode's parent and element siblings\n * on every render (for '>' and :nth-*); is(v, compound) matches one vnode;\n * matches(sel, chain) matches the last vnode of an ancestor chain; find()\n * returns the root → element chain of the first match.\n * - port(): producer-backed stream; emitting with no listener is a silent drop.\n * - Sinks named in the model without a driver get a no-op driver so their\n * output stays observable. sinkValues: EVENTS entries drop the devtools\n * stamps, PARENT entries are unwrapped from {name, component, value}.\n * G-064: a descendant's model sink with no driver is recorded from the core's onSink\n * hook and sent to the fake (its replies subscribed in onCreate, G-324; removed in\n * onDispose); a passed driver wins.\n * - G-065: ready() arms a cursor (states.length when the component became\n * ready, or at the call once ready) that the next next() starts from; any\n * other t.* call disarms it.\n * - G-053: timing options eventWaitMs / settleMs / timeoutMs. Model next() calls\n * are seen through the core's onNext hook; wait timeouts name them.\n * - Input is buffered until 12ms after the first render. With no render within 30ms\n * (e.g. a model but no initialState), the 12ms start then. dispose() before ready\n * leaves the buffered calls undelivered. D165/D176: an input's reducer runs when it is\n * delivered, so a next() in the same tick starts at the state it causes; the cursor\n * expires at the next macrotask (G-326).\n * - \"Rendered by the whole tree\" = the root rendered the state and no render,\n * reducer, state or input happened anywhere for 10ms (checked twice; capped at\n * 250ms). Child renders are seen through the core's onRender hook.\n * - dispose() fires the component's DISPOSE action via sinks.__dispose.\n * - E11: fake timers (vi.useFakeTimers(), Jest's modern timers). The harness's own timers are\n * faked with the app's, and its time is the clock's (clockNow). ready()/next()/\n * waitForState()/settle() drive the clock (drive(): nextAsync until the wait settles), so\n * they resolve without the test advancing it; their timeouts are clock time.\n * - E4 `dom: 'real'`: the DOM driver is run()'s makeDOMDriver on a fresh container in\n * document.body; trackSource() wraps its sources so events() calls / subscriptions feed the\n * same listener registry (paths with '.___scope' segments, `_hub`/`_path` like the mock).\n * Real isolation keeps scopes in vnode data.isolate, not in the sel (scopeOfV reads both).\n * simulateEvent finds the element with querySelector (container + mounted Portal content),\n * maps it back to its vnode chain via vnode.elm (G-039 waits, SYG104), and fire()s a real\n * event. The pump runs a macrotask after a render (the patch is a microtask after the sink\n * emits) and each input waits for a QUIET_MS-quiet tree (capped at 100ms).\n * - 4-A1 real-mode waits: the driver's vnode input is gated. Each emitted tree is tagged with\n * the number of states recorded when a view in the tree last ran (viewTag; a render\n * follows the state in the next flush, a microtask later). A wait that matches holds renders of later states, resolves\n * once its state is patched (and the tree is quiet, or a later state arrived), and releases\n * the held render on the next macrotask, so the code after `await` reads the DOM of the\n * state it got. The next next() starts after that state (`shown`), so the held states still\n * match it. ready() resolves after the first patch; query()/queryAll()/html() before the\n * first render throw (G-125).\n * - PLAN-4 2-C (GS-10) t.actions: ./diagnostics/checks/actionLog's actionHooks, a layer of the\n * app's hooks (onAction, wrapHandler), so nothing is in the core. simulateAction() dispatches\n * through the runtime API with the cause 'simulateAction'. t.explain() pairs each action whose\n * STATE reducer produced a value with the next recorded root state.\n * - SYG103/104: the mock DOM source reports each events() call (selector path,\n * isolation scopes included as '.___scope'); the onCreate hook maps each\n * component's innermost scope to its name. The nearest '.___'\n * class on a vnode or its ancestors is the scope that owns it.\n */\n\nexport interface SimulatedEventInit {\n /** Merged into `event.target` (value, checked, dataset, ...) */\n target?: Record<string, any>;\n /** Shorthand for target.value */\n value?: any;\n /** Shorthand for target.checked */\n checked?: boolean;\n /** Merged into target.dataset (values become strings, like the DOM) */\n dataset?: Record<string, any>;\n /** Alias for dataset */\n data?: Record<string, any>;\n /** Keyboard key (e.key) */\n key?: string;\n /**\n * Don't fail when the selector matches no rendered element: wait up to 300ms for it, then\n * drop the event with SYG103 (info). Not copied onto the event.\n */\n allowMissing?: boolean;\n /** Any other event properties are copied onto the event */\n [prop: string]: any;\n}\n\n/**\n * E2 / PLAN-3 1-C: which request a t.respond()/t.fail() answers, as options. An object with\n * only these keys is options; any other object is a request pattern compared by value.\n */\nexport interface FakeReplyOptions {\n /** Only requests with this category */\n category?: string;\n /**\n * The request, compared by value: a request object (among equal pending requests that very\n * object, else the newest), a partial request, a URL string, or a predicate. `null`: push\n * the value without a request (for a source that emits on its own); `category` then sets\n * its category.\n */\n request?: any;\n /** Response status (respond: default 200), or fail(): an HTTP error response with this status */\n status?: number;\n /** fail(): the parsed error body */\n body?: any;\n /**\n * 6-B: that very request by its position in t.requests(name) (counting only those matching\n * `request`/`category`): 0 the first, -1 the newest; throws at the call when it isn't pending\n */\n nth?: number;\n}\n/** E2 / PLAN-3 1-C: a t.respond()/t.fail() target */\nexport type FakeReplyTarget = string | FakeReplyOptions | Record<string, any> | ((request: any) => boolean);\n\n/**\n * PLAN-3 2-C: a connection declared on a fake socket source (t.connections(name)): the spec as\n * declared (`socket` or `sse`, action names, reconnect...) plus where and what it is.\n */\nexport interface FakeConnection {\n /** The connection's name in `{ connections: { [name]: spec } }` */\n name: string;\n /** The URL as declared (`socket` connections) */\n socket?: string;\n /** The URL as declared (`sse` connections) */\n sse?: string;\n /** The URL the socket was opened with (a socket path resolves to ws:/wss: on the page's host) */\n url: string;\n /** 'closed': dropped (t.drop), waiting for a retry or (reconnect: false) gone */\n state: 'connecting' | 'open' | 'closed';\n /** The name of the component that declared it */\n sender: string;\n [key: string]: any;\n}\n/**\n * PLAN-3 2-C: which connections a t.open/t.push/t.drop acts on: a connection name or URL (as\n * declared or as opened), a partial FakeConnection compared by value (`{ socket: '/ws/a' }`),\n * or a predicate. Nothing: the newest one that can take the call.\n */\nexport type FakeConnectionTarget = string | Record<string, any> | ((connection: FakeConnection) => boolean);\n\nexport interface RenderOptions {\n /** Override or provide initial state (defaults to component's .initialState) */\n initialState?: any;\n /**\n * D214: context from the ancestors the rendered component would have, for testing a child\n * alone: `renderComponent(Greeting, { context: { lang: 'fr' } })`. The view, reducers and\n * descendants read it as `context.lang`; the component's own `.context` entries win over a key\n * of the same name. Fixed values for the test's lifetime.\n */\n context?: Record<string, any>;\n /** Mock DOM configuration — maps selectors to event streams */\n mockConfig?: Record<string, any>;\n /** Additional drivers beyond DOM, EVENTS, STATE, and LOG */\n drivers?: Record<string, any>;\n /**\n * Diagnostics mode while the component is rendered. Default: 'collect', or\n * the current mode when diagnostics are already on (e.g. 'error' set in a\n * setup file). Restored on dispose(). SYG103/SYG104 (selector typos and\n * parent selectors that only match inside child components) are checked\n * built in; the other checks require `import 'sygnal/diagnostics'`.\n */\n diagnostics?: DiagnosticsMode;\n /**\n * Strict mode (canonical-form checks SYG501/502/504) while the component is\n * rendered; restored on dispose(). Requires `import 'sygnal/diagnostics'`.\n * Default: unchanged (off unless configureStrict(true) was called).\n */\n strict?: boolean;\n /**\n * settle()'s quiet window in ms (default 20): settle() resolves once nothing in the tree has\n * rendered, reduced or changed state for this long. A model `next('X', data, ms)` with a\n * longer delay fires after settle() resolved; raise this, or wait with t.next(pred).\n */\n settleMs?: number;\n /** How long simulateEvent waits for a matching element / its listeners, in ms (default 300) */\n eventWaitMs?: number;\n /** Default timeout of next(), waitForState() and settle(), in ms (default 2000) */\n timeoutMs?: number;\n /**\n * E4: 'mock' (default) renders into the mock DOM. 'real' patches the tree into a real\n * container element (needs a DOM: Vitest `environment: 'jsdom'` or 'happy-dom'), so\n * `checked`, `value`, `disabled`, focus (`document.activeElement`), refs and Portals are\n * real. simulateEvent then dispatches a real DOM event on the first matching element;\n * `t.container`, `t.query(sel)` and `t.queryAll(sel)` return real elements.\n */\n dom?: 'mock' | 'real';\n /**\n * PLAN-3 2-C: fake socket connections (a sink with no driver that gets `{ connections }`)\n * open by themselves (default true), reconnects included. false: they stay 'connecting' until\n * t.open(), for \"Connecting…\" assertions and failures to open (t.drop on a connecting one).\n */\n autoConnect?: boolean;\n /** PLAN-3 G-160: the driverless sink that receives the `connections` static (default 'WS') */\n socketSink?: string;\n /**\n * PLAN-3 3-A (exp): the driverless sink that receives the `resources` static (default\n * 'HTTP'). Its fake (5-1: makeFetchDriver over an in-memory fetch) keeps each resource fetch\n * pending until t.respond / t.fail (target: the resource name, its URL or a partial request)\n * answers it; t.requests lists it as `{ url, ...request, resource: name }` (5-5: a `{ prefetch }`\n * fetch as `{ url, ...request, prefetch: true }`).\n */\n resourceSink?: string;\n /**\n * PLAN-3 5-3: options for the HTTP fakes' makeFetchDriver (all but `fetch`), e.g.\n * `{ cache: queryCache() }` or `{ cache: queryCache({ staleTime: 30000 }), retry: 2 }` (D88; a\n * seeded cache: `queryCache({ initial: snapshot })`). Focus / reconnect refetches\n * come only from t.focus() / t.online(), never from the test's window.\n */\n http?: Record<string, any>;\n /**\n * PLAN-3 5-4c: the app's router (the object makeRouter() returns). With no driver for\n * `routerSink`, its real driver runs over an in-memory window (location, history with async\n * popstate, document listeners): t.navigate / t.back / t.forward / t.location / t.sent. Required\n * when the component declares `route` (else renderComponent throws, naming this option).\n */\n router?: any;\n /** PLAN-3 5-4c: the router fake's start URL (default '/') */\n url?: string;\n /** PLAN-3 5-4c: the sink the router fake serves (default 'ROUTER') */\n routerSink?: string;\n /** PLAN-3 5-4c: run the router's scroll handling in the fake (default false; positions are kept in memory) */\n routerScroll?: boolean;\n /** PLAN-3 5-4c: run the router's focus handling (default false; true: the router's own selector; a string: selectors) */\n routerFocus?: boolean | string;\n /** PLAN-3 5-4c: the sink the HEAD fake serves (default 'HEAD'); t.head() reads it */\n headSink?: string;\n /** PLAN-4 GS-7: the sink the timer fake serves (default 'TIMER'; the real makeTimerDriver()); t.timers() reads it */\n timerSink?: string;\n /** PLAN-5 B-3: the sink the browser fake serves (default 'BROWSER'); with no driver for it, the real browser driver runs over fake sources that t.browser drives */\n browserSink?: string;\n /** PLAN-5 B-3: the browser fake's environment at start (default: no media query matches, empty storage, visible, online, empty clipboard, no position, nothing denied) */\n browser?: BrowserFakeOptions;\n /** PLAN-3 5-4c: the HEAD fake's titleTemplate ('%s · App'), as makeHeadDriver's */\n titleTemplate?: string;\n /** PLAN-4 GS-11: the app-level error hook, as run()'s `onError` option */\n onError?: (error: any, info: {componentName?: string; action?: string; phase: string; driver?: string}) => void;\n /**\n * PLAN-4 GS-5: the fake storage behind a root's `persist()` ('local' and 'session' alike), as\n * key -> stored entry (`{ version, state }`, or a raw string). It is used as is, not copied:\n * writes land in it, and two renderComponent calls given the same object share one storage\n * (`sync: true` then applies one's writes in the other). Default: a new empty object.\n */\n storage?: Record<string, any>;\n}\n\n/**\n * PLAN-4 2-C (GS-10): one action in t.actions. `sinks` fills in as the action's reducers run\n * (STATE a microtask later), so the entry is live.\n */\nexport interface TestAction {\n /** The action name (a behavior's actions are namespaced, `pager.NEXT`) */\n type: string;\n /** Its data (the DOM event for a DOM intent stream) */\n data: any;\n /** The name of the component that ran it */\n component: string;\n /** That component instance's id (stable for its life; inspect()'s component id) */\n instance: string;\n /** The sinks that produced a value for it: not ABORT; STATE not the unchanged state; EFFECT when it ran */\n sinks: string[];\n /** Where it came from */\n cause: ActionCause;\n /** ms since renderComponent() was called (the fake clock under fake timers) */\n at: number;\n}\nexport type {ActionCause};\n/** PLAN-4 2-C: what t.explain() returns: the action, the root state it produced, and its STATE reducer */\nexport interface ExplainedAction extends TestAction {\n /** The first recorded root state after the action's STATE reducer ran */\n state: any;\n /** The STATE reducer: the model's function and its source text (JS exposes no source location) */\n reducer?: {action: string; sink: string; fn: Function; source: string};\n}\n\n/** PLAN-3 5-4c: what t.navigate takes: an href, or a route command */\nexport type FakeNavigateTarget = string | {to: string; params?: Record<string, any>; query?: Record<string, any>; hash?: string; replace?: boolean};\n\nexport interface RenderResult {\n /** Stream of state values */\n state$: Stream<any>;\n /** Stream of rendered VNode trees */\n dom$: Stream<any>;\n /** Event bus source — call .select(type) to filter */\n events$: any;\n /** All sink streams by driver name */\n sinks: Record<string, any>;\n /** All source objects by driver name */\n sources: Record<string, any>;\n /** Push an action into the intent→model pipeline (all sinks of the entry run) */\n simulateAction: (actionName: string, data?: any) => void;\n /** Dispatch a synthetic DOM event through the mock DOM source */\n simulateEvent: (selector: string, eventType: string, eventInit?: SimulatedEventInit) => void;\n /**\n * Resolves once the component is subscribed and rendered (earlier calls are buffered and\n * replayed). Also a cursor (G-065): the first next() after `await t.ready()` also matches the\n * states the replayed calls produced, unless another t.* call came in between.\n */\n ready: () => Promise<void>;\n /**\n * Wait for a state that satisfies the predicate, searching the HISTORY first: a state\n * recorded before the call matches too (e.g. `count === 0` right after a reset resolves\n * at once with the initial state). Resolves with the matching state once the whole tree\n * (children included) has rendered it. Use next() to match only new states.\n */\n waitForState: (predicate: (state: any) => boolean, timeoutMs?: number) => Promise<any>;\n /**\n * Wait for the next state emitted AFTER this call (or, right after `await t.ready()`, after\n * the component became ready) that satisfies the predicate (default: any). Resolves with it\n * once the whole tree (children included) has rendered it. The timeout error names a model\n * next() still scheduled, and a recorded state that already matched. `dom: 'real'` (4-A1):\n * right after another wait (no input in between) it starts after that wait's state.\n */\n next: (predicate?: (state: any) => boolean, timeoutMs?: number) => Promise<any>;\n /**\n * Resolves when the component is quiet: ready, no simulated input pending, and no render,\n * reducer or state change anywhere in the tree for `settleMs` (default 20; covers a model\n * next()'s default 10ms delay). Rejects after timeoutMs (default 2000) if it never calms down.\n */\n settle: (timeoutMs?: number) => Promise<void>;\n /** Collected state values — grows as new states are emitted */\n states: any[];\n /**\n * PLAN-4 2-C (GS-10): every action the rendered tree ran (children and Collection items\n * included), in order: `{ type, data, component, instance, sinks, cause, at }`. cause is\n * 'intent' | 'next' | 'reply' | 'built-in' | 'simulateAction' | 'behavior'. Live array.\n */\n actions: TestAction[];\n /**\n * PLAN-4 2-C: the first action whose resulting root state matches `predicate`, with that state\n * and its STATE reducer (function and source text); undefined when none did.\n */\n explain: (predicate: (state: any) => boolean) => ExplainedAction | undefined;\n /** G-125: the latest recorded state (`states.at(-1)`; undefined before the first). Read-only */\n readonly state: any;\n /**\n * Live array of values emitted on a sink (EVENTS, PARENT, custom drivers, ...). A custom sink\n * with no driver is recorded for every component in the tree (children included, G-064).\n */\n sinkValues: (sinkName: string) => any[];\n /**\n * E2: the requests sent to a sink (live), as objects (G-171: a string is `{ url }`, a resource\n * fetch `{ url, ...request, resource: name }`); never `{ abort }` commands (G-141), `{ resources }`\n * declarations or `{ refresh }` commands. Answer the pending ones of a driverless sink with\n * respond() / fail().\n */\n requests: (sinkName: string) => any[];\n /**\n * E2 / PLAN-3 1-C / 5-1: answer a pending request on a fake source (a sink/source with no\n * driver, e.g. `HTTP` with no `drivers: { HTTP }`: makeFetchDriver over an in-memory fetch) with\n * a response whose body is `value` (JSON; text for a string): a request with reply actions\n * (`ok: 'LOADED'`) gets the parsed body as its LOADED action, on exactly its sender; a plain one\n * `{ category, value, status, request }` on `select()`. The request: the newest pending one\n * matching `target` (an ok/error action name, key, category, resource name or URL; a partial\n * request compared by value with its t.requests form; a predicate; FakeReplyOptions), or the\n * newest pending one. Throws at the call when\n * none matches, unless input is still queued before it or the component isn't ready: then\n * it waits up to 1s (half of timeoutMs if lower) for one. Resolves after the reply has been\n * reduced and rendered; rejects (and, un-awaited, fails the next wait) otherwise.\n */\n respond: (sinkName: string, value: any, target?: FakeReplyTarget) => Promise<void>;\n /**\n * E2 / PLAN-3 1-C: fail a pending request (chosen as in respond()): one with reply actions\n * (`error: 'FAILED'`) gets `{ error, request, status?, body? }` as its FAILED action; an\n * plain one `{ error, category, request, status, body }` on `errors()`. `error` may be an HTTP\n * status number or `{ status }` (an error response: the driver's Error 'HTTP 404: url' with\n * `status`/`body`), or an Error / message (a network failure: the fetch rejects with it).\n */\n fail: (sinkName: string, error: any, target?: FakeReplyTarget) => Promise<void>;\n /**\n * PLAN-3 2-C: a sink with no driver that gets `{ connections }` / `{ to }` values behaves like\n * makeSocketDriver (reply actions for open/message/close/error, diffed per component and name, shared by\n * URL, reconnect per spec on the test's timers). The connections declared now, in order.\n */\n connections: (sinkName: string) => FakeConnection[];\n /**\n * PLAN-3 5-3: the cache entries of an HTTP fake (renderComponent(C, { http: { cache: queryCache() } })):\n * `{ key, age, stale, subscribers, data, tags }` each (age in ms; undefined before data arrives);\n * [] without a queryCache\n */\n cache: (sinkName: string) => Array<{key: string; age?: number; stale: boolean; subscribers: number; data: any; tags?: string[]}>;\n /** PLAN-3 5-3: the window regains focus (queued like simulate*): stale mounted resources refetch (cache on) */\n focus: () => void;\n /** PLAN-3 5-3: the browser goes back online (queued like simulate*): stale mounted resources refetch (cache on) */\n online: () => void;\n /** PLAN-3 2-C: complete the open of connecting connection(s) (`autoConnect: false`, or a pending reconnect): `open` fires */\n open: (sinkName: string, target?: FakeConnectionTarget) => Promise<void>;\n /**\n * PLAN-3 2-C: the server sends `data` (objects as JSON text) on the open connection(s): `message`\n * fires (the data JSON-parsed when it parses). `{ event, connection? }`: an SSE named event.\n */\n push: (sinkName: string, data: any, target?: FakeConnectionTarget | {event?: string; connection?: FakeConnectionTarget}) => Promise<void>;\n /**\n * PLAN-3 2-C: the connection(s) close without the app closing them (a connecting one fails to\n * open: `error` first): `close` fires with `{ code, reason, willReconnect }` and the fake\n * reconnects per the spec. `close` defaults to `{ code: 1006, reason: '' }`.\n */\n drop: (sinkName: string, close?: {code?: number; reason?: string} | FakeConnectionTarget, target?: FakeConnectionTarget) => Promise<void>;\n /** PLAN-3 2-C: the `{ to, json | text | binary }` values the components sent (live; with `to`: those to that connection) */\n sent: (sinkName: string, to?: string) => any[];\n /**\n * PLAN-3 5-4c (router fake): navigate as a link click (a URL) or a command (`{ to, params,\n * query?, hash?, replace? }`) would, through `block`. Throws at the call for an unknown route,\n * a missing param or another origin; resolves once reduced and rendered.\n */\n navigate: (target: FakeNavigateTarget) => Promise<void>;\n /** PLAN-3 5-4c: the browser's back button on the in-memory history (throws with no entry to go back to) */\n back: () => Promise<void>;\n /** PLAN-3 5-4c: the browser's forward button */\n forward: () => Promise<void>;\n /** PLAN-3 5-4c: the in-memory location */\n readonly location: {path: string; search: string; hash: string; href: string};\n /** PLAN-3 5-4c: the HEAD fake's merged head (titleTemplate applied) */\n head: () => {title: string | undefined; meta: Record<string, any>; link: any[]};\n /** PLAN-4 GS-7: the timer fake's active timers, in start order: `{ name, every | after | frame, action, background?, component }` */\n timers: () => Array<Record<string, any>>;\n /** PLAN-5 B-3: the browser fake's controls (see BrowserFake) */\n browser: BrowserFake;\n /** PLAN-4 GS-5: the fake storage's entry for `key` (`{ version, state }`), undefined when none. Pending writes are flushed by t.settle() */\n storage: (key: string) => any;\n /** Live array of EVENTS sink emissions ({type, data}) */\n emitted: any[];\n /** Live array of diagnostics reported while rendered */\n diagnostics: Diagnostic[];\n /**\n * PLAN-4 GS-2: the element commands (`ELEMENT`) the tree's instances sent, one entry per\n * command (arrays flattened), as sent: `[{ focus: Email }]` (a sygnal/ui dialog / popover\n * command as its selector: `{ showModal: '.profile' }`). The mock DOM only records them;\n * `dom: 'real'` also runs them. Any other sink name: its sinkValues.\n */\n commands: (sinkName?: string) => any[];\n /** Throws (with the formatted texts) if any warn/error diagnostics were collected */\n expectNoDiagnostics: () => void;\n /**\n * Latest rendered VNode serialized to HTML. G-125: throws before the first render (await\n * t.ready() first); '' for a component that renders nothing.\n */\n html: () => string;\n /** Tear down the component, clean up listeners and restore the diagnostics mode */\n dispose: () => void;\n /**\n * The app graph (2B) of the rendered tree: components, actions, selectors (with the mock DOM's\n * match / isolation results), EVENTS and diagnostics. Requires `import 'sygnal/diagnostics'`.\n */\n inspect: (options?: Pick<InspectOptions, 'actions'>) => InspectGraph;\n /** `{ dom: 'real' }`: the element the tree is mounted in (removed on dispose()); else null */\n container: Element | null;\n /**\n * The first element matching a selector in the rendered tree (Portal content included), or\n * null. `{ dom: 'real' }`: the real element (`document.activeElement === t.query(...)`). 6-B:\n * the mock DOM gives a MockElement, a snapshot of what the view rendered (`.textContent`,\n * `.value`, `.checked`, `.disabled`, getAttribute, querySelector...). Throws before the first\n * render (await t.ready() first). 4-A1: after `await` of any wait, it shows the state the wait\n * resolved with (a later render is held back until the next macrotask).\n */\n query: (selector: string) => Element | null;\n /** Every element matching a selector in the rendered tree (Portals included), as query() */\n queryAll: (selector: string) => Element[];\n /**\n * PLAN-5 W-1: a widget's host by selector or control: `.props` (what the view passed it),\n * `.instance` (`dom: 'real'`: what mount returned) and `.dispatch(name, detail)` (the event\n * mount's `dispatch` sends, through simulateEvent; D201: `.emit` is an alias)\n */\n widget: (target: any) => {readonly props: any; readonly instance: any; dispatch: (name: string, detail?: any) => void; emit: (name: string, detail?: any) => void};\n}\n\nconst isScope = (s: string) => s.startsWith('.___');\n/** CT-1: a control (controls()) as its selector, [data-control=\"<Key>\"]; anything else as is */\nconst selOf = (s: any) => typeof s == 'function' && s.__sygnalControl ? '' + s : s;\n/** a listener path's selector text (isolation scopes dropped, whitespace normalized) */\nconst selText = (path: string[]) => norm(path.filter(s => !isScope(s)).join(' '));\nconst norm = (s: string) => s.trim().replace(/\\s*>\\s*/g, ' > ').replace(/\\s+/g, ' ');\n/** 'document' / 'body' (optionally followed by more) name a page listener, not an element */\nconst PAGE = /^(document|body)(\\s+|$)/;\nconst str = (o: any) => {\n const r: any = {};\n for (const k in o) if (o[k] != null) r[k] = String(o[k]);\n return r;\n};\n\n// ── Selector engine (G-070) ──────────────────────────────────────────────────\n// Matches the rendered vnode tree with real-DOM semantics. Anything not listed in\n// SUPPORTED throws \"unsupported selector syntax\" instead of silently matching nothing.\ntype Pseudo = {k: string; a: number; b: number; last?: boolean; type?: boolean; not?: Sel};\ntype Compound = {tag?: string; id?: string; cls: string[]; attrs: [string, string, string?][]; ps: Pseudo[]};\ntype Complex = {parts: Compound[]; combs: string[]};\ntype Sel = Complex[];\nconst SUPPORTED = \"tag, *, .class, #id, [attr], [attr=\\\"v\\\"] (also ^= $= *= ~=), :first-child, :last-child, :only-child, :nth-child(an+b|odd|even), :nth-last-child(), :first-of-type, :last-of-type, :only-of-type, :nth-of-type(), :nth-last-of-type(), :not(...), :checked, :disabled, :enabled, the descendant (' ') and child ('>') combinators, ',' lists\";\nconst IDENT = /^(?:[\\w-]|\\\\.)+/;\nconst STATES = ['checked', 'disabled', 'enabled'];\nconst FORM = ['button', 'input', 'select', 'textarea', 'option', 'optgroup', 'fieldset'];\nconst unesc = (x: string) => x.replace(/\\\\(.)/g, '$1');\nconst parsed = new Map<string, Sel | Error>();\nfunction parse(src: string): Sel {\n let r = parsed.get(src);\n if (!r) {\n try { r = parseSel(src); } catch (e: any) { r = e; }\n parsed.set(src, r!);\n }\n if (r instanceof Error) throw r;\n return r!;\n}\nconst tryParse = (src: string): Sel | undefined => { try { return parse(src); } catch (_) { return undefined; } };\nfunction parseSel(src: string): Sel {\n let i = 0;\n const bad = (what: string): never => {\n const e: any = new Error(`[Sygnal] Unsupported selector syntax in '${src}': ${what}. Supported: ${SUPPORTED}. Or give the element an attribute and select it, e.g. [data-id=\"3\"]. With renderComponent(C, { dom: 'real' }) any CSS selector works`);\n e.unsupported = true;\n throw e;\n };\n const ws = () => { const n = src.slice(i).match(/^\\s*/)![0].length; i += n; return n > 0; };\n const ident = (what: string) => {\n const m = src.slice(i).match(IDENT);\n if (!m) return bad(`expected ${what} at '${src.slice(i) || 'end'}'`);\n i += m[0].length;\n return unesc(m[0]);\n };\n const anb = (arg: string): [number, number] => {\n const x = arg.trim().toLowerCase().replace(/\\s+/g, '');\n if (x == 'odd') return [2, 1];\n if (x == 'even') return [2, 0];\n if (/^[+-]?\\d+$/.test(x)) return [0, +x];\n const m = x.match(/^([+-]?\\d*)n([+-]\\d+)?$/);\n if (!m) return bad(`'${arg}' is not an+b`);\n return [m[1] == '' || m[1] == '+' ? 1 : m[1] == '-' ? -1 : +m[1], m[2] ? +m[2] : 0];\n };\n const compound = (): Compound => {\n const c: Compound = {cls: [], attrs: [], ps: []};\n const from = i;\n if (src[i] == '*') i++;\n else if (IDENT.test(src.slice(i))) c.tag = ident('tag').toLowerCase();\n for (;;) {\n const ch = src[i];\n if (ch == '.') { i++; c.cls.push(ident('a class name')); }\n else if (ch == '#') { i++; c.id = ident('an id'); }\n else if (ch == '[') {\n const m = src.slice(i).match(/^\\[\\s*((?:[\\w-]|\\\\.)+)\\s*(?:([~^$*|]?=)\\s*(?:\"([^\"]*)\"|'([^']*)'|((?:[\\w-]|\\\\.)+))\\s*)?\\]/);\n if (!m) return bad(`attribute selector '${src.slice(i)}'`);\n if (m[2] == '|=') bad(\"the '|=' attribute operator\");\n i += m[0].length;\n c.attrs.push([unesc(m[1]), m[2] || '', m[2] ? (m[3] ?? m[4] ?? unesc(m[5])) : undefined]);\n } else if (ch == ':') {\n if (src[i + 1] == ':') bad('pseudo-elements');\n i++;\n const k = ident('a pseudo-class').toLowerCase();\n let arg: string | undefined;\n if (src[i] == '(') {\n let depth = 0, j = i;\n for (; j < src.length; j++) {\n if (src[j] == '(') depth++;\n else if (src[j] == ')' && !--depth) break;\n }\n if (j >= src.length) bad(`unclosed ':${k}('`);\n arg = src.slice(i + 1, j);\n i = j + 1;\n }\n const p: Pseudo = {k, a: 0, b: 1};\n const m = k.match(/^(?:(first|last|only)|nth(-last)?)-(child|of-type)$/);\n if (m && (arg === undefined) == !!m[1]) {\n p.type = m[3] == 'of-type';\n if (m[1] == 'only') p.k = 'only';\n else if (m[1]) p.last = m[1] == 'last';\n else {\n if (/\\bof\\b/.test(arg!)) bad(`':${k}(... of S)'`);\n [p.a, p.b] = anb(arg!);\n p.last = !!m[2];\n }\n } else if (STATES.includes(k) && arg === undefined) {\n // 6-B: element state, as the view rendered it\n } else if (k == 'not' && arg !== undefined) {\n p.not = parse(arg);\n if (p.not.some(cx => cx.parts.length > 1)) bad(\"combinators inside ':not()'\");\n } else bad(`':${k}${arg === undefined ? '' : '(' + arg + ')'}'`);\n c.ps.push(p);\n } else break;\n }\n if (i == from) bad(`unexpected '${src[i] || 'end of selector'}'`);\n return c;\n };\n const out: Sel = [];\n ws();\n if (i >= src.length) return out;\n for (;;) {\n const cx: Complex = {parts: [compound()], combs: []};\n for (;;) {\n const space = ws();\n const ch = src[i];\n if (i >= src.length || ch == ',') break;\n if (ch == '+' || ch == '~') bad(`the '${ch}' combinator`);\n if (ch == '>') { i++; ws(); cx.combs.push('>'); }\n else if (space) cx.combs.push(' ');\n else bad(`unexpected '${ch}'`);\n cx.parts.push(compound());\n }\n out.push(cx);\n if (i >= src.length) return out;\n i++; // ','\n ws();\n }\n}\n\n/** element children of a vnode (fragments flattened, text and comments skipped) */\nfunction kids(v: any): any[] {\n const out: any[] = [];\n for (const k of [].concat(v.children || [])) {\n if (!k || typeof k != 'object') continue;\n if ((k as any).sel) { if ((k as any).sel != '!') out.push(k); }\n else if ((k as any).children) out.push(...kids(k));\n }\n return out;\n}\n// parent + element siblings of each vnode of the latest rendered tree (for '>' and :nth-*)\nconst meta = new WeakMap<any, {p: any; sibs: any[]}>();\nfunction index(root: any) {\n if (!root || typeof root != 'object') return;\n const walk = (v: any) => {\n for (const ks of [kids(v), kids({children: v.data?.portalChildren || []})]) {\n for (const k of ks) { meta.set(k, {p: v, sibs: ks}); walk(k); }\n }\n };\n const tops = root.sel ? [root] : kids(root);\n for (const t of tops) { meta.set(t, {p: undefined, sibs: tops}); walk(t); }\n}\nconst tagOf = (v: any) => v.sel.split(/[.#]/)[0].toLowerCase();\nfunction is(v: any, c: Compound): boolean {\n const d = v.data || {}, p = d.props || {}, a = d.attrs || {};\n const [tagId, ...cls] = v.sel.split('.');\n const [tag, sid] = tagId.split('#');\n if (c.tag && tag.toLowerCase() != c.tag) return false;\n const id = sid || p.id || a.id;\n if (c.id !== undefined && id != c.id) return false;\n if (c.cls.length) {\n const classes = cls.concat(\n `${p.className || ''} ${a.class || ''}`.split(' '),\n Object.keys(d.class || {}).filter(k => d.class[k])\n );\n if (!c.cls.every(n => classes.includes(n))) return false;\n }\n for (const [name, op, val] of c.attrs) {\n const raw = name == 'id' ? id\n : name in a ? a[name]\n : name in p ? p[name]\n : name.startsWith('data-') ? str(d.dataset)[name.slice(5).replace(/-(\\w)/g, (_: any, l: string) => l.toUpperCase())]\n : undefined;\n if (raw == null || raw === false) return false;\n const x = String(raw);\n if (op && !(op == '=' ? x == val\n : !val ? false\n : op == '^=' ? x.startsWith(val)\n : op == '$=' ? x.endsWith(val)\n : op == '*=' ? x.includes(val)\n : x.split(/\\s+/).includes(val))) return false;\n }\n for (const ps of c.ps) {\n if (ps.not) { if (matches(ps.not, [v])) return false; continue; }\n if (STATES.includes(ps.k)) {\n if (ps.k == 'checked' ? !flag(v, 'checked') && !(tagOf(v) == 'option' && flag(v, 'selected')) : !FORM.includes(tagOf(v)) || flag(v, 'disabled') == (ps.k == 'enabled')) return false;\n continue;\n }\n let sibs = (meta.get(v) || {sibs: [v]}).sibs;\n if (ps.type) sibs = sibs.filter(s => tagOf(s) == tagOf(v));\n if (ps.k == 'only') { if (sibs.length != 1) return false; continue; }\n const n = sibs.indexOf(v), pos = ps.last ? sibs.length - n : n + 1;\n if (ps.a == 0 ? pos != ps.b : (pos - ps.b) / ps.a < 0 || (pos - ps.b) % ps.a != 0) return false;\n }\n return true;\n}\n/** does the last of `els` (an ancestor chain, root first, maybe scope-filtered) match `sel`? */\nfunction matches(sel: Sel, els: any[]): boolean {\n const at = (cx: Complex, j: number, i: number): boolean => {\n if (i < 0 || !is(els[i], cx.parts[j])) return false;\n if (j == 0) return true;\n if (cx.combs[j - 1] == '>') {\n const m = meta.get(els[i]);\n return i > 0 && (!m || els[i - 1] === m.p) && at(cx, j - 1, i - 1);\n }\n for (let k = i - 1; k >= 0; k--) if (at(cx, j - 1, k)) return true;\n return false;\n };\n return sel.some(cx => at(cx, cx.parts.length - 1, els.length - 1));\n}\n/** root → element chain of the first element (document order) matching `sel` */\nfunction find(v: any, sel: Sel, chain: any[] = []): any[] | undefined {\n if (!v || typeof v != 'object') return;\n const c = v.sel ? chain.concat(v) : chain;\n if (v.sel && matches(sel, c)) return c;\n // a <Portal>'s content is rendered elsewhere; it is kept on its placeholder\n for (const k of [].concat(v.children || [], v.data?.portalChildren || [])) {\n const r = find(k, sel, c);\n if (r) return r;\n }\n}\n/** root → element chains of every element (document order) matching `sel`, below `v` (and `v` with `self`) */\nfunction findAll(v: any, sel: Sel, chain: any[], out: any[][], self = true): any[][] {\n if (!v || typeof v != 'object') return out;\n const c = v.sel ? chain.concat(v) : chain;\n if (v.sel && self && matches(sel, c)) out.push(c);\n for (const k of [].concat(v.children || [], v.data?.portalChildren || [])) findAll(k, sel, c, out);\n return out;\n}\n\n// ── Mock elements (PLAN-3 6-B, G-185) ────────────────────────────────────────\n// t.query() / t.queryAll() on the mock DOM return these: read-only snapshots of one rendered\n// vnode with the common Element reads (text, attributes, classes, form state, traversal,\n// querySelector). They show what the view rendered: an input's value is its `value` prop, a\n// checkbox is checked when the view says so; nothing is typed, focused or laid out.\nconst PROP_OF: Record<string, string> = {class: 'className', for: 'htmlFor', readonly: 'readOnly', tabindex: 'tabIndex'};\n/** a boolean property (checked, disabled, ...) as rendered: the prop, else the attribute */\nfunction flag(v: any, name: string): boolean {\n const d = v.data || {}, p = d.props || {}, a = d.attrs || {};\n if (name in p) return !!p[name];\n const x = name in a ? a[name] : a[name.toLowerCase()];\n return x != null && x !== false;\n}\nfunction classesOf(v: any): string[] {\n const d = v.data || {}, p = d.props || {}, a = d.attrs || {};\n const all: string[] = v.sel.split('#').flatMap((x: string) => x.split('.').slice(1)).concat(\n `${p.className || ''} ${a.class || ''}`.split(/\\s+/), Object.keys(d.class || {}).filter(k => d.class[k]));\n return all.filter((c, i) => c && !c.startsWith('___') && all.indexOf(c) == i);\n}\n/** an attribute as getAttribute() reads it (null: absent) */\nfunction attrOf(v: any, name: string): string | null {\n const d = v.data || {}, p = d.props || {}, a = d.attrs || {};\n const n = name.toLowerCase();\n if (n == 'class') { const c = classesOf(v); return c.length ? c.join(' ') : null; }\n if (n == 'id' && v.sel.includes('#')) return v.sel.split('#')[1].split('.')[0];\n const x = name in a ? a[name] : n in a ? a[n]\n : name in p ? p[name] : PROP_OF[n] && PROP_OF[n] in p ? p[PROP_OF[n]]\n : n.startsWith('data-') ? (d.dataset || {})[n.slice(5).replace(/-(\\w)/g, (_: any, l: string) => l.toUpperCase())]\n : undefined;\n return x == null || x === false ? null : x === true ? '' : String(x);\n}\nfunction textOf(v: any): string {\n if (v == null || typeof v == 'boolean') return '';\n if (typeof v != 'object') return String(v);\n if (v.sel == '!') return '';\n return (v.text != null ? String(v.text) : '') + [].concat(v.children || []).map(textOf).join('');\n}\nconst mockEls = new WeakMap<any, MockElement>();\n/** the MockElement for the last vnode of a root → element chain */\nconst mockOf = (chain: any[], html: (v: any) => string): MockElement =>\n chain.reduce((parent: MockElement | null, v: any) => {\n const m = mockEls.get(v);\n return m && m._p === parent ? m : new MockElement(v, parent, html);\n }, null)!;\nclass MockElement {\n declare readonly nodeType: 1;\n declare private _v: any;\n declare readonly _p: MockElement | null;\n declare private _html: (v: any) => string;\n constructor(v: any, parent: MockElement | null, html: (v: any) => string) {\n Object.defineProperties(this, {_v: {value: v}, _p: {value: parent}, _html: {value: html}, nodeType: {value: 1}});\n mockEls.set(v, this);\n }\n private chain(): any[] {\n const c: any[] = [];\n for (let e: MockElement | null = this; e; e = e._p) c.unshift(e._v);\n return c;\n }\n get tagName() { return tagOf(this._v).toUpperCase(); }\n get nodeName() { return this.tagName; }\n get localName() { return tagOf(this._v); }\n get id() { return attrOf(this._v, 'id') ?? ''; }\n get className() { return classesOf(this._v).join(' '); }\n get classList() {\n const c = classesOf(this._v);\n return Object.assign(c, {contains: (x: string) => c.includes(x), item: (i: number) => c[i] ?? null, value: c.join(' ')});\n }\n get dataset() {\n const d = this._v.data || {}, out: Record<string, string> = {...str(d.dataset)};\n for (const src of [d.props || {}, d.attrs || {}]) {\n for (const k in src) if (k.startsWith('data-') && src[k] != null) out[k.slice(5).replace(/-(\\w)/g, (_: any, l: string) => l.toUpperCase())] = String(src[k]);\n }\n return out;\n }\n get style() { return {...(this._v.data?.style || {})}; }\n get textContent() { return textOf(this._v); }\n get innerText() { return this.textContent; }\n get outerHTML() { return this._html(this._v); }\n get innerHTML() {\n const o = this.outerHTML, end = `</${this.localName}>`;\n return o.endsWith(end) ? o.slice(o.indexOf('>') + 1, -end.length) : '';\n }\n get value(): string {\n const v = this._v, p = v.data?.props || {}, tag = this.localName;\n if (p.value != null) return String(p.value);\n const a = attrOf(v, 'value');\n if (a !== null) return a;\n if (tag == 'textarea' || tag == 'option') return this.textContent;\n if (tag == 'select') {\n const o = this.querySelector('option:checked') || this.querySelector('option');\n return o ? o.value : '';\n }\n return tag == 'input' && /^(checkbox|radio)$/.test(this.type) ? 'on' : '';\n }\n get checked() { return flag(this._v, 'checked'); }\n get selected() { return flag(this._v, 'selected'); }\n get disabled() { return flag(this._v, 'disabled'); }\n get readOnly() { return flag(this._v, 'readOnly') || flag(this._v, 'readonly'); }\n get required() { return flag(this._v, 'required'); }\n get hidden() { return flag(this._v, 'hidden'); }\n get type() { return attrOf(this._v, 'type') ?? (this.localName == 'input' ? 'text' : this.localName == 'button' ? 'submit' : ''); }\n get name() { return attrOf(this._v, 'name') ?? ''; }\n /** as written in the view (a real <a>'s href is absolute) */\n get href() { return attrOf(this._v, 'href') ?? ''; }\n get src() { return attrOf(this._v, 'src') ?? ''; }\n get placeholder() { return attrOf(this._v, 'placeholder') ?? ''; }\n get title() { return attrOf(this._v, 'title') ?? ''; }\n get alt() { return attrOf(this._v, 'alt') ?? ''; }\n get htmlFor() { return attrOf(this._v, 'for') ?? ''; }\n getAttribute(name: string) { return attrOf(this._v, name); }\n hasAttribute(name: string) { return attrOf(this._v, name) !== null; }\n get parentElement() { return this._p; }\n get children(): MockElement[] { return kids(this._v).map(k => mockOf([...this.chain(), k], this._html)); }\n get childElementCount() { return this.children.length; }\n get firstElementChild() { return this.children[0] ?? null; }\n get lastElementChild() { const c = this.children; return c[c.length - 1] ?? null; }\n matches(selector: string) { return matches(parse(norm(selector)), this.chain()); }\n closest(selector: string): MockElement | null {\n const sel = parse(norm(selector));\n for (let e: MockElement | null = this; e; e = e._p) if (matches(sel, e.chain())) return e;\n return null;\n }\n querySelectorAll(selector: string): MockElement[] {\n return findAll(this._v, parse(norm(selector)), this.chain().slice(0, -1), [], false).map(ch => mockOf(ch, this._html));\n }\n querySelector(selector: string): MockElement | null { return this.querySelectorAll(selector)[0] ?? null; }\n /** vitest / pretty-format print an element as its HTML */\n toJSON() { return this.outerHTML; }\n // no events, focus or layout on a snapshot\n focus(): never { throw realOnly('focus'); }\n blur(): never { throw realOnly('blur'); }\n click(): never { throw realOnly('click'); }\n dispatchEvent(_e?: any): never { throw realOnly('dispatchEvent'); }\n addEventListener(..._a: any[]): never { throw realOnly('addEventListener'); }\n getBoundingClientRect(): never { throw realOnly('getBoundingClientRect'); }\n}\nconst realOnly = (fn: string) => new Error(`[Sygnal] element.${fn}(): t.query() on the default mock DOM returns a snapshot of what the view rendered. Fire events with t.simulateEvent(selector, type), or use real elements: renderComponent(C, { dom: 'real' })`);\n\n/**\n * The isolation scope a vnode starts ('.___scope'): the mock DOM appends it to the sel, the\n * real DOM driver's isolateSink puts it last in data.isolate (E4).\n */\nfunction scopeOfV(v: any): string | undefined {\n const m = v.sel.match(/\\.___[^.#]+/);\n if (m) return m[0];\n const iso = v.data?.isolate;\n return iso && iso.length ? '.___' + iso[iso.length - 1].scope : undefined;\n}\n/** root → element chain of the vnode patched into `el` (E4, real DOM) */\nfunction chainOf(v: any, el: any, chain: any[] = []): any[] | undefined {\n if (!v || typeof v != 'object') return;\n const c = v.sel ? chain.concat(v) : chain;\n if (v.sel && v.elm === el) return c;\n for (const k of [].concat(v.children || [], v.data?.portalChildren || [])) {\n const r = chainOf(k, el, c);\n if (r) return r;\n }\n}\n\n// ── Real DOM (E4) ────────────────────────────────────────────────────────────\nconst INNER = Symbol('sygnal.testing.inner');\n/**\n * Wraps a real DOM source (MainDOMSource / DocumentDOMSource / BodyDOMSource) so its events()\n * calls and subscriptions are reported like the mock's (G-039 waits, SYG103/104 bookkeeping),\n * with the same '.___scope' path; everything else is the real source.\n */\nfunction trackSource(inner: any, path: string[], hub$: any, on: (path: string[], type: string, live?: boolean) => void): any {\n const own: any = {\n [INNER]: inner,\n _hub: hub$,\n _path: path,\n select: (sel: any) => trackSource(inner.select(sel), path.concat(selOf(sel)), hub$, on),\n events: (type: string, options?: any, bubbles?: boolean) => {\n on(path, type);\n const ev$ = inner.events(type, options, bubbles);\n let l: any;\n const out = enrichEventStream(xs.create({\n start: (x: any) => {\n ev$.addListener(l = {next: (v: any) => x.next(v), error: (e: any) => x.error(e), complete: () => x.complete()});\n on(path, type, true);\n },\n stop: () => { ev$.removeListener(l); on(path, type, false); },\n }));\n out._isCycleSource = ev$._isCycleSource;\n return out;\n },\n };\n if (typeof inner.isolateSource == 'function') {\n own.isolateSource = (source: any, scope: string) =>\n trackSource(inner.isolateSource(source[INNER] || source, scope), (source._path || path).concat('.___' + scope), hub$, on);\n }\n return new Proxy(inner, {\n get: (t, k) => k in own ? own[k] : typeof t[k] == 'function' ? t[k].bind(t) : t[k],\n has: (t, k) => k in own || k in t,\n });\n}\n// events the browser fires without bubbling (cf. eventTypesThatDontBubble; submit/reset do bubble)\nconst NO_BUBBLE = /^(blur|focus|mouseenter|mouseleave|pointerenter|pointerleave|load|unload|scroll|scrollend|invalid|close|cancel|toggle|beforetoggle|error|abort)$/;\n/** dispatch a real DOM event, like a user would cause it (E4) */\nfunction fire(el: any, type: string, init: SimulatedEventInit) {\n const {target: t = {}, value, checked, dataset, data, key, ...rest} = init;\n if ('value' in init) el.value = value;\n if ('checked' in init) el.checked = checked;\n for (const k in t) if (k != 'dataset') try { el[k] = t[k]; } catch (_) {}\n const ds = {...dataset, ...data, ...t.dataset};\n if (el.dataset) for (const k in ds) el.dataset[k] = String(ds[k]);\n const doc = el.ownerDocument || el;\n // focus()/blur() move document.activeElement and fire the events themselves\n if (type == 'focus' && typeof el.focus == 'function') {\n el.focus();\n if (doc.activeElement === el) return;\n }\n if (type == 'blur' && doc.activeElement === el && typeof el.blur == 'function') return el.blur();\n // click() runs the default action (checkbox/radio toggle, label, submit) and skips disabled controls\n if (type == 'click' && !Object.keys(rest).length && typeof el.click == 'function') return el.click();\n const W: any = (doc.defaultView || globalThis);\n const Ctor = /^key/.test(type) ? W.KeyboardEvent\n : /^(focus|blur|focusin|focusout)$/.test(type) ? W.FocusEvent\n : /^pointer/.test(type) ? W.PointerEvent || W.MouseEvent\n : /click|^mouse|^contextmenu$/.test(type) ? W.MouseEvent\n : /^(drag|drop)/.test(type) ? W.DragEvent || W.MouseEvent\n : /^(before)?input$/.test(type) ? W.InputEvent\n : W.Event;\n const ev = new (Ctor || W.Event)(type, {bubbles: !NO_BUBBLE.test(type), cancelable: true, ...(key !== undefined && {key}), ...rest});\n const extra: any = {...rest, ...(key !== undefined && {key})};\n if (/^(drag|drop)/.test(type) && !ev.dataTransfer) {\n const store: Record<string, string> = {};\n extra.dataTransfer = {setData: (f: string, v: string) => { store[f] = String(v); }, getData: (f: string) => store[f] ?? '', ...rest.dataTransfer};\n }\n for (const k in extra) if (ev[k] !== extra[k]) try { Object.defineProperty(ev, k, {value: extra[k]}); } catch (_) {}\n el.dispatchEvent(ev);\n}\n\n/** Internal (perf-guard tests): number of SYG104 tree walks */\nexport const _testingStats = {walks: 0};\n\n// 1H-5: live renderComponent instances; the explicit diagnostics config and the strict flag\n// (R4) from before the outermost one are restored when the last one is disposed\nlet active = 0;\n/** quiet window after which the whole tree counts as rendered (G-047) */\nconst QUIET_MS = 10;\n// G-053: defaults of the timing options (eventWaitMs: how long an event waits for its element /\n// listeners, G-049/G-039; settleMs: settle()'s quiet window, longer than a model next()'s\n// default 10ms delay; timeoutMs: next()/waitForState()/settle())\nconst TIMING = {eventWaitMs: 300, settleMs: 20, timeoutMs: 2000};\n\n// PLAN-4 GS-5: a synchronous storage over a plain record (key -> parsed entry, or a raw string\n// that isn't JSON), for persist(). The record's subscribers (persist's sync) hear every write,\n// as other tabs hear a 'storage' event; persist skips its own writes.\nconst storageSubs = new WeakMap<object, Set<(k: string, v: string | null) => void>>();\nconst fakeStorage = (rec: Record<string, any>) => {\n let subs = storageSubs.get(rec);\n if (!subs) storageSubs.set(rec, subs = new Set());\n const notify = (k: string, v: string | null) => subs!.forEach(f => f(k, v));\n return {\n getItem: (k: string) => rec[k] == null ? null : typeof rec[k] == 'string' ? rec[k] : JSON.stringify(rec[k]),\n setItem: (k: string, v: string) => {\n v = String(v);\n try { rec[k] = JSON.parse(v); } catch (_) { rec[k] = v; }\n notify(k, v);\n },\n removeItem: (k: string) => { delete rec[k]; notify(k, null); },\n subscribe: (f: (k: string, v: string | null) => void) => (subs!.add(f), () => { subs!.delete(f); }),\n };\n};\n/** PLAN-5 B-3: renderComponent's `browser` option */\nexport interface BrowserFakeOptions {\n /** media query -> matches */\n media?: Record<string, boolean>;\n /** localStorage, key -> stored string */\n storage?: Record<string, string>;\n /** sessionStorage, key -> stored string */\n sessionStorage?: Record<string, string>;\n visible?: boolean;\n online?: boolean;\n clipboard?: string;\n /** the position a geolocation declaration starts with (coords; the rest default) */\n position?: Record<string, any>;\n /** permissions denied from the start */\n deny?: Array<'geolocation' | 'clipboard'>;\n}\n\n/** PLAN-5 B-3: t.browser. Each input resolves once its actions are reduced and the tree rendered */\nexport interface BrowserFake {\n /** the declarations of `intersection: target` hear `{ visible, ratio (1 or 0), index: 0, dataset: {} , ...data }`; `at`: only the at-th of them (start order). Throws when nothing declares it */\n intersect: (target: string | true, visible?: boolean, data?: Record<string, any> & {at?: number}) => Promise<void>;\n /** the declarations of `resize: target` hear `{ width, height, index: 0, dataset: {}, ...size }` */\n resize: (target: string | true, size: Record<string, any> & {at?: number}) => Promise<void>;\n /** a position (the coords; accuracy 0, the rest null, timestamp now) or an error `{ code, message }` for the geolocation declarations */\n geolocation: (position: Record<string, any>) => Promise<void>;\n /** a media query now matches (or not) */\n media: (query: string, matches: boolean) => Promise<void>;\n visibility: (visible: boolean) => Promise<void>;\n online: (online: boolean) => Promise<void>;\n /** with a value: another tab writes the key (a non-string is stored as JSON; null removes it); without: the stored string or null */\n storage: {(key: string): string | null; (key: string, value: any, area?: 'local' | 'session'): Promise<void>};\n /** with text: the clipboard's text now; without: its text */\n clipboard: {(): string; (text: string): Promise<void>};\n /** deny permissions: copy/paste fail with NotAllowedError, geolocation with code 1 (running ones too) */\n deny: (...kinds: Array<'geolocation' | 'clipboard'>) => void;\n /** the running declarations: `{ name, ...spec, component }`, in start order */\n active: () => Array<Record<string, any>>;\n}\n\n/**\n * PLAN-5 B-3: the browser fake's sources (the real browser driver runs over them): no DOM or\n * browser API. `live` holds the started declarations ({ k: kind, s: spec, c: its BrowserCtx });\n * t.browser.* reaches them. `o` is renderComponent's `browser` option (the environment at start).\n * G-387: intersection / resize start with the report a real observer sends for an element at\n * first (not visible, size 0), and under `dom: 'real'` (`real`) a selector that matches no\n * element of the component, once it has rendered, is SYG668.\n */\nconst browserFake = (o: any = {}, real?: boolean) => {\n const live = new Set<any>(), runners = new Map<any, any>();\n const env: any = {media: {...o.media}, local: {...o.storage}, session: {...o.sessionStorage}, deny: new Set(o.deny || []),\n visible: o.visible ?? true, online: o.online ?? true, clip: o.clipboard ?? '', pos: o.position};\n const failed = (x: any) => ({name: x?.name, message: x?.message});\n const area = (s: any) => env[s.area == 'session' ? 'session' : 'local'];\n const read = (s: any) => { const v = area(s)[s.storage ?? s.setItem ?? s.removeItem]; return v == null ? null : s.json ? JSON.parse(v) : v; };\n const pos = (p: any) => ({latitude: 0, longitude: 0, accuracy: 0, altitude: null, altitudeAccuracy: null, heading: null, speed: null, timestamp: Date.now(), ...p});\n const DENIED = {code: 1, message: 'User denied Geolocation'};\n // a declaration kind: registered while it runs; `now` gives the value it starts with (undefined: none)\n const on = (k: string, now?: (s: any, c: any) => any) => (s: any, c: any) => {\n const e = {k, s, c};\n live.add(e);\n if (now) { let v; try { v = now(s, c); } catch (x) { c.fail(failed(x)); } if (v !== undefined) c.send(v); }\n return () => { live.delete(e); };\n };\n // dom: 'real': the target's elements after the next render (or now, when there are some)\n const seen = (k: string) => (s: any, c: any) => {\n if (real && c.dom) {\n let sync = true;\n const $ = c.dom.select(s[k] === true ? '' : '' + s[k]).elements(), l = {next: (els: any[]) => {\n if (sync && !els.length) return;\n els.length || c.miss('none');\n Promise.resolve().then(() => $.removeListener(l));\n }};\n $.addListener(l);\n sync = false;\n }\n return {index: 0, dataset: {}, ...(k == 'resize' ? {width: 0, height: 0} : {visible: false, ratio: 0})};\n };\n const each = (k: string, f: (e: any) => void, key?: any) => [...live].filter(e => e.k == k && (key === undefined || e.s[k] === key)).forEach(f);\n // a write to the fake storage, seen by the storage declarations of that key and area\n // G-384: an unchanged value is silent (as the browser's own `storage` event and the real driver)\n const write = (key: string, v: any, a = 'local') => {\n const st = env[a == 'session' ? 'session' : 'local'], old = st[key] ?? null;\n v == null ? delete st[key] : st[key] = typeof v == 'string' ? v : JSON.stringify(v);\n if (old === (st[key] ?? null)) return;\n each('storage', e => { if ((e.s.area == 'session' ? 'session' : 'local') == (a == 'session' ? 'session' : 'local')) { try { e.c.send({key, value: read(e.s)}); } catch (x) { e.c.fail(failed(x)); } } }, key);\n };\n const clipFail = (fail: any) => fail({name: 'NotAllowedError', message: 'Clipboard permission denied'});\n const src = {\n d: {\n intersection: on('intersection', seen('intersection')),\n resize: on('resize', seen('resize')),\n media: on('media', s => ({matches: !!env.media[s.media], media: s.media})),\n storage: on('storage', s => ({key: s.storage, value: read(s)})),\n visibility: on('visibility', () => ({visible: env.visible})),\n online: on('online', () => ({online: env.online})),\n geolocation: on('geolocation', (_, c) => env.deny.has('geolocation') ? void c.fail(DENIED) : env.pos && pos(env.pos)),\n },\n c: {\n copy: (v: any, ok: any, fail: any) => env.deny.has('clipboard') ? clipFail(fail) : (env.clip = '' + v.copy, ok({text: env.clip})),\n paste: (_: any, ok: any, fail: any) => env.deny.has('clipboard') ? clipFail(fail) : ok({text: env.clip}),\n setItem: (v: any, ok: any) => { write(v.setItem, v.json ? JSON.stringify(v.value) : '' + v.value, v.area); ok({key: v.setItem}); },\n removeItem: (v: any, ok: any) => { write(v.removeItem, null, v.area); ok({key: v.removeItem}); },\n },\n };\n return {src, runners, live, env, each, write, pos, DENIED};\n};\n// a model next() call, seen through the component's debug log (the 5.x core's makeOnAction /\n// makeEffectHandler: \"... next() action: <TYPE> 400ms delay\")\nconst RESERVED_SINKS = /^(STATE|EFFECT|PARENT|READY|DOM|ELEMENT)$/;\n// E2: a source name that a driver would provide (fake sources are made only for these)\nconst DRIVER_NAME = /^[A-Z][A-Z0-9_]*$/;\n// R2-5: setTimeout fires at once for a delay above 2^31-1 ms (and for Infinity/NaN)\nconst MAX_MS = 2147483647;\nconst validMs = (v: any) => typeof v == 'number' && Number.isFinite(v) && v >= 0 && v <= MAX_MS;\n// E11: fake timers. vi.useFakeTimers() (and Jest's modern timers) install @sinonjs/fake-timers,\n// which puts its clock on the faked setTimeout. The harness's own timers then run on that clock\n// too, so its time is the clock's (Date may be left real by `toFake`), and its waits drive it.\nconst fakeClock = (): any => (setTimeout as any).clock;\nconst clockNow = (): number => { const c = fakeClock(); return c ? c.now : Date.now(); };\n/**\n * Under fake timers, advance the clock timer by timer (nextAsync flushes promises around each\n * one) until `p` settles. Every pending wait has a timer (its timeout, a quiet-window tick), so\n * this ends; with no timer left it stops and leaves `p` to the test. Real timers: `p` as is.\n */\n/**\n * PLAN-3 1-C: what t.respond / t.fail return: a Promise that notes when it is awaited (then()),\n * so an un-awaited failing call can still fail the next wait, and an awaited one under fake\n * timers can drive the clock. Its then() returns a plain Promise.\n */\nclass Reply extends Promise<void> {\n _seen?: () => void;\n static get [Symbol.species]() { return Promise; }\n then(a?: any, b?: any): any { this._seen?.(); return super.then(a, b); }\n}\n/**\n * PLAN-3 5-1 (H-9): the reply the HTTP fake's in-memory fetch resolves with: a Response-like\n * object the real driver parses (a string body is text/plain, anything else JSON).\n */\nconst fakeResponse = (status: number, body: any, url: string): any => {\n const text = typeof body == 'string' ? body : body === undefined ? '' : JSON.stringify(body);\n const type = typeof body == 'string' ? 'text/plain;charset=UTF-8' : 'application/json';\n const isType = (k: string) => /^content-type$/i.test(k);\n return {\n ok: status > 199 && status < 300, status, statusText: '', url, redirected: false, type: 'basic', bodyUsed: false,\n headers: typeof Headers == 'function' ? new Headers({'content-type': type}) : {get: (k: string) => isType(k) ? type : null, has: isType},\n text: async () => text,\n json: async () => JSON.parse(text),\n clone: () => fakeResponse(status, body, url),\n };\n};\n/** a request field compared by value (t.respond / t.fail targets) */\nconst same = (a: any, b: any): boolean => {\n if (a === b) return true;\n if (!a || !b || typeof a != 'object' || typeof b != 'object' || Array.isArray(a) != Array.isArray(b)) return false;\n const ka = Object.keys(a), kb = Object.keys(b);\n return ka.length == kb.length && ka.every(k => same(a[k], b[k]));\n};\n/**\n * PLAN-3 2-C: where makeSocketDriver (no baseUrl) opens a declared URL (its resolve(); keep the\n * two in step), and the transport identity it shares by (its key, without the share flag)\n */\nconst sockUrl = (u: string, sse: boolean) => {\n const loc = (globalThis as any).location;\n if (sse || /^wss?:/i.test(u) || !loc) return u;\n try {\n const r = new URL(u, loc.href);\n r.protocol = r.protocol == 'https:' ? 'wss:' : 'ws:';\n return r.href;\n } catch (_) { return u; }\n};\nconst alive = (s: any) => s && s.readyState < 2;\nconst sockKey = (sse: boolean, url: string, arg: any) => (sse ? 'e' + !!(arg && arg.withCredentials) : 's' + JSON.stringify(arg)) + url;\n/**\n * PLAN-3 2-C: the in-memory WebSocket / EventSource the fake's makeSocketDriver opens. The\n * harness drives it (t.open / t.push / t.drop); the driver's own close() is the app's close.\n */\nconst fakeSocketClass = (sse: boolean, made: (s: any) => void) => class {\n readyState = 0;\n sse = sse;\n byApp = false;\n k: string;\n url: string;\n ls: Record<string, any[]> = {};\n onopen: any; onmessage: any; onerror: any; onclose: any;\n constructor(url: string, arg?: any) {\n this.url = String(url);\n this.k = sockKey(sse, this.url, arg);\n made(this);\n }\n send() {}\n close() { if (this.readyState < 2) { this.readyState = 3; this.byApp = true; } }\n addEventListener(type: string, f: any) { (this.ls[type] = this.ls[type] || []).push(f); }\n};\nconst brief = (v: any) => {\n let s: string;\n try { s = typeof v == 'string' ? `'${v}'` : JSON.stringify(v); } catch (_) { s = String(v); }\n return s && s.length > 80 ? s.slice(0, 80) + '…' : s;\n};\nconst drive = <T>(p: Promise<T>, stop: () => boolean): Promise<T> => {\n const clock = fakeClock();\n if (!clock) return p;\n let settled = false;\n p.then(() => { settled = true; }, () => { settled = true; });\n return (async () => {\n while (!settled && !stop() && fakeClock() === clock) {\n if (!clock.countTimers()) {\n await clock.nextAsync(); // one more flush: a microtask may schedule one\n if (!clock.countTimers()) break;\n }\n await clock.nextAsync();\n }\n return p;\n })();\n};\n/**\n * PLAN-3 5-4c: the in-memory window the router fake gives makeRouter's real driver: a location,\n * a history whose go() fires popstate a task later (like a browser), window listeners, scroll\n * kept in memory, and a document whose listeners are recorded in `docLs` (the mock DOM's link\n * clicks call them) and, with `real` (dom: 'real'), also added to the real document, so real\n * clicks bubble into the driver's link interception. `baseURI` is the in-memory URL, so relative\n * links resolve against it.\n */\nfunction memoryWindow(start: string, real: boolean, query: (s: string) => any, observe: boolean) {\n const entries = [{url: start, state: null as any}];\n const on: Record<string, any[]> = {}, docLs: Record<string, any[]> = {};\n let i = 0;\n const at = () => new URL(entries[i].url);\n const fire = (type: string) => (on[type] || []).slice().forEach(f => f({type}));\n const D: any = real ? document : null;\n const w: any = {\n location: {\n get href() { return entries[i].url; }, get pathname() { return at().pathname; }, get search() { return at().search; },\n get hash() { return at().hash; }, get origin() { return at().origin; },\n },\n history: {\n get state() { return entries[i].state; }, get length() { return entries.length; },\n pushState(state: any, _: any, url: string) { entries.splice(i + 1); entries.push({url: new URL(url, entries[i].url).href, state}); i++; },\n replaceState(state: any, _: any, url?: string) { entries[i] = {url: url ? new URL(url, entries[i].url).href : entries[i].url, state}; },\n go(n: number) { const j = i + n; if (n && j >= 0 && j < entries.length) setTimeout(() => { i = j; fire('popstate'); }); },\n back() { this.go(-1); }, forward() { this.go(1); },\n },\n addEventListener(t: string, f: any) { (on[t] = on[t] || []).push(f); },\n removeEventListener(t: string, f: any) { on[t] = (on[t] || []).filter(x => x !== f); },\n document: {\n addEventListener(t: string, f: any) { (docLs[t] = docLs[t] || []).push(f); D?.addEventListener(t, f); },\n removeEventListener(t: string, f: any) { docLs[t] = (docLs[t] || []).filter(x => x !== f); D?.removeEventListener(t, f); },\n querySelector: (s: string) => (D ? query(s) : null),\n getElementById: (id: string) => (D ? D.getElementById(id) : null),\n get body() { return D?.body; },\n get baseURI() { return entries[i].url; },\n },\n scrollX: 0, scrollY: 0,\n scrollTo(x: any, y?: any) { if (typeof x == 'object') ({left: x = w.scrollX, top: y = w.scrollY} = x); w.scrollX = x; w.scrollY = y; },\n MutationObserver: real && observe ? (globalThis as any).MutationObserver : undefined,\n };\n return {w, docLs, index: () => i, size: () => entries.length};\n}\n/**\n * PLAN-3 5-4c: an element-like `<a>` for the router's click handler (mock DOM), from the vnode:\n * its attrs, its props (href, target, rel, download) and its dataset as data-* attributes\n */\nconst anchorOf = (v: any): any => {\n const d = v.data || {}, all: Record<string, any> = {...d.attrs};\n for (const k in d.props || {}) if (k != 'className') all[k] = d.props[k];\n for (const k in d.dataset || {}) all['data-' + k.replace(/[A-Z]/g, c => '-' + c.toLowerCase())] = d.dataset[k];\n const get = (k: string) => all[k] == null || all[k] === false ? null : all[k] === true ? '' : String(all[k]);\n return {localName: 'a', getAttribute: get, hasAttribute: (k: string) => get(k) != null, getAttributeNS: () => null};\n};\n/**\n * PLAN-3 5-4c: the HEAD fake: the real driver's entry rules (one entry per component instance,\n * replaced by its next value, removed by a falsy value or its dispose), kept for t.head() to\n * merge with head.ts's mergeHead instead of written to a document\n */\nconst headFake = () => {\n const entries = new Map<any, any>();\n const {replies} = makeReplies(s => { entries.delete(s); });\n const driver = (sink$: Stream<any>) => {\n sink$.addListener({\n next: (v: any) => {\n if (!v || typeof v != 'object') return;\n const s = senderOf(v), h = 'head' in v ? v.head : v;\n h && typeof h == 'object' ? entries.set(s, h) : entries.delete(s);\n },\n error: () => {}, complete: () => {},\n });\n return {...replies, __sygnalStatic: 'head'};\n };\n return {entries, driver};\n};\nlet savedConfig: ReturnType<typeof _getDiagnosticsConfig>;\nlet savedStrict: any;\n\n/*\n * PLAN-4 GS-2, mock DOM: could the element a command targets have this method? The core runs any\n * method of the element; the mock DOM has no elements, so: the documented commands, common\n * methods of form fields and media, and (with a DOM) the prototype of the control's tag.\n */\nconst COMMON_METHODS = ['play', 'pause', 'load', 'fastSeek', 'showPicker', 'requestSubmit', 'reset', 'checkValidity', 'reportValidity', 'setCustomValidity', 'setSelectionRange', 'setRangeText', 'stepUp', 'stepDown', 'requestFullscreen', 'scroll', 'scrollTo', 'scrollBy', 'animate', 'requestPointerLock'];\nconst elementHas = (target: any, m: string, tag = typeof target == 'function' && typeof target.spec == 'string' ? target.spec : 'div'): boolean => {\n if (NATIVE_COMMAND_NAMES.includes(m) || COMMON_METHODS.includes(m)) return true;\n if (typeof document == 'undefined') return false;\n try {\n return typeof (document.createElement(tag) as any)[m] == 'function';\n } catch (_) {\n return false;\n }\n};\n\n/*\n * PLAN-4 GS-2: jsdom has no <dialog> methods, no popovers and no scrollIntoView. While a\n * `dom: 'real'` test runs, the missing ones are added (and removed after the last one): show() /\n * showModal() set `open`; close(returnValue) clears it, sets returnValue and fires `close`; the\n * popover methods fire `beforetoggle` / `toggle` (with oldState / newState); scrollIntoView()\n * does nothing (spy on it after renderComponent). A browser's own methods are never replaced.\n * PLAN-5 2-T (D211): also ResizeObserver (observes nothing), CSS.escape and\n * Element.prototype.scrollTo (does nothing), which Zag's machines use.\n */\nlet domFakes: (() => void) | undefined;\nfunction fakeElementMethods(W: any): () => void {\n const added: Array<[any, string, any?]> = [];\n const add = (proto: any, name: string, fn: Function) => {\n if (proto && !(name in proto)) { proto[name] = fn; added.push([proto, name]); }\n };\n const D = W.HTMLDialogElement?.prototype, E = W.HTMLElement?.prototype;\n add(D, 'show', function (this: any) { this.open = true; });\n add(D, 'showModal', function (this: any) { this.open = true; });\n add(D, 'close', function (this: any, returnValue?: any) {\n if (!this.open) return;\n if (returnValue !== undefined) this.returnValue = String(returnValue);\n this.open = false;\n this.dispatchEvent(new W.Event('close'));\n });\n const shown = new WeakSet<any>();\n const toggle = (el: any, open: boolean) => {\n if (shown.has(el) == open) return;\n const ev = (type: string) => {\n const e = new W.Event(type, {cancelable: type == 'beforetoggle'});\n Object.defineProperties(e, {oldState: {value: open ? 'closed' : 'open'}, newState: {value: open ? 'open' : 'closed'}});\n return el.dispatchEvent(e);\n };\n if (!ev('beforetoggle') && open) return;\n open ? shown.add(el) : shown.delete(el);\n ev('toggle');\n };\n add(E, 'showPopover', function (this: any) { toggle(this, true); });\n add(E, 'hidePopover', function (this: any) { toggle(this, false); });\n add(E, 'togglePopover', function (this: any, options?: any) {\n const force = options && typeof options == 'object' ? options.force : options;\n toggle(this, force === undefined ? !shown.has(this) : !!force);\n return shown.has(this);\n });\n add(W.Element?.prototype, 'scrollIntoView', function () {});\n // PLAN-5 2-T (D211): what Zag's machines (sygnal/ui/menu, select, combobox; fromZag) need:\n // ResizeObserver (positioning), CSS.escape (selectors) and scrollTo (the highlighted option)\n add(W.Element?.prototype, 'scrollTo', function () {});\n const RO = class { observe() {} unobserve() {} disconnect() {} };\n // G-440: CSSOM's serialize-an-identifier (a leading digit, or '-' + digit, is hex-escaped)\n const esc = (v: any) => {\n const s = String(v);\n let out = '';\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i), ch = s[i], hex = '\\\\' + c.toString(16) + ' ';\n out += !c ? '\\uFFFD'\n : c < 32 || c == 127 || (c > 47 && c < 58 && (!i || i == 1 && s[0] == '-')) ? hex\n : !i && ch == '-' && s.length == 1 ? '\\\\-'\n : c > 127 || /[\\w-]/.test(ch) ? ch\n : '\\\\' + ch;\n }\n return out;\n };\n // (a global the environment declares as undefined counts as missing)\n const set = (g: any, name: string, v: any) => {\n if (g[name]) return;\n // defined over it (Vitest's jsdom globals are accessors that would store into the window)\n const own = Object.getOwnPropertyDescriptor(g, name);\n if (own && !own.configurable) return;\n Object.defineProperty(g, name, {value: v, configurable: true, writable: true});\n added.push([g, name, own]);\n };\n for (const g of new Set([W, globalThis])) {\n set(g, 'ResizeObserver', RO);\n g.CSS ? set(g.CSS, 'escape', esc) : set(g, 'CSS', {escape: esc});\n }\n return () => added.forEach(([proto, name, own]) => { delete proto[name]; if (own) Object.defineProperty(proto, name, own); });\n}\n\nexport function renderComponent(\n componentDef: any,\n options: RenderOptions = {}\n): RenderResult {\n const {initialState, mockConfig = {}, drivers = {}, diagnostics, strict, dom = 'mock', autoConnect = true, socketSink = 'WS', resourceSink = 'HTTP', http: httpOptions, context: ancestors} = options;\n const {intent, model = {}} = componentDef;\n // E4: real DOM mode\n const real = dom == 'real';\n if (dom != 'mock' && !real) throw new Error(`[Sygnal] renderComponent: dom must be 'mock' (default) or 'real' (got ${String(dom)})`);\n if (real && (typeof document == 'undefined' || !document.body)) {\n throw new Error(`[Sygnal] renderComponent(C, { dom: 'real' }) needs a DOM, and there is no document here. Run the test in a DOM environment: add the comment // @vitest-environment jsdom at the top of the test file, or set test.environment: 'jsdom' (or 'happy-dom') in the Vitest config (npm i -D jsdom)`);\n }\n if (real && options.mockConfig) throw new Error(`[Sygnal] renderComponent: mockConfig drives the mock DOM, so it can't be used with { dom: 'real' }. Use simulateEvent instead`);\n const timing = {...TIMING};\n for (const k of Object.keys(TIMING) as (keyof typeof TIMING)[]) {\n const v = options[k];\n if (v === undefined) continue;\n if (!validMs(v)) throw new Error(`[Sygnal] renderComponent: ${k} must be a finite number of ms between 0 and ${MAX_MS} (got ${String(v)})`);\n timing[k] = v;\n }\n const {eventWaitMs, settleMs, timeoutMs: defaultTimeout} = timing;\n // R2-5: settle() could never see a quiet window longer than its timeout\n if (settleMs > defaultTimeout) {\n throw new Error(`[Sygnal] renderComponent: settleMs (${settleMs}) is longer than timeoutMs (${defaultTimeout}), so settle() would always time out. Lower settleMs or raise timeoutMs`);\n }\n const checkMs = (name: string, ms: any) => {\n if (!validMs(ms)) throw new Error(`[Sygnal] ${name}: the timeout must be a finite number of ms between 0 and ${MAX_MS} (got ${String(ms)})`);\n };\n // PLAN-3 5-4c: the router fake (makeRouter's real driver over an in-memory window) when the\n // app's router is passed and no driver is; the HEAD fake unless a HEAD driver is passed\n const {router, url, routerSink = 'ROUTER', headSink = 'HEAD', titleTemplate} = options;\n const compName = componentDef.name || componentDef.componentName || 'TestComponent';\n if (router !== undefined && !(router && typeof router == 'object' && router.options && typeof router.driver == 'function')) {\n throw new Error(`[Sygnal] renderComponent: the router option takes the object makeRouter() returns (import { router } from './routes.js'), not ${typeof router == 'function' ? 'router.driver' : 'a ' + typeof router}`);\n }\n const fakeRouter = !!router && !drivers[routerSink];\n if (!router && componentDef.route && !drivers[routerSink]) {\n throw new Error(`[Sygnal] renderComponent(${compName}, { router }): ${compName} declares \\`route\\`, so the test needs the app's router: the object makeRouter() returns (import { router } from './routes.js'). renderComponent then runs its real driver over an in-memory history starting at the url option (default '/'). Or pass a ${routerSink} driver in drivers`);\n }\n if (url !== undefined && !fakeRouter) throw new Error(`[Sygnal] renderComponent: url is the router fake's start URL: pass the app's router too (renderComponent(${compName}, { router, url }))`);\n\n const prevMode = getDiagnosticsMode();\n // 2A: strict flag on the core bridge (read by the 'sygnal/diagnostics' strict checks)\n const core = (globalThis as any).__SYGNAL_DIAGNOSTICS__;\n if (!active++) {\n savedConfig = _getDiagnosticsConfig();\n savedStrict = core.strict;\n // G-051: forget the checks' report dedupe (once()), so a finding from an earlier test is\n // reported again. Only that set: resetChecks() would also drop inspect()'s records of\n // other live instances / apps.\n core.resetOnce?.();\n }\n configureDiagnostics({mode: diagnostics || (prevMode == 'off' ? 'collect' : prevMode)});\n if (strict !== undefined) core.strict = strict;\n // PLAN-4 GS-2: element commands run on the real DOM (jsdom gets the missing methods), and their\n // SYG640/SYG641 are reported without the dev entry too\n if (real && !domFakes) domFakes = fakeElementMethods(document.defaultView || globalThis);\n const ownBridge = !core.elementCommand;\n if (ownBridge) core.elementCommand = reportElementCommand;\n const collected: Diagnostic[] = [];\n const offDiag = onDiagnostic(d => collected.push(d));\n\n // G-024: SYG103/SYG104 on the mock DOM\n const rootName = componentDef.name || componentDef.componentName || 'TestComponent';\n const listeners = new Map<string, string[]>();\n // G-039: subscribed listener count per path + event type\n const live = new Map<string, number>();\n let disposed = false;\n const owners = new Map<string, string>([['', rootName]]);\n const scopeIds = new Map<string, number>();\n const evTypes: Record<string, string[]> = {};\n const done = new Set<string>();\n // the innermost isolation scope of a component's DOM source on this hub\n const scopeOf = (c: any) => {\n const d = c && c.sources && c.sources[c.DOMSourceName || 'DOM'];\n return d && d._hub === hub.$ && (d._path || []).filter(isScope).pop();\n };\n // G-047: activity anywhere in the tree (any component's render/reducer, state, input), for\n // the \"the full tree has rendered\" / settle() quiet windows\n let activity = 0, lastActivity = clockNow();\n const bump = () => { activity++; lastActivity = clockNow(); };\n // 4-A1 (real DOM): states recorded when a view in the tree last ran (see onModel)\n let viewTag = 0;\n const recorded = () => states.length;\n // G-053: model next() calls of the tree's components (for the timeout explanations)\n type Scheduled = {type: string; delay: number; at: number; due: number; by: string};\n const scheduled: Scheduled[] = [];\n // 2-C: component number (a request's sender) → name, for t.connections (a tagged copy of a\n // value keeps the sender, not the name)\n const senderNames = new Map<any, string>();\n // PLAN-4 2-C (GS-10): t.actions, from the action log (./diagnostics/checks/actionLog), which\n // patches each instance of this tree from the onIntent / onModel hooks (0 B in apps)\n const t0 = clockNow();\n const actionList: TestAction[] = [];\n const entryOf = new WeakMap<ActionRecord, TestAction>();\n const stateReducer = new WeakMap<TestAction, Function>();\n const resulting = new WeakMap<TestAction, {s: any}>();\n let awaiting: TestAction[] = [];\n const actionListener: ActionListener = {\n action(r) {\n const e: TestAction = {type: r.type, data: r.data, component: r.component, instance: r.instance, sinks: r.sinks, cause: r.cause, at: r.time - t0};\n entryOf.set(r, e);\n actionList.push(e);\n },\n sink(r, sink, reducer) {\n const e = entryOf.get(r);\n if (!e || sink != 'STATE') return;\n if (typeof reducer == 'function') stateReducer.set(e, reducer);\n awaiting.push(e);\n },\n };\n // PLAN-4 GS-2: t.commands('ELEMENT'). The core runs an instance's ELEMENT sink itself (after\n // initModel$, which ends with onModel): recorded here; on the mock DOM not run, but checked\n // (SYG641 when sent, SYG640 when the target is still missing from its view after 1 s)\n const commandLog: any[] = [];\n const commandTimers = new Set<any>();\n // PLAN-5 W-1 (F-c): the widget whose host a target matches among the sender's own elements\n // (1-R G-369: scoped as probe() is; its commands run for a selector target too, D196); an\n // undeclared one is SYG142, as on the real DOM\n const widgetOf = (target: any, c: any, k = 'ww'): any => {\n if (typeof target == 'function' && !target.__sygnalControl) return;\n const sel = tryParse(norm(String(selOf(target) ?? '')));\n const scope = scopeOf(c) || undefined;\n const ch = sel && vtree && findAll(vtree, sel, [], []).find(ch => {\n let s: any;\n for (const v of ch) s = scopeOfV(v) || s;\n return s == scope;\n });\n return ch && ch[ch.length - 1]?.data?.[k];\n };\n const findVc = (target: any, c: any) => widgetOf(target, c, 'vc');\n const checkCommand = (c: any, cmd: any) => {\n if (typeof cmd != 'object' || Array.isArray(cmd)) return;\n const m = Object.keys(cmd)[0], target = cmd[m];\n if (m === undefined) return;\n const w = target?.spec?.commands ? undefined : widgetOf(target, c);\n // PLAN-5 V-1: scrollToIndex / scrollToId are methods of a VirtualCollection's container\n const vc = m.startsWith('scrollTo') && findVc(target, c)?.commands[m];\n // G-369: a control wrapping a widget has its widget's host tag\n if (!vc && (w ? !w.commands[m] && !elementHas(0, m, w.def.tag || 'div') : !target?.spec?.commands?.[m] && !elementHas(target, m, target?.spec?.def?.tag))) {\n return reportElementCommand(c, cmd, w ? {tagName: w.def.tag || 'div', __sw: {w}} : {});\n }\n // D194: focusWithin(selector) looks under the sender's root, children included\n const within = target?.within, sel = within ?? (target == null ? '' : String(target));\n const id = setTimeout(() => {\n commandTimers.delete(id);\n if (disposed || (sel && !tryParse(sel))) return;\n const p = sel && vtree && probe(sel, scopeOf(c) || undefined);\n if (!p || !(p.own || (within != null && p.child))) reportElementCommand(c, cmd);\n }, 1e3);\n commandTimers.add(id);\n };\n const raise = (code: string, component: string, message: string, fix: string, data: any) => {\n try { report(code, {component, message, fix, data}); } catch (e) { setTimeout(() => { throw e; }); }\n };\n // 1H-11: a render with the same tree and no new listener can't change the result\n let checkedTree: any, newListener = false;\n // sels: the selector (inspect() passes it split into words)\n const probe = (sels: string | string[], scope?: string, target?: any) => {\n let own = false, child: string | undefined, hit = !target;\n const sel = tryParse(Array.isArray(sels) ? sels.join(' ') : sels);\n if (!sel || !sel.length) return {own, child, hit: false};\n const desc = (_: any, els: any[]) => matches(sel, els);\n // chain: [vnode, nearest scope][] from the root; inside: under this component's root\n const walk = (v: any, chain: any[], cur: any, inside: boolean, boundary: any): void => {\n if (!v || own) return;\n // a fragment (a Collection's, 4-H): its children are its parent's\n if (!v.sel) { if (v.children) for (const k of v.children) walk(k, chain, cur, inside, boundary); return; }\n const sc = scopeOfV(v) || cur;\n const c = chain.concat([[v, sc]]);\n inside = inside || sc == scope;\n if (inside) {\n if (sc == scope) {\n if (desc(sels, c.filter(x => x[1] == scope).map(x => x[0]))) own = true;\n } else {\n boundary = boundary || sc;\n if (desc(sels, c.map(x => x[0]))) {\n child = child || boundary;\n if (v === target) hit = true;\n }\n }\n }\n for (const k of [].concat(v.children || [])) walk(k, c, sc, inside, sc == scope ? undefined : boundary);\n };\n _testingStats.walks++;\n walk(vtree, [], undefined, !scope, undefined);\n return {own, child, hit};\n };\n const check104 = (target?: any) => {\n // E4: on the real DOM, 'sygnal/diagnostics' runs its own (real-DOM) SYG104 check\n if (real && core.__uninstallChecks) return;\n if (!vtree || !isDiagnosticsEnabled() || (!target && vtree === checkedTree && !newListener)) return;\n if (!target) checkedTree = vtree, newListener = false;\n listeners.forEach(path => {\n const selector = selText(path);\n const scope = path.filter(isScope).pop();\n const name = owners.get(scope || '') || 'Component';\n const key = name + '\\u0000' + selector;\n if (!selector || PAGE.test(selector) || done.has(key)) return;\n const {own, child, hit} = probe(selector, scope, target);\n if (own) return done.add(key);\n if (!child || !hit) return;\n done.add(key);\n const childName = owners.get(child) || 'a child component';\n // CT-1: a control is named by its identifier\n const control = /^\\[data-control=\"([^\"]+)\"\\]$/.exec(selector)?.[1];\n raise('SYG104', name,\n `${control ? `The control ${control}` : `DOM.select('${selector}')`} in ${name} matches elements inside ${childName} (isolated), so ${name} never receives their events`,\n `Handle the event in ${childName}${control ? ` (DOM.<event>(${control}) in its intent)` : ''} and send it up with PARENT (read it here with CHILD.select(${childName})), or use EVENTS`,\n control ? {selector, child: childName, control} : {selector, child: childName});\n });\n };\n\n const restore = () => {\n offDiag();\n if (ownBridge && core.elementCommand === reportElementCommand) core.elementCommand = undefined;\n if (!--active) {\n configureDiagnostics(savedConfig);\n core.strict = savedStrict;\n domFakes?.();\n domFakes = undefined;\n }\n };\n\n const noop = () => {};\n const port = () => {\n const p = {emit: noop as (v: any) => void, $: null as any};\n p.$ = xs.create({\n start: (l: any) => { p.emit = v => l.next(v); },\n stop: () => { p.emit = noop; },\n });\n return p;\n };\n const hub = port();\n\n // E2: scriptable fake sources (t.respond / t.fail) for sinks/sources with no driver. Same\n // source API as makeFetchDriver / driverFromAsync: select(category?) and errors(category?),\n // where the selector is a category string, a predicate, or nothing (everything).\n // R4-2: isolated like the drivers: a source at scope path `ns` sees the replies to requests\n // made at or under it; requests are tagged by isolateSink (or, for a child-only sink with no\n // driver, with the component's place in the tree, see nsOf)\n // PLAN-3 5-1 (H-9): the HTTP half IS makeFetchDriver, run over an in-memory fetch. Every\n // fetch is a pending entry until t.respond / t.fail resolve it with a Response-like object (or\n // reject it); the driver aborts superseded / cancelled / disposed requests through their\n // AbortSignal, which takes them off the pending list. So latest, abort, timeouts, isolation,\n // reply actions (each to exactly its sender) and resources are the driver's own rules, with no\n // copy here. `subs` mirrors each select()/errors() subscription, for `request: null` pushes and\n // for the \"nothing receives it\" check on plain replies.\n type FakeSub = {l: any; sel: any; err: boolean; ns: any[]};\n // value: what t.requests lists (normalised); req: the request the driver got; res: the resource;\n // pf: a { prefetch } fetch (5-5: answered into the cache, no reply)\n type Pending = {value: any; req: any; category: any; res?: string; pf?: any; live: boolean; settle: (ok: boolean, v: any) => void};\n type Fake = {select: any; errors: any; subs: Set<FakeSub>; at: (ns: any[]) => any; pending: Pending[]; in$: any; http: any; ws: Sock};\n const fakes = new Map<string, Fake>();\n // 5-3: the fake drivers' focus / online listeners (t.focus, t.online)\n const signals = new Set<(s: string) => void>();\n // the value record() is sending (as listed in t.requests), and what the driver's _tap named\n let sending: any, tapped: any[] | undefined;\n const fake = (name: string): Fake => {\n let f = fakes.get(name);\n if (!f) {\n const subs = new Set<FakeSub>();\n const pending: Pending[] = [];\n const in$ = xs.create();\n const ws = sockFake();\n const http = makeFetchDriver({\n ...httpOptions,\n // 5-3: focus / online come from t.focus() / t.online() only\n _on: (f: any) => { signals.add(f); return () => signals.delete(f); },\n _tap: (req: any, res?: string, pf?: any) => { tapped = [req, res, pf]; },\n fetch: (url: string, init: any) => new Promise((resolve, reject) => {\n const [req, res, pf] = tapped || [{url}];\n tapped = undefined;\n // G-171(1): a resource fetch is listed as { url, ...request, resource: name }; 5-5: a\n // { prefetch } fetch as { url, ...request, prefetch: true }\n const value = res !== undefined ? {...req, resource: res} : pf ? {...req, prefetch: true} : sending !== undefined ? sending : req;\n if (res !== undefined || pf) requests(name).push(value);\n const p: Pending = {value, req, category: req.category, res, pf, live: true, settle: (ok, v) => { p.live = false; (ok ? resolve : reject)(v); }};\n pending.push(p);\n init?.signal?.addEventListener?.('abort', () => {\n if (!p.live) return;\n p.live = false;\n const e: any = new Error('The operation was aborted.');\n e.name = 'AbortError';\n reject(e);\n });\n }),\n })(in$);\n const at = (ns: any[]): any => {\n const own = (err: boolean) => (sel?: any) => {\n let sub: FakeSub;\n return xs.create({\n start: (l: any) => { subs.add((sub = {l, sel, err, ns})); },\n stop: () => { subs.delete(sub); },\n });\n };\n const hs = ns.reduce((s, sc) => s.isolateSource(s, sc), http);\n // 2-C: the socket driver's source, isolated alike (events without an action reach select(name?))\n const sock = ns.reduce((s, sc) => s.isolateSource(s, sc), ws.src);\n return {\n select: (sel?: any) => xs.merge(hs.select(sel), own(false)(sel), sock.select(sel)),\n errors: (sel?: any) => xs.merge(hs.errors(sel), own(true)(sel)),\n subs, at, pending, in$, http, ws,\n // 5-3: the driver's matcher / inspection (the dev checks' SYG632, t.cache)\n __matches: http.__matches, __inspect: http.__inspect,\n isolateSource: (_: any, scope: any) => at(ns.concat(scope)),\n isolateSink: (sink$: any, scope: any) => sink$.map((v: any) => tag(v, scope)),\n // G-160: the fake named by `socketSink` receives the components' connections static\n // 3-A: and the one named by `resourceSink` the resources static\n ...(name == socketSink ? {__sygnalStatic: 'connections'} : name == resourceSink ? {__sygnalStatic: 'resources'} : {}),\n __sygnalReplies: true,\n // both drivers' reply actions; a disposed sender's connections leave t.connections\n replies: (sender: any) => xs.merge(http.replies(sender), ws.src.replies(sender),\n xs.create({start: noop, stop: () => { ws.conns.delete(sender); }})),\n };\n };\n fakes.set(name, (f = at([])));\n }\n return f!;\n };\n // PLAN-3 2-C: the socket half of a fake source. Values with `connections` / `to` go to a real\n // makeSocketDriver over in-memory sockets, so diffing, reply actions, sharing, queueing and\n // reconnect are the driver's own. `conns` mirrors what each sender has declared (sender →\n // name → Conn) and which fake socket serves each connection, for t.connections and targets.\n type Conn = {by: string; name: string; spec: any; sse: boolean; url: string; k: string; own: boolean; s?: any};\n type Sock = {src: any; in$: any; conns: Map<any, Map<string, Conn>>; sockets: any[]; sent: any[]; declaring: Conn[] | null};\n const sockFake = (): Sock => {\n const w: Sock = {src: null, in$: xs.create(), conns: new Map(), sockets: [], sent: [], declaring: null};\n const made = (s: any) => {\n w.sockets.push(s);\n const all = [...w.conns.values()].flatMap(m => [...m.values()]).filter(c => c.k == s.k);\n if (w.declaring) {\n // a declaration opened it: the first new connection with its key (and, shared, the\n // other new shared ones)\n const first = w.declaring.find(c => c.k == s.k && !c.s);\n if (first) [first, ...(first.own ? [] : w.declaring.filter(c => c.k == s.k && !c.s && !c.own))].forEach(c => { c.s = s; });\n } else {\n // a reconnect: replaces the oldest dropped socket with its key\n const old = all.map(c => c.s).filter(x => x && !alive(x)).sort((a, b) => w.sockets.indexOf(a) - w.sockets.indexOf(b))[0];\n all.forEach(c => { if (c.s === old) c.s = s; });\n }\n // autoConnect: it opens on the next macrotask (or at once when a t.push / t.drop needs it)\n if (autoConnect) {\n s.auto = true;\n setTimeout(() => { if (s.readyState === 0 && !disposed) sockOpen(s); });\n }\n };\n w.src = makeSocketDriver({WebSocket: fakeSocketClass(false, made), EventSource: fakeSocketClass(true, made)})(w.in$);\n return w;\n };\n const sockValue = (v: any) => !!v && typeof v == 'object' && ('connections' in v || 'to' in v);\n const sockRecord = (w: Sock, v: any) => {\n if ('to' in v && !('connections' in v)) w.sent.push(v);\n else if (!('then' in v || 'catch' in v)) {\n const sender = senderOf(v), next = v.connections || {}, old = w.conns.get(sender) || new Map(), now = new Map<string, Conn>();\n const fresh: Conn[] = [];\n Object.keys(next).forEach(name => {\n const spec = next[name];\n if (!spec || typeof spec != 'object' || (typeof spec.socket != 'string' && typeof spec.sse != 'string') || 'then' in spec || 'catch' in spec) return;\n const sse = typeof spec.sse == 'string', url = sockUrl(sse ? spec.sse : spec.socket, sse);\n const k = sockKey(sse, url, sse ? spec : spec.protocols), own = spec.share === false;\n const c = old.get(name);\n if (c && c.k == k && c.own == own) { c.spec = spec; now.set(name, c); }\n else { const n: Conn = {by: v.__emitterName ?? senderNames.get(sender), name, spec, sse, url, k, own}; now.set(name, n); fresh.push(n); }\n });\n w.conns.set(sender, now);\n w.declaring = fresh;\n try { w.in$.shamefullySendNext(v); } finally { w.declaring = null; }\n // joined a shared socket that was already there\n fresh.forEach(c => { if (!c.s && !c.own) c.s = w.sockets.filter(s => s.k == c.k && alive(s)).pop(); });\n return;\n }\n w.in$.shamefullySendNext(v);\n };\n const sockFire = (s: any, type: string, ev: any) => {\n try { s['on' + type]?.(ev); } catch (e) { console.error(e); }\n };\n const sockOpen = (s: any) => { s.readyState = 1; sockFire(s, 'open', {type: 'open'}); };\n const sockState = (c: Conn) => !c.s || c.s.readyState == 0 ? 'connecting' : c.s.readyState == 1 ? 'open' : 'closed';\n const sockView = (c: Conn): FakeConnection => ({...c.spec, name: c.name, url: c.url, state: sockState(c), sender: c.by});\n // G-131: a string request is scope-tagged as { url } (like makeFetchDriver's isolateSink),\n // remembering the string, so t.requests still shows what the component sent\n const STR = '__sygnalString';\n const tag = (v: any, scope: any) => {\n // (G-335: a request is a string or a plain object; an array, a Date, ... is sent as is)\n if (typeof v != 'string' && !(v && typeof v == 'object' && (Object.getPrototypeOf(v) === Object.prototype || Object.getPrototypeOf(v) === null))) return v;\n const r = tagRequest(v, scope), str = typeof v == 'string' ? v : v[STR];\n if (str !== undefined) Object.defineProperty(r, STR, {value: str});\n return r;\n };\n const requests = (k: string) => (reqValues[k] = reqValues[k] || []);\n const reqValues: Record<string, any[]> = {};\n // a sink value: recorded (t.sinkValues: everything) and, on a fake source, sent to its driver.\n // G-141 / G-171(1): t.requests lists the requests, normalised (a string is { url }); never the\n // { abort } commands, { resources } declarations or { refresh } commands. A resource's fetches\n // are listed by the fake's fetch, with `resource: name`.\n // 5-7: resource names declared on each sink, so t.respond(name, …, 'quote') right after the\n // state change that (re)fetches 'quote' waits for that fetch instead of throwing\n const declaredRes = new Map<string, Set<string>>();\n // states.length when the last simulate* call was made: no state since then = its change is pending\n let simAt = -1;\n // G-189: true from a simulate* call until the requests it causes have left: a sink that also\n // carries `resources` sends them two microtasks after the action (G-158)\n let sendDue = false, dueSeq = 0;\n const record = (name: string, v: any, track: boolean) => {\n const shown = v && typeof v == 'object' && v[STR] !== undefined ? v[STR] : v;\n if (v && typeof v == 'object' && v.resources && typeof v.resources == 'object') {\n const set = declaredRes.get(name) || new Set<string>();\n Object.keys(v.resources).forEach(k => set.add(k));\n declaredRes.set(name, set);\n }\n sinkValues(name).push(shown);\n const obj = !!v && typeof v == 'object';\n const listed = !(obj && (v.abort || v.resources || v.refresh || 'invalidate' in v || 'prefetch' in v));\n const value = typeof shown == 'string' ? {url: shown} : shown;\n if (listed) requests(name).push(value);\n if (!track) return;\n // 2-C: a socket value goes to the fake's socket driver (it reports SYG610/SYG611 itself)\n if (obj && sockValue(v)) return sockRecord(fake(name).ws, v);\n const f = fake(name);\n sending = listed ? value : undefined;\n try { f.in$.shamefullySendNext(v); } finally { sending = tapped = undefined; }\n };\n const names = Object.keys(model).filter(n => n != 'INITIALIZE');\n // GS-1: a behavior's actions ('pager.NEXT') can be simulated too; behaviors.ts merges these\n // marked streams (__sygnalTestActions) with the behavior's own trigger\n const uses = componentDef.uses || {};\n for (const k in uses) for (const a in uses[k]?.model || {}) names.push(k + '.' + a);\n // G-275: the caller's initialState is owned (the dev statics freeze leaves it alone). G-289: a\n // copy is marked, not the caller's object\n const init = initialState !== undefined ? ownedCopy(initialState) : componentDef.initialState;\n // G-028: with no intent, model or initialState nothing would ever emit state, so the view\n // never renders. Leave intent/model unset so the component falls back to the same no-op\n // model run() uses, and renders.\n // (behavior actions count: a host with only `uses` still gets the simulateAction streams)\n const bare = !intent && !Object.keys(model).length && !names.length && init === undefined;\n let started = false;\n const onEvents = (path: string[], type: string, on?: boolean) => {\n const k = path.join('\\u0000');\n if (on === undefined) {\n if (!listeners.has(k)) listeners.set(k, path), newListener = true;\n (evTypes[k] = evTypes[k] || []).push(type);\n } else {\n // G-039: subscribed / unsubscribed listeners (a just-mounted child subscribes late)\n const lk = k + '\\u0000' + type;\n live.set(lk, (live.get(lk) || 0) + (on ? 1 : -1));\n // (the core subscribes the intent while starting, before retry exists: a microtask\n // later; G-299: not at all when the start threw)\n if (on) started ? retry(0) : queueMicrotask(() => { if (started) retry(0); });\n }\n };\n // E4: the real DOM driver (as run() sets it up) patching into a fresh container\n let container: Element | null = null;\n let realDOM: any;\n if (real) {\n container = document.createElement('div');\n // a class, not an attribute: the DOM driver's first patch keeps only the root's id and class\n container.className = 'sygnal-test';\n document.body.appendChild(container);\n // G-537 / G-550: a patch error goes through run()'s reporter (start() gives it to the driver's\n // isolate module): the onError option (G-547: one that throws is logged) and the hooks' onError;\n // console.error without an onError\n realDOM = makeDOMDriver(container);\n }\n // 4-A1: real-mode patch tracking. Every vtree the DOM sink emits is tagged with the number\n // of states recorded when it rendered (renderNo); the driver's input is gated so the harness\n // knows which render is in the DOM (patchedUpTo, lastPatched) and can hold a newer one back\n // while a wait resolves (holds: the state index a wait resolved at; a vtree rendered after a\n // newer state waits in `held` until the waiting code has run, i.e. the next macrotask).\n const renderNo = new WeakMap<object, number>();\n let patchedUpTo = 0, lastPatched: any, held: any, gateOut: any;\n const holds: number[] = [];\n const tagOf = (v: any) => renderNo.get(v) ?? states.length;\n // G-348: each emitted tree is tagged when it arrives, in both listeners (the gate runs first:\n // the driver subscribes before the harness). A view that runs again with the same output\n // re-emits its last vnode (P46-P), so the tag left from the earlier emission would read as a\n // stale render and hold every input until the next real render\n const tagTree = (v: any) => { if (v && typeof v == 'object') renderNo.set(v, viewTag || states.length); };\n const holdLimit = () => (holds.length ? Math.min(...holds) + 1 : Infinity);\n // G-538: the patches the driver has made (a fragment root never gets an element: flattened, its\n // children are patched into the container; and a View Transition patches later)\n let patches = 0;\n const toDOM = (v: any) => {\n // the driver patches synchronously when the document is ready; snabbdom sets vnode.elm\n const p = patches;\n gateOut?.next(v);\n if (v?.elm || v && patches > p) patchedUpTo = Math.max(patchedUpTo, tagOf(v)), lastPatched = v;\n };\n const gated = (vnode$: any) => {\n let l: any;\n return xs.create({\n start(out: any) {\n gateOut = out;\n vnode$.addListener(l = {\n next: (v: any) => {\n tagTree(v);\n // (a state replaced before it ever rendered isn't waited for: the newer render goes in)\n if (tagOf(v) > holdLimit() && patchedUpTo >= holdLimit()) held = v;\n else { held = undefined; toDOM(v); }\n },\n error: (e: any) => out.error(e),\n complete: () => out.complete(),\n });\n },\n stop() { vnode$.removeListener(l); gateOut = undefined; },\n });\n };\n const release = (h: number) => {\n const k = holds.indexOf(h);\n if (k < 0) return;\n holds.splice(k, 1);\n if (held && !disposed && tagOf(held) <= holdLimit()) {\n const v = held;\n held = undefined;\n toDOM(v);\n bump();\n }\n };\n // PLAN-3 5-4c: the router fake: the app router's options with an in-memory window (scroll and\n // focus off unless asked for, no Vike navigate), commands the app sent (t.sent), and t.*'s own\n // commands merged into the driver's input (no sender: they go through `block` like a click)\n type RouterFake = {mem: ReturnType<typeof memoryWindow>; r: any; cmd$: any; sent: any[]};\n let rt: RouterFake | undefined;\n if (fakeRouter) {\n const loc = (globalThis as any).location;\n const origin = loc && /^https?:$/.test(loc.protocol) ? loc.origin : 'http://localhost';\n const mem = memoryWindow(new URL(url ?? '/', origin + '/').href, real, (s: string) => queryIn(s), !!(options.routerScroll || options.routerFocus));\n const o = router.options;\n const r = makeRouter({...o, navigate: undefined, location: undefined, history: undefined, document: undefined, window: mem.w,\n scroll: !!options.routerScroll, focus: options.routerFocus ? (typeof options.routerFocus == 'string' ? options.routerFocus : o.focus) : false});\n rt = {mem, r, cmd$: xs.create(), sent: []};\n }\n const routerDriver = (sink$: any) => {\n const f = rt!;\n const app$ = sink$.map((v: any) => {\n // the `{ route }` declarations are the core's, not commands\n if (v && typeof v == 'object' && !('route' in v && Object.keys(v).length == 1)) f.sent.push(v);\n return v;\n });\n return f.r.driver(xs.merge(app$, f.cmd$));\n };\n const hd = drivers[headSink] ? undefined : headFake();\n // PLAN-4 GS-7: the timer fake (the real makeTimerDriver() over a runner map t.timers() reads),\n // unless a driver is passed under timerSink; the test's timers (fake ones too) drive it\n const {timerSink = 'TIMER'} = options;\n const tm = drivers[timerSink] ? undefined : new Map<any, any>();\n // PLAN-5 B-3: the browser fake (the real browser driver over fake sources, browserFake), unless\n // a driver is passed under browserSink; t.browser.* drives it\n const {browserSink = 'BROWSER'} = options;\n const bw = drivers[browserSink] ? undefined : browserFake(options.browser, real);\n // PLAN-4 GS-5: the fake storage a root's persist() uses (the __storage source; see persist.ts)\n const store = options.storage || {}, ps = componentDef.persist && {local: fakeStorage(store), session: fakeStorage(store), f: new Set<() => void>()};\n const allDrivers: any = {\n DOM: real\n ? (vnode$: any, name: string) => {\n const src = realDOM(gated(vnode$), name);\n // G-538: the root element stream emits after each patch (a fragment root has no element)\n src._rootElement$.addListener({next: () => patches++});\n return trackSource(src, [], hub.$, onEvents);\n }\n : () => mockDOMSource(mockConfig, hub.$, onEvents),\n EVENTS: eventBusDriver,\n LOG: logDriver,\n ...(hd && {[headSink]: hd.driver}),\n // (it stands down when a timer driver is passed under another key: one runs the timers)\n ...(tm && {[timerSink]: (s$: any) => timerDriver(tm)(s$.filter(() => !Object.keys(sources || {}).some(k => k != timerSink && sources[k]?.__sygnalStatic == 'timers')))}),\n ...(bw && {[browserSink]: (s$: any, n: string) => browserDriver([bw.src], bw.runners)(s$.filter(() => !Object.keys(sources || {}).some(k => k != browserSink && sources[k]?.__sygnalStatic == 'browser')), n)}),\n ...(rt && {[routerSink]: routerDriver}),\n ...drivers,\n ...(options.onError && {__e: () => options.onError}),\n ...(ps && {__storage: () => ps}),\n };\n const faked = new Set<string>();\n for (const k in model) {\n const e = model[k];\n for (const n of e && typeof e == 'object' ? Object.keys(e) : []) {\n if (!allDrivers[n] && !/^(STATE|EFFECT|PARENT|READY|ELEMENT|PERSIST)$/.test(n)) {\n allDrivers[n] = () => fake(n);\n faked.add(n);\n }\n }\n }\n // G-160, 3-A: the connections / resources statics of any component in the tree get their\n // fakes. The core reads its drivers once, at start, so the two fakes are drivers from the\n // start (unused otherwise)\n for (const n of [socketSink, resourceSink]) {\n if (!allDrivers[n]) { allDrivers[n] = () => fake(n); faked.add(n); }\n }\n // PLAN-4.6 R4: the harness's bookkeeping is a layer of the app's hooks (04 §3.4), recorded\n // from InstanceViews. `api`: the runtime API (simulateAction dispatches through it)\n let api: any;\n const testActions: string[] = [];\n const isRes = (n: string) => RESERVED_SINKS.test(n) || n == 'PERSIST';\n // a component's place in the tree below the root (the child-only fakes' scope path, R4-2)\n const nsCache = new Map<number, any[]>();\n const nsOfView = (iv: any): any[] => {\n if (iv.isRoot) return [];\n let ns = nsCache.get(iv.id);\n if (!ns) {\n const p = api?.get(iv.parentId);\n nsCache.set(iv.id, ns = (p ? nsOfView(p) : []).concat(iv.id));\n }\n return ns;\n };\n const viewScope = (iv: any) => {\n const d = iv.sources.DOM;\n return d && d._hub === hub.$ && (d._path || []).filter(isScope).pop();\n };\n // the child-only sinks of an instance (no driver: its sends are recorded and answered by the fake)\n const childSinks2 = (iv: any) => [...iv.def.sinks].filter((n: string) => !(n in allDrivers) && !isRes(n));\n const replySubs = new Map<any, Array<[any, any]>>();\n const nextHooks = () => {\n const log = actionHooks(actionListener);\n return {\n ...log,\n onCreate(iv: any) {\n log.onCreate(iv);\n bump();\n // (every instance, with or without an intent: SYG104 names the child, inspect() its id)\n const sc = viewScope(iv);\n if (sc) owners.set(sc, iv.name);\n if (iv.sources.DOM?._hub == hub.$) scopeIds.set(sc || '', iv.id);\n senderNames.set(iv.id, iv.name);\n if (iv.def.view?.route && !(routerSink in allDrivers)) failWith(new Error(`[Sygnal] ${iv.name} declares \\`route\\`, and nothing answers it: pass the app's router, renderComponent(${compName}, { router }) (the object makeRouter() returns), or a ${routerSink} driver in drivers`));\n // the replies to its child-only requests (as the core subscribes a driver's replies).\n // G-324: here, for every instance: wrapSources runs only for an instance with an intent\n const extra = childSinks2(iv);\n if (extra.length) {\n const subs: Array<[any, any]> = [];\n for (const n of extra) {\n const r$ = fake(n).at(nsOfView(iv)).replies(iv.id), l = {next: (a: any) => a && api?.dispatch(iv.id, a.type, a.data, 'reply'), error: noop, complete: noop};\n r$.addListener(l);\n subs.push([r$, l]);\n }\n replySubs.set(iv.id, subs);\n }\n },\n wrapSources(iv: any, so: any) {\n const extra = childSinks2(iv);\n if (typeof Proxy != 'function') return;\n // E2 / G-151: a source no driver provides (driver-like name, or one of its sinks) is the\n // scriptable fake, scoped to the component (R4-2)\n let ns: any[] | undefined;\n return new Proxy(so, {\n get: (t: any, k: any) => typeof k == 'string' && !(k in t) && (DRIVER_NAME.test(k) || extra.includes(k)) ? fake(k).at(ns ||= nsOfView(iv)) : t[k],\n has: (t: any, k: any) => k in t || (typeof k == 'string' && extra.includes(k)),\n });\n },\n onRender() { bump(); if (real) viewTag = recorded(); },\n onReducer() { bump(); },\n onNext(iv: any, type: string, _d: any, ms: number) {\n const at = clockNow();\n if (scheduled.length > 50) scheduled.splice(0, scheduled.length - 50);\n scheduled.push({type, delay: ms, at, due: at + ms, by: iv.name});\n },\n // G-064 / G-151: a value on a sink no driver takes: recorded (t.sinkValues, t.requests) and\n // sent to the fake, stamped with its sender and tagged with its place in the tree\n onSink(iv: any, type: any, sink: string, v: any) {\n bump();\n if (type === null || sink in allDrivers || isRes(sink)) return;\n // G-335: only a plain object is copied and stamped (an array or a Date keeps its type)\n if (v && typeof v == 'object' && (Object.getPrototypeOf(v) === Object.prototype || Object.getPrototypeOf(v) === null)) v = Object.defineProperties({...v}, {__emitterId: {value: iv.id, configurable: true}, __emitterName: {value: iv.name, configurable: true}});\n record(sink, nsOfView(iv).reduceRight(tag, v), true);\n },\n onDispose(iv: any) {\n nsCache.delete(iv.id);\n const subs = replySubs.get(iv.id);\n if (subs) { replySubs.delete(iv.id); subs.forEach(([s, l]) => { try { s.removeListener(l); } catch (_) {} }); }\n const sc = viewScope(iv);\n if (!sc) return;\n owners.delete(sc);\n scopeIds.delete(sc);\n listeners.forEach((path, k) => { if (path.filter(isScope).pop() == sc) listeners.delete(k); });\n },\n // t.commands('ELEMENT') records the commands sent and checks them as recordCommands does\n // (SYG641 when sent, unless the dev entry does; mock DOM: SYG640/641 by the view); the\n // mock DOM doesn't run them (false)\n onElementCommand(iv: any, v: any) {\n bump();\n const c = {get name() { return iv.name; }, get _disposed() { return iv.disposed; }, get sources() { return iv.sources; }, DOMSourceName: 'DOM'};\n for (const cmd of ([] as any[]).concat(v)) if (cmd) {\n // G-425: a sygnal/ui target (a selector with a guarded command) is logged as its selector\n const m = typeof cmd == 'object' && Object.keys(cmd)[0], x = m && cmd[m];\n commandLog.push(x?.__sel !== undefined ? {...cmd, [m as string]: x.__sel} : cmd);\n if (!core.__uninstallChecks) checkSentCommand(c, cmd);\n if (!real) checkCommand(c, cmd);\n }\n return real ? undefined : false;\n },\n };\n };\n let sources: any, sinks: any;\n try {\n // the root runs with the test intent, model, initial state and name, and the drivers above.\n // G-325: without an intent, every model action is simulate-only (no false SYG102)\n if (!intent) testActions.push(...names);\n const p = startNext(componentDef, allDrivers, {\n useDefaultDrivers: false, onError: options.onError,\n __hooks: nextHooks(),\n // simulateAction dispatches through the runtime (cause 'simulateAction'), so the root runs\n // its own intent; testActions: the model actions it doesn't name (wiring, inspect())\n __override: {intent: intent ? (s: any) => { const r = intent(s); if (r && typeof r == 'object') testActions.push(...names.filter(n => !(n in r))); return r; } : undefined,\n model: bare ? undefined : model, initialState: init, name: compName, testActions,\n // D214: the ancestors' context as constant entries under the component's own\n ...(ancestors && {context: {...Object.fromEntries(Object.keys(ancestors).map((k) => [k, () => ancestors[k]])), ...componentDef.context}})},\n });\n ({sources, sinks} = p);\n api = p.api;\n } catch (e) {\n restore();\n container?.remove();\n throw e;\n }\n\n started = true;\n const subs: Array<[any, any]> = [];\n const listen = (s: any, next: (v: any) => void) => {\n const l = {next, error: noop, complete: noop};\n s.addListener(l);\n subs.push([s, l]);\n };\n\n const states: any[] = [];\n let syncAt: number | undefined;\n const stateStream: Stream<any> = sources.STATE?.stream || xs.never();\n listen(stateStream, s => {\n states.push(s);\n // PLAN-4.6 R4 (D176): a reducer runs synchronously, so a state caused by input\n // the harness didn't deliver (a real element's click(), a driver answering at once) can be\n // recorded before the test's next() call in the same tick: a next() called in that tick\n // starts at the first such state (internal; a later tick starts after the call, as documented)\n if (syncAt === undefined) { syncAt = states.length - 1; queueMicrotask(() => { syncAt = undefined; }); }\n // 2-C: the actions whose STATE reducer ran since the last state produced this one\n for (const e of awaiting) resulting.set(e, {s});\n awaiting = [];\n bump();\n });\n\n const values: Record<string, any[]> = {};\n const sinkValues = (k: string) => (values[k] = values[k] || []);\n for (const k in sinks) {\n if (k != 'DOM' && k != 'STATE' && typeof sinks[k]?.addListener == 'function') {\n listen(sinks[k], v => record(k, k == 'EVENTS' ? {type: v.type, data: v.data} : k == 'PARENT' ? v.value : v, faked.has(k)));\n }\n }\n // Input queue (G-049/G-039): simulateAction/simulateEvent calls are delivered in order,\n // once the component is ready. An event whose selector matches no rendered element yet, or\n // whose matching listeners aren't subscribed yet, holds the queue until it can be delivered\n // (re-tried on every render), at most eventWaitMs; then it is delivered to the live listeners\n // (or, with no matching element, fails the test, G-070; with allowMissing it is dropped\n // with SYG103).\n type Input = {go: (last: boolean) => boolean, until?: number, wait?: number, at?: number, missing?: () => Error | undefined};\n const inputs: Input[] = [];\n let isReady = false, retryTimer: any;\n const pump = () => {\n if (!isReady || disposed) return;\n while (inputs.length) {\n const head = inputs[0];\n // E4: on the real DOM an input acts on the patched DOM, like a user: it waits until the\n // tree has been quiet for QUIET_MS (at most 100ms), so e.g. a button enabled by the\n // previous input is enabled when it is clicked\n const idle = clockNow() - lastActivity;\n if (real) {\n const waited = clockNow() - (head.at = head.at || clockNow());\n if (idle < QUIET_MS && waited < 100) return retry(QUIET_MS - idle);\n // 4-A1: and every recorded state's render is in the DOM (under load a render can lag the\n // quiet window), at most eventWaitMs; not while a render is held for a resolving wait\n const behind = !!vtree && (lastPatched !== vtree || patchedUpTo < states.length);\n if ((behind && waited < eventWaitMs) || held) return retry(1);\n }\n head.until = head.until || clockNow() + (head.wait ?? eventWaitMs);\n if (!head.go(clockNow() >= head.until)) return retry(5);\n inputs.shift();\n bump();\n }\n };\n const retry = (ms: number) => {\n if (!retryTimer && inputs.length) retryTimer = setTimeout(() => { retryTimer = 0; pump(); }, ms);\n };\n let markReady: () => void;\n // G-065: states.length when the component became ready (before the buffered input was\n // replayed). ready() arms a cursor there (or, when ready() is called on an already-ready\n // component, at the call), so `await t.ready()` doesn't make next() miss the states the\n // replayed input produced. R2-6: every next() call starts at the cursor while it is armed\n // (so `Promise.all([t.next(a), t.next(b)])` both do). It is disarmed by simulateEvent(),\n // simulateAction(), settle(), waitForState(), a later ready() (which re-arms it), and by\n // the first next() that started at it resolving. If no next() has used it by the\n // macrotask after ready() resolves, it expires (an un-awaited ready() in a beforeEach\n // doesn't make a much later next() return an old state).\n let fromInput = false;\n let readyAt = 0, cursor: number | undefined, shown: number | undefined, arming = 0, cursorUsed = false;\n // G-346: one expiry timer at a time, cleared once a next() uses the cursor (no timer is left\n // pending after `await t.next()`, e.g. vi.getTimerCount() under fake timers)\n let expiry: any = 0;\n const unexpire = () => { if (expiry) { clearTimeout(expiry); expiry = 0; } };\n const expire = (id: number) => {\n unexpire();\n expiry = setTimeout(() => { expiry = 0; if (id == arming && !cursorUsed) cursor = undefined; });\n };\n const readyPromise = new Promise<void>(r => {\n markReady = () => {\n // G-346: the fallback (no first render) has nothing left to do\n clearTimeout(fallback);\n readyAt = states.length;\n isReady = true;\n pump();\n r();\n };\n });\n const ready = () => {\n // (D176: a state of this tick, e.g. from a simulate* call just before, is \"now\")\n cursor = isReady ? Math.min(fromInput && cursor !== undefined && cursor >= 0 ? cursor : states.length, syncAt ?? states.length) : -1;\n fromInput = false;\n shown = undefined;\n const id = ++arming;\n cursorUsed = false;\n readyPromise.then(() => { if (id == arming && !cursorUsed && !disposed) expire(id); });\n // 4-A1: on the real DOM, ready() also waits until the first render is in the DOM\n // R4-8: rejected by dispose()\n return drive(new Promise<void>((resolve, reject) => {\n readyWaiters.add(reject);\n (real ? readyPromise.then(() => untilPatched()) : readyPromise).then(() => { readyWaiters.delete(reject); resolve(); });\n }), () => disposed);\n };\n const readyWaiters = new Set<(e: Error) => void>();\n const later = (go: Input['go'], missing?: Input['missing']) => {\n const was = fromInput && cursor !== undefined ? cursor : undefined;\n cursor = shown = undefined;\n // D165: an input's STATE reducer is applied synchronously, so the state it causes can be\n // recorded before the test's next() call: next() starts at the input (several simulate*\n // calls in the same tick: the cursor stays at the first one's state)\n cursor = was ?? states.length;\n if (!fromInput) queueMicrotask(() => { fromInput = false; });\n fromInput = true; cursorUsed = false;\n // G-326: like ready()'s, the cursor expires at the next macrotask unless a next() used it,\n // so a test that moves the clock (or waits) before next() gets the state after the call\n expire(++arming);\n inputs.push({go, missing});\n pump();\n };\n\n let vtree: any;\n let timer: any;\n // states[0 .. renderedUpTo) were recorded before the latest render (1H-12)\n let renderedUpTo = 0;\n const arm = () => timer || (timer = setTimeout(() => markReady(), 12));\n if (sinks.DOM) {\n listen(sinks.DOM, v => {\n vtree = v;\n index(v);\n renderedUpTo = states.length;\n if (real) tagTree(v);\n bump();\n check104();\n arm();\n // E4: the real DOM is patched a microtask after the sink emits\n real ? retry(0) : pump();\n });\n }\n // 1H-4: a component that never renders on its own (a model but no initialState: no state\n // until an action sets it) still becomes ready, so buffered input is delivered.\n // G-176: one that has a state but hasn't rendered it yet is only slow (a loaded machine):\n // keep waiting for its first render (at most timeoutMs), or ready() resolves before it and\n // query() returns null\n const fallbackFrom = clockNow();\n const fallbackCheck = () => {\n if (!timer && sinks.DOM && states.length && clockNow() - fallbackFrom < defaultTimeout) fallback = setTimeout(fallbackCheck, 10);\n else arm();\n };\n let fallback = setTimeout(fallbackCheck, sinks.DOM ? 30 : 0);\n\n const tick = (ms: number) => new Promise(r => setTimeout(r, ms));\n /**\n * G-047: resolves once the root has rendered states[0 .. n) and the whole tree has been\n * quiet (no render, reducer, state or input anywhere) for `quiet` ms, checked twice, so\n * child components have rendered them too. Gives up after `cap` ms (an app that never\n * goes quiet): false.\n */\n const quiesce = async (n: number, quiet: number, cap: number, busy = () => false): Promise<boolean> => {\n const start = clockNow();\n let seen = -1;\n while (!disposed) {\n const idle = clockNow() - lastActivity;\n if (clockNow() - start > cap) return false;\n if ((!sinks.DOM || renderedUpTo >= n || clockNow() - start > 100) && idle >= quiet && !busy()) {\n if (seen === activity) return true;\n seen = activity;\n await tick(3);\n } else {\n seen = -1;\n await tick(Math.max(1, quiet - idle));\n }\n }\n return true;\n };\n const treeRendered = (n: number) => quiesce(n, QUIET_MS, 250);\n /**\n * 4-A1 (real DOM): resolves once a render of states[0 .. n) is in the DOM and either the tree\n * has been quiet for QUIET_MS (children have rendered it too) or a newer state has arrived\n * (its render is held back by the caller's hold, so the DOM still shows state n - 1). A state\n * that never renders (same view) counts after 100ms of quiet. Gives up after 250ms.\n */\n const patchedTree = async (n: number): Promise<void> => {\n const start = clockNow();\n let seen = -1;\n while (!disposed && clockNow() - start <= 250) {\n const idle = clockNow() - lastActivity;\n const current = !vtree || lastPatched === vtree;\n if (patchedUpTo >= n && (held || states.length > n)) return;\n if ((patchedUpTo >= n || clockNow() - start > 100) && current && idle >= QUIET_MS) {\n if (seen === activity) return;\n seen = activity;\n await tick(3);\n } else {\n seen = -1;\n await tick(Math.max(1, QUIET_MS - idle));\n }\n }\n };\n /** 4-A1 (real DOM): until the latest render is in the DOM (at most 250ms) */\n const untilPatched = async (): Promise<void> => {\n const start = clockNow();\n while (!disposed && vtree && (lastPatched !== vtree || held) && clockNow() - start <= 250) await tick(1);\n };\n\n // G-070: a simulateEvent whose selector matches nothing fails the test. The error rejects\n // the pending next()/waitForState()/settle() calls; with none pending it is kept and thrown\n // by the next simulate*/wait/expectNoDiagnostics()/dispose() call.\n let failure: Error | undefined;\n const waiters = new Set<(e: Error) => void>();\n const failWith = (e: Error) => {\n if (!waiters.size) return void (failure = failure || e);\n const ws = [...waiters];\n waiters.clear();\n ws.forEach(r => r(e));\n };\n const takeFailure = () => { const f = failure; failure = undefined; return f; };\n const throwFailure = () => { const f = takeFailure(); if (f) throw f; };\n const noMatch = (selector: string, type: string, waited: boolean) => {\n const out = renderHtml();\n return new Error(`[Sygnal] simulateEvent('${selector}', '${type}'): the selector matched nothing in the rendered output` +\n (waited ? ` (waited ${eventWaitMs}ms for it to render; the eventWaitMs option sets this)` : '') +\n `. Check t.html() to see what rendered, or give the element an attribute and select it, e.g. [data-id=\"3\"]` +\n ` (pass { allowMissing: true } to drop the event instead).\\nRendered: ${out.length > 600 ? out.slice(0, 600) + '…' : out || '(nothing)'}`);\n };\n\n const due = () => {\n const n = ++dueSeq;\n sendDue = true;\n Promise.resolve().then(noop).then(noop).then(noop).then(() => { if (n == dueSeq) sendDue = false; });\n };\n const simulateAction = (type: string, data?: any) => {\n simAt = states.length; due();\n throwFailure();\n later(() => (api.dispatch('root', type, data, 'simulateAction'), true));\n };\n\n // E2: t.respond / t.fail. PLAN-3 1-C: the request is chosen by content (G-140, E2 13-t4):\n // a string is an ok/error action name, key or category; a function a predicate; an object\n // (or `{ request }`) a partial request compared by value, preferring the very object of\n // t.requests among equal ones. With no target: the newest pending request.\n // When to pick: a call made while simulate*/respond/fail calls are still queued, or before\n // the component is ready, is queued behind them and picks its request when it is delivered,\n // waiting up to 1s for it (a debounce); otherwise the request must be pending at the call,\n // or the call throws (`expect(() => t.respond(...)).toThrow()`).\n // The returned promise resolves once the reply has been reduced and the tree rendered. A\n // failure later on rejects it; when nothing awaits it, it also fails the next wait.\n const replyWaits = new Set<(e?: Error, quiet?: boolean) => void>();\n const OPTION_KEYS = ['category', 'request', 'status', 'body', 'nth'];\n type Target = {match: (r: Pending) => boolean; exact?: any; desc: string; push?: boolean; o: any};\n // a pending request is matched by its t.requests form (`value`): a string request is { url },\n // a resource fetch carries `resource: name`\n const targetOf = (opts: any): Target => {\n const isOpts = !!opts && typeof opts == 'object' && !Array.isArray(opts) && Object.keys(opts).every(k => OPTION_KEYS.includes(k));\n const o = isOpts ? opts : {};\n // request: null pushes a value no request asked for (a source that emits on its own)\n if (isOpts && o.request === null) return {match: () => false, desc: '', push: true, o};\n let tg = isOpts ? o.request : opts;\n if (isOpts && typeof tg == 'string') tg = {url: tg};\n const cat = 'category' in o ? (r: Pending) => r.category === o.category : () => true;\n if ('nth' in o && !Number.isInteger(o.nth)) throw new Error(`[Sygnal] t.respond/t.fail: nth must be an integer (a position in t.requests(name): 0 the first, -1 the newest; got ${brief(o.nth)})`);\n const catDesc = ('category' in o ? ` with category '${o.category}'` : '') + ('nth' in o ? ` at nth: ${o.nth}` : '');\n if (tg === undefined) return {match: cat, desc: catDesc, o};\n if (typeof tg == 'string') {\n // an ok/error action name, key, category, resource name or URL\n return {match: r => { const v = r.value || {}; return cat(r) && [v.ok, v.error, v.key, v.category, r.res, v.url].includes(tg); }, desc: ` matching '${tg}'${catDesc}`, o};\n }\n if (typeof tg == 'function') {\n return {match: r => { try { return cat(r) && !!tg(r.value); } catch (_) { return false; } }, desc: ` matching the predicate${catDesc}`, o};\n }\n if (tg && typeof tg == 'object') {\n const keys = Object.keys(tg);\n return {match: r => cat(r) && !!r.value && keys.every(k => same(tg[k], r.value[k])), exact: isOpts ? o.request : tg, desc: ` matching ${brief(tg)}${catDesc}`, o};\n }\n throw new Error(`[Sygnal] t.respond/t.fail: the target must be an action name, key, category, resource name or URL, a request object, a predicate or { request, category, status, body } options (got ${typeof tg})`);\n };\n // 6-B (G-185): `nth` picks one request of t.requests(name) (those matching the rest of the\n // target) by position, pending or not: identical requests can't be told apart by content\n const nthOf = (name: string, tg: Target): {list: Pending[]; hit?: Pending} => {\n const ps = fakes.get(name)?.pending || [];\n const list = requests(name).map(v => ps.find(p => p.value === v) ||\n {value: v, req: v, category: v?.category, res: v?.resource, live: false, settle: noop} as Pending).filter(tg.match);\n const n = tg.o.nth;\n return {list, hit: list[n < 0 ? list.length + n : n]};\n };\n const pick = (name: string, tg: Target): Pending | undefined => {\n if ('nth' in tg.o) {\n const {hit} = nthOf(name, tg);\n return hit?.live ? hit : undefined;\n }\n const live = (fakes.get(name)?.pending || []).filter(r => r.live && tg.match(r));\n return (tg.exact !== undefined && live.filter(r => r.value === tg.exact || r.req === tg.exact).pop()) || live.pop();\n };\n const noPending = (what: string, name: string, tg: Target, waited: number) => {\n if ('nth' in tg.o) {\n const {list, hit} = nthOf(name, tg), all = requests(name).length;\n return new Error(`[Sygnal] ${what}: ` + (hit\n ? `t.requests('${name}')[${requests(name).indexOf(hit.value)}] (the one${tg.desc}) is not pending: it was answered, aborted, or superseded by a later latest: true request or a refetch of its resource. That is what expect(() => t.respond(...)).toThrow() asserts.`\n : `no pending ${name} request${tg.desc}${waited ? ` after ${waited}ms` : ''}: t.requests('${name}') has ${list.length} request${list.length == 1 ? '' : 's'}${list.length < all ? ` matching (${all} in all)` : ''}.`));\n }\n const sent = requests(name).length, live = fakes.get(name)?.pending.filter(r => r.live) || [];\n return new Error(`[Sygnal] ${what}: no pending ${name} request${tg.desc}${waited ? ` after ${waited}ms` : ''}. ` +\n (live.length ? `Pending: ${live.map(r => brief(r.value)).join(', ')}. ` : '') +\n (sent ? `The component sent ${sent} (t.requests('${name}'))${live.length ? '; the others were' : ','} all answered, aborted or superseded by a later latest: true request.` :\n `The component sent none: check the model entry that returns the ${name} request (t.requests('${name}') is empty).`) +\n (waited ? '' : ` t.respond/t.fail answer a request already sent, or one sent by the simulate* calls queued before them: wait for a later one first (await t.next(...) or t.settle()).`));\n };\n /**\n * 5-1: `deliver(e, o)` settles the pending fetch `e` (the driver then routes the reply);\n * `payload(category, o, e?)` is what select()/errors() would get, for a `request: null` push\n * and for the \"nothing receives it\" check on a plain reply.\n */\n const reply = (fn: string, name: string, err: boolean, opts: any, deliver: (e: Pending, o: any) => void, payload: (category: any, o: any, e?: Pending) => any): Promise<void> => {\n throwFailure();\n if (drivers[name]) throw new Error(`[Sygnal] t.${fn}('${name}'): ${name} has a real driver (passed in drivers), so there is nothing to script. t.respond/t.fail answer the fake source renderComponent provides when no driver is passed`);\n const tg = targetOf(opts);\n const what = `t.${fn}('${name}'${typeof opts == 'string' ? `, …, '${opts}'` : ''})`;\n // a resource named by the target may still be about to fetch (its request follows the state\n // change): queue the call like one made behind queued input\n const later = typeof opts == 'string' && !!declaredRes.get(name)?.has(opts) && states.length <= simAt ||\n // G-189: called at once after a simulate* call, on a sink that carries `resources`: the\n // requests it causes leave two microtasks later (G-158), so the call waits for them.\n // G-218: so does any request: behind a same-tick STATE reducer (several queued simulate*\n // calls), an action's non-STATE sinks run in a microtask (B-003)\n sendDue && !tg.push && !('nth' in tg.o);\n return scripted(() => tg.push ? {} : pick(name, tg), w => noPending(what, name, tg, w), hit => {\n const f = fake(name), o = tg.o;\n const e: Pending | undefined = tg.push ? undefined : hit;\n const category = 'category' in o ? o.category : e?.category;\n // the driver delivers a resource's reply, and a reply action for a request that names one\n // for this outcome (from a component), as that action; a prefetch into the cache; anything\n // else on select()/errors()\n if (e && (e.res !== undefined || e.pf || (senderOf(e.req) !== undefined && (err ? e.req.error : e.req.ok)))) return deliver(e, o);\n const data = payload(category, o, e);\n let heard = false;\n f.subs.forEach(sub => {\n let hit = false;\n // a pushed value no request asked for (request: null) reaches every scope\n try { hit = sub.err === err && (!e || inScope(sub.ns, e.req)) && (sub.sel === undefined || (typeof sub.sel == 'function' ? sub.sel(data) : sub.sel === category)); } catch (_) {}\n if (hit) { heard = true; if (!e) sub.l.next(data); }\n });\n if (heard) return e && deliver(e, o);\n if (e) e.live = false;\n const ls = [...f.subs].filter(x => x.err === err).map(x => `${name}.${err ? 'errors' : 'select'}(${x.sel === undefined ? '' : typeof x.sel == 'function' ? 'fn' : `'${x.sel}'`})`);\n return new Error(`[Sygnal] ${what}: nothing receives it: no intent listens to ${name}.${err ? 'errors' : 'select'}(${category === undefined ? '' : `'${category}'`})` +\n (ls.length ? ` (listening: ${ls.join(', ')})` : '') + `. ` +\n (err ? `Name a reply action for the failure (error: 'FAILED' on the request), or handle it in the intent, e.g. FAILED: ${name}.errors('${category ?? 'category'}'), so a failed request can't leave the component loading.` :\n `Name a reply action for the reply (ok: 'LOADED' on the request), or select it in the intent, e.g. LOADED: ${name}.select('${category ?? 'category'}').`));\n }, later);\n };\n /**\n * G-140 / PLAN-3 1-C: a scripted input (t.respond/t.fail, 2-C's t.open/t.push/t.drop). With\n * nothing queued before it and the component ready, `find()` must match now or the call\n * throws `none(0)`; otherwise it is queued and finds its target when delivered, waiting up to\n * 1s (half of timeoutMs if lower). `act(hit)` delivers it (an Error: it failed). The promise\n * resolves once the result has been reduced and the whole tree rendered.\n */\n const scripted = (find: () => any, none: (waited: number) => Error, act: (hit: any) => Error | void, later = false): Promise<void> => {\n throwFailure();\n if (isReady && !inputs.length && !disposed && !later && !find()) throw none(0);\n let ok!: () => void, ko!: (e: Error) => void, seen = false, open = true;\n const inner = new Promise<void>((a, b) => { ok = a; ko = b; });\n inner.catch(noop);\n const out = new Reply((a, b) => inner.then(a, b));\n Promise.prototype.then.call(out, undefined, noop);\n out._seen = () => {\n if (seen) return;\n seen = true;\n // E11: under fake timers, an awaited reply drives the clock like the harness's waits\n if (open && fakeClock()) drive(inner, () => disposed).catch(noop);\n };\n const settle = (e?: Error, quiet?: boolean) => {\n if (!open) return;\n open = false;\n replyWaits.delete(settle);\n if (!e) return ok();\n if (!seen && !quiet) failWith(e);\n ko(e);\n };\n replyWaits.add(settle);\n const wait = Math.min(1000, defaultTimeout / 2);\n const input: Input = {\n // up to 1s (half of timeoutMs if lower), so a wait (next/settle) still times out later\n wait,\n go: last => {\n const hit = find();\n if (!hit) {\n if (!last) return false;\n settle(none(wait));\n return true;\n }\n const failed = act(hit);\n if (failed) {\n settle(failed);\n return true;\n }\n // resolved once the reply has been reduced and the whole tree rendered (in the DOM)\n treeRendered(states.length).then(() => real ? untilPatched() : undefined).then(() => settle(), noop);\n return true;\n },\n };\n cursor = shown = undefined;\n inputs.push(input);\n pump();\n return out;\n };\n // PLAN-5 B-3: t.browser, the browser fake's controls. An event-like input (intersect, resize,\n // geolocation) must reach a declaration (else it throws, as t.respond); an environment change\n // (media, storage, visibility, online, clipboard) is kept and sent to the declarations of it\n const bwOf = (what: string) => {\n if (!bw) throw new Error(`[Sygnal] t.browser.${what}(): ${browserSink} has a real driver (passed in drivers); t.browser drives the fake renderComponent provides when no driver is passed`);\n return bw;\n };\n const toLive = (what: string, k: string, key: any, at: number | undefined, f: (e: any) => void) => {\n const b = bwOf(what);\n const hits = () => { const l = [...b.live].filter(e => e.k == k && (key === undefined || e.s[k] === key)); return at === undefined ? l : l.slice(at, at + 1); };\n const desc = `${k}${key === undefined ? '' : ` ${typeof key == 'string' ? `'${key}'` : key}`}`;\n return scripted(() => hits().length ? hits() : undefined,\n (waited) => new Error(`[Sygnal] t.browser.${what}(): nothing declares ${desc}${at === undefined ? '' : ` at ${at}`}${waited ? ` (waited ${waited}ms)` : ''}. Declared: ${[...b.live].map(e => `${e.k} ${JSON.stringify(e.s[e.k])}`).join(', ') || 'none'}`),\n (l: any[]) => { l.forEach(f); });\n };\n const envChange = (what: string, f: (b: any) => void) => { const b = bwOf(what); return scripted(() => true, () => new Error(''), () => { f(b); }); };\n const tBrowser = {\n intersect: (target: string | true, visible = true, o: any = {}) => {\n const {at, ...d} = o;\n return toLive('intersect', 'intersection', target, at, e => e.c.send({visible, ratio: visible ? 1 : 0, index: 0, dataset: {}, ...d}));\n },\n resize: (target: string | true, size: any) => {\n const {at, ...d} = size || {};\n return toLive('resize', 'resize', target, at, e => e.c.send({width: 0, height: 0, index: 0, dataset: {}, ...d}));\n },\n geolocation: (p: any) => {\n const err = p && 'code' in p;\n if (!err) bwOf('geolocation').env.pos = p;\n return toLive('geolocation', 'geolocation', undefined, undefined, e => err ? e.c.fail({code: p.code, message: p.message ?? ''}) : e.c.send(bw!.pos(p)));\n },\n media: (query: string, matches: boolean) => envChange('media', b => { b.env.media[query] = matches; b.each('media', (e: any) => e.c.send({matches, media: query}), query); }),\n visibility: (visible: boolean) => envChange('visibility', b => { b.env.visible = visible; b.each('visibility', (e: any) => e.c.send({visible})); }),\n online: (online: boolean) => envChange('online', b => { b.env.online = online; b.each('online', (e: any) => e.c.send({online})); }),\n storage: function (key: string, value?: any, area: 'local' | 'session' = 'local'): any {\n if (arguments.length < 2) return bwOf('storage').env[area == 'session' ? 'session' : 'local'][key] ?? null;\n return envChange('storage', b => b.write(key, value, area));\n },\n clipboard: function (text?: string): any {\n if (!arguments.length) return bwOf('clipboard').env.clip;\n return envChange('clipboard', b => { b.env.clip = '' + text; });\n },\n deny: (...kinds: string[]) => {\n const b = bwOf('deny');\n kinds.forEach(k => b.env.deny.add(k));\n if (kinds.includes('geolocation')) b.each('geolocation', (e: any) => e.c.fail(b.DENIED));\n },\n active: () => {\n const b = bwOf('active'), list: any[] = [];\n b.runners.forEach((r: any) => { for (const name in r.on) { const {s} = r.on[name]; if ([...b.live].some((e: any) => e.s === s)) list.push({name, ...s, component: r.c}); } });\n return list;\n },\n };\n // 5-1: the fetch resolves with a Response-like object (status, the body as JSON, or text for a\n // string), which the driver parses as it would a server's (a Response passed in is used as is)\n const urlOf = (e: Pending) => e.value?.url ?? e.req.url ?? '';\n const respond = (name: string, value: any, opts?: FakeReplyTarget) =>\n reply('respond', name, false, opts,\n (e, o) => e.settle(true, typeof Response == 'function' && value instanceof Response ? value : fakeResponse(o.status ?? 200, value, urlOf(e))),\n (category, o, e) => ({category, value, status: o.status ?? 200, request: e?.req}));\n // 5-1: a number (or a `status` option) is an HTTP error response the driver turns into its\n // Error('HTTP 404: url') with `status` / `body`; an Error or a message is a network failure\n // (the fetch rejects with it)\n // D199: `{ status, body }` (not an Error) is an error response too, as the JSDoc says\n const failureOf = (error: any, o: any) => {\n const resp = !!error && typeof error == 'object' && !(error instanceof Error) && typeof error.status == 'number';\n const status = typeof error == 'number' ? error : resp ? error.status : o.status;\n const x = typeof error == 'string' ? new Error(error) : error;\n return {status, x, resp, body: o.body ?? (x && typeof x == 'object' ? x.body : undefined)};\n };\n const fail = (name: string, error: any, opts?: FakeReplyTarget) =>\n reply('fail', name, true, opts,\n (e, o) => {\n const {status, x, body} = failureOf(error, o);\n status !== undefined ? e.settle(true, fakeResponse(status, body, urlOf(e))) : e.settle(false, x);\n },\n (category, o, e) => {\n const {status, x, resp, body} = failureOf(error, o);\n const err = typeof error == 'number' || resp ? Object.assign(new Error(`HTTP ${status}`), {status}) : x;\n return {error: err, category, request: e?.req, status: status ?? x?.status, body};\n });\n\n // PLAN-3 2-C: socket fakes. t.connections lists what the components declared; t.open /\n // t.push / t.drop act on the fake sockets serving the connections `target` picks (a name or\n // URL, a partial connection, a predicate; nothing: the newest socket that can take the call),\n // with t.respond's rules (scripted()): they throw at the call when nothing matches.\n const conns = (name: string): Conn[] => [...(fakes.get(name)?.ws.conns.values() || [])].flatMap(m => [...m.values()]);\n const connections = (name: string) => conns(name).map(sockView);\n // 5-3: the driver's own view of its cache; t.focus / t.online fire the fake drivers' signals\n const cache = (name: string) => fake(name).http.__inspect().cache || [];\n const signal = (s: string) => later(() => (signals.forEach(f => f(s)), true));\n const sent = (name: string, to?: string) => {\n const all = fake(name).ws.sent;\n return to === undefined ? all : all.filter(v => v.to === to);\n };\n const connTarget = (tg: any): [(c: Conn) => boolean, string] => {\n if (tg === undefined) return [() => true, ''];\n if (typeof tg == 'string') return [c => c.name === tg || c.url === tg || (c.sse ? c.spec.sse : c.spec.socket) === tg, ` matching '${tg}'`];\n if (typeof tg == 'function') return [c => { try { return !!tg(sockView(c)); } catch (_) { return false; } }, ' matching the predicate'];\n if (tg && typeof tg == 'object') {\n return [c => { const v: any = sockView(c); return Object.keys(tg).every(k => same(tg[k], v[k])); }, ` matching ${brief(tg)}`];\n }\n throw new Error(`[Sygnal] the connection target must be a connection name or URL, a partial connection ({ socket: '/ws/a' }) or a predicate (got ${typeof tg})`);\n };\n const sockCall = (fn: string, name: string, tg: any, states: number[], act: (s: any) => void): Promise<void> => {\n if (drivers[name]) throw new Error(`[Sygnal] t.${fn}('${name}'): ${name} has a real driver (passed in drivers), so there is nothing to script. t.${fn} drives the fake socket source renderComponent provides when no driver is passed`);\n const [match, desc] = connTarget(tg);\n const kind = states.length > 1 ? 'open or connecting' : states[0] ? 'open' : 'connecting';\n const w = () => fake(name).ws;\n const find = () => {\n const ok = new Set<any>();\n // (autoConnect: a socket about to open counts as open)\n conns(name).forEach(c => { if (c.s && states.includes(c.s.auto && !c.s.readyState ? 1 : c.s.readyState) && match(c)) ok.add(c.s); });\n const list = [...ok];\n return list.length ? (tg === undefined ? [list.sort((a, b) => w().sockets.indexOf(a) - w().sockets.indexOf(b)).pop()] : list) : undefined;\n };\n const none = (waited: number) => {\n const list = connections(name);\n return new Error(`[Sygnal] t.${fn}('${name}'${desc ? ', …' : ''}): no ${kind} ${name} connection${desc}${waited ? ` after ${waited}ms` : ''}. ` +\n (list.length ? `Connections: ${list.map(c => `${c.name} (${c.socket ?? c.sse}, ${c.state})`).join(', ')}.` :\n `None is declared: declare it with { connections: { room: { socket: '/ws/…' } } } on the ${name} sink first (t.connections('${name}') is empty).`) +\n (states.includes(1) && list.some(c => c.state == 'connecting') ? ` A connecting one (autoConnect: false) opens with t.open('${name}').` : '') +\n (!states.includes(1) && autoConnect ? ` With autoConnect (the default) connections open by themselves: renderComponent(C, { autoConnect: false }) holds them for t.open.` : '') +\n (waited ? '' : ` A call made while simulate* / t.* calls are still queued waits for them; otherwise the connection must be there at the call.`));\n };\n return scripted(find, none, (hit: any[]) => hit.forEach(s => {\n if (s.auto && !s.readyState) sockOpen(s);\n act(s);\n }));\n };\n const open = (name: string, target?: FakeConnectionTarget) => sockCall('open', name, target, [0], sockOpen);\n const push = (name: string, data: any, target?: any) => {\n const o = target && typeof target == 'object' && !Array.isArray(target) && Object.keys(target).length && Object.keys(target).every(k => k == 'event' || k == 'connection') ? target : {connection: target};\n const raw = typeof data == 'string' || (data && typeof data == 'object' && (data instanceof ArrayBuffer || ArrayBuffer.isView(data) || (typeof Blob != 'undefined' && data instanceof Blob))) ? data : JSON.stringify(data);\n const ev = o.event;\n return sockCall('push', name, o.connection, [1], s => {\n const m = {type: ev || 'message', data: raw};\n if (!ev || ev == 'message') sockFire(s, 'message', m);\n if (s.sse) (s.ls[ev || 'message'] || []).forEach((f: any) => { try { f(m); } catch (e) { console.error(e); } });\n });\n };\n const drop = (name: string, close?: any, target?: any) => {\n const info = close && typeof close == 'object' && !Array.isArray(close) && Object.keys(close).every(k => k == 'code' || k == 'reason');\n const tg = info || close === undefined ? target : close;\n const {code = 1006, reason = ''} = info ? close : {};\n return sockCall('drop', name, tg, [0, 1], s => {\n const connecting = s.readyState == 0;\n if (s.sse) {\n // EventSource gave up (CLOSED): the driver's reconnect applies\n s.readyState = 2;\n return sockFire(s, 'error', {type: 'error'});\n }\n s.readyState = 3;\n if (connecting) sockFire(s, 'error', {type: 'error'});\n sockFire(s, 'close', {type: 'close', code, reason, wasClean: false});\n });\n };\n // PLAN-3 5-4c: the router fake's test API. t.navigate / t.back / t.forward follow\n // t.respond's rules (scripted()): they throw at the call when they can't act, and resolve once\n // the result has been reduced and rendered.\n const needRouter = (fn: string): RouterFake => {\n if (rt) return rt;\n throw new Error(drivers[routerSink]\n ? `[Sygnal] t.${fn}(): ${routerSink} has a real driver (passed in drivers), so there is no in-memory history to drive. Drop it from drivers and pass the app's router: renderComponent(${compName}, { router })`\n : `[Sygnal] t.${fn}() needs the router fake: renderComponent(${compName}, { router }), with the object makeRouter() returns (import { router } from './routes.js')`);\n };\n const navigate = (target: any): Promise<void> => {\n const f = needRouter('navigate'), routes = f.r.routes, L = f.mem.w.location;\n let cmd: any;\n if (typeof target == 'string') {\n // an href, as a link has it: navigating to it is what a click on that link does\n const u = new URL(target, L.href);\n if (u.origin != L.origin) throw new Error(`[Sygnal] t.navigate('${target}'): that URL is on another origin (${u.origin}, the test's is ${L.origin}); the router leaves external links to the browser. Navigate to a path: t.navigate('/tasks/2')`);\n cmd = {url: u.pathname + u.search + u.hash};\n } else if (target && typeof target == 'object' && typeof target.to == 'string') {\n const pat = routes[target.to];\n if (pat == null || pat == '*') throw new Error(`[Sygnal] t.navigate({ to: '${target.to}' }): no route named '${target.to}'. Routes: ${Object.keys(routes).filter(k => routes[k] != '*').join(', ')}`);\n const missing = paramsOf(pat).filter(k => target.params?.[k] == null);\n if (missing.length) throw new Error(`[Sygnal] t.navigate({ to: '${target.to}' }): route '${target.to}' (${pat}) needs params: ${missing.join(', ')}. t.navigate({ to: '${target.to}', params: { ${missing.join(', ')} } })`);\n cmd = {...target};\n } else {\n throw new Error(`[Sygnal] t.navigate(): pass a URL ('/tasks/2') or { to: 'task', params: { id: 2 }, query?, hash?, replace? } (got ${brief(target)})`);\n }\n return scripted(() => true, () => new Error(''), () => { f.cmd$.shamefullySendNext(cmd); });\n };\n // the browser's back / forward buttons: the history moves, popstate fires a task later\n const traverse = (fn: string, n: number): Promise<void> => {\n const f = needRouter(fn), can = () => f.mem.index() + n >= 0 && f.mem.index() + n < f.mem.size();\n return scripted(can, w => new Error(`[Sygnal] t.${fn}(): no history entry to go ${n < 0 ? 'back' : 'forward'} to${w ? ` after ${w}ms` : ''} (at ${f.mem.w.location.pathname}, entry ${f.mem.index() + 1} of ${f.mem.size()}). Navigate first: await t.navigate('/…')`),\n () => { f.mem.w.history.go(n); });\n };\n const routerLocation = () => {\n const L = needRouter('location').mem.w.location;\n return {path: L.pathname, search: L.search, hash: L.hash, href: L.href};\n };\n // mock DOM: a click on (or inside) an <a> also reaches the router's document click listener,\n // as it would bubble to the document: the driver's own interception decides\n const routerClick = (chain: any[], ev: any) => {\n const ls = rt?.mem.docLs.click;\n if (!ls?.length) return;\n let k = chain.length - 1;\n while (k >= 0 && String(chain[k]?.sel || '').split(/[.#]/)[0].toLowerCase() != 'a') k--;\n if (k < 0) return;\n const a = anchorOf(chain[k]);\n const e: any = {\n type: 'click', button: 0, metaKey: false, ctrlKey: false, shiftKey: false, altKey: false, ...ev,\n defaultPrevented: !!ev.defaultPrevented, target: a, composedPath: () => [a],\n preventDefault() { e.defaultPrevented = true; },\n };\n ls.slice().forEach((l: any) => l(e));\n };\n const sentTo = (name: string, to?: string) => (rt && name == routerSink ? rt.sent : sent(name, to));\n const head = () => {\n if (!hd) throw new Error(`[Sygnal] t.head(): ${headSink} has a real driver (passed in drivers), so the fake that records the head isn't there. Read the document it writes, or drop it from drivers`);\n const m = mergeHead([...hd.entries.values()], titleTemplate);\n return {title: m.title, meta: Object.fromEntries(m.meta.map(([, k, c]) => [k, c])), link: m.link.map(([, l]) => l)};\n };\n\n // E4: where real elements are looked up: the container, and the Portal content this tree\n // mounted outside it\n const roots = (): Element[] => {\n const out: Element[] = [container!];\n const walk = (v: any) => {\n if (!v || typeof v != 'object') return;\n const pe = v.data?._portalVnode?.elm;\n if (pe && !container!.contains(pe)) out.push(pe);\n for (const k of [].concat(v.children || [], v.data?.portalChildren || [])) walk(k);\n };\n walk(vtree);\n return out;\n };\n // G-125/4-A1: reading the output before the first render can only mislead (null, '')\n const notYet = (call: string) => {\n if (!isReady && !(real ? lastPatched : vtree)) {\n throw new Error(`[Sygnal] ${call} ran before the component's first render${real ? ' was in the DOM' : ''}. Wait for it first: await t.ready() (or await t.next(...))`);\n }\n };\n // 6-B (G-185): on the mock DOM, MockElement snapshots of the latest rendered tree\n const mockAll = (s: string): any[] => findAll(vtree, parse(norm(s)), [], []).map(c => mockOf(c, htmlOf));\n const queryAll = (s: string): Element[] => {\n s = selOf(s);\n notYet(`t.queryAll('${s}')`);\n if (!real) return mockAll(s);\n return roots().flatMap(r => Array.from(r.querySelectorAll(s)));\n };\n const queryIn = (s: string): Element | null => {\n for (const r of roots()) {\n const e = r.querySelector(s);\n if (e) return e;\n }\n return null;\n };\n const query = (s: string): Element | null => {\n s = selOf(s);\n notYet(`t.query('${s}')`);\n if (!real) return mockAll(s)[0] ?? null;\n return queryIn(s);\n };\n\n // PLAN-5 W-1: a widget host (selector or control): the props it was rendered with (the mock\n // DOM: the host vnode's; real: the mounted instance's), its instance (real) and dispatch, which\n // sends the CustomEvent mount's dispatch() would (through simulateEvent, so in input order);\n // D201: emit is an alias\n const widget = (target: any) => {\n const sel = String(selOf(target));\n const host = (): any => {\n const el: any = query(sel);\n const r = real ? el?.__sw : el?._v?.data?.ww && {p: el._v.data.wp};\n if (!r) throw new Error(`[Sygnal] t.widget('${sel}'): no ${el ? `mounted widget is the matched <${el.localName}>` : 'element matches it'}. Give the widget a className and pass its selector (t.widget('.due')), or pass its control`);\n return r;\n };\n const dispatch = (name: string, detail?: any) => simulateEvent(target, name, {detail} as any);\n return {\n get props() { return host().p; },\n get instance() { return host().i; },\n dispatch,\n emit: dispatch,\n };\n };\n\n const simulateEvent = (target: any, type: string, init: SimulatedEventInit = {}) => {\n simAt = states.length; due();\n throwFailure();\n const {allowMissing, within: inside, ...evInit} = init;\n // CT-1: a control is its selector (also for `within`)\n const raw = String(selOf(target)), text = norm(raw);\n // 'document' / 'body' (and '') name a listener, not an element\n const page = !text || PAGE.test(text);\n // CT-1: `within` scopes the target to the first element matching it (e.g. one Collection item)\n const within = inside == null || page ? '' : norm(String(selOf(inside)));\n const selector = within ? `${raw}' within '${within}` : raw;\n // unsupported syntax throws here, at the call (G-070); the real DOM takes any CSS selector\n const sel = page || real ? [] : parse(text);\n const box = within && !real ? parse(within) : undefined;\n if (real && !page) {\n try { container!.querySelector(text); if (within) container!.querySelector(within); } catch (_) {\n throw new Error(`[Sygnal] simulateEvent('${selector}', '${type}'): not a valid CSS selector`);\n }\n }\n // the root → element chain of the target in the mock vtree (inside the `within` element)\n const findChain = (): any[] | undefined => {\n if (!box) return find(vtree, sel);\n const outer = find(vtree, box);\n return outer && findAll(outer[outer.length - 1], sel, outer.slice(0, -1), [], false)[0];\n };\n // E4: the real element: document / body / the root element for '' / the first match\n const realEl = (): any => text == 'document' ? document : text == 'body' ? document.body\n : !text ? container!.firstElementChild\n : within ? queryIn(within)?.querySelector(text)\n : queryIn(text.replace(PAGE, '') || text);\n const has = () => real ? !!realEl() : !!findChain();\n // nothing pending and the tree is quiet (as settle() would see it): fail at the call\n if (!page && !allowMissing && isReady && !inputs.length && vtree && renderedUpTo >= states.length &&\n clockNow() - lastActivity >= settleMs && !has()) {\n throw noMatch(selector, type, false);\n }\n later(last => {\n const rel = real ? realEl() : undefined;\n const chain: any[] | undefined = page ? undefined : real ? rel && (chainOf(vtree, rel) || []) : findChain();\n const el = real ? rel : chain?.[chain.length - 1];\n if (!page && !el) {\n if (!last) return false;\n if (!allowMissing) {\n failWith(noMatch(selector, type, true));\n return true;\n }\n raise('SYG103', rootName,\n `simulateEvent('${selector}', '${type}') matched no rendered element within ${eventWaitMs}ms, so the event was dropped`,\n `Check the selector against the view's className/id, or wait until the element is rendered (await t.next(...) or t.settle())`,\n {selector, type});\n return true;\n }\n // the chain index of the deepest element a listener at `path` hears this event on\n // (-1: a document/body listener), or undefined when it doesn't hear it\n const depthOf = (path: string[]): number | undefined => {\n let ls = selText(path);\n if (!chain) return ls == text ? 0 : undefined;\n let els = chain;\n const pageLs = PAGE.test(ls);\n if (pageLs) ls = ls.replace(PAGE, '');\n else {\n const scope = path.filter(isScope).pop();\n let cur: string | undefined;\n els = chain.filter(v => {\n const m = scopeOfV(v);\n if (m) cur = m;\n return cur == scope;\n });\n }\n if (!ls) return pageLs || !els.length ? -1 : chain.indexOf(els[0]);\n const lsel = tryParse(ls);\n if (!lsel) return undefined;\n for (let k = els.length - 1; k >= 0; k--) {\n if (matches(lsel, els.slice(0, k + 1))) return pageLs ? -1 : chain.indexOf(els[k]);\n }\n return undefined;\n };\n const match = (path: string[]) => depthOf(path) !== undefined;\n // G-039: wait until every listener this event would reach is subscribed\n if (!last) {\n for (const [k, path] of listeners) {\n if ((evTypes[k] || []).includes(type) && !live.get(k + '\\u0000' + type) && match(path)) return false;\n }\n }\n if (real) {\n if (chain?.length) check104(chain[chain.length - 1]);\n fire(el, type, evInit);\n return true;\n }\n if (el) check104(el);\n const d = el?.data || {}, p = d.props || {};\n const {target: t = {}, value, checked, dataset, data, ...rest} = evInit;\n const vval = p.value ?? d.attrs?.value;\n const target: any = {\n tagName: el?.sel.split(/[.#]/)[0].toUpperCase(),\n // D199 (spike 0-S2): name/id/type/getAttribute, so listeners that delegate by name\n // (`e.target.name`, a form-level input listener) work on the mock DOM as on the real one\n ...(el && {name: attrOf(el, 'name') ?? '', id: attrOf(el, 'id') ?? '', type: attrOf(el, 'type') ?? '', getAttribute: (n: string) => attrOf(el, n)}),\n value: vval == null ? vval : String(vval),\n checked: p.checked ?? d.attrs?.checked,\n ...('value' in init && {value}),\n ...('checked' in init && {checked}),\n ...t,\n };\n target.dataset = str({...d.dataset, ...dataset, ...data, ...t.dataset});\n // 3E/R2: element.closest(sel) over the rendered ancestor chain, so helpers that look\n // up ancestors (e.g. `.data('taskId')` on a click inside the row carrying the data)\n // behave like the real DOM. Ancestors are element-like: tagName, dataset, closest.\n if (chain && !('closest' in t)) {\n const like = (i: number): any => {\n const v = chain[i];\n return {tagName: v.sel.split(/[.#]/)[0].toUpperCase(), dataset: str(v.data?.dataset), closest: closestFrom(i)};\n };\n const closestFrom = (from: number) => (s: string): any => {\n const cs = parse(String(s));\n for (let i = from; i >= 0; i--) {\n if (matches(cs, chain.slice(0, i + 1))) return i == chain.length - 1 ? target : like(i);\n }\n return null;\n };\n target.closest = closestFrom(chain.length - 1);\n }\n const noBubble = NO_BUBBLE.test(type);\n const event = {\n type,\n target,\n currentTarget: target,\n ownerTarget: target,\n dataTransfer: {},\n preventDefault: noop,\n stopPropagation: noop,\n bubbles: !noBubble,\n ...rest,\n };\n // G-145: like native bubbling, listeners on deeper elements (a child's) hear the\n // event before those on their ancestors (the parent's wrapper), then document/body.\n // 1-F: an event that doesn't bubble (dialog close, focus, ...) reaches the target only\n if (!chain) hub.emit({type, event, match});\n else for (let k = chain.length - 1; k >= (noBubble ? chain.length - 1 : -1); k--) hub.emit({type, event, match: (p: string[]) => depthOf(p) === k});\n // PLAN-3 5-4c: and a link click reaches the router fake's document listener\n if (type == 'click' && chain) routerClick(chain, event);\n return true;\n }, page || allowMissing ? undefined : () => (has() ? undefined : noMatch(selector, type, false)));\n };\n\n // first state at index >= from matching predicate; resolves after the full tree rendered it\n const waitMatch = (from: number, predicate: (state: any) => boolean, timeoutMs: number, name: string): Promise<any> =>\n new Promise((resolve, reject) => {\n const f = takeFailure();\n if (f) return reject(f);\n // 4-A1: on the real DOM, the wait resolves once the newest state at the match (h) is\n // patched into the DOM, and a render of a later state is held back until the code after\n // the `await` has run (the next macrotask), so t.query() reads the matched state\n let h = -1;\n const unhold = () => { if (h >= 0) { const k = h; h = -1; setTimeout(() => release(k)); } };\n const found = (i: number) => {\n clearTimeout(timer);\n stateStream.removeListener(listener);\n if (real) {\n holds.push(h = states.length - 1);\n patchedTree(h + 1).then(() => {\n waiters.delete(fail);\n // the states after h weren't in the DOM yet: the next next() may still match them\n if (h >= 0) shown = h + 1;\n resolve(states[i]);\n unhold();\n });\n } else {\n // G-129: the next next() starts after this state (as on the real DOM), so a state\n // that arrived while this one's render settled can still match\n treeRendered(i + 1).then(() => { waiters.delete(fail); if (!disposed) shown = i + 1; resolve(states[i]); });\n }\n };\n const test = (i: number) => { try { return predicate(states[i]); } catch (_) { return false; } };\n const fail = (err: Error) => { clearTimeout(timer); stateStream.removeListener(listener); waiters.delete(fail); unhold(); reject(err); };\n waiters.add(fail);\n const base = states.length;\n const listener = {\n // the recording listener (added first) has already pushed the new state; a\n // remembered state replayed on addListener isn't new (states.length == base)\n next: () => { if (states.length > base && test(states.length - 1)) found(states.length - 1); },\n error: (err: any) => fail(err),\n complete: () => fail(new Error(`${name}: state stream completed without matching`)),\n };\n const start = clockNow();\n const timer = setTimeout(() => {\n let msg = `${name} timed out after ${timeoutMs}ms.`;\n const [why, pending] = explainNext(start);\n msg += why;\n if (pending) msg += ` Wait longer: t.${name}(pred, ms), or the renderComponent timeoutMs option (default for every wait).`;\n // G-065: a state from before the call matched; next() only looks at new ones\n for (let i = from - 1; i >= 0; i--) {\n if (test(i)) {\n msg += ` A state recorded before this next() call already matches the predicate (t.states[${i}]); next() only matches new states.` +\n ` Use t.waitForState(pred) to search the history too, or call next() before the input that causes the state.`;\n break;\n }\n }\n fail(new Error(msg));\n }, timeoutMs);\n for (let i = from; i < states.length; i++) if (test(i)) return found(i);\n stateStream.addListener(listener);\n });\n\n /**\n * G-053: the model next() calls scheduled during a wait that started at `start` (or still\n * pending): an explanation for a timeout, and whether one is still pending.\n */\n const explainNext = (start: number): [string, boolean] => {\n const now = clockNow(), byKey = new Map<string, Scheduled & {n: number}>();\n for (const s of scheduled) {\n if (s.due <= now && s.at < start) continue;\n const k = s.by + '\\u0000' + s.type;\n byKey.set(k, {...s, n: (byKey.get(k)?.n || 0) + 1});\n }\n if (!byKey.size) return ['', false];\n let pending = false;\n const list = [...byKey.values()].map(s => {\n const left = s.due - now;\n if (left > 0) pending = true;\n return `next('${s.type}') scheduled by ${s.by} with a ${s.delay}ms delay` +\n (s.n > 1 ? ` (${s.n} times)` : '') + (left > 0 ? ` is still pending (fires in ${left}ms)` : '');\n });\n return [` Model next() calls during the wait: ${list.join('; ')}.`, pending];\n };\n\n const waitForState = (predicate: (state: any) => boolean, timeoutMs: number = defaultTimeout) => {\n checkMs('waitForState', timeoutMs);\n cursor = shown = undefined;\n return drive(waitMatch(0, predicate, timeoutMs, 'waitForState'), () => disposed);\n };\n const next = (predicate: (state: any) => boolean = () => true, timeoutMs: number = defaultTimeout) => {\n checkMs('next', timeoutMs);\n // 4-A1/G-129: right after a wait, start after the state it returned (real DOM: the state the DOM shows)\n if (cursor === undefined && shown !== undefined) return drive(waitMatch(Math.min(shown, states.length), predicate, timeoutMs, 'next'), () => disposed);\n if (cursor === undefined || (cursor < 0 && !isReady)) return drive(waitMatch(cursor === undefined && syncAt !== undefined ? syncAt : states.length, predicate, timeoutMs, 'next'), () => disposed);\n const id = arming;\n cursorUsed = true;\n unexpire();\n const p = waitMatch(cursor < 0 ? readyAt : cursor, predicate, timeoutMs, 'next');\n // the first next() from the cursor to resolve disarms it (sequential next() calls move on)\n p.then(() => { if (id == arming) cursor = undefined; }, noop);\n return drive(p, () => disposed);\n };\n const settle = (timeoutMs: number = defaultTimeout): Promise<void> => {\n checkMs('settle', timeoutMs);\n return drive(settleWait(timeoutMs), () => disposed);\n };\n const settleWait = (timeoutMs: number): Promise<void> => new Promise((resolve, reject) => {\n cursor = shown = undefined;\n const f = takeFailure();\n if (f) return reject(f);\n let wait: any;\n const done = (e?: Error) => { clearTimeout(wait); waiters.delete(done); e ? reject(e) : resolve(); };\n waiters.add(done);\n const start = clockNow();\n (async () => {\n await Promise.race([readyPromise, new Promise(r => { wait = setTimeout(r, timeoutMs); })]);\n clearTimeout(wait);\n // 4-A1: on the real DOM, quiet also means the latest render is in the DOM\n const busy = () => !isReady || inputs.length > 0 || (real && !!vtree && (lastPatched !== vtree || !!held));\n if (!await quiesce(states.length, settleMs, timeoutMs, busy)) {\n const [why] = explainNext(start);\n throw new Error(`settle timed out after ${timeoutMs}ms: ${inputs.length ? `${inputs.length} simulated input(s) still pending` : `the component kept rendering (it never was quiet for settleMs = ${settleMs}ms)`}.` +\n why + (why ? ' A next() loop never goes quiet: wait for a specific state with t.next(pred) instead.' : ''));\n }\n })().then(() => done(), done);\n });\n\n const expectNoDiagnostics = () => {\n throwFailure();\n const bad = collected.filter(d => d.severity != 'info');\n if (bad.length) {\n throw new Error(`Expected no diagnostics, got ${bad.length}:\\n` + bad.map(d => d.text).join('\\n'));\n }\n };\n\n // a copy of the tree (the serializer reassigns children arrays; the app's vnodes stay as they are)\n const copy = (v: any): any => v && typeof v == 'object' && v.children ? {...v, children: v.children.map(copy)} : v;\n const html = () => {\n notYet('t.html()');\n return renderHtml();\n };\n const htmlOf = (v: any) =>\n renderToInnerHtml(() => copy(v)).replace(/ class=\"([^\"]*)\"/g, (_, c: string) =>\n (c = c.split(' ').filter(x => !x.startsWith('___')).join(' ')) ? ` class=\"${c}\"` : ''\n );\n const renderHtml = () => vtree ? htmlOf(vtree) : '';\n\n const inspect = (o: Pick<InspectOptions, 'actions'> = {}): InspectGraph => {\n if (!core.inspect) throw Error(`[Sygnal] t.inspect() needs import 'sygnal/diagnostics'`);\n return core.inspect({ids: [...scopeIds.values()], diagnostics: collected, mock: {listeners, evTypes, owners, scopeIds, probe, vtree}, ...(o.actions !== undefined && {actions: o.actions})});\n };\n\n // PLAN-4 2-C: the first action whose resulting root state matches\n const explain = (pred: (state: any) => boolean): ExplainedAction | undefined => {\n if (typeof pred != 'function') throw new Error('[Sygnal] t.explain(predicate): pass a function of the state, e.g. t.explain(s => s.status === \\'error\\')');\n for (const e of actionList) {\n const r = resulting.get(e);\n let hit = false;\n if (r) try { hit = !!pred(r.s); } catch (_) {}\n if (!hit) continue;\n const fn = stateReducer.get(e);\n let source = '';\n try { source = fn ? Function.prototype.toString.call(fn) : ''; } catch (_) {}\n return {...e, sinks: [...e.sinks], state: r!.s, ...(fn && {reducer: {action: e.type, sink: 'STATE', fn, source: source.length > 400 ? source.slice(0, 400) + '…' : source}})};\n }\n };\n\n const dispose = () => {\n if (disposed) return;\n disposed = true;\n commandTimers.forEach(clearTimeout);\n clearTimeout(timer);\n clearTimeout(fallback);\n clearTimeout(retryTimer);\n unexpire();\n // G-070: an event still waiting for an element that never rendered fails the test\n const head = inputs[0];\n if (head && head.until && head.missing && !failure) failure = head.missing();\n inputs.length = 0;\n subs.forEach(([s, l]) => {\n try { s.removeListener(l); } catch (_) {}\n });\n try { sinks.__dispose?.(); } catch (_) {}\n // E4: unmount (the container and the Portal content mounted outside it)\n const mounted = real ? roots() : [];\n // 2-C: every fake connection closes (as the app's own close: no close action)\n // 5-1: and every fetch still in flight is aborted\n fakes.forEach(f => { f.ws.src.dispose(); f.ws.conns.clear(); f.http.dispose(); });\n mounted.forEach(e => e.remove());\n restore();\n // R4-8: every pending wait (ready, next, waitForState, settle) rejects now, its timers\n // cleared, so nothing hangs (fake timers) or fails much later\n const ws = [...waiters, ...readyWaiters];\n waiters.clear();\n readyWaiters.clear();\n const gone = new Error('[Sygnal] renderComponent was disposed while this wait was pending (t.ready/t.next/t.waitForState/t.settle). Await every wait before t.dispose()');\n ws.forEach(w => w(gone));\n // a t.respond/t.fail still queued rejects too (it never fails a later wait: there is none)\n const rs = [...replyWaits];\n replyWaits.clear();\n rs.forEach(r => r(new Error('[Sygnal] renderComponent was disposed before this t.respond/t.fail was delivered'), true));\n throwFailure();\n };\n\n return {\n state$: stateStream,\n dom$: sinks.DOM || xs.never(),\n events$: sources.EVENTS || {select: () => xs.never()},\n sinks,\n sources,\n simulateAction,\n simulateEvent,\n ready,\n waitForState,\n next,\n // GS-5: then the pending persist() writes\n settle: (ms?: number) => settle(ms).then(() => { if (ps) ps.f.forEach((f: () => void) => f()); }),\n states,\n actions: actionList,\n explain,\n get state() { return states[states.length - 1]; },\n sinkValues,\n requests,\n respond,\n fail,\n connections,\n cache,\n focus: () => signal('focus'),\n online: () => signal('online'),\n open,\n push,\n drop,\n sent: sentTo,\n navigate,\n back: () => traverse('back', -1),\n forward: () => traverse('forward', 1),\n get location() { return routerLocation(); },\n head,\n timers: () => {\n if (!tm) throw new Error(`[Sygnal] t.timers(): ${timerSink} has a real driver (passed in drivers); t.timers lists the timers of the fake renderComponent provides when no driver is passed`);\n const list: any[] = [];\n tm.forEach(r => { for (const name in r.on) { const {ok, d, s} = r.on[name]; if (ok && !d) list.push({name, ...s, action: s.action ?? s.frame, component: r.c}); } });\n return list;\n },\n browser: tBrowser,\n storage: (key: string) => store[key],\n emitted: sinkValues('EVENTS'),\n diagnostics: collected,\n commands: (name = 'ELEMENT') => name == 'ELEMENT' ? commandLog : sinkValues(name),\n expectNoDiagnostics,\n html,\n dispose,\n inspect,\n container,\n query,\n queryAll,\n widget,\n };\n}\n","/**\n * Reducer helpers for common state update patterns.\n *\n * These reduce boilerplate in model definitions by providing\n * shorthand factories for the most frequent reducer shapes.\n */\n\n// ── set() ──────────────────────────────────────────────────────────\n/**\n * Create a reducer that merges a partial update into state.\n *\n * Static form — merge a fixed object:\n * set({ isEditing: true })\n *\n * Dynamic form — function receives (state, data, next, props) and\n * returns the partial update to merge:\n * set((state, title) => ({ title }))\n */\nexport function set<S = any>(\n partial: (Partial<S> & object) | ((state: S, data: any, next: Function, props: any) => Partial<S>)\n): (state: S, data: any, next: Function, props: any) => S {\n if (typeof partial === 'function') {\n return (state, data, next, props) => ({\n ...state,\n ...partial(state, data, next, props),\n })\n }\n return (state) => ({ ...state, ...partial })\n}\n\n// ── toggle() ───────────────────────────────────────────────────────\n/**\n * Create a reducer that toggles a boolean field on state.\n *\n * toggle('showModal')\n * // equivalent to: (state) => ({ ...state, showModal: !state.showModal })\n */\nexport function toggle<S = any>(field: keyof S & string): (state: S) => S {\n return (state) => ({ ...state, [field]: !state[field] })\n}\n\n// event(type, payload?) → EVENTS sink fn for the object form:\n// `ACTION: { EVENTS: event('TYPE', (state, data) => payload) }` (static payloads allowed)\nexport function event(\n type: string,\n payload?: any | ((state: any, data: any, next: Function, props: any) => any)\n): (state: any, data: any, next: Function, props: any) => { type: string; data: any } {\n return typeof payload === 'function'\n ? (state, data, next, props) => ({ type, data: payload(state, data, next, props) })\n : () => ({ type, data: payload })\n}\n\n// ── emit() ─────────────────────────────────────────────────────────\n/**\n * Create a model entry that emits an EVENTS bus event.\n *\n * With static data:\n * emit('DELETE_LANE', { laneId: 42 })\n *\n * With dynamic data derived from state:\n * emit('DELETE_LANE', (state) => ({ laneId: state.id }))\n *\n * Fire-and-forget (no data):\n * emit('REFRESH')\n */\nexport function emit(\n type: string,\n data?: any | ((state: any, actionData: any, next: Function, props: any) => any)\n): { EVENTS: (state: any, actionData: any, next: Function, props: any) => { type: string; data: any } } {\n return { EVENTS: event(type, data) }\n}\n","import _xs from './xstreamCompat';\nimport type {Stream, Listener} from 'xstream';\nimport type xsType from 'xstream';\nimport {adapt} from '../cycle/run/adapt';\n\nconst xs = _xs as typeof xsType;\n\n// ── Types ────────────────────────────────────────────────────\n\nexport interface ServiceWorkerSource {\n select(type?: string): any;\n}\n\nexport interface ServiceWorkerCommand {\n action: 'skipWaiting' | 'postMessage' | 'unregister';\n data?: any;\n}\n\nexport interface ServiceWorkerOptions {\n scope?: string;\n}\n\nexport interface InstallPrompt {\n select(type: 'beforeinstallprompt' | 'appinstalled'): any;\n prompt(): Promise<any> | undefined;\n}\n\n// ── makeServiceWorkerDriver ──────────────────────────────────\n\nfunction trackWorker(worker: ServiceWorker, events: EventTarget) {\n const emit = (type: string, data: any) =>\n events.dispatchEvent(new CustomEvent('data', {detail: {type, data}}));\n\n worker.addEventListener('statechange', () => {\n if (worker.state === 'installed') emit('installed', true);\n if (worker.state === 'activated') emit('activated', true);\n });\n\n if (worker.state === 'installed') emit('waiting', worker);\n if (worker.state === 'activated') emit('activated', true);\n}\n\nexport function makeServiceWorkerDriver(\n scriptUrl: string,\n options: ServiceWorkerOptions = {},\n): (sink$: Stream<ServiceWorkerCommand>) => ServiceWorkerSource {\n return function serviceWorkerDriver(sink$: Stream<ServiceWorkerCommand>): ServiceWorkerSource {\n const events = new EventTarget();\n\n if (typeof navigator !== 'undefined' && 'serviceWorker' in navigator) {\n navigator.serviceWorker\n .register(scriptUrl, {scope: options.scope})\n .then((reg) => {\n const emit = (type: string, data: any) =>\n events.dispatchEvent(new CustomEvent('data', {detail: {type, data}}));\n\n if (reg.installing) trackWorker(reg.installing, events);\n if (reg.waiting) emit('waiting', reg.waiting);\n if (reg.active) emit('activated', true);\n\n reg.addEventListener('updatefound', () => {\n if (reg.installing) trackWorker(reg.installing, events);\n });\n\n navigator.serviceWorker.addEventListener('controllerchange', () => {\n emit('controlling', true);\n });\n\n navigator.serviceWorker.addEventListener('message', (e) => {\n emit('message', (e as MessageEvent).data);\n });\n })\n .catch((err) => {\n events.dispatchEvent(new CustomEvent('data', {detail: {type: 'error', data: err}}));\n });\n\n sink$.addListener({\n next: (cmd: ServiceWorkerCommand) => {\n if (cmd.action === 'skipWaiting') {\n navigator.serviceWorker.ready.then((r) => {\n if (r.waiting) r.waiting.postMessage({type: 'SKIP_WAITING'});\n });\n } else if (cmd.action === 'postMessage') {\n navigator.serviceWorker.ready.then((r) => {\n if (r.active) r.active.postMessage(cmd.data);\n });\n } else if (cmd.action === 'unregister') {\n navigator.serviceWorker.ready.then((r) => r.unregister());\n }\n },\n error: (err: any) => console.error('[SW driver] Error in sink stream:', err),\n });\n }\n\n return {\n select(type?: string) {\n let cb: ((e: Event) => void) | undefined;\n const in$ = xs.create<any>({\n start: (listener) => {\n cb = ({detail}: any) => {\n if (!type || detail.type === type) listener.next(detail.data);\n };\n events.addEventListener('data', cb);\n },\n stop: () => {\n if (cb) events.removeEventListener('data', cb);\n },\n });\n return adapt(in$);\n },\n };\n };\n}\n\n// ── onlineStatus$ ────────────────────────────────────────────\n// Lazy — the real stream is created on first subscribe so importing\n// sygnal in SSR doesn't eagerly reference window/navigator.\n\nlet _onlineCleanup: (() => void) | undefined;\n\nexport const onlineStatus$: Stream<boolean> = /*#__PURE__*/ xs.create<boolean>({\n start(listener: Listener<boolean>) {\n if (typeof window === 'undefined') {\n listener.next(true);\n return;\n }\n listener.next(navigator.onLine);\n const on = () => listener.next(true);\n const off = () => listener.next(false);\n window.addEventListener('online', on);\n window.addEventListener('offline', off);\n _onlineCleanup = () => {\n window.removeEventListener('online', on);\n window.removeEventListener('offline', off);\n };\n },\n stop() {\n _onlineCleanup?.();\n _onlineCleanup = undefined;\n },\n});\n\n// ── createInstallPrompt ──────────────────────────────────────\n\nexport function createInstallPrompt(): InstallPrompt {\n let deferredPrompt: any = null;\n const events = new EventTarget();\n\n if (typeof window !== 'undefined') {\n window.addEventListener('beforeinstallprompt', (e) => {\n e.preventDefault();\n deferredPrompt = e;\n events.dispatchEvent(new CustomEvent('data', {detail: {type: 'beforeinstallprompt', data: true}}));\n });\n\n window.addEventListener('appinstalled', () => {\n deferredPrompt = null;\n events.dispatchEvent(new CustomEvent('data', {detail: {type: 'appinstalled', data: true}}));\n });\n }\n\n return {\n select(type: 'beforeinstallprompt' | 'appinstalled') {\n let cb: ((e: Event) => void) | undefined;\n const in$ = xs.create<any>({\n start: (listener) => {\n cb = ({detail}: any) => {\n if (detail.type === type) listener.next(detail.data);\n };\n events.addEventListener('data', cb);\n },\n stop: () => {\n if (cb) events.removeEventListener('data', cb);\n },\n });\n return adapt(in$);\n },\n\n prompt() {\n return deferredPrompt?.prompt();\n },\n };\n}\n","import type {SygnalDevTools} from './devtools';\n\n/**\n * The installed DevTools bridge, or undefined (D77: the bridge itself lives in the\n * 'sygnal/devtools' dev entry, which sygnal/vite injects in dev).\n */\nexport function getDevTools(): SygnalDevTools | undefined {\n return (globalThis as any).__SYGNAL_DEVTOOLS__;\n}\n","/**\n * ESM ports of xstream's `flattenConcurrently` and `flattenSequentially` extras\n * (xstream, MIT, André Staltz), behaviour-identical.\n *\n * Why not re-export 'xstream/extra/*': those modules are CommonJS, and a bundler keeps a\n * CJS module that an ESM module re-exports even when the app never uses it (G-055: +300 B\n * gzip in the kanban bundle). ESM classes are tree-shaken when unused.\n */\nimport {Stream} from 'xstream'\n\nclass Inner {\n constructor(public out: any, public op: any) {}\n _n(t: any) { this.out._n(t) }\n _e(err: any) { this.out._e(err) }\n _c() { this.op.less() }\n}\n\nclass FlattenConcOperator {\n type = 'flattenConcurrently'\n active = 1 // outers and inners that have not yet ended\n out: any = null\n constructor(public ins: any) {}\n _start(out: any) { this.out = out; this.ins._add(this) }\n _stop() { this.ins._remove(this); this.active = 1; this.out = null }\n less() { if (--this.active === 0 && this.out) this.out._c() }\n _n(s: any) { if (this.out) { this.active++; s._add(new Inner(this.out, this)) } }\n _e(err: any) { if (this.out) this.out._e(err) }\n _c() { this.less() }\n}\n\nclass FlattenSeqOperator {\n type = 'flattenSequentially'\n out: any = null\n open = true\n active: any = null\n activeIL: any = null\n seq: any[] = []\n constructor(public ins: any) {}\n _start(out: any) {\n this.out = out; this.open = true; this.active = null\n this.activeIL = new Inner(out, this); this.seq = []\n this.ins._add(this)\n }\n _stop() {\n this.ins._remove(this)\n if (this.active && this.activeIL) this.active._remove(this.activeIL)\n this.open = true; this.active = null; this.activeIL = null; this.seq = []; this.out = null\n }\n less() {\n this.active = null\n if (this.seq.length > 0) this._n(this.seq.shift())\n if (!this.open && !this.active) this.out._c()\n }\n _n(s: any) {\n if (!this.out) return\n if (this.active) this.seq.push(s)\n else { this.active = s; s._add(this.activeIL) }\n }\n _e(err: any) { if (this.out) this.out._e(err) }\n _c() {\n if (!this.out) return\n this.open = false\n if (!this.active && this.seq.length === 0) this.out._c()\n }\n}\n\n/** Flattens a stream of streams, imitating every nested stream at once (RxJS mergeAll). */\nexport function flattenConcurrently<T>(ins: Stream<Stream<T>>): Stream<T> {\n return new Stream<T>(new FlattenConcOperator(ins) as any)\n}\n\n/** Flattens a stream of streams one at a time, buffering the rest in order (RxJS concatAll). */\nexport function flattenSequentially<T>(ins: Stream<Stream<T>>): Stream<T> {\n return new Stream<T>(new FlattenSeqOperator(ins) as any)\n}\n"],"names":["_Fragment","xs","xstreamNamespace.Stream","xstreamNamespace.default","EMPTY","NO","nameOf","hook","emit","fail","logError","KEYS","keyOf","send","ERR_FIX","errorDiv","idOf","same","OWN","NONE","text","is.text","is.object","is.array","is.vnode","is.fun","is.string","dev","check","mount","snabbdomInit","defaultModules","start","SCOPE","IDEMPOTENT","g","vnodeFn","modules","init","attrOf","ids","set","BUILT_IN","textOf","clockNow","tagOf","startNext","_xs"],"mappings":"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AO;;AAEf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;;AAEf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;;AAEf,IAAA,MAAM,EAAE,MAAM;;;AAGd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;;;AAGd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;;AAEf,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;;;AAGd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;;AAEd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;;AAEd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"}