@kurot/ui 1.1.7

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 (326) hide show
  1. package/README.md +258 -0
  2. package/dist/index.d.ts +8 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +8 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/kurot/binding/Binding.d.ts +38 -0
  7. package/dist/kurot/binding/Binding.d.ts.map +1 -0
  8. package/dist/kurot/binding/Binding.js +88 -0
  9. package/dist/kurot/binding/Binding.js.map +1 -0
  10. package/dist/kurot/binding/Watcher.d.ts +57 -0
  11. package/dist/kurot/binding/Watcher.d.ts.map +1 -0
  12. package/dist/kurot/binding/Watcher.js +119 -0
  13. package/dist/kurot/binding/Watcher.js.map +1 -0
  14. package/dist/kurot/binding/index.d.ts +3 -0
  15. package/dist/kurot/binding/index.d.ts.map +1 -0
  16. package/dist/kurot/binding/index.js +3 -0
  17. package/dist/kurot/binding/index.js.map +1 -0
  18. package/dist/kurot/collections/ArrayCollection.d.ts +56 -0
  19. package/dist/kurot/collections/ArrayCollection.d.ts.map +1 -0
  20. package/dist/kurot/collections/ArrayCollection.js +143 -0
  21. package/dist/kurot/collections/ArrayCollection.js.map +1 -0
  22. package/dist/kurot/collections/ICollection.d.ts +24 -0
  23. package/dist/kurot/collections/ICollection.d.ts.map +1 -0
  24. package/dist/kurot/collections/ICollection.js +2 -0
  25. package/dist/kurot/collections/ICollection.js.map +1 -0
  26. package/dist/kurot/collections/index.d.ts +3 -0
  27. package/dist/kurot/collections/index.d.ts.map +1 -0
  28. package/dist/kurot/collections/index.js +2 -0
  29. package/dist/kurot/collections/index.js.map +1 -0
  30. package/dist/kurot/components/Animation.d.ts +34 -0
  31. package/dist/kurot/components/Animation.d.ts.map +1 -0
  32. package/dist/kurot/components/Animation.js +100 -0
  33. package/dist/kurot/components/Animation.js.map +1 -0
  34. package/dist/kurot/components/Button.d.ts +61 -0
  35. package/dist/kurot/components/Button.d.ts.map +1 -0
  36. package/dist/kurot/components/Button.js +176 -0
  37. package/dist/kurot/components/Button.js.map +1 -0
  38. package/dist/kurot/components/CheckBox.d.ts +11 -0
  39. package/dist/kurot/components/CheckBox.d.ts.map +1 -0
  40. package/dist/kurot/components/CheckBox.js +13 -0
  41. package/dist/kurot/components/CheckBox.js.map +1 -0
  42. package/dist/kurot/components/ComboBox.d.ts +93 -0
  43. package/dist/kurot/components/ComboBox.d.ts.map +1 -0
  44. package/dist/kurot/components/ComboBox.js +307 -0
  45. package/dist/kurot/components/ComboBox.js.map +1 -0
  46. package/dist/kurot/components/Component.d.ts +203 -0
  47. package/dist/kurot/components/Component.d.ts.map +1 -0
  48. package/dist/kurot/components/Component.js +522 -0
  49. package/dist/kurot/components/Component.js.map +1 -0
  50. package/dist/kurot/components/DataGroup.d.ts +90 -0
  51. package/dist/kurot/components/DataGroup.d.ts.map +1 -0
  52. package/dist/kurot/components/DataGroup.js +483 -0
  53. package/dist/kurot/components/DataGroup.js.map +1 -0
  54. package/dist/kurot/components/EditableText.d.ts +44 -0
  55. package/dist/kurot/components/EditableText.d.ts.map +1 -0
  56. package/dist/kurot/components/EditableText.js +126 -0
  57. package/dist/kurot/components/EditableText.js.map +1 -0
  58. package/dist/kurot/components/Group.d.ts +133 -0
  59. package/dist/kurot/components/Group.d.ts.map +1 -0
  60. package/dist/kurot/components/Group.js +454 -0
  61. package/dist/kurot/components/Group.js.map +1 -0
  62. package/dist/kurot/components/HScrollBar.d.ts +13 -0
  63. package/dist/kurot/components/HScrollBar.d.ts.map +1 -0
  64. package/dist/kurot/components/HScrollBar.js +55 -0
  65. package/dist/kurot/components/HScrollBar.js.map +1 -0
  66. package/dist/kurot/components/HSlider.d.ts +17 -0
  67. package/dist/kurot/components/HSlider.d.ts.map +1 -0
  68. package/dist/kurot/components/HSlider.js +48 -0
  69. package/dist/kurot/components/HSlider.js.map +1 -0
  70. package/dist/kurot/components/Image.d.ts +35 -0
  71. package/dist/kurot/components/Image.d.ts.map +1 -0
  72. package/dist/kurot/components/Image.js +141 -0
  73. package/dist/kurot/components/Image.js.map +1 -0
  74. package/dist/kurot/components/ItemRenderer.d.ts +42 -0
  75. package/dist/kurot/components/ItemRenderer.d.ts.map +1 -0
  76. package/dist/kurot/components/ItemRenderer.js +117 -0
  77. package/dist/kurot/components/ItemRenderer.js.map +1 -0
  78. package/dist/kurot/components/Label.d.ts +49 -0
  79. package/dist/kurot/components/Label.d.ts.map +1 -0
  80. package/dist/kurot/components/Label.js +193 -0
  81. package/dist/kurot/components/Label.js.map +1 -0
  82. package/dist/kurot/components/List.d.ts +16 -0
  83. package/dist/kurot/components/List.d.ts.map +1 -0
  84. package/dist/kurot/components/List.js +34 -0
  85. package/dist/kurot/components/List.js.map +1 -0
  86. package/dist/kurot/components/ListBase.d.ts +61 -0
  87. package/dist/kurot/components/ListBase.d.ts.map +1 -0
  88. package/dist/kurot/components/ListBase.js +202 -0
  89. package/dist/kurot/components/ListBase.js.map +1 -0
  90. package/dist/kurot/components/Panel.d.ts +53 -0
  91. package/dist/kurot/components/Panel.d.ts.map +1 -0
  92. package/dist/kurot/components/Panel.js +145 -0
  93. package/dist/kurot/components/Panel.js.map +1 -0
  94. package/dist/kurot/components/ProgressBar.d.ts +48 -0
  95. package/dist/kurot/components/ProgressBar.d.ts.map +1 -0
  96. package/dist/kurot/components/ProgressBar.js +180 -0
  97. package/dist/kurot/components/ProgressBar.js.map +1 -0
  98. package/dist/kurot/components/RadioButton.d.ts +86 -0
  99. package/dist/kurot/components/RadioButton.d.ts.map +1 -0
  100. package/dist/kurot/components/RadioButton.js +246 -0
  101. package/dist/kurot/components/RadioButton.js.map +1 -0
  102. package/dist/kurot/components/Range.d.ts +41 -0
  103. package/dist/kurot/components/Range.d.ts.map +1 -0
  104. package/dist/kurot/components/Range.js +144 -0
  105. package/dist/kurot/components/Range.js.map +1 -0
  106. package/dist/kurot/components/Rect.d.ts +33 -0
  107. package/dist/kurot/components/Rect.d.ts.map +1 -0
  108. package/dist/kurot/components/Rect.js +125 -0
  109. package/dist/kurot/components/Rect.js.map +1 -0
  110. package/dist/kurot/components/ScrollBarBase.d.ts +27 -0
  111. package/dist/kurot/components/ScrollBarBase.d.ts.map +1 -0
  112. package/dist/kurot/components/ScrollBarBase.js +50 -0
  113. package/dist/kurot/components/ScrollBarBase.js.map +1 -0
  114. package/dist/kurot/components/Scroller.d.ts +82 -0
  115. package/dist/kurot/components/Scroller.d.ts.map +1 -0
  116. package/dist/kurot/components/Scroller.js +416 -0
  117. package/dist/kurot/components/Scroller.js.map +1 -0
  118. package/dist/kurot/components/Skin.d.ts +64 -0
  119. package/dist/kurot/components/Skin.d.ts.map +1 -0
  120. package/dist/kurot/components/Skin.js +136 -0
  121. package/dist/kurot/components/Skin.js.map +1 -0
  122. package/dist/kurot/components/SliderBase.d.ts +60 -0
  123. package/dist/kurot/components/SliderBase.d.ts.map +1 -0
  124. package/dist/kurot/components/SliderBase.js +197 -0
  125. package/dist/kurot/components/SliderBase.js.map +1 -0
  126. package/dist/kurot/components/TabBar.d.ts +29 -0
  127. package/dist/kurot/components/TabBar.d.ts.map +1 -0
  128. package/dist/kurot/components/TabBar.js +92 -0
  129. package/dist/kurot/components/TabBar.js.map +1 -0
  130. package/dist/kurot/components/TextInput.d.ts +49 -0
  131. package/dist/kurot/components/TextInput.d.ts.map +1 -0
  132. package/dist/kurot/components/TextInput.js +157 -0
  133. package/dist/kurot/components/TextInput.js.map +1 -0
  134. package/dist/kurot/components/ToggleButton.d.ts +11 -0
  135. package/dist/kurot/components/ToggleButton.d.ts.map +1 -0
  136. package/dist/kurot/components/ToggleButton.js +14 -0
  137. package/dist/kurot/components/ToggleButton.js.map +1 -0
  138. package/dist/kurot/components/ToggleSwitch.d.ts +10 -0
  139. package/dist/kurot/components/ToggleSwitch.d.ts.map +1 -0
  140. package/dist/kurot/components/ToggleSwitch.js +10 -0
  141. package/dist/kurot/components/ToggleSwitch.js.map +1 -0
  142. package/dist/kurot/components/TouchScroll.d.ts +38 -0
  143. package/dist/kurot/components/TouchScroll.d.ts.map +1 -0
  144. package/dist/kurot/components/TouchScroll.js +133 -0
  145. package/dist/kurot/components/TouchScroll.js.map +1 -0
  146. package/dist/kurot/components/UILayer.d.ts +14 -0
  147. package/dist/kurot/components/UILayer.d.ts.map +1 -0
  148. package/dist/kurot/components/UILayer.js +38 -0
  149. package/dist/kurot/components/UILayer.js.map +1 -0
  150. package/dist/kurot/components/VScrollBar.d.ts +13 -0
  151. package/dist/kurot/components/VScrollBar.d.ts.map +1 -0
  152. package/dist/kurot/components/VScrollBar.js +55 -0
  153. package/dist/kurot/components/VScrollBar.js.map +1 -0
  154. package/dist/kurot/components/VSlider.d.ts +17 -0
  155. package/dist/kurot/components/VSlider.d.ts.map +1 -0
  156. package/dist/kurot/components/VSlider.js +49 -0
  157. package/dist/kurot/components/VSlider.js.map +1 -0
  158. package/dist/kurot/components/ViewStack.d.ts +42 -0
  159. package/dist/kurot/components/ViewStack.d.ts.map +1 -0
  160. package/dist/kurot/components/ViewStack.js +160 -0
  161. package/dist/kurot/components/ViewStack.js.map +1 -0
  162. package/dist/kurot/components/index.d.ts +34 -0
  163. package/dist/kurot/components/index.d.ts.map +1 -0
  164. package/dist/kurot/components/index.js +34 -0
  165. package/dist/kurot/components/index.js.map +1 -0
  166. package/dist/kurot/core/AssetAdapterRegistry.d.ts +4 -0
  167. package/dist/kurot/core/AssetAdapterRegistry.d.ts.map +1 -0
  168. package/dist/kurot/core/AssetAdapterRegistry.js +9 -0
  169. package/dist/kurot/core/AssetAdapterRegistry.js.map +1 -0
  170. package/dist/kurot/core/DefaultAssetAdapter.d.ts +10 -0
  171. package/dist/kurot/core/DefaultAssetAdapter.d.ts.map +1 -0
  172. package/dist/kurot/core/DefaultAssetAdapter.js +22 -0
  173. package/dist/kurot/core/DefaultAssetAdapter.js.map +1 -0
  174. package/dist/kurot/core/DefaultThemeAdapter.d.ts +8 -0
  175. package/dist/kurot/core/DefaultThemeAdapter.d.ts.map +1 -0
  176. package/dist/kurot/core/DefaultThemeAdapter.js +27 -0
  177. package/dist/kurot/core/DefaultThemeAdapter.js.map +1 -0
  178. package/dist/kurot/core/Direction.d.ts +10 -0
  179. package/dist/kurot/core/Direction.d.ts.map +1 -0
  180. package/dist/kurot/core/Direction.js +10 -0
  181. package/dist/kurot/core/Direction.js.map +1 -0
  182. package/dist/kurot/core/IAssetAdapter.d.ts +15 -0
  183. package/dist/kurot/core/IAssetAdapter.d.ts.map +1 -0
  184. package/dist/kurot/core/IAssetAdapter.js +2 -0
  185. package/dist/kurot/core/IAssetAdapter.js.map +1 -0
  186. package/dist/kurot/core/IDisplayText.d.ts +12 -0
  187. package/dist/kurot/core/IDisplayText.d.ts.map +1 -0
  188. package/dist/kurot/core/IDisplayText.js +2 -0
  189. package/dist/kurot/core/IDisplayText.js.map +1 -0
  190. package/dist/kurot/core/IItemRenderer.d.ts +19 -0
  191. package/dist/kurot/core/IItemRenderer.d.ts.map +1 -0
  192. package/dist/kurot/core/IItemRenderer.js +2 -0
  193. package/dist/kurot/core/IItemRenderer.js.map +1 -0
  194. package/dist/kurot/core/IThemeAdapter.d.ts +14 -0
  195. package/dist/kurot/core/IThemeAdapter.d.ts.map +1 -0
  196. package/dist/kurot/core/IThemeAdapter.js +2 -0
  197. package/dist/kurot/core/IThemeAdapter.js.map +1 -0
  198. package/dist/kurot/core/IUIComponent.d.ts +63 -0
  199. package/dist/kurot/core/IUIComponent.d.ts.map +1 -0
  200. package/dist/kurot/core/IUIComponent.js +2 -0
  201. package/dist/kurot/core/IUIComponent.js.map +1 -0
  202. package/dist/kurot/core/IViewport.d.ts +12 -0
  203. package/dist/kurot/core/IViewport.d.ts.map +1 -0
  204. package/dist/kurot/core/IViewport.js +2 -0
  205. package/dist/kurot/core/IViewport.js.map +1 -0
  206. package/dist/kurot/core/ScrollPolicy.d.ts +9 -0
  207. package/dist/kurot/core/ScrollPolicy.d.ts.map +1 -0
  208. package/dist/kurot/core/ScrollPolicy.js +9 -0
  209. package/dist/kurot/core/ScrollPolicy.js.map +1 -0
  210. package/dist/kurot/core/Theme.d.ts +53 -0
  211. package/dist/kurot/core/Theme.d.ts.map +1 -0
  212. package/dist/kurot/core/Theme.js +169 -0
  213. package/dist/kurot/core/Theme.js.map +1 -0
  214. package/dist/kurot/core/UIComponent.d.ts +2 -0
  215. package/dist/kurot/core/UIComponent.d.ts.map +1 -0
  216. package/dist/kurot/core/UIComponent.js +4 -0
  217. package/dist/kurot/core/UIComponent.js.map +1 -0
  218. package/dist/kurot/core/UIState.d.ts +84 -0
  219. package/dist/kurot/core/UIState.d.ts.map +1 -0
  220. package/dist/kurot/core/UIState.js +512 -0
  221. package/dist/kurot/core/UIState.js.map +1 -0
  222. package/dist/kurot/core/Validator.d.ts +46 -0
  223. package/dist/kurot/core/Validator.d.ts.map +1 -0
  224. package/dist/kurot/core/Validator.js +368 -0
  225. package/dist/kurot/core/Validator.js.map +1 -0
  226. package/dist/kurot/core/index.d.ts +17 -0
  227. package/dist/kurot/core/index.d.ts.map +1 -0
  228. package/dist/kurot/core/index.js +10 -0
  229. package/dist/kurot/core/index.js.map +1 -0
  230. package/dist/kurot/events/CollectionEvent.d.ts +22 -0
  231. package/dist/kurot/events/CollectionEvent.d.ts.map +1 -0
  232. package/dist/kurot/events/CollectionEvent.js +37 -0
  233. package/dist/kurot/events/CollectionEvent.js.map +1 -0
  234. package/dist/kurot/events/ItemTapEvent.d.ts +11 -0
  235. package/dist/kurot/events/ItemTapEvent.d.ts.map +1 -0
  236. package/dist/kurot/events/ItemTapEvent.js +24 -0
  237. package/dist/kurot/events/ItemTapEvent.js.map +1 -0
  238. package/dist/kurot/events/PropertyEvent.d.ts +8 -0
  239. package/dist/kurot/events/PropertyEvent.d.ts.map +1 -0
  240. package/dist/kurot/events/PropertyEvent.js +20 -0
  241. package/dist/kurot/events/PropertyEvent.js.map +1 -0
  242. package/dist/kurot/events/ScrollerThrowEvent.d.ts +17 -0
  243. package/dist/kurot/events/ScrollerThrowEvent.d.ts.map +1 -0
  244. package/dist/kurot/events/ScrollerThrowEvent.js +22 -0
  245. package/dist/kurot/events/ScrollerThrowEvent.js.map +1 -0
  246. package/dist/kurot/events/UIEvent.d.ts +29 -0
  247. package/dist/kurot/events/UIEvent.d.ts.map +1 -0
  248. package/dist/kurot/events/UIEvent.js +39 -0
  249. package/dist/kurot/events/UIEvent.js.map +1 -0
  250. package/dist/kurot/events/index.d.ts +6 -0
  251. package/dist/kurot/events/index.d.ts.map +1 -0
  252. package/dist/kurot/events/index.js +6 -0
  253. package/dist/kurot/events/index.js.map +1 -0
  254. package/dist/kurot/layouts/BasicLayout.d.ts +13 -0
  255. package/dist/kurot/layouts/BasicLayout.d.ts.map +1 -0
  256. package/dist/kurot/layouts/BasicLayout.js +146 -0
  257. package/dist/kurot/layouts/BasicLayout.js.map +1 -0
  258. package/dist/kurot/layouts/ColumnAlign.d.ts +9 -0
  259. package/dist/kurot/layouts/ColumnAlign.d.ts.map +1 -0
  260. package/dist/kurot/layouts/ColumnAlign.js +9 -0
  261. package/dist/kurot/layouts/ColumnAlign.js.map +1 -0
  262. package/dist/kurot/layouts/HorizontalLayout.d.ts +23 -0
  263. package/dist/kurot/layouts/HorizontalLayout.d.ts.map +1 -0
  264. package/dist/kurot/layouts/HorizontalLayout.js +405 -0
  265. package/dist/kurot/layouts/HorizontalLayout.js.map +1 -0
  266. package/dist/kurot/layouts/ILayoutTarget.d.ts +25 -0
  267. package/dist/kurot/layouts/ILayoutTarget.d.ts.map +1 -0
  268. package/dist/kurot/layouts/ILayoutTarget.js +2 -0
  269. package/dist/kurot/layouts/ILayoutTarget.js.map +1 -0
  270. package/dist/kurot/layouts/JustifyAlign.d.ts +8 -0
  271. package/dist/kurot/layouts/JustifyAlign.d.ts.map +1 -0
  272. package/dist/kurot/layouts/JustifyAlign.js +8 -0
  273. package/dist/kurot/layouts/JustifyAlign.js.map +1 -0
  274. package/dist/kurot/layouts/LayoutBase.d.ts +23 -0
  275. package/dist/kurot/layouts/LayoutBase.d.ts.map +1 -0
  276. package/dist/kurot/layouts/LayoutBase.js +45 -0
  277. package/dist/kurot/layouts/LayoutBase.js.map +1 -0
  278. package/dist/kurot/layouts/LinearLayoutBase.d.ts +70 -0
  279. package/dist/kurot/layouts/LinearLayoutBase.d.ts.map +1 -0
  280. package/dist/kurot/layouts/LinearLayoutBase.js +246 -0
  281. package/dist/kurot/layouts/LinearLayoutBase.js.map +1 -0
  282. package/dist/kurot/layouts/RowAlign.d.ts +9 -0
  283. package/dist/kurot/layouts/RowAlign.d.ts.map +1 -0
  284. package/dist/kurot/layouts/RowAlign.js +9 -0
  285. package/dist/kurot/layouts/RowAlign.js.map +1 -0
  286. package/dist/kurot/layouts/TileLayout.d.ts +79 -0
  287. package/dist/kurot/layouts/TileLayout.d.ts.map +1 -0
  288. package/dist/kurot/layouts/TileLayout.js +577 -0
  289. package/dist/kurot/layouts/TileLayout.js.map +1 -0
  290. package/dist/kurot/layouts/TileOrientation.d.ts +8 -0
  291. package/dist/kurot/layouts/TileOrientation.d.ts.map +1 -0
  292. package/dist/kurot/layouts/TileOrientation.js +8 -0
  293. package/dist/kurot/layouts/TileOrientation.js.map +1 -0
  294. package/dist/kurot/layouts/VerticalLayout.d.ts +23 -0
  295. package/dist/kurot/layouts/VerticalLayout.d.ts.map +1 -0
  296. package/dist/kurot/layouts/VerticalLayout.js +406 -0
  297. package/dist/kurot/layouts/VerticalLayout.js.map +1 -0
  298. package/dist/kurot/layouts/index.d.ts +12 -0
  299. package/dist/kurot/layouts/index.d.ts.map +1 -0
  300. package/dist/kurot/layouts/index.js +11 -0
  301. package/dist/kurot/layouts/index.js.map +1 -0
  302. package/dist/kurot/states/AddItems.d.ts +17 -0
  303. package/dist/kurot/states/AddItems.d.ts.map +1 -0
  304. package/dist/kurot/states/AddItems.js +42 -0
  305. package/dist/kurot/states/AddItems.js.map +1 -0
  306. package/dist/kurot/states/IOverride.d.ts +12 -0
  307. package/dist/kurot/states/IOverride.d.ts.map +1 -0
  308. package/dist/kurot/states/IOverride.js +2 -0
  309. package/dist/kurot/states/IOverride.js.map +1 -0
  310. package/dist/kurot/states/SetProperty.d.ts +19 -0
  311. package/dist/kurot/states/SetProperty.d.ts.map +1 -0
  312. package/dist/kurot/states/SetProperty.js +50 -0
  313. package/dist/kurot/states/SetProperty.js.map +1 -0
  314. package/dist/kurot/states/SetStateProperty.d.ts +17 -0
  315. package/dist/kurot/states/SetStateProperty.d.ts.map +1 -0
  316. package/dist/kurot/states/SetStateProperty.js +35 -0
  317. package/dist/kurot/states/SetStateProperty.js.map +1 -0
  318. package/dist/kurot/states/State.d.ts +14 -0
  319. package/dist/kurot/states/State.d.ts.map +1 -0
  320. package/dist/kurot/states/State.js +18 -0
  321. package/dist/kurot/states/State.js.map +1 -0
  322. package/dist/kurot/states/index.d.ts +6 -0
  323. package/dist/kurot/states/index.d.ts.map +1 -0
  324. package/dist/kurot/states/index.js +5 -0
  325. package/dist/kurot/states/index.js.map +1 -0
  326. package/package.json +55 -0
@@ -0,0 +1,577 @@
1
+ import { LayoutBase } from './LayoutBase.js';
2
+ import { JustifyAlign } from './JustifyAlign.js';
3
+ import { ColumnAlign } from './ColumnAlign.js';
4
+ import { RowAlign } from './RowAlign.js';
5
+ import { TileOrientation } from './TileOrientation.js';
6
+ import { Rectangle } from '@kurot/core';
7
+ const tmpBounds = new Rectangle();
8
+ /**
9
+ * TileLayout arranges layout elements in columns and rows of equally-sized cells.
10
+ *
11
+ * Supports orientation (rows vs columns), requested column/row counts,
12
+ * column/row alignment justification, percent size within cells, and virtual layout.
13
+ */
14
+ export class TileLayout extends LayoutBase {
15
+ // ── Instance fields ───────────────────────────────────────────────────
16
+ _horizontalGap = 6;
17
+ _explicitHorizontalGap = NaN;
18
+ _verticalGap = 6;
19
+ _explicitVerticalGap = NaN;
20
+ _columnCount = -1;
21
+ _requestedColumnCount = 0;
22
+ _rowCount = -1;
23
+ _requestedRowCount = 0;
24
+ _columnWidth = NaN;
25
+ _explicitColumnWidth = NaN;
26
+ _rowHeight = NaN;
27
+ _explicitRowHeight = NaN;
28
+ _paddingLeft = 0;
29
+ _paddingRight = 0;
30
+ _paddingTop = 0;
31
+ _paddingBottom = 0;
32
+ _horizontalAlign = JustifyAlign.JUSTIFY;
33
+ _verticalAlign = JustifyAlign.JUSTIFY;
34
+ _columnAlign = ColumnAlign.LEFT;
35
+ _rowAlign = RowAlign.TOP;
36
+ _orientation = TileOrientation.ROWS;
37
+ _maxElementWidth = 0;
38
+ _maxElementHeight = 0;
39
+ _startIndex = -1;
40
+ _endIndex = -1;
41
+ _indexInViewCalculated = false;
42
+ // ── Getters / Setters ─────────────────────────────────────────────────
43
+ get horizontalGap() {
44
+ return this._horizontalGap;
45
+ }
46
+ set horizontalGap(value) {
47
+ value = +value;
48
+ if (value === this._horizontalGap)
49
+ return;
50
+ this._explicitHorizontalGap = value;
51
+ this._horizontalGap = value;
52
+ this._invalidateTargetLayout();
53
+ }
54
+ get verticalGap() {
55
+ return this._verticalGap;
56
+ }
57
+ set verticalGap(value) {
58
+ value = +value;
59
+ if (value === this._verticalGap)
60
+ return;
61
+ this._explicitVerticalGap = value;
62
+ this._verticalGap = value;
63
+ this._invalidateTargetLayout();
64
+ }
65
+ get columnCount() {
66
+ return this._columnCount;
67
+ }
68
+ get requestedColumnCount() {
69
+ return this._requestedColumnCount;
70
+ }
71
+ set requestedColumnCount(value) {
72
+ value = +value || 0;
73
+ if (this._requestedColumnCount === value)
74
+ return;
75
+ this._requestedColumnCount = value;
76
+ this._columnCount = value;
77
+ this._invalidateTargetLayout();
78
+ }
79
+ get rowCount() {
80
+ return this._rowCount;
81
+ }
82
+ get requestedRowCount() {
83
+ return this._requestedRowCount;
84
+ }
85
+ set requestedRowCount(value) {
86
+ value = +value || 0;
87
+ if (this._requestedRowCount === value)
88
+ return;
89
+ this._requestedRowCount = value;
90
+ this._rowCount = value;
91
+ this._invalidateTargetLayout();
92
+ }
93
+ get columnWidth() {
94
+ return this._columnWidth;
95
+ }
96
+ set columnWidth(value) {
97
+ value = +value;
98
+ if (value === this._columnWidth)
99
+ return;
100
+ this._explicitColumnWidth = value;
101
+ this._columnWidth = value;
102
+ this._invalidateTargetLayout();
103
+ }
104
+ get rowHeight() {
105
+ return this._rowHeight;
106
+ }
107
+ set rowHeight(value) {
108
+ value = +value;
109
+ if (value === this._rowHeight)
110
+ return;
111
+ this._explicitRowHeight = value;
112
+ this._rowHeight = value;
113
+ this._invalidateTargetLayout();
114
+ }
115
+ get paddingLeft() {
116
+ return this._paddingLeft;
117
+ }
118
+ set paddingLeft(value) {
119
+ value = +value || 0;
120
+ if (this._paddingLeft === value)
121
+ return;
122
+ this._paddingLeft = value;
123
+ this._invalidateTargetLayout();
124
+ }
125
+ get paddingRight() {
126
+ return this._paddingRight;
127
+ }
128
+ set paddingRight(value) {
129
+ value = +value || 0;
130
+ if (this._paddingRight === value)
131
+ return;
132
+ this._paddingRight = value;
133
+ this._invalidateTargetLayout();
134
+ }
135
+ get paddingTop() {
136
+ return this._paddingTop;
137
+ }
138
+ set paddingTop(value) {
139
+ value = +value || 0;
140
+ if (this._paddingTop === value)
141
+ return;
142
+ this._paddingTop = value;
143
+ this._invalidateTargetLayout();
144
+ }
145
+ get paddingBottom() {
146
+ return this._paddingBottom;
147
+ }
148
+ set paddingBottom(value) {
149
+ value = +value || 0;
150
+ if (this._paddingBottom === value)
151
+ return;
152
+ this._paddingBottom = value;
153
+ this._invalidateTargetLayout();
154
+ }
155
+ get horizontalAlign() {
156
+ return this._horizontalAlign;
157
+ }
158
+ set horizontalAlign(value) {
159
+ if (this._horizontalAlign === value)
160
+ return;
161
+ this._horizontalAlign = value;
162
+ this._invalidateTargetLayout();
163
+ }
164
+ get verticalAlign() {
165
+ return this._verticalAlign;
166
+ }
167
+ set verticalAlign(value) {
168
+ if (this._verticalAlign === value)
169
+ return;
170
+ this._verticalAlign = value;
171
+ this._invalidateTargetLayout();
172
+ }
173
+ get columnAlign() {
174
+ return this._columnAlign;
175
+ }
176
+ set columnAlign(value) {
177
+ if (this._columnAlign === value)
178
+ return;
179
+ this._columnAlign = value;
180
+ this._invalidateTargetLayout();
181
+ }
182
+ get rowAlign() {
183
+ return this._rowAlign;
184
+ }
185
+ set rowAlign(value) {
186
+ if (this._rowAlign === value)
187
+ return;
188
+ this._rowAlign = value;
189
+ this._invalidateTargetLayout();
190
+ }
191
+ get orientation() {
192
+ return this._orientation;
193
+ }
194
+ set orientation(value) {
195
+ if (this._orientation === value)
196
+ return;
197
+ this._orientation = value;
198
+ this._invalidateTargetLayout();
199
+ }
200
+ // ── Override methods ──────────────────────────────────────────────────
201
+ clearVirtualLayoutCache() {
202
+ super.clearVirtualLayoutCache();
203
+ this._maxElementWidth = 0;
204
+ this._maxElementHeight = 0;
205
+ }
206
+ scrollPositionChanged() {
207
+ if (this._useVirtualLayout) {
208
+ const changed = this._getIndexInView();
209
+ if (changed) {
210
+ this._indexInViewCalculated = true;
211
+ this.target?.invalidateDisplayList();
212
+ }
213
+ }
214
+ }
215
+ measure() {
216
+ const target = this.target;
217
+ const savedColumnCount = this._columnCount;
218
+ const savedRowCount = this._rowCount;
219
+ const savedColumnWidth = this._columnWidth;
220
+ const savedRowHeight = this._rowHeight;
221
+ let measuredWidth = 0;
222
+ let measuredHeight = 0;
223
+ this._calculateRowAndColumn(target.$explicitWidth, target.$explicitHeight);
224
+ const columnCount = this._requestedColumnCount > 0 ? this._requestedColumnCount : this._columnCount;
225
+ const rowCount = this._requestedRowCount > 0 ? this._requestedRowCount : this._rowCount;
226
+ const hGap = isNaN(this._horizontalGap) ? 0 : this._horizontalGap;
227
+ const vGap = isNaN(this._verticalGap) ? 0 : this._verticalGap;
228
+ if (columnCount > 0) {
229
+ measuredWidth = columnCount * (this._columnWidth + hGap) - hGap;
230
+ }
231
+ if (rowCount > 0) {
232
+ measuredHeight = rowCount * (this._rowHeight + vGap) - vGap;
233
+ }
234
+ const hPadding = this._paddingLeft + this._paddingRight;
235
+ const vPadding = this._paddingTop + this._paddingBottom;
236
+ target.setMeasuredSize(measuredWidth + hPadding, measuredHeight + vPadding);
237
+ this._columnCount = savedColumnCount;
238
+ this._rowCount = savedRowCount;
239
+ this._columnWidth = savedColumnWidth;
240
+ this._rowHeight = savedRowHeight;
241
+ }
242
+ updateDisplayList(width, height) {
243
+ const target = this.target;
244
+ if (!target)
245
+ return;
246
+ const paddingL = this._paddingLeft;
247
+ const paddingR = this._paddingRight;
248
+ const paddingT = this._paddingTop;
249
+ const paddingB = this._paddingBottom;
250
+ if (this._indexInViewCalculated) {
251
+ this._indexInViewCalculated = false;
252
+ }
253
+ else {
254
+ this._calculateRowAndColumn(width, height);
255
+ if (this._rowCount === 0 || this._columnCount === 0) {
256
+ target.setContentSize(paddingL + paddingR, paddingT + paddingB);
257
+ return;
258
+ }
259
+ this._adjustForJustify(width, height);
260
+ this._getIndexInView();
261
+ }
262
+ if (this._useVirtualLayout) {
263
+ this._calculateRowAndColumn(width, height);
264
+ this._adjustForJustify(width, height);
265
+ }
266
+ if (this._startIndex === -1 || this._endIndex === -1) {
267
+ target.setContentSize(0, 0);
268
+ return;
269
+ }
270
+ const endIdx = this._endIndex;
271
+ const orientedByColumns = this._orientation === TileOrientation.COLUMNS;
272
+ let index = this._startIndex;
273
+ const hGap = isNaN(this._horizontalGap) ? 0 : this._horizontalGap;
274
+ const vGap = isNaN(this._verticalGap) ? 0 : this._verticalGap;
275
+ const rowCount = this._rowCount;
276
+ const columnCount = this._columnCount;
277
+ const columnWidth = this._columnWidth;
278
+ const rowHeight = this._rowHeight;
279
+ for (let i = this._startIndex; i <= endIdx; i++) {
280
+ const el = asLayoutElement(target, i);
281
+ if (!el || !el.includeInLayout) {
282
+ continue;
283
+ }
284
+ let columnIndex;
285
+ let rowIndex;
286
+ if (orientedByColumns) {
287
+ columnIndex = Math.ceil((index + 1) / rowCount) - 1;
288
+ rowIndex = Math.ceil((index + 1) % rowCount) - 1;
289
+ if (rowIndex === -1)
290
+ rowIndex = rowCount - 1;
291
+ }
292
+ else {
293
+ columnIndex = Math.ceil((index + 1) % columnCount) - 1;
294
+ if (columnIndex === -1)
295
+ columnIndex = columnCount - 1;
296
+ rowIndex = Math.ceil((index + 1) / columnCount) - 1;
297
+ }
298
+ let x;
299
+ switch (this._horizontalAlign) {
300
+ case 'right':
301
+ x = width - (columnIndex + 1) * (columnWidth + hGap) + hGap - paddingR;
302
+ break;
303
+ case 'left':
304
+ x = columnIndex * (columnWidth + hGap) + paddingL;
305
+ break;
306
+ default:
307
+ x = columnIndex * (columnWidth + hGap) + paddingL;
308
+ }
309
+ let y;
310
+ switch (this._verticalAlign) {
311
+ case 'top':
312
+ y = rowIndex * (rowHeight + vGap) + paddingT;
313
+ break;
314
+ case 'bottom':
315
+ y = height - (rowIndex + 1) * (rowHeight + vGap) + vGap - paddingB;
316
+ break;
317
+ default:
318
+ y = rowIndex * (rowHeight + vGap) + paddingT;
319
+ }
320
+ this._sizeAndPositionElement(el, x, y, columnWidth, rowHeight);
321
+ index++;
322
+ }
323
+ const hPadding = paddingL + paddingR;
324
+ const vPadding = paddingT + paddingB;
325
+ const contentWidth = (columnWidth + hGap) * columnCount - hGap;
326
+ const contentHeight = (rowHeight + vGap) * rowCount - vGap;
327
+ target.setContentSize(contentWidth + hPadding, contentHeight + vPadding);
328
+ }
329
+ // ── Private methods ───────────────────────────────────────────────────
330
+ _invalidateTargetLayout() {
331
+ if (this.target) {
332
+ this.target.invalidateSize();
333
+ this.target.invalidateDisplayList();
334
+ }
335
+ }
336
+ _updateMaxElementSize() {
337
+ if (!this.target)
338
+ return;
339
+ if (this._useVirtualLayout) {
340
+ this._maxElementWidth = Math.max(this._maxElementWidth, this.typicalWidth);
341
+ this._maxElementHeight = Math.max(this._maxElementHeight, this.typicalHeight);
342
+ this._doUpdateMaxElementSize(this._startIndex, this._endIndex);
343
+ }
344
+ else {
345
+ this._doUpdateMaxElementSize(0, this.target.numChildren - 1);
346
+ }
347
+ }
348
+ _doUpdateMaxElementSize(startIdx, endIdx) {
349
+ let maxW = this._maxElementWidth;
350
+ let maxH = this._maxElementHeight;
351
+ if (startIdx !== -1 && endIdx !== -1) {
352
+ for (let i = startIdx; i <= endIdx; i++) {
353
+ const el = asLayoutElement(this.target, i);
354
+ if (!el || !el.includeInLayout)
355
+ continue;
356
+ el.getPreferredBounds(tmpBounds);
357
+ maxW = Math.max(maxW, tmpBounds.width);
358
+ maxH = Math.max(maxH, tmpBounds.height);
359
+ }
360
+ }
361
+ this._maxElementWidth = maxW;
362
+ this._maxElementHeight = maxH;
363
+ }
364
+ _calculateRowAndColumn($explicitWidth, $explicitHeight) {
365
+ const target = this.target;
366
+ const hGap = isNaN(this._horizontalGap) ? 0 : this._horizontalGap;
367
+ const vGap = isNaN(this._verticalGap) ? 0 : this._verticalGap;
368
+ this._rowCount = this._columnCount = -1;
369
+ let numElements = target.numChildren;
370
+ for (let i = 0; i < target.numChildren; i++) {
371
+ const el = asLayoutElement(target, i);
372
+ if (el && !el.includeInLayout)
373
+ numElements--;
374
+ }
375
+ if (numElements === 0) {
376
+ this._rowCount = this._columnCount = 0;
377
+ return;
378
+ }
379
+ if (isNaN(this._explicitColumnWidth) || isNaN(this._explicitRowHeight)) {
380
+ this._updateMaxElementSize();
381
+ }
382
+ this._columnWidth = isNaN(this._explicitColumnWidth) ? this._maxElementWidth : this._explicitColumnWidth;
383
+ this._rowHeight = isNaN(this._explicitRowHeight) ? this._maxElementHeight : this._explicitRowHeight;
384
+ let itemWidth = this._columnWidth + hGap;
385
+ if (itemWidth <= 0)
386
+ itemWidth = 1;
387
+ let itemHeight = this._rowHeight + vGap;
388
+ if (itemHeight <= 0)
389
+ itemHeight = 1;
390
+ const orientedByColumns = this._orientation === TileOrientation.COLUMNS;
391
+ const widthHasSet = !isNaN($explicitWidth);
392
+ const heightHasSet = !isNaN($explicitHeight);
393
+ if (this._requestedColumnCount > 0 || this._requestedRowCount > 0) {
394
+ if (this._requestedRowCount > 0)
395
+ this._rowCount = Math.min(this._requestedRowCount, numElements);
396
+ if (this._requestedColumnCount > 0)
397
+ this._columnCount = Math.min(this._requestedColumnCount, numElements);
398
+ }
399
+ else if (!widthHasSet && !heightHasSet) {
400
+ const side = Math.sqrt(numElements * itemWidth * itemHeight);
401
+ if (orientedByColumns) {
402
+ this._rowCount = Math.max(1, Math.round(side / itemHeight));
403
+ }
404
+ else {
405
+ this._columnCount = Math.max(1, Math.round(side / itemWidth));
406
+ }
407
+ }
408
+ else if (widthHasSet && (!heightHasSet || !orientedByColumns)) {
409
+ const targetWidth = Math.max(0, $explicitWidth - this._paddingLeft - this._paddingRight);
410
+ this._columnCount = Math.floor((targetWidth + hGap) / itemWidth);
411
+ this._columnCount = Math.max(1, Math.min(this._columnCount, numElements));
412
+ }
413
+ else {
414
+ const targetHeight = Math.max(0, $explicitHeight - this._paddingTop - this._paddingBottom);
415
+ this._rowCount = Math.floor((targetHeight + vGap) / itemHeight);
416
+ this._rowCount = Math.max(1, Math.min(this._rowCount, numElements));
417
+ }
418
+ if (this._rowCount === -1)
419
+ this._rowCount = Math.max(1, Math.ceil(numElements / this._columnCount));
420
+ if (this._columnCount === -1)
421
+ this._columnCount = Math.max(1, Math.ceil(numElements / this._rowCount));
422
+ if (this._requestedColumnCount > 0 && this._requestedRowCount > 0) {
423
+ if (this._orientation === TileOrientation.ROWS) {
424
+ this._rowCount = Math.max(1, Math.ceil(numElements / this._requestedColumnCount));
425
+ }
426
+ else {
427
+ this._columnCount = Math.max(1, Math.ceil(numElements / this._requestedRowCount));
428
+ }
429
+ }
430
+ }
431
+ _getIndexInView() {
432
+ const target = this.target;
433
+ if (!target || target.numChildren === 0) {
434
+ this._startIndex = this._endIndex = -1;
435
+ return false;
436
+ }
437
+ const numElements = target.numChildren;
438
+ if (!this._useVirtualLayout) {
439
+ this._startIndex = 0;
440
+ this._endIndex = numElements - 1;
441
+ return false;
442
+ }
443
+ if (target.width === 0 || target.height === 0) {
444
+ this._startIndex = this._endIndex = -1;
445
+ return false;
446
+ }
447
+ const oldStartIndex = this._startIndex;
448
+ const oldEndIndex = this._endIndex;
449
+ const paddingL = this._paddingLeft;
450
+ const paddingT = this._paddingTop;
451
+ const hGap = isNaN(this._horizontalGap) ? 0 : this._horizontalGap;
452
+ const vGap = isNaN(this._verticalGap) ? 0 : this._verticalGap;
453
+ if (this._orientation === TileOrientation.COLUMNS) {
454
+ const itemWidth = this._columnWidth + hGap;
455
+ if (itemWidth <= 0) {
456
+ this._startIndex = 0;
457
+ this._endIndex = numElements - 1;
458
+ return false;
459
+ }
460
+ const minVisibleX = target.scrollH ?? 0;
461
+ const maxVisibleX = minVisibleX + target.width;
462
+ let startColumn = Math.floor((minVisibleX - paddingL) / itemWidth);
463
+ if (startColumn < 0)
464
+ startColumn = 0;
465
+ let endColumn = Math.ceil((maxVisibleX - paddingL) / itemWidth);
466
+ if (endColumn < 0)
467
+ endColumn = 0;
468
+ this._startIndex = Math.min(numElements - 1, Math.max(0, startColumn * this._rowCount));
469
+ this._endIndex = Math.min(numElements - 1, Math.max(0, endColumn * this._rowCount - 1));
470
+ }
471
+ else {
472
+ const itemHeight = this._rowHeight + vGap;
473
+ if (itemHeight <= 0) {
474
+ this._startIndex = 0;
475
+ this._endIndex = numElements - 1;
476
+ return false;
477
+ }
478
+ const minVisibleY = target.scrollV ?? 0;
479
+ const maxVisibleY = minVisibleY + target.height;
480
+ let startRow = Math.floor((minVisibleY - paddingT) / itemHeight);
481
+ if (startRow < 0)
482
+ startRow = 0;
483
+ let endRow = Math.ceil((maxVisibleY - paddingT) / itemHeight);
484
+ if (endRow < 0)
485
+ endRow = 0;
486
+ this._startIndex = Math.min(numElements - 1, Math.max(0, startRow * this._columnCount));
487
+ this._endIndex = Math.min(numElements - 1, Math.max(0, endRow * this._columnCount - 1));
488
+ }
489
+ return this._startIndex !== oldStartIndex || this._endIndex !== oldEndIndex;
490
+ }
491
+ _adjustForJustify(width, height) {
492
+ const paddingL = this._paddingLeft;
493
+ const paddingR = this._paddingRight;
494
+ const paddingT = this._paddingTop;
495
+ const paddingB = this._paddingBottom;
496
+ const targetWidth = Math.max(0, width - paddingL - paddingR);
497
+ const targetHeight = Math.max(0, height - paddingT - paddingB);
498
+ if (!isNaN(this._explicitVerticalGap))
499
+ this._verticalGap = this._explicitVerticalGap;
500
+ if (!isNaN(this._explicitHorizontalGap))
501
+ this._horizontalGap = this._explicitHorizontalGap;
502
+ this._verticalGap = isNaN(this._verticalGap) ? 0 : this._verticalGap;
503
+ this._horizontalGap = isNaN(this._horizontalGap) ? 0 : this._horizontalGap;
504
+ const offsetY = targetHeight - this._rowHeight * this._rowCount;
505
+ const offsetX = targetWidth - this._columnWidth * this._columnCount;
506
+ if (offsetY > 0) {
507
+ if (this._rowAlign === RowAlign.JUSTIFY_USING_GAP) {
508
+ const gapCount = Math.max(1, this._rowCount - 1);
509
+ this._verticalGap = offsetY / gapCount;
510
+ }
511
+ else if (this._rowAlign === RowAlign.JUSTIFY_USING_HEIGHT) {
512
+ if (this._rowCount > 0) {
513
+ this._rowHeight += (offsetY - (this._rowCount - 1) * this._verticalGap) / this._rowCount;
514
+ }
515
+ }
516
+ }
517
+ if (offsetX > 0) {
518
+ if (this._columnAlign === ColumnAlign.JUSTIFY_USING_GAP) {
519
+ const gapCount = Math.max(1, this._columnCount - 1);
520
+ this._horizontalGap = offsetX / gapCount;
521
+ }
522
+ else if (this._columnAlign === ColumnAlign.JUSTIFY_USING_WIDTH) {
523
+ if (this._columnCount > 0) {
524
+ this._columnWidth += (offsetX - (this._columnCount - 1) * this._horizontalGap) / this._columnCount;
525
+ }
526
+ }
527
+ }
528
+ }
529
+ _sizeAndPositionElement(element, cellX, cellY, cellWidth, cellHeight) {
530
+ let elementWidth = NaN;
531
+ let elementHeight = NaN;
532
+ if (this._horizontalAlign === JustifyAlign.JUSTIFY) {
533
+ elementWidth = cellWidth;
534
+ }
535
+ else if (!isNaN(element.percentWidth)) {
536
+ elementWidth = cellWidth * element.percentWidth * 0.01;
537
+ }
538
+ if (this._verticalAlign === JustifyAlign.JUSTIFY) {
539
+ elementHeight = cellHeight;
540
+ }
541
+ else if (!isNaN(element.percentHeight)) {
542
+ elementHeight = cellHeight * element.percentHeight * 0.01;
543
+ }
544
+ element.setLayoutBoundsSize(Math.round(elementWidth), Math.round(elementHeight));
545
+ let x = cellX;
546
+ element.getLayoutBounds(tmpBounds);
547
+ switch (this._horizontalAlign) {
548
+ case 'right':
549
+ x += cellWidth - tmpBounds.width;
550
+ break;
551
+ case 'center':
552
+ x = cellX + (cellWidth - tmpBounds.width) / 2;
553
+ break;
554
+ }
555
+ let y = cellY;
556
+ switch (this._verticalAlign) {
557
+ case 'bottom':
558
+ y += cellHeight - tmpBounds.height;
559
+ break;
560
+ case 'middle':
561
+ y += (cellHeight - tmpBounds.height) / 2;
562
+ break;
563
+ }
564
+ element.setLayoutBoundsPosition(Math.round(x), Math.round(y));
565
+ }
566
+ }
567
+ // ── Helpers ─────────────────────────────────────────────────────────────
568
+ function asLayoutElement(target, index) {
569
+ const child = target.getChildAt(index);
570
+ if (!child)
571
+ return undefined;
572
+ const el = child;
573
+ if (typeof el.getPreferredBounds === 'function')
574
+ return el;
575
+ return undefined;
576
+ }
577
+ //# sourceMappingURL=TileLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TileLayout.js","sourceRoot":"","sources":["../../../src/kurot/layouts/TileLayout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Constants for tile layout orientation.
3
+ */
4
+ export declare class TileOrientation {
5
+ static readonly ROWS = "rows";
6
+ static readonly COLUMNS = "columns";
7
+ }
8
+ //# sourceMappingURL=TileOrientation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TileOrientation.d.ts","sourceRoot":"","sources":["../../../src/kurot/layouts/TileOrientation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,eAAe;IAC3B,gBAAuB,IAAI,UAAU;IACrC,gBAAuB,OAAO,aAAa;CAC3C"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Constants for tile layout orientation.
3
+ */
4
+ export class TileOrientation {
5
+ static ROWS = 'rows';
6
+ static COLUMNS = 'columns';
7
+ }
8
+ //# sourceMappingURL=TileOrientation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TileOrientation.js","sourceRoot":"","sources":["../../../src/kurot/layouts/TileOrientation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,eAAe;IACpB,MAAM,CAAU,IAAI,GAAG,MAAM,CAAC;IAC9B,MAAM,CAAU,OAAO,GAAG,SAAS,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { LinearLayoutBase } from './LinearLayoutBase.js';
2
+ /**
3
+ * VerticalLayout arranges layout elements in a vertical sequence, top to bottom,
4
+ * with optional gaps between elements and optional padding around the edges.
5
+ *
6
+ * Supports:
7
+ * - `horizontalAlign`: left / center / right / justify / contentJustify
8
+ * - `verticalAlign`: top / middle / bottom / justify
9
+ * - `percentWidth` / `percentHeight` on $children
10
+ * - Virtual layout (only visible elements are measured/laid out)
11
+ */
12
+ export declare class VerticalLayout extends LinearLayoutBase {
13
+ elementAdded(index: number): void;
14
+ protected measureReal(): void;
15
+ protected measureVirtual(): void;
16
+ protected updateDisplayListReal(width: number, height: number): void;
17
+ protected updateDisplayListVirtual(width: number, height: number): void;
18
+ protected getStartPosition(index: number): number;
19
+ protected getElementSize(index: number): number;
20
+ protected getElementTotalSize(): number;
21
+ protected getIndexInView(): boolean;
22
+ }
23
+ //# sourceMappingURL=VerticalLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalLayout.d.ts","sourceRoot":"","sources":["../../../src/kurot/layouts/VerticalLayout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAiBzD;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAGnC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;cAM9B,WAAW,IAAI,IAAI;cAuBnB,cAAc,IAAI,IAAI;cAoBtB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;cAgK1D,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;cAyF7D,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;cAoBvC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;cAgBrC,mBAAmB,IAAI,MAAM;cAc7B,cAAc,IAAI,OAAO;CAoC5C"}