@rezi-ui/core 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (922) hide show
  1. package/README.md +12 -0
  2. package/dist/abi.d.ts +72 -0
  3. package/dist/abi.d.ts.map +1 -0
  4. package/dist/abi.js +86 -0
  5. package/dist/abi.js.map +1 -0
  6. package/dist/app/__tests__/dirtyFlagPlan.test.d.ts +2 -0
  7. package/dist/app/__tests__/dirtyFlagPlan.test.d.ts.map +1 -0
  8. package/dist/app/__tests__/dirtyFlagPlan.test.js +207 -0
  9. package/dist/app/__tests__/dirtyFlagPlan.test.js.map +1 -0
  10. package/dist/app/__tests__/eventPump.test.d.ts +2 -0
  11. package/dist/app/__tests__/eventPump.test.d.ts.map +1 -0
  12. package/dist/app/__tests__/eventPump.test.js +48 -0
  13. package/dist/app/__tests__/eventPump.test.js.map +1 -0
  14. package/dist/app/__tests__/fatal.test.d.ts +2 -0
  15. package/dist/app/__tests__/fatal.test.d.ts.map +1 -0
  16. package/dist/app/__tests__/fatal.test.js +27 -0
  17. package/dist/app/__tests__/fatal.test.js.map +1 -0
  18. package/dist/app/__tests__/frameCoalescing.test.d.ts +2 -0
  19. package/dist/app/__tests__/frameCoalescing.test.d.ts.map +1 -0
  20. package/dist/app/__tests__/frameCoalescing.test.js +33 -0
  21. package/dist/app/__tests__/frameCoalescing.test.js.map +1 -0
  22. package/dist/app/__tests__/helpers.d.ts +39 -0
  23. package/dist/app/__tests__/helpers.d.ts.map +1 -0
  24. package/dist/app/__tests__/helpers.js +99 -0
  25. package/dist/app/__tests__/helpers.js.map +1 -0
  26. package/dist/app/__tests__/interactivePriority.test.d.ts +2 -0
  27. package/dist/app/__tests__/interactivePriority.test.d.ts.map +1 -0
  28. package/dist/app/__tests__/interactivePriority.test.js +61 -0
  29. package/dist/app/__tests__/interactivePriority.test.js.map +1 -0
  30. package/dist/app/__tests__/modes.test.d.ts +2 -0
  31. package/dist/app/__tests__/modes.test.d.ts.map +1 -0
  32. package/dist/app/__tests__/modes.test.js +48 -0
  33. package/dist/app/__tests__/modes.test.js.map +1 -0
  34. package/dist/app/__tests__/onEventHandlers.test.d.ts +2 -0
  35. package/dist/app/__tests__/onEventHandlers.test.d.ts.map +1 -0
  36. package/dist/app/__tests__/onEventHandlers.test.js +41 -0
  37. package/dist/app/__tests__/onEventHandlers.test.js.map +1 -0
  38. package/dist/app/__tests__/rawRender.test.d.ts +2 -0
  39. package/dist/app/__tests__/rawRender.test.d.ts.map +1 -0
  40. package/dist/app/__tests__/rawRender.test.js +102 -0
  41. package/dist/app/__tests__/rawRender.test.js.map +1 -0
  42. package/dist/app/__tests__/stateMachine.test.d.ts +2 -0
  43. package/dist/app/__tests__/stateMachine.test.d.ts.map +1 -0
  44. package/dist/app/__tests__/stateMachine.test.js +22 -0
  45. package/dist/app/__tests__/stateMachine.test.js.map +1 -0
  46. package/dist/app/__tests__/stop_during_frame_rejection.test.d.ts +2 -0
  47. package/dist/app/__tests__/stop_during_frame_rejection.test.d.ts.map +1 -0
  48. package/dist/app/__tests__/stop_during_frame_rejection.test.js +54 -0
  49. package/dist/app/__tests__/stop_during_frame_rejection.test.js.map +1 -0
  50. package/dist/app/__tests__/stubBackend.d.ts +23 -0
  51. package/dist/app/__tests__/stubBackend.d.ts.map +1 -0
  52. package/dist/app/__tests__/stubBackend.js +76 -0
  53. package/dist/app/__tests__/stubBackend.js.map +1 -0
  54. package/dist/app/__tests__/syncFrameAckFastPath.test.d.ts +2 -0
  55. package/dist/app/__tests__/syncFrameAckFastPath.test.d.ts.map +1 -0
  56. package/dist/app/__tests__/syncFrameAckFastPath.test.js +47 -0
  57. package/dist/app/__tests__/syncFrameAckFastPath.test.js.map +1 -0
  58. package/dist/app/__tests__/turnScheduler.test.d.ts +2 -0
  59. package/dist/app/__tests__/turnScheduler.test.d.ts.map +1 -0
  60. package/dist/app/__tests__/turnScheduler.test.js +20 -0
  61. package/dist/app/__tests__/turnScheduler.test.js.map +1 -0
  62. package/dist/app/__tests__/updates.test.d.ts +2 -0
  63. package/dist/app/__tests__/updates.test.d.ts.map +1 -0
  64. package/dist/app/__tests__/updates.test.js +81 -0
  65. package/dist/app/__tests__/updates.test.js.map +1 -0
  66. package/dist/app/__tests__/widgetRenderer.integration.test.d.ts +2 -0
  67. package/dist/app/__tests__/widgetRenderer.integration.test.d.ts.map +1 -0
  68. package/dist/app/__tests__/widgetRenderer.integration.test.js +305 -0
  69. package/dist/app/__tests__/widgetRenderer.integration.test.js.map +1 -0
  70. package/dist/app/createApp.d.ts +68 -0
  71. package/dist/app/createApp.d.ts.map +1 -0
  72. package/dist/app/createApp.js +908 -0
  73. package/dist/app/createApp.js.map +1 -0
  74. package/dist/app/rawRenderer.d.ts +58 -0
  75. package/dist/app/rawRenderer.d.ts.map +1 -0
  76. package/dist/app/rawRenderer.js +89 -0
  77. package/dist/app/rawRenderer.js.map +1 -0
  78. package/dist/app/stateMachine.d.ts +44 -0
  79. package/dist/app/stateMachine.d.ts.map +1 -0
  80. package/dist/app/stateMachine.js +76 -0
  81. package/dist/app/stateMachine.js.map +1 -0
  82. package/dist/app/turnScheduler.d.ts +43 -0
  83. package/dist/app/turnScheduler.d.ts.map +1 -0
  84. package/dist/app/turnScheduler.js +72 -0
  85. package/dist/app/turnScheduler.js.map +1 -0
  86. package/dist/app/updateQueue.d.ts +32 -0
  87. package/dist/app/updateQueue.d.ts.map +1 -0
  88. package/dist/app/updateQueue.js +37 -0
  89. package/dist/app/updateQueue.js.map +1 -0
  90. package/dist/app/widgetRenderer/codeEditorRouting.d.ts +8 -0
  91. package/dist/app/widgetRenderer/codeEditorRouting.d.ts.map +1 -0
  92. package/dist/app/widgetRenderer/codeEditorRouting.js +184 -0
  93. package/dist/app/widgetRenderer/codeEditorRouting.js.map +1 -0
  94. package/dist/app/widgetRenderer/commandPaletteRouting.d.ts +5 -0
  95. package/dist/app/widgetRenderer/commandPaletteRouting.d.ts.map +1 -0
  96. package/dist/app/widgetRenderer/commandPaletteRouting.js +143 -0
  97. package/dist/app/widgetRenderer/commandPaletteRouting.js.map +1 -0
  98. package/dist/app/widgetRenderer/fileNodeCache.d.ts +9 -0
  99. package/dist/app/widgetRenderer/fileNodeCache.d.ts.map +1 -0
  100. package/dist/app/widgetRenderer/fileNodeCache.js +34 -0
  101. package/dist/app/widgetRenderer/fileNodeCache.js.map +1 -0
  102. package/dist/app/widgetRenderer/filePickerRouting.d.ts +6 -0
  103. package/dist/app/widgetRenderer/filePickerRouting.d.ts.map +1 -0
  104. package/dist/app/widgetRenderer/filePickerRouting.js +145 -0
  105. package/dist/app/widgetRenderer/filePickerRouting.js.map +1 -0
  106. package/dist/app/widgetRenderer/renderCaches.d.ts +55 -0
  107. package/dist/app/widgetRenderer/renderCaches.d.ts.map +1 -0
  108. package/dist/app/widgetRenderer/renderCaches.js +202 -0
  109. package/dist/app/widgetRenderer/renderCaches.js.map +1 -0
  110. package/dist/app/widgetRenderer/submitFramePipeline.d.ts +18 -0
  111. package/dist/app/widgetRenderer/submitFramePipeline.d.ts.map +1 -0
  112. package/dist/app/widgetRenderer/submitFramePipeline.js +253 -0
  113. package/dist/app/widgetRenderer/submitFramePipeline.js.map +1 -0
  114. package/dist/app/widgetRenderer/toolApprovalRouting.d.ts +5 -0
  115. package/dist/app/widgetRenderer/toolApprovalRouting.d.ts.map +1 -0
  116. package/dist/app/widgetRenderer/toolApprovalRouting.js +56 -0
  117. package/dist/app/widgetRenderer/toolApprovalRouting.js.map +1 -0
  118. package/dist/app/widgetRenderer.d.ts +238 -0
  119. package/dist/app/widgetRenderer.d.ts.map +1 -0
  120. package/dist/app/widgetRenderer.js +1891 -0
  121. package/dist/app/widgetRenderer.js.map +1 -0
  122. package/dist/backend.d.ts +95 -0
  123. package/dist/backend.d.ts.map +1 -0
  124. package/dist/backend.js +10 -0
  125. package/dist/backend.js.map +1 -0
  126. package/dist/binary/__tests__/reader.test.d.ts +2 -0
  127. package/dist/binary/__tests__/reader.test.d.ts.map +1 -0
  128. package/dist/binary/__tests__/reader.test.js +35 -0
  129. package/dist/binary/__tests__/reader.test.js.map +1 -0
  130. package/dist/binary/__tests__/writer.test.d.ts +2 -0
  131. package/dist/binary/__tests__/writer.test.d.ts.map +1 -0
  132. package/dist/binary/__tests__/writer.test.js +36 -0
  133. package/dist/binary/__tests__/writer.test.js.map +1 -0
  134. package/dist/binary/parseError.d.ts +37 -0
  135. package/dist/binary/parseError.d.ts.map +1 -0
  136. package/dist/binary/parseError.js +33 -0
  137. package/dist/binary/parseError.js.map +1 -0
  138. package/dist/binary/reader.d.ts +52 -0
  139. package/dist/binary/reader.d.ts.map +1 -0
  140. package/dist/binary/reader.js +107 -0
  141. package/dist/binary/reader.js.map +1 -0
  142. package/dist/binary/writer.d.ts +59 -0
  143. package/dist/binary/writer.d.ts.map +1 -0
  144. package/dist/binary/writer.js +114 -0
  145. package/dist/binary/writer.js.map +1 -0
  146. package/dist/cursor/cursorState.d.ts +89 -0
  147. package/dist/cursor/cursorState.d.ts.map +1 -0
  148. package/dist/cursor/cursorState.js +82 -0
  149. package/dist/cursor/cursorState.js.map +1 -0
  150. package/dist/cursor/index.d.ts +9 -0
  151. package/dist/cursor/index.d.ts.map +1 -0
  152. package/dist/cursor/index.js +9 -0
  153. package/dist/cursor/index.js.map +1 -0
  154. package/dist/debug/__tests__/eventTrace.test.d.ts +7 -0
  155. package/dist/debug/__tests__/eventTrace.test.d.ts.map +1 -0
  156. package/dist/debug/__tests__/eventTrace.test.js +59 -0
  157. package/dist/debug/__tests__/eventTrace.test.js.map +1 -0
  158. package/dist/debug/__tests__/frameInspector.test.d.ts +8 -0
  159. package/dist/debug/__tests__/frameInspector.test.d.ts.map +1 -0
  160. package/dist/debug/__tests__/frameInspector.test.js +121 -0
  161. package/dist/debug/__tests__/frameInspector.test.js.map +1 -0
  162. package/dist/debug/__tests__/parsers.test.d.ts +8 -0
  163. package/dist/debug/__tests__/parsers.test.d.ts.map +1 -0
  164. package/dist/debug/__tests__/parsers.test.js +265 -0
  165. package/dist/debug/__tests__/parsers.test.js.map +1 -0
  166. package/dist/debug/__tests__/stateTimeline.test.d.ts +7 -0
  167. package/dist/debug/__tests__/stateTimeline.test.d.ts.map +1 -0
  168. package/dist/debug/__tests__/stateTimeline.test.js +55 -0
  169. package/dist/debug/__tests__/stateTimeline.test.js.map +1 -0
  170. package/dist/debug/__tests__/uiDebug.test.d.ts +2 -0
  171. package/dist/debug/__tests__/uiDebug.test.d.ts.map +1 -0
  172. package/dist/debug/__tests__/uiDebug.test.js +18 -0
  173. package/dist/debug/__tests__/uiDebug.test.js.map +1 -0
  174. package/dist/debug/constants.d.ts +84 -0
  175. package/dist/debug/constants.d.ts.map +1 -0
  176. package/dist/debug/constants.js +165 -0
  177. package/dist/debug/constants.js.map +1 -0
  178. package/dist/debug/debug.d.ts +14 -0
  179. package/dist/debug/debug.d.ts.map +1 -0
  180. package/dist/debug/debug.js +54 -0
  181. package/dist/debug/debug.js.map +1 -0
  182. package/dist/debug/debugController.d.ts +151 -0
  183. package/dist/debug/debugController.d.ts.map +1 -0
  184. package/dist/debug/debugController.js +232 -0
  185. package/dist/debug/debugController.js.map +1 -0
  186. package/dist/debug/errorAggregator.d.ts +89 -0
  187. package/dist/debug/errorAggregator.d.ts.map +1 -0
  188. package/dist/debug/errorAggregator.js +150 -0
  189. package/dist/debug/errorAggregator.js.map +1 -0
  190. package/dist/debug/eventTrace.d.ts +90 -0
  191. package/dist/debug/eventTrace.d.ts.map +1 -0
  192. package/dist/debug/eventTrace.js +153 -0
  193. package/dist/debug/eventTrace.js.map +1 -0
  194. package/dist/debug/frameInspector.d.ts +88 -0
  195. package/dist/debug/frameInspector.d.ts.map +1 -0
  196. package/dist/debug/frameInspector.js +140 -0
  197. package/dist/debug/frameInspector.js.map +1 -0
  198. package/dist/debug/index.d.ts +25 -0
  199. package/dist/debug/index.d.ts.map +1 -0
  200. package/dist/debug/index.js +58 -0
  201. package/dist/debug/index.js.map +1 -0
  202. package/dist/debug/parsers.d.ts +138 -0
  203. package/dist/debug/parsers.d.ts.map +1 -0
  204. package/dist/debug/parsers.js +397 -0
  205. package/dist/debug/parsers.js.map +1 -0
  206. package/dist/debug/stateTimeline.d.ts +73 -0
  207. package/dist/debug/stateTimeline.d.ts.map +1 -0
  208. package/dist/debug/stateTimeline.js +109 -0
  209. package/dist/debug/stateTimeline.js.map +1 -0
  210. package/dist/debug/types.d.ts +261 -0
  211. package/dist/debug/types.d.ts.map +1 -0
  212. package/dist/debug/types.js +13 -0
  213. package/dist/debug/types.js.map +1 -0
  214. package/dist/drawApi.d.ts +74 -0
  215. package/dist/drawApi.d.ts.map +1 -0
  216. package/dist/drawApi.js +6 -0
  217. package/dist/drawApi.js.map +1 -0
  218. package/dist/drawlist/__tests__/builder_v1_golden.test.d.ts +2 -0
  219. package/dist/drawlist/__tests__/builder_v1_golden.test.d.ts.map +1 -0
  220. package/dist/drawlist/__tests__/builder_v1_golden.test.js +132 -0
  221. package/dist/drawlist/__tests__/builder_v1_golden.test.js.map +1 -0
  222. package/dist/drawlist/__tests__/builder_v1_text_run.test.d.ts +2 -0
  223. package/dist/drawlist/__tests__/builder_v1_text_run.test.d.ts.map +1 -0
  224. package/dist/drawlist/__tests__/builder_v1_text_run.test.js +93 -0
  225. package/dist/drawlist/__tests__/builder_v1_text_run.test.js.map +1 -0
  226. package/dist/drawlist/__tests__/builder_v1_validate_caps.test.d.ts +2 -0
  227. package/dist/drawlist/__tests__/builder_v1_validate_caps.test.d.ts.map +1 -0
  228. package/dist/drawlist/__tests__/builder_v1_validate_caps.test.js +116 -0
  229. package/dist/drawlist/__tests__/builder_v1_validate_caps.test.js.map +1 -0
  230. package/dist/drawlist/__tests__/builder_v2_cursor.test.d.ts +12 -0
  231. package/dist/drawlist/__tests__/builder_v2_cursor.test.d.ts.map +1 -0
  232. package/dist/drawlist/__tests__/builder_v2_cursor.test.js +201 -0
  233. package/dist/drawlist/__tests__/builder_v2_cursor.test.js.map +1 -0
  234. package/dist/drawlist/builder_v1.d.ts +69 -0
  235. package/dist/drawlist/builder_v1.d.ts.map +1 -0
  236. package/dist/drawlist/builder_v1.js +984 -0
  237. package/dist/drawlist/builder_v1.js.map +1 -0
  238. package/dist/drawlist/builder_v2.d.ts +57 -0
  239. package/dist/drawlist/builder_v2.d.ts.map +1 -0
  240. package/dist/drawlist/builder_v2.js +953 -0
  241. package/dist/drawlist/builder_v2.js.map +1 -0
  242. package/dist/drawlist/index.d.ts +13 -0
  243. package/dist/drawlist/index.d.ts.map +1 -0
  244. package/dist/drawlist/index.js +12 -0
  245. package/dist/drawlist/index.js.map +1 -0
  246. package/dist/drawlist/types.d.ts +138 -0
  247. package/dist/drawlist/types.d.ts.map +1 -0
  248. package/dist/drawlist/types.js +14 -0
  249. package/dist/drawlist/types.js.map +1 -0
  250. package/dist/events.d.ts +70 -0
  251. package/dist/events.d.ts.map +1 -0
  252. package/dist/events.js +7 -0
  253. package/dist/events.js.map +1 -0
  254. package/dist/focus/styles.d.ts +213 -0
  255. package/dist/focus/styles.d.ts.map +1 -0
  256. package/dist/focus/styles.js +267 -0
  257. package/dist/focus/styles.js.map +1 -0
  258. package/dist/forms/__tests__/useForm.test.d.ts +7 -0
  259. package/dist/forms/__tests__/useForm.test.d.ts.map +1 -0
  260. package/dist/forms/__tests__/useForm.test.js +371 -0
  261. package/dist/forms/__tests__/useForm.test.js.map +1 -0
  262. package/dist/forms/bind.d.ts +15 -0
  263. package/dist/forms/bind.d.ts.map +1 -0
  264. package/dist/forms/bind.js +40 -0
  265. package/dist/forms/bind.js.map +1 -0
  266. package/dist/forms/index.d.ts +10 -0
  267. package/dist/forms/index.d.ts.map +1 -0
  268. package/dist/forms/index.js +9 -0
  269. package/dist/forms/index.js.map +1 -0
  270. package/dist/forms/types.d.ts +101 -0
  271. package/dist/forms/types.d.ts.map +1 -0
  272. package/dist/forms/types.js +10 -0
  273. package/dist/forms/types.js.map +1 -0
  274. package/dist/forms/useForm.d.ts +54 -0
  275. package/dist/forms/useForm.d.ts.map +1 -0
  276. package/dist/forms/useForm.js +316 -0
  277. package/dist/forms/useForm.js.map +1 -0
  278. package/dist/forms/validation.d.ts +67 -0
  279. package/dist/forms/validation.d.ts.map +1 -0
  280. package/dist/forms/validation.js +135 -0
  281. package/dist/forms/validation.js.map +1 -0
  282. package/dist/icons/index.d.ts +5 -0
  283. package/dist/icons/index.d.ts.map +1 -0
  284. package/dist/icons/index.js +9 -0
  285. package/dist/icons/index.js.map +1 -0
  286. package/dist/icons/registry.d.ts +1452 -0
  287. package/dist/icons/registry.d.ts.map +1 -0
  288. package/dist/icons/registry.js +192 -0
  289. package/dist/icons/registry.js.map +1 -0
  290. package/dist/index.d.ts +197 -0
  291. package/dist/index.d.ts.map +1 -0
  292. package/dist/index.js +221 -0
  293. package/dist/index.js.map +1 -0
  294. package/dist/keybindings/__tests__/chordMatcher.test.d.ts +2 -0
  295. package/dist/keybindings/__tests__/chordMatcher.test.d.ts.map +1 -0
  296. package/dist/keybindings/__tests__/chordMatcher.test.js +238 -0
  297. package/dist/keybindings/__tests__/chordMatcher.test.js.map +1 -0
  298. package/dist/keybindings/__tests__/manager.test.d.ts +2 -0
  299. package/dist/keybindings/__tests__/manager.test.d.ts.map +1 -0
  300. package/dist/keybindings/__tests__/manager.test.js +377 -0
  301. package/dist/keybindings/__tests__/manager.test.js.map +1 -0
  302. package/dist/keybindings/__tests__/parser.test.d.ts +2 -0
  303. package/dist/keybindings/__tests__/parser.test.d.ts.map +1 -0
  304. package/dist/keybindings/__tests__/parser.test.js +386 -0
  305. package/dist/keybindings/__tests__/parser.test.js.map +1 -0
  306. package/dist/keybindings/chordMatcher.d.ts +75 -0
  307. package/dist/keybindings/chordMatcher.d.ts.map +1 -0
  308. package/dist/keybindings/chordMatcher.js +224 -0
  309. package/dist/keybindings/chordMatcher.js.map +1 -0
  310. package/dist/keybindings/index.d.ts +16 -0
  311. package/dist/keybindings/index.d.ts.map +1 -0
  312. package/dist/keybindings/index.js +31 -0
  313. package/dist/keybindings/index.js.map +1 -0
  314. package/dist/keybindings/keyCodes.d.ts +84 -0
  315. package/dist/keybindings/keyCodes.d.ts.map +1 -0
  316. package/dist/keybindings/keyCodes.js +182 -0
  317. package/dist/keybindings/keyCodes.js.map +1 -0
  318. package/dist/keybindings/manager.d.ts +168 -0
  319. package/dist/keybindings/manager.d.ts.map +1 -0
  320. package/dist/keybindings/manager.js +290 -0
  321. package/dist/keybindings/manager.js.map +1 -0
  322. package/dist/keybindings/parser.d.ts +71 -0
  323. package/dist/keybindings/parser.d.ts.map +1 -0
  324. package/dist/keybindings/parser.js +252 -0
  325. package/dist/keybindings/parser.js.map +1 -0
  326. package/dist/keybindings/types.d.ts +131 -0
  327. package/dist/keybindings/types.d.ts.map +1 -0
  328. package/dist/keybindings/types.js +11 -0
  329. package/dist/keybindings/types.js.map +1 -0
  330. package/dist/layout/__tests__/constraints.golden.test.d.ts +2 -0
  331. package/dist/layout/__tests__/constraints.golden.test.d.ts.map +1 -0
  332. package/dist/layout/__tests__/constraints.golden.test.js +86 -0
  333. package/dist/layout/__tests__/constraints.golden.test.js.map +1 -0
  334. package/dist/layout/__tests__/hitTest.golden.test.d.ts +2 -0
  335. package/dist/layout/__tests__/hitTest.golden.test.d.ts.map +1 -0
  336. package/dist/layout/__tests__/hitTest.golden.test.js +74 -0
  337. package/dist/layout/__tests__/hitTest.golden.test.js.map +1 -0
  338. package/dist/layout/__tests__/layout.edgecases.test.d.ts +2 -0
  339. package/dist/layout/__tests__/layout.edgecases.test.d.ts.map +1 -0
  340. package/dist/layout/__tests__/layout.edgecases.test.js +152 -0
  341. package/dist/layout/__tests__/layout.edgecases.test.js.map +1 -0
  342. package/dist/layout/__tests__/layout.golden.test.d.ts +2 -0
  343. package/dist/layout/__tests__/layout.golden.test.d.ts.map +1 -0
  344. package/dist/layout/__tests__/layout.golden.test.js +69 -0
  345. package/dist/layout/__tests__/layout.golden.test.js.map +1 -0
  346. package/dist/layout/__tests__/layout.perf.test.d.ts +8 -0
  347. package/dist/layout/__tests__/layout.perf.test.d.ts.map +1 -0
  348. package/dist/layout/__tests__/layout.perf.test.js +179 -0
  349. package/dist/layout/__tests__/layout.perf.test.js.map +1 -0
  350. package/dist/layout/__tests__/measure.validation.test.d.ts +2 -0
  351. package/dist/layout/__tests__/measure.validation.test.d.ts.map +1 -0
  352. package/dist/layout/__tests__/measure.validation.test.js +16 -0
  353. package/dist/layout/__tests__/measure.validation.test.js.map +1 -0
  354. package/dist/layout/__tests__/spacing.test.d.ts +2 -0
  355. package/dist/layout/__tests__/spacing.test.d.ts.map +1 -0
  356. package/dist/layout/__tests__/spacing.test.js +9 -0
  357. package/dist/layout/__tests__/spacing.test.js.map +1 -0
  358. package/dist/layout/__tests__/sweep.robustness.test.d.ts +11 -0
  359. package/dist/layout/__tests__/sweep.robustness.test.d.ts.map +1 -0
  360. package/dist/layout/__tests__/sweep.robustness.test.js +491 -0
  361. package/dist/layout/__tests__/sweep.robustness.test.js.map +1 -0
  362. package/dist/layout/__tests__/textMeasure.golden.test.d.ts +2 -0
  363. package/dist/layout/__tests__/textMeasure.golden.test.d.ts.map +1 -0
  364. package/dist/layout/__tests__/textMeasure.golden.test.js +32 -0
  365. package/dist/layout/__tests__/textMeasure.golden.test.js.map +1 -0
  366. package/dist/layout/constraints.d.ts +27 -0
  367. package/dist/layout/constraints.d.ts.map +1 -0
  368. package/dist/layout/constraints.js +57 -0
  369. package/dist/layout/constraints.js.map +1 -0
  370. package/dist/layout/engine/bounds.d.ts +7 -0
  371. package/dist/layout/engine/bounds.d.ts.map +1 -0
  372. package/dist/layout/engine/bounds.js +25 -0
  373. package/dist/layout/engine/bounds.js.map +1 -0
  374. package/dist/layout/engine/flex.d.ts +11 -0
  375. package/dist/layout/engine/flex.d.ts.map +1 -0
  376. package/dist/layout/engine/flex.js +162 -0
  377. package/dist/layout/engine/flex.js.map +1 -0
  378. package/dist/layout/engine/guards.d.ts +14 -0
  379. package/dist/layout/engine/guards.d.ts.map +1 -0
  380. package/dist/layout/engine/guards.js +36 -0
  381. package/dist/layout/engine/guards.js.map +1 -0
  382. package/dist/layout/engine/layoutEngine.d.ts +41 -0
  383. package/dist/layout/engine/layoutEngine.d.ts.map +1 -0
  384. package/dist/layout/engine/layoutEngine.js +344 -0
  385. package/dist/layout/engine/layoutEngine.js.map +1 -0
  386. package/dist/layout/engine/layoutTree.d.ts +6 -0
  387. package/dist/layout/engine/layoutTree.d.ts.map +1 -0
  388. package/dist/layout/engine/layoutTree.js +16 -0
  389. package/dist/layout/engine/layoutTree.js.map +1 -0
  390. package/dist/layout/engine/pool.d.ts +10 -0
  391. package/dist/layout/engine/pool.d.ts.map +1 -0
  392. package/dist/layout/engine/pool.js +33 -0
  393. package/dist/layout/engine/pool.js.map +1 -0
  394. package/dist/layout/engine/result.d.ts +3 -0
  395. package/dist/layout/engine/result.d.ts.map +1 -0
  396. package/dist/layout/engine/result.js +4 -0
  397. package/dist/layout/engine/result.js.map +1 -0
  398. package/dist/layout/engine/types.d.ts +12 -0
  399. package/dist/layout/engine/types.d.ts.map +1 -0
  400. package/dist/layout/engine/types.js +2 -0
  401. package/dist/layout/engine/types.js.map +1 -0
  402. package/dist/layout/hitTest.d.ts +25 -0
  403. package/dist/layout/hitTest.d.ts.map +1 -0
  404. package/dist/layout/hitTest.js +111 -0
  405. package/dist/layout/hitTest.js.map +1 -0
  406. package/dist/layout/kinds/box.d.ts +10 -0
  407. package/dist/layout/kinds/box.d.ts.map +1 -0
  408. package/dist/layout/kinds/box.js +140 -0
  409. package/dist/layout/kinds/box.js.map +1 -0
  410. package/dist/layout/kinds/collections.d.ts +7 -0
  411. package/dist/layout/kinds/collections.d.ts.map +1 -0
  412. package/dist/layout/kinds/collections.js +87 -0
  413. package/dist/layout/kinds/collections.js.map +1 -0
  414. package/dist/layout/kinds/leaf.d.ts +7 -0
  415. package/dist/layout/kinds/leaf.d.ts.map +1 -0
  416. package/dist/layout/kinds/leaf.js +390 -0
  417. package/dist/layout/kinds/leaf.js.map +1 -0
  418. package/dist/layout/kinds/overlays.d.ts +10 -0
  419. package/dist/layout/kinds/overlays.d.ts.map +1 -0
  420. package/dist/layout/kinds/overlays.js +302 -0
  421. package/dist/layout/kinds/overlays.js.map +1 -0
  422. package/dist/layout/kinds/splitPane.d.ts +9 -0
  423. package/dist/layout/kinds/splitPane.d.ts.map +1 -0
  424. package/dist/layout/kinds/splitPane.js +118 -0
  425. package/dist/layout/kinds/splitPane.js.map +1 -0
  426. package/dist/layout/kinds/stack.d.ts +10 -0
  427. package/dist/layout/kinds/stack.d.ts.map +1 -0
  428. package/dist/layout/kinds/stack.js +803 -0
  429. package/dist/layout/kinds/stack.js.map +1 -0
  430. package/dist/layout/layout.d.ts +11 -0
  431. package/dist/layout/layout.d.ts.map +1 -0
  432. package/dist/layout/layout.js +10 -0
  433. package/dist/layout/layout.js.map +1 -0
  434. package/dist/layout/positioning.d.ts +124 -0
  435. package/dist/layout/positioning.d.ts.map +1 -0
  436. package/dist/layout/positioning.js +234 -0
  437. package/dist/layout/positioning.js.map +1 -0
  438. package/dist/layout/spacing-scale.d.ts +59 -0
  439. package/dist/layout/spacing-scale.d.ts.map +1 -0
  440. package/dist/layout/spacing-scale.js +79 -0
  441. package/dist/layout/spacing-scale.js.map +1 -0
  442. package/dist/layout/spacing.d.ts +46 -0
  443. package/dist/layout/spacing.d.ts.map +1 -0
  444. package/dist/layout/spacing.js +57 -0
  445. package/dist/layout/spacing.js.map +1 -0
  446. package/dist/layout/textMeasure.d.ts +72 -0
  447. package/dist/layout/textMeasure.d.ts.map +1 -0
  448. package/dist/layout/textMeasure.js +363 -0
  449. package/dist/layout/textMeasure.js.map +1 -0
  450. package/dist/layout/types.d.ts +43 -0
  451. package/dist/layout/types.d.ts.map +1 -0
  452. package/dist/layout/types.js +10 -0
  453. package/dist/layout/types.js.map +1 -0
  454. package/dist/layout/unicode/props.d.ts +23 -0
  455. package/dist/layout/unicode/props.d.ts.map +1 -0
  456. package/dist/layout/unicode/props.js +80 -0
  457. package/dist/layout/unicode/props.js.map +1 -0
  458. package/dist/layout/unicode/tables_15_1_0.d.ts +11 -0
  459. package/dist/layout/unicode/tables_15_1_0.d.ts.map +1 -0
  460. package/dist/layout/unicode/tables_15_1_0.js +416 -0
  461. package/dist/layout/unicode/tables_15_1_0.js.map +1 -0
  462. package/dist/layout/validateProps.d.ts +101 -0
  463. package/dist/layout/validateProps.d.ts.map +1 -0
  464. package/dist/layout/validateProps.js +328 -0
  465. package/dist/layout/validateProps.js.map +1 -0
  466. package/dist/perf/index.d.ts +5 -0
  467. package/dist/perf/index.d.ts.map +1 -0
  468. package/dist/perf/index.js +5 -0
  469. package/dist/perf/index.js.map +1 -0
  470. package/dist/perf/perf.d.ts +71 -0
  471. package/dist/perf/perf.d.ts.map +1 -0
  472. package/dist/perf/perf.js +239 -0
  473. package/dist/perf/perf.js.map +1 -0
  474. package/dist/protocol/__tests__/zrev_v1_fuzz_lite.test.d.ts +2 -0
  475. package/dist/protocol/__tests__/zrev_v1_fuzz_lite.test.d.ts.map +1 -0
  476. package/dist/protocol/__tests__/zrev_v1_fuzz_lite.test.js +35 -0
  477. package/dist/protocol/__tests__/zrev_v1_fuzz_lite.test.js.map +1 -0
  478. package/dist/protocol/__tests__/zrev_v1_invalid.test.d.ts +2 -0
  479. package/dist/protocol/__tests__/zrev_v1_invalid.test.d.ts.map +1 -0
  480. package/dist/protocol/__tests__/zrev_v1_invalid.test.js +128 -0
  481. package/dist/protocol/__tests__/zrev_v1_invalid.test.js.map +1 -0
  482. package/dist/protocol/__tests__/zrev_v1_valid.test.d.ts +2 -0
  483. package/dist/protocol/__tests__/zrev_v1_valid.test.d.ts.map +1 -0
  484. package/dist/protocol/__tests__/zrev_v1_valid.test.js +126 -0
  485. package/dist/protocol/__tests__/zrev_v1_valid.test.js.map +1 -0
  486. package/dist/protocol/types.d.ts +119 -0
  487. package/dist/protocol/types.d.ts.map +1 -0
  488. package/dist/protocol/types.js +14 -0
  489. package/dist/protocol/types.js.map +1 -0
  490. package/dist/protocol/zrev_v1.d.ts +52 -0
  491. package/dist/protocol/zrev_v1.d.ts.map +1 -0
  492. package/dist/protocol/zrev_v1.js +288 -0
  493. package/dist/protocol/zrev_v1.js.map +1 -0
  494. package/dist/renderer/__tests__/overlay.edge.test.d.ts +2 -0
  495. package/dist/renderer/__tests__/overlay.edge.test.d.ts.map +1 -0
  496. package/dist/renderer/__tests__/overlay.edge.test.js +101 -0
  497. package/dist/renderer/__tests__/overlay.edge.test.js.map +1 -0
  498. package/dist/renderer/__tests__/render.golden.test.d.ts +2 -0
  499. package/dist/renderer/__tests__/render.golden.test.d.ts.map +1 -0
  500. package/dist/renderer/__tests__/render.golden.test.js +220 -0
  501. package/dist/renderer/__tests__/render.golden.test.js.map +1 -0
  502. package/dist/renderer/boxGlyphs.d.ts +87 -0
  503. package/dist/renderer/boxGlyphs.d.ts.map +1 -0
  504. package/dist/renderer/boxGlyphs.js +143 -0
  505. package/dist/renderer/boxGlyphs.js.map +1 -0
  506. package/dist/renderer/renderToDrawlist/boxBorder.d.ts +42 -0
  507. package/dist/renderer/renderToDrawlist/boxBorder.d.ts.map +1 -0
  508. package/dist/renderer/renderToDrawlist/boxBorder.js +138 -0
  509. package/dist/renderer/renderToDrawlist/boxBorder.js.map +1 -0
  510. package/dist/renderer/renderToDrawlist/indices.d.ts +11 -0
  511. package/dist/renderer/renderToDrawlist/indices.d.ts.map +1 -0
  512. package/dist/renderer/renderToDrawlist/indices.js +50 -0
  513. package/dist/renderer/renderToDrawlist/indices.js.map +1 -0
  514. package/dist/renderer/renderToDrawlist/renderTree.d.ts +21 -0
  515. package/dist/renderer/renderToDrawlist/renderTree.d.ts.map +1 -0
  516. package/dist/renderer/renderToDrawlist/renderTree.js +117 -0
  517. package/dist/renderer/renderToDrawlist/renderTree.js.map +1 -0
  518. package/dist/renderer/renderToDrawlist/simpleVNode.d.ts +9 -0
  519. package/dist/renderer/renderToDrawlist/simpleVNode.d.ts.map +1 -0
  520. package/dist/renderer/renderToDrawlist/simpleVNode.js +634 -0
  521. package/dist/renderer/renderToDrawlist/simpleVNode.js.map +1 -0
  522. package/dist/renderer/renderToDrawlist/spacing.d.ts +34 -0
  523. package/dist/renderer/renderToDrawlist/spacing.d.ts.map +1 -0
  524. package/dist/renderer/renderToDrawlist/spacing.js +53 -0
  525. package/dist/renderer/renderToDrawlist/spacing.js.map +1 -0
  526. package/dist/renderer/renderToDrawlist/textStyle.d.ts +9 -0
  527. package/dist/renderer/renderToDrawlist/textStyle.d.ts.map +1 -0
  528. package/dist/renderer/renderToDrawlist/textStyle.js +58 -0
  529. package/dist/renderer/renderToDrawlist/textStyle.js.map +1 -0
  530. package/dist/renderer/renderToDrawlist/types.d.ts +96 -0
  531. package/dist/renderer/renderToDrawlist/types.d.ts.map +1 -0
  532. package/dist/renderer/renderToDrawlist/types.js +2 -0
  533. package/dist/renderer/renderToDrawlist/types.js.map +1 -0
  534. package/dist/renderer/renderToDrawlist/widgets/basic.d.ts +17 -0
  535. package/dist/renderer/renderToDrawlist/widgets/basic.d.ts.map +1 -0
  536. package/dist/renderer/renderToDrawlist/widgets/basic.js +1149 -0
  537. package/dist/renderer/renderToDrawlist/widgets/basic.js.map +1 -0
  538. package/dist/renderer/renderToDrawlist/widgets/collections.d.ts +10 -0
  539. package/dist/renderer/renderToDrawlist/widgets/collections.d.ts.map +1 -0
  540. package/dist/renderer/renderToDrawlist/widgets/collections.js +304 -0
  541. package/dist/renderer/renderToDrawlist/widgets/collections.js.map +1 -0
  542. package/dist/renderer/renderToDrawlist/widgets/containers.d.ts +10 -0
  543. package/dist/renderer/renderToDrawlist/widgets/containers.d.ts.map +1 -0
  544. package/dist/renderer/renderToDrawlist/widgets/containers.js +242 -0
  545. package/dist/renderer/renderToDrawlist/widgets/containers.js.map +1 -0
  546. package/dist/renderer/renderToDrawlist/widgets/editors.d.ts +17 -0
  547. package/dist/renderer/renderToDrawlist/widgets/editors.d.ts.map +1 -0
  548. package/dist/renderer/renderToDrawlist/widgets/editors.js +497 -0
  549. package/dist/renderer/renderToDrawlist/widgets/editors.js.map +1 -0
  550. package/dist/renderer/renderToDrawlist/widgets/files.d.ts +13 -0
  551. package/dist/renderer/renderToDrawlist/widgets/files.d.ts.map +1 -0
  552. package/dist/renderer/renderToDrawlist/widgets/files.js +288 -0
  553. package/dist/renderer/renderToDrawlist/widgets/files.js.map +1 -0
  554. package/dist/renderer/renderToDrawlist/widgets/overlays.d.ts +21 -0
  555. package/dist/renderer/renderToDrawlist/widgets/overlays.d.ts.map +1 -0
  556. package/dist/renderer/renderToDrawlist/widgets/overlays.js +358 -0
  557. package/dist/renderer/renderToDrawlist/widgets/overlays.js.map +1 -0
  558. package/dist/renderer/renderToDrawlist.d.ts +21 -0
  559. package/dist/renderer/renderToDrawlist.d.ts.map +1 -0
  560. package/dist/renderer/renderToDrawlist.js +53 -0
  561. package/dist/renderer/renderToDrawlist.js.map +1 -0
  562. package/dist/renderer/scrollbar.d.ts +129 -0
  563. package/dist/renderer/scrollbar.d.ts.map +1 -0
  564. package/dist/renderer/scrollbar.js +219 -0
  565. package/dist/renderer/scrollbar.js.map +1 -0
  566. package/dist/renderer/shadow.d.ts +74 -0
  567. package/dist/renderer/shadow.d.ts.map +1 -0
  568. package/dist/renderer/shadow.js +118 -0
  569. package/dist/renderer/shadow.js.map +1 -0
  570. package/dist/renderer/styles.d.ts +28 -0
  571. package/dist/renderer/styles.d.ts.map +1 -0
  572. package/dist/renderer/styles.js +42 -0
  573. package/dist/renderer/styles.js.map +1 -0
  574. package/dist/runtime/__tests__/duplicateIdFatal.test.d.ts +2 -0
  575. package/dist/runtime/__tests__/duplicateIdFatal.test.d.ts.map +1 -0
  576. package/dist/runtime/__tests__/duplicateIdFatal.test.js +45 -0
  577. package/dist/runtime/__tests__/duplicateIdFatal.test.js.map +1 -0
  578. package/dist/runtime/__tests__/duplicateKeyFatal.test.d.ts +2 -0
  579. package/dist/runtime/__tests__/duplicateKeyFatal.test.d.ts.map +1 -0
  580. package/dist/runtime/__tests__/duplicateKeyFatal.test.js +20 -0
  581. package/dist/runtime/__tests__/duplicateKeyFatal.test.js.map +1 -0
  582. package/dist/runtime/__tests__/focusList.golden.test.d.ts +2 -0
  583. package/dist/runtime/__tests__/focusList.golden.test.d.ts.map +1 -0
  584. package/dist/runtime/__tests__/focusList.golden.test.js +98 -0
  585. package/dist/runtime/__tests__/focusList.golden.test.js.map +1 -0
  586. package/dist/runtime/__tests__/focusZones.golden.test.d.ts +16 -0
  587. package/dist/runtime/__tests__/focusZones.golden.test.d.ts.map +1 -0
  588. package/dist/runtime/__tests__/focusZones.golden.test.js +594 -0
  589. package/dist/runtime/__tests__/focusZones.golden.test.js.map +1 -0
  590. package/dist/runtime/__tests__/inputRouting.golden.test.d.ts +2 -0
  591. package/dist/runtime/__tests__/inputRouting.golden.test.d.ts.map +1 -0
  592. package/dist/runtime/__tests__/inputRouting.golden.test.js +56 -0
  593. package/dist/runtime/__tests__/inputRouting.golden.test.js.map +1 -0
  594. package/dist/runtime/__tests__/keyRouting.golden.test.d.ts +2 -0
  595. package/dist/runtime/__tests__/keyRouting.golden.test.d.ts.map +1 -0
  596. package/dist/runtime/__tests__/keyRouting.golden.test.js +43 -0
  597. package/dist/runtime/__tests__/keyRouting.golden.test.js.map +1 -0
  598. package/dist/runtime/__tests__/localStateStore.test.d.ts +2 -0
  599. package/dist/runtime/__tests__/localStateStore.test.d.ts.map +1 -0
  600. package/dist/runtime/__tests__/localStateStore.test.js +25 -0
  601. package/dist/runtime/__tests__/localStateStore.test.js.map +1 -0
  602. package/dist/runtime/__tests__/mouseRouting.golden.test.d.ts +2 -0
  603. package/dist/runtime/__tests__/mouseRouting.golden.test.d.ts.map +1 -0
  604. package/dist/runtime/__tests__/mouseRouting.golden.test.js +47 -0
  605. package/dist/runtime/__tests__/mouseRouting.golden.test.js.map +1 -0
  606. package/dist/runtime/__tests__/reconcile.test.d.ts +2 -0
  607. package/dist/runtime/__tests__/reconcile.test.d.ts.map +1 -0
  608. package/dist/runtime/__tests__/reconcile.test.js +46 -0
  609. package/dist/runtime/__tests__/reconcile.test.js.map +1 -0
  610. package/dist/runtime/__tests__/widgetMeta.test.d.ts +2 -0
  611. package/dist/runtime/__tests__/widgetMeta.test.d.ts.map +1 -0
  612. package/dist/runtime/__tests__/widgetMeta.test.js +196 -0
  613. package/dist/runtime/__tests__/widgetMeta.test.js.map +1 -0
  614. package/dist/runtime/commit.d.ts +76 -0
  615. package/dist/runtime/commit.d.ts.map +1 -0
  616. package/dist/runtime/commit.js +366 -0
  617. package/dist/runtime/commit.js.map +1 -0
  618. package/dist/runtime/focus.d.ts +162 -0
  619. package/dist/runtime/focus.d.ts.map +1 -0
  620. package/dist/runtime/focus.js +488 -0
  621. package/dist/runtime/focus.js.map +1 -0
  622. package/dist/runtime/inputEditor.d.ts +49 -0
  623. package/dist/runtime/inputEditor.d.ts.map +1 -0
  624. package/dist/runtime/inputEditor.js +312 -0
  625. package/dist/runtime/inputEditor.js.map +1 -0
  626. package/dist/runtime/instance.d.ts +21 -0
  627. package/dist/runtime/instance.d.ts.map +1 -0
  628. package/dist/runtime/instance.js +27 -0
  629. package/dist/runtime/instance.js.map +1 -0
  630. package/dist/runtime/instances.d.ts +105 -0
  631. package/dist/runtime/instances.d.ts.map +1 -0
  632. package/dist/runtime/instances.js +248 -0
  633. package/dist/runtime/instances.js.map +1 -0
  634. package/dist/runtime/layers.d.ts +144 -0
  635. package/dist/runtime/layers.d.ts.map +1 -0
  636. package/dist/runtime/layers.js +264 -0
  637. package/dist/runtime/layers.js.map +1 -0
  638. package/dist/runtime/localState.d.ts +172 -0
  639. package/dist/runtime/localState.d.ts.map +1 -0
  640. package/dist/runtime/localState.js +182 -0
  641. package/dist/runtime/localState.js.map +1 -0
  642. package/dist/runtime/reconcile.d.ts +64 -0
  643. package/dist/runtime/reconcile.d.ts.map +1 -0
  644. package/dist/runtime/reconcile.js +223 -0
  645. package/dist/runtime/reconcile.js.map +1 -0
  646. package/dist/runtime/router/dropdown.d.ts +16 -0
  647. package/dist/runtime/router/dropdown.d.ts.map +1 -0
  648. package/dist/runtime/router/dropdown.js +108 -0
  649. package/dist/runtime/router/dropdown.js.map +1 -0
  650. package/dist/runtime/router/key.d.ts +10 -0
  651. package/dist/runtime/router/key.d.ts.map +1 -0
  652. package/dist/runtime/router/key.js +39 -0
  653. package/dist/runtime/router/key.js.map +1 -0
  654. package/dist/runtime/router/layer.d.ts +11 -0
  655. package/dist/runtime/router/layer.d.ts.map +1 -0
  656. package/dist/runtime/router/layer.js +45 -0
  657. package/dist/runtime/router/layer.js.map +1 -0
  658. package/dist/runtime/router/mouse.d.ts +9 -0
  659. package/dist/runtime/router/mouse.d.ts.map +1 -0
  660. package/dist/runtime/router/mouse.js +38 -0
  661. package/dist/runtime/router/mouse.js.map +1 -0
  662. package/dist/runtime/router/table.d.ts +15 -0
  663. package/dist/runtime/router/table.d.ts.map +1 -0
  664. package/dist/runtime/router/table.js +182 -0
  665. package/dist/runtime/router/table.js.map +1 -0
  666. package/dist/runtime/router/tree.d.ts +16 -0
  667. package/dist/runtime/router/tree.d.ts.map +1 -0
  668. package/dist/runtime/router/tree.js +211 -0
  669. package/dist/runtime/router/tree.js.map +1 -0
  670. package/dist/runtime/router/types.d.ts +194 -0
  671. package/dist/runtime/router/types.d.ts.map +1 -0
  672. package/dist/runtime/router/types.js +2 -0
  673. package/dist/runtime/router/types.js.map +1 -0
  674. package/dist/runtime/router/virtualList.d.ts +21 -0
  675. package/dist/runtime/router/virtualList.d.ts.map +1 -0
  676. package/dist/runtime/router/virtualList.js +167 -0
  677. package/dist/runtime/router/virtualList.js.map +1 -0
  678. package/dist/runtime/router/zones.d.ts +16 -0
  679. package/dist/runtime/router/zones.d.ts.map +1 -0
  680. package/dist/runtime/router/zones.js +118 -0
  681. package/dist/runtime/router/zones.js.map +1 -0
  682. package/dist/runtime/router.d.ts +18 -0
  683. package/dist/runtime/router.d.ts.map +1 -0
  684. package/dist/runtime/router.js +17 -0
  685. package/dist/runtime/router.js.map +1 -0
  686. package/dist/runtime/widgetMeta.d.ts +157 -0
  687. package/dist/runtime/widgetMeta.d.ts.map +1 -0
  688. package/dist/runtime/widgetMeta.js +618 -0
  689. package/dist/runtime/widgetMeta.js.map +1 -0
  690. package/dist/terminalCaps.d.ts +74 -0
  691. package/dist/terminalCaps.d.ts.map +1 -0
  692. package/dist/terminalCaps.js +61 -0
  693. package/dist/terminalCaps.js.map +1 -0
  694. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  695. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  696. package/dist/theme/__tests__/theme.test.js +28 -0
  697. package/dist/theme/__tests__/theme.test.js.map +1 -0
  698. package/dist/theme/defaultTheme.d.ts +9 -0
  699. package/dist/theme/defaultTheme.d.ts.map +1 -0
  700. package/dist/theme/defaultTheme.js +22 -0
  701. package/dist/theme/defaultTheme.js.map +1 -0
  702. package/dist/theme/index.d.ts +12 -0
  703. package/dist/theme/index.d.ts.map +1 -0
  704. package/dist/theme/index.js +16 -0
  705. package/dist/theme/index.js.map +1 -0
  706. package/dist/theme/interop.d.ts +13 -0
  707. package/dist/theme/interop.d.ts.map +1 -0
  708. package/dist/theme/interop.js +66 -0
  709. package/dist/theme/interop.js.map +1 -0
  710. package/dist/theme/presets.d.ts +81 -0
  711. package/dist/theme/presets.d.ts.map +1 -0
  712. package/dist/theme/presets.js +293 -0
  713. package/dist/theme/presets.js.map +1 -0
  714. package/dist/theme/resolve.d.ts +69 -0
  715. package/dist/theme/resolve.d.ts.map +1 -0
  716. package/dist/theme/resolve.js +159 -0
  717. package/dist/theme/resolve.js.map +1 -0
  718. package/dist/theme/theme.d.ts +33 -0
  719. package/dist/theme/theme.d.ts.map +1 -0
  720. package/dist/theme/theme.js +28 -0
  721. package/dist/theme/theme.js.map +1 -0
  722. package/dist/theme/tokens.d.ts +130 -0
  723. package/dist/theme/tokens.d.ts.map +1 -0
  724. package/dist/theme/tokens.js +50 -0
  725. package/dist/theme/tokens.js.map +1 -0
  726. package/dist/widgets/__tests__/basicWidgets.render.test.d.ts +2 -0
  727. package/dist/widgets/__tests__/basicWidgets.render.test.d.ts.map +1 -0
  728. package/dist/widgets/__tests__/basicWidgets.render.test.js +182 -0
  729. package/dist/widgets/__tests__/basicWidgets.render.test.js.map +1 -0
  730. package/dist/widgets/__tests__/basicWidgets.test.d.ts +2 -0
  731. package/dist/widgets/__tests__/basicWidgets.test.d.ts.map +1 -0
  732. package/dist/widgets/__tests__/basicWidgets.test.js +336 -0
  733. package/dist/widgets/__tests__/basicWidgets.test.js.map +1 -0
  734. package/dist/widgets/__tests__/collections.test.d.ts +2 -0
  735. package/dist/widgets/__tests__/collections.test.d.ts.map +1 -0
  736. package/dist/widgets/__tests__/collections.test.js +91 -0
  737. package/dist/widgets/__tests__/collections.test.js.map +1 -0
  738. package/dist/widgets/__tests__/commandPalette.test.d.ts +2 -0
  739. package/dist/widgets/__tests__/commandPalette.test.d.ts.map +1 -0
  740. package/dist/widgets/__tests__/commandPalette.test.js +13 -0
  741. package/dist/widgets/__tests__/commandPalette.test.js.map +1 -0
  742. package/dist/widgets/__tests__/composition.test.d.ts +14 -0
  743. package/dist/widgets/__tests__/composition.test.d.ts.map +1 -0
  744. package/dist/widgets/__tests__/composition.test.js +458 -0
  745. package/dist/widgets/__tests__/composition.test.js.map +1 -0
  746. package/dist/widgets/__tests__/conditionals.test.d.ts +2 -0
  747. package/dist/widgets/__tests__/conditionals.test.d.ts.map +1 -0
  748. package/dist/widgets/__tests__/conditionals.test.js +49 -0
  749. package/dist/widgets/__tests__/conditionals.test.js.map +1 -0
  750. package/dist/widgets/__tests__/containers.test.d.ts +2 -0
  751. package/dist/widgets/__tests__/containers.test.d.ts.map +1 -0
  752. package/dist/widgets/__tests__/containers.test.js +98 -0
  753. package/dist/widgets/__tests__/containers.test.js.map +1 -0
  754. package/dist/widgets/__tests__/dataVizWidgets.test.d.ts +2 -0
  755. package/dist/widgets/__tests__/dataVizWidgets.test.d.ts.map +1 -0
  756. package/dist/widgets/__tests__/dataVizWidgets.test.js +57 -0
  757. package/dist/widgets/__tests__/dataVizWidgets.test.js.map +1 -0
  758. package/dist/widgets/__tests__/dialogs.test.d.ts +2 -0
  759. package/dist/widgets/__tests__/dialogs.test.d.ts.map +1 -0
  760. package/dist/widgets/__tests__/dialogs.test.js +29 -0
  761. package/dist/widgets/__tests__/dialogs.test.js.map +1 -0
  762. package/dist/widgets/__tests__/editors.test.d.ts +2 -0
  763. package/dist/widgets/__tests__/editors.test.d.ts.map +1 -0
  764. package/dist/widgets/__tests__/editors.test.js +116 -0
  765. package/dist/widgets/__tests__/editors.test.js.map +1 -0
  766. package/dist/widgets/__tests__/filesWidgets.test.d.ts +2 -0
  767. package/dist/widgets/__tests__/filesWidgets.test.d.ts.map +1 -0
  768. package/dist/widgets/__tests__/filesWidgets.test.js +52 -0
  769. package/dist/widgets/__tests__/filesWidgets.test.js.map +1 -0
  770. package/dist/widgets/__tests__/formWidgets.test.d.ts +7 -0
  771. package/dist/widgets/__tests__/formWidgets.test.d.ts.map +1 -0
  772. package/dist/widgets/__tests__/formWidgets.test.js +241 -0
  773. package/dist/widgets/__tests__/formWidgets.test.js.map +1 -0
  774. package/dist/widgets/__tests__/infoWidgets.test.d.ts +2 -0
  775. package/dist/widgets/__tests__/infoWidgets.test.d.ts.map +1 -0
  776. package/dist/widgets/__tests__/infoWidgets.test.js +43 -0
  777. package/dist/widgets/__tests__/infoWidgets.test.js.map +1 -0
  778. package/dist/widgets/__tests__/layers.golden.test.d.ts +14 -0
  779. package/dist/widgets/__tests__/layers.golden.test.d.ts.map +1 -0
  780. package/dist/widgets/__tests__/layers.golden.test.js +728 -0
  781. package/dist/widgets/__tests__/layers.golden.test.js.map +1 -0
  782. package/dist/widgets/__tests__/overlays.test.d.ts +2 -0
  783. package/dist/widgets/__tests__/overlays.test.d.ts.map +1 -0
  784. package/dist/widgets/__tests__/overlays.test.js +99 -0
  785. package/dist/widgets/__tests__/overlays.test.js.map +1 -0
  786. package/dist/widgets/__tests__/renderer.regressions.test.d.ts +2 -0
  787. package/dist/widgets/__tests__/renderer.regressions.test.d.ts.map +1 -0
  788. package/dist/widgets/__tests__/renderer.regressions.test.js +132 -0
  789. package/dist/widgets/__tests__/renderer.regressions.test.js.map +1 -0
  790. package/dist/widgets/__tests__/styleUtils.test.d.ts +2 -0
  791. package/dist/widgets/__tests__/styleUtils.test.d.ts.map +1 -0
  792. package/dist/widgets/__tests__/styleUtils.test.js +22 -0
  793. package/dist/widgets/__tests__/styleUtils.test.js.map +1 -0
  794. package/dist/widgets/__tests__/styled.test.d.ts +2 -0
  795. package/dist/widgets/__tests__/styled.test.d.ts.map +1 -0
  796. package/dist/widgets/__tests__/styled.test.js +23 -0
  797. package/dist/widgets/__tests__/styled.test.js.map +1 -0
  798. package/dist/widgets/__tests__/table.golden.test.d.ts +10 -0
  799. package/dist/widgets/__tests__/table.golden.test.d.ts.map +1 -0
  800. package/dist/widgets/__tests__/table.golden.test.js +367 -0
  801. package/dist/widgets/__tests__/table.golden.test.js.map +1 -0
  802. package/dist/widgets/__tests__/tree.golden.test.d.ts +10 -0
  803. package/dist/widgets/__tests__/tree.golden.test.d.ts.map +1 -0
  804. package/dist/widgets/__tests__/tree.golden.test.js +501 -0
  805. package/dist/widgets/__tests__/tree.golden.test.js.map +1 -0
  806. package/dist/widgets/__tests__/virtualList.golden.test.d.ts +10 -0
  807. package/dist/widgets/__tests__/virtualList.golden.test.d.ts.map +1 -0
  808. package/dist/widgets/__tests__/virtualList.golden.test.js +349 -0
  809. package/dist/widgets/__tests__/virtualList.golden.test.js.map +1 -0
  810. package/dist/widgets/__tests__/widgetRenderSmoke.test.d.ts +2 -0
  811. package/dist/widgets/__tests__/widgetRenderSmoke.test.d.ts.map +1 -0
  812. package/dist/widgets/__tests__/widgetRenderSmoke.test.js +311 -0
  813. package/dist/widgets/__tests__/widgetRenderSmoke.test.js.map +1 -0
  814. package/dist/widgets/checkbox.d.ts +49 -0
  815. package/dist/widgets/checkbox.d.ts.map +1 -0
  816. package/dist/widgets/checkbox.js +66 -0
  817. package/dist/widgets/checkbox.js.map +1 -0
  818. package/dist/widgets/codeEditor.d.ts +150 -0
  819. package/dist/widgets/codeEditor.d.ts.map +1 -0
  820. package/dist/widgets/codeEditor.js +434 -0
  821. package/dist/widgets/codeEditor.js.map +1 -0
  822. package/dist/widgets/collections.d.ts +10 -0
  823. package/dist/widgets/collections.d.ts.map +1 -0
  824. package/dist/widgets/collections.js +49 -0
  825. package/dist/widgets/collections.js.map +1 -0
  826. package/dist/widgets/commandPalette.d.ts +117 -0
  827. package/dist/widgets/commandPalette.d.ts.map +1 -0
  828. package/dist/widgets/commandPalette.js +230 -0
  829. package/dist/widgets/commandPalette.js.map +1 -0
  830. package/dist/widgets/composition.d.ts +202 -0
  831. package/dist/widgets/composition.d.ts.map +1 -0
  832. package/dist/widgets/composition.js +135 -0
  833. package/dist/widgets/composition.js.map +1 -0
  834. package/dist/widgets/conditionals.d.ts +9 -0
  835. package/dist/widgets/conditionals.d.ts.map +1 -0
  836. package/dist/widgets/conditionals.js +27 -0
  837. package/dist/widgets/conditionals.js.map +1 -0
  838. package/dist/widgets/debugPanel.d.ts +96 -0
  839. package/dist/widgets/debugPanel.d.ts.map +1 -0
  840. package/dist/widgets/debugPanel.js +172 -0
  841. package/dist/widgets/debugPanel.js.map +1 -0
  842. package/dist/widgets/dialogs/alert.d.ts +7 -0
  843. package/dist/widgets/dialogs/alert.d.ts.map +1 -0
  844. package/dist/widgets/dialogs/alert.js +21 -0
  845. package/dist/widgets/dialogs/alert.js.map +1 -0
  846. package/dist/widgets/dialogs/confirm.d.ts +7 -0
  847. package/dist/widgets/dialogs/confirm.d.ts.map +1 -0
  848. package/dist/widgets/dialogs/confirm.js +27 -0
  849. package/dist/widgets/dialogs/confirm.js.map +1 -0
  850. package/dist/widgets/dialogs/index.d.ts +8 -0
  851. package/dist/widgets/dialogs/index.d.ts.map +1 -0
  852. package/dist/widgets/dialogs/index.js +7 -0
  853. package/dist/widgets/dialogs/index.js.map +1 -0
  854. package/dist/widgets/dialogs/prompt.d.ts +9 -0
  855. package/dist/widgets/dialogs/prompt.d.ts.map +1 -0
  856. package/dist/widgets/dialogs/prompt.js +40 -0
  857. package/dist/widgets/dialogs/prompt.js.map +1 -0
  858. package/dist/widgets/dialogs/types.d.ts +29 -0
  859. package/dist/widgets/dialogs/types.d.ts.map +1 -0
  860. package/dist/widgets/dialogs/types.js +5 -0
  861. package/dist/widgets/dialogs/types.js.map +1 -0
  862. package/dist/widgets/diffViewer.d.ts +101 -0
  863. package/dist/widgets/diffViewer.d.ts.map +1 -0
  864. package/dist/widgets/diffViewer.js +194 -0
  865. package/dist/widgets/diffViewer.js.map +1 -0
  866. package/dist/widgets/field.d.ts +52 -0
  867. package/dist/widgets/field.d.ts.map +1 -0
  868. package/dist/widgets/field.js +62 -0
  869. package/dist/widgets/field.js.map +1 -0
  870. package/dist/widgets/logsConsole.d.ts +101 -0
  871. package/dist/widgets/logsConsole.d.ts.map +1 -0
  872. package/dist/widgets/logsConsole.js +189 -0
  873. package/dist/widgets/logsConsole.js.map +1 -0
  874. package/dist/widgets/radioGroup.d.ts +79 -0
  875. package/dist/widgets/radioGroup.d.ts.map +1 -0
  876. package/dist/widgets/radioGroup.js +145 -0
  877. package/dist/widgets/radioGroup.js.map +1 -0
  878. package/dist/widgets/select.d.ts +61 -0
  879. package/dist/widgets/select.d.ts.map +1 -0
  880. package/dist/widgets/select.js +119 -0
  881. package/dist/widgets/select.js.map +1 -0
  882. package/dist/widgets/splitPane.d.ts +92 -0
  883. package/dist/widgets/splitPane.d.ts.map +1 -0
  884. package/dist/widgets/splitPane.js +265 -0
  885. package/dist/widgets/splitPane.js.map +1 -0
  886. package/dist/widgets/style.d.ts +34 -0
  887. package/dist/widgets/style.d.ts.map +1 -0
  888. package/dist/widgets/style.js +16 -0
  889. package/dist/widgets/style.js.map +1 -0
  890. package/dist/widgets/styleUtils.d.ts +39 -0
  891. package/dist/widgets/styleUtils.d.ts.map +1 -0
  892. package/dist/widgets/styleUtils.js +42 -0
  893. package/dist/widgets/styleUtils.js.map +1 -0
  894. package/dist/widgets/styled.d.ts +21 -0
  895. package/dist/widgets/styled.d.ts.map +1 -0
  896. package/dist/widgets/styled.js +30 -0
  897. package/dist/widgets/styled.js.map +1 -0
  898. package/dist/widgets/table.d.ts +157 -0
  899. package/dist/widgets/table.d.ts.map +1 -0
  900. package/dist/widgets/table.js +338 -0
  901. package/dist/widgets/table.js.map +1 -0
  902. package/dist/widgets/toast.d.ts +89 -0
  903. package/dist/widgets/toast.d.ts.map +1 -0
  904. package/dist/widgets/toast.js +145 -0
  905. package/dist/widgets/toast.js.map +1 -0
  906. package/dist/widgets/tree.d.ts +207 -0
  907. package/dist/widgets/tree.d.ts.map +1 -0
  908. package/dist/widgets/tree.js +393 -0
  909. package/dist/widgets/tree.js.map +1 -0
  910. package/dist/widgets/types.d.ts +1400 -0
  911. package/dist/widgets/types.d.ts.map +1 -0
  912. package/dist/widgets/types.js +20 -0
  913. package/dist/widgets/types.js.map +1 -0
  914. package/dist/widgets/ui.d.ts +734 -0
  915. package/dist/widgets/ui.d.ts.map +1 -0
  916. package/dist/widgets/ui.js +851 -0
  917. package/dist/widgets/ui.js.map +1 -0
  918. package/dist/widgets/virtualList.d.ts +93 -0
  919. package/dist/widgets/virtualList.d.ts.map +1 -0
  920. package/dist/widgets/virtualList.js +258 -0
  921. package/dist/widgets/virtualList.js.map +1 -0
  922. package/package.json +97 -0
@@ -0,0 +1,230 @@
1
+ /**
2
+ * packages/core/src/widgets/commandPalette.ts — CommandPalette core algorithms.
3
+ *
4
+ * Why: Implements filtering, fuzzy matching, and keyboard navigation for the
5
+ * command palette widget. The palette provides quick-access command execution,
6
+ * model switching, file opening, and symbol navigation.
7
+ *
8
+ * @see docs/widgets/command-palette.md
9
+ */
10
+ /** Default maximum visible items in the palette. */
11
+ export const DEFAULT_MAX_VISIBLE = 10;
12
+ /** Default palette width in cells. */
13
+ export const PALETTE_WIDTH = 60;
14
+ /**
15
+ * Compute the visible window for the results list so the selected item stays visible.
16
+ *
17
+ * @param selectedIndex - Current selection index
18
+ * @param itemCount - Total number of items
19
+ * @param visibleCount - Number of rows available for items
20
+ */
21
+ export function computeCommandPaletteWindow(selectedIndex, itemCount, visibleCount) {
22
+ const count = Math.max(0, Math.min(itemCount, visibleCount));
23
+ if (count === 0)
24
+ return Object.freeze({ start: 0, count: 0 });
25
+ if (itemCount <= count)
26
+ return Object.freeze({ start: 0, count });
27
+ const sel = Math.max(0, Math.min(itemCount - 1, selectedIndex));
28
+ const maxStart = itemCount - count;
29
+ let start = sel - Math.floor(count / 2);
30
+ if (start < 0)
31
+ start = 0;
32
+ if (start > maxStart)
33
+ start = maxStart;
34
+ return Object.freeze({ start, count });
35
+ }
36
+ /**
37
+ * Filter items from a source based on query string.
38
+ * Uses case-insensitive substring matching.
39
+ *
40
+ * @param items - Items to filter
41
+ * @param query - Search query
42
+ * @returns Filtered items
43
+ */
44
+ export function filterItems(items, query) {
45
+ if (!query)
46
+ return items;
47
+ const lowerQuery = query.toLowerCase();
48
+ return Object.freeze(items.filter((item) => {
49
+ // Match against label
50
+ if (item.label.toLowerCase().includes(lowerQuery))
51
+ return true;
52
+ // Match against description
53
+ if (item.description?.toLowerCase().includes(lowerQuery))
54
+ return true;
55
+ // Match against shortcut
56
+ if (item.shortcut?.toLowerCase().includes(lowerQuery))
57
+ return true;
58
+ return false;
59
+ }));
60
+ }
61
+ /**
62
+ * Compute fuzzy match score for an item against a query.
63
+ * Higher score = better match.
64
+ *
65
+ * @param item - Item to score
66
+ * @param query - Search query
67
+ * @returns Match score (0 = no match)
68
+ */
69
+ export function fuzzyScore(item, query) {
70
+ if (!query)
71
+ return 1; // All items match empty query equally
72
+ const lowerQuery = query.toLowerCase();
73
+ const lowerLabel = item.label.toLowerCase();
74
+ // Exact prefix match: highest score
75
+ if (lowerLabel.startsWith(lowerQuery)) {
76
+ return 100 + 1 / item.label.length;
77
+ }
78
+ // Word boundary match: high score
79
+ const words = lowerLabel.split(/\s+/);
80
+ for (const word of words) {
81
+ if (word.startsWith(lowerQuery)) {
82
+ return 80 + 1 / item.label.length;
83
+ }
84
+ }
85
+ // Substring match: medium score
86
+ if (lowerLabel.includes(lowerQuery)) {
87
+ return 50 + 1 / item.label.length;
88
+ }
89
+ // Fuzzy character sequence match
90
+ let queryIdx = 0;
91
+ let consecutiveBonus = 0;
92
+ let lastMatchIdx = -2;
93
+ for (let i = 0; i < lowerLabel.length && queryIdx < lowerQuery.length; i++) {
94
+ if (lowerLabel[i] === lowerQuery[queryIdx]) {
95
+ if (i === lastMatchIdx + 1) {
96
+ consecutiveBonus += 5;
97
+ }
98
+ lastMatchIdx = i;
99
+ queryIdx++;
100
+ }
101
+ }
102
+ if (queryIdx === lowerQuery.length) {
103
+ return 20 + consecutiveBonus + 1 / item.label.length;
104
+ }
105
+ return 0; // No match
106
+ }
107
+ /**
108
+ * Sort items by fuzzy match score (descending).
109
+ *
110
+ * @param items - Items to sort
111
+ * @param query - Search query
112
+ * @returns Sorted items
113
+ */
114
+ export function sortByScore(items, query) {
115
+ if (!query)
116
+ return items;
117
+ const scored = items.map((item) => ({ item, score: fuzzyScore(item, query) }));
118
+ scored.sort((a, b) => b.score - a.score);
119
+ return Object.freeze(scored.filter((s) => s.score > 0).map((s) => s.item));
120
+ }
121
+ /**
122
+ * Get items from sources, filtered and sorted by query.
123
+ * Handles source prefix triggers (e.g., ">" for commands).
124
+ *
125
+ * @param sources - Command sources
126
+ * @param query - Search query
127
+ * @returns Promise of filtered items
128
+ */
129
+ export async function getFilteredItems(sources, query) {
130
+ // Check for prefix trigger
131
+ let activeSourceId = null;
132
+ let effectiveQuery = query;
133
+ for (const source of sources) {
134
+ if (source.prefix && query.startsWith(source.prefix)) {
135
+ activeSourceId = source.id;
136
+ effectiveQuery = query.slice(source.prefix.length).trim();
137
+ break;
138
+ }
139
+ }
140
+ // Get items from relevant sources
141
+ const itemPromises = [];
142
+ for (const source of sources) {
143
+ if (activeSourceId !== null && source.id !== activeSourceId) {
144
+ continue;
145
+ }
146
+ const result = source.getItems(effectiveQuery);
147
+ if (result instanceof Promise) {
148
+ itemPromises.push(result);
149
+ }
150
+ else {
151
+ itemPromises.push(Promise.resolve(result));
152
+ }
153
+ }
154
+ const results = await Promise.all(itemPromises);
155
+ const allItems = results.flat();
156
+ // Filter and sort
157
+ const filtered = filterItems(allItems, effectiveQuery);
158
+ const sorted = sortByScore(filtered, effectiveQuery);
159
+ return sorted;
160
+ }
161
+ /**
162
+ * Compute next selected index for keyboard navigation.
163
+ *
164
+ * @param currentIndex - Current selection index
165
+ * @param direction - Navigation direction
166
+ * @param itemCount - Total number of items
167
+ * @param wrapAround - Whether to wrap at boundaries
168
+ * @returns New selection index
169
+ */
170
+ export function computeNextIndex(currentIndex, direction, itemCount, wrapAround = true) {
171
+ if (itemCount === 0)
172
+ return 0;
173
+ let nextIndex;
174
+ if (direction === "up") {
175
+ nextIndex = currentIndex - 1;
176
+ if (nextIndex < 0) {
177
+ nextIndex = wrapAround ? itemCount - 1 : 0;
178
+ }
179
+ }
180
+ else {
181
+ nextIndex = currentIndex + 1;
182
+ if (nextIndex >= itemCount) {
183
+ nextIndex = wrapAround ? 0 : itemCount - 1;
184
+ }
185
+ }
186
+ return nextIndex;
187
+ }
188
+ /**
189
+ * Clamp selection index to valid range.
190
+ *
191
+ * @param index - Current index
192
+ * @param itemCount - Total number of items
193
+ * @returns Clamped index
194
+ */
195
+ export function clampIndex(index, itemCount) {
196
+ if (itemCount === 0)
197
+ return 0;
198
+ return Math.max(0, Math.min(index, itemCount - 1));
199
+ }
200
+ /**
201
+ * Compute highlight ranges for displaying matched text.
202
+ *
203
+ * @param text - Text to highlight
204
+ * @param query - Search query
205
+ * @returns Array of [start, end] ranges to highlight
206
+ */
207
+ export function computeHighlights(text, query) {
208
+ if (!query)
209
+ return Object.freeze([]);
210
+ const highlights = [];
211
+ const lowerText = text.toLowerCase();
212
+ const lowerQuery = query.toLowerCase();
213
+ let searchStart = 0;
214
+ let matchIdx = lowerText.indexOf(lowerQuery, searchStart);
215
+ while (matchIdx !== -1) {
216
+ highlights.push([matchIdx, matchIdx + query.length]);
217
+ searchStart = matchIdx + 1;
218
+ matchIdx = lowerText.indexOf(lowerQuery, searchStart);
219
+ }
220
+ return Object.freeze(highlights);
221
+ }
222
+ /** Palette color constants. */
223
+ export const PALETTE_COLORS = {
224
+ background: { r: 30, g: 30, b: 30 },
225
+ border: { r: 60, g: 60, b: 60 },
226
+ selectedBg: { r: 0, g: 120, b: 215 },
227
+ highlight: { r: 255, g: 210, b: 0 },
228
+ placeholder: { r: 128, g: 128, b: 128 },
229
+ };
230
+ //# sourceMappingURL=commandPalette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandPalette.js","sourceRoot":"","sources":["../../src/widgets/commandPalette.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,oDAAoD;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,sCAAsC;AACtC,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAKhC;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,aAAqB,EACrB,SAAiB,EACjB,YAAoB;IAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IAC7D,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9D,IAAI,SAAS,IAAI,KAAK;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAElE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;IACnC,IAAI,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACxC,IAAI,KAAK,GAAG,CAAC;QAAE,KAAK,GAAG,CAAC,CAAC;IACzB,IAAI,KAAK,GAAG,QAAQ;QAAE,KAAK,GAAG,QAAQ,CAAC;IAEvC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAA6B,EAAE,KAAa;IACtE,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,MAAM,CAAC,MAAM,CAClB,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACpB,sBAAsB;QACtB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/D,4BAA4B;QAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QACtE,yBAAyB;QACzB,IAAI,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,IAAiB,EAAE,KAAa;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC,CAAC,sCAAsC;IAE5D,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAE5C,oCAAoC;IACpC,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,OAAO,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,kCAAkC;IAClC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACpC,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,iCAAiC;IACjC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3E,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC3B,gBAAgB,IAAI,CAAC,CAAC;YACxB,CAAC;YACD,YAAY,GAAG,CAAC,CAAC;YACjB,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACvD,CAAC;IAED,OAAO,CAAC,CAAC,CAAC,WAAW;AACvB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAA6B,EAAE,KAAa;IACtE,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/E,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAiC,EACjC,KAAa;IAEb,2BAA2B;IAC3B,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,cAAc,GAAG,MAAM,CAAC,EAAE,CAAC;YAC3B,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1D,MAAM;QACR,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,MAAM,YAAY,GAAsC,EAAE,CAAC;IAE3D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,cAAc,KAAK,IAAI,IAAI,MAAM,CAAC,EAAE,KAAK,cAAc,EAAE,CAAC;YAC5D,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC/C,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;YAC9B,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAEhC,kBAAkB;IAClB,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAErD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,YAAoB,EACpB,SAAwB,EACxB,SAAiB,EACjB,UAAU,GAAG,IAAI;IAEjB,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAE9B,IAAI,SAAiB,CAAC;IACtB,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,SAAS,GAAG,YAAY,GAAG,CAAC,CAAC;QAC7B,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,YAAY,GAAG,CAAC,CAAC;QAC7B,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;YAC3B,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,SAAiB;IACzD,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,KAAa;IAEb,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAErC,MAAM,UAAU,GAAuB,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAEvC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAE1D,OAAO,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACvB,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACrD,WAAW,GAAG,QAAQ,GAAG,CAAC,CAAC;QAC3B,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACnC,CAAC;AAED,+BAA+B;AAC/B,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;IACnC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;IAC/B,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;IACpC,SAAS,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;IACnC,WAAW,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;CAC/B,CAAC"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * packages/core/src/widgets/composition.ts — Widget composition API.
3
+ *
4
+ * Why: Provides defineWidget for creating reusable components with local state
5
+ * and lifecycle. Enables building complex UIs from composable, stateful widgets
6
+ * while maintaining the declarative nature of the VNode tree.
7
+ *
8
+ * Key concepts:
9
+ * - defineWidget: Creates a widget factory with per-instance state
10
+ * - WidgetContext: Provides hooks for state, refs, effects, and app state
11
+ * - Scoped IDs: Each instance gets unique ID prefixes
12
+ * - Hook rules: Hooks must be called in consistent order each render
13
+ *
14
+ * @see docs/guide/composition.md (GitHub issue #116)
15
+ */
16
+ import type { VNode } from "./types.js";
17
+ /**
18
+ * Context provided to widget render functions.
19
+ * Contains hooks for managing local state and side effects.
20
+ */
21
+ export type WidgetContext<State = void> = Readonly<{
22
+ /**
23
+ * Generate a scoped ID unique to this widget instance.
24
+ * Use for interactive widget IDs to prevent collisions.
25
+ *
26
+ * @example
27
+ * ctx.id("button") // Returns "MyWidget_0_button" for instance 0
28
+ */
29
+ id: (suffix: string) => string;
30
+ /**
31
+ * Create local state that persists across renders.
32
+ * Similar to React's useState hook.
33
+ *
34
+ * @param initial - Initial value or lazy initializer function
35
+ * @returns Tuple of [currentValue, setValue]
36
+ *
37
+ * @example
38
+ * const [count, setCount] = ctx.useState(0);
39
+ * const [items, setItems] = ctx.useState(() => loadItems());
40
+ */
41
+ useState: <T>(initial: T | (() => T)) => [T, (v: T | ((prev: T) => T)) => void];
42
+ /**
43
+ * Create a mutable ref that persists across renders without triggering re-renders.
44
+ * Similar to React's useRef hook.
45
+ *
46
+ * @param initial - Initial value for the ref
47
+ * @returns Object with mutable `current` property
48
+ *
49
+ * @example
50
+ * const inputRef = ctx.useRef<string>("");
51
+ */
52
+ useRef: <T>(initial: T) => {
53
+ current: T;
54
+ };
55
+ /**
56
+ * Register a side effect to run after commit.
57
+ * Similar to React's useEffect hook.
58
+ *
59
+ * @param effect - Effect callback, may return cleanup function
60
+ * @param deps - Dependency array; effect re-runs when deps change
61
+ *
62
+ * @example
63
+ * ctx.useEffect(() => {
64
+ * const timer = setInterval(tick, 1000);
65
+ * return () => clearInterval(timer); // Cleanup
66
+ * }, []);
67
+ */
68
+ useEffect: {
69
+ (effect: () => void, deps?: readonly unknown[]): void;
70
+ (effect: () => () => void, deps?: readonly unknown[]): void;
71
+ };
72
+ /**
73
+ * Select a slice of app state with automatic re-render on change.
74
+ * Only available when widget has access to app state.
75
+ *
76
+ * @param selector - Function to extract desired state slice
77
+ * @returns Selected state value
78
+ *
79
+ * @example
80
+ * const userName = ctx.useAppState(s => s.user.name);
81
+ */
82
+ useAppState: <T>(selector: (s: State) => T) => T;
83
+ /**
84
+ * Request a re-render of this widget instance.
85
+ * Typically called in response to external state changes.
86
+ */
87
+ invalidate: () => void;
88
+ }>;
89
+ /**
90
+ * A composite widget is a VNode with special metadata for runtime handling.
91
+ * The runtime detects these and manages their instance state.
92
+ */
93
+ export type CompositeVNode = VNode & {
94
+ readonly __composite: CompositeWidgetMeta;
95
+ };
96
+ /**
97
+ * Metadata attached to composite widget VNodes.
98
+ */
99
+ export type CompositeWidgetMeta = Readonly<{
100
+ /** Unique key for this widget definition (for identity checking). */
101
+ widgetKey: string;
102
+ /** The render function to call. */
103
+ render: (ctx: WidgetContext<unknown>) => VNode;
104
+ /** Props passed to the widget. */
105
+ props: unknown;
106
+ /** Optional key prop for reconciliation. */
107
+ key: string | undefined;
108
+ }>;
109
+ /**
110
+ * Check if a VNode is a composite widget.
111
+ */
112
+ export declare function isCompositeVNode(vnode: VNode): vnode is CompositeVNode;
113
+ /**
114
+ * Get composite metadata from a VNode, or null if not composite.
115
+ */
116
+ export declare function getCompositeMeta(vnode: VNode): CompositeWidgetMeta | null;
117
+ /**
118
+ * Props constraint: must have optional key property.
119
+ */
120
+ export type WidgetPropsBase = Readonly<{
121
+ key?: string;
122
+ }>;
123
+ /**
124
+ * Widget factory function returned by defineWidget.
125
+ */
126
+ export type WidgetFactory<Props extends WidgetPropsBase> = (props: Props) => VNode;
127
+ /**
128
+ * Options for defineWidget.
129
+ */
130
+ export type DefineWidgetOptions = Readonly<{
131
+ /** Display name for debugging (optional). */
132
+ name?: string;
133
+ }>;
134
+ /**
135
+ * Define a reusable widget with local state and lifecycle.
136
+ *
137
+ * The render function receives props and a WidgetContext for managing
138
+ * per-instance state. Each instance of the widget maintains its own
139
+ * state that persists across renders.
140
+ *
141
+ * @param render - Function that renders props and context to a VNode
142
+ * @param options - Optional configuration
143
+ * @returns Factory function that creates widget VNodes
144
+ *
145
+ * @example
146
+ * ```ts
147
+ * const Counter = defineWidget<{ initial: number; key?: string }>((props, ctx) => {
148
+ * const [count, setCount] = ctx.useState(props.initial);
149
+ *
150
+ * return ui.row([
151
+ * ui.text(`Count: ${count}`),
152
+ * ui.button({
153
+ * id: ctx.id("inc"),
154
+ * label: "+",
155
+ * onPress: () => setCount(c => c + 1)
156
+ * }),
157
+ * ]);
158
+ * });
159
+ *
160
+ * // Usage:
161
+ * ui.column([
162
+ * Counter({ initial: 0 }),
163
+ * Counter({ initial: 10, key: "counter-2" }),
164
+ * ]);
165
+ * ```
166
+ */
167
+ export declare function defineWidget<Props extends WidgetPropsBase, State = void>(render: (props: Props, ctx: WidgetContext<State>) => VNode, options?: DefineWidgetOptions): WidgetFactory<Props>;
168
+ /**
169
+ * Generate a scoped ID for a widget instance.
170
+ *
171
+ * @param widgetKey - The widget definition key
172
+ * @param instanceIndex - Instance index within parent
173
+ * @param suffix - User-provided suffix
174
+ * @returns Scoped ID string like "Counter_0_inc"
175
+ */
176
+ export declare function scopedId(widgetKey: string, instanceIndex: number, suffix: string): string;
177
+ /**
178
+ * Create a WidgetContext for rendering a composite widget.
179
+ * This is called by the runtime during the commit phase.
180
+ *
181
+ * @param widgetKey - Widget definition key for ID scoping
182
+ * @param instanceIndex - Instance index for ID scoping
183
+ * @param hookContext - Hook implementations from instance registry
184
+ * @param appState - Current app state for useAppState
185
+ * @param onInvalidate - Callback when widget needs re-render
186
+ * @returns Complete WidgetContext for the render pass
187
+ */
188
+ export declare function createWidgetContext<State>(widgetKey: string, instanceIndex: number, hookContext: Pick<WidgetContext<State>, "useState" | "useRef" | "useEffect">, appState: State, onInvalidate: () => void): WidgetContext<State>;
189
+ /**
190
+ * Result of rendering a composite widget.
191
+ */
192
+ export type CompositeRenderResult = Readonly<{
193
+ /** The rendered VNode tree. */
194
+ vnode: VNode;
195
+ /** Pending effects to run after commit. */
196
+ pendingEffects: readonly {
197
+ deps: readonly unknown[] | undefined;
198
+ cleanup: (() => void) | undefined;
199
+ effect: () => undefined | (() => void);
200
+ }[];
201
+ }>;
202
+ //# sourceMappingURL=composition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/widgets/composition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * packages/core/src/widgets/composition.ts — Widget composition API.
3
+ *
4
+ * Why: Provides defineWidget for creating reusable components with local state
5
+ * and lifecycle. Enables building complex UIs from composable, stateful widgets
6
+ * while maintaining the declarative nature of the VNode tree.
7
+ *
8
+ * Key concepts:
9
+ * - defineWidget: Creates a widget factory with per-instance state
10
+ * - WidgetContext: Provides hooks for state, refs, effects, and app state
11
+ * - Scoped IDs: Each instance gets unique ID prefixes
12
+ * - Hook rules: Hooks must be called in consistent order each render
13
+ *
14
+ * @see docs/guide/composition.md (GitHub issue #116)
15
+ */
16
+ /**
17
+ * Check if a VNode is a composite widget.
18
+ */
19
+ export function isCompositeVNode(vnode) {
20
+ return "__composite" in vnode && vnode.__composite !== undefined;
21
+ }
22
+ /**
23
+ * Get composite metadata from a VNode, or null if not composite.
24
+ */
25
+ export function getCompositeMeta(vnode) {
26
+ if (isCompositeVNode(vnode)) {
27
+ return vnode.__composite;
28
+ }
29
+ return null;
30
+ }
31
+ /* ========== Widget Definition ========== */
32
+ /** Counter for generating unique widget keys. */
33
+ let widgetKeyCounter = 0;
34
+ /**
35
+ * Generate a unique widget key for a definition.
36
+ * This ensures each call to defineWidget creates a distinct widget type.
37
+ */
38
+ function generateWidgetKey(name) {
39
+ const id = widgetKeyCounter++;
40
+ return name ? `${name}_${id}` : `Widget_${id}`;
41
+ }
42
+ /**
43
+ * Define a reusable widget with local state and lifecycle.
44
+ *
45
+ * The render function receives props and a WidgetContext for managing
46
+ * per-instance state. Each instance of the widget maintains its own
47
+ * state that persists across renders.
48
+ *
49
+ * @param render - Function that renders props and context to a VNode
50
+ * @param options - Optional configuration
51
+ * @returns Factory function that creates widget VNodes
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * const Counter = defineWidget<{ initial: number; key?: string }>((props, ctx) => {
56
+ * const [count, setCount] = ctx.useState(props.initial);
57
+ *
58
+ * return ui.row([
59
+ * ui.text(`Count: ${count}`),
60
+ * ui.button({
61
+ * id: ctx.id("inc"),
62
+ * label: "+",
63
+ * onPress: () => setCount(c => c + 1)
64
+ * }),
65
+ * ]);
66
+ * });
67
+ *
68
+ * // Usage:
69
+ * ui.column([
70
+ * Counter({ initial: 0 }),
71
+ * Counter({ initial: 10, key: "counter-2" }),
72
+ * ]);
73
+ * ```
74
+ */
75
+ export function defineWidget(render, options) {
76
+ const widgetKey = generateWidgetKey(options?.name);
77
+ return function widgetFactory(props) {
78
+ // Store render function and props for later execution
79
+ const renderFn = (ctx) => {
80
+ return render(props, ctx);
81
+ };
82
+ // Create a composite VNode that the runtime will detect and handle
83
+ // Use column as the base kind with proper key handling
84
+ const baseVNode = {
85
+ kind: "column",
86
+ props: props.key !== undefined ? { key: props.key } : {},
87
+ children: [],
88
+ };
89
+ const compositeVNode = {
90
+ ...baseVNode,
91
+ __composite: Object.freeze({
92
+ widgetKey,
93
+ render: renderFn,
94
+ props,
95
+ key: props.key,
96
+ }),
97
+ };
98
+ return compositeVNode;
99
+ };
100
+ }
101
+ /* ========== Instance ID Scoping ========== */
102
+ /**
103
+ * Generate a scoped ID for a widget instance.
104
+ *
105
+ * @param widgetKey - The widget definition key
106
+ * @param instanceIndex - Instance index within parent
107
+ * @param suffix - User-provided suffix
108
+ * @returns Scoped ID string like "Counter_0_inc"
109
+ */
110
+ export function scopedId(widgetKey, instanceIndex, suffix) {
111
+ return `${widgetKey}_${instanceIndex}_${suffix}`;
112
+ }
113
+ /* ========== Context Creation ========== */
114
+ /**
115
+ * Create a WidgetContext for rendering a composite widget.
116
+ * This is called by the runtime during the commit phase.
117
+ *
118
+ * @param widgetKey - Widget definition key for ID scoping
119
+ * @param instanceIndex - Instance index for ID scoping
120
+ * @param hookContext - Hook implementations from instance registry
121
+ * @param appState - Current app state for useAppState
122
+ * @param onInvalidate - Callback when widget needs re-render
123
+ * @returns Complete WidgetContext for the render pass
124
+ */
125
+ export function createWidgetContext(widgetKey, instanceIndex, hookContext, appState, onInvalidate) {
126
+ return Object.freeze({
127
+ id: (suffix) => scopedId(widgetKey, instanceIndex, suffix),
128
+ useState: hookContext.useState,
129
+ useRef: hookContext.useRef,
130
+ useEffect: hookContext.useEffect,
131
+ useAppState: (selector) => selector(appState),
132
+ invalidate: onInvalidate,
133
+ });
134
+ }
135
+ //# sourceMappingURL=composition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition.js","sourceRoot":"","sources":["../../src/widgets/composition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA0GH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAY;IAC3C,OAAO,aAAa,IAAI,KAAK,IAAK,KAAwB,CAAC,WAAW,KAAK,SAAS,CAAC;AACvF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAY;IAC3C,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,WAAW,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6CAA6C;AAE7C,iDAAiD;AACjD,IAAI,gBAAgB,GAAG,CAAC,CAAC;AAEzB;;;GAGG;AACH,SAAS,iBAAiB,CAAC,IAAa;IACtC,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC9B,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;AACjD,CAAC;AAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,YAAY,CAC1B,MAA0D,EAC1D,OAA6B;IAE7B,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEnD,OAAO,SAAS,aAAa,CAAC,KAAY;QACxC,sDAAsD;QACtD,MAAM,QAAQ,GAAG,CAAC,GAA2B,EAAE,EAAE;YAC/C,OAAO,MAAM,CAAC,KAAK,EAAE,GAA2B,CAAC,CAAC;QACpD,CAAC,CAAC;QAEF,mEAAmE;QACnE,uDAAuD;QACvD,MAAM,SAAS,GAAU;YACvB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;YACxD,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,MAAM,cAAc,GAAmB;YACrC,GAAG,SAAS;YACZ,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;gBACzB,SAAS;gBACT,MAAM,EAAE,QAAQ;gBAChB,KAAK;gBACL,GAAG,EAAE,KAAK,CAAC,GAAG;aACf,CAAC;SACH,CAAC;QAEF,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC;AAED,+CAA+C;AAE/C;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,aAAqB,EAAE,MAAc;IAC/E,OAAO,GAAG,SAAS,IAAI,aAAa,IAAI,MAAM,EAAE,CAAC;AACnD,CAAC;AAED,4CAA4C;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,aAAqB,EACrB,WAA4E,EAC5E,QAAe,EACf,YAAwB;IAExB,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;QAClE,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,WAAW,EAAE,CAAI,QAAyB,EAAK,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpE,UAAU,EAAE,YAAY;KACzB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * packages/core/src/widgets/conditionals.ts — Conditional rendering helpers.
3
+ */
4
+ import type { VNode } from "./types.js";
5
+ export declare function show(condition: boolean, node: VNode, fallback?: VNode): VNode | null;
6
+ export declare function when(condition: boolean, trueBranch: () => VNode, falseBranch?: () => VNode): VNode | null;
7
+ export declare function match<T extends string | number>(value: T, cases: Partial<Record<T, (() => VNode) | VNode>> & Record<"_", (() => VNode) | VNode>): VNode | null;
8
+ export declare function maybe<T>(value: T | null | undefined, render: (value: T) => VNode): VNode | null;
9
+ //# sourceMappingURL=conditionals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionals.d.ts","sourceRoot":"","sources":["../../src/widgets/conditionals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,wBAAgB,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAGpF;AAED,wBAAgB,IAAI,CAClB,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,MAAM,KAAK,EACvB,WAAW,CAAC,EAAE,MAAM,KAAK,GACxB,KAAK,GAAG,IAAI,CAGd;AAED,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAC7C,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,GACpF,KAAK,GAAG,IAAI,CAKd;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAG/F"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * packages/core/src/widgets/conditionals.ts — Conditional rendering helpers.
3
+ */
4
+ export function show(condition, node, fallback) {
5
+ if (condition)
6
+ return node;
7
+ return fallback ?? null;
8
+ }
9
+ export function when(condition, trueBranch, falseBranch) {
10
+ if (condition)
11
+ return trueBranch();
12
+ return falseBranch?.() ?? null;
13
+ }
14
+ export function match(value, cases) {
15
+ const handler = cases[value] ?? cases._;
16
+ if (handler === undefined)
17
+ return null;
18
+ if (typeof handler === "function")
19
+ return handler();
20
+ return handler;
21
+ }
22
+ export function maybe(value, render) {
23
+ if (value === null || value === undefined)
24
+ return null;
25
+ return render(value);
26
+ }
27
+ //# sourceMappingURL=conditionals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionals.js","sourceRoot":"","sources":["../../src/widgets/conditionals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,UAAU,IAAI,CAAC,SAAkB,EAAE,IAAW,EAAE,QAAgB;IACpE,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC;IAC3B,OAAO,QAAQ,IAAI,IAAI,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,SAAkB,EAClB,UAAuB,EACvB,WAAyB;IAEzB,IAAI,SAAS;QAAE,OAAO,UAAU,EAAE,CAAC;IACnC,OAAO,WAAW,EAAE,EAAE,IAAI,IAAI,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,KAAK,CACnB,KAAQ,EACR,KAAqF;IAErF,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,EAAE,CAAC;IACpD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,KAAK,CAAI,KAA2B,EAAE,MAA2B;IAC/E,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}