@lavalogic/scoria 0.35.0 → 0.37.0

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 (555) hide show
  1. package/README.md +58 -58
  2. package/dist/Components/AccordionGroup.svelte +46 -42
  3. package/dist/Components/AccordionGroupButton.svelte +106 -106
  4. package/dist/Components/AccordionGroupButtonProps.d.ts +27 -8
  5. package/dist/Components/AccordionGroupProps.d.ts +10 -2
  6. package/dist/Components/Action.svelte +137 -139
  7. package/dist/Components/ActionProps.d.ts +23 -3
  8. package/dist/Components/AlertModal.svelte +176 -125
  9. package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte +1126 -0
  10. package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte.d.ts +4 -0
  11. package/dist/Components/AppointmentCalendar/AppointmentCalendarProps.d.ts +92 -0
  12. package/dist/Components/AppointmentCalendar/AppointmentCalendarProps.js +12 -0
  13. package/dist/Components/Base/BaseModal.svelte +172 -0
  14. package/dist/Components/Base/BaseModal.svelte.d.ts +4 -0
  15. package/dist/Components/Base/BaseModalProps.d.ts +73 -0
  16. package/dist/Components/Base/BaseModalProps.js +1 -0
  17. package/dist/Components/Base/ContextWrapper.svelte +72 -50
  18. package/dist/Components/Base/ContextWrapper.svelte.d.ts +24 -5
  19. package/dist/Components/Base/ContextWrapperProps.d.ts +22 -0
  20. package/dist/Components/Base/Pagination.svelte +198 -190
  21. package/dist/Components/Base/Pagination.svelte.d.ts +12 -2
  22. package/dist/Components/Base/PaginationProps.d.ts +60 -3
  23. package/dist/Components/Base/Snippets.svelte +36 -29
  24. package/dist/Components/Base/Snippets.svelte.d.ts +5 -1
  25. package/dist/Components/BigRadioSet.svelte +39 -30
  26. package/dist/Components/BigRadioSetProps.d.ts +17 -1
  27. package/dist/Components/Bubble.svelte +110 -77
  28. package/dist/Components/Bubble.svelte.d.ts +23 -2
  29. package/dist/Components/BubbleProps.d.ts +55 -4
  30. package/dist/Components/Button.svelte +209 -197
  31. package/dist/Components/ButtonProps.d.ts +66 -1
  32. package/dist/Components/Checkbox.svelte +100 -72
  33. package/dist/Components/Checkbox.svelte.d.ts +1 -12
  34. package/dist/Components/CheckboxProps.d.ts +27 -0
  35. package/dist/Components/CheckboxProps.js +1 -0
  36. package/dist/Components/CollapsibleCard.svelte +114 -83
  37. package/dist/Components/CollapsibleCardProps.d.ts +22 -1
  38. package/dist/Components/Contexts/ContextMenu.svelte +178 -157
  39. package/dist/Components/Contexts/ContextMenu.svelte.d.ts +26 -0
  40. package/dist/Components/Contexts/ContextMenuDivider.svelte +19 -11
  41. package/dist/Components/Contexts/ContextMenuDivider.svelte.d.ts +9 -0
  42. package/dist/Components/Contexts/ContextMenuOption.svelte +66 -57
  43. package/dist/Components/Contexts/ContextMenuOption.svelte.d.ts +12 -1
  44. package/dist/Components/Contexts/ContextMenuOptionProps.d.ts +34 -2
  45. package/dist/Components/Contexts/Toast.svelte +88 -64
  46. package/dist/Components/Contexts/Toast.svelte.d.ts +14 -0
  47. package/dist/Components/Contexts/ToastContainer.svelte +68 -49
  48. package/dist/Components/Contexts/ToastContainer.svelte.d.ts +14 -0
  49. package/dist/Components/Contexts/ToastProps.d.ts +14 -1
  50. package/dist/Components/Contexts/Tooltip.svelte +47 -36
  51. package/dist/Components/Contexts/Tooltip.svelte.d.ts +10 -0
  52. package/dist/Components/DataMatrixIcon.svelte +113 -42
  53. package/dist/Components/DataMatrixIconProps.d.ts +73 -1
  54. package/dist/Components/DateInput.svelte +144 -109
  55. package/dist/Components/DateInput.svelte.d.ts +1 -1
  56. package/dist/Components/DateOnlyInputProps.d.ts +31 -5
  57. package/dist/Components/DatePicker.svelte +301 -313
  58. package/dist/Components/DatePickerProps.d.ts +18 -1
  59. package/dist/Components/DateTimeInputProps.d.ts +30 -5
  60. package/dist/Components/DesktopModal.svelte +90 -119
  61. package/dist/Components/DesktopModalProps.d.ts +5 -4
  62. package/dist/Components/Dial.svelte +213 -151
  63. package/dist/Components/DialProps.d.ts +74 -2
  64. package/dist/Components/DimensionInput.svelte +171 -185
  65. package/dist/Components/DimensionInput.svelte.d.ts +1 -1
  66. package/dist/Components/DimensionInputProps.d.ts +39 -4
  67. package/dist/Components/DragMenu/DragMenuHolder.svelte +119 -107
  68. package/dist/Components/DragMenu/DragMenuHolderProps.d.ts +30 -1
  69. package/dist/Components/DragMenu/DraggableCard.svelte +77 -41
  70. package/dist/Components/DragMenu/DraggableCardProps.d.ts +27 -1
  71. package/dist/Components/FileCard.svelte +24 -20
  72. package/dist/Components/FileCardProps.d.ts +17 -1
  73. package/dist/Components/FileUpload.svelte +236 -196
  74. package/dist/Components/FileUploadProps.d.ts +34 -4
  75. package/dist/Components/GridInput.svelte +201 -191
  76. package/dist/Components/GridInput.svelte.d.ts +5 -5
  77. package/dist/Components/GridInputProps.d.ts +4 -1
  78. package/dist/Components/GridInputSet.svelte +31 -24
  79. package/dist/Components/GridInputSet.svelte.d.ts +5 -5
  80. package/dist/Components/GridInputSetProps.d.ts +4 -2
  81. package/dist/Components/HorizontalTabGroup.svelte +81 -79
  82. package/dist/Components/HorizontalTabGroupButton.svelte +51 -103
  83. package/dist/Components/HorizontalTabGroupProps.d.ts +15 -2
  84. package/dist/Components/Icon.svelte +144 -103
  85. package/dist/Components/IconProps.d.ts +54 -6
  86. package/dist/Components/Icons.d.ts +8 -0
  87. package/dist/Components/Icons.js +591 -572
  88. package/dist/Components/LoadingAnimation.svelte +39 -39
  89. package/dist/Components/LoadingAnimation.svelte.d.ts +1 -3
  90. package/dist/Components/LoadingAnimationProps.d.ts +16 -0
  91. package/dist/Components/LoadingAnimationProps.js +1 -0
  92. package/dist/Components/LoadingModal.svelte +48 -50
  93. package/dist/Components/LoadingModal.svelte.d.ts +1 -4
  94. package/dist/Components/LoadingModalProps.d.ts +17 -0
  95. package/dist/Components/LoadingModalProps.js +1 -0
  96. package/dist/Components/LoadingOverlay.svelte +28 -30
  97. package/dist/Components/LoadingOverlay.svelte.d.ts +1 -5
  98. package/dist/Components/LoadingOverlayProps.d.ts +28 -0
  99. package/dist/Components/LoadingOverlayProps.js +1 -0
  100. package/dist/Components/Modal.svelte +250 -255
  101. package/dist/Components/Modal.svelte.d.ts +1 -25
  102. package/dist/Components/ModalProps.d.ts +65 -0
  103. package/dist/Components/ModalProps.js +1 -0
  104. package/dist/Components/MultiSelect.svelte +238 -226
  105. package/dist/Components/MultiSelectCommonProps.d.ts +33 -4
  106. package/dist/Components/MultiSelectPropsAsObject.d.ts +5 -0
  107. package/dist/Components/MultiSelectPropsAsPrimitive.d.ts +6 -0
  108. package/dist/Components/Nav/CallbackButtonWithIcon.d.ts +22 -1
  109. package/dist/Components/Nav/Nav.svelte +115 -110
  110. package/dist/Components/Nav/Nav.svelte.d.ts +23 -2
  111. package/dist/Components/Nav/NavProps.d.ts +50 -3
  112. package/dist/Components/Nav/NavServiceMenuList.svelte +44 -35
  113. package/dist/Components/Nav/NavServiceMenuListProps.d.ts +25 -1
  114. package/dist/Components/Nav/NavTab.svelte +62 -91
  115. package/dist/Components/Nav/NavTab.svelte.d.ts +23 -2
  116. package/dist/Components/Nav/NavTabProps.d.ts +16 -2
  117. package/dist/Components/Nav/ServiceMenuItem.svelte +101 -92
  118. package/dist/Components/Nav/ServicesNav.svelte +96 -70
  119. package/dist/Components/Nav/ServicesNav.svelte.d.ts +23 -2
  120. package/dist/Components/Nav/ServicesNavProps.d.ts +20 -4
  121. package/dist/Components/Nav/SideMenuItemProps.d.ts +16 -0
  122. package/dist/Components/NumberInput.svelte +155 -145
  123. package/dist/Components/NumberInputProps.d.ts +37 -0
  124. package/dist/Components/PageHeading.svelte +25 -36
  125. package/dist/Components/PageHeading.svelte.d.ts +1 -6
  126. package/dist/Components/PageHeadingProps.d.ts +23 -0
  127. package/dist/Components/PageHeadingProps.js +1 -0
  128. package/dist/Components/PasswordInput.svelte +85 -73
  129. package/dist/Components/PasswordInput.svelte.d.ts +2 -2
  130. package/dist/Components/PasswordInputProps.d.ts +21 -0
  131. package/dist/Components/PasswordInputProps.js +1 -0
  132. package/dist/Components/Portal.svelte +36 -25
  133. package/dist/Components/PortalProps.d.ts +20 -1
  134. package/dist/Components/ProgressBubble.svelte +129 -84
  135. package/dist/Components/ProgressBubbleProps.d.ts +23 -2
  136. package/dist/Components/QuerySelect.svelte +384 -440
  137. package/dist/Components/QuerySelect.svelte.d.ts +2 -29
  138. package/dist/Components/QuerySelectProps.d.ts +66 -0
  139. package/dist/Components/QuerySelectProps.js +1 -0
  140. package/dist/Components/SingleSelect.svelte +268 -290
  141. package/dist/Components/SingleSelectCommonProps.d.ts +43 -5
  142. package/dist/Components/SingleSelectPropsAsObject.d.ts +7 -0
  143. package/dist/Components/SingleSelectPropsAsPrimitive.d.ts +8 -0
  144. package/dist/Components/StepButton.svelte +70 -120
  145. package/dist/Components/StepForm.svelte +147 -147
  146. package/dist/Components/StepFormProps.d.ts +16 -2
  147. package/dist/Components/Switch.svelte +84 -47
  148. package/dist/Components/Switch.svelte.d.ts +1 -1
  149. package/dist/Components/SwitchProps.d.ts +46 -0
  150. package/dist/Components/Table/Body/HeightData.d.ts +1 -6
  151. package/dist/Components/Table/Body/HeightData.js +8 -0
  152. package/dist/Components/Table/Body/QuickSearchCell.svelte +697 -641
  153. package/dist/Components/Table/Body/QuickSearchCell.svelte.d.ts +12 -11
  154. package/dist/Components/Table/Body/QuickSearchCellProps.d.ts +6 -0
  155. package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +68 -34
  156. package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte.d.ts +24 -2
  157. package/dist/Components/Table/Body/Rows/ColumnHighlightProps.d.ts +3 -0
  158. package/dist/Components/Table/Body/Rows/ColumnList.svelte +66 -56
  159. package/dist/Components/Table/Body/Rows/ColumnList.svelte.d.ts +12 -11
  160. package/dist/Components/Table/Body/Rows/ColumnListProps.d.ts +1 -0
  161. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +515 -182
  162. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte.d.ts +12 -11
  163. package/dist/Components/Table/Body/Rows/ColumnListRowProps.d.ts +5 -0
  164. package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +79 -49
  165. package/dist/Components/Table/Body/Rows/Columns/AccessorComponentProps.d.ts +12 -0
  166. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +203 -191
  167. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte.d.ts +12 -12
  168. package/dist/Components/Table/Body/Rows/Columns/ActionsColumn.d.ts +9 -0
  169. package/dist/Components/Table/Body/Rows/Columns/ActionsTableCell.d.ts +5 -0
  170. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +150 -115
  171. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte.d.ts +14 -13
  172. package/dist/Components/Table/Body/Rows/Columns/BubbleCellProps.d.ts +12 -0
  173. package/dist/Components/Table/Body/Rows/Columns/BubbleCellProps.js +1 -0
  174. package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +149 -129
  175. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +149 -126
  176. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte.d.ts +12 -11
  177. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCellProps.d.ts +7 -0
  178. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +142 -108
  179. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte.d.ts +17 -11
  180. package/dist/Components/Table/Body/Rows/Columns/RowSelectionColumn.d.ts +8 -0
  181. package/dist/Components/Table/Body/Rows/Columns/RowSelectionTableCell.d.ts +5 -0
  182. package/dist/Components/Table/Body/Rows/Columns/SelectColumn.d.ts +11 -0
  183. package/dist/Components/Table/Body/Rows/Columns/SelectTableCell.d.ts +11 -0
  184. package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +87 -72
  185. package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte.d.ts +11 -0
  186. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +148 -137
  187. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte.d.ts +13 -18
  188. package/dist/Components/Table/Body/Rows/Columns/TableCheckboxProps.d.ts +17 -0
  189. package/dist/Components/Table/Body/Rows/Columns/TableCheckboxProps.js +1 -0
  190. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +159 -144
  191. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte.d.ts +1 -7
  192. package/dist/Components/Table/Body/Rows/Columns/TableColumnProps.d.ts +16 -0
  193. package/dist/Components/Table/Body/Rows/Columns/TableColumnProps.js +1 -0
  194. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +279 -249
  195. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte.d.ts +12 -11
  196. package/dist/Components/Table/Body/Rows/Columns/TableDatePickerProps.d.ts +9 -0
  197. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +249 -370
  198. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte.d.ts +20 -12
  199. package/dist/Components/Table/Body/Rows/Columns/TableQueryCell.d.ts +8 -0
  200. package/dist/Components/Table/Body/Rows/Columns/TableQueryColumn.d.ts +9 -0
  201. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +291 -354
  202. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte.d.ts +12 -11
  203. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelectProps.d.ts +8 -0
  204. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +201 -189
  205. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte.d.ts +2 -5
  206. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckboxProps.d.ts +14 -0
  207. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckboxProps.js +1 -0
  208. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +263 -325
  209. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte.d.ts +13 -12
  210. package/dist/Components/Table/Body/Rows/Columns/TableSelectProps.d.ts +6 -0
  211. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +230 -381
  212. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte.d.ts +12 -11
  213. package/dist/Components/Table/Body/Rows/Columns/TableTextInputProps.d.ts +6 -0
  214. package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +187 -177
  215. package/dist/Components/Table/Body/Rows/Columns/_helpers/useAsyncEditable.svelte.d.ts +104 -0
  216. package/dist/Components/Table/Body/Rows/Columns/_helpers/useAsyncEditable.svelte.js +215 -0
  217. package/dist/Components/Table/Body/Rows/TableRow.svelte +331 -263
  218. package/dist/Components/Table/Body/Rows/TableRow.svelte.d.ts +2 -10
  219. package/dist/Components/Table/Body/Rows/TableRowProps.d.ts +11 -2
  220. package/dist/Components/Table/Body/TableBody.svelte +198 -81
  221. package/dist/Components/Table/Body/TableBody.svelte.d.ts +15 -22
  222. package/dist/Components/Table/Body/TableBodyProps.d.ts +9 -7
  223. package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +18 -12
  224. package/dist/Components/Table/ColumnFactory.svelte.d.ts +43 -0
  225. package/dist/Components/Table/ColumnFactory.svelte.js +339 -0
  226. package/dist/Components/Table/Headers/HighlightAllHeader.svelte +41 -39
  227. package/dist/Components/Table/Headers/HighlightAllHeader.svelte.d.ts +12 -11
  228. package/dist/Components/Table/Headers/SelectAllHeader.svelte +30 -28
  229. package/dist/Components/Table/Headers/SelectAllHeader.svelte.d.ts +12 -11
  230. package/dist/Components/Table/Headers/TableHead.svelte +434 -294
  231. package/dist/Components/Table/Headers/TableHead.svelte.d.ts +13 -16
  232. package/dist/Components/Table/Headers/TableHeadProps.d.ts +10 -0
  233. package/dist/Components/Table/Headers/TableHeadProps.js +1 -0
  234. package/dist/Components/Table/Misc/ColumnPanel.svelte +154 -96
  235. package/dist/Components/Table/Misc/ColumnPanel.svelte.d.ts +12 -11
  236. package/dist/Components/Table/Misc/ColumnPanelModal.svelte +112 -99
  237. package/dist/Components/Table/Misc/ColumnPanelModal.svelte.d.ts +12 -11
  238. package/dist/Components/Table/Misc/ColumnPanelModalProps.d.ts +5 -0
  239. package/dist/Components/Table/Misc/FilterInput.svelte +545 -556
  240. package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -11
  241. package/dist/Components/Table/Misc/FilterPanel.svelte +409 -51
  242. package/dist/Components/Table/Misc/FilterPanel.svelte.d.ts +12 -11
  243. package/dist/Components/Table/Misc/FilterPanelModal.svelte +30 -77
  244. package/dist/Components/Table/Misc/FilterPanelModal.svelte.d.ts +2 -23
  245. package/dist/Components/Table/Misc/SidePanel.svelte +35 -32
  246. package/dist/Components/Table/Misc/SidePanel.svelte.d.ts +1 -7
  247. package/dist/Components/Table/Misc/SidePanelProps.d.ts +17 -0
  248. package/dist/Components/Table/Misc/SidePanelProps.js +1 -0
  249. package/dist/Components/Table/Misc/TableFooter.svelte +315 -306
  250. package/dist/Components/Table/Misc/TableFooter.svelte.d.ts +13 -14
  251. package/dist/Components/Table/Misc/TableFooterProps.d.ts +8 -0
  252. package/dist/Components/Table/Misc/TableFooterProps.js +1 -0
  253. package/dist/Components/Table/Misc/TableHorizontalBar.svelte +126 -157
  254. package/dist/Components/Table/Misc/TableHorizontalBar.svelte.d.ts +12 -11
  255. package/dist/Components/Table/Misc/TableSidebar.svelte +158 -177
  256. package/dist/Components/Table/Misc/TableSidebar.svelte.d.ts +12 -11
  257. package/dist/Components/Table/Misc/ToolboxPanel.svelte +147 -81
  258. package/dist/Components/Table/Misc/ToolboxPanel.svelte.d.ts +12 -11
  259. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +107 -100
  260. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte.d.ts +12 -11
  261. package/dist/Components/Table/Misc/ToolboxPanelModalProps.d.ts +5 -0
  262. package/dist/Components/Table/Misc/numberDateFilterTypes.d.ts +7 -4
  263. package/dist/Components/Table/Misc/numberDateFilterTypes.js +8 -3
  264. package/dist/Components/Table/Misc/stringFilterTypes.d.ts +6 -4
  265. package/dist/Components/Table/Misc/stringFilterTypes.js +7 -3
  266. package/dist/Components/Table/NestedTable.svelte +132 -88
  267. package/dist/Components/Table/NestedTable.svelte.d.ts +2 -10
  268. package/dist/Components/Table/NestedTableProps.d.ts +25 -0
  269. package/dist/Components/Table/NestedTableProps.js +1 -0
  270. package/dist/Components/Table/SubApis.svelte.d.ts +23 -0
  271. package/dist/Components/Table/SubApis.svelte.js +359 -0
  272. package/dist/Components/Table/Table.svelte +694 -519
  273. package/dist/Components/Table/Table.svelte.d.ts +24 -1
  274. package/dist/Components/Table/TableHelpers.svelte.d.ts +58 -0
  275. package/dist/Components/Table/TableHelpers.svelte.js +88 -0
  276. package/dist/Components/Table/Types/Columns/Column.d.ts +10 -0
  277. package/dist/Components/Table/Types/Columns/ColumnPinningState.d.ts +12 -0
  278. package/dist/Components/Table/Types/Columns/ColumnSizingState.d.ts +8 -0
  279. package/dist/Components/Table/Types/Columns/ColumnType.d.ts +17 -0
  280. package/dist/Components/Table/Types/Columns/ColumnType.js +18 -1
  281. package/dist/Components/Table/Types/Columns/DateColumn.d.ts +6 -0
  282. package/dist/Components/Table/Types/Columns/DateTableCell.d.ts +7 -0
  283. package/dist/Components/Table/Types/Columns/Definitions/AccessorFn.d.ts +13 -0
  284. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.d.ts +28 -3
  285. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.js +15 -0
  286. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorType.d.ts +10 -0
  287. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorType.js +11 -1
  288. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.d.ts +23 -2
  289. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.js +9 -2
  290. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.d.ts +21 -2
  291. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.js +8 -0
  292. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.d.ts +29 -3
  293. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.js +11 -0
  294. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +23 -0
  295. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.js +8 -0
  296. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +31 -0
  297. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.js +17 -3
  298. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.d.ts +21 -2
  299. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.js +7 -0
  300. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +29 -1
  301. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +17 -3
  302. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +122 -11
  303. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.js +77 -11
  304. package/dist/Components/Table/Types/Columns/Definitions/ColumnDefSet.d.ts +9 -0
  305. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.d.ts +41 -1
  306. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +16 -0
  307. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.d.ts +19 -1
  308. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.js +12 -1
  309. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.d.ts +11 -0
  310. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.js +6 -3
  311. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.d.ts +19 -0
  312. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.js +25 -1
  313. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.d.ts +26 -0
  314. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.js +20 -5
  315. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +43 -7
  316. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.js +18 -3
  317. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts +19 -5
  318. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.js +16 -5
  319. package/dist/Components/Table/Types/Columns/Definitions/JSONColumnDefSet.d.ts +14 -0
  320. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +34 -2
  321. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +30 -7
  322. package/dist/Components/Table/Types/Columns/Definitions/ValidationFn.d.ts +17 -0
  323. package/dist/Components/Table/Types/Columns/DefsWrapper.d.ts +10 -0
  324. package/dist/Components/Table/Types/Columns/DisplayType.d.ts +13 -0
  325. package/dist/Components/Table/Types/Columns/DisplayType.js +14 -1
  326. package/dist/Components/Table/Types/Columns/ExpandColumn.d.ts +5 -0
  327. package/dist/Components/Table/Types/Columns/ExpandTableCell.d.ts +7 -0
  328. package/dist/Components/Table/Types/Columns/JSONColumnPinningState.d.ts +6 -0
  329. package/dist/Components/Table/Types/Columns/ProgressBarColumn.d.ts +5 -0
  330. package/dist/Components/Table/Types/Columns/ProgressBarTableCell.d.ts +9 -0
  331. package/dist/Components/Table/Types/Columns/TableActionButton.d.ts +12 -0
  332. package/dist/Components/Table/Types/Columns/TableCell.d.ts +16 -2
  333. package/dist/Components/Table/Types/Columns/VisibilityState.d.ts +12 -0
  334. package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.d.ts +173 -0
  335. package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.js +241 -0
  336. package/dist/Components/Table/Types/Context/FilteringState.svelte.d.ts +166 -0
  337. package/dist/Components/Table/Types/Context/FilteringState.svelte.js +180 -0
  338. package/dist/Components/Table/Types/Context/FocusState.svelte.d.ts +316 -0
  339. package/dist/Components/Table/Types/Context/FocusState.svelte.js +751 -0
  340. package/dist/Components/Table/Types/Context/ITable.d.ts +10 -0
  341. package/dist/Components/Table/Types/Context/PreferencesState.svelte.d.ts +242 -0
  342. package/dist/Components/Table/Types/Context/PreferencesState.svelte.js +317 -0
  343. package/dist/Components/Table/Types/Context/ReadonlyRowModel.d.ts +14 -3
  344. package/dist/Components/Table/Types/Context/Row.d.ts +18 -0
  345. package/dist/Components/Table/Types/Context/RowModel.d.ts +11 -0
  346. package/dist/Components/Table/Types/Context/SelectionState.svelte.d.ts +260 -0
  347. package/dist/Components/Table/Types/Context/SelectionState.svelte.js +613 -0
  348. package/dist/Components/Table/Types/Context/SortingState.svelte.d.ts +112 -0
  349. package/dist/Components/Table/Types/Context/SortingState.svelte.js +272 -0
  350. package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +547 -53
  351. package/dist/Components/Table/Types/Context/TableContext.svelte.js +959 -1259
  352. package/dist/Components/Table/Types/Context/TableInitOptions.d.ts +16 -0
  353. package/dist/Components/Table/Types/Context/TableSettings.d.ts +20 -0
  354. package/dist/Components/Table/Types/Context/VirtualisationState.svelte.d.ts +167 -0
  355. package/dist/Components/Table/Types/Context/VirtualisationState.svelte.js +226 -0
  356. package/dist/Components/Table/Types/Coordinates/CellCoordinates.d.ts +12 -0
  357. package/dist/Components/Table/Types/Coordinates/CellCoordinatesWithoutColumn.d.ts +5 -0
  358. package/dist/Components/Table/Types/Coordinates/ColumnIndices.d.ts +16 -2
  359. package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.d.ts +143 -0
  360. package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.js +454 -0
  361. package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +21 -0
  362. package/dist/Components/Table/Types/DataRepository/ILocalDataRepository.d.ts +10 -0
  363. package/dist/Components/Table/Types/DataRepository/IRemoteDataRepository.d.ts +16 -0
  364. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.d.ts +87 -3
  365. package/dist/Components/Table/Types/DataRepository/LocalTableDataRepository.svelte.js +112 -7
  366. package/dist/Components/Table/Types/DataRepository/SortingState.d.ts +12 -0
  367. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +87 -2
  368. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +74 -1
  369. package/dist/Components/Table/Types/ExpandedPanel.d.ts +9 -0
  370. package/dist/Components/Table/Types/ExpandedPanel.js +10 -1
  371. package/dist/Components/Table/Types/Filtering/ColumnFiltersState.d.ts +17 -0
  372. package/dist/Components/Table/Types/Filtering/CustomFilter.d.ts +21 -0
  373. package/dist/Components/Table/Types/Filtering/CustomFilterType.d.ts +5 -0
  374. package/dist/Components/Table/Types/Filtering/CustomFilterType.js +6 -1
  375. package/dist/Components/Table/Types/Filtering/CustomRemoteFilters.d.ts +6 -0
  376. package/dist/Components/Table/Types/Filtering/FilterFn.d.ts +28 -0
  377. package/dist/Components/Table/Types/Filtering/FilterMode.d.ts +7 -0
  378. package/dist/Components/Table/Types/Filtering/FilterType.d.ts +8 -0
  379. package/dist/Components/Table/Types/Filtering/FilterType.js +9 -1
  380. package/dist/Components/Table/Types/Filtering/FilterValueType.d.ts +11 -0
  381. package/dist/Components/Table/Types/Filtering/FilterValueType.js +12 -1
  382. package/dist/Components/Table/Types/Filtering/HasCustomFilterFunction.d.ts +23 -2
  383. package/dist/Components/Table/Types/Filtering/NumberDateFilterMode.d.ts +19 -12
  384. package/dist/Components/Table/Types/Filtering/NumberDateFilterMode.js +18 -14
  385. package/dist/Components/Table/Types/Filtering/StringFilterMode.d.ts +22 -15
  386. package/dist/Components/Table/Types/Filtering/StringFilterMode.js +22 -16
  387. package/dist/Components/Table/Types/Focus/MultiFocusEdge.d.ts +8 -0
  388. package/dist/Components/Table/Types/Focus/MultiFocusEdge.js +9 -1
  389. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.d.ts +22 -0
  390. package/dist/Components/Table/Types/Focus/TableFocusDetails.svelte.js +22 -0
  391. package/dist/Components/Table/Types/Header.d.ts +8 -0
  392. package/dist/Components/Table/Types/HeaderGroup.d.ts +7 -0
  393. package/dist/Components/Table/Types/Layout/CellPinning.d.ts +1 -0
  394. package/dist/Components/Table/Types/Layout/CellPinning.js +8 -0
  395. package/dist/Components/Table/Types/OnChangeFn.d.ts +11 -0
  396. package/dist/Components/Table/Types/Pagination/PaginationState.d.ts +9 -0
  397. package/dist/Components/Table/Types/Pagination/PaginationType.d.ts +10 -0
  398. package/dist/Components/Table/Types/Pagination/PaginationType.js +11 -1
  399. package/dist/Components/Table/Types/Public/AnyEditEvent.d.ts +30 -0
  400. package/dist/Components/Table/Types/Public/AnyEditEvent.js +1 -0
  401. package/dist/Components/Table/Types/Public/BaseColumnOptions.d.ts +44 -0
  402. package/dist/Components/Table/Types/Public/BaseColumnOptions.js +1 -0
  403. package/dist/Components/Table/Types/Public/ColumnFactory.d.ts +35 -0
  404. package/dist/Components/Table/Types/Public/ColumnFactory.js +1 -0
  405. package/dist/Components/Table/Types/Public/ColumnOptions.d.ts +238 -0
  406. package/dist/Components/Table/Types/Public/ColumnOptions.js +1 -0
  407. package/dist/Components/Table/Types/Public/ColumnSpec.d.ts +39 -0
  408. package/dist/Components/Table/Types/Public/ColumnSpec.js +1 -0
  409. package/dist/Components/Table/Types/Public/CreateTableOptions.d.ts +87 -0
  410. package/dist/Components/Table/Types/Public/CreateTableOptions.js +1 -0
  411. package/dist/Components/Table/Types/Public/KeyConstraints.d.ts +42 -0
  412. package/dist/Components/Table/Types/Public/KeyConstraints.js +22 -0
  413. package/dist/Components/Table/Types/Public/RowSource.d.ts +87 -0
  414. package/dist/Components/Table/Types/Public/RowSource.js +1 -0
  415. package/dist/Components/Table/Types/Public/SelectionOptions.d.ts +26 -0
  416. package/dist/Components/Table/Types/Public/SelectionOptions.js +1 -0
  417. package/dist/Components/Table/Types/Public/Table.d.ts +39 -0
  418. package/dist/Components/Table/Types/Public/Table.js +1 -0
  419. package/dist/Components/Table/Types/Public/TableInitialState.d.ts +26 -0
  420. package/dist/Components/Table/Types/Public/TableInitialState.js +1 -0
  421. package/dist/Components/Table/Types/Public/TablePersistence.d.ts +38 -0
  422. package/dist/Components/Table/Types/Public/TablePersistence.js +1 -0
  423. package/dist/Components/Table/Types/Public/TableSubApis.d.ts +157 -0
  424. package/dist/Components/Table/Types/Public/TableSubApis.js +1 -0
  425. package/dist/Components/Table/Types/Public/index.d.ts +20 -0
  426. package/dist/Components/Table/Types/Public/index.js +8 -0
  427. package/dist/Components/Table/Types/Toolbar/ToolbarPosition.d.ts +4 -0
  428. package/dist/Components/Table/Types/Toolbar/ToolbarPosition.js +5 -1
  429. package/dist/Components/Table/createTable.svelte.d.ts +53 -0
  430. package/dist/Components/Table/createTable.svelte.js +269 -0
  431. package/dist/Components/Test/TestContextConsumer.svelte +13 -13
  432. package/dist/Components/TextArea.svelte +127 -108
  433. package/dist/Components/TextAreaProps.d.ts +37 -0
  434. package/dist/Components/TextInput.svelte +166 -147
  435. package/dist/Components/TextInputProps.d.ts +58 -1
  436. package/dist/Components/ThreeStateRadio.svelte +140 -143
  437. package/dist/Components/ThreeStateRadioProps.d.ts +29 -1
  438. package/dist/Components/Touch/BoolCard.svelte +45 -52
  439. package/dist/Components/Touch/BoolCard.svelte.d.ts +1 -10
  440. package/dist/Components/Touch/BoolCardProps.d.ts +21 -0
  441. package/dist/Components/Touch/BoolCardProps.js +1 -0
  442. package/dist/Components/Touch/DateModal.svelte +209 -217
  443. package/dist/Components/Touch/DateModal.svelte.d.ts +1 -17
  444. package/dist/Components/Touch/DateModalProps.d.ts +36 -0
  445. package/dist/Components/Touch/DateModalProps.js +1 -0
  446. package/dist/Components/Touch/EditCard.svelte +59 -52
  447. package/dist/Components/Touch/EditCardProps.d.ts +21 -0
  448. package/dist/Components/Touch/InfoCard.svelte +35 -28
  449. package/dist/Components/Touch/InfoCardProps.d.ts +9 -0
  450. package/dist/Components/Touch/InfoTextCard.svelte +28 -21
  451. package/dist/Components/Touch/InfoTextCardProps.d.ts +8 -0
  452. package/dist/Components/Touch/ModalExplanation.svelte +17 -20
  453. package/dist/Components/Touch/ModalExplanation.svelte.d.ts +1 -6
  454. package/dist/Components/Touch/ModalExplanationProps.d.ts +22 -0
  455. package/dist/Components/Touch/ModalExplanationProps.js +1 -0
  456. package/dist/Components/Touch/NumberKeyboard.svelte +225 -268
  457. package/dist/Components/Touch/NumberKeyboardProps.d.ts +19 -0
  458. package/dist/Components/Touch/NumberModal.svelte +79 -69
  459. package/dist/Components/Touch/NumberModalProps.d.ts +23 -1
  460. package/dist/Components/Touch/PlusMinusCard.svelte +48 -52
  461. package/dist/Components/Touch/PlusMinusCard.svelte.d.ts +1 -6
  462. package/dist/Components/Touch/PlusMinusCardProps.d.ts +18 -0
  463. package/dist/Components/Touch/PlusMinusCardProps.js +1 -0
  464. package/dist/Components/Touch/SelectModal.svelte +123 -105
  465. package/dist/Components/Touch/SelectModalProps.d.ts +22 -1
  466. package/dist/Components/Touch/SummaryCard.svelte +107 -65
  467. package/dist/Components/Touch/SummaryCardProps.d.ts +16 -3
  468. package/dist/Components/Touch/TextAreaModal.svelte +95 -86
  469. package/dist/Components/Touch/TextAreaModalProps.d.ts +21 -0
  470. package/dist/Components/Touch/TextModal.svelte +106 -123
  471. package/dist/Components/Touch/TextModalProps.d.ts +28 -1
  472. package/dist/Components/Touch/TouchCard.svelte +34 -72
  473. package/dist/Components/Touch/TouchCardProps.d.ts +21 -0
  474. package/dist/Components/Touch/TouchModal.svelte +265 -259
  475. package/dist/Components/Touch/TouchModalProps.d.ts +35 -1
  476. package/dist/Components/Touch/UtilityButton.svelte +116 -98
  477. package/dist/Components/Touch/UtilityButtonProps.d.ts +16 -0
  478. package/dist/Components/VerticalTabGroup.svelte +80 -102
  479. package/dist/Components/VerticalTabGroupButton.svelte +59 -98
  480. package/dist/Components/VerticalTabGroupProps.d.ts +15 -2
  481. package/dist/Contexts/AlertContext.svelte.d.ts +92 -8
  482. package/dist/Contexts/AlertContext.svelte.js +69 -6
  483. package/dist/Contexts/ContextMenuContext.svelte.d.ts +54 -8
  484. package/dist/Contexts/ContextMenuContext.svelte.js +48 -2
  485. package/dist/Contexts/TestContext.svelte.d.ts +27 -1
  486. package/dist/Contexts/TestContext.svelte.js +29 -1
  487. package/dist/Contexts/ToastContext.svelte.d.ts +29 -1
  488. package/dist/Contexts/ToastContext.svelte.js +93 -24
  489. package/dist/Contexts/TooltipContext.svelte.d.ts +68 -1
  490. package/dist/Contexts/TooltipContext.svelte.js +70 -7
  491. package/dist/Contexts/UntypedInputContext.svelte.d.ts +54 -5
  492. package/dist/Contexts/UntypedInputContext.svelte.js +87 -34
  493. package/dist/Delay/Delay.js +1 -1
  494. package/dist/Helpers/AsyncFlag.svelte.d.ts +39 -0
  495. package/dist/Helpers/AsyncFlag.svelte.js +72 -0
  496. package/dist/Helpers/Datamatrix.d.ts +19 -10
  497. package/dist/Helpers/Datamatrix.js +291 -2
  498. package/dist/Helpers/Helpers.svelte.d.ts +252 -17
  499. package/dist/Helpers/Helpers.svelte.js +271 -60
  500. package/dist/Helpers/INamed.d.ts +6 -0
  501. package/dist/Helpers/Storage.d.ts +67 -0
  502. package/dist/Helpers/Storage.js +138 -0
  503. package/dist/Helpers/dropdownPortal.d.ts +52 -0
  504. package/dist/Helpers/dropdownPortal.js +232 -0
  505. package/dist/Helpers/dropdownPortal.svelte.d.ts +2 -0
  506. package/dist/Helpers/dropdownPortal.svelte.js +5 -0
  507. package/dist/Helpers/memoiseByRow.d.ts +45 -0
  508. package/dist/Helpers/memoiseByRow.js +78 -0
  509. package/dist/Helpers/prefersReducedMotion.svelte.d.ts +27 -0
  510. package/dist/Helpers/prefersReducedMotion.svelte.js +18 -0
  511. package/dist/Helpers/useTooltip.svelte.d.ts +53 -0
  512. package/dist/Helpers/useTooltip.svelte.js +62 -0
  513. package/dist/Types/Examples/ExampleModal.svelte +35 -34
  514. package/dist/Types/Examples/ExampleSelectEnum.js +1 -1
  515. package/dist/Types/Internal/AsyncFlag.d.ts +7 -0
  516. package/dist/Types/Internal/AsyncFlag.js +1 -0
  517. package/dist/Types/Internal/BigRadioOption.d.ts +8 -0
  518. package/dist/Types/Internal/ButtonProp.d.ts +24 -2
  519. package/dist/Types/Internal/CallbackButton.d.ts +12 -0
  520. package/dist/Types/Internal/DateChange.d.ts +8 -0
  521. package/dist/Types/Internal/DatePickerType.d.ts +5 -0
  522. package/dist/Types/Internal/DatePickerType.js +6 -1
  523. package/dist/Types/Internal/IdentifiableToastMessage.d.ts +8 -0
  524. package/dist/Types/Internal/InputVariant.d.ts +5 -0
  525. package/dist/Types/Internal/InputVariant.js +6 -1
  526. package/dist/Types/Internal/Misc.d.ts +91 -0
  527. package/dist/Types/Internal/RefWrapper.d.ts +6 -0
  528. package/dist/Types/Internal/SelectOption.d.ts +8 -0
  529. package/dist/Types/Internal/Shape.d.ts +1 -0
  530. package/dist/Types/Internal/Shape.js +2 -1
  531. package/dist/Types/Internal/Side.d.ts +1 -0
  532. package/dist/Types/Internal/Side.js +2 -1
  533. package/dist/Types/Internal/Size.d.ts +5 -0
  534. package/dist/Types/Internal/Size.js +6 -1
  535. package/dist/Types/Internal/TabOption.d.ts +15 -5
  536. package/dist/Types/Internal/Ternary.d.ts +6 -0
  537. package/dist/Types/Internal/Ternary.js +7 -1
  538. package/dist/Types/Internal/ToastMessage.d.ts +28 -0
  539. package/dist/Types/Internal/Validity.d.ts +6 -0
  540. package/dist/Types/Internal/Validity.js +7 -1
  541. package/dist/Types/Internal/ValidityWrapper.d.ts +8 -0
  542. package/dist/Types/Internal/Variant.d.ts +5 -0
  543. package/dist/Types/Internal/Variant.js +6 -1
  544. package/dist/index.d.ts +27 -82
  545. package/dist/index.js +24 -62
  546. package/dist/scss/_basics.scss +12 -12
  547. package/dist/scss/_colours.scss +134 -134
  548. package/dist/scss/_mixins.scss +3300 -3016
  549. package/dist/scss/_motion.scss +57 -0
  550. package/dist/scss/_sizing.scss +85 -69
  551. package/dist/scss/_transitions.scss +8 -8
  552. package/dist/scss/colours.js +2 -2
  553. package/dist/scss/sizing.d.ts +9 -0
  554. package/dist/scss/sizing.js +10 -1
  555. package/package.json +6 -2
@@ -8,6 +8,16 @@ import type { ColumnFiltersState } from '../Filtering/ColumnFiltersState.js';
8
8
  import type { HeaderGroup } from '../HeaderGroup.js';
9
9
  import type { OnChangeFn } from '../OnChangeFn.js';
10
10
  import type { PaginationState } from '../Pagination/PaginationState.js';
11
+ /**
12
+ * Surface returned by `TableContext.table`. Mirrors the tanstack-table shape
13
+ * scoria's table API was originally derived from, narrowed to the methods the
14
+ * scoria Table actually exposes.
15
+ *
16
+ * The commented-out `extends X, Y, Z` lines record the tanstack-derived
17
+ * mixins that have not yet been implemented; they are retained as a backlog
18
+ * marker. Deleting them is deferred (workorder Types-Context-supporting
19
+ * finding 1) until a decision is made on which mixins to port.
20
+ */
11
21
  export interface ITable<T extends object> {
12
22
  data: Array<T>;
13
23
  columns: Array<ColumnDef<T>>;
@@ -0,0 +1,242 @@
1
+ import type { ColumnPinningState } from '../Columns/ColumnPinningState.js';
2
+ import type { ColumnDef } from '../Columns/Definitions/ColumnDef.svelte.js';
3
+ import type { ColumnDefSet } from '../Columns/Definitions/ColumnDefSet.js';
4
+ import type { JSONColumnDefSet } from '../Columns/Definitions/JSONColumnDefSet.js';
5
+ import type { VisibilityState } from '../Columns/VisibilityState.js';
6
+ import type { SortingState as SortingStateArray } from '../DataRepository/SortingState.js';
7
+ import type { SavedTableSettings, TableSettings } from './TableSettings.js';
8
+ /**
9
+ * Conservative typeguard for the persisted preset list. Storage is
10
+ * same-origin-writable so the only contract we can rely on is the array
11
+ * shape; downstream `reassignDefsToPresets` performs deeper checks and
12
+ * drops presets that fail. We assert the outer envelope and the bare
13
+ * minimum for each entry: a string `name` and an array `columnDefs`.
14
+ *
15
+ * Lifted from `TableContext.svelte.ts` during Phase 6.4 god-object
16
+ * decomposition; semantics unchanged.
17
+ */
18
+ export declare function isJSONColumnDefSetArray(raw: unknown): raw is Array<JSONColumnDefSet>;
19
+ /**
20
+ * Typeguard for the persisted user-level table settings blob. Every
21
+ * field is optional, but every present field must be boolean: anything
22
+ * else is a sign of schema drift or a tampered slot.
23
+ *
24
+ * Lifted from `TableContext.svelte.ts` during Phase 6.4.
25
+ */
26
+ export declare function isSavedTableSettings(raw: unknown): raw is SavedTableSettings;
27
+ /**
28
+ * Typeguard for a non-empty string. Used for the persisted selected
29
+ * preset name slot.
30
+ *
31
+ * Lifted from `TableContext.svelte.ts` during Phase 6.4.
32
+ */
33
+ export declare function isNonEmptyString(raw: unknown): raw is string;
34
+ /**
35
+ * Dependency surface that `PreferencesState` reads from the surrounding
36
+ * `TableContext`. All dependencies are passed as thunks / function refs
37
+ * so the sub-context never holds a direct reference to the parent; the
38
+ * `userIdSegment` derived reads `getUserId()` lazily and the
39
+ * `setSelectedPreset` flow writes back through the column-layout
40
+ * setters / `paginationRepo` updater.
41
+ */
42
+ export interface PreferencesStateDeps<T extends object> {
43
+ /** The static table name, used as the middle segment of every
44
+ * persisted key (`scoria-table:<user>:<tableName>:<suffix>`). */
45
+ getTableName: () => string;
46
+ /** Caller-supplied user identifier. `userIdSegment` resolves to
47
+ * `getUserId() ?? 'anon'` so different users on a shared browser
48
+ * cannot read each other's column presets. */
49
+ getUserId: () => string | undefined;
50
+ /** Read the current ordered column-defs array (used by
51
+ * `saveColumnPreset` to capture the layout into the preset). */
52
+ getColumnDefs: () => Array<ColumnDef<T>>;
53
+ /** Read the current visibility map (used by `saveColumnPreset`). */
54
+ getColumnVisibility: () => VisibilityState;
55
+ /** Read the current column-pinning map (used by `saveColumnPreset`). */
56
+ getColumnPinning: () => ColumnPinningState;
57
+ /** Read the current sort instruction list (used by
58
+ * `saveColumnPreset`). May be `undefined` when no pagination
59
+ * repository is attached yet. */
60
+ getSortingArray: () => SortingStateArray | undefined;
61
+ /** Apply the column-defs slot when a preset is restored. */
62
+ setColumnDefs: (defs: Array<ColumnDef<T>>) => void;
63
+ /** Apply the visibility map when a preset is restored. */
64
+ setColumnVisibility: (state: VisibilityState) => void;
65
+ /** Apply the column-pinning map when a preset is restored. */
66
+ setColumnPinning: (state: ColumnPinningState) => void;
67
+ /** Apply the sort instruction list when a preset is restored. May
68
+ * be `undefined` when no pagination repository is attached yet;
69
+ * the writer is a best-effort hook (mirrors the pre-extraction
70
+ * `paginationRepo?.updateSorting?.()` call). */
71
+ applySortingState: (state: SortingStateArray) => void;
72
+ /** Logger gate; mirrors the parent `TableContext.debug` field. */
73
+ getDebug: () => boolean;
74
+ }
75
+ /**
76
+ * Phase 6.4 god-object decomposition - sub-context that owns every
77
+ * persistence / preferences concern previously held directly on
78
+ * `TableContext`:
79
+ *
80
+ * - `_columnPresets` (the persisted preset list `$state`),
81
+ * - `_selectedPreset` (the currently-active preset `$state`),
82
+ * - `userIdSegment` (the sanitised user-id segment used in storage
83
+ * keys; `$derived` over `getUserId()`),
84
+ * - `saveColumnPreset(name)` (snapshot the live layout, persist the
85
+ * list, mark the new preset as selected),
86
+ * - `setSelectedPreset(preset)` (apply the preset to the live layout
87
+ * and persist the selected name),
88
+ * - `loadPresets()` / `loadSelectedPresetName()` /
89
+ * `loadSavedSettings()` (boot-time hydration helpers; the parent
90
+ * owns the orchestration because it depends on `setupDefaultColumnDefs`
91
+ * running first),
92
+ * - `clearPresetsAndSelection()` (drop both persisted slots),
93
+ * - `persistSettings(settings)` (write the per-table TableSettings
94
+ * blob),
95
+ * - the schema-validation typeguards
96
+ * (`isJSONColumnDefSetArray`, `isSavedTableSettings`,
97
+ * `isNonEmptyString`) - exported alongside the class.
98
+ *
99
+ * `TableContext` retains delegating getters / setters / methods for
100
+ * every legacy surface (`columnPresets`, `selectedPreset`,
101
+ * `saveColumnPreset`, `setSelectedPreset`, `_updateLocalStorageSettings`)
102
+ * so existing consumers need no migration. Future consumers can read
103
+ * `tableContext._preferences` directly once the migration is complete
104
+ * (see `src/stories/Concepts/TableContext-decomposition.mdx`).
105
+ *
106
+ * Every `localStorage` access is funnelled through this sub-context so
107
+ * the `scoria-table:<user>:<tableName>:<suffix>` namespace convention
108
+ * is enforced in a single place.
109
+ */
110
+ export declare class PreferencesState<T extends object> {
111
+ private readonly _deps;
112
+ private _columnPresets;
113
+ private _selectedPreset;
114
+ /**
115
+ * Sanitised segment of the persisted-storage key path. Resolves to
116
+ * `getUserId() ?? 'anon'` so different users on a shared browser
117
+ * cannot read each other's column presets, and so anonymous
118
+ * sessions still have a stable namespace.
119
+ *
120
+ * The `$derived.by` form is required here (over plain
121
+ * `$derived(expr)`) because class-field initialisers run BEFORE
122
+ * the constructor body assigns `_deps`; the function-form wrapper
123
+ * defers the read until the derived is first evaluated.
124
+ */
125
+ readonly userIdSegment: string;
126
+ /**
127
+ * @param deps thunks the sub-context reads from the parent.
128
+ * Constructor-only - no implicit setup so the parent
129
+ * remains in control of effect ownership and lifecycle.
130
+ */
131
+ constructor(deps: PreferencesStateDeps<T>);
132
+ /**
133
+ * The current list of saved column presets. Setter is private to
134
+ * the sub-context; the parent writes through `setPresets` during
135
+ * the boot-time hydration flow.
136
+ */
137
+ get columnPresets(): ReadonlyArray<ColumnDefSet<T>>;
138
+ /**
139
+ * Writer for `columnPresets`. Public so the parent boot flow can
140
+ * publish the hydrated list; not part of the consumer-facing
141
+ * surface (consumer-facing writes go through `saveColumnPreset`).
142
+ */
143
+ setPresets(v: ReadonlyArray<ColumnDefSet<T>>): void;
144
+ /**
145
+ * The currently-active preset (the one whose name is persisted in
146
+ * the `selected-preset-name` slot). Setter is public so the parent
147
+ * boot flow can publish the resolved preset; the consumer-facing
148
+ * writer is `setSelectedPreset` below (which also persists the
149
+ * name).
150
+ */
151
+ get selectedPreset(): ColumnDefSet<T> | undefined;
152
+ set selectedPreset(v: ColumnDefSet<T> | undefined);
153
+ /**
154
+ * Build the canonical `scoria-table:<user>:<tableName>:<suffix>`
155
+ * storage key. Centralised so every persisted-state slot reaches
156
+ * for the same namespacing convention; the `<user>` segment is
157
+ * `getUserId() ?? 'anon'` (see `userIdSegment`).
158
+ */
159
+ storageKey(suffix: 'presets' | 'selected-preset-name' | 'settings'): string;
160
+ /**
161
+ * Boot-time hydration helper. Reads the persisted preset list from
162
+ * `localStorage`, validates it against `isJSONColumnDefSetArray`,
163
+ * and returns the parsed array (or an empty array on every failure
164
+ * path). The parent runs this once `setupDefaultColumnDefs` has
165
+ * completed so the live `columnDefs` can be compared against the
166
+ * persisted snapshot.
167
+ *
168
+ * `localStorage` access is gated by the parent's `browser` check;
169
+ * this method assumes the caller already verified the environment.
170
+ */
171
+ loadPresets(): Array<JSONColumnDefSet>;
172
+ /**
173
+ * Boot-time hydration helper. Reads the persisted selected-preset
174
+ * name. Returns `null` for missing / empty / storage-error slots
175
+ * so the parent can fall back to the first preset (or the
176
+ * default).
177
+ *
178
+ * Mirrors the pre-extraction try/catch around `getItem` verbatim:
179
+ * the same dev-only warning is emitted on read failure.
180
+ */
181
+ loadSelectedPresetName(): string | null;
182
+ /**
183
+ * Boot-time hydration helper. Reads the persisted per-table
184
+ * settings blob (`isCompact`, `singleClickEditing`, etc.). Returns
185
+ * `null` when the slot is missing or fails validation so the
186
+ * parent can apply its own default policy.
187
+ */
188
+ loadSavedSettings(): SavedTableSettings | null;
189
+ /**
190
+ * Drop the persisted presets and selected-preset-name slots. Used
191
+ * by the parent's boot flow when the saved snapshot disagrees with
192
+ * the live column-def shape (schema drift or column-set change).
193
+ */
194
+ clearPresetsAndSelection(): void;
195
+ /**
196
+ * Persist the selected-preset name as plain text (no JSON
197
+ * envelope - the slot is a single string by design).
198
+ */
199
+ persistSelectedPresetName(name: string): void;
200
+ /**
201
+ * Persist the per-table settings blob (`isCompact`,
202
+ * `singleClickEditing`, etc.) as JSON. Format and key remain
203
+ * exactly as before the extraction.
204
+ */
205
+ persistSettings(settings: TableSettings): void;
206
+ /**
207
+ * Persist the full preset list as JSON. Each preset's
208
+ * `columnPinningState` (Map-based) is flattened into entry arrays
209
+ * because Map does not survive `JSON.stringify`; the reader (via
210
+ * `loadPresets` -> `reassignDefsToPresets`) rehydrates it through
211
+ * `adaptJSONPinningState`.
212
+ *
213
+ * Pulled out of `saveColumnPreset` so the per-preset
214
+ * `toJSON()` walk is unit-testable in isolation.
215
+ */
216
+ persistPresets(presets: ReadonlyArray<ColumnDefSet<T>>): void;
217
+ /**
218
+ * Apply a saved column preset to the live table layout and
219
+ * persist the selection by name. Mirrors the pre-extraction
220
+ * `TableContext.setSelectedPreset` verbatim:
221
+ *
222
+ * 1. Replace `columnDefs`, `columnVisibility`, `columnPinning`.
223
+ * 2. Forward the preset's `sortingState` to the data-repository
224
+ * updater (no-op when the repo has no `updateSorting` hook).
225
+ * 3. Update `selectedPreset`.
226
+ * 4. Persist the preset name to `selected-preset-name`.
227
+ *
228
+ * Bound as a class property so callers (notably the toolbar
229
+ * dropdown) can pass the reference around without binding `this`.
230
+ */
231
+ readonly setSelectedPreset: (preset: ColumnDefSet<T>) => void;
232
+ /**
233
+ * Snapshot the current column layout into a new preset, replacing
234
+ * any existing preset whose name matches case-insensitively, and
235
+ * persist the full preset list to `localStorage`. Marks the new
236
+ * preset as selected (which also persists its name).
237
+ *
238
+ * Mirrors the pre-extraction `TableContext.saveColumnPreset`
239
+ * verbatim. No-op when `name` is empty.
240
+ */
241
+ readonly saveColumnPreset: (name: string) => void;
242
+ }
@@ -0,0 +1,317 @@
1
+ import { dev } from '$app/environment';
2
+ import { readJSON } from '../../../../Helpers/Storage.js';
3
+ /**
4
+ * Conservative typeguard for the persisted preset list. Storage is
5
+ * same-origin-writable so the only contract we can rely on is the array
6
+ * shape; downstream `reassignDefsToPresets` performs deeper checks and
7
+ * drops presets that fail. We assert the outer envelope and the bare
8
+ * minimum for each entry: a string `name` and an array `columnDefs`.
9
+ *
10
+ * Lifted from `TableContext.svelte.ts` during Phase 6.4 god-object
11
+ * decomposition; semantics unchanged.
12
+ */
13
+ export function isJSONColumnDefSetArray(raw) {
14
+ if (!Array.isArray(raw)) {
15
+ return false;
16
+ }
17
+ return raw.every((entry) => {
18
+ if (typeof entry !== 'object' || entry === null) {
19
+ return false;
20
+ }
21
+ const candidate = entry;
22
+ return typeof candidate.name === 'string' && Array.isArray(candidate.columnDefs);
23
+ });
24
+ }
25
+ /**
26
+ * Typeguard for the persisted user-level table settings blob. Every
27
+ * field is optional, but every present field must be boolean: anything
28
+ * else is a sign of schema drift or a tampered slot.
29
+ *
30
+ * Lifted from `TableContext.svelte.ts` during Phase 6.4.
31
+ */
32
+ export function isSavedTableSettings(raw) {
33
+ if (typeof raw !== 'object' || raw === null) {
34
+ return false;
35
+ }
36
+ const candidate = raw;
37
+ const optionalBoolean = (key) => candidate[key] === undefined || typeof candidate[key] === 'boolean';
38
+ return (optionalBoolean('isCompact') &&
39
+ optionalBoolean('singleClickEditing') &&
40
+ optionalBoolean('alternateRowColours') &&
41
+ optionalBoolean('changeColourOnHover') &&
42
+ optionalBoolean('copyWithHeaders') &&
43
+ optionalBoolean('commaSeparatedCopy'));
44
+ }
45
+ /**
46
+ * Typeguard for a non-empty string. Used for the persisted selected
47
+ * preset name slot.
48
+ *
49
+ * Lifted from `TableContext.svelte.ts` during Phase 6.4.
50
+ */
51
+ export function isNonEmptyString(raw) {
52
+ return typeof raw === 'string' && raw.length > 0;
53
+ }
54
+ /**
55
+ * Phase 6.4 god-object decomposition - sub-context that owns every
56
+ * persistence / preferences concern previously held directly on
57
+ * `TableContext`:
58
+ *
59
+ * - `_columnPresets` (the persisted preset list `$state`),
60
+ * - `_selectedPreset` (the currently-active preset `$state`),
61
+ * - `userIdSegment` (the sanitised user-id segment used in storage
62
+ * keys; `$derived` over `getUserId()`),
63
+ * - `saveColumnPreset(name)` (snapshot the live layout, persist the
64
+ * list, mark the new preset as selected),
65
+ * - `setSelectedPreset(preset)` (apply the preset to the live layout
66
+ * and persist the selected name),
67
+ * - `loadPresets()` / `loadSelectedPresetName()` /
68
+ * `loadSavedSettings()` (boot-time hydration helpers; the parent
69
+ * owns the orchestration because it depends on `setupDefaultColumnDefs`
70
+ * running first),
71
+ * - `clearPresetsAndSelection()` (drop both persisted slots),
72
+ * - `persistSettings(settings)` (write the per-table TableSettings
73
+ * blob),
74
+ * - the schema-validation typeguards
75
+ * (`isJSONColumnDefSetArray`, `isSavedTableSettings`,
76
+ * `isNonEmptyString`) - exported alongside the class.
77
+ *
78
+ * `TableContext` retains delegating getters / setters / methods for
79
+ * every legacy surface (`columnPresets`, `selectedPreset`,
80
+ * `saveColumnPreset`, `setSelectedPreset`, `_updateLocalStorageSettings`)
81
+ * so existing consumers need no migration. Future consumers can read
82
+ * `tableContext._preferences` directly once the migration is complete
83
+ * (see `src/stories/Concepts/TableContext-decomposition.mdx`).
84
+ *
85
+ * Every `localStorage` access is funnelled through this sub-context so
86
+ * the `scoria-table:<user>:<tableName>:<suffix>` namespace convention
87
+ * is enforced in a single place.
88
+ */
89
+ export class PreferencesState {
90
+ _deps;
91
+ _columnPresets = $state([]);
92
+ //FIXME why was this allowed to be undefined? Mirrors the pre-extraction
93
+ // `TableContext._selectedPreset` field; retained as `undefined`-capable
94
+ // for source compatibility.
95
+ _selectedPreset = $state();
96
+ /**
97
+ * Sanitised segment of the persisted-storage key path. Resolves to
98
+ * `getUserId() ?? 'anon'` so different users on a shared browser
99
+ * cannot read each other's column presets, and so anonymous
100
+ * sessions still have a stable namespace.
101
+ *
102
+ * The `$derived.by` form is required here (over plain
103
+ * `$derived(expr)`) because class-field initialisers run BEFORE
104
+ * the constructor body assigns `_deps`; the function-form wrapper
105
+ * defers the read until the derived is first evaluated.
106
+ */
107
+ userIdSegment = $derived.by(() => this._deps.getUserId() ?? 'anon');
108
+ /**
109
+ * @param deps thunks the sub-context reads from the parent.
110
+ * Constructor-only - no implicit setup so the parent
111
+ * remains in control of effect ownership and lifecycle.
112
+ */
113
+ constructor(deps) {
114
+ this._deps = deps;
115
+ }
116
+ /**
117
+ * The current list of saved column presets. Setter is private to
118
+ * the sub-context; the parent writes through `setPresets` during
119
+ * the boot-time hydration flow.
120
+ */
121
+ get columnPresets() {
122
+ return this._columnPresets;
123
+ }
124
+ /**
125
+ * Writer for `columnPresets`. Public so the parent boot flow can
126
+ * publish the hydrated list; not part of the consumer-facing
127
+ * surface (consumer-facing writes go through `saveColumnPreset`).
128
+ */
129
+ setPresets(v) {
130
+ this._columnPresets = v;
131
+ }
132
+ /**
133
+ * The currently-active preset (the one whose name is persisted in
134
+ * the `selected-preset-name` slot). Setter is public so the parent
135
+ * boot flow can publish the resolved preset; the consumer-facing
136
+ * writer is `setSelectedPreset` below (which also persists the
137
+ * name).
138
+ */
139
+ get selectedPreset() {
140
+ return this._selectedPreset;
141
+ }
142
+ set selectedPreset(v) {
143
+ this._selectedPreset = v;
144
+ }
145
+ /**
146
+ * Build the canonical `scoria-table:<user>:<tableName>:<suffix>`
147
+ * storage key. Centralised so every persisted-state slot reaches
148
+ * for the same namespacing convention; the `<user>` segment is
149
+ * `getUserId() ?? 'anon'` (see `userIdSegment`).
150
+ */
151
+ storageKey(suffix) {
152
+ return `scoria-table:${this.userIdSegment}:${this._deps.getTableName()}:${suffix}`;
153
+ }
154
+ /**
155
+ * Boot-time hydration helper. Reads the persisted preset list from
156
+ * `localStorage`, validates it against `isJSONColumnDefSetArray`,
157
+ * and returns the parsed array (or an empty array on every failure
158
+ * path). The parent runs this once `setupDefaultColumnDefs` has
159
+ * completed so the live `columnDefs` can be compared against the
160
+ * persisted snapshot.
161
+ *
162
+ * `localStorage` access is gated by the parent's `browser` check;
163
+ * this method assumes the caller already verified the environment.
164
+ */
165
+ loadPresets() {
166
+ return readJSON(localStorage, this.storageKey('presets'), isJSONColumnDefSetArray, []);
167
+ }
168
+ /**
169
+ * Boot-time hydration helper. Reads the persisted selected-preset
170
+ * name. Returns `null` for missing / empty / storage-error slots
171
+ * so the parent can fall back to the first preset (or the
172
+ * default).
173
+ *
174
+ * Mirrors the pre-extraction try/catch around `getItem` verbatim:
175
+ * the same dev-only warning is emitted on read failure.
176
+ */
177
+ loadSelectedPresetName() {
178
+ let savedPresetName = null;
179
+ try {
180
+ savedPresetName = localStorage.getItem(this.storageKey('selected-preset-name'));
181
+ }
182
+ catch (e) {
183
+ if (dev) {
184
+ console.warn('selected-preset-name read failed:', e);
185
+ }
186
+ }
187
+ if (!isNonEmptyString(savedPresetName)) {
188
+ return null;
189
+ }
190
+ return savedPresetName;
191
+ }
192
+ /**
193
+ * Boot-time hydration helper. Reads the persisted per-table
194
+ * settings blob (`isCompact`, `singleClickEditing`, etc.). Returns
195
+ * `null` when the slot is missing or fails validation so the
196
+ * parent can apply its own default policy.
197
+ */
198
+ loadSavedSettings() {
199
+ const fallback = {};
200
+ const saved = readJSON(localStorage, this.storageKey('settings'), isSavedTableSettings, fallback);
201
+ if (saved === fallback) {
202
+ return null;
203
+ }
204
+ return saved;
205
+ }
206
+ /**
207
+ * Drop the persisted presets and selected-preset-name slots. Used
208
+ * by the parent's boot flow when the saved snapshot disagrees with
209
+ * the live column-def shape (schema drift or column-set change).
210
+ */
211
+ clearPresetsAndSelection() {
212
+ localStorage.removeItem(this.storageKey('presets'));
213
+ localStorage.removeItem(this.storageKey('selected-preset-name'));
214
+ }
215
+ /**
216
+ * Persist the selected-preset name as plain text (no JSON
217
+ * envelope - the slot is a single string by design).
218
+ */
219
+ persistSelectedPresetName(name) {
220
+ localStorage.setItem(this.storageKey('selected-preset-name'), name);
221
+ }
222
+ /**
223
+ * Persist the per-table settings blob (`isCompact`,
224
+ * `singleClickEditing`, etc.) as JSON. Format and key remain
225
+ * exactly as before the extraction.
226
+ */
227
+ persistSettings(settings) {
228
+ localStorage.setItem(this.storageKey('settings'), JSON.stringify(settings));
229
+ }
230
+ /**
231
+ * Persist the full preset list as JSON. Each preset's
232
+ * `columnPinningState` (Map-based) is flattened into entry arrays
233
+ * because Map does not survive `JSON.stringify`; the reader (via
234
+ * `loadPresets` -> `reassignDefsToPresets`) rehydrates it through
235
+ * `adaptJSONPinningState`.
236
+ *
237
+ * Pulled out of `saveColumnPreset` so the per-preset
238
+ * `toJSON()` walk is unit-testable in isolation.
239
+ */
240
+ persistPresets(presets) {
241
+ const jsonFriendly = presets.map((preset) => {
242
+ return {
243
+ ...preset,
244
+ columnDefs: preset.columnDefs.map((it) => {
245
+ return { ...it.toJSON(), header: it.header.toString() };
246
+ }),
247
+ columnPinningState: {
248
+ left: [...(preset.columnPinningState.left?.entries() ?? [])],
249
+ right: [...(preset.columnPinningState.right?.entries() ?? [])],
250
+ },
251
+ };
252
+ });
253
+ localStorage.setItem(this.storageKey('presets'), JSON.stringify(jsonFriendly));
254
+ }
255
+ /**
256
+ * Apply a saved column preset to the live table layout and
257
+ * persist the selection by name. Mirrors the pre-extraction
258
+ * `TableContext.setSelectedPreset` verbatim:
259
+ *
260
+ * 1. Replace `columnDefs`, `columnVisibility`, `columnPinning`.
261
+ * 2. Forward the preset's `sortingState` to the data-repository
262
+ * updater (no-op when the repo has no `updateSorting` hook).
263
+ * 3. Update `selectedPreset`.
264
+ * 4. Persist the preset name to `selected-preset-name`.
265
+ *
266
+ * Bound as a class property so callers (notably the toolbar
267
+ * dropdown) can pass the reference around without binding `this`.
268
+ */
269
+ setSelectedPreset = (preset) => {
270
+ if (this._deps.getDebug()) {
271
+ console.log('setting selected preset:', preset);
272
+ }
273
+ this._deps.setColumnDefs(preset.columnDefs);
274
+ this._deps.applySortingState(preset.sortingState);
275
+ this._deps.setColumnVisibility(preset.visibilityState);
276
+ this._deps.setColumnPinning(preset.columnPinningState);
277
+ this._selectedPreset = preset;
278
+ this.persistSelectedPresetName(preset.name);
279
+ };
280
+ /**
281
+ * Snapshot the current column layout into a new preset, replacing
282
+ * any existing preset whose name matches case-insensitively, and
283
+ * persist the full preset list to `localStorage`. Marks the new
284
+ * preset as selected (which also persists its name).
285
+ *
286
+ * Mirrors the pre-extraction `TableContext.saveColumnPreset`
287
+ * verbatim. No-op when `name` is empty.
288
+ */
289
+ saveColumnPreset = (name) => {
290
+ if (!name) {
291
+ return;
292
+ }
293
+ const visibilityState = this._deps.getColumnVisibility();
294
+ const columnPinningState = this._deps.getColumnPinning();
295
+ const columnDefs = this._deps.getColumnDefs();
296
+ const sortingState = this._deps.getSortingArray() ?? [];
297
+ const newPreset = {
298
+ columnDefs,
299
+ name,
300
+ visibilityState,
301
+ columnPinningState,
302
+ sortingState,
303
+ };
304
+ const lowercasePresetname = name.toLocaleLowerCase();
305
+ const indexToReplace = this._columnPresets.findIndex((oldPreset) => oldPreset.name.toLocaleLowerCase() === lowercasePresetname);
306
+ const newPresets = this._columnPresets.concat();
307
+ if (indexToReplace > -1) {
308
+ newPresets[indexToReplace] = newPreset;
309
+ }
310
+ else {
311
+ newPresets.push(newPreset);
312
+ }
313
+ this._columnPresets = newPresets;
314
+ this.persistPresets(newPresets);
315
+ this.setSelectedPreset(newPreset);
316
+ };
317
+ }
@@ -1,6 +1,17 @@
1
- import type { SvelteMap } from 'svelte/reactivity';
2
1
  import type { Row } from './Row.js';
2
+ /**
3
+ * Read-only view of a row model.
4
+ *
5
+ * Note: historically this interface (despite the `Readonly` name) declared
6
+ * `rowsById` as a mutable `SvelteMap` while the sibling `RowModel` used
7
+ * `ReadonlyMap`. The names suggested the inverse of their bodies; both
8
+ * interfaces now correctly typecheck as `ReadonlyMap<string, Row<T>>`.
9
+ *
10
+ * `ReadonlyRowModel` is currently unused inside scoria (no consumer beyond
11
+ * this file) but is retained as a public type for symmetry with `RowModel`
12
+ * and to support future read-only model exposure.
13
+ */
3
14
  export interface ReadonlyRowModel<T extends object> {
4
- readonly rows: Array<Row<T>>;
5
- readonly rowsById: SvelteMap<string, Row<T>>;
15
+ readonly rows: ReadonlyArray<Row<T>>;
16
+ readonly rowsById: ReadonlyMap<string, Row<T>>;
6
17
  }
@@ -1,4 +1,22 @@
1
1
  import type { TableCell } from '../Columns/TableCell.js';
2
+ /**
3
+ * `Row<T>` is the per-row handle the Table exposes to cells, repositories, and
4
+ * application code. Its `getValue` overload is the only point at which a
5
+ * column id is mapped to a value:
6
+ *
7
+ * - When the id is a known property of `T` (data-backed columns such as
8
+ * `AccessorDef<T, K>`), the call returns `T[K] | Promise<T[K]>`. Consumers
9
+ * in cell components can therefore drop `as` casts and read a narrow type.
10
+ * - Synthetic columns (`actions-<uuid>`, `is-selectable-<uuid>`, expand
11
+ * markers and similar) do not correspond to a property on `T`. The fallback
12
+ * `(columnId: string)` signature is retained for those calls and returns
13
+ * `unknown | Promise<unknown>`; callers that need a concrete type must
14
+ * still narrow it locally.
15
+ *
16
+ * The trade-off is intentional: the typed overload covers the common path
17
+ * (every accessor cell) while the looser signature keeps the synthetic
18
+ * columns compiling without runtime change.
19
+ */
2
20
  export interface Row<T extends object> {
3
21
  getValue: {
4
22
  <K extends keyof T>(columnId: K): T[K] | Promise<T[K]>;
@@ -1,4 +1,15 @@
1
1
  import type { Row } from './Row.js';
2
+ /**
3
+ * Mutable row-model container held by `TableContext`. The reactivity is
4
+ * carried by the surrounding `$state` cell on `TableContext`, not by the map
5
+ * itself (`new Map(...)` is sufficient because the whole `RowModel` is
6
+ * reassigned wholesale when sorting / pagination updates).
7
+ *
8
+ * - `rows` is the ordered array consumed by the body components.
9
+ * - `rowsById` is the lookup map. Typed as `ReadonlyMap` deliberately:
10
+ * `TableContext` rebuilds the map rather than mutating it in place, and
11
+ * downstream consumers must not write to it.
12
+ */
2
13
  export interface RowModel<T extends object> {
3
14
  rows: Array<Row<T>>;
4
15
  rowsById: ReadonlyMap<string, Row<T>>;