@orangelogic/design-system 2.0.0-29DUO2-beta-3 → 2.0.0-29IORR-beta-2

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 (307) hide show
  1. package/library/chunks/{AxisLabelRadial.CgPb7ghO.js → AxisLabelRadial.Bs1P_q_F.js} +1 -1
  2. package/library/chunks/{BaseColumnSeries.B6rG-Ylz.js → BaseColumnSeries.C7jwOxIJ.js} +1 -1
  3. package/library/chunks/{CandlestickSeries.C-YfO-57.js → CandlestickSeries.CkXGtRWE.js} +2 -2
  4. package/library/chunks/{Circle.DhoXSsjo.js → Circle.DBa5Ok8V.js} +1 -1
  5. package/library/chunks/{ColumnSeries.CZi2LBZ2.js → ColumnSeries.DGazbfza.js} +2 -2
  6. package/library/chunks/{EditableAxisLabel.CykTMTsG.js → EditableAxisLabel.wN0t_G2B.js} +2 -2
  7. package/library/chunks/{EditableLabel.BlQ7B4D0.js → EditableLabel.BWeq6fgX.js} +1 -1
  8. package/library/chunks/{Gradient.BQ0JzFEe.js → Gradient.CdcsPIru.js} +1 -1
  9. package/library/chunks/{LinearGradient.DuVS2EHe.js → LinearGradient.B1z9AGUt.js} +2 -2
  10. package/library/chunks/{Picture.DRO0jnR6.js → Picture.YSPC0l0Q.js} +1 -1
  11. package/library/chunks/{Polygon.DEO3f_qs.js → Polygon.BwMvXN2H.js} +1 -1
  12. package/library/chunks/{ProgressPie.Bryx2w1J.js → ProgressPie.DlCwXN17.js} +5 -5
  13. package/library/chunks/{RadialLabel.TyXECvYG.js → RadialLabel.DyVOf2K8.js} +1 -1
  14. package/library/chunks/{Scrollbar.DK48nKk4.js → Scrollbar.BdZVb_Z-.js} +1 -1
  15. package/library/chunks/{Slice.DbXRplXx.js → Slice.DiEswWa6.js} +1 -1
  16. package/library/chunks/{Slider.B27osQYu.js → Slider.C20No2z5.js} +1 -1
  17. package/library/chunks/{SpriteResizer.C4wFzD_x.js → SpriteResizer.DFnmcy0h.js} +1 -1
  18. package/library/chunks/{Triangle.BEmFiHyd.js → Triangle.BaOef7HV.js} +1 -1
  19. package/library/chunks/{ZoomTools.CBqjLDqb.js → ZoomTools.D5JPehoL.js} +1 -1
  20. package/library/chunks/{_baseUniq.Df-fLIBx.js → _baseUniq.BUihBa8c.js} +56 -53
  21. package/library/chunks/{am-chart.B_OdX4Q-.js → am-chart.H2jnOzFc.js} +254 -262
  22. package/library/chunks/{animation.DfUHRQry.js → animation.7ifl4x2S.js} +4 -8
  23. package/library/chunks/array.DCtvHiLS.js +81 -0
  24. package/library/chunks/asset.D7E0-cUV.js +460 -0
  25. package/library/chunks/{button.KnE3mcyM.js → button.CauAHfdl.js} +10 -45
  26. package/library/chunks/button.styles.CKqn956w.js +5 -0
  27. package/library/chunks/{capitalize.WSkCXkNE.js → capitalize.CNStXZBq.js} +1 -1
  28. package/library/chunks/{color-swatch-group.p3Sdqlat.js → color-swatch-group.D5BP2W3P.js} +50 -220
  29. package/library/chunks/{color-swatch.C0oPHfOu.js → color-swatch.2HS4bc3N.js} +20 -204
  30. package/library/chunks/{colorPicker.CJwbdhtn.js → colorPicker.06n6P3aK.js} +5 -5
  31. package/library/chunks/component.styles.CRO4Odto.js +5 -0
  32. package/library/chunks/confirm-popover.DmGAMS8X.js +121 -0
  33. package/library/chunks/{cropper.tSDgXKqJ.js → cropper.ZU2Dy-MM.js} +8182 -8540
  34. package/library/chunks/{dialog.DpZBbTCn.js → dialog.2UW1LNm1.js} +117 -314
  35. package/library/chunks/{dom.BQVKDNd8.js → dom.BslZF2Y_.js} +1 -1
  36. package/library/chunks/dot-pagination.DsAfSNzr.js +204 -0
  37. package/library/chunks/{endpoints.B7lcoc1N.js → endpoints.Fpyb8xvv.js} +214 -203
  38. package/library/chunks/{exporting.DCqJtW6l.js → exporting.Chnl3UWi.js} +2 -2
  39. package/library/chunks/file-on-demand.Dig_iVvx.js +1956 -0
  40. package/library/chunks/{flow.Ch1rU01m.js → flow.D2CqFQa7.js} +5 -5
  41. package/library/chunks/folder-select.BT1drT8C.js +775 -0
  42. package/library/chunks/form-control.styles.CaGWmeAS.js +5 -0
  43. package/library/chunks/{form.DgwYWi0O.js → form.CFc09rKh.js} +1 -1
  44. package/library/chunks/{gantt.rWdF_jmG.js → gantt.DSHD2gjO.js} +8 -8
  45. package/library/chunks/header.BePZwMCQ.js +170 -0
  46. package/library/chunks/{hierarchy.HoRJAu6S.js → hierarchy.DwVsMmsP.js} +5 -5
  47. package/library/chunks/{hub-connection.CfARlehM.js → hub-connection.Ot2odiCz.js} +1 -1
  48. package/library/chunks/{i18n.C0iakJkV.js → i18n.BFqTRDCA.js} +19 -12
  49. package/library/chunks/icon-button.rKe0N4VB.js +149 -0
  50. package/library/chunks/iframe.DznmlYpV.js +73 -0
  51. package/library/chunks/{image.C9avagDq.js → image.CEtCGsNL.js} +275 -488
  52. package/library/chunks/{index.D2JPKXqq.js → index.C9khsiad.js} +17 -17
  53. package/library/chunks/isObjectLike.z36Fu426.js +34 -0
  54. package/library/chunks/{isSymbol.huJ_Cvxt.js → isSymbol.L0C2ND_U.js} +1 -1
  55. package/library/chunks/{json.DHNMAC-m.js → json.zyETMOw-.js} +3 -3
  56. package/library/chunks/{list-editor.B2mFE9f7.js → list-editor.CJ96S1Np.js} +58 -372
  57. package/library/chunks/{map.BHmZ4Crx.js → map.CqM2O6LB.js} +2 -2
  58. package/library/chunks/option.COnEtd3X.js +123 -0
  59. package/library/chunks/{overlayscrollbars.XhGWx9Zk.js → overlayscrollbars.BMav4RQ4.js} +252 -958
  60. package/library/chunks/pagination.DaD9Yul6.js +334 -0
  61. package/library/chunks/{percent.CM9cr1H3.js → percent.DuQwbCCg.js} +3 -3
  62. package/library/chunks/{radar.CQUnnhGk.js → radar.FpYl3UH5.js} +4 -4
  63. package/library/chunks/{responsive.CrX-HUow.js → responsive.BndCeSg0.js} +1 -1
  64. package/library/chunks/{sliceGrouper.iv1p8MAK.js → sliceGrouper.BsE7fGMt.js} +1 -1
  65. package/library/chunks/{stock.CU0y6a5P.js → stock.BR-ag4Pt.js} +9 -9
  66. package/library/chunks/string.BigZhczf.js +185 -0
  67. package/library/chunks/{tab-group.05PY0smt.js → tab-group.0Po0eoxR.js} +33 -584
  68. package/library/chunks/{table.DNTm_GMS.js → table.WNd284in.js} +3535 -4852
  69. package/library/chunks/{timeline.yzdwtGKM.js → timeline.DkzkmgEM.js} +5 -5
  70. package/library/chunks/{toString.CRT5zqEU.js → toString.CL_lYXbK.js} +3 -3
  71. package/library/chunks/toast.B2cJgW5u.js +71 -0
  72. package/library/chunks/transformation.CzBptarI.js +140 -0
  73. package/library/chunks/{tree.CeMLCbs-.js → tree.QCQd_cuc.js} +32 -400
  74. package/library/chunks/typography.DJC_UXgs.js +52 -0
  75. package/library/chunks/url.Cj9cIQXJ.js +27 -0
  76. package/library/chunks/{venn.BOEi13la.js → venn.D739bOV3.js} +1 -1
  77. package/library/chunks/watch.BCJD77bD.js +547 -0
  78. package/library/chunks/{wc.V-lq02JF.js → wc.DzW311D-.js} +1 -1
  79. package/library/chunks/{xy.Df1hy9ac.js → xy.DCRDfTsa.js} +10 -10
  80. package/library/components/alert.js +11 -179
  81. package/library/components/am-chart.js +3 -3
  82. package/library/components/animated-image.js +13 -101
  83. package/library/components/animation.js +3 -3
  84. package/library/components/array-line-clamp.js +8 -89
  85. package/library/components/asset-link-format.js +718 -1380
  86. package/library/components/atoms.js +18 -18
  87. package/library/components/avatar.js +6 -95
  88. package/library/components/badge.js +11 -139
  89. package/library/components/bicolor-picker.js +4 -23
  90. package/library/components/border-input-group.js +5 -26
  91. package/library/components/breadcrumb-item.js +25 -156
  92. package/library/components/breadcrumb.js +4 -22
  93. package/library/components/button-group.js +3 -28
  94. package/library/components/button.js +6 -6
  95. package/library/components/card.js +4 -126
  96. package/library/components/checkbox.js +13 -254
  97. package/library/components/color-picker.js +57 -728
  98. package/library/components/color-swatch-group.js +9 -9
  99. package/library/components/color-swatch.js +5 -5
  100. package/library/components/confirm-popover.js +6 -6
  101. package/library/components/copy-button.js +11 -256
  102. package/library/components/corner-position-input-group.js +5 -58
  103. package/library/components/cropper.js +2 -2
  104. package/library/components/details.js +6 -152
  105. package/library/components/dialog.js +6 -6
  106. package/library/components/divider.js +6 -68
  107. package/library/components/dot-pagination.js +4 -4
  108. package/library/components/dot-status.js +25 -95
  109. package/library/components/drawer.js +11 -242
  110. package/library/components/dropdown.js +49 -151
  111. package/library/components/dynamic-select.js +10 -75
  112. package/library/components/e-chart.js +8 -51
  113. package/library/components/element-clamp.js +7 -80
  114. package/library/components/file-on-demand.js +13 -13
  115. package/library/components/folder-select.js +9 -7
  116. package/library/components/format-bytes.js +1 -1
  117. package/library/components/format-date.js +3 -7
  118. package/library/components/format-number.js +1 -1
  119. package/library/components/format-time.js +4 -14
  120. package/library/components/grid-item.js +5 -172
  121. package/library/components/grid.js +5 -41
  122. package/library/components/header.js +4 -4
  123. package/library/components/hub-connection.js +2 -2
  124. package/library/components/icon-button.js +14 -679
  125. package/library/components/icon.js +9 -2449
  126. package/library/components/iframe.js +4 -4
  127. package/library/components/image-comparer.js +9 -129
  128. package/library/components/image.js +4 -4
  129. package/library/components/include.js +3 -7
  130. package/library/components/input-group.js +4 -29
  131. package/library/components/input.js +358 -966
  132. package/library/components/line-clamp.js +7 -83
  133. package/library/components/list-editor.js +9 -9
  134. package/library/components/markdown.js +2 -4
  135. package/library/components/masonry.js +24 -223
  136. package/library/components/menu-item.js +155 -445
  137. package/library/components/menu-label.js +3 -20
  138. package/library/components/menu-section.js +3 -17
  139. package/library/components/menu.js +5 -113
  140. package/library/components/molecules.js +5 -5
  141. package/library/components/mutation-observer.js +3 -7
  142. package/library/components/option.js +4 -4
  143. package/library/components/organisms.js +2 -2
  144. package/library/components/padding-input-group.js +5 -16
  145. package/library/components/pagination.js +10 -8
  146. package/library/components/popup.js +385 -682
  147. package/library/components/position-picker.js +4 -94
  148. package/library/components/progress-bar.js +19 -136
  149. package/library/components/progress-ring.js +4 -95
  150. package/library/components/qr-code.js +5 -17
  151. package/library/components/radio-button.js +5 -25
  152. package/library/components/radio-card.js +8 -176
  153. package/library/components/radio-group.js +22 -153
  154. package/library/components/radio.js +14 -171
  155. package/library/components/range.js +123 -660
  156. package/library/components/rating.js +58 -238
  157. package/library/components/relative-time.js +3 -13
  158. package/library/components/resize-observer.js +4 -8
  159. package/library/components/select.js +305 -1012
  160. package/library/components/shadow-input-group.js +5 -24
  161. package/library/components/share-option-list.js +21 -313
  162. package/library/components/sidebar.js +15 -221
  163. package/library/components/size-input-group.js +12 -77
  164. package/library/components/skeleton.js +7 -80
  165. package/library/components/space.js +6 -143
  166. package/library/components/spinner.js +7 -76
  167. package/library/components/split-panel.js +18 -125
  168. package/library/components/step.js +21 -272
  169. package/library/components/stepper-wizard.js +9 -43
  170. package/library/components/stepper.js +17 -34
  171. package/library/components/switch.js +13 -276
  172. package/library/components/tab-group.js +7 -7
  173. package/library/components/tab-panel.js +5 -32
  174. package/library/components/tab.js +11 -257
  175. package/library/components/table.js +8 -8
  176. package/library/components/tag.js +15 -166
  177. package/library/components/textarea.js +183 -504
  178. package/library/components/timecode.js +6 -25
  179. package/library/components/tooltip.js +10 -94
  180. package/library/components/tree-item.js +4 -4
  181. package/library/components/tree.js +4 -4
  182. package/library/components/typeface.js +24 -123
  183. package/library/components/types.js +37225 -47339
  184. package/library/components/typography.js +2 -2
  185. package/library/components/video.js +3875 -6263
  186. package/library/components/visually-hidden.js +3 -15
  187. package/library/package.json +4 -1
  188. package/library/packages/atoms/src/components/dialog/dialog.d.ts +10 -0
  189. package/library/packages/atoms/src/components/icon-button/icon-button.d.ts +2 -1
  190. package/library/packages/atoms/src/components/image/image.d.ts +15 -1
  191. package/library/packages/atoms/src/components/input/auto-grow-controller.d.ts +23 -0
  192. package/library/packages/atoms/src/components/input/input.d.ts +10 -2
  193. package/library/packages/atoms/src/components/menu-item/menu-item.d.ts +4 -0
  194. package/library/packages/atoms/src/components/pagination/pagination.d.ts +32 -2
  195. package/library/packages/atoms/src/components/popup/overlay/Overlay.d.ts +10 -0
  196. package/library/packages/atoms/src/components/popup/popup.d.ts +1 -1
  197. package/library/packages/atoms/src/components/select/select.d.ts +11 -0
  198. package/library/packages/atoms/src/components/table/table.d.ts +49 -8
  199. package/library/packages/atoms/src/components/table/tabulator-tables/core/Tabulator.d.ts +1 -0
  200. package/library/packages/atoms/src/components/table/tabulator-tables/core/TabulatorFull.d.ts +1 -0
  201. package/library/packages/atoms/src/components/table/tabulator-tables/core/tools/DataLoader.d.ts +3 -1
  202. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Ajax/Ajax.d.ts +1 -1
  203. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Edit/Edit.d.ts +1 -0
  204. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Edit/List.d.ts +40 -1
  205. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Filter/Filter.d.ts +10 -3
  206. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Filter/formatter-display-resolvers.d.ts +93 -0
  207. package/library/packages/atoms/src/components/table/tabulator-tables/modules/GroupRows/Group.d.ts +8 -0
  208. package/library/packages/atoms/src/components/table/tabulator-tables/modules/GroupRows/GroupComponent.d.ts +3 -1
  209. package/library/packages/atoms/src/components/table/tabulator-tables/modules/GroupRows/GroupLoadMore.d.ts +7 -0
  210. package/library/packages/atoms/src/components/table/tabulator-tables/modules/GroupRows/GroupRows.d.ts +2 -0
  211. package/library/packages/atoms/src/components/table/tabulator-tables/modules/Page/Page.d.ts +2 -2
  212. package/library/packages/atoms/src/components/textarea/textarea.d.ts +19 -4
  213. package/library/packages/atoms/src/components/video/video.d.ts +3 -1
  214. package/library/packages/events/src/cx-asset-transformation-dialog-cancel.d.ts +6 -0
  215. package/library/packages/events/src/cx-asset-transformation-dialog-confirm.d.ts +11 -0
  216. package/library/packages/events/src/cx-asset-transformation-dialog-delete.d.ts +6 -0
  217. package/library/packages/events/src/cx-bento-range-change.d.ts +9 -0
  218. package/library/packages/events/src/cx-content-builder-gallery-fetched.d.ts +10 -0
  219. package/library/packages/events/src/cx-lightbox-close.d.ts +6 -0
  220. package/library/packages/events/src/cx-lightbox-download.d.ts +11 -0
  221. package/library/packages/events/src/cx-unauthorized.d.ts +10 -0
  222. package/library/packages/events/src/cx-video-format-picker-delete.d.ts +6 -0
  223. package/library/packages/events/src/cx-video-format-picker-select.d.ts +8 -0
  224. package/library/packages/events/src/events.d.ts +11 -1
  225. package/library/packages/molecules/src/cropper/cropper.d.ts +2 -0
  226. package/library/packages/molecules/src/cropper/react/Cropper.d.ts +2 -0
  227. package/library/packages/molecules/src/estimated-reading-time/estimated-reading-time.d.ts +3 -2
  228. package/library/packages/molecules/src/folder-select/components/folder-select-tree/folder-select-tree.d.ts +26 -0
  229. package/library/packages/molecules/src/folder-select/components/folder-select-tree-item/folder-select-tree-item.d.ts +46 -0
  230. package/library/packages/molecules/src/folder-select/folder-select.d.ts +25 -0
  231. package/library/packages/molecules/src/index.d.ts +1 -0
  232. package/library/packages/molecules/src/storybook/storybook.d.ts +60 -23
  233. package/library/packages/molecules/src/timeline/timeline.d.ts +14 -0
  234. package/library/packages/molecules/src/video-format-picker/video-format-picker.d.ts +55 -0
  235. package/library/packages/molecules/src/video-format-picker/video-format-picker.styles.d.ts +2 -0
  236. package/library/packages/organisms/src/asset-link-format/asset-link-format.d.ts +9 -1
  237. package/library/packages/organisms/src/asset-link-format/components/asset-link-format-rotation/asset-link-format-rotation.d.ts +7 -7
  238. package/library/packages/organisms/src/asset-transformation-dialog/asset-transformation-dialog.d.ts +95 -0
  239. package/library/packages/organisms/src/asset-transformation-dialog/asset-transformation-dialog.styles.d.ts +2 -0
  240. package/library/packages/organisms/src/bento-grid/bento-grid.d.ts +57 -26
  241. package/library/packages/organisms/src/bento-grid/bento-layout.d.ts +44 -0
  242. package/library/packages/organisms/src/carousel/carousel.d.ts +5 -1
  243. package/library/packages/organisms/src/comment/comment.d.ts +1 -0
  244. package/library/packages/organisms/src/content-builder/components/block-picker/block-picker.d.ts +7 -0
  245. package/library/packages/organisms/src/content-builder/components/config-form/config-form.d.ts +11 -0
  246. package/library/packages/organisms/src/content-builder/components/config-manager/config-manager.d.ts +10 -0
  247. package/library/packages/organisms/src/content-builder/components/folder-picker/folder-picker.d.ts +6 -0
  248. package/library/packages/organisms/src/content-builder/configs/carousel.d.ts +6 -2
  249. package/library/packages/organisms/src/content-builder/configs/gallery.d.ts +6 -2
  250. package/library/packages/organisms/src/content-builder/configs/image.d.ts +7 -4
  251. package/library/packages/organisms/src/content-builder/configs/timeline.d.ts +5 -2
  252. package/library/packages/organisms/src/content-builder/configs/video.d.ts +11 -2
  253. package/library/packages/organisms/src/content-builder/configs-controller.d.ts +45 -4
  254. package/library/packages/organisms/src/content-builder/content-builder.d.ts +13 -0
  255. package/library/packages/organisms/src/content-builder/plugins/gallery.d.ts +45 -1
  256. package/library/packages/organisms/src/content-builder/styleController.d.ts +20 -2
  257. package/library/packages/organisms/src/index.d.ts +2 -0
  258. package/library/packages/organisms/src/lightbox/lightbox.d.ts +79 -0
  259. package/library/packages/organisms/src/lightbox/lightbox.styles.d.ts +2 -0
  260. package/library/packages/services/src/api/asset/asset.d.ts +3 -2
  261. package/library/packages/services/src/api/asset/asset.types.d.ts +84 -0
  262. package/library/packages/services/src/api/asset/asset.utils.d.ts +9 -0
  263. package/library/packages/services/src/api/endpoints.d.ts +1 -1
  264. package/library/packages/tools/src/fetch-asset/fetch-asset.d.ts +2 -1
  265. package/library/packages/tools/src/fetch-image/fetch-image.d.ts +17 -5
  266. package/library/packages/types/src/asset-click-action.d.ts +3 -1
  267. package/library/packages/types/src/bento-grid.d.ts +37 -0
  268. package/library/packages/types/src/content-builder.d.ts +27 -1
  269. package/library/packages/types/src/gallery.d.ts +0 -6
  270. package/library/packages/types/src/icon-button.d.ts +7 -0
  271. package/library/packages/types/src/menu-item.d.ts +33 -0
  272. package/library/packages/types/src/storybook.d.ts +19 -0
  273. package/library/packages/types/src/table.d.ts +37 -1
  274. package/library/packages/types/src/textarea.d.ts +4 -0
  275. package/library/packages/types/src/video-format-picker.d.ts +11 -0
  276. package/library/packages/utils/src/actions/asset-click.d.ts +1 -3
  277. package/library/packages/utils/src/custom-element/i18n.d.ts +10 -3
  278. package/library/packages/utils/src/index.d.ts +1 -0
  279. package/library/packages/utils/src/string/string.d.ts +33 -0
  280. package/library/packages/utils/src/transformation/index.d.ts +1 -0
  281. package/library/packages/utils/src/url/url.d.ts +9 -0
  282. package/library/react-web-component.d.ts +293 -29
  283. package/library/utils.js +483 -178
  284. package/package.json +4 -1
  285. package/library/chunks/_baseRest.ClTMQtN1.js +0 -67
  286. package/library/chunks/asset.CG_yXtWK.js +0 -288
  287. package/library/chunks/button.styles.Dl5IQLHU.js +0 -718
  288. package/library/chunks/component.styles.DMSLciL5.js +0 -71
  289. package/library/chunks/confirm-popover.zmOFI4e-.js +0 -288
  290. package/library/chunks/content-builder.D_phDrlo.js +0 -127
  291. package/library/chunks/dot-pagination.COBkyhoJ.js +0 -325
  292. package/library/chunks/file-on-demand.CbE-qsiP.js +0 -3740
  293. package/library/chunks/folder-select.Bl_WkhVE.js +0 -844
  294. package/library/chunks/form-control.styles.CUGhvlfT.js +0 -67
  295. package/library/chunks/header.BduX6KJP.js +0 -777
  296. package/library/chunks/identity.ByMq8VxU.js +0 -6
  297. package/library/chunks/iframe.BPKV2K7z.js +0 -160
  298. package/library/chunks/index.B3wJT3XS.js +0 -373
  299. package/library/chunks/isObjectLike.D3cpZO39.js +0 -81
  300. package/library/chunks/option.DnpkE8Xi.js +0 -296
  301. package/library/chunks/pagination.C30LoTya.js +0 -341
  302. package/library/chunks/string.B_rEG27K.js +0 -160
  303. package/library/chunks/toast.BXNbwZV8.js +0 -25
  304. package/library/chunks/typography.oDzoLbZS.js +0 -149
  305. package/library/chunks/url.LjsR2sB5.js +0 -15
  306. package/library/chunks/watch.q1sEjPWL.js +0 -501
  307. /package/library/packages/{organisms/src/asset-link-format/asset-link-format.utils.d.ts → utils/src/transformation/transformation.d.ts} +0 -0
@@ -1,6 +1,8 @@
1
1
  import { default as CxIcon } from '../../../atoms/src/components/icon/icon.ts';
2
2
  import { default as CxInput } from '../../../atoms/src/components/input/input.ts';
3
+ import { default as CxLineClamp } from '../../../atoms/src/components/line-clamp/line-clamp.ts';
3
4
  import { default as CxSelect } from '../../../atoms/src/components/select/select.ts';
5
+ import { default as CxTag } from '../../../atoms/src/components/tag/tag.ts';
4
6
  import { default as CortexElement } from '../../../base/src/cortex-element.ts';
5
7
  import { Folder, FolderSelectApi, FolderSelectVariant } from '../../../types/src/folder-select';
6
8
  import { CSSResultGroup, TemplateResult } from 'lit';
@@ -13,7 +15,9 @@ export default class CxFolderSelect extends CortexElement {
13
15
  'cx-folder-select-tree': typeof CxFolderSelectTree;
14
16
  'cx-icon': typeof CxIcon;
15
17
  'cx-input': typeof CxInput;
18
+ 'cx-line-clamp': typeof CxLineClamp;
16
19
  'cx-select': typeof CxSelect;
20
+ 'cx-tag': typeof CxTag;
17
21
  };
18
22
  private readonly localize;
19
23
  selectEl?: CxSelect;
@@ -34,6 +38,7 @@ export default class CxFolderSelect extends CortexElement {
34
38
  excludeVirtualFolders: boolean;
35
39
  extraFolderId: string;
36
40
  extraFolderTitle: string;
41
+ extraFolderIcon: string;
37
42
  firstFetchCallback: ((data: Folder[]) => void) | null;
38
43
  searchTerm: string;
39
44
  constructor();
@@ -41,10 +46,30 @@ export default class CxFolderSelect extends CortexElement {
41
46
  handleSearchTermChange(): void;
42
47
  private handleSearchTermInputChange;
43
48
  private handleSearchTermSelectChange;
49
+ private handleSelectClear;
50
+ /**
51
+ * cx-select's selectedOptions cache (which drives the tag UI in
52
+ * `multiple` mode) is only recomputed during its own `selectionChanged`
53
+ * flow — that flow doesn't run in our setup because we no-op
54
+ * `selectSetOptionSelected` for multi-select (cx-tree owns selection).
55
+ * After the tree's selection change propagates through `syncBoxes` and
56
+ * lands on each tree-item's `.selected`, ask cx-select to re-read its
57
+ * options so the rendered tag list matches.
58
+ */
59
+ private handleTreeSelectedChange;
44
60
  selectGetOptionValue(option: HTMLElement): string;
45
61
  selectGetOptionLabel(option: HTMLElement): string;
46
62
  selectGetOptionSelected(option: HTMLElement): boolean | undefined;
47
63
  selectFilterCallback(option: HTMLElement): boolean;
64
+ /**
65
+ * Custom tag renderer for cx-select multi mode. Identical visuals to the
66
+ * default tag, but the X click goes through cx-tree's selection flow
67
+ * (`option.selected = false` → `cx-selected-change` →
68
+ * cx-folder-select-tree.handleSelectedChange) rather than
69
+ * cx-select.toggleOptionSelection (which our `selectSetOptionSelected`
70
+ * no-ops in multi mode, so the default X click would do nothing).
71
+ */
72
+ selectGetTag(option: HTMLElement): TemplateResult;
48
73
  selectSetOptionSelected(option: HTMLElement, selected: boolean): void;
49
74
  updateFunctionProps(): void;
50
75
  handleOpenChange(): void;
@@ -33,4 +33,5 @@ export { default as CxStepperWizard } from './stepper-wizard/stepper-wizard';
33
33
  export { default as CxStorybook } from './storybook/storybook';
34
34
  export { default as CxTimeline } from './timeline/timeline';
35
35
  export { default as CxTypeface } from './typeface/typeface';
36
+ export { default as CxVideoFormatPicker } from './video-format-picker/video-format-picker';
36
37
  export { default as CxViewAndSort } from './view-and-sort/view-and-sort';
@@ -1,56 +1,93 @@
1
1
  import { default as CxButton } from '../../../atoms/src/components/button/button.ts';
2
2
  import { default as CxCard } from '../../../atoms/src/components/card/card.ts';
3
3
  import { default as CxCheckbox } from '../../../atoms/src/components/checkbox/checkbox.ts';
4
- import { default as CxGrid } from '../../../atoms/src/components/grid/grid.ts';
5
- import { default as CxGridItem } from '../../../atoms/src/components/grid-item/grid-item.ts';
6
4
  import { default as CxIconButton } from '../../../atoms/src/components/icon-button/icon-button.ts';
7
5
  import { default as CxInput } from '../../../atoms/src/components/input/input.ts';
8
6
  import { default as CxMarkdown } from '../../../atoms/src/components/markdown/markdown.ts';
9
7
  import { default as CxMutationObserver } from '../../../atoms/src/components/mutation-observer/mutation-observer.ts';
8
+ import { default as CxOption } from '../../../atoms/src/components/option/option.ts';
10
9
  import { default as CxSelect } from '../../../atoms/src/components/select/select.ts';
11
- import { default as CxSpace } from '../../../atoms/src/components/space/space.ts';
10
+ import { default as CxTextarea } from '../../../atoms/src/components/textarea/textarea.ts';
12
11
  import { default as CortexElement } from '../../../base/src/cortex-element.ts';
12
+ import { CxMutationEvent } from '../../../events/src/events.ts';
13
+ import { StorybookPropConfig } from '../../../types/src/storybook';
13
14
  import { CSSResultGroup, TemplateResult } from 'lit';
14
15
 
16
+ /**
17
+ * @summary A live playground that introspects a slotted Cortex component and
18
+ * renders editable controls for its public reactive properties and slots.
19
+ *
20
+ * @description Used in `apps/docs` pages to demonstrate components. The
21
+ * storybook reads `elementProperties` from the slotted target and renders a
22
+ * checkbox / input / select per property based on its declared `type`. Object
23
+ * and array properties accept JSON in the input. Function properties are
24
+ * intentionally **not** rendered — they cannot be expressed as text input and
25
+ * writing them as attributes corrupts their value (the function gets
26
+ * serialized to its source code string by `String(fn)`).
27
+ *
28
+ * @slot (default) - The component to demo. The first assigned element is
29
+ * inspected; pass `element-selector` to drill into a descendant.
30
+ *
31
+ * @csspart base - The card wrapper that hosts the demo and the controls.
32
+ */
15
33
  export default class CxStorybook extends CortexElement {
16
34
  static readonly styles: CSSResultGroup;
17
35
  static readonly dependencies: {
18
36
  'cx-button': typeof CxButton;
19
37
  'cx-card': typeof CxCard;
20
38
  'cx-checkbox': typeof CxCheckbox;
21
- 'cx-grid': typeof CxGrid;
22
- 'cx-grid-item': typeof CxGridItem;
23
39
  'cx-icon-button': typeof CxIconButton;
24
40
  'cx-input': typeof CxInput;
25
41
  'cx-markdown': typeof CxMarkdown;
26
42
  'cx-mutation-observer': typeof CxMutationObserver;
43
+ 'cx-option': typeof CxOption;
27
44
  'cx-select': typeof CxSelect;
28
- 'cx-space': typeof CxSpace;
45
+ 'cx-textarea': typeof CxTextarea;
29
46
  };
30
47
  defaultSlot: HTMLSlotElement;
31
48
  mutationObserver: CxMutationObserver;
49
+ /**
50
+ * CSS selector relative to the first slotted element. When set, the storybook
51
+ * targets the matching descendant instead of the slotted root element.
52
+ */
32
53
  elementSelector: string;
33
- storybookConfig: Record<string, any[]>;
34
- config: Record<string, {
35
- default: any;
36
- type: any;
37
- }>;
38
- props: Record<string, any>;
54
+ /**
55
+ * Per-property metadata used to render richer controls:
56
+ *
57
+ * - Array of strings → renders a `cx-select` with each string as an option.
58
+ * - Special key `slot` → an array of slot names that the user can append.
59
+ */
60
+ storybookConfig: Record<string, string[]>;
61
+ /** Introspected metadata for each editable public property of the target. */
62
+ config: Record<string, StorybookPropConfig>;
63
+ /** Live values for each editable property; mirrors the target component. */
64
+ props: Record<string, unknown>;
65
+ /** The component instance being demoed (the slotted root or a descendant). */
39
66
  target: HTMLElement | null;
67
+ /** User-authored slot content keyed by slot name; each entry is an HTML string. */
40
68
  slots: Record<string, string[]>;
41
- constructor();
42
- private handleInputChange;
43
- private handleAddSlot;
44
- private handleSlotInputChange;
45
- private getDefaultSlotValues;
46
- private getComponentDefaultProps;
47
- private updateRenderedComponent;
48
- private handleAddSlotButtonClick;
49
- private renderControls;
50
- private handleAttributeChange;
51
69
  connectedCallback(): void;
52
- disconnectedCallback(): void;
70
+ handleElementSelectorChange(): void;
53
71
  handleSlotChange(): void;
72
+ handleAttributeChange(event: CxMutationEvent): void;
73
+ private resolveTargetFromSlot;
74
+ private introspectTargetConfig;
75
+ private collectExistingSlotEntries;
76
+ private readInitialProps;
77
+ private normalizePropValue;
78
+ private applyPropsToTarget;
79
+ private applyPropToTarget;
80
+ private syncPropFromAttribute;
81
+ private handlePropChange;
82
+ private handleSlotEntryChange;
83
+ private handleSlotEntryDelete;
84
+ private handleAddSlotButtonClick;
85
+ private appendSlotEntry;
86
+ private rerenderSlotEntries;
87
+ private renderControl;
88
+ private formatControlValue;
89
+ private renderSlotControls;
90
+ private renderControls;
54
91
  render(): TemplateResult;
55
92
  }
56
93
  declare global {
@@ -4,6 +4,7 @@ import { default as CxTab } from '../../../atoms/src/components/tab/tab.ts';
4
4
  import { default as CxTabGroup } from '../../../atoms/src/components/tab-group/tab-group.ts';
5
5
  import { default as CxTabPanel } from '../../../atoms/src/components/tab-panel/tab-panel.ts';
6
6
  import { default as CortexElement } from '../../../base/src/cortex-element.ts';
7
+ import { Transformation } from '../../../types/src/asset-link-format';
7
8
  import { TimelineItem } from '../../../types/src/timeline';
8
9
  import { CSSResultGroup } from 'lit';
9
10
 
@@ -20,6 +21,8 @@ export default class CxTimeline extends CortexElement {
20
21
  'cx-tab-panel': typeof CxTabPanel;
21
22
  };
22
23
  private readonly localize;
24
+ private apiSearchAssets;
25
+ private thumbnailRequestVersion;
23
26
  tabGroup?: CxTabGroup;
24
27
  data: TimelineItem[];
25
28
  /**
@@ -42,6 +45,17 @@ export default class CxTimeline extends CortexElement {
42
45
  * The minimum width of the tab.
43
46
  */
44
47
  minTabWidth: number;
48
+ /**
49
+ * Asset transformation proxy format key.
50
+ */
51
+ format: string;
52
+ /**
53
+ * Asset transformations applied to the image.
54
+ */
55
+ transformations: Transformation[];
56
+ /** Proxy URLs resolved from apiSearchAssets, keyed by item.id. */
57
+ private resolvedThumbnails;
58
+ handleDataChange(): Promise<void>;
45
59
  private handlePreviousClick;
46
60
  private handleNextClick;
47
61
  render(): import('lit').TemplateResult<1>;
@@ -0,0 +1,55 @@
1
+ import { default as CxButton } from '../../../atoms/src/components/button/button.ts';
2
+ import { default as CxIconButton } from '../../../atoms/src/components/icon-button/icon-button.ts';
3
+ import { default as CxInput } from '../../../atoms/src/components/input/input.ts';
4
+ import { default as CxSpace } from '../../../atoms/src/components/space/space.ts';
5
+ import { default as CxTypography } from '../../../atoms/src/components/typography/typography.ts';
6
+ import { default as CortexElement } from '../../../base/src/cortex-element.ts';
7
+ import { VideoFormatValue } from '../../../types/src/video-format-picker';
8
+ import { CSSResultGroup } from 'lit';
9
+
10
+ /**
11
+ * @summary The `cx-video-format-picker` component lets users choose and clear a video display format.
12
+ *
13
+ * @event cx-video-format-select - Emitted when a video format is selected. Detail is a `VideoFormatValue`.
14
+ * @event cx-video-format-delete - Emitted when the selected format is cleared.
15
+ * @event cx-asset-request-status - Emitted when the format request status changes.
16
+ */
17
+ export default class CxVideoFormatPicker extends CortexElement {
18
+ static readonly styles: CSSResultGroup;
19
+ static readonly dependencies: {
20
+ 'cx-button': typeof CxButton;
21
+ 'cx-icon-button': typeof CxIconButton;
22
+ 'cx-input': typeof CxInput;
23
+ 'cx-space': typeof CxSpace;
24
+ 'cx-typography': typeof CxTypography;
25
+ };
26
+ private readonly localize;
27
+ inputEl?: CxInput;
28
+ /** The currently selected video format value. */
29
+ value: VideoFormatValue | undefined;
30
+ /** Form field name. */
31
+ name: string;
32
+ /** The encrypted asset ID of the video asset to request formats for. */
33
+ assetId: string;
34
+ /** Whether a value is required. */
35
+ required: boolean;
36
+ /** Disables the picker. */
37
+ disabled: boolean;
38
+ /**
39
+ * A callback invoked when the user requests to select a video format.
40
+ * It receives the asset ID and the current value, and should return a
41
+ * promise that resolves to a `VideoFormatValue` or null when cancelled.
42
+ */
43
+ onRequestVideoFormat: ((assetId: string, value?: VideoFormatValue) => Promise<VideoFormatValue | null | undefined>) | undefined;
44
+ private get hasValue();
45
+ private handleRequestFormatClick;
46
+ private handleDeleteClick;
47
+ handleValueChange(): Promise<void>;
48
+ private renderFormatDisplay;
49
+ render(): import('lit').TemplateResult<1>;
50
+ }
51
+ declare global {
52
+ interface HTMLElementTagNameMap {
53
+ 'cx-video-format-picker': CxVideoFormatPicker;
54
+ }
55
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: import('lit').CSSResult;
2
+ export default _default;
@@ -42,6 +42,10 @@ export default class CxAssetLinkFormat extends CortexElement {
42
42
  * @example 'https://qa-latest.orangelogic.com'
43
43
  */
44
44
  baseUrl: string | undefined;
45
+ /**
46
+ * The token used for authentication with the asset service.
47
+ */
48
+ token: string | undefined;
45
49
  /**
46
50
  * The asset to be formatted.
47
51
  * This is an object that contains the asset's details such as ID, original URL, image URL, width, and height.
@@ -89,6 +93,10 @@ export default class CxAssetLinkFormat extends CortexElement {
89
93
  */
90
94
  selectedProxy: string;
91
95
  useCustomExtension: boolean;
96
+ noMetadata: boolean;
97
+ noCrop: boolean;
98
+ noResize: boolean;
99
+ noRotate: boolean;
92
100
  lastImageSize: {
93
101
  height: number;
94
102
  width: number;
@@ -252,7 +260,7 @@ export default class CxAssetLinkFormat extends CortexElement {
252
260
  private handleAssetChange;
253
261
  private handleProxiesChange;
254
262
  handleSelectedProxyChange(oldValue: unknown): Promise<void>;
255
- handleLoadingChange(): Promise<void>;
263
+ handleLoadingChange(): void;
256
264
  private handleSelectedFormatChange;
257
265
  private handleResizeSizeChange;
258
266
  private handleCropSizeChange;
@@ -41,21 +41,21 @@ export default class CxAssetLinkFormatRotation extends CortexElement {
41
41
  /**
42
42
  * The value of the defined quality.
43
43
  * This value represents the quality of the asset link format, ranging from 1 to 100.
44
- * @default 100
44
+ * @default 0
45
45
  */
46
46
  value: number;
47
+ /**
48
+ * The value of the defined quality.
49
+ * This value represents the quality of the asset link format, ranging from 1 to 100.
50
+ * @default 0
51
+ */
52
+ defaultValue: number;
47
53
  /**
48
54
  * The loading state of the component.
49
55
  * This is used to indicate that an operation is in progress, such as applying a new rotation value.
50
56
  * @default false
51
57
  */
52
58
  loading: boolean;
53
- /**
54
- * The invalid value state of the component.
55
- * This is used to indicate that the input value is invalid, such as when it is not a number or out of range.
56
- * @default false
57
- */
58
- invalidValue: boolean;
59
59
  handleOpenChange(): void;
60
60
  private handleRotationChange;
61
61
  private handleButtonClick;
@@ -0,0 +1,95 @@
1
+ import { default as CxButton } from '../../../atoms/src/components/button/button.ts';
2
+ import { default as CxDialog } from '../../../atoms/src/components/dialog/dialog.ts';
3
+ import { default as CxIconButton } from '../../../atoms/src/components/icon-button/icon-button.ts';
4
+ import { default as CxSpace } from '../../../atoms/src/components/space/space.ts';
5
+ import { default as CxSpinner } from '../../../atoms/src/components/spinner/spinner.ts';
6
+ import { default as CxTypography } from '../../../atoms/src/components/typography/typography.ts';
7
+ import { default as CortexElement } from '../../../base/src/cortex-element.ts';
8
+ import { default as CxCropper } from '../../../molecules/src/cropper/cropper.ts';
9
+ import { Transformation } from '../../../types/src/asset-link-format';
10
+ import { default as CxAssetLinkFormat } from '../asset-link-format/asset-link-format';
11
+
12
+ /**
13
+ * @summary Dialog that wraps `cx-cropper` and `cx-asset-link-format` side by side,
14
+ * allowing users to preview and apply image transformations.
15
+ *
16
+ * @slot trigger - Opens the dialog on click or keyboard activation. Typically a `cx-button` or
17
+ * `cx-icon-button`. Automatically disabled when `asset-id` is not set.
18
+ *
19
+ * @event cx-asset-transformation-dialog-cancel - Emitted when the user closes or cancels the dialog.
20
+ * @event {{ detail: { format: string; transformations: Transformation[] } }} cx-asset-transformation-dialog-confirm - Emitted when the user saves, with the selected proxy id and transformation array.
21
+ * @event cx-asset-transformation-dialog-delete - Emitted when the user clears the saved transformations via the delete button.
22
+ */
23
+ export default class CxAssetTransformationDialog extends CortexElement {
24
+ static readonly styles: import('lit').CSSResult[];
25
+ static readonly dependencies: {
26
+ 'cx-asset-link-format': typeof CxAssetLinkFormat;
27
+ 'cx-button': typeof CxButton;
28
+ 'cx-cropper': typeof CxCropper;
29
+ 'cx-dialog': typeof CxDialog;
30
+ 'cx-icon-button': typeof CxIconButton;
31
+ 'cx-space': typeof CxSpace;
32
+ 'cx-spinner': typeof CxSpinner;
33
+ 'cx-typography': typeof CxTypography;
34
+ };
35
+ private readonly localize;
36
+ private readonly fetchAssetController;
37
+ private readonly hasSlotController;
38
+ private apiGetAvailableProxies;
39
+ /** Stores the accessible trigger element for focus return and ARIA updates. */
40
+ private accessibleTrigger;
41
+ private readonly triggerSlot;
42
+ private readonly assetLinkFormat;
43
+ /** Asset ID used to fetch asset data when the dialog opens. */
44
+ assetId: string;
45
+ /** Controls dialog open/close state. */
46
+ open: boolean;
47
+ /** Boundary element for cx-dialog positioning. */
48
+ boundary: HTMLElement;
49
+ baseUrl: string;
50
+ /** Authentication token passed to the asset service. */
51
+ token: string;
52
+ /** Currently selected proxy format, passed back into cx-asset-link-format on reopen. */
53
+ format: string;
54
+ /** The transformations applied when the user last saved, passed back into cx-asset-link-format on reopen. */
55
+ transformations: Transformation[];
56
+ /** Show stack of layers indicating the transformations will be applied to multiple assets. */
57
+ multiple: boolean;
58
+ /** Hide the crop panel inside cx-asset-link-format. */
59
+ noCrop: boolean;
60
+ /** Hide the resize panel inside cx-asset-link-format. */
61
+ noResize: boolean;
62
+ /** Hide the rotate panel inside cx-asset-link-format. */
63
+ noRotate: boolean;
64
+ /** Asset data fetched on cx-show. */
65
+ private asset;
66
+ /** Available proxy formats fetched alongside the asset. */
67
+ private proxies;
68
+ private get hasTransformations();
69
+ handleAssetIdChange(): Promise<void>;
70
+ handleOpenChange(): void;
71
+ /** Syncs disabled state and ARIA attributes on the slotted trigger element.
72
+ * For cx-button/cx-icon-button, ARIA is set on the inner <button> so screen readers
73
+ * announce the correct role/state rather than the custom-element host. */
74
+ private updateAccessibleTrigger;
75
+ /** Fetches the asset and its available proxies when the dialog opens.
76
+ * Guards on `result.id` because `fetchAssetByID` returns `{}` on network error. */
77
+ private handleDialogShow;
78
+ private handleTriggerClick;
79
+ private handleTriggerKeyDown;
80
+ /** Prevents the default scroll action for Space on keyup (some browsers fire scroll on keyup). */
81
+ private handleTriggerKeyUp;
82
+ private handleTriggerSlotChange;
83
+ private handleClose;
84
+ private handleDeleteClick;
85
+ private handleRequestClose;
86
+ private handleSave;
87
+ private handleCancel;
88
+ private handleAssetLinkFormatShow;
89
+ render(): import('lit').TemplateResult<1>;
90
+ }
91
+ declare global {
92
+ interface HTMLElementTagNameMap {
93
+ 'cx-asset-transformation-dialog': CxAssetTransformationDialog;
94
+ }
95
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: import('lit').CSSResult;
2
+ export default _default;
@@ -4,26 +4,41 @@ import { default as CxGalleryItem } from '../../../molecules/src/gallery-item/ga
4
4
  import { Easing } from '../../../types/src/index.ts';
5
5
  import { Filler, FillerMode } from '../../../types/src/bento-grid';
6
6
  import { GalleryItem, GalleryItemContentPosition, GalleryItemContentVariant, GalleryItemEffect, GalleryItemShowContentType, GalleryItemTextRevealStyle, GalleryItemZoomStyle } from '../../../types/src/gallery-item';
7
- import { CSSResultGroup } from 'lit';
7
+ import { CSSResultGroup, PropertyValues } from 'lit';
8
8
  import { StaticValue } from 'lit/static-html.js';
9
9
 
10
10
  /**
11
- * @summary CxBentoGrid - A responsive bento grid component with fixed cell height & responsive breakpoints
11
+ * @summary CxBentoGrid - A responsive bento grid component with fixed cell height & responsive breakpoints.
12
+ * Renders only the items visible in the viewport (scroll-based virtualization).
12
13
  *
13
14
  * @cssproperty [--item-height=200px] - The height of each grid item.
14
15
  *
15
16
  * @csspart base - The bento grid container
16
17
  * @csspart item - The item part of the bento grid
17
18
  *
18
- * @event {{ currentColumnCount }} cx-bento-resize - Emitted when the grid layout recalculates
19
+ * @event {{ currentColumnCount: number }} cx-bento-resize - Emitted when the grid layout recalculates
20
+ * @event {{ first: number; last: number }} cx-bento-range-change - Emitted when the visible item range changes due to scroll or layout update
19
21
  */
20
22
  export default class CxBentoGrid extends CortexElement {
21
23
  static readonly styles: CSSResultGroup;
24
+ /** Minimum scroll delta (px) required to trigger a virtual range update. */
25
+ private static readonly SCROLL_THRESHOLD;
22
26
  static readonly dependencies: {
23
27
  'cx-gallery-item': typeof CxGalleryItem;
24
28
  'cx-tooltip': typeof CxTooltip;
25
29
  };
26
30
  private readonly localize;
31
+ /** Pure layout calculator — computes absolute pixel positions. */
32
+ private readonly bentoLayout;
33
+ /** RAF gate for scroll handler to avoid layout thrash. */
34
+ private _scrollRaf;
35
+ /** Cached viewport height — updated on resize only, not on every scroll. */
36
+ private _viewportHeight;
37
+ /** Watches the host element for size changes so the grid reflows when its container resizes. */
38
+ private _resizeObserver;
39
+ /** Tracks the last emitted range to avoid firing cx-bento-range-change when the range hasn't changed. */
40
+ private _lastEmittedFirst;
41
+ private _lastEmittedLast;
27
42
  /**
28
43
  * References the main container element of the bento grid.
29
44
  * This element is used to calculate the grid width and apply
@@ -76,6 +91,13 @@ export default class CxBentoGrid extends CortexElement {
76
91
  * The maximum number of rows to show.
77
92
  */
78
93
  maxRows: number;
94
+ /**
95
+ * Total number of items in the dataset, including those not yet loaded.
96
+ * When set, the scroll container height is extended to reflect the full dataset
97
+ * size so the scrollbar is accurate from the first render.
98
+ * Unloaded slots are approximated as 1×1 items.
99
+ */
100
+ totalItems: number;
79
101
  /**
80
102
  * The show content type.
81
103
  */
@@ -140,14 +162,8 @@ export default class CxBentoGrid extends CortexElement {
140
162
  * Specifies the easing function to use when changing slides.
141
163
  */
142
164
  easing: Easing;
143
- /**
144
- * Internal state that holds the computed CSS styles for the grid container.
145
- */
165
+ /** CSS styles applied to the grid container element. */
146
166
  private containerStyles;
147
- /**
148
- * Tracks the computed styles for the grid container.
149
- */
150
- private computedStyles;
151
167
  /**
152
168
  * Tracks the previous column count to detect when the grid layout recalculates
153
169
  * prevents unnecessary grid updates when the column count hasn't changed.
@@ -158,6 +174,14 @@ export default class CxBentoGrid extends CortexElement {
158
174
  * Tracks the currently hovered item.
159
175
  */
160
176
  private hoveredItemId;
177
+ /** Total scroll height in px — drives the container height for an accurate scrollbar. */
178
+ private scrollSize;
179
+ /** Current scroll offset in pixels from the top of the container. */
180
+ private scrollOffset;
181
+ /** Inclusive index of the first item in the rendered virtual window. */
182
+ private virtualFirst;
183
+ /** Inclusive index of the last item in the rendered virtual window. */
184
+ private virtualLast;
161
185
  private isTooltipShown;
162
186
  protected galleryItemTag: string;
163
187
  /**
@@ -177,6 +201,16 @@ export default class CxBentoGrid extends CortexElement {
177
201
  constructor();
178
202
  runConnectedCallback(): void;
179
203
  disconnectedCallback(): void;
204
+ runFirstUpdated(): void;
205
+ /**
206
+ * Returns the visible viewport height for virtualization.
207
+ *
208
+ * `containerEl.clientHeight` is unsafe here because, once `containerStyles.height`
209
+ * is set to the laid-out `scrollSize`, the container height equals the entire
210
+ * grid. We walk up to the nearest scrollable ancestor (or fall back to the
211
+ * window) to keep `getActiveRange()` honest.
212
+ */
213
+ private measureViewportHeight;
180
214
  private showTooltip;
181
215
  private hideTooltip;
182
216
  /**
@@ -190,23 +224,26 @@ export default class CxBentoGrid extends CortexElement {
190
224
  private getItemSize;
191
225
  /**
192
226
  * Determines the number of columns for the grid based on the current
193
- * container width and breakpoints.
227
+ * container width and breakpoints. Also builds filledData when filler is active.
194
228
  */
195
229
  private setupGrid;
196
230
  /**
197
- * Calculates the optimal positioning for each bento grid item within the grid layout.
198
- * @internal Pass calculated total columns and styles values to avoid recalculating in resize and watches
231
+ * Runs BentoLayout.compute() then updates scrollSize and active virtual range.
199
232
  */
200
- private updateGrid;
233
+ private computeLayout;
234
+ /** Recalculates which items fall within the current scroll viewport. */
235
+ private updateActiveRange;
201
236
  /**
202
- * Debounced event handler that responds to container resize events.
237
+ * Returns the index of the last item whose rowStart is within maxRows.
203
238
  */
204
- private handleResize;
239
+ private maxRowsLastIndex;
205
240
  /**
206
- * Watch max columns change & update grid
241
+ * Debounced event handler that responds to container resize events.
207
242
  */
208
- handleGridChange(): void;
209
- handleEasingChange(): void;
243
+ private handleResize;
244
+ /** RAF-gated scroll handler — updates scroll offset and rerenders visible range. */
245
+ private handleScroll;
246
+ willUpdate(changed: PropertyValues): void;
210
247
  /**
211
248
  * Get content position based on the size of the item.
212
249
  */
@@ -222,13 +259,7 @@ export default class CxBentoGrid extends CortexElement {
222
259
  private handleBlur;
223
260
  private computeBentoItemEffectStyles;
224
261
  renderGalleryItem(galleryItem: {
225
- computedStyles: {
226
- gridColumnEnd: number;
227
- gridColumnStart: number;
228
- gridRowEnd: number;
229
- gridRowStart: number;
230
- height: string;
231
- } | undefined;
262
+ actualIndex: number;
232
263
  index: number;
233
264
  item: GalleryItem;
234
265
  }): import('lit').TemplateResult;
@@ -0,0 +1,44 @@
1
+ import { BentoActiveRange, BentoItemPosition, BentoLayoutParams } from '../../../types/src/bento-grid';
2
+ import { GalleryItem } from '../../../types/src/gallery-item';
3
+
4
+ /**
5
+ * Pure layout calculator for a bento grid.
6
+ * Computes absolute pixel positions for items that can span multiple
7
+ * columns and rows. Call `compute()` after data or layout config changes,
8
+ * then `getActiveRange()` on every scroll event to know which items to render.
9
+ */
10
+ export declare class BentoLayout {
11
+ private _positions;
12
+ /**
13
+ * Sorted array of each item's `top` pixel value (index matches item index).
14
+ * Non-strictly increasing (items in the same row share the same `top`).
15
+ * Used for O(log N) binary search inside getActiveRange().
16
+ */
17
+ private _topPositions;
18
+ private _scrollSize;
19
+ /** Total scrollable height in pixels after the last compute() call. */
20
+ get scrollSize(): number;
21
+ /** Returns the pixel position for item at `idx`, or undefined if not yet computed. */
22
+ getPosition(idx: number): BentoItemPosition | undefined;
23
+ /**
24
+ * Runs the bin-packing algorithm and populates pixel positions for all items.
25
+ * Synchronous — completes in < 1 ms for typical datasets (≤ 10 000 items).
26
+ */
27
+ compute(items: GalleryItem[], params: BentoLayoutParams): void;
28
+ /**
29
+ * Returns the inclusive [first, last] item index range that overlaps the
30
+ * visible window [scrollTop − overhang, scrollTop + viewportHeight + overhang].
31
+ * O(log N) via binary search on the sorted _topPositions array.
32
+ */
33
+ getActiveRange(scrollTop: number, viewportHeight: number, overhang?: number): BentoActiveRange;
34
+ /**
35
+ * Returns the smallest index i such that _topPositions[i] >= value.
36
+ * Returns n if all values are < value.
37
+ */
38
+ private lowerBound;
39
+ /**
40
+ * Returns the smallest index i such that _topPositions[i] > value.
41
+ * Returns n if all values are <= value.
42
+ */
43
+ private upperBound;
44
+ }