@rezi-ui/core 0.1.0-alpha.60 → 0.1.0-alpha.63

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 (345) hide show
  1. package/dist/app/createApp/breadcrumbs.d.ts +38 -0
  2. package/dist/app/createApp/breadcrumbs.d.ts.map +1 -0
  3. package/dist/app/createApp/breadcrumbs.js +65 -0
  4. package/dist/app/createApp/breadcrumbs.js.map +1 -0
  5. package/dist/app/createApp/config.d.ts +25 -0
  6. package/dist/app/createApp/config.d.ts.map +1 -0
  7. package/dist/app/createApp/config.js +130 -0
  8. package/dist/app/createApp/config.js.map +1 -0
  9. package/dist/app/createApp/eventLoop.d.ts +95 -0
  10. package/dist/app/createApp/eventLoop.d.ts.map +1 -0
  11. package/dist/app/createApp/eventLoop.js +384 -0
  12. package/dist/app/createApp/eventLoop.js.map +1 -0
  13. package/dist/app/createApp/guards.d.ts +21 -0
  14. package/dist/app/createApp/guards.d.ts.map +1 -0
  15. package/dist/app/createApp/guards.js +54 -0
  16. package/dist/app/createApp/guards.js.map +1 -0
  17. package/dist/app/createApp/keybindings.d.ts +28 -0
  18. package/dist/app/createApp/keybindings.d.ts.map +1 -0
  19. package/dist/app/createApp/keybindings.js +113 -0
  20. package/dist/app/createApp/keybindings.js.map +1 -0
  21. package/dist/app/createApp/renderLoop.d.ts +64 -0
  22. package/dist/app/createApp/renderLoop.d.ts.map +1 -0
  23. package/dist/app/createApp/renderLoop.js +305 -0
  24. package/dist/app/createApp/renderLoop.js.map +1 -0
  25. package/dist/app/createApp.d.ts +3 -39
  26. package/dist/app/createApp.d.ts.map +1 -1
  27. package/dist/app/createApp.js +403 -1205
  28. package/dist/app/createApp.js.map +1 -1
  29. package/dist/app/widgetRenderer/constraintState.d.ts +98 -0
  30. package/dist/app/widgetRenderer/constraintState.d.ts.map +1 -0
  31. package/dist/app/widgetRenderer/constraintState.js +563 -0
  32. package/dist/app/widgetRenderer/constraintState.js.map +1 -0
  33. package/dist/app/widgetRenderer/fileNodeCache.d.ts +2 -0
  34. package/dist/app/widgetRenderer/fileNodeCache.d.ts.map +1 -1
  35. package/dist/app/widgetRenderer/fileNodeCache.js +31 -0
  36. package/dist/app/widgetRenderer/fileNodeCache.js.map +1 -1
  37. package/dist/app/widgetRenderer/filePickerRouting.d.ts +12 -1
  38. package/dist/app/widgetRenderer/filePickerRouting.d.ts.map +1 -1
  39. package/dist/app/widgetRenderer/filePickerRouting.js +63 -14
  40. package/dist/app/widgetRenderer/filePickerRouting.js.map +1 -1
  41. package/dist/app/widgetRenderer/focusState.d.ts +46 -0
  42. package/dist/app/widgetRenderer/focusState.d.ts.map +1 -0
  43. package/dist/app/widgetRenderer/focusState.js +122 -0
  44. package/dist/app/widgetRenderer/focusState.js.map +1 -0
  45. package/dist/app/widgetRenderer/keyboardRouting.d.ts.map +1 -1
  46. package/dist/app/widgetRenderer/keyboardRouting.js.map +1 -1
  47. package/dist/app/widgetRenderer/mouseRouting.d.ts +5 -0
  48. package/dist/app/widgetRenderer/mouseRouting.d.ts.map +1 -1
  49. package/dist/app/widgetRenderer/mouseRouting.js +78 -8
  50. package/dist/app/widgetRenderer/mouseRouting.js.map +1 -1
  51. package/dist/app/widgetRenderer/overlayShortcuts.d.ts.map +1 -1
  52. package/dist/app/widgetRenderer/overlayShortcuts.js +14 -4
  53. package/dist/app/widgetRenderer/overlayShortcuts.js.map +1 -1
  54. package/dist/app/widgetRenderer/overlayState.d.ts +198 -0
  55. package/dist/app/widgetRenderer/overlayState.d.ts.map +1 -0
  56. package/dist/app/widgetRenderer/overlayState.js +590 -0
  57. package/dist/app/widgetRenderer/overlayState.js.map +1 -0
  58. package/dist/app/widgetRenderer/routeEngineEvent.d.ts +189 -0
  59. package/dist/app/widgetRenderer/routeEngineEvent.d.ts.map +1 -0
  60. package/dist/app/widgetRenderer/routeEngineEvent.js +527 -0
  61. package/dist/app/widgetRenderer/routeEngineEvent.js.map +1 -0
  62. package/dist/app/widgetRenderer.d.ts +2 -1
  63. package/dist/app/widgetRenderer.d.ts.map +1 -1
  64. package/dist/app/widgetRenderer.js +334 -1707
  65. package/dist/app/widgetRenderer.js.map +1 -1
  66. package/dist/forms/internal/arrayState.d.ts +35 -0
  67. package/dist/forms/internal/arrayState.d.ts.map +1 -0
  68. package/dist/forms/internal/arrayState.js +238 -0
  69. package/dist/forms/internal/arrayState.js.map +1 -0
  70. package/dist/forms/internal/bindings.d.ts +46 -0
  71. package/dist/forms/internal/bindings.d.ts.map +1 -0
  72. package/dist/forms/internal/bindings.js +161 -0
  73. package/dist/forms/internal/bindings.js.map +1 -0
  74. package/dist/forms/internal/dev.d.ts +4 -0
  75. package/dist/forms/internal/dev.d.ts.map +1 -0
  76. package/dist/forms/internal/dev.js +21 -0
  77. package/dist/forms/internal/dev.js.map +1 -0
  78. package/dist/forms/internal/state.d.ts +52 -0
  79. package/dist/forms/internal/state.d.ts.map +1 -0
  80. package/dist/forms/internal/state.js +240 -0
  81. package/dist/forms/internal/state.js.map +1 -0
  82. package/dist/forms/internal/submit.d.ts +43 -0
  83. package/dist/forms/internal/submit.d.ts.map +1 -0
  84. package/dist/forms/internal/submit.js +165 -0
  85. package/dist/forms/internal/submit.js.map +1 -0
  86. package/dist/forms/internal/wizard.d.ts +53 -0
  87. package/dist/forms/internal/wizard.d.ts.map +1 -0
  88. package/dist/forms/internal/wizard.js +311 -0
  89. package/dist/forms/internal/wizard.js.map +1 -0
  90. package/dist/forms/useForm.d.ts.map +1 -1
  91. package/dist/forms/useForm.js +90 -1117
  92. package/dist/forms/useForm.js.map +1 -1
  93. package/dist/index.d.ts +1 -1
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +1 -1
  96. package/dist/index.js.map +1 -1
  97. package/dist/keybindings/manager.d.ts.map +1 -1
  98. package/dist/keybindings/manager.js.map +1 -1
  99. package/dist/keybindings/parser.d.ts.map +1 -1
  100. package/dist/keybindings/parser.js +10 -5
  101. package/dist/keybindings/parser.js.map +1 -1
  102. package/dist/layout/dropdownGeometry.d.ts +8 -0
  103. package/dist/layout/dropdownGeometry.d.ts.map +1 -1
  104. package/dist/layout/dropdownGeometry.js +40 -0
  105. package/dist/layout/dropdownGeometry.js.map +1 -1
  106. package/dist/layout/engine/layoutEngine.js +1 -1
  107. package/dist/layout/engine/layoutEngine.js.map +1 -1
  108. package/dist/layout/kinds/overlays.d.ts.map +1 -1
  109. package/dist/layout/kinds/stack.d.ts +1 -3
  110. package/dist/layout/kinds/stack.d.ts.map +1 -1
  111. package/dist/layout/kinds/stack.js +11 -1523
  112. package/dist/layout/kinds/stack.js.map +1 -1
  113. package/dist/layout/kinds/stackParts/axis.d.ts +32 -0
  114. package/dist/layout/kinds/stackParts/axis.d.ts.map +1 -0
  115. package/dist/layout/kinds/stackParts/axis.js +61 -0
  116. package/dist/layout/kinds/stackParts/axis.js.map +1 -0
  117. package/dist/layout/kinds/stackParts/constraintPlan.d.ts +18 -0
  118. package/dist/layout/kinds/stackParts/constraintPlan.d.ts.map +1 -0
  119. package/dist/layout/kinds/stackParts/constraintPlan.js +434 -0
  120. package/dist/layout/kinds/stackParts/constraintPlan.js.map +1 -0
  121. package/dist/layout/kinds/stackParts/layout.d.ts +6 -0
  122. package/dist/layout/kinds/stackParts/layout.d.ts.map +1 -0
  123. package/dist/layout/kinds/stackParts/layout.js +376 -0
  124. package/dist/layout/kinds/stackParts/layout.js.map +1 -0
  125. package/dist/layout/kinds/stackParts/measure.d.ts +6 -0
  126. package/dist/layout/kinds/stackParts/measure.d.ts.map +1 -0
  127. package/dist/layout/kinds/stackParts/measure.js +212 -0
  128. package/dist/layout/kinds/stackParts/measure.js.map +1 -0
  129. package/dist/layout/kinds/stackParts/shared.d.ts +31 -0
  130. package/dist/layout/kinds/stackParts/shared.d.ts.map +1 -0
  131. package/dist/layout/kinds/stackParts/shared.js +94 -0
  132. package/dist/layout/kinds/stackParts/shared.js.map +1 -0
  133. package/dist/layout/kinds/stackParts/wrap.d.ts +26 -0
  134. package/dist/layout/kinds/stackParts/wrap.d.ts.map +1 -0
  135. package/dist/layout/kinds/stackParts/wrap.js +374 -0
  136. package/dist/layout/kinds/stackParts/wrap.js.map +1 -0
  137. package/dist/layout/validate/interactive.d.ts +106 -0
  138. package/dist/layout/validate/interactive.d.ts.map +1 -0
  139. package/dist/layout/validate/interactive.js +430 -0
  140. package/dist/layout/validate/interactive.js.map +1 -0
  141. package/dist/layout/validate/layoutConstraints.d.ts +51 -0
  142. package/dist/layout/validate/layoutConstraints.d.ts.map +1 -0
  143. package/dist/layout/validate/layoutConstraints.js +100 -0
  144. package/dist/layout/validate/layoutConstraints.js.map +1 -0
  145. package/dist/layout/validate/primitives.d.ts +31 -0
  146. package/dist/layout/validate/primitives.d.ts.map +1 -0
  147. package/dist/layout/validate/primitives.js +299 -0
  148. package/dist/layout/validate/primitives.js.map +1 -0
  149. package/dist/layout/validate/shared.d.ts +23 -0
  150. package/dist/layout/validate/shared.d.ts.map +1 -0
  151. package/dist/layout/validate/shared.js +32 -0
  152. package/dist/layout/validate/shared.js.map +1 -0
  153. package/dist/layout/validate/spacing.d.ts +21 -0
  154. package/dist/layout/validate/spacing.d.ts.map +1 -0
  155. package/dist/layout/validate/spacing.js +33 -0
  156. package/dist/layout/validate/spacing.js.map +1 -0
  157. package/dist/layout/validateProps.d.ts +5 -159
  158. package/dist/layout/validateProps.d.ts.map +1 -1
  159. package/dist/layout/validateProps.js +1 -832
  160. package/dist/layout/validateProps.js.map +1 -1
  161. package/dist/pipeline.js +1 -1
  162. package/dist/pipeline.js.map +1 -1
  163. package/dist/renderer/renderToDrawlist/renderTree.d.ts +1 -1
  164. package/dist/renderer/renderToDrawlist/renderTree.d.ts.map +1 -1
  165. package/dist/renderer/renderToDrawlist/renderTree.js +3 -3
  166. package/dist/renderer/renderToDrawlist/renderTree.js.map +1 -1
  167. package/dist/renderer/renderToDrawlist/types.d.ts +2 -0
  168. package/dist/renderer/renderToDrawlist/types.d.ts.map +1 -1
  169. package/dist/renderer/renderToDrawlist/widgets/containers.d.ts.map +1 -1
  170. package/dist/renderer/renderToDrawlist/widgets/containers.js +1 -1
  171. package/dist/renderer/renderToDrawlist/widgets/containers.js.map +1 -1
  172. package/dist/renderer/renderToDrawlist/widgets/files.d.ts +2 -1
  173. package/dist/renderer/renderToDrawlist/widgets/files.d.ts.map +1 -1
  174. package/dist/renderer/renderToDrawlist/widgets/files.js +30 -3
  175. package/dist/renderer/renderToDrawlist/widgets/files.js.map +1 -1
  176. package/dist/renderer/renderToDrawlist/widgets/overlays.d.ts +1 -1
  177. package/dist/renderer/renderToDrawlist/widgets/overlays.d.ts.map +1 -1
  178. package/dist/renderer/renderToDrawlist/widgets/overlays.js +26 -6
  179. package/dist/renderer/renderToDrawlist/widgets/overlays.js.map +1 -1
  180. package/dist/renderer/renderToDrawlist/widgets/renderFormWidgets.d.ts.map +1 -1
  181. package/dist/renderer/renderToDrawlist/widgets/renderFormWidgets.js +52 -18
  182. package/dist/renderer/renderToDrawlist/widgets/renderFormWidgets.js.map +1 -1
  183. package/dist/renderer/renderToDrawlist.d.ts +0 -8
  184. package/dist/renderer/renderToDrawlist.d.ts.map +1 -1
  185. package/dist/renderer/renderToDrawlist.js +1 -9
  186. package/dist/renderer/renderToDrawlist.js.map +1 -1
  187. package/dist/runtime/commit/composite.d.ts +11 -0
  188. package/dist/runtime/commit/composite.d.ts.map +1 -0
  189. package/dist/runtime/commit/composite.js +238 -0
  190. package/dist/runtime/commit/composite.js.map +1 -0
  191. package/dist/runtime/commit/container.d.ts +7 -0
  192. package/dist/runtime/commit/container.d.ts.map +1 -0
  193. package/dist/runtime/commit/container.js +350 -0
  194. package/dist/runtime/commit/container.js.map +1 -0
  195. package/dist/runtime/commit/equality.d.ts +20 -0
  196. package/dist/runtime/commit/equality.d.ts.map +1 -0
  197. package/dist/runtime/commit/equality.js +436 -0
  198. package/dist/runtime/commit/equality.js.map +1 -0
  199. package/dist/runtime/commit/errorBoundary.d.ts +7 -0
  200. package/dist/runtime/commit/errorBoundary.d.ts.map +1 -0
  201. package/dist/runtime/commit/errorBoundary.js +53 -0
  202. package/dist/runtime/commit/errorBoundary.js.map +1 -0
  203. package/dist/runtime/commit/shared.d.ts +138 -0
  204. package/dist/runtime/commit/shared.d.ts.map +1 -0
  205. package/dist/runtime/commit/shared.js +11 -0
  206. package/dist/runtime/commit/shared.js.map +1 -0
  207. package/dist/runtime/commit/transitions.d.ts +9 -0
  208. package/dist/runtime/commit/transitions.d.ts.map +1 -0
  209. package/dist/runtime/commit/transitions.js +93 -0
  210. package/dist/runtime/commit/transitions.js.map +1 -0
  211. package/dist/runtime/commit/validation.d.ts +16 -0
  212. package/dist/runtime/commit/validation.d.ts.map +1 -0
  213. package/dist/runtime/commit/validation.js +157 -0
  214. package/dist/runtime/commit/validation.js.map +1 -0
  215. package/dist/runtime/commit.d.ts +7 -117
  216. package/dist/runtime/commit.d.ts.map +1 -1
  217. package/dist/runtime/commit.js +13 -1394
  218. package/dist/runtime/commit.js.map +1 -1
  219. package/dist/runtime/localState.d.ts +4 -0
  220. package/dist/runtime/localState.d.ts.map +1 -1
  221. package/dist/runtime/localState.js.map +1 -1
  222. package/dist/runtime/widgetMeta/collector.d.ts +77 -0
  223. package/dist/runtime/widgetMeta/collector.d.ts.map +1 -0
  224. package/dist/runtime/widgetMeta/collector.js +293 -0
  225. package/dist/runtime/widgetMeta/collector.js.map +1 -0
  226. package/dist/runtime/widgetMeta/focusContainers.d.ts +44 -0
  227. package/dist/runtime/widgetMeta/focusContainers.d.ts.map +1 -0
  228. package/dist/runtime/widgetMeta/focusContainers.js +190 -0
  229. package/dist/runtime/widgetMeta/focusContainers.js.map +1 -0
  230. package/dist/runtime/widgetMeta/focusInfo.d.ts +19 -0
  231. package/dist/runtime/widgetMeta/focusInfo.d.ts.map +1 -0
  232. package/dist/runtime/widgetMeta/focusInfo.js +172 -0
  233. package/dist/runtime/widgetMeta/focusInfo.js.map +1 -0
  234. package/dist/runtime/widgetMeta/helpers.d.ts +47 -0
  235. package/dist/runtime/widgetMeta/helpers.d.ts.map +1 -0
  236. package/dist/runtime/widgetMeta/helpers.js +182 -0
  237. package/dist/runtime/widgetMeta/helpers.js.map +1 -0
  238. package/dist/runtime/widgetMeta.d.ts +12 -175
  239. package/dist/runtime/widgetMeta.d.ts.map +1 -1
  240. package/dist/runtime/widgetMeta.js +6 -847
  241. package/dist/runtime/widgetMeta.js.map +1 -1
  242. package/dist/ui/capabilities.d.ts.map +1 -1
  243. package/dist/ui/designTokens.d.ts.map +1 -1
  244. package/dist/widgets/accordion.d.ts.map +1 -1
  245. package/dist/widgets/accordion.js +8 -13
  246. package/dist/widgets/accordion.js.map +1 -1
  247. package/dist/widgets/factories/advanced.d.ts +20 -0
  248. package/dist/widgets/factories/advanced.d.ts.map +1 -0
  249. package/dist/widgets/factories/advanced.js +75 -0
  250. package/dist/widgets/factories/advanced.js.map +1 -0
  251. package/dist/widgets/factories/basic.d.ts +14 -0
  252. package/dist/widgets/factories/basic.d.ts.map +1 -0
  253. package/dist/widgets/factories/basic.js +44 -0
  254. package/dist/widgets/factories/basic.js.map +1 -0
  255. package/dist/widgets/factories/feedback.d.ts +20 -0
  256. package/dist/widgets/factories/feedback.d.ts.map +1 -0
  257. package/dist/widgets/factories/feedback.js +102 -0
  258. package/dist/widgets/factories/feedback.js.map +1 -0
  259. package/dist/widgets/factories/helpers.d.ts +41 -0
  260. package/dist/widgets/factories/helpers.d.ts.map +1 -0
  261. package/dist/widgets/factories/helpers.js +72 -0
  262. package/dist/widgets/factories/helpers.js.map +1 -0
  263. package/dist/widgets/factories/interactive.d.ts +15 -0
  264. package/dist/widgets/factories/interactive.d.ts.map +1 -0
  265. package/dist/widgets/factories/interactive.js +46 -0
  266. package/dist/widgets/factories/interactive.js.map +1 -0
  267. package/dist/widgets/factories/layoutShell.d.ts +22 -0
  268. package/dist/widgets/factories/layoutShell.d.ts.map +1 -0
  269. package/dist/widgets/factories/layoutShell.js +190 -0
  270. package/dist/widgets/factories/layoutShell.js.map +1 -0
  271. package/dist/widgets/factories/media.d.ts +14 -0
  272. package/dist/widgets/factories/media.d.ts.map +1 -0
  273. package/dist/widgets/factories/media.js +25 -0
  274. package/dist/widgets/factories/media.js.map +1 -0
  275. package/dist/widgets/factories/navigation.d.ts +10 -0
  276. package/dist/widgets/factories/navigation.d.ts.map +1 -0
  277. package/dist/widgets/factories/navigation.js +24 -0
  278. package/dist/widgets/factories/navigation.js.map +1 -0
  279. package/dist/widgets/field.d.ts +6 -1
  280. package/dist/widgets/field.d.ts.map +1 -1
  281. package/dist/widgets/field.js +8 -2
  282. package/dist/widgets/field.js.map +1 -1
  283. package/dist/widgets/filePicker.d.ts +5 -0
  284. package/dist/widgets/filePicker.d.ts.map +1 -0
  285. package/dist/widgets/filePicker.js +136 -0
  286. package/dist/widgets/filePicker.js.map +1 -0
  287. package/dist/widgets/protocol.d.ts +0 -6
  288. package/dist/widgets/protocol.d.ts.map +1 -1
  289. package/dist/widgets/protocol.js +0 -6
  290. package/dist/widgets/protocol.js.map +1 -1
  291. package/dist/widgets/select.js +1 -1
  292. package/dist/widgets/select.js.map +1 -1
  293. package/dist/widgets/splitPane.d.ts.map +1 -1
  294. package/dist/widgets/splitPane.js.map +1 -1
  295. package/dist/widgets/table.d.ts.map +1 -1
  296. package/dist/widgets/table.js +43 -1
  297. package/dist/widgets/table.js.map +1 -1
  298. package/dist/widgets/tree.d.ts.map +1 -1
  299. package/dist/widgets/types/advanced.d.ts +611 -0
  300. package/dist/widgets/types/advanced.d.ts.map +1 -0
  301. package/dist/widgets/types/advanced.js +2 -0
  302. package/dist/widgets/types/advanced.js.map +1 -0
  303. package/dist/widgets/types/base.d.ts +933 -0
  304. package/dist/widgets/types/base.d.ts.map +1 -0
  305. package/dist/widgets/types/base.js +2 -0
  306. package/dist/widgets/types/base.js.map +1 -0
  307. package/dist/widgets/types/forms.d.ts +136 -0
  308. package/dist/widgets/types/forms.d.ts.map +1 -0
  309. package/dist/widgets/types/forms.js +2 -0
  310. package/dist/widgets/types/forms.js.map +1 -0
  311. package/dist/widgets/types/navigation.d.ts +83 -0
  312. package/dist/widgets/types/navigation.d.ts.map +1 -0
  313. package/dist/widgets/types/navigation.js +2 -0
  314. package/dist/widgets/types/navigation.js.map +1 -0
  315. package/dist/widgets/types/overlaysShell.d.ts +223 -0
  316. package/dist/widgets/types/overlaysShell.d.ts.map +1 -0
  317. package/dist/widgets/types/overlaysShell.js +2 -0
  318. package/dist/widgets/types/overlaysShell.js.map +1 -0
  319. package/dist/widgets/types/table.d.ts +104 -0
  320. package/dist/widgets/types/table.d.ts.map +1 -0
  321. package/dist/widgets/types/table.js +2 -0
  322. package/dist/widgets/types/table.js.map +1 -0
  323. package/dist/widgets/types/tree.d.ts +64 -0
  324. package/dist/widgets/types/tree.d.ts.map +1 -0
  325. package/dist/widgets/types/tree.js +2 -0
  326. package/dist/widgets/types/tree.js.map +1 -0
  327. package/dist/widgets/types.d.ts +14 -2123
  328. package/dist/widgets/types.d.ts.map +1 -1
  329. package/dist/widgets/ui.d.ts +37 -843
  330. package/dist/widgets/ui.d.ts.map +1 -1
  331. package/dist/widgets/ui.js +37 -1262
  332. package/dist/widgets/ui.js.map +1 -1
  333. package/package.json +2 -2
  334. package/dist/constraints/aggregation.d.ts +0 -17
  335. package/dist/constraints/aggregation.d.ts.map +0 -1
  336. package/dist/constraints/aggregation.js +0 -59
  337. package/dist/constraints/aggregation.js.map +0 -1
  338. package/dist/renderer/renderToDrawlist/overflowCulling.d.ts +0 -3
  339. package/dist/renderer/renderToDrawlist/overflowCulling.d.ts.map +0 -1
  340. package/dist/renderer/renderToDrawlist/overflowCulling.js +0 -81
  341. package/dist/renderer/renderToDrawlist/overflowCulling.js.map +0 -1
  342. package/dist/widgets/tests/protocol.test.d.ts +0 -2
  343. package/dist/widgets/tests/protocol.test.d.ts.map +0 -1
  344. package/dist/widgets/tests/protocol.test.js +0 -120
  345. package/dist/widgets/tests/protocol.test.js.map +0 -1
@@ -0,0 +1,376 @@
1
+ import { measureContentBounds, resolveAbsolutePosition, resolveOverflow, } from "../../constraints.js";
2
+ import { clampNonNegative } from "../../engine/bounds.js";
3
+ import { computeJustifyExtraGap, computeJustifyStartOffset, } from "../../engine/flex.js";
4
+ import { childHasAbsolutePosition, childHasFlexInMainAxis } from "../../engine/guards.js";
5
+ import { acquireArray, releaseArray } from "../../engine/pool.js";
6
+ import { ok } from "../../engine/result.js";
7
+ import { resolveMargin as resolveMarginProps, resolveSpacing as resolveSpacingProps, } from "../../spacing.js";
8
+ import { validateStackProps } from "../../validateProps.js";
9
+ import { crossFromSize, crossFromWH, mainFromSize, mainFromWH } from "./axis.js";
10
+ import { planConstraintCrossSizes, planConstraintMainSizes } from "./constraintPlan.js";
11
+ import { childHasAdvancedFlexProps, countNonEmptyChildren, isWrapEnabled, layoutNodeOnAxis, maybePruneRemainingDirtySiblings, measureNodeOnAxis, resolveEffectiveAlign, shiftLayoutChildren, } from "./shared.js";
12
+ import { planWrapConstraintLine, probeWrapChildMain, } from "./wrap.js";
13
+ export function layoutStack(axis, vnode, x, y, rectW, rectH, measureNode, layoutNode) {
14
+ const propsRes = validateStackProps(axis.axis, vnode.props);
15
+ if (!propsRes.ok)
16
+ return propsRes;
17
+ const { gap, align } = propsRes.value;
18
+ const justify = propsRes.value.justify;
19
+ const spacing = resolveSpacingProps(propsRes.value);
20
+ const margin = resolveMarginProps(propsRes.value);
21
+ const stackX = x + margin.left;
22
+ const stackY = y + margin.top;
23
+ const stackW = clampNonNegative(rectW - margin.left - margin.right);
24
+ const stackH = clampNonNegative(rectH - margin.top - margin.bottom);
25
+ const cx = stackX + spacing.left;
26
+ const cy = stackY + spacing.top;
27
+ const cw = clampNonNegative(stackW - spacing.left - spacing.right);
28
+ const ch = clampNonNegative(stackH - spacing.top - spacing.bottom);
29
+ const mainOrigin = mainFromWH(axis, cx, cy);
30
+ const crossOrigin = crossFromWH(axis, cx, cy);
31
+ const mainLimit = mainFromWH(axis, cw, ch);
32
+ const crossLimit = crossFromWH(axis, cw, ch);
33
+ const count = vnode.children.length;
34
+ const childCount = countNonEmptyChildren(vnode.children);
35
+ const children = [];
36
+ const needsConstraintPass = vnode.children.some((c) => !childHasAbsolutePosition(c) &&
37
+ (childHasFlexInMainAxis(c, axis.axis) || childHasAdvancedFlexProps(c)));
38
+ const wrap = isWrapEnabled(vnode.props);
39
+ if (wrap) {
40
+ const lines = [];
41
+ if (needsConstraintPass) {
42
+ const parentRect = { x: 0, y: 0, w: cw, h: ch };
43
+ const lineChildren = [];
44
+ let lineProbeMain = 0;
45
+ for (let i = 0; i < count; i++) {
46
+ const child = vnode.children[i];
47
+ if (!child || childHasAbsolutePosition(child))
48
+ continue;
49
+ const probeMainRes = probeWrapChildMain(axis, child, cw, ch, parentRect, measureNode);
50
+ if (!probeMainRes.ok)
51
+ return probeMainRes;
52
+ const probeMain = probeMainRes.value;
53
+ const wouldOverflow = lineChildren.length > 0 && lineProbeMain + gap + probeMain > mainLimit;
54
+ if (wouldOverflow) {
55
+ const linePlanRes = planWrapConstraintLine(axis, lineChildren, cw, ch, gap, parentRect, measureNode);
56
+ if (!linePlanRes.ok)
57
+ return linePlanRes;
58
+ lines.push(linePlanRes.value);
59
+ lineChildren.length = 0;
60
+ lineProbeMain = 0;
61
+ }
62
+ if (lineChildren.length === 0)
63
+ lineProbeMain = probeMain;
64
+ else
65
+ lineProbeMain += gap + probeMain;
66
+ lineChildren.push(child);
67
+ }
68
+ if (lineChildren.length > 0) {
69
+ const linePlanRes = planWrapConstraintLine(axis, lineChildren, cw, ch, gap, parentRect, measureNode);
70
+ if (!linePlanRes.ok)
71
+ return linePlanRes;
72
+ lines.push(linePlanRes.value);
73
+ }
74
+ }
75
+ else {
76
+ let lineMain = 0;
77
+ let lineCross = 0;
78
+ let lineChildren = [];
79
+ for (let i = 0; i < count; i++) {
80
+ const child = vnode.children[i];
81
+ if (!child || childHasAbsolutePosition(child))
82
+ continue;
83
+ const childSizeRes = measureNode(child, cw, ch, axis.axis);
84
+ if (!childSizeRes.ok)
85
+ return childSizeRes;
86
+ const childMain = mainFromSize(axis, childSizeRes.value);
87
+ const childCross = crossFromSize(axis, childSizeRes.value);
88
+ const wouldOverflow = lineChildren.length > 0 && lineMain + gap + childMain > mainLimit;
89
+ if (wouldOverflow) {
90
+ lines.push({
91
+ children: Object.freeze(lineChildren),
92
+ main: lineMain,
93
+ cross: lineCross,
94
+ });
95
+ lineMain = 0;
96
+ lineCross = 0;
97
+ lineChildren = [];
98
+ }
99
+ if (lineChildren.length === 0)
100
+ lineMain = childMain;
101
+ else
102
+ lineMain += gap + childMain;
103
+ if (childCross > lineCross)
104
+ lineCross = childCross;
105
+ lineChildren.push({
106
+ child,
107
+ main: childMain,
108
+ measureMaxMain: childMain,
109
+ cross: childCross,
110
+ });
111
+ }
112
+ if (lineChildren.length > 0) {
113
+ lines.push({
114
+ children: Object.freeze(lineChildren),
115
+ main: lineMain,
116
+ cross: lineCross,
117
+ });
118
+ }
119
+ }
120
+ let lineCrossPos = crossOrigin;
121
+ for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
122
+ const line = lines[lineIndex];
123
+ if (!line)
124
+ continue;
125
+ const lineChildCount = line.children.length;
126
+ const extra = clampNonNegative(mainLimit - line.main);
127
+ const startOffset = computeJustifyStartOffset(justify, extra, lineChildCount);
128
+ let cursorMain = mainOrigin + startOffset;
129
+ let remainingMain = clampNonNegative(mainLimit - startOffset);
130
+ for (let childOrdinal = 0; childOrdinal < lineChildCount; childOrdinal++) {
131
+ const planned = line.children[childOrdinal];
132
+ if (!planned)
133
+ continue;
134
+ const child = planned.child;
135
+ if (remainingMain === 0) {
136
+ const childRes = layoutNodeOnAxis(axis, child, cursorMain, lineCrossPos, 0, 0, layoutNode);
137
+ if (!childRes.ok)
138
+ return childRes;
139
+ children.push(childRes.value);
140
+ }
141
+ else {
142
+ const childCross = planned.cross;
143
+ let childCrossPos = lineCrossPos;
144
+ let forceCross = null;
145
+ const effectiveAlign = resolveEffectiveAlign(child, align);
146
+ if (effectiveAlign === "center") {
147
+ childCrossPos = lineCrossPos + Math.floor((line.cross - childCross) / 2);
148
+ }
149
+ else if (effectiveAlign === "end") {
150
+ childCrossPos = lineCrossPos + (line.cross - childCross);
151
+ }
152
+ else if (effectiveAlign === "stretch") {
153
+ forceCross = line.cross;
154
+ }
155
+ const childRes = needsConstraintPass
156
+ ? layoutNodeOnAxis(axis, child, cursorMain, childCrossPos, Math.max(planned.measureMaxMain, planned.main), crossLimit, layoutNode, planned.main, forceCross)
157
+ : layoutNodeOnAxis(axis, child, cursorMain, childCrossPos, remainingMain, crossLimit, layoutNode, null, forceCross);
158
+ if (!childRes.ok)
159
+ return childRes;
160
+ children.push(childRes.value);
161
+ }
162
+ const hasNextChild = childOrdinal < lineChildCount - 1;
163
+ const extraGap = hasNextChild
164
+ ? computeJustifyExtraGap(justify, extra, lineChildCount, childOrdinal)
165
+ : 0;
166
+ const step = planned.main + (hasNextChild ? gap + extraGap : 0);
167
+ cursorMain = cursorMain + step;
168
+ remainingMain = clampNonNegative(remainingMain - step);
169
+ }
170
+ if (lineIndex < lines.length - 1) {
171
+ lineCrossPos = lineCrossPos + line.cross + gap;
172
+ }
173
+ }
174
+ }
175
+ else if (!needsConstraintPass) {
176
+ const mainSizes = acquireArray(count);
177
+ const crossSizes = acquireArray(count);
178
+ try {
179
+ let rem = mainLimit;
180
+ for (let i = 0; i < count; i++) {
181
+ const child = vnode.children[i];
182
+ if (!child || childHasAbsolutePosition(child))
183
+ continue;
184
+ if (rem === 0)
185
+ continue;
186
+ const childSizeRes = measureNodeOnAxis(axis, child, rem, crossLimit, measureNode);
187
+ if (!childSizeRes.ok)
188
+ return childSizeRes;
189
+ mainSizes[i] = mainFromSize(axis, childSizeRes.value);
190
+ crossSizes[i] = crossFromSize(axis, childSizeRes.value);
191
+ rem = clampNonNegative(rem - (mainSizes[i] ?? 0) - gap);
192
+ }
193
+ let usedMain = 0;
194
+ for (let i = 0; i < count; i++) {
195
+ usedMain += mainSizes[i] ?? 0;
196
+ }
197
+ usedMain += childCount <= 1 ? 0 : gap * (childCount - 1);
198
+ const extra = clampNonNegative(mainLimit - usedMain);
199
+ const startOffset = computeJustifyStartOffset(justify, extra, childCount);
200
+ let cursorMain = mainOrigin + startOffset;
201
+ let remainingMain = clampNonNegative(mainLimit - startOffset);
202
+ let childOrdinal = 0;
203
+ for (let i = 0; i < count; i++) {
204
+ const child = vnode.children[i];
205
+ if (!child || childHasAbsolutePosition(child))
206
+ continue;
207
+ if (remainingMain === 0) {
208
+ const childRes = layoutNodeOnAxis(axis, child, cursorMain, crossOrigin, 0, 0, layoutNode);
209
+ if (!childRes.ok)
210
+ return childRes;
211
+ children.push(childRes.value);
212
+ childOrdinal++;
213
+ continue;
214
+ }
215
+ const childMain = mainSizes[i] ?? 0;
216
+ const childCross = crossSizes[i] ?? 0;
217
+ let childCrossPos = crossOrigin;
218
+ let forceCross = null;
219
+ const effectiveAlign = resolveEffectiveAlign(child, align);
220
+ if (effectiveAlign === "center") {
221
+ childCrossPos = crossOrigin + Math.floor((crossLimit - childCross) / 2);
222
+ }
223
+ else if (effectiveAlign === "end") {
224
+ childCrossPos = crossOrigin + (crossLimit - childCross);
225
+ }
226
+ else if (effectiveAlign === "stretch") {
227
+ forceCross = crossLimit;
228
+ }
229
+ const childRes = layoutNodeOnAxis(axis, child, cursorMain, childCrossPos, remainingMain, crossLimit, layoutNode, null, forceCross);
230
+ if (!childRes.ok)
231
+ return childRes;
232
+ children.push(childRes.value);
233
+ const hasNextChild = childOrdinal < childCount - 1;
234
+ const extraGap = hasNextChild
235
+ ? computeJustifyExtraGap(justify, extra, childCount, childOrdinal)
236
+ : 0;
237
+ const step = childMain + (hasNextChild ? gap + extraGap : 0);
238
+ cursorMain = cursorMain + step;
239
+ remainingMain = clampNonNegative(remainingMain - step);
240
+ childOrdinal++;
241
+ }
242
+ }
243
+ finally {
244
+ releaseArray(mainSizes);
245
+ releaseArray(crossSizes);
246
+ }
247
+ }
248
+ else {
249
+ const parentRect = { x: 0, y: 0, w: cw, h: ch };
250
+ const gapTotal = childCount <= 1 ? 0 : gap * (childCount - 1);
251
+ const availableForChildren = clampNonNegative(mainLimit - gapTotal);
252
+ const planRes = planConstraintMainSizes(axis, vnode.children, availableForChildren, mainLimit, crossLimit, parentRect, measureNode, true);
253
+ if (!planRes.ok)
254
+ return planRes;
255
+ const { mainSizes, measureMaxMain, precomputedSizes } = planRes.value;
256
+ const crossPlanRes = planConstraintCrossSizes(axis, vnode.children, mainSizes, measureMaxMain, crossLimit, align, measureNode, precomputedSizes);
257
+ if (!crossPlanRes.ok)
258
+ return crossPlanRes;
259
+ const plannedSizes = crossPlanRes.value.sizes;
260
+ const plannedCrossSizes = crossPlanRes.value.crossSizes;
261
+ let usedMain = 0;
262
+ for (let i = 0; i < mainSizes.length; i++) {
263
+ usedMain += mainSizes[i] ?? 0;
264
+ }
265
+ usedMain += childCount <= 1 ? 0 : gap * (childCount - 1);
266
+ const extra = clampNonNegative(mainLimit - usedMain);
267
+ const startOffset = computeJustifyStartOffset(justify, extra, childCount);
268
+ let cursorMain = mainOrigin + startOffset;
269
+ let remainingMain = clampNonNegative(mainLimit - startOffset);
270
+ let childOrdinal = 0;
271
+ for (let i = 0; i < count; i++) {
272
+ const child = vnode.children[i];
273
+ if (!child || childHasAbsolutePosition(child))
274
+ continue;
275
+ if (remainingMain === 0) {
276
+ let precomputed = plannedSizes[i] ?? null;
277
+ if (precomputed == null) {
278
+ const zeroSizeRes = measureNodeOnAxis(axis, child, 0, 0, measureNode);
279
+ if (!zeroSizeRes.ok)
280
+ return zeroSizeRes;
281
+ precomputed = zeroSizeRes.value;
282
+ plannedSizes[i] = precomputed;
283
+ }
284
+ const childRes = layoutNodeOnAxis(axis, child, cursorMain, crossOrigin, 0, 0, layoutNode, null, null, precomputed);
285
+ if (!childRes.ok)
286
+ return childRes;
287
+ children.push(childRes.value);
288
+ maybePruneRemainingDirtySiblings(vnode.children, i, child, childRes.value);
289
+ childOrdinal++;
290
+ continue;
291
+ }
292
+ const main = mainSizes[i] ?? 0;
293
+ const mm = measureMaxMain[i] ?? 0;
294
+ let childSize = plannedSizes[i] ?? null;
295
+ if (childSize == null) {
296
+ const childSizeRes = measureNodeOnAxis(axis, child, mm, crossLimit, measureNode);
297
+ if (!childSizeRes.ok)
298
+ return childSizeRes;
299
+ childSize = childSizeRes.value;
300
+ plannedSizes[i] = childSize;
301
+ }
302
+ const childCross = plannedCrossSizes[i] ?? crossFromSize(axis, childSize);
303
+ let childCrossPos = crossOrigin;
304
+ let forceCross = null;
305
+ const effectiveAlign = resolveEffectiveAlign(child, align);
306
+ if (effectiveAlign === "center") {
307
+ childCrossPos = crossOrigin + Math.floor((crossLimit - childCross) / 2);
308
+ }
309
+ else if (effectiveAlign === "end") {
310
+ childCrossPos = crossOrigin + (crossLimit - childCross);
311
+ }
312
+ else if (effectiveAlign === "stretch") {
313
+ forceCross = crossLimit;
314
+ }
315
+ const childRes = layoutNodeOnAxis(axis, child, cursorMain, childCrossPos, Math.max(mm, main), crossLimit, layoutNode, main, forceCross, childSize);
316
+ if (!childRes.ok)
317
+ return childRes;
318
+ children.push(childRes.value);
319
+ maybePruneRemainingDirtySiblings(vnode.children, i, child, childRes.value);
320
+ const hasNextChild = childOrdinal < childCount - 1;
321
+ const extraGap = hasNextChild
322
+ ? computeJustifyExtraGap(justify, extra, childCount, childOrdinal)
323
+ : 0;
324
+ const step = main + (hasNextChild ? gap + extraGap : 0);
325
+ cursorMain = cursorMain + step;
326
+ remainingMain = clampNonNegative(remainingMain - step);
327
+ childOrdinal++;
328
+ }
329
+ }
330
+ const contentRect = { x: cx, y: cy, w: cw, h: ch };
331
+ for (let i = 0; i < count; i++) {
332
+ const child = vnode.children[i];
333
+ if (!child || !childHasAbsolutePosition(child))
334
+ continue;
335
+ const naturalRes = measureNode(child, cw, ch, axis.axis);
336
+ if (!naturalRes.ok)
337
+ return naturalRes;
338
+ const absProps = (child.props ?? {});
339
+ const absRect = resolveAbsolutePosition(absProps, contentRect, naturalRes.value);
340
+ const childRes = layoutNode(child, absRect.x, absRect.y, absRect.w, absRect.h, axis.axis, absRect.w, absRect.h, naturalRes.value);
341
+ if (!childRes.ok)
342
+ return childRes;
343
+ children.push(childRes.value);
344
+ }
345
+ const flowChildren = children.slice(0, childCount);
346
+ const absChildren = children.slice(childCount);
347
+ const orderedChildren = [];
348
+ let flowIndex = 0;
349
+ let absIndex = 0;
350
+ for (let i = 0; i < count; i++) {
351
+ const child = vnode.children[i];
352
+ if (!child)
353
+ continue;
354
+ if (childHasAbsolutePosition(child)) {
355
+ const absChild = absChildren[absIndex];
356
+ absIndex++;
357
+ if (absChild)
358
+ orderedChildren.push(absChild);
359
+ continue;
360
+ }
361
+ const flowChild = flowChildren[flowIndex];
362
+ flowIndex++;
363
+ if (flowChild)
364
+ orderedChildren.push(flowChild);
365
+ }
366
+ const { contentWidth, contentHeight } = measureContentBounds(orderedChildren, cx, cy);
367
+ const overflow = resolveOverflow(propsRes.value, cw, ch, contentWidth, contentHeight);
368
+ const shiftedChildren = shiftLayoutChildren(orderedChildren, -overflow.metadata.scrollX, -overflow.metadata.scrollY);
369
+ return ok({
370
+ vnode,
371
+ rect: { x: stackX, y: stackY, w: stackW, h: stackH },
372
+ children: Object.freeze(shiftedChildren),
373
+ meta: overflow.metadata,
374
+ });
375
+ }
376
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../../src/layout/kinds/stackParts/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Size } from "../../types.js";
2
+ import type { LayoutResult } from "../../validateProps.js";
3
+ import type { AxisConfig } from "./axis.js";
4
+ import type { MeasureNodeFn, StackVNode } from "./shared.js";
5
+ export declare function measureStack(axis: AxisConfig, vnode: StackVNode, maxW: number, maxH: number, measureNode: MeasureNodeFn): LayoutResult<Size>;
6
+ //# sourceMappingURL=measure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../../../../src/layout/kinds/stackParts/measure.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAQ,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAU7D,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,aAAa,GACzB,YAAY,CAAC,IAAI,CAAC,CAkPpB"}
@@ -0,0 +1,212 @@
1
+ import { resolveLayoutConstraints } from "../../constraints.js";
2
+ import { clampNonNegative, clampWithin, toFiniteMax } from "../../engine/bounds.js";
3
+ import { childHasAbsolutePosition, childHasFlexInMainAxis } from "../../engine/guards.js";
4
+ import { ok } from "../../engine/result.js";
5
+ import { resolveMargin as resolveMarginProps, resolveSpacing as resolveSpacingProps, } from "../../spacing.js";
6
+ import { validateStackProps } from "../../validateProps.js";
7
+ import { crossFromSize, crossFromWH, mainFromSize, mainFromWH, toWH } from "./axis.js";
8
+ import { planConstraintCrossSizes, planConstraintMainSizes } from "./constraintPlan.js";
9
+ import { childHasAdvancedFlexProps, countNonEmptyChildren, isWrapEnabled, measureNodeOnAxis, resolveEffectiveAlign, } from "./shared.js";
10
+ import { measureWrapConstraintLine, probeWrapChildMain } from "./wrap.js";
11
+ export function measureStack(axis, vnode, maxW, maxH, measureNode) {
12
+ const propsRes = validateStackProps(axis.axis, vnode.props);
13
+ if (!propsRes.ok)
14
+ return propsRes;
15
+ const { gap, align } = propsRes.value;
16
+ const spacing = resolveSpacingProps(propsRes.value);
17
+ const margin = resolveMarginProps(propsRes.value);
18
+ const padX = spacing.left + spacing.right;
19
+ const padY = spacing.top + spacing.bottom;
20
+ const marginX = margin.left + margin.right;
21
+ const marginY = margin.top + margin.bottom;
22
+ const innerMaxW = clampNonNegative(maxW - marginX);
23
+ const innerMaxH = clampNonNegative(maxH - marginY);
24
+ const self = resolveLayoutConstraints(propsRes.value, {
25
+ x: 0,
26
+ y: 0,
27
+ w: innerMaxW,
28
+ h: innerMaxH,
29
+ }, axis.axis);
30
+ const maxWCap = clampNonNegative(Math.min(innerMaxW, toFiniteMax(self.maxWidth, innerMaxW)));
31
+ const maxHCap = clampNonNegative(Math.min(innerMaxH, toFiniteMax(self.maxHeight, innerMaxH)));
32
+ const minW = Math.min(self.minWidth, maxWCap);
33
+ const minH = Math.min(self.minHeight, maxHCap);
34
+ const forcedW = self.width === null ? null : clampWithin(self.width, minW, maxWCap);
35
+ const forcedH = self.height === null ? null : clampWithin(self.height, minH, maxHCap);
36
+ const forcedMain = axis.axis === "row" ? forcedW : forcedH;
37
+ const forcedCross = axis.axis === "row" ? forcedH : forcedW;
38
+ const minMain = axis.axis === "row" ? minW : minH;
39
+ const minCross = axis.axis === "row" ? minH : minW;
40
+ const maxMainCap = axis.axis === "row" ? maxWCap : maxHCap;
41
+ const maxCrossCap = axis.axis === "row" ? maxHCap : maxWCap;
42
+ const padMain = axis.axis === "row" ? padX : padY;
43
+ const padCross = axis.axis === "row" ? padY : padX;
44
+ const hasFlexInMainAxis = vnode.children.some((c) => !childHasAbsolutePosition(c) && childHasFlexInMainAxis(c, axis.axis));
45
+ const hasAdvancedFlexChildren = vnode.children.some((c) => !childHasAbsolutePosition(c) && childHasAdvancedFlexProps(c));
46
+ const needsConstraintPass = hasFlexInMainAxis || hasAdvancedFlexChildren;
47
+ const childCount = countNonEmptyChildren(vnode.children);
48
+ const outerWLimit = forcedW ?? maxWCap;
49
+ const outerHLimit = forcedH ?? maxHCap;
50
+ const cw = clampNonNegative(outerWLimit - padX);
51
+ const ch = clampNonNegative(outerHLimit - padY);
52
+ const mainLimit = mainFromWH(axis, cw, ch);
53
+ const crossLimit = crossFromWH(axis, cw, ch);
54
+ const finalizeSize = (contentMain, contentCross) => {
55
+ const chosenMain = forcedMain ?? Math.min(maxMainCap, padMain + contentMain);
56
+ const chosenCross = forcedCross ?? Math.min(maxCrossCap, padCross + contentCross);
57
+ const innerMain = clampWithin(chosenMain, minMain, maxMainCap);
58
+ const innerCross = clampWithin(chosenCross, minCross, maxCrossCap);
59
+ const { w: innerW, h: innerH } = toWH(axis, innerMain, innerCross);
60
+ return ok({
61
+ w: clampNonNegative(Math.min(maxW, innerW + marginX)),
62
+ h: clampNonNegative(Math.min(maxH, innerH + marginY)),
63
+ });
64
+ };
65
+ const wrap = isWrapEnabled(vnode.props);
66
+ if (wrap) {
67
+ let maxLineMain = 0;
68
+ let totalCross = 0;
69
+ let lineCount = 0;
70
+ if (needsConstraintPass) {
71
+ const parentRect = { x: 0, y: 0, w: cw, h: ch };
72
+ const lineChildren = [];
73
+ let lineProbeMain = 0;
74
+ for (let i = 0; i < vnode.children.length; i++) {
75
+ const child = vnode.children[i];
76
+ if (!child || childHasAbsolutePosition(child))
77
+ continue;
78
+ const probeMainRes = probeWrapChildMain(axis, child, cw, ch, parentRect, measureNode);
79
+ if (!probeMainRes.ok)
80
+ return probeMainRes;
81
+ const probeMain = probeMainRes.value;
82
+ const wouldOverflow = lineChildren.length > 0 && lineProbeMain + gap + probeMain > mainLimit;
83
+ if (wouldOverflow) {
84
+ const lineRes = measureWrapConstraintLine(axis, lineChildren, cw, ch, gap, parentRect, measureNode);
85
+ if (!lineRes.ok)
86
+ return lineRes;
87
+ if (lineCount > 0)
88
+ totalCross += gap;
89
+ totalCross += lineRes.value.cross;
90
+ if (lineRes.value.main > maxLineMain)
91
+ maxLineMain = lineRes.value.main;
92
+ lineCount++;
93
+ lineChildren.length = 0;
94
+ lineProbeMain = 0;
95
+ }
96
+ if (lineChildren.length === 0)
97
+ lineProbeMain = probeMain;
98
+ else
99
+ lineProbeMain += gap + probeMain;
100
+ lineChildren.push(child);
101
+ }
102
+ if (lineChildren.length > 0) {
103
+ const lineRes = measureWrapConstraintLine(axis, lineChildren, cw, ch, gap, parentRect, measureNode);
104
+ if (!lineRes.ok)
105
+ return lineRes;
106
+ if (lineCount > 0)
107
+ totalCross += gap;
108
+ totalCross += lineRes.value.cross;
109
+ if (lineRes.value.main > maxLineMain)
110
+ maxLineMain = lineRes.value.main;
111
+ }
112
+ }
113
+ else {
114
+ let lineMain = 0;
115
+ let lineCross = 0;
116
+ let lineItems = 0;
117
+ for (let i = 0; i < vnode.children.length; i++) {
118
+ const child = vnode.children[i];
119
+ if (!child || childHasAbsolutePosition(child))
120
+ continue;
121
+ const childSizeRes = measureNode(child, cw, ch, axis.axis);
122
+ if (!childSizeRes.ok)
123
+ return childSizeRes;
124
+ const childMain = mainFromSize(axis, childSizeRes.value);
125
+ const childCross = crossFromSize(axis, childSizeRes.value);
126
+ const wouldOverflow = lineItems > 0 && lineMain + gap + childMain > mainLimit;
127
+ if (wouldOverflow) {
128
+ if (lineCount > 0)
129
+ totalCross += gap;
130
+ totalCross += lineCross;
131
+ if (lineMain > maxLineMain)
132
+ maxLineMain = lineMain;
133
+ lineCount++;
134
+ lineMain = 0;
135
+ lineCross = 0;
136
+ lineItems = 0;
137
+ }
138
+ if (lineItems === 0)
139
+ lineMain = childMain;
140
+ else
141
+ lineMain += gap + childMain;
142
+ if (childCross > lineCross)
143
+ lineCross = childCross;
144
+ lineItems++;
145
+ }
146
+ if (lineItems > 0) {
147
+ if (lineCount > 0)
148
+ totalCross += gap;
149
+ totalCross += lineCross;
150
+ if (lineMain > maxLineMain)
151
+ maxLineMain = lineMain;
152
+ }
153
+ }
154
+ return finalizeSize(maxLineMain, totalCross);
155
+ }
156
+ let maxChildCross = 0;
157
+ let usedMainInConstraintPass = 0;
158
+ if (needsConstraintPass) {
159
+ const parentRect = { x: 0, y: 0, w: cw, h: ch };
160
+ const gapTotal = childCount <= 1 ? 0 : gap * (childCount - 1);
161
+ const availableForChildren = clampNonNegative(mainLimit - gapTotal);
162
+ const planRes = planConstraintMainSizes(axis, vnode.children, availableForChildren, mainLimit, crossLimit, parentRect, measureNode, false);
163
+ if (!planRes.ok)
164
+ return planRes;
165
+ const { mainSizes, measureMaxMain } = planRes.value;
166
+ const crossPlanRes = planConstraintCrossSizes(axis, vnode.children, mainSizes, measureMaxMain, crossLimit, align, measureNode);
167
+ if (!crossPlanRes.ok)
168
+ return crossPlanRes;
169
+ maxChildCross = crossPlanRes.value.maxCross;
170
+ for (let i = 0; i < mainSizes.length; i++) {
171
+ usedMainInConstraintPass += mainSizes[i] ?? 0;
172
+ }
173
+ usedMainInConstraintPass += childCount <= 1 ? 0 : gap * (childCount - 1);
174
+ }
175
+ else {
176
+ let remainingMain = mainLimit;
177
+ let cursorMain = 0;
178
+ let laidOutCount = 0;
179
+ for (const child of vnode.children) {
180
+ if (!child || childHasAbsolutePosition(child))
181
+ continue;
182
+ if (remainingMain === 0) {
183
+ // Still validate subtree deterministically, even if it gets assigned {w:0,h:0}.
184
+ const zeroRes = measureNodeOnAxis(axis, child, 0, 0, measureNode);
185
+ if (!zeroRes.ok)
186
+ return zeroRes;
187
+ const zeroCross = crossFromSize(axis, zeroRes.value);
188
+ if (zeroCross > 0)
189
+ laidOutCount++;
190
+ if (zeroCross > maxChildCross)
191
+ maxChildCross = zeroCross;
192
+ continue;
193
+ }
194
+ const childSizeRes = measureNodeOnAxis(axis, child, remainingMain, crossLimit, measureNode);
195
+ if (!childSizeRes.ok)
196
+ return childSizeRes;
197
+ const childMain = mainFromSize(axis, childSizeRes.value);
198
+ const effectiveAlign = resolveEffectiveAlign(child, align);
199
+ const childCross = effectiveAlign === "stretch" ? crossLimit : crossFromSize(axis, childSizeRes.value);
200
+ cursorMain = cursorMain + childMain + gap;
201
+ remainingMain = clampNonNegative(remainingMain - childMain - gap);
202
+ if (childMain > 0 || childCross > 0)
203
+ laidOutCount++;
204
+ if (childCross > maxChildCross)
205
+ maxChildCross = childCross;
206
+ }
207
+ const usedMainExcludingTrailingGap = laidOutCount === 0 ? 0 : clampNonNegative(cursorMain - gap);
208
+ return finalizeSize(Math.min(mainLimit, usedMainExcludingTrailingGap), maxChildCross);
209
+ }
210
+ return finalizeSize(Math.min(mainLimit, usedMainInConstraintPass), maxChildCross);
211
+ }
212
+ //# sourceMappingURL=measure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure.js","sourceRoot":"","sources":["../../../../src/layout/kinds/stackParts/measure.ts"],"names":[],"mappings":"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"}