@rezi-ui/core 0.1.0-alpha.7 → 0.1.0-alpha.70

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 (1435) hide show
  1. package/README.md +3 -2
  2. package/dist/abi.d.ts +3 -3
  3. package/dist/abi.d.ts.map +1 -1
  4. package/dist/abi.js +2 -2
  5. package/dist/abi.js.map +1 -1
  6. package/dist/animation/easing.d.ts +7 -0
  7. package/dist/animation/easing.d.ts.map +1 -0
  8. package/dist/animation/easing.js +68 -0
  9. package/dist/animation/easing.js.map +1 -0
  10. package/dist/animation/interpolate.d.ts +15 -0
  11. package/dist/animation/interpolate.d.ts.map +1 -0
  12. package/dist/animation/interpolate.js +53 -0
  13. package/dist/animation/interpolate.js.map +1 -0
  14. package/dist/animation/spring.d.ts +18 -0
  15. package/dist/animation/spring.d.ts.map +1 -0
  16. package/dist/animation/spring.js +84 -0
  17. package/dist/animation/spring.js.map +1 -0
  18. package/dist/animation/timeline.d.ts +27 -0
  19. package/dist/animation/timeline.d.ts.map +1 -0
  20. package/dist/animation/timeline.js +88 -0
  21. package/dist/animation/timeline.js.map +1 -0
  22. package/dist/animation/types.d.ts +96 -0
  23. package/dist/animation/types.d.ts.map +1 -0
  24. package/dist/animation/types.js +8 -0
  25. package/dist/animation/types.js.map +1 -0
  26. package/dist/app/createApp/breadcrumbs.d.ts +38 -0
  27. package/dist/app/createApp/breadcrumbs.d.ts.map +1 -0
  28. package/dist/app/createApp/breadcrumbs.js +65 -0
  29. package/dist/app/createApp/breadcrumbs.js.map +1 -0
  30. package/dist/app/createApp/config.d.ts +25 -0
  31. package/dist/app/createApp/config.d.ts.map +1 -0
  32. package/dist/app/createApp/config.js +130 -0
  33. package/dist/app/createApp/config.js.map +1 -0
  34. package/dist/app/createApp/dirtyPlan.d.ts +21 -0
  35. package/dist/app/createApp/dirtyPlan.d.ts.map +1 -0
  36. package/dist/app/createApp/dirtyPlan.js +54 -0
  37. package/dist/app/createApp/dirtyPlan.js.map +1 -0
  38. package/dist/app/createApp/eventLoop.d.ts +95 -0
  39. package/dist/app/createApp/eventLoop.d.ts.map +1 -0
  40. package/dist/app/createApp/eventLoop.js +384 -0
  41. package/dist/app/createApp/eventLoop.js.map +1 -0
  42. package/dist/app/createApp/focusDispatcher.d.ts +14 -0
  43. package/dist/app/createApp/focusDispatcher.d.ts.map +1 -0
  44. package/dist/app/createApp/focusDispatcher.js +39 -0
  45. package/dist/app/createApp/focusDispatcher.js.map +1 -0
  46. package/dist/app/createApp/guards.d.ts +21 -0
  47. package/dist/app/createApp/guards.d.ts.map +1 -0
  48. package/dist/app/createApp/guards.js +54 -0
  49. package/dist/app/createApp/guards.js.map +1 -0
  50. package/dist/app/createApp/keybindings.d.ts +28 -0
  51. package/dist/app/createApp/keybindings.d.ts.map +1 -0
  52. package/dist/app/createApp/keybindings.js +113 -0
  53. package/dist/app/createApp/keybindings.js.map +1 -0
  54. package/dist/app/createApp/renderLoop.d.ts +64 -0
  55. package/dist/app/createApp/renderLoop.d.ts.map +1 -0
  56. package/dist/app/createApp/renderLoop.js +305 -0
  57. package/dist/app/createApp/renderLoop.js.map +1 -0
  58. package/dist/app/createApp/runSignals.d.ts +23 -0
  59. package/dist/app/createApp/runSignals.d.ts.map +1 -0
  60. package/dist/app/createApp/runSignals.js +71 -0
  61. package/dist/app/createApp/runSignals.js.map +1 -0
  62. package/dist/app/createApp/topLevelViewError.d.ts +15 -0
  63. package/dist/app/createApp/topLevelViewError.d.ts.map +1 -0
  64. package/dist/app/createApp/topLevelViewError.js +87 -0
  65. package/dist/app/createApp/topLevelViewError.js.map +1 -0
  66. package/dist/app/createApp.d.ts +23 -41
  67. package/dist/app/createApp.d.ts.map +1 -1
  68. package/dist/app/createApp.js +688 -707
  69. package/dist/app/createApp.js.map +1 -1
  70. package/dist/app/inspectorOverlayHelper.d.ts +65 -0
  71. package/dist/app/inspectorOverlayHelper.d.ts.map +1 -0
  72. package/dist/app/inspectorOverlayHelper.js +200 -0
  73. package/dist/app/inspectorOverlayHelper.js.map +1 -0
  74. package/dist/app/rawRenderer.d.ts +5 -4
  75. package/dist/app/rawRenderer.d.ts.map +1 -1
  76. package/dist/app/rawRenderer.js +44 -8
  77. package/dist/app/rawRenderer.js.map +1 -1
  78. package/dist/app/runtimeBreadcrumbs.d.ts +114 -0
  79. package/dist/app/runtimeBreadcrumbs.d.ts.map +1 -0
  80. package/dist/app/runtimeBreadcrumbs.js +69 -0
  81. package/dist/app/runtimeBreadcrumbs.js.map +1 -0
  82. package/dist/app/types.d.ts +64 -0
  83. package/dist/app/types.d.ts.map +1 -0
  84. package/dist/app/types.js +2 -0
  85. package/dist/app/types.js.map +1 -0
  86. package/dist/app/widgetRenderer/animationTracks.d.ts +96 -0
  87. package/dist/app/widgetRenderer/animationTracks.d.ts.map +1 -0
  88. package/dist/app/widgetRenderer/animationTracks.js +346 -0
  89. package/dist/app/widgetRenderer/animationTracks.js.map +1 -0
  90. package/dist/app/widgetRenderer/codeEditorRouting.d.ts.map +1 -1
  91. package/dist/app/widgetRenderer/codeEditorRouting.js +31 -25
  92. package/dist/app/widgetRenderer/codeEditorRouting.js.map +1 -1
  93. package/dist/app/widgetRenderer/commandPaletteRouting.d.ts +1 -1
  94. package/dist/app/widgetRenderer/commandPaletteRouting.d.ts.map +1 -1
  95. package/dist/app/widgetRenderer/commandPaletteRouting.js +14 -14
  96. package/dist/app/widgetRenderer/commandPaletteRouting.js.map +1 -1
  97. package/dist/app/widgetRenderer/constraintState.d.ts +98 -0
  98. package/dist/app/widgetRenderer/constraintState.d.ts.map +1 -0
  99. package/dist/app/widgetRenderer/constraintState.js +563 -0
  100. package/dist/app/widgetRenderer/constraintState.js.map +1 -0
  101. package/dist/app/widgetRenderer/cursorBreadcrumbs.d.ts +74 -0
  102. package/dist/app/widgetRenderer/cursorBreadcrumbs.d.ts.map +1 -0
  103. package/dist/app/widgetRenderer/cursorBreadcrumbs.js +273 -0
  104. package/dist/app/widgetRenderer/cursorBreadcrumbs.js.map +1 -0
  105. package/dist/app/widgetRenderer/damageTracking.d.ts +92 -0
  106. package/dist/app/widgetRenderer/damageTracking.d.ts.map +1 -0
  107. package/dist/app/widgetRenderer/damageTracking.js +513 -0
  108. package/dist/app/widgetRenderer/damageTracking.js.map +1 -0
  109. package/dist/app/widgetRenderer/devWarnings.d.ts +24 -0
  110. package/dist/app/widgetRenderer/devWarnings.d.ts.map +1 -0
  111. package/dist/app/widgetRenderer/devWarnings.js +86 -0
  112. package/dist/app/widgetRenderer/devWarnings.js.map +1 -0
  113. package/dist/app/widgetRenderer/fileNodeCache.d.ts +2 -0
  114. package/dist/app/widgetRenderer/fileNodeCache.d.ts.map +1 -1
  115. package/dist/app/widgetRenderer/fileNodeCache.js +31 -0
  116. package/dist/app/widgetRenderer/fileNodeCache.js.map +1 -1
  117. package/dist/app/widgetRenderer/filePickerRouting.d.ts +12 -1
  118. package/dist/app/widgetRenderer/filePickerRouting.d.ts.map +1 -1
  119. package/dist/app/widgetRenderer/filePickerRouting.js +82 -23
  120. package/dist/app/widgetRenderer/filePickerRouting.js.map +1 -1
  121. package/dist/app/widgetRenderer/focusState.d.ts +46 -0
  122. package/dist/app/widgetRenderer/focusState.d.ts.map +1 -0
  123. package/dist/app/widgetRenderer/focusState.js +122 -0
  124. package/dist/app/widgetRenderer/focusState.js.map +1 -0
  125. package/dist/app/widgetRenderer/inputEditing.d.ts +27 -0
  126. package/dist/app/widgetRenderer/inputEditing.d.ts.map +1 -0
  127. package/dist/app/widgetRenderer/inputEditing.js +146 -0
  128. package/dist/app/widgetRenderer/inputEditing.js.map +1 -0
  129. package/dist/app/widgetRenderer/keyboardRouting.d.ts +76 -0
  130. package/dist/app/widgetRenderer/keyboardRouting.d.ts.map +1 -0
  131. package/dist/app/widgetRenderer/keyboardRouting.js +603 -0
  132. package/dist/app/widgetRenderer/keyboardRouting.js.map +1 -0
  133. package/dist/app/widgetRenderer/mouseRouting.d.ts +256 -0
  134. package/dist/app/widgetRenderer/mouseRouting.d.ts.map +1 -0
  135. package/dist/app/widgetRenderer/mouseRouting.js +1273 -0
  136. package/dist/app/widgetRenderer/mouseRouting.js.map +1 -0
  137. package/dist/app/widgetRenderer/overlayShortcuts.d.ts +68 -0
  138. package/dist/app/widgetRenderer/overlayShortcuts.d.ts.map +1 -0
  139. package/dist/app/widgetRenderer/overlayShortcuts.js +167 -0
  140. package/dist/app/widgetRenderer/overlayShortcuts.js.map +1 -0
  141. package/dist/app/widgetRenderer/overlayState.d.ts +198 -0
  142. package/dist/app/widgetRenderer/overlayState.d.ts.map +1 -0
  143. package/dist/app/widgetRenderer/overlayState.js +590 -0
  144. package/dist/app/widgetRenderer/overlayState.js.map +1 -0
  145. package/dist/app/widgetRenderer/routeEngineEvent.d.ts +189 -0
  146. package/dist/app/widgetRenderer/routeEngineEvent.d.ts.map +1 -0
  147. package/dist/app/widgetRenderer/routeEngineEvent.js +575 -0
  148. package/dist/app/widgetRenderer/routeEngineEvent.js.map +1 -0
  149. package/dist/app/widgetRenderer/safeCallback.d.ts +2 -0
  150. package/dist/app/widgetRenderer/safeCallback.d.ts.map +1 -0
  151. package/dist/app/widgetRenderer/safeCallback.js +33 -0
  152. package/dist/app/widgetRenderer/safeCallback.js.map +1 -0
  153. package/dist/app/widgetRenderer/submitFramePipeline.d.ts +2 -2
  154. package/dist/app/widgetRenderer/submitFramePipeline.d.ts.map +1 -1
  155. package/dist/app/widgetRenderer/submitFramePipeline.js +496 -17
  156. package/dist/app/widgetRenderer/submitFramePipeline.js.map +1 -1
  157. package/dist/app/widgetRenderer/toolApprovalRouting.d.ts.map +1 -1
  158. package/dist/app/widgetRenderer/toolApprovalRouting.js +19 -15
  159. package/dist/app/widgetRenderer/toolApprovalRouting.js.map +1 -1
  160. package/dist/app/widgetRenderer.d.ts +216 -22
  161. package/dist/app/widgetRenderer.d.ts.map +1 -1
  162. package/dist/app/widgetRenderer.js +2139 -2373
  163. package/dist/app/widgetRenderer.js.map +1 -1
  164. package/dist/backend.d.ts +52 -2
  165. package/dist/backend.d.ts.map +1 -1
  166. package/dist/backend.js +31 -0
  167. package/dist/backend.js.map +1 -1
  168. package/dist/constraints/expr.d.ts +9 -0
  169. package/dist/constraints/expr.d.ts.map +1 -0
  170. package/dist/constraints/expr.js +134 -0
  171. package/dist/constraints/expr.js.map +1 -0
  172. package/dist/constraints/graph.d.ts +62 -0
  173. package/dist/constraints/graph.d.ts.map +1 -0
  174. package/dist/constraints/graph.js +359 -0
  175. package/dist/constraints/graph.js.map +1 -0
  176. package/dist/constraints/helpers.d.ts +191 -0
  177. package/dist/constraints/helpers.d.ts.map +1 -0
  178. package/dist/constraints/helpers.js +483 -0
  179. package/dist/constraints/helpers.js.map +1 -0
  180. package/dist/constraints/parser.d.ts +19 -0
  181. package/dist/constraints/parser.d.ts.map +1 -0
  182. package/dist/constraints/parser.js +522 -0
  183. package/dist/constraints/parser.js.map +1 -0
  184. package/dist/constraints/resolver.d.ts +70 -0
  185. package/dist/constraints/resolver.d.ts.map +1 -0
  186. package/dist/constraints/resolver.js +444 -0
  187. package/dist/constraints/resolver.js.map +1 -0
  188. package/dist/constraints/types.d.ts +65 -0
  189. package/dist/constraints/types.d.ts.map +1 -0
  190. package/dist/constraints/types.js +7 -0
  191. package/dist/constraints/types.js.map +1 -0
  192. package/dist/debug/constants.d.ts +16 -0
  193. package/dist/debug/constants.d.ts.map +1 -1
  194. package/dist/debug/constants.js +18 -0
  195. package/dist/debug/constants.js.map +1 -1
  196. package/dist/debug/debugController.d.ts +14 -1
  197. package/dist/debug/debugController.d.ts.map +1 -1
  198. package/dist/debug/debugController.js +247 -5
  199. package/dist/debug/debugController.js.map +1 -1
  200. package/dist/debug/describeThrown.d.ts +2 -0
  201. package/dist/debug/describeThrown.d.ts.map +1 -0
  202. package/dist/debug/describeThrown.js +11 -0
  203. package/dist/debug/describeThrown.js.map +1 -0
  204. package/dist/debug/index.d.ts +2 -2
  205. package/dist/debug/index.d.ts.map +1 -1
  206. package/dist/debug/index.js +1 -1
  207. package/dist/debug/index.js.map +1 -1
  208. package/dist/debug/types.d.ts +125 -0
  209. package/dist/debug/types.d.ts.map +1 -1
  210. package/dist/drawApi.d.ts +6 -6
  211. package/dist/drawApi.d.ts.map +1 -1
  212. package/dist/drawlist/builder.d.ts +5 -0
  213. package/dist/drawlist/builder.d.ts.map +1 -0
  214. package/dist/drawlist/builder.js +745 -0
  215. package/dist/drawlist/builder.js.map +1 -0
  216. package/dist/drawlist/builderBase.d.ts +132 -0
  217. package/dist/drawlist/builderBase.d.ts.map +1 -0
  218. package/dist/drawlist/builderBase.js +879 -0
  219. package/dist/drawlist/builderBase.js.map +1 -0
  220. package/dist/drawlist/index.d.ts +2 -3
  221. package/dist/drawlist/index.d.ts.map +1 -1
  222. package/dist/drawlist/index.js +1 -2
  223. package/dist/drawlist/index.js.map +1 -1
  224. package/dist/drawlist/textArena.d.ts +38 -0
  225. package/dist/drawlist/textArena.d.ts.map +1 -0
  226. package/dist/drawlist/textArena.js +101 -0
  227. package/dist/drawlist/textArena.js.map +1 -0
  228. package/dist/drawlist/types.d.ts +40 -103
  229. package/dist/drawlist/types.d.ts.map +1 -1
  230. package/dist/drawlist/types.js +0 -9
  231. package/dist/drawlist/types.js.map +1 -1
  232. package/dist/drawlist/writers.gen.d.ts +30 -0
  233. package/dist/drawlist/writers.gen.d.ts.map +1 -0
  234. package/dist/drawlist/writers.gen.js +240 -0
  235. package/dist/drawlist/writers.gen.js.map +1 -0
  236. package/dist/events.d.ts +2 -14
  237. package/dist/events.d.ts.map +1 -1
  238. package/dist/forms/bind.d.ts +6 -6
  239. package/dist/forms/bind.d.ts.map +1 -1
  240. package/dist/forms/bind.js +61 -5
  241. package/dist/forms/bind.js.map +1 -1
  242. package/dist/forms/index.d.ts +1 -1
  243. package/dist/forms/index.d.ts.map +1 -1
  244. package/dist/forms/index.js.map +1 -1
  245. package/dist/forms/internal/arrayState.d.ts +35 -0
  246. package/dist/forms/internal/arrayState.d.ts.map +1 -0
  247. package/dist/forms/internal/arrayState.js +238 -0
  248. package/dist/forms/internal/arrayState.js.map +1 -0
  249. package/dist/forms/internal/bindings.d.ts +46 -0
  250. package/dist/forms/internal/bindings.d.ts.map +1 -0
  251. package/dist/forms/internal/bindings.js +161 -0
  252. package/dist/forms/internal/bindings.js.map +1 -0
  253. package/dist/forms/internal/dev.d.ts +4 -0
  254. package/dist/forms/internal/dev.d.ts.map +1 -0
  255. package/dist/forms/internal/dev.js +21 -0
  256. package/dist/forms/internal/dev.js.map +1 -0
  257. package/dist/forms/internal/state.d.ts +52 -0
  258. package/dist/forms/internal/state.d.ts.map +1 -0
  259. package/dist/forms/internal/state.js +240 -0
  260. package/dist/forms/internal/state.js.map +1 -0
  261. package/dist/forms/internal/submit.d.ts +43 -0
  262. package/dist/forms/internal/submit.d.ts.map +1 -0
  263. package/dist/forms/internal/submit.js +165 -0
  264. package/dist/forms/internal/submit.js.map +1 -0
  265. package/dist/forms/internal/wizard.d.ts +53 -0
  266. package/dist/forms/internal/wizard.d.ts.map +1 -0
  267. package/dist/forms/internal/wizard.js +311 -0
  268. package/dist/forms/internal/wizard.js.map +1 -0
  269. package/dist/forms/types.d.ts +170 -15
  270. package/dist/forms/types.d.ts.map +1 -1
  271. package/dist/forms/useForm.d.ts +2 -40
  272. package/dist/forms/useForm.d.ts.map +1 -1
  273. package/dist/forms/useForm.js +136 -267
  274. package/dist/forms/useForm.js.map +1 -1
  275. package/dist/forms/validation.d.ts +3 -2
  276. package/dist/forms/validation.d.ts.map +1 -1
  277. package/dist/forms/validation.js +24 -8
  278. package/dist/forms/validation.js.map +1 -1
  279. package/dist/icons/index.d.ts +1 -0
  280. package/dist/icons/index.d.ts.map +1 -1
  281. package/dist/icons/index.js +1 -0
  282. package/dist/icons/index.js.map +1 -1
  283. package/dist/icons/resolveGlyph.d.ts +23 -0
  284. package/dist/icons/resolveGlyph.d.ts.map +1 -0
  285. package/dist/icons/resolveGlyph.js +92 -0
  286. package/dist/icons/resolveGlyph.js.map +1 -0
  287. package/dist/index.d.ts +61 -132
  288. package/dist/index.d.ts.map +1 -1
  289. package/dist/index.js +65 -26
  290. package/dist/index.js.map +1 -1
  291. package/dist/keybindings/index.d.ts +2 -2
  292. package/dist/keybindings/index.d.ts.map +1 -1
  293. package/dist/keybindings/index.js +1 -1
  294. package/dist/keybindings/index.js.map +1 -1
  295. package/dist/keybindings/manager.d.ts +32 -3
  296. package/dist/keybindings/manager.d.ts.map +1 -1
  297. package/dist/keybindings/manager.js +183 -25
  298. package/dist/keybindings/manager.js.map +1 -1
  299. package/dist/keybindings/parser.d.ts.map +1 -1
  300. package/dist/keybindings/parser.js +45 -5
  301. package/dist/keybindings/parser.js.map +1 -1
  302. package/dist/keybindings/types.d.ts +2 -0
  303. package/dist/keybindings/types.d.ts.map +1 -1
  304. package/dist/layout/constraints.d.ts +54 -5
  305. package/dist/layout/constraints.d.ts.map +1 -1
  306. package/dist/layout/constraints.js +194 -15
  307. package/dist/layout/constraints.js.map +1 -1
  308. package/dist/layout/dropdownGeometry.d.ts +15 -0
  309. package/dist/layout/dropdownGeometry.d.ts.map +1 -0
  310. package/dist/layout/dropdownGeometry.js +79 -0
  311. package/dist/layout/dropdownGeometry.js.map +1 -0
  312. package/dist/layout/engine/dirtySet.d.ts +9 -0
  313. package/dist/layout/engine/dirtySet.d.ts.map +1 -0
  314. package/dist/layout/engine/dirtySet.js +67 -0
  315. package/dist/layout/engine/dirtySet.js.map +1 -0
  316. package/dist/layout/engine/distributeInteger.d.ts +9 -0
  317. package/dist/layout/engine/distributeInteger.d.ts.map +1 -0
  318. package/dist/layout/engine/distributeInteger.js +62 -0
  319. package/dist/layout/engine/distributeInteger.js.map +1 -0
  320. package/dist/layout/engine/flex.d.ts +14 -0
  321. package/dist/layout/engine/flex.d.ts.map +1 -1
  322. package/dist/layout/engine/flex.js +144 -1
  323. package/dist/layout/engine/flex.js.map +1 -1
  324. package/dist/layout/engine/guards.d.ts +11 -5
  325. package/dist/layout/engine/guards.d.ts.map +1 -1
  326. package/dist/layout/engine/guards.js +29 -14
  327. package/dist/layout/engine/guards.js.map +1 -1
  328. package/dist/layout/engine/intrinsic.d.ts +8 -0
  329. package/dist/layout/engine/intrinsic.d.ts.map +1 -0
  330. package/dist/layout/engine/intrinsic.js +391 -0
  331. package/dist/layout/engine/intrinsic.js.map +1 -0
  332. package/dist/layout/engine/layoutEngine.d.ts +13 -2
  333. package/dist/layout/engine/layoutEngine.d.ts.map +1 -1
  334. package/dist/layout/engine/layoutEngine.js +653 -28
  335. package/dist/layout/engine/layoutEngine.js.map +1 -1
  336. package/dist/layout/engine/layoutTree.d.ts +1 -1
  337. package/dist/layout/engine/layoutTree.d.ts.map +1 -1
  338. package/dist/layout/engine/pool.d.ts.map +1 -1
  339. package/dist/layout/engine/pool.js +8 -2
  340. package/dist/layout/engine/pool.js.map +1 -1
  341. package/dist/layout/engine/types.d.ts +4 -1
  342. package/dist/layout/engine/types.d.ts.map +1 -1
  343. package/dist/layout/hitTest.d.ts +14 -4
  344. package/dist/layout/hitTest.d.ts.map +1 -1
  345. package/dist/layout/hitTest.js +210 -66
  346. package/dist/layout/hitTest.js.map +1 -1
  347. package/dist/layout/kinds/box.d.ts +3 -3
  348. package/dist/layout/kinds/box.d.ts.map +1 -1
  349. package/dist/layout/kinds/box.js +102 -5
  350. package/dist/layout/kinds/box.js.map +1 -1
  351. package/dist/layout/kinds/collections.d.ts +1 -1
  352. package/dist/layout/kinds/collections.d.ts.map +1 -1
  353. package/dist/layout/kinds/collections.js +58 -8
  354. package/dist/layout/kinds/collections.js.map +1 -1
  355. package/dist/layout/kinds/grid.d.ts +10 -0
  356. package/dist/layout/kinds/grid.d.ts.map +1 -0
  357. package/dist/layout/kinds/grid.js +564 -0
  358. package/dist/layout/kinds/grid.js.map +1 -0
  359. package/dist/layout/kinds/leaf.d.ts +1 -1
  360. package/dist/layout/kinds/leaf.d.ts.map +1 -1
  361. package/dist/layout/kinds/leaf.js +188 -46
  362. package/dist/layout/kinds/leaf.js.map +1 -1
  363. package/dist/layout/kinds/navigation.d.ts +10 -0
  364. package/dist/layout/kinds/navigation.d.ts.map +1 -0
  365. package/dist/layout/kinds/navigation.js +59 -0
  366. package/dist/layout/kinds/navigation.js.map +1 -0
  367. package/dist/layout/kinds/overlays.d.ts +2 -2
  368. package/dist/layout/kinds/overlays.d.ts.map +1 -1
  369. package/dist/layout/kinds/overlays.js +113 -30
  370. package/dist/layout/kinds/overlays.js.map +1 -1
  371. package/dist/layout/kinds/splitPane.d.ts +1 -1
  372. package/dist/layout/kinds/splitPane.d.ts.map +1 -1
  373. package/dist/layout/kinds/splitPane.js.map +1 -1
  374. package/dist/layout/kinds/stack.d.ts +2 -4
  375. package/dist/layout/kinds/stack.d.ts.map +1 -1
  376. package/dist/layout/kinds/stack.js +26 -796
  377. package/dist/layout/kinds/stack.js.map +1 -1
  378. package/dist/layout/kinds/stackParts/axis.d.ts +32 -0
  379. package/dist/layout/kinds/stackParts/axis.d.ts.map +1 -0
  380. package/dist/layout/kinds/stackParts/axis.js +61 -0
  381. package/dist/layout/kinds/stackParts/axis.js.map +1 -0
  382. package/dist/layout/kinds/stackParts/constraintPlan.d.ts +18 -0
  383. package/dist/layout/kinds/stackParts/constraintPlan.d.ts.map +1 -0
  384. package/dist/layout/kinds/stackParts/constraintPlan.js +434 -0
  385. package/dist/layout/kinds/stackParts/constraintPlan.js.map +1 -0
  386. package/dist/layout/kinds/stackParts/layout.d.ts +6 -0
  387. package/dist/layout/kinds/stackParts/layout.d.ts.map +1 -0
  388. package/dist/layout/kinds/stackParts/layout.js +376 -0
  389. package/dist/layout/kinds/stackParts/layout.js.map +1 -0
  390. package/dist/layout/kinds/stackParts/measure.d.ts +6 -0
  391. package/dist/layout/kinds/stackParts/measure.d.ts.map +1 -0
  392. package/dist/layout/kinds/stackParts/measure.js +212 -0
  393. package/dist/layout/kinds/stackParts/measure.js.map +1 -0
  394. package/dist/layout/kinds/stackParts/shared.d.ts +31 -0
  395. package/dist/layout/kinds/stackParts/shared.d.ts.map +1 -0
  396. package/dist/layout/kinds/stackParts/shared.js +94 -0
  397. package/dist/layout/kinds/stackParts/shared.js.map +1 -0
  398. package/dist/layout/kinds/stackParts/wrap.d.ts +26 -0
  399. package/dist/layout/kinds/stackParts/wrap.d.ts.map +1 -0
  400. package/dist/layout/kinds/stackParts/wrap.js +374 -0
  401. package/dist/layout/kinds/stackParts/wrap.js.map +1 -0
  402. package/dist/layout/responsive.d.ts +33 -0
  403. package/dist/layout/responsive.d.ts.map +1 -0
  404. package/dist/layout/responsive.js +145 -0
  405. package/dist/layout/responsive.js.map +1 -0
  406. package/dist/layout/spacing-scale.d.ts +4 -1
  407. package/dist/layout/spacing-scale.d.ts.map +1 -1
  408. package/dist/layout/spacing-scale.js +15 -8
  409. package/dist/layout/spacing-scale.js.map +1 -1
  410. package/dist/layout/textMeasure.d.ts +48 -2
  411. package/dist/layout/textMeasure.d.ts.map +1 -1
  412. package/dist/layout/textMeasure.js +313 -73
  413. package/dist/layout/textMeasure.js.map +1 -1
  414. package/dist/layout/types.d.ts +42 -7
  415. package/dist/layout/types.d.ts.map +1 -1
  416. package/dist/layout/types.js +0 -8
  417. package/dist/layout/types.js.map +1 -1
  418. package/dist/layout/validate/interactive.d.ts +106 -0
  419. package/dist/layout/validate/interactive.d.ts.map +1 -0
  420. package/dist/layout/validate/interactive.js +430 -0
  421. package/dist/layout/validate/interactive.js.map +1 -0
  422. package/dist/layout/validate/layoutConstraints.d.ts +51 -0
  423. package/dist/layout/validate/layoutConstraints.d.ts.map +1 -0
  424. package/dist/layout/validate/layoutConstraints.js +100 -0
  425. package/dist/layout/validate/layoutConstraints.js.map +1 -0
  426. package/dist/layout/validate/primitives.d.ts +31 -0
  427. package/dist/layout/validate/primitives.d.ts.map +1 -0
  428. package/dist/layout/validate/primitives.js +299 -0
  429. package/dist/layout/validate/primitives.js.map +1 -0
  430. package/dist/layout/validate/shared.d.ts +23 -0
  431. package/dist/layout/validate/shared.d.ts.map +1 -0
  432. package/dist/layout/validate/shared.js +32 -0
  433. package/dist/layout/validate/shared.js.map +1 -0
  434. package/dist/layout/validate/spacing.d.ts +21 -0
  435. package/dist/layout/validate/spacing.d.ts.map +1 -0
  436. package/dist/layout/validate/spacing.js +33 -0
  437. package/dist/layout/validate/spacing.js.map +1 -0
  438. package/dist/layout/validateProps.d.ts +7 -88
  439. package/dist/layout/validateProps.d.ts.map +1 -1
  440. package/dist/layout/validateProps.js +3 -329
  441. package/dist/layout/validateProps.js.map +1 -1
  442. package/dist/perf/frameAudit.d.ts +27 -0
  443. package/dist/perf/frameAudit.d.ts.map +1 -0
  444. package/dist/perf/frameAudit.js +152 -0
  445. package/dist/perf/frameAudit.js.map +1 -0
  446. package/dist/perf/perf.d.ts +3 -0
  447. package/dist/perf/perf.d.ts.map +1 -1
  448. package/dist/perf/perf.js +17 -7
  449. package/dist/perf/perf.js.map +1 -1
  450. package/dist/pipeline.d.ts +21 -0
  451. package/dist/pipeline.d.ts.map +1 -0
  452. package/dist/pipeline.js +25 -0
  453. package/dist/pipeline.js.map +1 -0
  454. package/dist/protocol/mouseKinds.d.ts +6 -0
  455. package/dist/protocol/mouseKinds.d.ts.map +1 -0
  456. package/dist/protocol/mouseKinds.js +6 -0
  457. package/dist/protocol/mouseKinds.js.map +1 -0
  458. package/dist/protocol/types.d.ts +1 -1
  459. package/dist/renderer/renderToDrawlist/boxBorder.d.ts +15 -8
  460. package/dist/renderer/renderToDrawlist/boxBorder.d.ts.map +1 -1
  461. package/dist/renderer/renderToDrawlist/boxBorder.js +84 -21
  462. package/dist/renderer/renderToDrawlist/boxBorder.js.map +1 -1
  463. package/dist/renderer/renderToDrawlist/damageBounds.d.ts +4 -0
  464. package/dist/renderer/renderToDrawlist/damageBounds.d.ts.map +1 -0
  465. package/dist/renderer/renderToDrawlist/damageBounds.js +28 -0
  466. package/dist/renderer/renderToDrawlist/damageBounds.js.map +1 -0
  467. package/dist/renderer/renderToDrawlist/renderPackets.d.ts +43 -0
  468. package/dist/renderer/renderToDrawlist/renderPackets.d.ts.map +1 -0
  469. package/dist/renderer/renderToDrawlist/renderPackets.js +574 -0
  470. package/dist/renderer/renderToDrawlist/renderPackets.js.map +1 -0
  471. package/dist/renderer/renderToDrawlist/renderTree.d.ts +6 -3
  472. package/dist/renderer/renderToDrawlist/renderTree.d.ts.map +1 -1
  473. package/dist/renderer/renderToDrawlist/renderTree.js +149 -11
  474. package/dist/renderer/renderToDrawlist/renderTree.js.map +1 -1
  475. package/dist/renderer/renderToDrawlist/simpleVNode.d.ts +7 -2
  476. package/dist/renderer/renderToDrawlist/simpleVNode.d.ts.map +1 -1
  477. package/dist/renderer/renderToDrawlist/simpleVNode.js +180 -97
  478. package/dist/renderer/renderToDrawlist/simpleVNode.js.map +1 -1
  479. package/dist/renderer/renderToDrawlist/spacing.d.ts +0 -2
  480. package/dist/renderer/renderToDrawlist/spacing.d.ts.map +1 -1
  481. package/dist/renderer/renderToDrawlist/spacing.js +12 -11
  482. package/dist/renderer/renderToDrawlist/spacing.js.map +1 -1
  483. package/dist/renderer/renderToDrawlist/textStyle.d.ts +7 -2
  484. package/dist/renderer/renderToDrawlist/textStyle.d.ts.map +1 -1
  485. package/dist/renderer/renderToDrawlist/textStyle.js +155 -44
  486. package/dist/renderer/renderToDrawlist/textStyle.js.map +1 -1
  487. package/dist/renderer/renderToDrawlist/themeTokens.d.ts +14 -0
  488. package/dist/renderer/renderToDrawlist/themeTokens.d.ts.map +1 -0
  489. package/dist/renderer/renderToDrawlist/themeTokens.js +34 -0
  490. package/dist/renderer/renderToDrawlist/themeTokens.js.map +1 -0
  491. package/dist/renderer/renderToDrawlist/types.d.ts +18 -4
  492. package/dist/renderer/renderToDrawlist/types.d.ts.map +1 -1
  493. package/dist/renderer/renderToDrawlist/widgets/basic.d.ts +4 -4
  494. package/dist/renderer/renderToDrawlist/widgets/basic.d.ts.map +1 -1
  495. package/dist/renderer/renderToDrawlist/widgets/basic.js +70 -1167
  496. package/dist/renderer/renderToDrawlist/widgets/basic.js.map +1 -1
  497. package/dist/renderer/renderToDrawlist/widgets/collections.d.ts +3 -2
  498. package/dist/renderer/renderToDrawlist/widgets/collections.d.ts.map +1 -1
  499. package/dist/renderer/renderToDrawlist/widgets/collections.js +403 -47
  500. package/dist/renderer/renderToDrawlist/widgets/collections.js.map +1 -1
  501. package/dist/renderer/renderToDrawlist/widgets/containers.d.ts +3 -3
  502. package/dist/renderer/renderToDrawlist/widgets/containers.d.ts.map +1 -1
  503. package/dist/renderer/renderToDrawlist/widgets/containers.js +460 -104
  504. package/dist/renderer/renderToDrawlist/widgets/containers.js.map +1 -1
  505. package/dist/renderer/renderToDrawlist/widgets/editors.d.ts +2 -2
  506. package/dist/renderer/renderToDrawlist/widgets/editors.d.ts.map +1 -1
  507. package/dist/renderer/renderToDrawlist/widgets/editors.js +400 -107
  508. package/dist/renderer/renderToDrawlist/widgets/editors.js.map +1 -1
  509. package/dist/renderer/renderToDrawlist/widgets/files.d.ts +3 -2
  510. package/dist/renderer/renderToDrawlist/widgets/files.d.ts.map +1 -1
  511. package/dist/renderer/renderToDrawlist/widgets/files.js +82 -24
  512. package/dist/renderer/renderToDrawlist/widgets/files.js.map +1 -1
  513. package/dist/renderer/renderToDrawlist/widgets/focusConfig.d.ts +15 -0
  514. package/dist/renderer/renderToDrawlist/widgets/focusConfig.d.ts.map +1 -0
  515. package/dist/renderer/renderToDrawlist/widgets/focusConfig.js +78 -0
  516. package/dist/renderer/renderToDrawlist/widgets/focusConfig.js.map +1 -0
  517. package/dist/renderer/renderToDrawlist/widgets/navigation.d.ts +10 -0
  518. package/dist/renderer/renderToDrawlist/widgets/navigation.d.ts.map +1 -0
  519. package/dist/renderer/renderToDrawlist/widgets/navigation.js +193 -0
  520. package/dist/renderer/renderToDrawlist/widgets/navigation.js.map +1 -0
  521. package/dist/renderer/renderToDrawlist/widgets/overlays.d.ts +3 -3
  522. package/dist/renderer/renderToDrawlist/widgets/overlays.d.ts.map +1 -1
  523. package/dist/renderer/renderToDrawlist/widgets/overlays.js +264 -90
  524. package/dist/renderer/renderToDrawlist/widgets/overlays.js.map +1 -1
  525. package/dist/renderer/renderToDrawlist/widgets/renderCanvasWidgets.d.ts +14 -0
  526. package/dist/renderer/renderToDrawlist/widgets/renderCanvasWidgets.d.ts.map +1 -0
  527. package/dist/renderer/renderToDrawlist/widgets/renderCanvasWidgets.js +318 -0
  528. package/dist/renderer/renderToDrawlist/widgets/renderCanvasWidgets.js.map +1 -0
  529. package/dist/renderer/renderToDrawlist/widgets/renderChartWidgets.d.ts +9 -0
  530. package/dist/renderer/renderToDrawlist/widgets/renderChartWidgets.d.ts.map +1 -0
  531. package/dist/renderer/renderToDrawlist/widgets/renderChartWidgets.js +519 -0
  532. package/dist/renderer/renderToDrawlist/widgets/renderChartWidgets.js.map +1 -0
  533. package/dist/renderer/renderToDrawlist/widgets/renderFormWidgets.d.ts +18 -0
  534. package/dist/renderer/renderToDrawlist/widgets/renderFormWidgets.d.ts.map +1 -0
  535. package/dist/renderer/renderToDrawlist/widgets/renderFormWidgets.js +939 -0
  536. package/dist/renderer/renderToDrawlist/widgets/renderFormWidgets.js.map +1 -0
  537. package/dist/renderer/renderToDrawlist/widgets/renderIndicatorWidgets.d.ts +9 -0
  538. package/dist/renderer/renderToDrawlist/widgets/renderIndicatorWidgets.d.ts.map +1 -0
  539. package/dist/renderer/renderToDrawlist/widgets/renderIndicatorWidgets.js +565 -0
  540. package/dist/renderer/renderToDrawlist/widgets/renderIndicatorWidgets.js.map +1 -0
  541. package/dist/renderer/renderToDrawlist/widgets/renderTextWidgets.d.ts +32 -0
  542. package/dist/renderer/renderToDrawlist/widgets/renderTextWidgets.d.ts.map +1 -0
  543. package/dist/renderer/renderToDrawlist/widgets/renderTextWidgets.js +956 -0
  544. package/dist/renderer/renderToDrawlist/widgets/renderTextWidgets.js.map +1 -0
  545. package/dist/renderer/renderToDrawlist.d.ts +1 -9
  546. package/dist/renderer/renderToDrawlist.d.ts.map +1 -1
  547. package/dist/renderer/renderToDrawlist.js +5 -19
  548. package/dist/renderer/renderToDrawlist.js.map +1 -1
  549. package/dist/renderer/shadow.d.ts +19 -5
  550. package/dist/renderer/shadow.d.ts.map +1 -1
  551. package/dist/renderer/shadow.js +53 -4
  552. package/dist/renderer/shadow.js.map +1 -1
  553. package/dist/renderer/styles.d.ts +3 -12
  554. package/dist/renderer/styles.d.ts.map +1 -1
  555. package/dist/renderer/styles.js +27 -18
  556. package/dist/renderer/styles.js.map +1 -1
  557. package/dist/repro/constants.d.ts +23 -0
  558. package/dist/repro/constants.d.ts.map +1 -0
  559. package/dist/repro/constants.js +23 -0
  560. package/dist/repro/constants.js.map +1 -0
  561. package/dist/repro/index.d.ts +10 -0
  562. package/dist/repro/index.d.ts.map +1 -0
  563. package/dist/repro/index.js +8 -0
  564. package/dist/repro/index.js.map +1 -0
  565. package/dist/repro/replay.d.ts +130 -0
  566. package/dist/repro/replay.d.ts.map +1 -0
  567. package/dist/repro/replay.js +627 -0
  568. package/dist/repro/replay.js.map +1 -0
  569. package/dist/repro/schema.d.ts +21 -0
  570. package/dist/repro/schema.d.ts.map +1 -0
  571. package/dist/repro/schema.js +750 -0
  572. package/dist/repro/schema.js.map +1 -0
  573. package/dist/repro/stable.d.ts +19 -0
  574. package/dist/repro/stable.d.ts.map +1 -0
  575. package/dist/repro/stable.js +53 -0
  576. package/dist/repro/stable.js.map +1 -0
  577. package/dist/repro/types.d.ts +141 -0
  578. package/dist/repro/types.d.ts.map +1 -0
  579. package/dist/repro/types.js +8 -0
  580. package/dist/repro/types.js.map +1 -0
  581. package/dist/router/helpers.d.ts +47 -0
  582. package/dist/router/helpers.d.ts.map +1 -0
  583. package/dist/router/helpers.js +108 -0
  584. package/dist/router/helpers.js.map +1 -0
  585. package/dist/router/index.d.ts +6 -0
  586. package/dist/router/index.d.ts.map +1 -0
  587. package/dist/router/index.js +5 -0
  588. package/dist/router/index.js.map +1 -0
  589. package/dist/router/integration.d.ts +31 -0
  590. package/dist/router/integration.d.ts.map +1 -0
  591. package/dist/router/integration.js +256 -0
  592. package/dist/router/integration.js.map +1 -0
  593. package/dist/router/keybindings.d.ts +25 -0
  594. package/dist/router/keybindings.d.ts.map +1 -0
  595. package/dist/router/keybindings.js +53 -0
  596. package/dist/router/keybindings.js.map +1 -0
  597. package/dist/router/router.d.ts +66 -0
  598. package/dist/router/router.d.ts.map +1 -0
  599. package/dist/router/router.js +249 -0
  600. package/dist/router/router.js.map +1 -0
  601. package/dist/router/types.d.ts +114 -0
  602. package/dist/router/types.d.ts.map +1 -0
  603. package/dist/router/types.js +2 -0
  604. package/dist/router/types.js.map +1 -0
  605. package/dist/runtime/commit/composite.d.ts +11 -0
  606. package/dist/runtime/commit/composite.d.ts.map +1 -0
  607. package/dist/runtime/commit/composite.js +238 -0
  608. package/dist/runtime/commit/composite.js.map +1 -0
  609. package/dist/runtime/commit/container.d.ts +7 -0
  610. package/dist/runtime/commit/container.d.ts.map +1 -0
  611. package/dist/runtime/commit/container.js +350 -0
  612. package/dist/runtime/commit/container.js.map +1 -0
  613. package/dist/runtime/commit/equality.d.ts +20 -0
  614. package/dist/runtime/commit/equality.d.ts.map +1 -0
  615. package/dist/runtime/commit/equality.js +436 -0
  616. package/dist/runtime/commit/equality.js.map +1 -0
  617. package/dist/runtime/commit/errorBoundary.d.ts +7 -0
  618. package/dist/runtime/commit/errorBoundary.d.ts.map +1 -0
  619. package/dist/runtime/commit/errorBoundary.js +53 -0
  620. package/dist/runtime/commit/errorBoundary.js.map +1 -0
  621. package/dist/runtime/commit/shared.d.ts +138 -0
  622. package/dist/runtime/commit/shared.d.ts.map +1 -0
  623. package/dist/runtime/commit/shared.js +11 -0
  624. package/dist/runtime/commit/shared.js.map +1 -0
  625. package/dist/runtime/commit/transitions.d.ts +9 -0
  626. package/dist/runtime/commit/transitions.d.ts.map +1 -0
  627. package/dist/runtime/commit/transitions.js +93 -0
  628. package/dist/runtime/commit/transitions.js.map +1 -0
  629. package/dist/runtime/commit/validation.d.ts +16 -0
  630. package/dist/runtime/commit/validation.d.ts.map +1 -0
  631. package/dist/runtime/commit/validation.js +157 -0
  632. package/dist/runtime/commit/validation.js.map +1 -0
  633. package/dist/runtime/commit.d.ts +7 -53
  634. package/dist/runtime/commit.d.ts.map +1 -1
  635. package/dist/runtime/commit.js +148 -548
  636. package/dist/runtime/commit.js.map +1 -1
  637. package/dist/runtime/focus.d.ts +6 -3
  638. package/dist/runtime/focus.d.ts.map +1 -1
  639. package/dist/runtime/focus.js +168 -121
  640. package/dist/runtime/focus.js.map +1 -1
  641. package/dist/runtime/idCodec.d.ts +26 -0
  642. package/dist/runtime/idCodec.d.ts.map +1 -0
  643. package/dist/runtime/idCodec.js +56 -0
  644. package/dist/runtime/idCodec.js.map +1 -0
  645. package/dist/runtime/inputEditor.d.ts +37 -3
  646. package/dist/runtime/inputEditor.d.ts.map +1 -1
  647. package/dist/runtime/inputEditor.js +497 -73
  648. package/dist/runtime/inputEditor.js.map +1 -1
  649. package/dist/runtime/instances.d.ts +51 -0
  650. package/dist/runtime/instances.d.ts.map +1 -1
  651. package/dist/runtime/instances.js +179 -13
  652. package/dist/runtime/instances.js.map +1 -1
  653. package/dist/runtime/layers.d.ts +3 -1
  654. package/dist/runtime/layers.d.ts.map +1 -1
  655. package/dist/runtime/layers.js +33 -8
  656. package/dist/runtime/layers.js.map +1 -1
  657. package/dist/runtime/localState.d.ts +19 -0
  658. package/dist/runtime/localState.d.ts.map +1 -1
  659. package/dist/runtime/localState.js +107 -5
  660. package/dist/runtime/localState.js.map +1 -1
  661. package/dist/runtime/reconcile.d.ts +6 -2
  662. package/dist/runtime/reconcile.d.ts.map +1 -1
  663. package/dist/runtime/reconcile.js +48 -73
  664. package/dist/runtime/reconcile.js.map +1 -1
  665. package/dist/runtime/renderPacket.d.ts +65 -0
  666. package/dist/runtime/renderPacket.d.ts.map +1 -0
  667. package/dist/runtime/renderPacket.js +2 -0
  668. package/dist/runtime/renderPacket.js.map +1 -0
  669. package/dist/runtime/router/dropdown.d.ts.map +1 -1
  670. package/dist/runtime/router/dropdown.js +49 -26
  671. package/dist/runtime/router/dropdown.js.map +1 -1
  672. package/dist/runtime/router/layer.d.ts +1 -1
  673. package/dist/runtime/router/layer.d.ts.map +1 -1
  674. package/dist/runtime/router/layer.js +33 -25
  675. package/dist/runtime/router/layer.js.map +1 -1
  676. package/dist/runtime/router/mouse.d.ts.map +1 -1
  677. package/dist/runtime/router/mouse.js +3 -5
  678. package/dist/runtime/router/mouse.js.map +1 -1
  679. package/dist/runtime/router/pagination.d.ts +19 -0
  680. package/dist/runtime/router/pagination.d.ts.map +1 -0
  681. package/dist/runtime/router/pagination.js +115 -0
  682. package/dist/runtime/router/pagination.js.map +1 -0
  683. package/dist/runtime/router/table.d.ts.map +1 -1
  684. package/dist/runtime/router/table.js +44 -25
  685. package/dist/runtime/router/table.js.map +1 -1
  686. package/dist/runtime/router/tabs.d.ts +20 -0
  687. package/dist/runtime/router/tabs.d.ts.map +1 -0
  688. package/dist/runtime/router/tabs.js +92 -0
  689. package/dist/runtime/router/tabs.js.map +1 -0
  690. package/dist/runtime/router/types.d.ts +38 -2
  691. package/dist/runtime/router/types.d.ts.map +1 -1
  692. package/dist/runtime/router/virtualList.d.ts.map +1 -1
  693. package/dist/runtime/router/virtualList.js +44 -31
  694. package/dist/runtime/router/virtualList.js.map +1 -1
  695. package/dist/runtime/router/wheel.d.ts +15 -0
  696. package/dist/runtime/router/wheel.d.ts.map +1 -0
  697. package/dist/runtime/router/wheel.js +16 -0
  698. package/dist/runtime/router/wheel.js.map +1 -0
  699. package/dist/runtime/router/zones.d.ts.map +1 -1
  700. package/dist/runtime/router/zones.js +70 -3
  701. package/dist/runtime/router/zones.js.map +1 -1
  702. package/dist/runtime/router.d.ts +3 -0
  703. package/dist/runtime/router.d.ts.map +1 -1
  704. package/dist/runtime/router.js +3 -0
  705. package/dist/runtime/router.js.map +1 -1
  706. package/dist/runtime/widgetMeta/collector.d.ts +77 -0
  707. package/dist/runtime/widgetMeta/collector.d.ts.map +1 -0
  708. package/dist/runtime/widgetMeta/collector.js +293 -0
  709. package/dist/runtime/widgetMeta/collector.js.map +1 -0
  710. package/dist/runtime/widgetMeta/focusContainers.d.ts +44 -0
  711. package/dist/runtime/widgetMeta/focusContainers.d.ts.map +1 -0
  712. package/dist/runtime/widgetMeta/focusContainers.js +190 -0
  713. package/dist/runtime/widgetMeta/focusContainers.js.map +1 -0
  714. package/dist/runtime/widgetMeta/focusInfo.d.ts +19 -0
  715. package/dist/runtime/widgetMeta/focusInfo.d.ts.map +1 -0
  716. package/dist/runtime/widgetMeta/focusInfo.js +172 -0
  717. package/dist/runtime/widgetMeta/focusInfo.js.map +1 -0
  718. package/dist/runtime/widgetMeta/helpers.d.ts +47 -0
  719. package/dist/runtime/widgetMeta/helpers.d.ts.map +1 -0
  720. package/dist/runtime/widgetMeta/helpers.js +182 -0
  721. package/dist/runtime/widgetMeta/helpers.js.map +1 -0
  722. package/dist/runtime/widgetMeta.d.ts +12 -155
  723. package/dist/runtime/widgetMeta.d.ts.map +1 -1
  724. package/dist/runtime/widgetMeta.js +6 -614
  725. package/dist/runtime/widgetMeta.js.map +1 -1
  726. package/dist/terminalCaps.d.ts +8 -2
  727. package/dist/terminalCaps.d.ts.map +1 -1
  728. package/dist/terminalCaps.js +5 -3
  729. package/dist/terminalCaps.js.map +1 -1
  730. package/dist/terminalProfile.d.ts +16 -0
  731. package/dist/terminalProfile.d.ts.map +1 -0
  732. package/dist/terminalProfile.js +36 -0
  733. package/dist/terminalProfile.js.map +1 -0
  734. package/dist/testing/assertions.d.ts +7 -0
  735. package/dist/testing/assertions.d.ts.map +1 -0
  736. package/dist/testing/assertions.js +187 -0
  737. package/dist/testing/assertions.js.map +1 -0
  738. package/dist/testing/events.d.ts +168 -0
  739. package/dist/testing/events.d.ts.map +1 -0
  740. package/dist/testing/events.js +446 -0
  741. package/dist/testing/events.js.map +1 -0
  742. package/dist/testing/index.d.ts +16 -0
  743. package/dist/testing/index.d.ts.map +1 -0
  744. package/dist/testing/index.js +14 -0
  745. package/dist/testing/index.js.map +1 -0
  746. package/dist/testing/referenceScenarios/inputIncompleteEscapeRecovery.d.ts +8 -0
  747. package/dist/testing/referenceScenarios/inputIncompleteEscapeRecovery.d.ts.map +1 -0
  748. package/dist/testing/referenceScenarios/inputIncompleteEscapeRecovery.js +79 -0
  749. package/dist/testing/referenceScenarios/inputIncompleteEscapeRecovery.js.map +1 -0
  750. package/dist/testing/referenceScenarios/inputIncompletePasteRecovery.d.ts +9 -0
  751. package/dist/testing/referenceScenarios/inputIncompletePasteRecovery.d.ts.map +1 -0
  752. package/dist/testing/referenceScenarios/inputIncompletePasteRecovery.js +96 -0
  753. package/dist/testing/referenceScenarios/inputIncompletePasteRecovery.js.map +1 -0
  754. package/dist/testing/referenceScenarios/inputModalBlocking.d.ts +9 -0
  755. package/dist/testing/referenceScenarios/inputModalBlocking.d.ts.map +1 -0
  756. package/dist/testing/referenceScenarios/inputModalBlocking.js +172 -0
  757. package/dist/testing/referenceScenarios/inputModalBlocking.js.map +1 -0
  758. package/dist/testing/referenceScenarios/inputMouseCapabilityFallback.d.ts +9 -0
  759. package/dist/testing/referenceScenarios/inputMouseCapabilityFallback.d.ts.map +1 -0
  760. package/dist/testing/referenceScenarios/inputMouseCapabilityFallback.js +102 -0
  761. package/dist/testing/referenceScenarios/inputMouseCapabilityFallback.js.map +1 -0
  762. package/dist/testing/referenceScenarios/selectKeyboardCycler.d.ts +8 -0
  763. package/dist/testing/referenceScenarios/selectKeyboardCycler.d.ts.map +1 -0
  764. package/dist/testing/referenceScenarios/selectKeyboardCycler.js +115 -0
  765. package/dist/testing/referenceScenarios/selectKeyboardCycler.js.map +1 -0
  766. package/dist/testing/referenceScenarios/textareaMultilineEditing.d.ts +8 -0
  767. package/dist/testing/referenceScenarios/textareaMultilineEditing.d.ts.map +1 -0
  768. package/dist/testing/referenceScenarios/textareaMultilineEditing.js +100 -0
  769. package/dist/testing/referenceScenarios/textareaMultilineEditing.js.map +1 -0
  770. package/dist/testing/referenceScenarios/virtualListResizeStorm.d.ts +8 -0
  771. package/dist/testing/referenceScenarios/virtualListResizeStorm.d.ts.map +1 -0
  772. package/dist/testing/referenceScenarios/virtualListResizeStorm.js +88 -0
  773. package/dist/testing/referenceScenarios/virtualListResizeStorm.js.map +1 -0
  774. package/dist/testing/renderer.d.ts +128 -0
  775. package/dist/testing/renderer.d.ts.map +1 -0
  776. package/dist/testing/renderer.js +455 -0
  777. package/dist/testing/renderer.js.map +1 -0
  778. package/dist/testing/replayScenario.d.ts +6 -0
  779. package/dist/testing/replayScenario.d.ts.map +1 -0
  780. package/dist/testing/replayScenario.js +399 -0
  781. package/dist/testing/replayScenario.js.map +1 -0
  782. package/dist/testing/scenario.d.ts +145 -0
  783. package/dist/testing/scenario.d.ts.map +1 -0
  784. package/dist/testing/scenario.js +57 -0
  785. package/dist/testing/scenario.js.map +1 -0
  786. package/dist/testing/semanticScenario.d.ts +6 -0
  787. package/dist/testing/semanticScenario.d.ts.map +1 -0
  788. package/dist/testing/semanticScenario.js +347 -0
  789. package/dist/testing/semanticScenario.js.map +1 -0
  790. package/dist/testing/snapshot.d.ts +73 -0
  791. package/dist/testing/snapshot.d.ts.map +1 -0
  792. package/dist/testing/snapshot.js +138 -0
  793. package/dist/testing/snapshot.js.map +1 -0
  794. package/dist/theme/blend.d.ts +6 -0
  795. package/dist/theme/blend.d.ts.map +1 -0
  796. package/dist/theme/blend.js +12 -0
  797. package/dist/theme/blend.js.map +1 -0
  798. package/dist/theme/contrast.d.ts +13 -0
  799. package/dist/theme/contrast.d.ts.map +1 -0
  800. package/dist/theme/contrast.js +31 -0
  801. package/dist/theme/contrast.js.map +1 -0
  802. package/dist/theme/defaultTheme.d.ts +7 -6
  803. package/dist/theme/defaultTheme.d.ts.map +1 -1
  804. package/dist/theme/defaultTheme.js +4 -19
  805. package/dist/theme/defaultTheme.js.map +1 -1
  806. package/dist/theme/extend.d.ts +15 -0
  807. package/dist/theme/extend.d.ts.map +1 -0
  808. package/dist/theme/extend.js +81 -0
  809. package/dist/theme/extend.js.map +1 -0
  810. package/dist/theme/extract.d.ts +4 -0
  811. package/dist/theme/extract.d.ts.map +1 -0
  812. package/dist/theme/extract.js +4 -0
  813. package/dist/theme/extract.js.map +1 -0
  814. package/dist/theme/heatmapPalettes.d.ts +9 -0
  815. package/dist/theme/heatmapPalettes.d.ts.map +1 -0
  816. package/dist/theme/heatmapPalettes.js +43 -0
  817. package/dist/theme/heatmapPalettes.js.map +1 -0
  818. package/dist/theme/index.d.ts +4 -6
  819. package/dist/theme/index.d.ts.map +1 -1
  820. package/dist/theme/index.js +4 -10
  821. package/dist/theme/index.js.map +1 -1
  822. package/dist/theme/interop.d.ts +3 -10
  823. package/dist/theme/interop.d.ts.map +1 -1
  824. package/dist/theme/interop.js +19 -56
  825. package/dist/theme/interop.js.map +1 -1
  826. package/dist/theme/presets.d.ts +18 -0
  827. package/dist/theme/presets.d.ts.map +1 -1
  828. package/dist/theme/presets.js +37 -1
  829. package/dist/theme/presets.js.map +1 -1
  830. package/dist/theme/resolve.d.ts +8 -56
  831. package/dist/theme/resolve.d.ts.map +1 -1
  832. package/dist/theme/resolve.js +193 -136
  833. package/dist/theme/resolve.js.map +1 -1
  834. package/dist/theme/theme.d.ts +9 -28
  835. package/dist/theme/theme.d.ts.map +1 -1
  836. package/dist/theme/theme.js +220 -11
  837. package/dist/theme/theme.js.map +1 -1
  838. package/dist/theme/tokens.d.ts +152 -29
  839. package/dist/theme/tokens.d.ts.map +1 -1
  840. package/dist/theme/tokens.js +83 -4
  841. package/dist/theme/tokens.js.map +1 -1
  842. package/dist/theme/types.d.ts +24 -0
  843. package/dist/theme/types.d.ts.map +1 -0
  844. package/dist/theme/types.js +2 -0
  845. package/dist/theme/types.js.map +1 -0
  846. package/dist/theme/validate.d.ts +15 -0
  847. package/dist/theme/validate.d.ts.map +1 -0
  848. package/dist/theme/validate.js +165 -0
  849. package/dist/theme/validate.js.map +1 -0
  850. package/dist/ui/capabilities.d.ts +70 -0
  851. package/dist/ui/capabilities.d.ts.map +1 -0
  852. package/dist/ui/capabilities.js +94 -0
  853. package/dist/ui/capabilities.js.map +1 -0
  854. package/dist/ui/designTokens.d.ts +114 -0
  855. package/dist/ui/designTokens.d.ts.map +1 -0
  856. package/dist/ui/designTokens.js +144 -0
  857. package/dist/ui/designTokens.js.map +1 -0
  858. package/dist/ui/index.d.ts +11 -0
  859. package/dist/ui/index.d.ts.map +1 -0
  860. package/dist/ui/index.js +14 -0
  861. package/dist/ui/index.js.map +1 -0
  862. package/dist/ui/recipes.d.ts +403 -0
  863. package/dist/ui/recipes.d.ts.map +1 -0
  864. package/dist/ui/recipes.js +960 -0
  865. package/dist/ui/recipes.js.map +1 -0
  866. package/dist/ui.d.ts +4 -0
  867. package/dist/ui.d.ts.map +1 -0
  868. package/dist/ui.js +3 -0
  869. package/dist/ui.js.map +1 -0
  870. package/dist/widgets/accordion.d.ts +23 -0
  871. package/dist/widgets/accordion.d.ts.map +1 -0
  872. package/dist/widgets/accordion.js +134 -0
  873. package/dist/widgets/accordion.js.map +1 -0
  874. package/dist/widgets/breadcrumb.d.ts +27 -0
  875. package/dist/widgets/breadcrumb.d.ts.map +1 -0
  876. package/dist/widgets/breadcrumb.js +110 -0
  877. package/dist/widgets/breadcrumb.js.map +1 -0
  878. package/dist/widgets/canvas.d.ts +26 -0
  879. package/dist/widgets/canvas.d.ts.map +1 -0
  880. package/dist/widgets/canvas.js +391 -0
  881. package/dist/widgets/canvas.js.map +1 -0
  882. package/dist/widgets/codeEditor.d.ts.map +1 -1
  883. package/dist/widgets/codeEditor.js +47 -36
  884. package/dist/widgets/codeEditor.js.map +1 -1
  885. package/dist/widgets/codeEditorSyntax.d.ts +11 -0
  886. package/dist/widgets/codeEditorSyntax.d.ts.map +1 -0
  887. package/dist/widgets/codeEditorSyntax.js +960 -0
  888. package/dist/widgets/codeEditorSyntax.js.map +1 -0
  889. package/dist/widgets/collections.d.ts +6 -0
  890. package/dist/widgets/collections.d.ts.map +1 -1
  891. package/dist/widgets/collections.js +38 -35
  892. package/dist/widgets/collections.js.map +1 -1
  893. package/dist/widgets/commandPalette.d.ts +6 -26
  894. package/dist/widgets/commandPalette.d.ts.map +1 -1
  895. package/dist/widgets/commandPalette.js +35 -21
  896. package/dist/widgets/commandPalette.js.map +1 -1
  897. package/dist/widgets/composition.d.ts +40 -1
  898. package/dist/widgets/composition.d.ts.map +1 -1
  899. package/dist/widgets/composition.js +14 -3
  900. package/dist/widgets/composition.js.map +1 -1
  901. package/dist/widgets/dialogs/confirm.d.ts.map +1 -1
  902. package/dist/widgets/dialogs/confirm.js +8 -7
  903. package/dist/widgets/dialogs/confirm.js.map +1 -1
  904. package/dist/widgets/dialogs/dialog.d.ts +7 -0
  905. package/dist/widgets/dialogs/dialog.d.ts.map +1 -0
  906. package/dist/widgets/dialogs/dialog.js +8 -0
  907. package/dist/widgets/dialogs/dialog.js.map +1 -0
  908. package/dist/widgets/dialogs/index.d.ts +2 -1
  909. package/dist/widgets/dialogs/index.d.ts.map +1 -1
  910. package/dist/widgets/dialogs/index.js +1 -0
  911. package/dist/widgets/dialogs/index.js.map +1 -1
  912. package/dist/widgets/dialogs/types.d.ts +1 -0
  913. package/dist/widgets/dialogs/types.d.ts.map +1 -1
  914. package/dist/widgets/diffViewer.d.ts +9 -38
  915. package/dist/widgets/diffViewer.d.ts.map +1 -1
  916. package/dist/widgets/diffViewer.js +11 -9
  917. package/dist/widgets/diffViewer.js.map +1 -1
  918. package/dist/widgets/factories/advanced.d.ts +20 -0
  919. package/dist/widgets/factories/advanced.d.ts.map +1 -0
  920. package/dist/widgets/factories/advanced.js +75 -0
  921. package/dist/widgets/factories/advanced.js.map +1 -0
  922. package/dist/widgets/factories/basic.d.ts +14 -0
  923. package/dist/widgets/factories/basic.d.ts.map +1 -0
  924. package/dist/widgets/factories/basic.js +44 -0
  925. package/dist/widgets/factories/basic.js.map +1 -0
  926. package/dist/widgets/factories/feedback.d.ts +20 -0
  927. package/dist/widgets/factories/feedback.d.ts.map +1 -0
  928. package/dist/widgets/factories/feedback.js +102 -0
  929. package/dist/widgets/factories/feedback.js.map +1 -0
  930. package/dist/widgets/factories/helpers.d.ts +41 -0
  931. package/dist/widgets/factories/helpers.d.ts.map +1 -0
  932. package/dist/widgets/factories/helpers.js +72 -0
  933. package/dist/widgets/factories/helpers.js.map +1 -0
  934. package/dist/widgets/factories/interactive.d.ts +15 -0
  935. package/dist/widgets/factories/interactive.d.ts.map +1 -0
  936. package/dist/widgets/factories/interactive.js +46 -0
  937. package/dist/widgets/factories/interactive.js.map +1 -0
  938. package/dist/widgets/factories/layoutShell.d.ts +22 -0
  939. package/dist/widgets/factories/layoutShell.d.ts.map +1 -0
  940. package/dist/widgets/factories/layoutShell.js +190 -0
  941. package/dist/widgets/factories/layoutShell.js.map +1 -0
  942. package/dist/widgets/factories/media.d.ts +14 -0
  943. package/dist/widgets/factories/media.d.ts.map +1 -0
  944. package/dist/widgets/factories/media.js +25 -0
  945. package/dist/widgets/factories/media.js.map +1 -0
  946. package/dist/widgets/factories/navigation.d.ts +10 -0
  947. package/dist/widgets/factories/navigation.d.ts.map +1 -0
  948. package/dist/widgets/factories/navigation.js +24 -0
  949. package/dist/widgets/factories/navigation.js.map +1 -0
  950. package/dist/widgets/field.d.ts +6 -5
  951. package/dist/widgets/field.d.ts.map +1 -1
  952. package/dist/widgets/field.js +8 -1
  953. package/dist/widgets/field.js.map +1 -1
  954. package/dist/widgets/filePicker.d.ts +5 -0
  955. package/dist/widgets/filePicker.d.ts.map +1 -0
  956. package/dist/widgets/filePicker.js +136 -0
  957. package/dist/widgets/filePicker.js.map +1 -0
  958. package/dist/widgets/heatmap.d.ts +13 -0
  959. package/dist/widgets/heatmap.d.ts.map +1 -0
  960. package/dist/widgets/heatmap.js +105 -0
  961. package/dist/widgets/heatmap.js.map +1 -0
  962. package/dist/widgets/hooks/animation.d.ts +113 -0
  963. package/dist/widgets/hooks/animation.d.ts.map +1 -0
  964. package/dist/widgets/hooks/animation.js +1108 -0
  965. package/dist/widgets/hooks/animation.js.map +1 -0
  966. package/dist/widgets/hooks/data.d.ts +218 -0
  967. package/dist/widgets/hooks/data.d.ts.map +1 -0
  968. package/dist/widgets/hooks/data.js +679 -0
  969. package/dist/widgets/hooks/data.js.map +1 -0
  970. package/dist/widgets/hooks/utility.d.ts +34 -0
  971. package/dist/widgets/hooks/utility.d.ts.map +1 -0
  972. package/dist/widgets/hooks/utility.js +36 -0
  973. package/dist/widgets/hooks/utility.js.map +1 -0
  974. package/dist/widgets/image.d.ts +25 -0
  975. package/dist/widgets/image.d.ts.map +1 -0
  976. package/dist/widgets/image.js +112 -0
  977. package/dist/widgets/image.js.map +1 -0
  978. package/dist/widgets/inspectorOverlay.d.ts +33 -0
  979. package/dist/widgets/inspectorOverlay.d.ts.map +1 -0
  980. package/dist/widgets/inspectorOverlay.js +147 -0
  981. package/dist/widgets/inspectorOverlay.js.map +1 -0
  982. package/dist/widgets/lineChart.d.ts +13 -0
  983. package/dist/widgets/lineChart.d.ts.map +1 -0
  984. package/dist/widgets/lineChart.js +73 -0
  985. package/dist/widgets/lineChart.js.map +1 -0
  986. package/dist/widgets/link.d.ts +4 -0
  987. package/dist/widgets/link.d.ts.map +1 -0
  988. package/dist/widgets/link.js +7 -0
  989. package/dist/widgets/link.js.map +1 -0
  990. package/dist/widgets/logsConsole.d.ts +2 -6
  991. package/dist/widgets/logsConsole.d.ts.map +1 -1
  992. package/dist/widgets/logsConsole.js +8 -6
  993. package/dist/widgets/logsConsole.js.map +1 -1
  994. package/dist/widgets/pagination.d.ts +35 -0
  995. package/dist/widgets/pagination.d.ts.map +1 -0
  996. package/dist/widgets/pagination.js +250 -0
  997. package/dist/widgets/pagination.js.map +1 -0
  998. package/dist/widgets/protocol.d.ts +39 -0
  999. package/dist/widgets/protocol.d.ts.map +1 -0
  1000. package/dist/widgets/protocol.js +160 -0
  1001. package/dist/widgets/protocol.js.map +1 -0
  1002. package/dist/widgets/scatter.d.ts +18 -0
  1003. package/dist/widgets/scatter.d.ts.map +1 -0
  1004. package/dist/widgets/scatter.js +75 -0
  1005. package/dist/widgets/scatter.js.map +1 -0
  1006. package/dist/widgets/select.d.ts.map +1 -1
  1007. package/dist/widgets/select.js +7 -3
  1008. package/dist/widgets/select.js.map +1 -1
  1009. package/dist/widgets/slider.d.ts +40 -0
  1010. package/dist/widgets/slider.d.ts.map +1 -0
  1011. package/dist/widgets/slider.js +111 -0
  1012. package/dist/widgets/slider.js.map +1 -0
  1013. package/dist/widgets/splitPane.d.ts +1 -5
  1014. package/dist/widgets/splitPane.d.ts.map +1 -1
  1015. package/dist/widgets/splitPane.js +28 -10
  1016. package/dist/widgets/splitPane.js.map +1 -1
  1017. package/dist/widgets/style.d.ts +20 -23
  1018. package/dist/widgets/style.d.ts.map +1 -1
  1019. package/dist/widgets/style.js +34 -10
  1020. package/dist/widgets/style.js.map +1 -1
  1021. package/dist/widgets/styleUtils.d.ts +19 -13
  1022. package/dist/widgets/styleUtils.d.ts.map +1 -1
  1023. package/dist/widgets/styleUtils.js +101 -13
  1024. package/dist/widgets/styleUtils.js.map +1 -1
  1025. package/dist/widgets/table.d.ts.map +1 -1
  1026. package/dist/widgets/table.js +43 -1
  1027. package/dist/widgets/table.js.map +1 -1
  1028. package/dist/widgets/tabs.d.ts +28 -0
  1029. package/dist/widgets/tabs.d.ts.map +1 -0
  1030. package/dist/widgets/tabs.js +146 -0
  1031. package/dist/widgets/tabs.js.map +1 -0
  1032. package/dist/widgets/toast.d.ts +2 -6
  1033. package/dist/widgets/toast.d.ts.map +1 -1
  1034. package/dist/widgets/toast.js +7 -5
  1035. package/dist/widgets/toast.js.map +1 -1
  1036. package/dist/widgets/tree.d.ts.map +1 -1
  1037. package/dist/widgets/types/advanced.d.ts +611 -0
  1038. package/dist/widgets/types/advanced.d.ts.map +1 -0
  1039. package/dist/widgets/types/advanced.js +2 -0
  1040. package/dist/widgets/types/advanced.js.map +1 -0
  1041. package/dist/widgets/types/base.d.ts +931 -0
  1042. package/dist/widgets/types/base.d.ts.map +1 -0
  1043. package/dist/widgets/types/base.js +2 -0
  1044. package/dist/widgets/types/base.js.map +1 -0
  1045. package/dist/widgets/types/forms.d.ts +136 -0
  1046. package/dist/widgets/types/forms.d.ts.map +1 -0
  1047. package/dist/widgets/types/forms.js +2 -0
  1048. package/dist/widgets/types/forms.js.map +1 -0
  1049. package/dist/widgets/types/navigation.d.ts +83 -0
  1050. package/dist/widgets/types/navigation.d.ts.map +1 -0
  1051. package/dist/widgets/types/navigation.js +2 -0
  1052. package/dist/widgets/types/navigation.js.map +1 -0
  1053. package/dist/widgets/types/overlaysShell.d.ts +223 -0
  1054. package/dist/widgets/types/overlaysShell.d.ts.map +1 -0
  1055. package/dist/widgets/types/overlaysShell.js +2 -0
  1056. package/dist/widgets/types/overlaysShell.js.map +1 -0
  1057. package/dist/widgets/types/table.d.ts +104 -0
  1058. package/dist/widgets/types/table.d.ts.map +1 -0
  1059. package/dist/widgets/types/table.js +2 -0
  1060. package/dist/widgets/types/table.js.map +1 -0
  1061. package/dist/widgets/types/tree.d.ts +64 -0
  1062. package/dist/widgets/types/tree.d.ts.map +1 -0
  1063. package/dist/widgets/types/tree.js +2 -0
  1064. package/dist/widgets/types/tree.js.map +1 -0
  1065. package/dist/widgets/types.d.ts +77 -1228
  1066. package/dist/widgets/types.d.ts.map +1 -1
  1067. package/dist/widgets/ui.d.ts +62 -702
  1068. package/dist/widgets/ui.d.ts.map +1 -1
  1069. package/dist/widgets/ui.js +62 -826
  1070. package/dist/widgets/ui.js.map +1 -1
  1071. package/dist/widgets/useModalStack.d.ts +21 -0
  1072. package/dist/widgets/useModalStack.d.ts.map +1 -0
  1073. package/dist/widgets/useModalStack.js +107 -0
  1074. package/dist/widgets/useModalStack.js.map +1 -0
  1075. package/dist/widgets/useTable.d.ts +30 -0
  1076. package/dist/widgets/useTable.d.ts.map +1 -0
  1077. package/dist/widgets/useTable.js +184 -0
  1078. package/dist/widgets/useTable.js.map +1 -0
  1079. package/dist/widgets/virtualList.d.ts +11 -4
  1080. package/dist/widgets/virtualList.d.ts.map +1 -1
  1081. package/dist/widgets/virtualList.js +71 -49
  1082. package/dist/widgets/virtualList.js.map +1 -1
  1083. package/package.json +34 -6
  1084. package/dist/app/__tests__/dirtyFlagPlan.test.d.ts +0 -2
  1085. package/dist/app/__tests__/dirtyFlagPlan.test.d.ts.map +0 -1
  1086. package/dist/app/__tests__/dirtyFlagPlan.test.js +0 -207
  1087. package/dist/app/__tests__/dirtyFlagPlan.test.js.map +0 -1
  1088. package/dist/app/__tests__/eventPump.test.d.ts +0 -2
  1089. package/dist/app/__tests__/eventPump.test.d.ts.map +0 -1
  1090. package/dist/app/__tests__/eventPump.test.js +0 -48
  1091. package/dist/app/__tests__/eventPump.test.js.map +0 -1
  1092. package/dist/app/__tests__/fatal.test.d.ts +0 -2
  1093. package/dist/app/__tests__/fatal.test.d.ts.map +0 -1
  1094. package/dist/app/__tests__/fatal.test.js +0 -27
  1095. package/dist/app/__tests__/fatal.test.js.map +0 -1
  1096. package/dist/app/__tests__/fileTreeExplorer.contextMenu.test.d.ts +0 -2
  1097. package/dist/app/__tests__/fileTreeExplorer.contextMenu.test.d.ts.map +0 -1
  1098. package/dist/app/__tests__/fileTreeExplorer.contextMenu.test.js +0 -69
  1099. package/dist/app/__tests__/fileTreeExplorer.contextMenu.test.js.map +0 -1
  1100. package/dist/app/__tests__/frameCoalescing.test.d.ts +0 -2
  1101. package/dist/app/__tests__/frameCoalescing.test.d.ts.map +0 -1
  1102. package/dist/app/__tests__/frameCoalescing.test.js +0 -33
  1103. package/dist/app/__tests__/frameCoalescing.test.js.map +0 -1
  1104. package/dist/app/__tests__/helpers.d.ts +0 -43
  1105. package/dist/app/__tests__/helpers.d.ts.map +0 -1
  1106. package/dist/app/__tests__/helpers.js +0 -111
  1107. package/dist/app/__tests__/helpers.js.map +0 -1
  1108. package/dist/app/__tests__/interactivePriority.test.d.ts +0 -2
  1109. package/dist/app/__tests__/interactivePriority.test.d.ts.map +0 -1
  1110. package/dist/app/__tests__/interactivePriority.test.js +0 -78
  1111. package/dist/app/__tests__/interactivePriority.test.js.map +0 -1
  1112. package/dist/app/__tests__/layerZIndexClamp.test.d.ts +0 -2
  1113. package/dist/app/__tests__/layerZIndexClamp.test.d.ts.map +0 -1
  1114. package/dist/app/__tests__/layerZIndexClamp.test.js +0 -63
  1115. package/dist/app/__tests__/layerZIndexClamp.test.js.map +0 -1
  1116. package/dist/app/__tests__/modes.test.d.ts +0 -2
  1117. package/dist/app/__tests__/modes.test.d.ts.map +0 -1
  1118. package/dist/app/__tests__/modes.test.js +0 -48
  1119. package/dist/app/__tests__/modes.test.js.map +0 -1
  1120. package/dist/app/__tests__/onEventHandlers.test.d.ts +0 -2
  1121. package/dist/app/__tests__/onEventHandlers.test.d.ts.map +0 -1
  1122. package/dist/app/__tests__/onEventHandlers.test.js +0 -41
  1123. package/dist/app/__tests__/onEventHandlers.test.js.map +0 -1
  1124. package/dist/app/__tests__/partialDrawlistEmission.test.d.ts +0 -2
  1125. package/dist/app/__tests__/partialDrawlistEmission.test.d.ts.map +0 -1
  1126. package/dist/app/__tests__/partialDrawlistEmission.test.js +0 -430
  1127. package/dist/app/__tests__/partialDrawlistEmission.test.js.map +0 -1
  1128. package/dist/app/__tests__/rawRender.test.d.ts +0 -2
  1129. package/dist/app/__tests__/rawRender.test.d.ts.map +0 -1
  1130. package/dist/app/__tests__/rawRender.test.js +0 -102
  1131. package/dist/app/__tests__/rawRender.test.js.map +0 -1
  1132. package/dist/app/__tests__/stateMachine.test.d.ts +0 -2
  1133. package/dist/app/__tests__/stateMachine.test.d.ts.map +0 -1
  1134. package/dist/app/__tests__/stateMachine.test.js +0 -22
  1135. package/dist/app/__tests__/stateMachine.test.js.map +0 -1
  1136. package/dist/app/__tests__/stop_during_frame_rejection.test.d.ts +0 -2
  1137. package/dist/app/__tests__/stop_during_frame_rejection.test.d.ts.map +0 -1
  1138. package/dist/app/__tests__/stop_during_frame_rejection.test.js +0 -54
  1139. package/dist/app/__tests__/stop_during_frame_rejection.test.js.map +0 -1
  1140. package/dist/app/__tests__/stubBackend.d.ts +0 -23
  1141. package/dist/app/__tests__/stubBackend.d.ts.map +0 -1
  1142. package/dist/app/__tests__/stubBackend.js +0 -76
  1143. package/dist/app/__tests__/stubBackend.js.map +0 -1
  1144. package/dist/app/__tests__/syncFrameAckFastPath.test.d.ts +0 -2
  1145. package/dist/app/__tests__/syncFrameAckFastPath.test.d.ts.map +0 -1
  1146. package/dist/app/__tests__/syncFrameAckFastPath.test.js +0 -47
  1147. package/dist/app/__tests__/syncFrameAckFastPath.test.js.map +0 -1
  1148. package/dist/app/__tests__/table.interactions.test.d.ts +0 -2
  1149. package/dist/app/__tests__/table.interactions.test.d.ts.map +0 -1
  1150. package/dist/app/__tests__/table.interactions.test.js +0 -179
  1151. package/dist/app/__tests__/table.interactions.test.js.map +0 -1
  1152. package/dist/app/__tests__/turnScheduler.test.d.ts +0 -2
  1153. package/dist/app/__tests__/turnScheduler.test.d.ts.map +0 -1
  1154. package/dist/app/__tests__/turnScheduler.test.js +0 -20
  1155. package/dist/app/__tests__/turnScheduler.test.js.map +0 -1
  1156. package/dist/app/__tests__/updates.test.d.ts +0 -2
  1157. package/dist/app/__tests__/updates.test.d.ts.map +0 -1
  1158. package/dist/app/__tests__/updates.test.js +0 -81
  1159. package/dist/app/__tests__/updates.test.js.map +0 -1
  1160. package/dist/app/__tests__/widgetRenderer.integration.test.d.ts +0 -2
  1161. package/dist/app/__tests__/widgetRenderer.integration.test.d.ts.map +0 -1
  1162. package/dist/app/__tests__/widgetRenderer.integration.test.js +0 -615
  1163. package/dist/app/__tests__/widgetRenderer.integration.test.js.map +0 -1
  1164. package/dist/binary/__tests__/reader.test.d.ts +0 -2
  1165. package/dist/binary/__tests__/reader.test.d.ts.map +0 -1
  1166. package/dist/binary/__tests__/reader.test.js +0 -35
  1167. package/dist/binary/__tests__/reader.test.js.map +0 -1
  1168. package/dist/binary/__tests__/writer.test.d.ts +0 -2
  1169. package/dist/binary/__tests__/writer.test.d.ts.map +0 -1
  1170. package/dist/binary/__tests__/writer.test.js +0 -36
  1171. package/dist/binary/__tests__/writer.test.js.map +0 -1
  1172. package/dist/debug/__tests__/eventTrace.test.d.ts +0 -7
  1173. package/dist/debug/__tests__/eventTrace.test.d.ts.map +0 -1
  1174. package/dist/debug/__tests__/eventTrace.test.js +0 -59
  1175. package/dist/debug/__tests__/eventTrace.test.js.map +0 -1
  1176. package/dist/debug/__tests__/frameInspector.test.d.ts +0 -8
  1177. package/dist/debug/__tests__/frameInspector.test.d.ts.map +0 -1
  1178. package/dist/debug/__tests__/frameInspector.test.js +0 -121
  1179. package/dist/debug/__tests__/frameInspector.test.js.map +0 -1
  1180. package/dist/debug/__tests__/parsers.test.d.ts +0 -8
  1181. package/dist/debug/__tests__/parsers.test.d.ts.map +0 -1
  1182. package/dist/debug/__tests__/parsers.test.js +0 -265
  1183. package/dist/debug/__tests__/parsers.test.js.map +0 -1
  1184. package/dist/debug/__tests__/stateTimeline.test.d.ts +0 -7
  1185. package/dist/debug/__tests__/stateTimeline.test.d.ts.map +0 -1
  1186. package/dist/debug/__tests__/stateTimeline.test.js +0 -55
  1187. package/dist/debug/__tests__/stateTimeline.test.js.map +0 -1
  1188. package/dist/debug/__tests__/uiDebug.test.d.ts +0 -2
  1189. package/dist/debug/__tests__/uiDebug.test.d.ts.map +0 -1
  1190. package/dist/debug/__tests__/uiDebug.test.js +0 -18
  1191. package/dist/debug/__tests__/uiDebug.test.js.map +0 -1
  1192. package/dist/drawlist/__tests__/builder_v1_golden.test.d.ts +0 -2
  1193. package/dist/drawlist/__tests__/builder_v1_golden.test.d.ts.map +0 -1
  1194. package/dist/drawlist/__tests__/builder_v1_golden.test.js +0 -132
  1195. package/dist/drawlist/__tests__/builder_v1_golden.test.js.map +0 -1
  1196. package/dist/drawlist/__tests__/builder_v1_text_run.test.d.ts +0 -2
  1197. package/dist/drawlist/__tests__/builder_v1_text_run.test.d.ts.map +0 -1
  1198. package/dist/drawlist/__tests__/builder_v1_text_run.test.js +0 -93
  1199. package/dist/drawlist/__tests__/builder_v1_text_run.test.js.map +0 -1
  1200. package/dist/drawlist/__tests__/builder_v1_validate_caps.test.d.ts +0 -2
  1201. package/dist/drawlist/__tests__/builder_v1_validate_caps.test.d.ts.map +0 -1
  1202. package/dist/drawlist/__tests__/builder_v1_validate_caps.test.js +0 -116
  1203. package/dist/drawlist/__tests__/builder_v1_validate_caps.test.js.map +0 -1
  1204. package/dist/drawlist/__tests__/builder_v2_cursor.test.d.ts +0 -12
  1205. package/dist/drawlist/__tests__/builder_v2_cursor.test.d.ts.map +0 -1
  1206. package/dist/drawlist/__tests__/builder_v2_cursor.test.js +0 -201
  1207. package/dist/drawlist/__tests__/builder_v2_cursor.test.js.map +0 -1
  1208. package/dist/drawlist/builder_v1.d.ts +0 -69
  1209. package/dist/drawlist/builder_v1.d.ts.map +0 -1
  1210. package/dist/drawlist/builder_v1.js +0 -984
  1211. package/dist/drawlist/builder_v1.js.map +0 -1
  1212. package/dist/drawlist/builder_v2.d.ts +0 -57
  1213. package/dist/drawlist/builder_v2.d.ts.map +0 -1
  1214. package/dist/drawlist/builder_v2.js +0 -953
  1215. package/dist/drawlist/builder_v2.js.map +0 -1
  1216. package/dist/forms/__tests__/useForm.test.d.ts +0 -7
  1217. package/dist/forms/__tests__/useForm.test.d.ts.map +0 -1
  1218. package/dist/forms/__tests__/useForm.test.js +0 -371
  1219. package/dist/forms/__tests__/useForm.test.js.map +0 -1
  1220. package/dist/keybindings/__tests__/chordMatcher.test.d.ts +0 -2
  1221. package/dist/keybindings/__tests__/chordMatcher.test.d.ts.map +0 -1
  1222. package/dist/keybindings/__tests__/chordMatcher.test.js +0 -238
  1223. package/dist/keybindings/__tests__/chordMatcher.test.js.map +0 -1
  1224. package/dist/keybindings/__tests__/manager.test.d.ts +0 -2
  1225. package/dist/keybindings/__tests__/manager.test.d.ts.map +0 -1
  1226. package/dist/keybindings/__tests__/manager.test.js +0 -377
  1227. package/dist/keybindings/__tests__/manager.test.js.map +0 -1
  1228. package/dist/keybindings/__tests__/parser.test.d.ts +0 -2
  1229. package/dist/keybindings/__tests__/parser.test.d.ts.map +0 -1
  1230. package/dist/keybindings/__tests__/parser.test.js +0 -386
  1231. package/dist/keybindings/__tests__/parser.test.js.map +0 -1
  1232. package/dist/layout/__tests__/constraints.golden.test.d.ts +0 -2
  1233. package/dist/layout/__tests__/constraints.golden.test.d.ts.map +0 -1
  1234. package/dist/layout/__tests__/constraints.golden.test.js +0 -86
  1235. package/dist/layout/__tests__/constraints.golden.test.js.map +0 -1
  1236. package/dist/layout/__tests__/hitTest.golden.test.d.ts +0 -2
  1237. package/dist/layout/__tests__/hitTest.golden.test.d.ts.map +0 -1
  1238. package/dist/layout/__tests__/hitTest.golden.test.js +0 -74
  1239. package/dist/layout/__tests__/hitTest.golden.test.js.map +0 -1
  1240. package/dist/layout/__tests__/layout.edgecases.test.d.ts +0 -2
  1241. package/dist/layout/__tests__/layout.edgecases.test.d.ts.map +0 -1
  1242. package/dist/layout/__tests__/layout.edgecases.test.js +0 -189
  1243. package/dist/layout/__tests__/layout.edgecases.test.js.map +0 -1
  1244. package/dist/layout/__tests__/layout.golden.test.d.ts +0 -2
  1245. package/dist/layout/__tests__/layout.golden.test.d.ts.map +0 -1
  1246. package/dist/layout/__tests__/layout.golden.test.js +0 -69
  1247. package/dist/layout/__tests__/layout.golden.test.js.map +0 -1
  1248. package/dist/layout/__tests__/layout.perf.test.d.ts +0 -8
  1249. package/dist/layout/__tests__/layout.perf.test.d.ts.map +0 -1
  1250. package/dist/layout/__tests__/layout.perf.test.js +0 -179
  1251. package/dist/layout/__tests__/layout.perf.test.js.map +0 -1
  1252. package/dist/layout/__tests__/measure.validation.test.d.ts +0 -2
  1253. package/dist/layout/__tests__/measure.validation.test.d.ts.map +0 -1
  1254. package/dist/layout/__tests__/measure.validation.test.js +0 -16
  1255. package/dist/layout/__tests__/measure.validation.test.js.map +0 -1
  1256. package/dist/layout/__tests__/panelGroupSizing.test.d.ts +0 -2
  1257. package/dist/layout/__tests__/panelGroupSizing.test.d.ts.map +0 -1
  1258. package/dist/layout/__tests__/panelGroupSizing.test.js +0 -118
  1259. package/dist/layout/__tests__/panelGroupSizing.test.js.map +0 -1
  1260. package/dist/layout/__tests__/spacing.test.d.ts +0 -2
  1261. package/dist/layout/__tests__/spacing.test.d.ts.map +0 -1
  1262. package/dist/layout/__tests__/spacing.test.js +0 -39
  1263. package/dist/layout/__tests__/spacing.test.js.map +0 -1
  1264. package/dist/layout/__tests__/splitPaneCollapse.test.d.ts +0 -2
  1265. package/dist/layout/__tests__/splitPaneCollapse.test.d.ts.map +0 -1
  1266. package/dist/layout/__tests__/splitPaneCollapse.test.js +0 -91
  1267. package/dist/layout/__tests__/splitPaneCollapse.test.js.map +0 -1
  1268. package/dist/layout/__tests__/sweep.robustness.test.d.ts +0 -11
  1269. package/dist/layout/__tests__/sweep.robustness.test.d.ts.map +0 -1
  1270. package/dist/layout/__tests__/sweep.robustness.test.js +0 -491
  1271. package/dist/layout/__tests__/sweep.robustness.test.js.map +0 -1
  1272. package/dist/layout/__tests__/textMeasure.golden.test.d.ts +0 -2
  1273. package/dist/layout/__tests__/textMeasure.golden.test.d.ts.map +0 -1
  1274. package/dist/layout/__tests__/textMeasure.golden.test.js +0 -32
  1275. package/dist/layout/__tests__/textMeasure.golden.test.js.map +0 -1
  1276. package/dist/protocol/__tests__/zrev_v1_fuzz_lite.test.d.ts +0 -2
  1277. package/dist/protocol/__tests__/zrev_v1_fuzz_lite.test.d.ts.map +0 -1
  1278. package/dist/protocol/__tests__/zrev_v1_fuzz_lite.test.js +0 -35
  1279. package/dist/protocol/__tests__/zrev_v1_fuzz_lite.test.js.map +0 -1
  1280. package/dist/protocol/__tests__/zrev_v1_invalid.test.d.ts +0 -2
  1281. package/dist/protocol/__tests__/zrev_v1_invalid.test.d.ts.map +0 -1
  1282. package/dist/protocol/__tests__/zrev_v1_invalid.test.js +0 -128
  1283. package/dist/protocol/__tests__/zrev_v1_invalid.test.js.map +0 -1
  1284. package/dist/protocol/__tests__/zrev_v1_valid.test.d.ts +0 -2
  1285. package/dist/protocol/__tests__/zrev_v1_valid.test.d.ts.map +0 -1
  1286. package/dist/protocol/__tests__/zrev_v1_valid.test.js +0 -126
  1287. package/dist/protocol/__tests__/zrev_v1_valid.test.js.map +0 -1
  1288. package/dist/renderer/__tests__/overlay.edge.test.d.ts +0 -2
  1289. package/dist/renderer/__tests__/overlay.edge.test.d.ts.map +0 -1
  1290. package/dist/renderer/__tests__/overlay.edge.test.js +0 -101
  1291. package/dist/renderer/__tests__/overlay.edge.test.js.map +0 -1
  1292. package/dist/renderer/__tests__/render.golden.test.d.ts +0 -2
  1293. package/dist/renderer/__tests__/render.golden.test.d.ts.map +0 -1
  1294. package/dist/renderer/__tests__/render.golden.test.js +0 -359
  1295. package/dist/renderer/__tests__/render.golden.test.js.map +0 -1
  1296. package/dist/renderer/__tests__/spinner.golden.test.d.ts +0 -2
  1297. package/dist/renderer/__tests__/spinner.golden.test.d.ts.map +0 -1
  1298. package/dist/renderer/__tests__/spinner.golden.test.js +0 -67
  1299. package/dist/renderer/__tests__/spinner.golden.test.js.map +0 -1
  1300. package/dist/runtime/__tests__/commit.fastReuse.regression.test.d.ts +0 -2
  1301. package/dist/runtime/__tests__/commit.fastReuse.regression.test.d.ts.map +0 -1
  1302. package/dist/runtime/__tests__/commit.fastReuse.regression.test.js +0 -63
  1303. package/dist/runtime/__tests__/commit.fastReuse.regression.test.js.map +0 -1
  1304. package/dist/runtime/__tests__/duplicateIdFatal.test.d.ts +0 -2
  1305. package/dist/runtime/__tests__/duplicateIdFatal.test.d.ts.map +0 -1
  1306. package/dist/runtime/__tests__/duplicateIdFatal.test.js +0 -45
  1307. package/dist/runtime/__tests__/duplicateIdFatal.test.js.map +0 -1
  1308. package/dist/runtime/__tests__/duplicateKeyFatal.test.d.ts +0 -2
  1309. package/dist/runtime/__tests__/duplicateKeyFatal.test.d.ts.map +0 -1
  1310. package/dist/runtime/__tests__/duplicateKeyFatal.test.js +0 -20
  1311. package/dist/runtime/__tests__/duplicateKeyFatal.test.js.map +0 -1
  1312. package/dist/runtime/__tests__/focusList.golden.test.d.ts +0 -2
  1313. package/dist/runtime/__tests__/focusList.golden.test.d.ts.map +0 -1
  1314. package/dist/runtime/__tests__/focusList.golden.test.js +0 -98
  1315. package/dist/runtime/__tests__/focusList.golden.test.js.map +0 -1
  1316. package/dist/runtime/__tests__/focusZones.golden.test.d.ts +0 -16
  1317. package/dist/runtime/__tests__/focusZones.golden.test.d.ts.map +0 -1
  1318. package/dist/runtime/__tests__/focusZones.golden.test.js +0 -594
  1319. package/dist/runtime/__tests__/focusZones.golden.test.js.map +0 -1
  1320. package/dist/runtime/__tests__/inputRouting.golden.test.d.ts +0 -2
  1321. package/dist/runtime/__tests__/inputRouting.golden.test.d.ts.map +0 -1
  1322. package/dist/runtime/__tests__/inputRouting.golden.test.js +0 -56
  1323. package/dist/runtime/__tests__/inputRouting.golden.test.js.map +0 -1
  1324. package/dist/runtime/__tests__/keyRouting.golden.test.d.ts +0 -2
  1325. package/dist/runtime/__tests__/keyRouting.golden.test.d.ts.map +0 -1
  1326. package/dist/runtime/__tests__/keyRouting.golden.test.js +0 -43
  1327. package/dist/runtime/__tests__/keyRouting.golden.test.js.map +0 -1
  1328. package/dist/runtime/__tests__/localStateStore.test.d.ts +0 -2
  1329. package/dist/runtime/__tests__/localStateStore.test.d.ts.map +0 -1
  1330. package/dist/runtime/__tests__/localStateStore.test.js +0 -25
  1331. package/dist/runtime/__tests__/localStateStore.test.js.map +0 -1
  1332. package/dist/runtime/__tests__/mouseRouting.golden.test.d.ts +0 -2
  1333. package/dist/runtime/__tests__/mouseRouting.golden.test.d.ts.map +0 -1
  1334. package/dist/runtime/__tests__/mouseRouting.golden.test.js +0 -47
  1335. package/dist/runtime/__tests__/mouseRouting.golden.test.js.map +0 -1
  1336. package/dist/runtime/__tests__/reconcile.test.d.ts +0 -2
  1337. package/dist/runtime/__tests__/reconcile.test.d.ts.map +0 -1
  1338. package/dist/runtime/__tests__/reconcile.test.js +0 -46
  1339. package/dist/runtime/__tests__/reconcile.test.js.map +0 -1
  1340. package/dist/runtime/__tests__/widgetMeta.test.d.ts +0 -2
  1341. package/dist/runtime/__tests__/widgetMeta.test.d.ts.map +0 -1
  1342. package/dist/runtime/__tests__/widgetMeta.test.js +0 -212
  1343. package/dist/runtime/__tests__/widgetMeta.test.js.map +0 -1
  1344. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  1345. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  1346. package/dist/theme/__tests__/theme.test.js +0 -28
  1347. package/dist/theme/__tests__/theme.test.js.map +0 -1
  1348. package/dist/widgets/__tests__/basicWidgets.render.test.d.ts +0 -2
  1349. package/dist/widgets/__tests__/basicWidgets.render.test.d.ts.map +0 -1
  1350. package/dist/widgets/__tests__/basicWidgets.render.test.js +0 -182
  1351. package/dist/widgets/__tests__/basicWidgets.render.test.js.map +0 -1
  1352. package/dist/widgets/__tests__/basicWidgets.test.d.ts +0 -2
  1353. package/dist/widgets/__tests__/basicWidgets.test.d.ts.map +0 -1
  1354. package/dist/widgets/__tests__/basicWidgets.test.js +0 -336
  1355. package/dist/widgets/__tests__/basicWidgets.test.js.map +0 -1
  1356. package/dist/widgets/__tests__/collections.test.d.ts +0 -2
  1357. package/dist/widgets/__tests__/collections.test.d.ts.map +0 -1
  1358. package/dist/widgets/__tests__/collections.test.js +0 -91
  1359. package/dist/widgets/__tests__/collections.test.js.map +0 -1
  1360. package/dist/widgets/__tests__/commandPalette.test.d.ts +0 -2
  1361. package/dist/widgets/__tests__/commandPalette.test.d.ts.map +0 -1
  1362. package/dist/widgets/__tests__/commandPalette.test.js +0 -13
  1363. package/dist/widgets/__tests__/commandPalette.test.js.map +0 -1
  1364. package/dist/widgets/__tests__/composition.test.d.ts +0 -14
  1365. package/dist/widgets/__tests__/composition.test.d.ts.map +0 -1
  1366. package/dist/widgets/__tests__/composition.test.js +0 -458
  1367. package/dist/widgets/__tests__/composition.test.js.map +0 -1
  1368. package/dist/widgets/__tests__/conditionals.test.d.ts +0 -2
  1369. package/dist/widgets/__tests__/conditionals.test.d.ts.map +0 -1
  1370. package/dist/widgets/__tests__/conditionals.test.js +0 -49
  1371. package/dist/widgets/__tests__/conditionals.test.js.map +0 -1
  1372. package/dist/widgets/__tests__/containers.test.d.ts +0 -2
  1373. package/dist/widgets/__tests__/containers.test.d.ts.map +0 -1
  1374. package/dist/widgets/__tests__/containers.test.js +0 -96
  1375. package/dist/widgets/__tests__/containers.test.js.map +0 -1
  1376. package/dist/widgets/__tests__/dataVizWidgets.test.d.ts +0 -2
  1377. package/dist/widgets/__tests__/dataVizWidgets.test.d.ts.map +0 -1
  1378. package/dist/widgets/__tests__/dataVizWidgets.test.js +0 -57
  1379. package/dist/widgets/__tests__/dataVizWidgets.test.js.map +0 -1
  1380. package/dist/widgets/__tests__/dialogs.test.d.ts +0 -2
  1381. package/dist/widgets/__tests__/dialogs.test.d.ts.map +0 -1
  1382. package/dist/widgets/__tests__/dialogs.test.js +0 -29
  1383. package/dist/widgets/__tests__/dialogs.test.js.map +0 -1
  1384. package/dist/widgets/__tests__/editors.test.d.ts +0 -2
  1385. package/dist/widgets/__tests__/editors.test.d.ts.map +0 -1
  1386. package/dist/widgets/__tests__/editors.test.js +0 -116
  1387. package/dist/widgets/__tests__/editors.test.js.map +0 -1
  1388. package/dist/widgets/__tests__/filesWidgets.test.d.ts +0 -2
  1389. package/dist/widgets/__tests__/filesWidgets.test.d.ts.map +0 -1
  1390. package/dist/widgets/__tests__/filesWidgets.test.js +0 -52
  1391. package/dist/widgets/__tests__/filesWidgets.test.js.map +0 -1
  1392. package/dist/widgets/__tests__/formWidgets.test.d.ts +0 -7
  1393. package/dist/widgets/__tests__/formWidgets.test.d.ts.map +0 -1
  1394. package/dist/widgets/__tests__/formWidgets.test.js +0 -241
  1395. package/dist/widgets/__tests__/formWidgets.test.js.map +0 -1
  1396. package/dist/widgets/__tests__/infoWidgets.test.d.ts +0 -2
  1397. package/dist/widgets/__tests__/infoWidgets.test.d.ts.map +0 -1
  1398. package/dist/widgets/__tests__/infoWidgets.test.js +0 -43
  1399. package/dist/widgets/__tests__/infoWidgets.test.js.map +0 -1
  1400. package/dist/widgets/__tests__/layers.golden.test.d.ts +0 -14
  1401. package/dist/widgets/__tests__/layers.golden.test.d.ts.map +0 -1
  1402. package/dist/widgets/__tests__/layers.golden.test.js +0 -728
  1403. package/dist/widgets/__tests__/layers.golden.test.js.map +0 -1
  1404. package/dist/widgets/__tests__/overlays.test.d.ts +0 -2
  1405. package/dist/widgets/__tests__/overlays.test.d.ts.map +0 -1
  1406. package/dist/widgets/__tests__/overlays.test.js +0 -99
  1407. package/dist/widgets/__tests__/overlays.test.js.map +0 -1
  1408. package/dist/widgets/__tests__/renderer.regressions.test.d.ts +0 -2
  1409. package/dist/widgets/__tests__/renderer.regressions.test.d.ts.map +0 -1
  1410. package/dist/widgets/__tests__/renderer.regressions.test.js +0 -132
  1411. package/dist/widgets/__tests__/renderer.regressions.test.js.map +0 -1
  1412. package/dist/widgets/__tests__/styleUtils.test.d.ts +0 -2
  1413. package/dist/widgets/__tests__/styleUtils.test.d.ts.map +0 -1
  1414. package/dist/widgets/__tests__/styleUtils.test.js +0 -22
  1415. package/dist/widgets/__tests__/styleUtils.test.js.map +0 -1
  1416. package/dist/widgets/__tests__/styled.test.d.ts +0 -2
  1417. package/dist/widgets/__tests__/styled.test.d.ts.map +0 -1
  1418. package/dist/widgets/__tests__/styled.test.js +0 -23
  1419. package/dist/widgets/__tests__/styled.test.js.map +0 -1
  1420. package/dist/widgets/__tests__/table.golden.test.d.ts +0 -10
  1421. package/dist/widgets/__tests__/table.golden.test.d.ts.map +0 -1
  1422. package/dist/widgets/__tests__/table.golden.test.js +0 -368
  1423. package/dist/widgets/__tests__/table.golden.test.js.map +0 -1
  1424. package/dist/widgets/__tests__/tree.golden.test.d.ts +0 -10
  1425. package/dist/widgets/__tests__/tree.golden.test.d.ts.map +0 -1
  1426. package/dist/widgets/__tests__/tree.golden.test.js +0 -501
  1427. package/dist/widgets/__tests__/tree.golden.test.js.map +0 -1
  1428. package/dist/widgets/__tests__/virtualList.golden.test.d.ts +0 -10
  1429. package/dist/widgets/__tests__/virtualList.golden.test.d.ts.map +0 -1
  1430. package/dist/widgets/__tests__/virtualList.golden.test.js +0 -349
  1431. package/dist/widgets/__tests__/virtualList.golden.test.js.map +0 -1
  1432. package/dist/widgets/__tests__/widgetRenderSmoke.test.d.ts +0 -2
  1433. package/dist/widgets/__tests__/widgetRenderSmoke.test.d.ts.map +0 -1
  1434. package/dist/widgets/__tests__/widgetRenderSmoke.test.js +0 -311
  1435. package/dist/widgets/__tests__/widgetRenderSmoke.test.js.map +0 -1
@@ -22,219 +22,134 @@
22
22
  * @see docs/guide/lifecycle-and-updates.md
23
23
  */
24
24
  import { ZrUiError } from "../abi.js";
25
- import { FRAME_ACCEPTED_ACK_MARKER, } from "../backend.js";
26
- import { createManagerState, getMode, registerBindings, registerModes, routeKeyEvent, setMode, } from "../keybindings/index.js";
27
- import { PERF_ENABLED, perfMarkEnd, perfMarkStart, perfNow, perfRecord } from "../perf/perf.js";
28
- import { parseEventBatchV1 } from "../protocol/zrev_v1.js";
25
+ import { BACKEND_FPS_CAP_MARKER, BACKEND_MAX_EVENT_BYTES_MARKER, } from "../backend.js";
26
+ import { describeThrown } from "../debug/describeThrown.js";
27
+ import { createManagerState, getBindings, getMode, getPendingChord, setMode, } from "../keybindings/index.js";
28
+ import { PERF_ENABLED, perfMarkStart } from "../perf/perf.js";
29
+ import { createRouterIntegration } from "../router/integration.js";
30
+ import { DEFAULT_TERMINAL_PROFILE } from "../terminalProfile.js";
29
31
  import { defaultTheme } from "../theme/defaultTheme.js";
30
- import { coerceToLegacyTheme } from "../theme/interop.js";
32
+ import { compileTheme } from "../theme/theme.js";
33
+ import { createRuntimeBreadcrumbHelpers, } from "./createApp/breadcrumbs.js";
34
+ import { loadTerminalProfile, readBackendDrawlistVersionMarker, readBackendPositiveIntMarker, requirePositiveInt, resolveAppConfig as resolveAppConfigImpl, } from "./createApp/config.js";
35
+ import { DIRTY_LAYOUT, DIRTY_RENDER, DIRTY_VIEW, createDirtyTracker, } from "./createApp/dirtyPlan.js";
36
+ import { createEventLoop } from "./createApp/eventLoop.js";
37
+ import { createFocusDispatcher } from "./createApp/focusDispatcher.js";
38
+ import { createAppGuards } from "./createApp/guards.js";
39
+ import { computeKeybindingsEnabled, createAppKeybindingHelpers } from "./createApp/keybindings.js";
40
+ import { createRenderLoop } from "./createApp/renderLoop.js";
41
+ import { createRunSignalController, readProcessLike } from "./createApp/runSignals.js";
31
42
  import { RawRenderer } from "./rawRenderer.js";
32
43
  import { AppStateMachine } from "./stateMachine.js";
33
44
  import { TurnScheduler } from "./turnScheduler.js";
34
45
  import { UpdateQueue } from "./updateQueue.js";
35
- import { WidgetRenderer, } from "./widgetRenderer.js";
36
- /** Default configuration values. */
37
- const DEFAULT_CONFIG = Object.freeze({
38
- fpsCap: 60,
39
- maxEventBytes: 1 << 20 /* 1 MiB */,
40
- maxDrawlistBytes: 2 << 20 /* 2 MiB */,
41
- useV2Cursor: false,
42
- drawlistValidateParams: true,
43
- drawlistReuseOutputBuffer: true,
44
- drawlistEncodedStringCacheCap: 1024,
45
- maxFramesInFlight: 1,
46
- internal_onRender: undefined,
47
- internal_onLayout: undefined,
48
- });
49
- const SYNC_FRAME_ACK_MARKER = "__reziSyncFrameAck";
46
+ import { WidgetRenderer } from "./widgetRenderer.js";
47
+ export const APP_INTERNAL_REQUEST_VIEW_LAYOUT_MARKER = "__reziRequestViewLayout";
48
+ export const APP_INTERNAL_SET_RUNTIME_BREADCRUMB_HOOKS_MARKER = "__reziSetRuntimeBreadcrumbHooks";
50
49
  function invalidProps(detail) {
51
50
  throw new ZrUiError("ZRUI_INVALID_PROPS", detail);
52
51
  }
53
- function requirePositiveInt(name, v) {
54
- if (!Number.isInteger(v) || v <= 0)
55
- invalidProps(`${name} must be a positive integer`);
56
- return v;
57
- }
58
- function requireNonNegativeInt(name, v) {
59
- if (!Number.isInteger(v) || v < 0)
60
- invalidProps(`${name} must be a non-negative integer`);
61
- return v;
62
- }
63
- function isSyncFrameAck(p) {
64
- return (typeof p === "object" &&
65
- p !== null &&
66
- p[SYNC_FRAME_ACK_MARKER] === true);
67
- }
68
- function getAcceptedFrameAck(p) {
69
- if (typeof p !== "object" || p === null)
70
- return null;
71
- const marker = p[FRAME_ACCEPTED_ACK_MARKER];
72
- if (typeof marker !== "object" || marker === null)
73
- return null;
74
- if (typeof marker.then !== "function")
75
- return null;
76
- return marker;
77
- }
78
- /** Apply defaults to user-provided config, validating all values. */
79
52
  export function resolveAppConfig(config) {
80
- if (!config)
81
- return DEFAULT_CONFIG;
82
- const fpsCap = config.fpsCap === undefined
83
- ? DEFAULT_CONFIG.fpsCap
84
- : requirePositiveInt("fpsCap", config.fpsCap);
85
- const maxEventBytes = config.maxEventBytes === undefined
86
- ? DEFAULT_CONFIG.maxEventBytes
87
- : requirePositiveInt("maxEventBytes", config.maxEventBytes);
88
- const maxDrawlistBytes = config.maxDrawlistBytes === undefined
89
- ? DEFAULT_CONFIG.maxDrawlistBytes
90
- : requirePositiveInt("maxDrawlistBytes", config.maxDrawlistBytes);
91
- const useV2Cursor = config.useV2Cursor === true;
92
- const drawlistValidateParams = config.drawlistValidateParams === undefined
93
- ? DEFAULT_CONFIG.drawlistValidateParams
94
- : config.drawlistValidateParams !== false;
95
- const drawlistReuseOutputBuffer = config.drawlistReuseOutputBuffer === undefined
96
- ? DEFAULT_CONFIG.drawlistReuseOutputBuffer
97
- : config.drawlistReuseOutputBuffer === true;
98
- const drawlistEncodedStringCacheCap = config.drawlistEncodedStringCacheCap === undefined
99
- ? DEFAULT_CONFIG.drawlistEncodedStringCacheCap
100
- : requireNonNegativeInt("drawlistEncodedStringCacheCap", config.drawlistEncodedStringCacheCap);
101
- const maxFramesInFlight = config.maxFramesInFlight === undefined
102
- ? DEFAULT_CONFIG.maxFramesInFlight
103
- : Math.min(4, Math.max(1, requirePositiveInt("maxFramesInFlight", config.maxFramesInFlight)));
104
- const internal_onRender = typeof config.internal_onRender === "function" ? config.internal_onRender : undefined;
105
- const internal_onLayout = typeof config.internal_onLayout === "function" ? config.internal_onLayout : undefined;
106
- return Object.freeze({
107
- fpsCap,
108
- maxEventBytes,
109
- maxDrawlistBytes,
110
- useV2Cursor,
111
- drawlistValidateParams,
112
- drawlistReuseOutputBuffer,
113
- drawlistEncodedStringCacheCap,
114
- maxFramesInFlight,
115
- internal_onRender,
116
- internal_onLayout,
117
- });
118
- }
119
- function describeThrown(v) {
120
- if (v instanceof Error)
121
- return `${v.name}: ${v.message}`;
122
- return String(v);
123
- }
124
- /**
125
- * Convert a text codepoint to a key code for keybinding matching.
126
- * Letters are normalized to uppercase (A-Z = 65-90).
127
- * Returns null if codepoint is not matchable.
128
- */
129
- function codepointToKeyCode(codepoint) {
130
- // Lowercase letters -> uppercase
131
- if (codepoint >= 97 && codepoint <= 122) {
132
- return codepoint - 32; // 'a' (97) -> 'A' (65)
133
- }
134
- // Uppercase letters
135
- if (codepoint >= 65 && codepoint <= 90) {
136
- return codepoint;
137
- }
138
- // Digits and printable ASCII
139
- if (codepoint >= 32 && codepoint <= 126) {
140
- return codepoint;
141
- }
142
- return null;
53
+ return resolveAppConfigImpl(config);
143
54
  }
144
- /**
145
- * Create a Rezi application instance.
146
- *
147
- * @typeParam S - Application state type
148
- * @param opts.backend - Runtime backend (e.g., createNodeBackend())
149
- * @param opts.initialState - Initial application state
150
- * @param opts.config - Optional configuration overrides
151
- * @returns App instance with view/draw, update, start/stop/dispose methods
152
- *
153
- * @example
154
- * ```ts
155
- * const app = createApp({
156
- * backend: createNodeBackend(),
157
- * initialState: { count: 0 },
158
- * });
159
- *
160
- * app.view((state) => ui.text(`Count: ${state.count}`));
161
- * await app.start();
162
- * ```
163
- */
164
55
  export function createApp(opts) {
165
56
  const backend = opts.backend;
166
57
  const config = resolveAppConfig(opts.config);
167
- let theme = coerceToLegacyTheme(opts.theme ?? defaultTheme);
58
+ const backendDrawlistVersion = readBackendDrawlistVersionMarker(backend);
59
+ if (backendDrawlistVersion !== null && backendDrawlistVersion !== 1) {
60
+ invalidProps(`backend drawlistVersion=${String(backendDrawlistVersion)} is invalid. Fix: set backend drawlist version marker to 1.`);
61
+ }
62
+ const backendMaxEventBytes = readBackendPositiveIntMarker(backend, BACKEND_MAX_EVENT_BYTES_MARKER);
63
+ if (backendMaxEventBytes !== null && backendMaxEventBytes !== config.maxEventBytes) {
64
+ invalidProps(`config.maxEventBytes=${String(config.maxEventBytes)} must match backend maxEventBytes=${String(backendMaxEventBytes)}. Fix: align maxEventBytes between app config and backend, or prefer createNodeApp({ config }) for Node/Bun apps to keep them aligned automatically.`);
65
+ }
66
+ const backendFpsCap = readBackendPositiveIntMarker(backend, BACKEND_FPS_CAP_MARKER);
67
+ if (backendFpsCap !== null && backendFpsCap !== config.fpsCap) {
68
+ invalidProps(`config.fpsCap=${String(config.fpsCap)} must match backend fpsCap=${String(backendFpsCap)}. Fix: align fpsCap between app config and backend, or prefer createNodeApp({ config }) for Node/Bun apps to keep them aligned automatically.`);
69
+ }
70
+ let theme = compileTheme(opts.theme ?? defaultTheme.definition);
71
+ let themeTransition = null;
72
+ let terminalProfile = DEFAULT_TERMINAL_PROFILE;
168
73
  const sm = new AppStateMachine();
74
+ const routes = opts.routes;
75
+ if (routes !== undefined && routes.length === 0) {
76
+ invalidProps("routes must contain at least one route");
77
+ }
78
+ if (routes === undefined && opts.initialRoute !== undefined) {
79
+ invalidProps("initialRoute requires routes");
80
+ }
81
+ if (routes !== undefined && opts.initialRoute === undefined) {
82
+ invalidProps("initialRoute is required when routes are provided");
83
+ }
84
+ if (opts.routeHistoryMaxDepth !== undefined) {
85
+ requirePositiveInt("routeHistoryMaxDepth", opts.routeHistoryMaxDepth);
86
+ }
169
87
  let mode = null;
170
88
  let drawFn = null;
171
89
  let viewFn = null;
172
- let committedState = opts.initialState;
90
+ let topLevelViewError = null;
91
+ let debugLayoutEnabled = false;
92
+ const hasInitialState = "initialState" in opts;
93
+ let committedState = hasInitialState ? opts.initialState : Object.freeze({});
173
94
  const updates = new UpdateQueue();
174
95
  const handlers = [];
175
- const DIRTY_RENDER = 1 << 0;
176
- const DIRTY_LAYOUT = 1 << 1;
177
- const DIRTY_VIEW = 1 << 2;
178
- let dirtyFlags = 0;
179
- let dirtyRenderVersion = 0;
180
- let dirtyLayoutVersion = 0;
181
- let dirtyViewVersion = 0;
96
+ const dirtyTracker = createDirtyTracker();
97
+ const spinnerTickMinIntervalMs = Math.max(1, Math.floor(1000 / Math.min(config.fpsCap, 8)));
182
98
  let framesInFlight = 0;
183
99
  let interactiveBudget = 0;
100
+ let lastSpinnerRenderTickMs = Number.NEGATIVE_INFINITY;
101
+ let lastObservedSpinnerTickEventMs = Number.NEGATIVE_INFINITY;
102
+ let lastSpinnerRenderPerfMs = Number.NEGATIVE_INFINITY;
184
103
  let viewport = null;
185
104
  const timeUnwrap = { epochMs: 0, lastRawMs: null };
186
105
  let inRender = false;
187
106
  let inCommit = false;
188
107
  let inEventHandlerDepth = 0;
189
108
  let lifecycleBusy = null;
109
+ let backendStarted = false;
110
+ let lifecycleGeneration = 0;
190
111
  let pollToken = 0;
112
+ let settleActiveRun = null;
113
+ let renderRequestQueuedForCurrentTurn = false;
191
114
  let userCommitScheduled = false;
192
- // Perf tracking: submit time for backend_ack calculation
193
- let submitFrameStartMs = null;
194
- // Perf tracking: schedule_wait measures time from render request to render start
195
115
  let scheduleWaitStartMs = null;
196
- const scheduler = new TurnScheduler((items) => processTurn(items));
197
- function snapshotDirtyVersions() {
198
- return {
199
- render: dirtyRenderVersion,
200
- layout: dirtyLayoutVersion,
201
- view: dirtyViewVersion,
202
- };
203
- }
204
- function clearConsumedDirtyFlags(consumedFlags, snapshot) {
205
- let clearMask = 0;
206
- if ((consumedFlags & DIRTY_RENDER) !== 0 && dirtyRenderVersion === snapshot.render) {
207
- clearMask |= DIRTY_RENDER;
208
- }
209
- if ((consumedFlags & DIRTY_LAYOUT) !== 0 && dirtyLayoutVersion === snapshot.layout) {
210
- clearMask |= DIRTY_LAYOUT;
211
- }
212
- if ((consumedFlags & DIRTY_VIEW) !== 0 && dirtyViewVersion === snapshot.view) {
213
- clearMask |= DIRTY_VIEW;
214
- }
215
- dirtyFlags &= ~clearMask;
216
- }
116
+ const baseInternalOnRender = config.internal_onRender;
117
+ const baseInternalOnLayout = config.internal_onLayout;
118
+ let inspectorInternalOnRender;
119
+ let inspectorInternalOnLayout;
120
+ let runtimeBreadcrumbsEnabled = baseInternalOnRender !== undefined || baseInternalOnLayout !== undefined;
121
+ let keybindingState = createManagerState();
122
+ let keybindingsEnabled = false;
123
+ let breadcrumbLastEventKind = null;
124
+ let breadcrumbLastConsumptionPath = null;
125
+ let breadcrumbLastAction = null;
126
+ let breadcrumbEventTracked = false;
127
+ let deferredInlineFatal = null;
128
+ let processTurnImpl = () => undefined;
129
+ let tryRenderOnceImpl = () => undefined;
130
+ const scheduler = new TurnScheduler((items) => processTurnImpl(items));
131
+ const enqueueWorkItem = (item) => {
132
+ scheduler.enqueue(item);
133
+ };
217
134
  function markDirty(flags, schedule = true) {
218
- // Track when dirty flags are first set for schedule_wait measurement.
219
- // This captures time from "render needed" to "render started".
220
- const wasDirty = dirtyFlags !== 0;
221
- dirtyFlags |= flags;
222
- if ((flags & DIRTY_RENDER) !== 0)
223
- dirtyRenderVersion++;
224
- if ((flags & DIRTY_LAYOUT) !== 0)
225
- dirtyLayoutVersion++;
226
- if ((flags & DIRTY_VIEW) !== 0)
227
- dirtyViewVersion++;
228
- if (PERF_ENABLED && !wasDirty && dirtyFlags !== 0 && scheduleWaitStartMs === null) {
135
+ const { wasDirty, flags: nextFlags } = dirtyTracker.markDirty(flags);
136
+ if (PERF_ENABLED && !wasDirty && nextFlags !== 0 && scheduleWaitStartMs === null) {
229
137
  scheduleWaitStartMs = perfMarkStart("schedule_wait");
230
138
  }
231
139
  if (!schedule)
232
140
  return;
233
141
  if (sm.state !== "Running")
234
142
  return;
235
- if (scheduler.isScheduled || scheduler.isExecuting)
143
+ if (scheduler.isExecuting) {
144
+ if (!renderRequestQueuedForCurrentTurn) {
145
+ renderRequestQueuedForCurrentTurn = true;
146
+ enqueueWorkItem({ kind: "renderRequest" });
147
+ }
148
+ return;
149
+ }
150
+ if (scheduler.isScheduled)
236
151
  return;
237
- scheduler.enqueue({ kind: "renderRequest" });
152
+ enqueueWorkItem({ kind: "renderRequest" });
238
153
  }
239
154
  function requestRenderFromRenderer() {
240
155
  markDirty(DIRTY_RENDER);
@@ -242,88 +157,22 @@ export function createApp(opts) {
242
157
  function requestViewFromRenderer() {
243
158
  markDirty(DIRTY_VIEW);
244
159
  }
245
- const rawRenderer = new RawRenderer({
246
- backend,
247
- maxDrawlistBytes: config.maxDrawlistBytes,
248
- ...(opts.config?.drawlistValidateParams === undefined
249
- ? {}
250
- : { drawlistValidateParams: opts.config.drawlistValidateParams }),
251
- drawlistReuseOutputBuffer: config.drawlistReuseOutputBuffer,
252
- drawlistEncodedStringCacheCap: config.drawlistEncodedStringCacheCap,
160
+ const guards = createAppGuards({
161
+ getEventHandlerDepth: () => inEventHandlerDepth,
162
+ getLifecycleBusy: () => lifecycleBusy,
163
+ getRuntimeState: () => sm.state,
164
+ isInCommit: () => inCommit,
165
+ isInRender: () => inRender,
253
166
  });
254
- const widgetRenderer = new WidgetRenderer({
255
- backend,
256
- maxDrawlistBytes: config.maxDrawlistBytes,
257
- useV2Cursor: config.useV2Cursor,
258
- ...(opts.config?.drawlistValidateParams === undefined
259
- ? {}
260
- : { drawlistValidateParams: opts.config.drawlistValidateParams }),
261
- drawlistReuseOutputBuffer: config.drawlistReuseOutputBuffer,
262
- drawlistEncodedStringCacheCap: config.drawlistEncodedStringCacheCap,
263
- requestRender: requestRenderFromRenderer,
264
- requestView: requestViewFromRenderer,
265
- });
266
- /* --- Keybinding State --- */
267
- let keybindingState = createManagerState();
268
- let keybindingsEnabled = false;
269
- function computeKeybindingsEnabled(state) {
270
- for (const m of state.modes.values()) {
271
- if (m.bindings.length > 0)
272
- return true;
273
- }
274
- return false;
275
- }
276
- function throwCode(code, detail) {
277
- throw new ZrUiError(code, detail);
278
- }
279
- function assertOperational(method) {
280
- const st = sm.state;
281
- if (st === "Disposed" || st === "Faulted") {
282
- throwCode("ZRUI_INVALID_STATE", `${method}: app is ${st}`);
283
- }
284
- }
285
- function assertNotReentrant(method) {
286
- if (inCommit || inRender || inEventHandlerDepth > 0) {
287
- throwCode("ZRUI_REENTRANT_CALL", `${method}: re-entrant call`);
288
- }
289
- }
290
167
  function enqueueFatal(code, detail) {
291
- scheduler.enqueue({ kind: "fatal", code, detail });
292
- }
293
- function fatalNowOrEnqueue(code, detail) {
294
- if (scheduler.isExecuting) {
295
- doFatal(code, detail);
296
- return;
297
- }
298
- enqueueFatal(code, detail);
299
- }
300
- function emit(ev) {
301
- const snapshot = [];
302
- for (const slot of handlers) {
303
- if (slot.active.value)
304
- snapshot.push(slot.fn);
305
- }
306
- inEventHandlerDepth++;
307
- try {
308
- for (const fn of snapshot) {
309
- try {
310
- fn(ev);
311
- }
312
- catch (e) {
313
- // Treat handler exceptions as fatal, but defer out of the handler stack.
314
- enqueueFatal("ZRUI_USER_CODE_THROW", `onEvent handler threw: ${describeThrown(e)}`);
315
- return;
316
- }
317
- }
318
- }
319
- finally {
320
- inEventHandlerDepth--;
321
- }
168
+ enqueueWorkItem({ kind: "fatal", code, detail });
322
169
  }
323
170
  function doFatal(code, detail) {
324
171
  if (sm.state !== "Running")
325
172
  return;
326
- // 1) emit fatal to handlers (registration order, best-effort)
173
+ lifecycleBusy = null;
174
+ lifecycleGeneration++;
175
+ backendStarted = false;
327
176
  const fatalEv = { kind: "fatal", code, detail };
328
177
  const snapshot = [];
329
178
  for (const slot of handlers) {
@@ -338,16 +187,13 @@ export function createApp(opts) {
338
187
  // ignore
339
188
  }
340
189
  }
341
- // 2) transition to Faulted
342
190
  try {
343
191
  sm.toFaulted();
344
192
  }
345
193
  catch {
346
194
  // ignore
347
195
  }
348
- // Stop polling immediately.
349
196
  pollToken++;
350
- // 3) backend stop/dispose best-effort (stop then dispose)
351
197
  try {
352
198
  void backend
353
199
  .stop()
@@ -359,6 +205,7 @@ export function createApp(opts) {
359
205
  catch {
360
206
  // ignore
361
207
  }
208
+ settleActiveRun?.();
362
209
  });
363
210
  }
364
211
  catch {
@@ -368,550 +215,645 @@ export function createApp(opts) {
368
215
  catch {
369
216
  // ignore
370
217
  }
218
+ settleActiveRun?.();
371
219
  }
372
220
  }
373
- function releaseOnce(batch) {
374
- let released = false;
375
- return () => {
376
- if (released)
377
- return;
378
- released = true;
379
- try {
380
- batch.release();
381
- }
382
- catch {
383
- // ignore
384
- }
385
- };
386
- }
387
- function processEventBatch(batch) {
388
- const release = releaseOnce(batch);
389
- const parseToken = perfMarkStart("event_parse");
390
- const parsed = parseEventBatchV1(batch.bytes, {
391
- maxTotalSize: config.maxEventBytes,
392
- timeUnwrap,
393
- });
394
- perfMarkEnd("event_parse", parseToken);
395
- if (!parsed.ok) {
396
- release();
397
- fatalNowOrEnqueue("ZRUI_PROTOCOL_ERROR", `${parsed.error.code}: ${parsed.error.detail}`);
221
+ function flushDeferredInlineFatal() {
222
+ if (deferredInlineFatal === null || inEventHandlerDepth !== 0)
398
223
  return;
399
- }
400
- const engineTruncated = (parsed.value.flags & 1) !== 0;
401
- const droppedBatches = batch.droppedBatches;
402
- try {
403
- if (engineTruncated || droppedBatches > 0) {
404
- emit({ kind: "overrun", engineTruncated, droppedBatches });
405
- if (sm.state !== "Running")
406
- return;
407
- }
408
- for (const ev of parsed.value.events) {
409
- // Input-priority / preemption: when an interactive input event arrives,
410
- // allow a short urgent burst even if a previous frame is still
411
- // in-flight. This keeps interactive latency resilient to transport/ack
412
- // jitter while older frames are still coalesced downstream (latest-wins)
413
- // in the backend/worker.
414
- if (ev.kind === "key" || ev.kind === "text" || ev.kind === "paste" || ev.kind === "mouse") {
415
- interactiveBudget = 2;
416
- }
417
- emit({ kind: "engine", event: ev });
418
- if (sm.state !== "Running")
419
- return;
420
- if (ev.kind === "resize") {
421
- const prev = viewport;
422
- if (prev === null || prev.cols !== ev.cols || prev.rows !== ev.rows) {
423
- viewport = Object.freeze({ cols: ev.cols, rows: ev.rows });
424
- markDirty(DIRTY_LAYOUT);
425
- }
426
- }
427
- if (ev.kind === "tick" && mode === "widget") {
428
- // Tick events drive render-only animation frames (e.g., Spinner).
429
- markDirty(DIRTY_RENDER);
430
- }
431
- const isWidgetRoutableEvent = ev.kind === "key" || ev.kind === "text" || ev.kind === "paste" || ev.kind === "mouse";
432
- if (mode === "widget" && isWidgetRoutableEvent) {
433
- if (keybindingsEnabled) {
434
- // Route key events through keybinding system first
435
- if (ev.kind === "key") {
436
- const bypass = widgetRenderer.shouldBypassKeybindings(ev);
437
- if (!bypass) {
438
- const keyCtx = Object.freeze({
439
- state: committedState,
440
- update: app.update,
441
- focusedId: widgetRenderer.getFocusedId(),
442
- });
443
- const keyResult = routeKeyEvent(keybindingState, ev, keyCtx);
444
- keybindingState = keyResult.nextState;
445
- if (keyResult.consumed)
446
- continue; // Skip default widget routing
447
- }
448
- }
449
- // Also route text events through keybinding system for single-character bindings
450
- if (ev.kind === "text") {
451
- const keyCode = codepointToKeyCode(ev.codepoint);
452
- if (keyCode !== null) {
453
- // Create a synthetic key event for keybinding matching
454
- const syntheticKeyEvent = {
455
- kind: "key",
456
- action: "down",
457
- key: keyCode,
458
- mods: 0, // Text events have no modifiers
459
- timeMs: ev.timeMs,
460
- };
461
- const keyCtx = Object.freeze({
462
- state: committedState,
463
- update: app.update,
464
- focusedId: widgetRenderer.getFocusedId(),
465
- });
466
- const keyResult = routeKeyEvent(keybindingState, syntheticKeyEvent, keyCtx);
467
- keybindingState = keyResult.nextState;
468
- if (keyResult.consumed)
469
- continue; // Skip default widget routing
470
- }
471
- }
472
- }
473
- let routed;
474
- try {
475
- routed = widgetRenderer.routeEngineEvent(ev);
476
- }
477
- catch (e) {
478
- enqueueFatal("ZRUI_USER_CODE_THROW", `widget routing threw: ${describeThrown(e)}`);
479
- return;
480
- }
481
- if (routed.needsRender)
482
- markDirty(DIRTY_RENDER);
483
- if (routed.action) {
484
- emit({ kind: "action", ...routed.action });
485
- if (sm.state !== "Running")
486
- return;
487
- }
488
- }
224
+ const fatal = deferredInlineFatal;
225
+ deferredInlineFatal = null;
226
+ doFatal(fatal.code, fatal.detail);
227
+ }
228
+ function fatalNowOrEnqueue(code, detail) {
229
+ const canFailFastInline = scheduler.isExecuting && !inRender && !inCommit;
230
+ if (canFailFastInline && inEventHandlerDepth > 0) {
231
+ if (deferredInlineFatal === null) {
232
+ deferredInlineFatal = Object.freeze({ code, detail });
489
233
  }
234
+ return;
490
235
  }
491
- finally {
492
- release();
236
+ if (canFailFastInline) {
237
+ doFatal(code, detail);
238
+ return;
493
239
  }
240
+ enqueueFatal(code, detail);
494
241
  }
495
- function commitUpdates() {
496
- const drained = updates.drain();
497
- if (drained.length === 0)
242
+ function cleanupStartedBackendAfterAbort() {
243
+ if (!backendStarted)
498
244
  return;
499
- const commitToken = perfMarkStart("commit");
500
- inCommit = true;
245
+ backendStarted = false;
501
246
  try {
502
- let next = committedState;
503
- for (const u of drained) {
504
- if (typeof u === "function") {
505
- next = u(next);
247
+ void backend
248
+ .stop()
249
+ .catch(() => undefined)
250
+ .finally(() => {
251
+ try {
252
+ backend.dispose();
506
253
  }
507
- else {
508
- next = u;
254
+ catch {
255
+ // ignore
509
256
  }
257
+ });
258
+ }
259
+ catch {
260
+ try {
261
+ backend.dispose();
510
262
  }
511
- if (next !== committedState) {
512
- committedState = next;
513
- markDirty(DIRTY_VIEW, false);
263
+ catch {
264
+ // ignore
514
265
  }
515
266
  }
516
- catch (e) {
517
- fatalNowOrEnqueue("ZRUI_USER_CODE_THROW", `state updater threw: ${describeThrown(e)}`);
518
- }
519
- finally {
520
- inCommit = false;
521
- perfMarkEnd("commit", commitToken);
522
- }
523
267
  }
524
- function scheduleFrameSettlement(p, submitStart, submitEnd) {
525
- if (isSyncFrameAck(p)) {
526
- if (PERF_ENABLED && submitStart !== null) {
527
- const ackNow = perfNow();
528
- perfRecord("backend_ack", ackNow - submitStart);
529
- if (submitEnd !== null) {
530
- perfRecord("frame_build", submitEnd - submitStart);
531
- perfRecord("worker_roundtrip", ackNow - submitEnd);
532
- }
533
- }
534
- framesInFlight = Math.max(0, framesInFlight - 1);
535
- return;
536
- }
537
- const acceptedAck = getAcceptedFrameAck(p);
538
- const ackPromise = acceptedAck ?? p;
539
- void ackPromise.then(() => {
540
- if (PERF_ENABLED && submitStart !== null) {
541
- const ackNow = perfNow();
542
- // backend_ack: total time from frame build start to backend ack.
543
- // Equals frame_build + worker_roundtrip (kept for backward compat).
544
- perfRecord("backend_ack", ackNow - submitStart);
545
- if (submitEnd !== null) {
546
- // frame_build: synchronous TS pipeline (view/commit/layout/render/build).
547
- perfRecord("frame_build", submitEnd - submitStart);
548
- // worker_roundtrip: async transport from requestFrame to backend ack.
549
- perfRecord("worker_roundtrip", ackNow - submitEnd);
550
- }
268
+ const rawRenderer = new RawRenderer({
269
+ backend,
270
+ maxDrawlistBytes: config.maxDrawlistBytes,
271
+ ...(opts.config?.drawlistValidateParams === undefined
272
+ ? {}
273
+ : { drawlistValidateParams: opts.config.drawlistValidateParams }),
274
+ drawlistReuseOutputBuffer: config.drawlistReuseOutputBuffer,
275
+ drawlistEncodedStringCacheCap: config.drawlistEncodedStringCacheCap,
276
+ });
277
+ const widgetRenderer = new WidgetRenderer({
278
+ backend,
279
+ maxDrawlistBytes: config.maxDrawlistBytes,
280
+ rootPadding: config.rootPadding,
281
+ breakpointThresholds: config.breakpointThresholds,
282
+ terminalProfile,
283
+ ...(opts.config?.drawlistValidateParams === undefined
284
+ ? {}
285
+ : { drawlistValidateParams: opts.config.drawlistValidateParams }),
286
+ drawlistReuseOutputBuffer: config.drawlistReuseOutputBuffer,
287
+ drawlistEncodedStringCacheCap: config.drawlistEncodedStringCacheCap,
288
+ requestRender: requestRenderFromRenderer,
289
+ requestView: requestViewFromRenderer,
290
+ onUserCodeError: (detail) => fatalNowOrEnqueue("ZRUI_USER_CODE_THROW", detail),
291
+ collectRuntimeBreadcrumbs: runtimeBreadcrumbsEnabled,
292
+ });
293
+ const focusDispatcher = createFocusDispatcher({
294
+ getFocusedId: () => widgetRenderer.getFocusedId(),
295
+ getFocusInfo: () => widgetRenderer.getCurrentFocusInfo(),
296
+ initialFocusedId: widgetRenderer.getFocusedId(),
297
+ onHandlerError: (error) => {
298
+ fatalNowOrEnqueue("ZRUI_USER_CODE_THROW", `onFocusChange handler threw: ${describeThrown(error)}`);
299
+ },
300
+ });
301
+ let routeStateUpdater = null;
302
+ let routerIntegration = null;
303
+ if (routes !== undefined) {
304
+ mode = "widget";
305
+ viewFn = (state) => {
306
+ if (!routerIntegration || !routeStateUpdater) {
307
+ throw new ZrUiError("ZRUI_INVALID_STATE", "router integration is not initialized");
551
308
  }
552
- scheduler.enqueue({ kind: "frameDone" });
553
- }, (err) => scheduler.enqueue({ kind: "frameError", error: err }));
554
- if (acceptedAck !== null) {
555
- void p.then(() => { }, (err) => scheduler.enqueue({
556
- kind: "fatal",
557
- code: "ZRUI_BACKEND_ERROR",
558
- detail: `requestFrame completion rejected after accepted ack: ${describeThrown(err)}`,
559
- }));
560
- }
309
+ return routerIntegration.renderCurrentScreen(state, routeStateUpdater);
310
+ };
561
311
  }
562
- function emitInternalRenderMetrics(renderTime) {
563
- if (config.internal_onRender === undefined)
564
- return true;
565
- try {
566
- config.internal_onRender({ renderTime: Math.max(0, renderTime) });
567
- return true;
568
- }
569
- catch (e) {
570
- fatalNowOrEnqueue("ZRUI_USER_CODE_THROW", `onRender callback threw: ${describeThrown(e)}`);
571
- return false;
572
- }
312
+ const applyKeybindingState = (nextState) => {
313
+ keybindingState = nextState;
314
+ keybindingsEnabled = computeKeybindingsEnabled(keybindingState);
315
+ };
316
+ const keybindingHelpers = createAppKeybindingHelpers({
317
+ getState: () => keybindingState,
318
+ markDirty: (flags) => markDirty(flags),
319
+ setState: applyKeybindingState,
320
+ throwCode: guards.throwCode,
321
+ });
322
+ const runtimeBreadcrumbHelpers = createRuntimeBreadcrumbHelpers({
323
+ getBaseInternalOnLayout: () => baseInternalOnLayout,
324
+ getBaseInternalOnRender: () => baseInternalOnRender,
325
+ getInspectorInternalOnLayout: () => inspectorInternalOnLayout,
326
+ getInspectorInternalOnRender: () => inspectorInternalOnRender,
327
+ getLastAction: () => breadcrumbLastAction,
328
+ getLastConsumptionPath: () => breadcrumbLastConsumptionPath,
329
+ getLastEventKind: () => breadcrumbLastEventKind,
330
+ getWidgetRuntimeBreadcrumbSnapshot: () => widgetRenderer.getRuntimeBreadcrumbSnapshot(),
331
+ isEnabled: () => runtimeBreadcrumbsEnabled,
332
+ isEventTracked: () => breadcrumbEventTracked,
333
+ setEnabled: (enabled) => {
334
+ runtimeBreadcrumbsEnabled = enabled;
335
+ },
336
+ setEventTracked: (tracked) => {
337
+ breadcrumbEventTracked = tracked;
338
+ },
339
+ setInspectorInternalOnLayout: (callback) => {
340
+ inspectorInternalOnLayout = callback;
341
+ },
342
+ setInspectorInternalOnRender: (callback) => {
343
+ inspectorInternalOnRender = callback;
344
+ },
345
+ setLastAction: (action) => {
346
+ breadcrumbLastAction = action;
347
+ },
348
+ setLastConsumptionPath: (path) => {
349
+ breadcrumbLastConsumptionPath = path;
350
+ },
351
+ setLastEventKind: (kind) => {
352
+ breadcrumbLastEventKind = kind;
353
+ },
354
+ setWidgetRuntimeBreadcrumbCaptureEnabled: (enabled) => {
355
+ widgetRenderer.setRuntimeBreadcrumbCaptureEnabled(enabled);
356
+ },
357
+ });
358
+ function retryTopLevelViewError() {
359
+ topLevelViewError = null;
360
+ markDirty(DIRTY_VIEW | DIRTY_LAYOUT);
573
361
  }
574
- function emitInternalLayoutSnapshot() {
575
- if (config.internal_onLayout === undefined)
576
- return true;
362
+ function quitFromTopLevelViewError() {
363
+ let stopPromise;
577
364
  try {
578
- config.internal_onLayout({ idRects: widgetRenderer.getRectByIdIndex() });
579
- return true;
580
- }
581
- catch (e) {
582
- fatalNowOrEnqueue("ZRUI_USER_CODE_THROW", `onLayout callback threw: ${describeThrown(e)}`);
583
- return false;
365
+ stopPromise = app.stop();
584
366
  }
585
- }
586
- function tryRenderOnce() {
587
- if (sm.state !== "Running")
588
- return;
589
- // During stop(), we may still receive a few late event batches, but we must not
590
- // submit new frames (backend may be tearing down).
591
- if (lifecycleBusy === "stop")
592
- return;
593
- if (dirtyFlags === 0)
594
- return;
595
- const maxInFlight = config.maxFramesInFlight + (interactiveBudget > 0 ? 1 : 0);
596
- if (framesInFlight >= maxInFlight)
597
- return;
598
- if (mode === null)
599
- return;
600
- // Record schedule_wait: time from render request to render start
601
- if (PERF_ENABLED && scheduleWaitStartMs !== null) {
602
- perfMarkEnd("schedule_wait", scheduleWaitStartMs);
603
- scheduleWaitStartMs = null;
604
- }
605
- const dirtyVersionStart = snapshotDirtyVersions();
606
- const snapshot = committedState;
607
- const hooks = {
608
- enterRender: () => {
609
- inRender = true;
610
- },
611
- exitRender: () => {
612
- inRender = false;
613
- },
614
- };
615
- if (mode === "raw") {
616
- const df = drawFn;
617
- if (!df)
618
- return;
619
- const renderStart = perfNow();
620
- const submitToken = perfMarkStart("submit_frame");
621
- const res = rawRenderer.submitFrame(df, hooks);
622
- perfMarkEnd("submit_frame", submitToken);
623
- if (!res.ok) {
624
- fatalNowOrEnqueue(res.code, res.detail);
625
- return;
367
+ catch {
368
+ try {
369
+ app.dispose();
626
370
  }
627
- if (!emitInternalRenderMetrics(perfNow() - renderStart))
628
- return;
629
- submitFrameStartMs = PERF_ENABLED ? submitToken : null;
630
- const buildEndMs = PERF_ENABLED ? perfNow() : null;
631
- framesInFlight++;
632
- if (interactiveBudget > 0)
633
- interactiveBudget--;
634
- scheduleFrameSettlement(res.inFlight, submitFrameStartMs, buildEndMs);
635
- clearConsumedDirtyFlags(DIRTY_RENDER | DIRTY_LAYOUT | DIRTY_VIEW, dirtyVersionStart);
636
- return;
637
- }
638
- const vf = viewFn;
639
- if (!vf)
640
- return;
641
- if (!viewport)
642
- return;
643
- if ((dirtyFlags & (DIRTY_VIEW | DIRTY_LAYOUT | DIRTY_RENDER)) === 0)
644
- return;
645
- // Compute render plan from dirty flags. Render-only turns (e.g., focus change)
646
- // skip view/commit/layout. Layout-only turns (e.g., resize without state change)
647
- // skip view/commit. Commit turns now rely on WidgetRenderer layout signatures
648
- // to decide whether relayout is required, instead of forcing layout by default.
649
- // First-frame/bootstrap safety is handled inside submitFrame(): it falls back
650
- // to full pipeline when committedRoot or layoutTree is null.
651
- const pendingDirtyFlags = dirtyFlags;
652
- const plan = {
653
- commit: (pendingDirtyFlags & DIRTY_VIEW) !== 0,
654
- layout: (pendingDirtyFlags & DIRTY_LAYOUT) !== 0,
655
- // Keep interactive frames on the absolute fast path (no layout signature walk).
656
- // Background commit turns can afford the signature check to avoid unnecessary relayout.
657
- checkLayoutStability: (pendingDirtyFlags & DIRTY_LAYOUT) === 0 &&
658
- interactiveBudget === 0 &&
659
- (pendingDirtyFlags & DIRTY_VIEW) !== 0,
660
- };
661
- const renderStart = perfNow();
662
- const submitToken = perfMarkStart("submit_frame");
663
- const res = widgetRenderer.submitFrame(vf, snapshot, viewport, theme, hooks, plan);
664
- perfMarkEnd("submit_frame", submitToken);
665
- if (!res.ok) {
666
- fatalNowOrEnqueue(res.code, res.detail);
667
- return;
668
- }
669
- if (!emitInternalRenderMetrics(perfNow() - renderStart))
670
- return;
671
- if (!emitInternalLayoutSnapshot())
672
- return;
673
- submitFrameStartMs = PERF_ENABLED ? submitToken : null;
674
- const buildEndMs = PERF_ENABLED ? perfNow() : null;
675
- framesInFlight++;
676
- if (interactiveBudget > 0)
677
- interactiveBudget--;
678
- scheduleFrameSettlement(res.inFlight, submitFrameStartMs, buildEndMs);
679
- let consumedDirtyFlags = DIRTY_RENDER;
680
- if (plan.layout)
681
- consumedDirtyFlags |= DIRTY_LAYOUT;
682
- if (plan.commit)
683
- consumedDirtyFlags |= DIRTY_VIEW;
684
- clearConsumedDirtyFlags(consumedDirtyFlags, dirtyVersionStart);
685
- }
686
- function drainIgnored(items) {
687
- for (const it of items) {
688
- if (it.kind === "eventBatch") {
689
- try {
690
- it.batch.release();
691
- }
692
- catch {
693
- // ignore
694
- }
371
+ catch {
372
+ // ignore
695
373
  }
696
- }
697
- }
698
- function processTurn(items) {
699
- const st = sm.state;
700
- if (st === "Disposed" || st === "Faulted") {
701
- drainIgnored(items);
702
374
  return;
703
375
  }
704
- let sawKick = false;
705
- for (const item of items) {
706
- if (sm.state === "Faulted" || sm.state === "Disposed") {
707
- drainIgnored(items);
708
- return;
376
+ void stopPromise.finally(() => {
377
+ try {
378
+ app.dispose();
709
379
  }
710
- switch (item.kind) {
711
- case "fatal": {
712
- doFatal(item.code, item.detail);
713
- drainIgnored(items);
714
- return;
715
- }
716
- case "eventBatch": {
717
- if (sm.state !== "Running") {
718
- try {
719
- item.batch.release();
720
- }
721
- catch {
722
- // ignore
723
- }
724
- break;
725
- }
726
- processEventBatch(item.batch);
727
- if (sm.state !== "Running") {
728
- drainIgnored(items);
729
- return;
730
- }
731
- commitUpdates();
732
- break;
733
- }
734
- case "userCommit": {
735
- userCommitScheduled = false;
736
- if (sm.state === "Running")
737
- commitUpdates();
738
- break;
739
- }
740
- case "kick": {
741
- sawKick = true;
742
- break;
743
- }
744
- case "renderRequest": {
745
- break;
746
- }
747
- case "frameDone": {
748
- framesInFlight = Math.max(0, framesInFlight - 1);
749
- break;
750
- }
751
- case "frameError": {
752
- framesInFlight = Math.max(0, framesInFlight - 1);
753
- // If we are intentionally stopping, treat requestFrame rejections as
754
- // part of shutdown (not a fatal backend error).
755
- if (lifecycleBusy === "stop")
756
- break;
757
- doFatal("ZRUI_BACKEND_ERROR", `requestFrame rejected: ${describeThrown(item.error)}`);
758
- break;
759
- }
380
+ catch {
381
+ // ignore
760
382
  }
383
+ });
384
+ }
385
+ function stopFromUnhandledQuitEvent() {
386
+ let stopPromise;
387
+ try {
388
+ stopPromise = app.stop();
761
389
  }
762
- if (sm.state !== "Running")
390
+ catch (error) {
391
+ if (lifecycleBusy === "stop")
392
+ return;
393
+ fatalNowOrEnqueue("ZRUI_BACKEND_ERROR", `stop threw after unhandled quit input: ${describeThrown(error)}`);
763
394
  return;
764
- if (sawKick)
765
- commitUpdates();
766
- tryRenderOnce();
395
+ }
396
+ void stopPromise.catch((error) => {
397
+ fatalNowOrEnqueue("ZRUI_BACKEND_ERROR", `stop rejected after unhandled quit input: ${describeThrown(error)}`);
398
+ });
767
399
  }
768
- async function pollLoop(token) {
769
- while (sm.state === "Running" && token === pollToken) {
770
- let batch;
771
- try {
772
- batch = await backend.pollEvents();
773
- }
774
- catch (e) {
775
- if (sm.state === "Running" && token === pollToken) {
776
- enqueueFatal("ZRUI_BACKEND_ERROR", `pollEvents rejected: ${describeThrown(e)}`);
777
- }
778
- return;
779
- }
780
- if (token !== pollToken || sm.state !== "Running") {
400
+ if (routes !== undefined) {
401
+ routerIntegration = createRouterIntegration({
402
+ routes,
403
+ initialRoute: opts.initialRoute,
404
+ ...(opts.routeHistoryMaxDepth === undefined
405
+ ? {}
406
+ : { maxHistoryDepth: opts.routeHistoryMaxDepth }),
407
+ getState: () => committedState,
408
+ requestRouteRender: () => markDirty(DIRTY_VIEW | DIRTY_LAYOUT),
409
+ captureFocusSnapshot: () => widgetRenderer.captureFocusSnapshot(),
410
+ restoreFocusSnapshot: (snapshot) => widgetRenderer.restoreFocusSnapshot(snapshot),
411
+ assertCanMutate: guards.assertRouterMutationAllowed,
412
+ });
413
+ }
414
+ function emit(ev) {
415
+ const snapshot = [];
416
+ for (const slot of handlers) {
417
+ if (slot.active.value)
418
+ snapshot.push(slot.fn);
419
+ }
420
+ inEventHandlerDepth++;
421
+ try {
422
+ for (const fn of snapshot) {
781
423
  try {
782
- batch.release();
424
+ fn(ev);
783
425
  }
784
- catch {
785
- // ignore
426
+ catch (error) {
427
+ fatalNowOrEnqueue("ZRUI_USER_CODE_THROW", `onEvent handler threw: ${describeThrown(error)}`);
428
+ return false;
786
429
  }
787
- return;
788
430
  }
789
- scheduler.enqueue({ kind: "eventBatch", batch });
790
431
  }
432
+ finally {
433
+ inEventHandlerDepth--;
434
+ flushDeferredInlineFatal();
435
+ }
436
+ return true;
437
+ }
438
+ function emitFocusChangeIfNeeded() {
439
+ return focusDispatcher.emitIfChanged();
791
440
  }
441
+ const renderLoop = createRenderLoop({
442
+ buildRuntimeBreadcrumbSnapshot: runtimeBreadcrumbHelpers.buildRuntimeBreadcrumbSnapshot,
443
+ config,
444
+ dirtyTracker,
445
+ emitFocusChangeIfNeeded,
446
+ enqueueWorkItem,
447
+ fatalNowOrEnqueue,
448
+ getBaseInternalOnLayout: () => baseInternalOnLayout,
449
+ getBaseInternalOnRender: () => baseInternalOnRender,
450
+ getCommittedState: () => committedState,
451
+ getDebugLayoutEnabled: () => debugLayoutEnabled,
452
+ getDrawFn: () => drawFn,
453
+ getFramesInFlight: () => framesInFlight,
454
+ getInspectorInternalOnLayout: () => inspectorInternalOnLayout,
455
+ getInspectorInternalOnRender: () => inspectorInternalOnRender,
456
+ getInteractiveBudget: () => interactiveBudget,
457
+ getLifecycleBusy: () => lifecycleBusy,
458
+ getMode: () => mode,
459
+ getRenderRequestQueuedForCurrentTurn: () => renderRequestQueuedForCurrentTurn,
460
+ getScheduleWaitStartMs: () => scheduleWaitStartMs,
461
+ getTheme: () => theme,
462
+ getThemeTransition: () => themeTransition,
463
+ getTopLevelViewError: () => topLevelViewError,
464
+ getViewFn: () => viewFn,
465
+ getViewport: () => viewport,
466
+ isRunning: () => sm.state === "Running",
467
+ markDirty,
468
+ rawRenderer,
469
+ setFramesInFlight: (next) => {
470
+ framesInFlight = next;
471
+ },
472
+ setInRender: (next) => {
473
+ inRender = next;
474
+ },
475
+ setInteractiveBudget: (next) => {
476
+ interactiveBudget = next;
477
+ },
478
+ setRenderRequestQueuedForCurrentTurn: (next) => {
479
+ renderRequestQueuedForCurrentTurn = next;
480
+ },
481
+ setScheduleWaitStartMs: (next) => {
482
+ scheduleWaitStartMs = next;
483
+ },
484
+ setTheme: (next) => {
485
+ theme = next;
486
+ },
487
+ setThemeTransition: (next) => {
488
+ themeTransition = next;
489
+ },
490
+ setTopLevelViewError: (next) => {
491
+ topLevelViewError = next;
492
+ },
493
+ widgetRenderer,
494
+ });
495
+ tryRenderOnceImpl = renderLoop.tryRenderOnce;
496
+ const eventLoop = createEventLoop({
497
+ backend,
498
+ config,
499
+ doFatal,
500
+ emit,
501
+ emitFocusChangeIfNeeded,
502
+ enqueueWorkItem,
503
+ fatalNowOrEnqueue,
504
+ getAppUpdate: () => app.update,
505
+ getCommittedState: () => committedState,
506
+ getFramesInFlight: () => framesInFlight,
507
+ getInteractiveBudget: () => interactiveBudget,
508
+ getKeybindingState: () => keybindingState,
509
+ getKeybindingsEnabled: () => keybindingsEnabled,
510
+ getLastObservedSpinnerTickEventMs: () => lastObservedSpinnerTickEventMs,
511
+ getLastSpinnerRenderPerfMs: () => lastSpinnerRenderPerfMs,
512
+ getLastSpinnerRenderTickMs: () => lastSpinnerRenderTickMs,
513
+ getLifecycleBusy: () => lifecycleBusy,
514
+ getMode: () => mode,
515
+ getPollToken: () => pollToken,
516
+ getRenderRequestQueuedForCurrentTurn: () => renderRequestQueuedForCurrentTurn,
517
+ getRuntimeState: () => sm.state,
518
+ getTopLevelViewError: () => topLevelViewError,
519
+ getViewport: () => viewport,
520
+ keybindingHelpers,
521
+ markDirty,
522
+ noteBreadcrumbAction: runtimeBreadcrumbHelpers.noteBreadcrumbAction,
523
+ noteBreadcrumbConsumptionPath: runtimeBreadcrumbHelpers.noteBreadcrumbConsumptionPath,
524
+ noteBreadcrumbEvent: runtimeBreadcrumbHelpers.noteBreadcrumbEvent,
525
+ quitFromTopLevelViewError,
526
+ retryTopLevelViewError,
527
+ setCommittedState: (next) => {
528
+ committedState = next;
529
+ },
530
+ setFramesInFlight: (next) => {
531
+ framesInFlight = next;
532
+ },
533
+ setInCommit: (next) => {
534
+ inCommit = next;
535
+ },
536
+ setInteractiveBudget: (next) => {
537
+ interactiveBudget = next;
538
+ },
539
+ setKeybindingState: applyKeybindingState,
540
+ setLastObservedSpinnerTickEventMs: (next) => {
541
+ lastObservedSpinnerTickEventMs = next;
542
+ },
543
+ setLastSpinnerRenderPerfMs: (next) => {
544
+ lastSpinnerRenderPerfMs = next;
545
+ },
546
+ setLastSpinnerRenderTickMs: (next) => {
547
+ lastSpinnerRenderTickMs = next;
548
+ },
549
+ setRenderRequestQueuedForCurrentTurn: (next) => {
550
+ renderRequestQueuedForCurrentTurn = next;
551
+ },
552
+ setUserCommitScheduled: (next) => {
553
+ userCommitScheduled = next;
554
+ },
555
+ setViewport: (next) => {
556
+ viewport = next;
557
+ },
558
+ spinnerTickMinIntervalMs,
559
+ stopFromUnhandledQuitEvent,
560
+ timeUnwrap,
561
+ tryRenderOnce: () => tryRenderOnceImpl(),
562
+ updates,
563
+ widgetRenderer,
564
+ });
565
+ processTurnImpl = eventLoop.processTurn;
792
566
  const app = {
793
567
  view(fn) {
794
- assertOperational("view");
568
+ guards.assertOperational("view");
569
+ guards.assertLifecycleIdle("view");
795
570
  sm.assertOneOf(["Created", "Stopped"], "view: must be Created or Stopped");
796
- assertNotReentrant("view");
571
+ guards.assertNotReentrant("view");
572
+ if (routes !== undefined) {
573
+ guards.throwCode("ZRUI_MODE_CONFLICT", "view: routes are configured in createApp(); screen rendering is managed by router");
574
+ }
797
575
  if (mode === "raw")
798
- throwCode("ZRUI_MODE_CONFLICT", "view: draw mode already selected");
576
+ guards.throwCode("ZRUI_MODE_CONFLICT", "view: draw mode already selected");
799
577
  mode = "widget";
800
578
  viewFn = fn;
801
579
  },
580
+ replaceView(fn) {
581
+ guards.assertOperational("replaceView");
582
+ guards.assertLifecycleIdle("replaceView");
583
+ guards.assertNotReentrant("replaceView");
584
+ if (routes !== undefined) {
585
+ guards.throwCode("ZRUI_MODE_CONFLICT", "replaceView: routes are configured in createApp(); screen rendering is managed by router");
586
+ }
587
+ if (mode === "raw") {
588
+ guards.throwCode("ZRUI_MODE_CONFLICT", "replaceView: draw mode already selected");
589
+ }
590
+ if (mode === null)
591
+ mode = "widget";
592
+ viewFn = fn;
593
+ topLevelViewError = null;
594
+ if (sm.state === "Running") {
595
+ widgetRenderer.forceFullRenderNextFrame();
596
+ markDirty(DIRTY_VIEW);
597
+ }
598
+ },
599
+ replaceRoutes(nextRoutes) {
600
+ guards.assertOperational("replaceRoutes");
601
+ guards.assertLifecycleIdle("replaceRoutes");
602
+ guards.assertNotReentrant("replaceRoutes");
603
+ const activeRouterIntegration = routerIntegration;
604
+ if (activeRouterIntegration === null || routes === undefined) {
605
+ throw new ZrUiError("ZRUI_MODE_CONFLICT", "replaceRoutes: app was created without routes; use replaceView for view-mode apps");
606
+ }
607
+ if (mode === "raw") {
608
+ guards.throwCode("ZRUI_MODE_CONFLICT", "replaceRoutes: draw mode already selected");
609
+ }
610
+ const nextRouteKeybindings = activeRouterIntegration.replaceRoutes(nextRoutes);
611
+ keybindingHelpers.replaceRouteBindings(nextRouteKeybindings);
612
+ topLevelViewError = null;
613
+ if (sm.state === "Running") {
614
+ widgetRenderer.forceFullRenderNextFrame();
615
+ markDirty(DIRTY_VIEW);
616
+ }
617
+ },
802
618
  draw(fn) {
803
- assertOperational("draw");
619
+ guards.assertOperational("draw");
620
+ guards.assertLifecycleIdle("draw");
804
621
  sm.assertOneOf(["Created", "Stopped"], "draw: must be Created or Stopped");
805
- assertNotReentrant("draw");
622
+ guards.assertNotReentrant("draw");
806
623
  if (mode === "widget")
807
- throwCode("ZRUI_MODE_CONFLICT", "draw: view mode already selected");
624
+ guards.throwCode("ZRUI_MODE_CONFLICT", "draw: view mode already selected");
808
625
  mode = "raw";
809
626
  drawFn = fn;
810
627
  },
811
628
  onEvent(handler) {
812
- assertOperational("onEvent");
629
+ guards.assertOperational("onEvent");
813
630
  if (inCommit || inRender)
814
- throwCode("ZRUI_REENTRANT_CALL", "onEvent: re-entrant call");
631
+ guards.throwCode("ZRUI_REENTRANT_CALL", "onEvent: re-entrant call");
815
632
  const active = { value: true };
816
633
  handlers.push({ fn: handler, active });
817
634
  return () => {
818
635
  active.value = false;
819
636
  };
820
637
  },
638
+ onFocusChange(handler) {
639
+ guards.assertOperational("onFocusChange");
640
+ if (inCommit || inRender) {
641
+ guards.throwCode("ZRUI_REENTRANT_CALL", "onFocusChange: re-entrant call");
642
+ }
643
+ return focusDispatcher.register(handler);
644
+ },
821
645
  update(updater) {
822
- assertOperational("update");
646
+ guards.assertOperational("update");
647
+ guards.assertLifecycleIdle("update");
823
648
  if (inCommit)
824
- throwCode("ZRUI_REENTRANT_CALL", "update: called during commit");
825
- if (inRender)
826
- throwCode("ZRUI_UPDATE_DURING_RENDER", "update: called during render");
649
+ guards.throwCode("ZRUI_REENTRANT_CALL", "update: called during commit");
650
+ if (inRender) {
651
+ guards.throwCode("ZRUI_UPDATE_DURING_RENDER", guards.updateDuringRenderDetail("update"));
652
+ }
827
653
  updates.enqueue(updater);
828
654
  if (sm.state === "Running" && inEventHandlerDepth === 0 && !userCommitScheduled) {
829
655
  userCommitScheduled = true;
830
- scheduler.enqueue({ kind: "userCommit" });
656
+ enqueueWorkItem({ kind: "userCommit" });
831
657
  }
832
658
  },
833
659
  setTheme(next) {
834
- assertOperational("setTheme");
660
+ guards.assertOperational("setTheme");
661
+ guards.assertLifecycleIdle("setTheme");
835
662
  if (inCommit)
836
- throwCode("ZRUI_REENTRANT_CALL", "setTheme: called during commit");
837
- if (inRender)
838
- throwCode("ZRUI_UPDATE_DURING_RENDER", "setTheme: called during render");
839
- theme = coerceToLegacyTheme(next);
840
- requestRenderFromRenderer();
663
+ guards.throwCode("ZRUI_REENTRANT_CALL", "setTheme: called during commit");
664
+ if (inRender) {
665
+ guards.throwCode("ZRUI_UPDATE_DURING_RENDER", guards.updateDuringRenderDetail("setTheme"));
666
+ }
667
+ const nextTheme = compileTheme(next);
668
+ if (nextTheme === themeTransition?.to)
669
+ return;
670
+ if (nextTheme === theme) {
671
+ themeTransition = null;
672
+ return;
673
+ }
674
+ renderLoop.beginThemeTransition(nextTheme);
675
+ requestViewFromRenderer();
676
+ },
677
+ debugLayout(enabled) {
678
+ guards.assertOperational("debugLayout");
679
+ guards.assertLifecycleIdle("debugLayout");
680
+ if (mode === "raw") {
681
+ guards.throwCode("ZRUI_MODE_CONFLICT", "debugLayout: not available in draw mode");
682
+ }
683
+ const next = enabled === undefined ? !debugLayoutEnabled : enabled === true;
684
+ if (next === debugLayoutEnabled)
685
+ return debugLayoutEnabled;
686
+ debugLayoutEnabled = next;
687
+ requestViewFromRenderer();
688
+ return debugLayoutEnabled;
841
689
  },
842
690
  start() {
843
- assertOperational("start");
844
- assertNotReentrant("start");
845
- if (lifecycleBusy)
846
- throwCode("ZRUI_INVALID_STATE", "start: lifecycle operation already in flight");
691
+ guards.assertOperational("start");
692
+ guards.assertNotReentrant("start");
847
693
  sm.assertOneOf(["Created", "Stopped"], "start: must be Created or Stopped");
848
694
  if (mode === null)
849
- throwCode("ZRUI_NO_RENDER_MODE", "start: no render mode selected");
695
+ guards.throwCode("ZRUI_NO_RENDER_MODE", "start: no render mode selected");
850
696
  lifecycleBusy = "start";
851
- let p;
697
+ const startGeneration = ++lifecycleGeneration;
698
+ let promise = null;
852
699
  try {
853
- p = backend.start();
700
+ promise = backend.start();
854
701
  }
855
- catch (e) {
856
- lifecycleBusy = null;
857
- throwCode("ZRUI_BACKEND_ERROR", `backend.start threw: ${describeThrown(e)}`);
702
+ catch (error) {
703
+ if (lifecycleGeneration === startGeneration)
704
+ lifecycleBusy = null;
705
+ guards.throwCode("ZRUI_BACKEND_ERROR", `backend.start threw: ${describeThrown(error)}`);
858
706
  }
859
- return p.then(() => {
860
- lifecycleBusy = null;
861
- sm.toRunning();
862
- markDirty(DIRTY_VIEW, false);
863
- pollToken++;
864
- void pollLoop(pollToken);
865
- scheduler.enqueue({ kind: "kick" });
866
- }, (e) => {
707
+ if (promise === null)
708
+ throw new Error("start: backend.start did not return a promise");
709
+ return promise.then(async () => {
710
+ try {
711
+ backendStarted = true;
712
+ if (lifecycleGeneration !== startGeneration) {
713
+ cleanupStartedBackendAfterAbort();
714
+ return;
715
+ }
716
+ topLevelViewError = null;
717
+ const loadedTerminalProfile = await loadTerminalProfile(backend);
718
+ if (lifecycleGeneration !== startGeneration) {
719
+ cleanupStartedBackendAfterAbort();
720
+ return;
721
+ }
722
+ terminalProfile = loadedTerminalProfile;
723
+ widgetRenderer.setTerminalProfile(terminalProfile);
724
+ sm.toRunning();
725
+ markDirty(DIRTY_VIEW, false);
726
+ pollToken++;
727
+ void eventLoop.pollLoop(pollToken);
728
+ enqueueWorkItem({ kind: "kick" });
729
+ }
730
+ finally {
731
+ if (lifecycleGeneration === startGeneration && lifecycleBusy === "start") {
732
+ lifecycleBusy = null;
733
+ }
734
+ }
735
+ }, (error) => {
736
+ if (lifecycleGeneration !== startGeneration)
737
+ return;
867
738
  lifecycleBusy = null;
868
- throw new ZrUiError("ZRUI_BACKEND_ERROR", `backend.start rejected: ${describeThrown(e)}`);
739
+ throw new ZrUiError("ZRUI_BACKEND_ERROR", `backend.start rejected: ${describeThrown(error)}`);
740
+ });
741
+ },
742
+ run() {
743
+ guards.assertOperational("run");
744
+ guards.assertNotReentrant("run");
745
+ sm.assertOneOf(["Created", "Stopped"], "run: must be Created or Stopped");
746
+ if (mode === null)
747
+ guards.throwCode("ZRUI_NO_RENDER_MODE", "run: no render mode selected");
748
+ const proc = readProcessLike();
749
+ let runSettle = null;
750
+ const runController = createRunSignalController({
751
+ onDetached: () => {
752
+ if (runSettle !== null && settleActiveRun === runSettle) {
753
+ settleActiveRun = null;
754
+ }
755
+ },
756
+ onSignal: async () => {
757
+ try {
758
+ if (sm.state === "Running")
759
+ await app.stop();
760
+ }
761
+ catch {
762
+ // ignore
763
+ }
764
+ try {
765
+ app.dispose();
766
+ }
767
+ catch {
768
+ // ignore
769
+ }
770
+ try {
771
+ proc?.exit?.(0);
772
+ }
773
+ catch {
774
+ // ignore
775
+ }
776
+ },
777
+ processLike: proc,
778
+ });
779
+ runSettle = runController.settle;
780
+ settleActiveRun = runController.settle;
781
+ let startPromise;
782
+ try {
783
+ startPromise = app.start();
784
+ }
785
+ catch (error) {
786
+ runController.detach();
787
+ throw error;
788
+ }
789
+ return startPromise.then(() => {
790
+ if (!runController.canRegisterSignals) {
791
+ runController.settle();
792
+ }
793
+ return runController.promise;
794
+ }, (error) => {
795
+ runController.detach();
796
+ throw error;
869
797
  });
870
798
  },
871
799
  stop() {
872
- assertOperational("stop");
873
- assertNotReentrant("stop");
874
- if (lifecycleBusy)
875
- throwCode("ZRUI_INVALID_STATE", "stop: lifecycle operation already in flight");
800
+ guards.assertOperational("stop");
801
+ guards.assertNotReentrant("stop");
876
802
  sm.assertOneOf(["Running"], "stop: must be Running");
877
803
  lifecycleBusy = "stop";
878
- // Stop polling immediately so in-flight pollEvents rejections from backend.stop()
879
- // are treated as part of shutdown (not a fatal backend error).
804
+ const stopGeneration = ++lifecycleGeneration;
880
805
  pollToken++;
881
- // Clear any in-flight frames so a shutdown doesn't strand the app in a state
882
- // where a future start() cannot submit frames.
883
806
  framesInFlight = 0;
884
- let p;
807
+ let promise = null;
885
808
  try {
886
- p = backend.stop();
809
+ promise = backend.stop();
887
810
  }
888
- catch (e) {
889
- lifecycleBusy = null;
890
- throwCode("ZRUI_BACKEND_ERROR", `backend.stop threw: ${describeThrown(e)}`);
811
+ catch (error) {
812
+ if (lifecycleGeneration === stopGeneration)
813
+ lifecycleBusy = null;
814
+ guards.throwCode("ZRUI_BACKEND_ERROR", `backend.stop threw: ${describeThrown(error)}`);
891
815
  }
892
- return p.then(() => {
893
- lifecycleBusy = null;
894
- sm.toStopped();
895
- }, (e) => {
816
+ if (promise === null)
817
+ throw new Error("stop: backend.stop did not return a promise");
818
+ return promise.then(() => {
819
+ try {
820
+ if (lifecycleGeneration !== stopGeneration)
821
+ return;
822
+ backendStarted = false;
823
+ themeTransition = null;
824
+ sm.toStopped();
825
+ settleActiveRun?.();
826
+ }
827
+ finally {
828
+ if (lifecycleGeneration === stopGeneration && lifecycleBusy === "stop") {
829
+ lifecycleBusy = null;
830
+ }
831
+ }
832
+ }, (error) => {
833
+ if (lifecycleGeneration !== stopGeneration)
834
+ return;
896
835
  lifecycleBusy = null;
897
- throw new ZrUiError("ZRUI_BACKEND_ERROR", `backend.stop rejected: ${describeThrown(e)}`);
836
+ throw new ZrUiError("ZRUI_BACKEND_ERROR", `backend.stop rejected: ${describeThrown(error)}`);
898
837
  });
899
838
  },
900
839
  dispose() {
901
840
  if (inCommit || inRender || inEventHandlerDepth > 0) {
902
- throwCode("ZRUI_REENTRANT_CALL", "dispose: re-entrant call");
841
+ guards.throwCode("ZRUI_REENTRANT_CALL", "dispose: re-entrant call");
903
842
  }
904
843
  const st0 = sm.state;
905
844
  if (st0 === "Disposed")
906
845
  return;
846
+ lifecycleGeneration++;
847
+ lifecycleBusy = null;
907
848
  pollToken++;
849
+ themeTransition = null;
908
850
  try {
909
851
  sm.dispose();
910
852
  }
911
853
  catch {
912
854
  // ignore
913
855
  }
914
- if (st0 === "Running") {
856
+ if (st0 === "Running" || backendStarted) {
915
857
  try {
916
858
  void backend.stop().catch(() => undefined);
917
859
  }
@@ -919,32 +861,71 @@ export function createApp(opts) {
919
861
  // ignore
920
862
  }
921
863
  }
864
+ backendStarted = false;
922
865
  try {
923
866
  backend.dispose();
924
867
  }
925
868
  catch {
926
869
  // ignore
927
870
  }
871
+ settleActiveRun?.();
928
872
  },
929
- /* --- Keybinding API --- */
930
873
  keys(bindings) {
931
- assertOperational("keys");
932
- keybindingState = registerBindings(keybindingState, bindings).state;
933
- keybindingsEnabled = computeKeybindingsEnabled(keybindingState);
874
+ guards.assertKeybindingMutationAllowed("keys");
875
+ guards.assertLifecycleIdle("keys");
876
+ keybindingHelpers.registerAppBindings(bindings);
934
877
  },
935
878
  modes(modes) {
936
- assertOperational("modes");
937
- keybindingState = registerModes(keybindingState, modes).state;
938
- keybindingsEnabled = computeKeybindingsEnabled(keybindingState);
879
+ guards.assertKeybindingMutationAllowed("modes");
880
+ guards.assertLifecycleIdle("modes");
881
+ keybindingHelpers.registerAppModes(modes);
939
882
  },
940
883
  setMode(modeName) {
941
- assertOperational("setMode");
942
- keybindingState = setMode(keybindingState, modeName);
884
+ guards.assertKeybindingMutationAllowed("setMode");
885
+ guards.assertLifecycleIdle("setMode");
886
+ applyKeybindingState(setMode(keybindingState, modeName));
943
887
  },
944
888
  getMode() {
945
889
  return getMode(keybindingState);
946
890
  },
891
+ getBindings(mode) {
892
+ return getBindings(keybindingState, mode);
893
+ },
894
+ get pendingChord() {
895
+ return getPendingChord(keybindingState);
896
+ },
897
+ getTerminalProfile() {
898
+ return terminalProfile;
899
+ },
900
+ measureElement(id) {
901
+ if (mode !== "widget")
902
+ return null;
903
+ return widgetRenderer.getRectByIdIndex().get(id) ?? null;
904
+ },
905
+ ...(routerIntegration ? { router: routerIntegration.router } : {}),
947
906
  };
907
+ routeStateUpdater = app.update;
908
+ if (routerIntegration) {
909
+ keybindingHelpers.replaceRouteBindings(routerIntegration.routeKeybindings);
910
+ }
911
+ Object.defineProperty(app, APP_INTERNAL_REQUEST_VIEW_LAYOUT_MARKER, {
912
+ value: () => {
913
+ if (sm.state !== "Running")
914
+ return;
915
+ markDirty(DIRTY_VIEW | DIRTY_LAYOUT);
916
+ },
917
+ enumerable: false,
918
+ configurable: false,
919
+ writable: false,
920
+ });
921
+ Object.defineProperty(app, APP_INTERNAL_SET_RUNTIME_BREADCRUMB_HOOKS_MARKER, {
922
+ value: (hooks) => {
923
+ runtimeBreadcrumbHelpers.setInspectorHooks(hooks);
924
+ },
925
+ enumerable: false,
926
+ configurable: false,
927
+ writable: false,
928
+ });
948
929
  return app;
949
930
  }
950
931
  //# sourceMappingURL=createApp.js.map