@lavalogic/scoria 0.37.44 → 0.37.45

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 (237) hide show
  1. package/README.md +58 -58
  2. package/dist/Components/AccordionGroup.svelte +46 -46
  3. package/dist/Components/AccordionGroupButton.svelte +76 -76
  4. package/dist/Components/Action.svelte +136 -136
  5. package/dist/Components/ActionProps.d.ts +2 -6
  6. package/dist/Components/AlertModal.svelte +195 -183
  7. package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte +702 -702
  8. package/dist/Components/Base/BaseModal.svelte +125 -125
  9. package/dist/Components/Base/ContextWrapper.svelte +72 -72
  10. package/dist/Components/Base/Pagination.svelte +198 -198
  11. package/dist/Components/Base/Snippets.svelte +36 -36
  12. package/dist/Components/BigRadioSet.svelte +38 -38
  13. package/dist/Components/Bubble.svelte +101 -101
  14. package/dist/Components/Button.svelte +209 -209
  15. package/dist/Components/ButtonProps.d.ts +2 -6
  16. package/dist/Components/Checkbox.svelte +86 -86
  17. package/dist/Components/CollapsibleCard.svelte +78 -78
  18. package/dist/Components/Contexts/ContextMenu.svelte +164 -164
  19. package/dist/Components/Contexts/ContextMenuDivider.svelte +15 -15
  20. package/dist/Components/Contexts/ContextMenuOption.svelte +60 -60
  21. package/dist/Components/Contexts/Toast.svelte +83 -83
  22. package/dist/Components/Contexts/ToastContainer.svelte +65 -65
  23. package/dist/Components/Contexts/Tooltip.svelte +37 -37
  24. package/dist/Components/DataMatrixIcon.svelte +112 -112
  25. package/dist/Components/DataMatrixIconProps.d.ts +3 -13
  26. package/dist/Components/DateInput.svelte +148 -148
  27. package/dist/Components/DatePicker.svelte +300 -300
  28. package/dist/Components/DesktopModal.svelte +90 -90
  29. package/dist/Components/Dial.svelte +204 -204
  30. package/dist/Components/DialProps.d.ts +1 -18
  31. package/dist/Components/DimensionInput.svelte +170 -170
  32. package/dist/Components/DragMenu/DragMenuHolder.svelte +119 -119
  33. package/dist/Components/DragMenu/DraggableCard.svelte +77 -77
  34. package/dist/Components/FileCard.svelte +24 -24
  35. package/dist/Components/FileUpload.svelte +236 -236
  36. package/dist/Components/GridInput.svelte +196 -200
  37. package/dist/Components/GridInputSet.svelte +29 -29
  38. package/dist/Components/HorizontalTabGroup.svelte +82 -82
  39. package/dist/Components/HorizontalTabGroupButton.svelte +44 -44
  40. package/dist/Components/Icon.svelte +128 -128
  41. package/dist/Components/IconProps.d.ts +2 -7
  42. package/dist/Components/Icons.js +357 -357
  43. package/dist/Components/LoadingAnimation.svelte +29 -29
  44. package/dist/Components/LoadingModal.svelte +45 -45
  45. package/dist/Components/LoadingOverlay.svelte +25 -25
  46. package/dist/Components/LoadingOverlayProps.d.ts +3 -7
  47. package/dist/Components/Modal.svelte +258 -258
  48. package/dist/Components/ModalProps.d.ts +0 -3
  49. package/dist/Components/MultiSelect.svelte +220 -220
  50. package/dist/Components/MultiSelectCommonProps.d.ts +6 -17
  51. package/dist/Components/Nav/Nav.svelte +99 -99
  52. package/dist/Components/Nav/NavProps.d.ts +4 -11
  53. package/dist/Components/Nav/NavServiceMenuList.svelte +43 -43
  54. package/dist/Components/Nav/NavTab.svelte +62 -62
  55. package/dist/Components/Nav/ServiceMenuItem.svelte +100 -100
  56. package/dist/Components/Nav/ServicesNav.svelte +80 -80
  57. package/dist/Components/NumberInput.svelte +157 -157
  58. package/dist/Components/PageHeading.svelte +25 -25
  59. package/dist/Components/PasswordInput.svelte +88 -88
  60. package/dist/Components/Portal.svelte +36 -36
  61. package/dist/Components/ProgressBubble.svelte +107 -108
  62. package/dist/Components/ProgressBubbleProps.d.ts +3 -3
  63. package/dist/Components/QuerySelect.svelte +366 -366
  64. package/dist/Components/QuerySelectProps.d.ts +4 -14
  65. package/dist/Components/SingleSelect.svelte +250 -250
  66. package/dist/Components/SingleSelectCommonProps.d.ts +3 -19
  67. package/dist/Components/StepButton.svelte +70 -70
  68. package/dist/Components/StepForm.svelte +140 -140
  69. package/dist/Components/Switch.svelte +69 -69
  70. package/dist/Components/Table/ARCHITECTURE.md +298 -0
  71. package/dist/Components/Table/Body/QuickSearchCell.svelte +679 -694
  72. package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +51 -51
  73. package/dist/Components/Table/Body/Rows/ColumnList.svelte +59 -59
  74. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +456 -478
  75. package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +79 -79
  76. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +185 -188
  77. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +124 -124
  78. package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +120 -120
  79. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +230 -230
  80. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +105 -105
  81. package/dist/Components/Table/Body/Rows/Columns/SelectColumn.d.ts +12 -9
  82. package/dist/Components/Table/Body/Rows/Columns/SelectTableCell.d.ts +5 -5
  83. package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +87 -87
  84. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +126 -126
  85. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +159 -159
  86. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +246 -246
  87. package/dist/Components/Table/Body/Rows/Columns/TableDatePickerProps.d.ts +4 -4
  88. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +216 -216
  89. package/dist/Components/Table/Body/Rows/Columns/TableQueryCell.d.ts +6 -5
  90. package/dist/Components/Table/Body/Rows/Columns/TableQueryColumn.d.ts +7 -6
  91. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +252 -257
  92. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +179 -179
  93. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +221 -229
  94. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte.d.ts +11 -11
  95. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +197 -197
  96. package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +190 -190
  97. package/dist/Components/Table/Body/Rows/TableRow.svelte +290 -290
  98. package/dist/Components/Table/Body/TableBody.svelte +155 -155
  99. package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +2 -3
  100. package/dist/Components/Table/ColumnFactory.svelte.d.ts +9 -11
  101. package/dist/Components/Table/ColumnFactory.svelte.js +101 -118
  102. package/dist/Components/Table/ColumnKindRegistry.d.ts +112 -0
  103. package/dist/Components/Table/ColumnKindRegistry.js +63 -0
  104. package/dist/Components/Table/Headers/HighlightAllHeader.svelte +41 -41
  105. package/dist/Components/Table/Headers/SelectAllHeader.svelte +30 -30
  106. package/dist/Components/Table/Headers/TableHead.svelte +415 -413
  107. package/dist/Components/Table/Misc/ColumnPanel.svelte +94 -94
  108. package/dist/Components/Table/Misc/ColumnPanelModal.svelte +112 -112
  109. package/dist/Components/Table/Misc/FilterInput.svelte +620 -644
  110. package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -12
  111. package/dist/Components/Table/Misc/FilterInputProps.d.ts +2 -2
  112. package/dist/Components/Table/Misc/FilterPanel.svelte +257 -257
  113. package/dist/Components/Table/Misc/FilterPanelModal.svelte +30 -30
  114. package/dist/Components/Table/Misc/SidePanel.svelte +35 -35
  115. package/dist/Components/Table/Misc/TableFooter.svelte +311 -311
  116. package/dist/Components/Table/Misc/TableHorizontalBar.svelte +125 -125
  117. package/dist/Components/Table/Misc/TableSidebar.svelte +157 -157
  118. package/dist/Components/Table/Misc/ToolboxPanel.svelte +100 -100
  119. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +107 -107
  120. package/dist/Components/Table/NestedTable.svelte +130 -133
  121. package/dist/Components/Table/SubApis.svelte.d.ts +1 -5
  122. package/dist/Components/Table/SubApis.svelte.js +33 -32
  123. package/dist/Components/Table/Table.svelte +692 -745
  124. package/dist/Components/Table/TableHelpers.svelte.d.ts +6 -19
  125. package/dist/Components/Table/TableHelpers.svelte.js +6 -14
  126. package/dist/Components/Table/Types/Columns/Column.d.ts +2 -2
  127. package/dist/Components/Table/Types/Columns/DateColumn.d.ts +3 -3
  128. package/dist/Components/Table/Types/Columns/DateTableCell.d.ts +7 -7
  129. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.d.ts +7 -8
  130. package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.js +4 -5
  131. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.d.ts +11 -14
  132. package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.js +3 -4
  133. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.d.ts +7 -11
  134. package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.js +3 -3
  135. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.d.ts +13 -18
  136. package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.js +4 -5
  137. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +5 -5
  138. package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.js +2 -2
  139. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +15 -12
  140. package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.js +4 -5
  141. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.d.ts +8 -12
  142. package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.js +3 -3
  143. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +6 -6
  144. package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +3 -3
  145. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +49 -16
  146. package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.js +27 -5
  147. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.d.ts +7 -7
  148. package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +4 -4
  149. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.d.ts +5 -5
  150. package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.js +2 -2
  151. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.d.ts +5 -5
  152. package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.js +2 -2
  153. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.d.ts +5 -5
  154. package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.js +2 -2
  155. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.d.ts +5 -5
  156. package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.js +2 -2
  157. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +11 -19
  158. package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.js +4 -8
  159. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts +6 -7
  160. package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.js +3 -4
  161. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +9 -9
  162. package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +4 -4
  163. package/dist/Components/Table/Types/Columns/ExpandTableCell.d.ts +5 -5
  164. package/dist/Components/Table/Types/Columns/ProgressBarTableCell.d.ts +6 -6
  165. package/dist/Components/Table/Types/Columns/TableCell.d.ts +7 -6
  166. package/dist/Components/Table/Types/Context/ClipboardState.svelte.d.ts +98 -0
  167. package/dist/Components/Table/Types/Context/ClipboardState.svelte.js +290 -0
  168. package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.d.ts +17 -45
  169. package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.js +17 -45
  170. package/dist/Components/Table/Types/Context/FilteringState.svelte.d.ts +9 -20
  171. package/dist/Components/Table/Types/Context/FilteringState.svelte.js +9 -20
  172. package/dist/Components/Table/Types/Context/FocusState.svelte.d.ts +23 -42
  173. package/dist/Components/Table/Types/Context/FocusState.svelte.js +32 -59
  174. package/dist/Components/Table/Types/Context/ITable.d.ts +5 -8
  175. package/dist/Components/Table/Types/Context/PreferencesState.svelte.d.ts +29 -56
  176. package/dist/Components/Table/Types/Context/PreferencesState.svelte.js +28 -55
  177. package/dist/Components/Table/Types/Context/QueryValuesState.svelte.d.ts +50 -0
  178. package/dist/Components/Table/Types/Context/QueryValuesState.svelte.js +62 -0
  179. package/dist/Components/Table/Types/Context/SelectionState.svelte.d.ts +17 -28
  180. package/dist/Components/Table/Types/Context/SelectionState.svelte.js +17 -28
  181. package/dist/Components/Table/Types/Context/SortingState.svelte.d.ts +15 -29
  182. package/dist/Components/Table/Types/Context/SortingState.svelte.js +17 -31
  183. package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +212 -325
  184. package/dist/Components/Table/Types/Context/TableContext.svelte.js +292 -706
  185. package/dist/Components/Table/Types/Context/VirtualisationState.svelte.d.ts +62 -79
  186. package/dist/Components/Table/Types/Context/VirtualisationState.svelte.js +54 -73
  187. package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.d.ts +16 -27
  188. package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.js +16 -27
  189. package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +12 -15
  190. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +15 -30
  191. package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +16 -28
  192. package/dist/Components/Table/Types/Header.d.ts +4 -4
  193. package/dist/Components/Table/Types/HeaderGroup.d.ts +5 -5
  194. package/dist/Components/Table/Types/Public/index.d.ts +2 -4
  195. package/dist/Components/Table/Types/Public/index.js +2 -4
  196. package/dist/Components/Table/clipboardEscape.d.ts +32 -0
  197. package/dist/Components/Table/clipboardEscape.js +45 -0
  198. package/dist/Components/Table/createTable.svelte.d.ts +8 -18
  199. package/dist/Components/Table/createTable.svelte.js +19 -47
  200. package/dist/Components/Test/TestContextConsumer.svelte +13 -13
  201. package/dist/Components/TextArea.svelte +130 -130
  202. package/dist/Components/TextInput.svelte +176 -176
  203. package/dist/Components/ThreeStateRadio.svelte +131 -131
  204. package/dist/Components/Touch/BoolCard.svelte +45 -45
  205. package/dist/Components/Touch/DateModal.svelte +209 -209
  206. package/dist/Components/Touch/EditCard.svelte +59 -59
  207. package/dist/Components/Touch/InfoCard.svelte +31 -31
  208. package/dist/Components/Touch/InfoTextCard.svelte +28 -28
  209. package/dist/Components/Touch/ModalExplanation.svelte +17 -17
  210. package/dist/Components/Touch/NumberKeyboard.svelte +225 -225
  211. package/dist/Components/Touch/NumberModal.svelte +79 -79
  212. package/dist/Components/Touch/PlusMinusCard.svelte +46 -46
  213. package/dist/Components/Touch/SelectModal.svelte +123 -123
  214. package/dist/Components/Touch/SummaryCard.svelte +93 -93
  215. package/dist/Components/Touch/TextAreaModal.svelte +95 -95
  216. package/dist/Components/Touch/TextModal.svelte +106 -106
  217. package/dist/Components/Touch/TouchCard.svelte +33 -33
  218. package/dist/Components/Touch/TouchModal.svelte +274 -274
  219. package/dist/Components/Touch/UtilityButton.svelte +109 -109
  220. package/dist/Components/VerticalTabGroup.svelte +79 -79
  221. package/dist/Components/VerticalTabGroupButton.svelte +58 -58
  222. package/dist/Contexts/ToastContext.svelte.js +3 -4
  223. package/dist/Helpers/Datamatrix.d.ts +19 -19
  224. package/dist/Helpers/Datamatrix.js +291 -291
  225. package/dist/Helpers/Helpers.svelte.d.ts +2 -4
  226. package/dist/Helpers/Helpers.svelte.js +2 -4
  227. package/dist/Helpers/dropdownPortal.d.ts +26 -41
  228. package/dist/Helpers/dropdownPortal.js +62 -116
  229. package/dist/Types/Examples/ExampleModal.svelte +35 -35
  230. package/dist/index.d.ts +0 -1
  231. package/dist/scss/_basics.scss +12 -12
  232. package/dist/scss/_colours.scss +134 -134
  233. package/dist/scss/_mixins.scss +3348 -3360
  234. package/dist/scss/_motion.scss +57 -57
  235. package/dist/scss/_sizing.scss +85 -85
  236. package/dist/scss/_transitions.scss +8 -8
  237. package/package.json +2 -1
@@ -0,0 +1,50 @@
1
+ import type { ColumnDef } from '../Columns/Definitions/ColumnDef.svelte.js';
2
+ /**
3
+ * Sub-context owning the typeahead-echo cache for QuerySelect-backed
4
+ * filter inputs. Each value here is the last option the user selected
5
+ * for a column whose filter renders a remote `QuerySelect` — kept so
6
+ * the chip's label survives a reactive re-render even when the
7
+ * server-side filter representation in `ColumnFiltersState` is just a
8
+ * primitive id.
9
+ *
10
+ * Why a sub-context (rather than the legacy
11
+ * `dataRepo.__queryValues: Map<string, unknown>`):
12
+ *
13
+ * - Forces every read and write to flow through methods keyed on the
14
+ * `ColumnDef`, so the `def.id` keying contract is checked at the
15
+ * call site instead of accidentally diverging (the most recent
16
+ * "select snaps back to placeholder" regressions were caused by
17
+ * a write keyed by header label vs a read keyed by `def.id`).
18
+ * - Lives alongside the other Phase 6 sub-contexts on
19
+ * `TableContext`, keeping the data repo focused on data-fetch
20
+ * concerns rather than UI-state echo.
21
+ * - Backed by a `SvelteMap` so reads inside `$derived` / `$effect`
22
+ * blocks re-evaluate when a write lands.
23
+ */
24
+ export declare class QueryValuesState<TRow extends object> {
25
+ private readonly _values;
26
+ /**
27
+ * Return the cached typeahead echo for `def`, or `undefined` if none
28
+ * was stored. The generic `V` lets a caller with a typed
29
+ * `ColumnDef<TRow, V>` narrow the result; defaults to `unknown` for
30
+ * untyped consumers.
31
+ */
32
+ get<V = unknown>(def: ColumnDef<TRow>): V | undefined;
33
+ /**
34
+ * Cache the supplied value under `def.id`. Pass `null` to record an
35
+ * explicit "user cleared the selection" state (still considered
36
+ * present by `has`); use `delete` to forget the column entirely.
37
+ */
38
+ set<V>(def: ColumnDef<TRow>, value: V | null): void;
39
+ /** True when the column has any cached value (including an explicit `null`). */
40
+ has(def: ColumnDef<TRow>): boolean;
41
+ /** Drop the cache entry for `def`. No-op when not present. */
42
+ delete(def: ColumnDef<TRow>): void;
43
+ /** Drop every cached value. */
44
+ clear(): void;
45
+ /**
46
+ * Return a snapshot copy of the cache for debug / inspection use.
47
+ * Consumers cannot mutate the live store through the returned map.
48
+ */
49
+ snapshot(): ReadonlyMap<string, unknown>;
50
+ }
@@ -0,0 +1,62 @@
1
+ import { SvelteMap } from 'svelte/reactivity';
2
+ /**
3
+ * Sub-context owning the typeahead-echo cache for QuerySelect-backed
4
+ * filter inputs. Each value here is the last option the user selected
5
+ * for a column whose filter renders a remote `QuerySelect` — kept so
6
+ * the chip's label survives a reactive re-render even when the
7
+ * server-side filter representation in `ColumnFiltersState` is just a
8
+ * primitive id.
9
+ *
10
+ * Why a sub-context (rather than the legacy
11
+ * `dataRepo.__queryValues: Map<string, unknown>`):
12
+ *
13
+ * - Forces every read and write to flow through methods keyed on the
14
+ * `ColumnDef`, so the `def.id` keying contract is checked at the
15
+ * call site instead of accidentally diverging (the most recent
16
+ * "select snaps back to placeholder" regressions were caused by
17
+ * a write keyed by header label vs a read keyed by `def.id`).
18
+ * - Lives alongside the other Phase 6 sub-contexts on
19
+ * `TableContext`, keeping the data repo focused on data-fetch
20
+ * concerns rather than UI-state echo.
21
+ * - Backed by a `SvelteMap` so reads inside `$derived` / `$effect`
22
+ * blocks re-evaluate when a write lands.
23
+ */
24
+ export class QueryValuesState {
25
+ _values = new SvelteMap();
26
+ /**
27
+ * Return the cached typeahead echo for `def`, or `undefined` if none
28
+ * was stored. The generic `V` lets a caller with a typed
29
+ * `ColumnDef<TRow, V>` narrow the result; defaults to `unknown` for
30
+ * untyped consumers.
31
+ */
32
+ get(def) {
33
+ return this._values.get(def.id);
34
+ }
35
+ /**
36
+ * Cache the supplied value under `def.id`. Pass `null` to record an
37
+ * explicit "user cleared the selection" state (still considered
38
+ * present by `has`); use `delete` to forget the column entirely.
39
+ */
40
+ set(def, value) {
41
+ this._values.set(def.id, value);
42
+ }
43
+ /** True when the column has any cached value (including an explicit `null`). */
44
+ has(def) {
45
+ return this._values.has(def.id);
46
+ }
47
+ /** Drop the cache entry for `def`. No-op when not present. */
48
+ delete(def) {
49
+ this._values.delete(def.id);
50
+ }
51
+ /** Drop every cached value. */
52
+ clear() {
53
+ this._values.clear();
54
+ }
55
+ /**
56
+ * Return a snapshot copy of the cache for debug / inspection use.
57
+ * Consumers cannot mutate the live store through the returned map.
58
+ */
59
+ snapshot() {
60
+ return new Map(this._values);
61
+ }
62
+ }
@@ -48,24 +48,18 @@ export interface SelectionStateDeps<T extends object, RowIdType extends Primitiv
48
48
  getDebug: () => boolean;
49
49
  }
50
50
  /**
51
- * Phase 6.5 god-object decomposition - sub-context that owns every
52
- * selection + highlighting + key-cache concern previously held directly
53
- * on `TableContext`:
51
+ * Sub-context owning every selection + highlighting + key-cache
52
+ * concern:
54
53
  *
55
- * - `selectedItems` (the `SvelteMap<RowIdType, T>` of currently
56
- * selected rows, keyed by extractor id);
57
- * - `invalidValues` (the parallel `SvelteMap` of rows currently
58
- * failing their per-cell validation);
59
- * - `highlightedItems` (the visual-highlight `SvelteMap`, used for
60
- * the copy-to-clipboard "highlighted rows" flow);
61
- * - `_keyCache` (a `WeakMap<T, RowIdType>` that memoises the
62
- * `selectionExtractor` result for each row reference;
63
- * `handleItemMutation` clears the entry when the parent's
64
- * `onEditCell` callback may have mutated the id field in place);
54
+ * - `selectedItems` / `invalidValues` / `highlightedItems`
55
+ * (`SvelteMap<RowIdType, T>` slots keyed by extractor id);
56
+ * - `_keyCache` (`WeakMap<T, RowIdType>` memoising the
57
+ * `selectionExtractor` result per row reference;
58
+ * `handleItemMutation` clears the entry when `onEditCell` may have
59
+ * mutated the id field in place);
65
60
  * - the pending-flush buffer (`_pendingSelectionChanges`) and its
66
- * debounced flush - preserves SvelteMap per-key reactivity and
67
- * avoids the per-toggle reactive cascade caught during Phase-5
68
- * Group 2;
61
+ * debounced flush - preserves SvelteMap per-key reactivity and avoids
62
+ * a per-toggle reactive cascade;
69
63
  * - `toggleSelected` / `setSelected` / `resetSelectedItems` /
70
64
  * `setSelectionMap` (consumer-facing writers);
71
65
  * - `selectionContains` / `addInvalidValue` / `removeInvalidValue`;
@@ -75,19 +69,14 @@ export interface SelectionStateDeps<T extends object, RowIdType extends Primitiv
75
69
  * `onHighlightAll` / `allHighlighted` / `hasHighlightedItems`;
76
70
  * - `cachedKey(item)` (sync/async key memoisation);
77
71
  * - `handleItemMutation` (the key-cache + selection-rebind half of
78
- * the pre-extraction `onEditCell`; the user-supplied edit callback
79
- * stays on `TableContext`).
72
+ * `onEditCell`; the user-supplied edit callback lives on
73
+ * `TableContext`).
80
74
  *
81
- * Effect lifecycle: the parent owns every `$effect`. The two effects
82
- * that previously read these state slots (the post-pagination rebind
83
- * and the `_allHighlighted` derivation) continue to live on
84
- * `TableContext`, but they now call into this sub-context through
85
- * `updateSelectedItems()` / `setAllHighlighted(...)` /
86
- * `computeAllHighlightedInRange(...)` rather than mutating the state
87
- * slots directly.
88
- *
89
- * `TableContext` retains delegating getters / setters / methods for
90
- * every legacy surface so existing consumers need no migration.
75
+ * Effect lifecycle: the parent owns every `$effect`. Effects that read
76
+ * these state slots (the post-pagination rebind, the `_allHighlighted`
77
+ * derivation) live on `TableContext` and call into this sub-context
78
+ * through `updateSelectedItems()` / `setAllHighlighted(...)` /
79
+ * `computeAllHighlightedInRange(...)`.
91
80
  */
92
81
  export declare class SelectionState<T extends object, RowIdType extends Primitive> {
93
82
  private readonly _deps;
@@ -3,24 +3,18 @@ import { SvelteMap } from 'svelte/reactivity';
3
3
  import { asyncForEach, devCatch } from '../../../../Helpers/Helpers.svelte.js';
4
4
  import { RowSelectionDef } from '../Columns/Definitions/RowSelection/RowSelectionDef.svelte.js';
5
5
  /**
6
- * Phase 6.5 god-object decomposition - sub-context that owns every
7
- * selection + highlighting + key-cache concern previously held directly
8
- * on `TableContext`:
6
+ * Sub-context owning every selection + highlighting + key-cache
7
+ * concern:
9
8
  *
10
- * - `selectedItems` (the `SvelteMap<RowIdType, T>` of currently
11
- * selected rows, keyed by extractor id);
12
- * - `invalidValues` (the parallel `SvelteMap` of rows currently
13
- * failing their per-cell validation);
14
- * - `highlightedItems` (the visual-highlight `SvelteMap`, used for
15
- * the copy-to-clipboard "highlighted rows" flow);
16
- * - `_keyCache` (a `WeakMap<T, RowIdType>` that memoises the
17
- * `selectionExtractor` result for each row reference;
18
- * `handleItemMutation` clears the entry when the parent's
19
- * `onEditCell` callback may have mutated the id field in place);
9
+ * - `selectedItems` / `invalidValues` / `highlightedItems`
10
+ * (`SvelteMap<RowIdType, T>` slots keyed by extractor id);
11
+ * - `_keyCache` (`WeakMap<T, RowIdType>` memoising the
12
+ * `selectionExtractor` result per row reference;
13
+ * `handleItemMutation` clears the entry when `onEditCell` may have
14
+ * mutated the id field in place);
20
15
  * - the pending-flush buffer (`_pendingSelectionChanges`) and its
21
- * debounced flush - preserves SvelteMap per-key reactivity and
22
- * avoids the per-toggle reactive cascade caught during Phase-5
23
- * Group 2;
16
+ * debounced flush - preserves SvelteMap per-key reactivity and avoids
17
+ * a per-toggle reactive cascade;
24
18
  * - `toggleSelected` / `setSelected` / `resetSelectedItems` /
25
19
  * `setSelectionMap` (consumer-facing writers);
26
20
  * - `selectionContains` / `addInvalidValue` / `removeInvalidValue`;
@@ -30,19 +24,14 @@ import { RowSelectionDef } from '../Columns/Definitions/RowSelection/RowSelectio
30
24
  * `onHighlightAll` / `allHighlighted` / `hasHighlightedItems`;
31
25
  * - `cachedKey(item)` (sync/async key memoisation);
32
26
  * - `handleItemMutation` (the key-cache + selection-rebind half of
33
- * the pre-extraction `onEditCell`; the user-supplied edit callback
34
- * stays on `TableContext`).
27
+ * `onEditCell`; the user-supplied edit callback lives on
28
+ * `TableContext`).
35
29
  *
36
- * Effect lifecycle: the parent owns every `$effect`. The two effects
37
- * that previously read these state slots (the post-pagination rebind
38
- * and the `_allHighlighted` derivation) continue to live on
39
- * `TableContext`, but they now call into this sub-context through
40
- * `updateSelectedItems()` / `setAllHighlighted(...)` /
41
- * `computeAllHighlightedInRange(...)` rather than mutating the state
42
- * slots directly.
43
- *
44
- * `TableContext` retains delegating getters / setters / methods for
45
- * every legacy surface so existing consumers need no migration.
30
+ * Effect lifecycle: the parent owns every `$effect`. Effects that read
31
+ * these state slots (the post-pagination rebind, the `_allHighlighted`
32
+ * derivation) live on `TableContext` and call into this sub-context
33
+ * through `updateSelectedItems()` / `setAllHighlighted(...)` /
34
+ * `computeAllHighlightedInRange(...)`.
46
35
  */
47
36
  export class SelectionState {
48
37
  _deps;
@@ -2,31 +2,24 @@ import type { ColumnDef } from '../Columns/Definitions/ColumnDef.svelte.js';
2
2
  import { PaginationType } from '../Pagination/PaginationType.js';
3
3
  import type { SortingState as SortingStateArray } from '../DataRepository/SortingState.js';
4
4
  /**
5
- * Comparator factory for any column whose stored row values implement the
6
- * `<` / `>` operators natively (strings, numbers, Dates). Used by
7
- * `DisplayDef`, `TextInputDef`, `NumberInputDef`, `DateInputDef`, and
8
- * `SelectDef`. The desc flag is captured at builder time so the inner
9
- * comparator pays no extra branching per comparison.
10
- *
11
- * Lifted out of `TableContext.svelte.ts` during Phase 6.1 god-object
12
- * decomposition; the closure shape and return values are unchanged.
5
+ * Comparator factory for any column whose stored row values implement
6
+ * `<` / `>` natively (strings, numbers, Dates). Used by `DisplayDef`,
7
+ * `TextInputDef`, `NumberInputDef`, `DateInputDef`, and `SelectDef`.
8
+ * The desc flag is captured at builder time so the inner comparator
9
+ * pays no extra branching per comparison.
13
10
  */
14
11
  export declare function comparableSortingFn<T>(id: keyof T, desc: boolean): (a: T, b: T) => -1 | 0 | 1;
15
12
  /**
16
13
  * Comparator factory for `CheckboxDef` columns. Boolean-coercion compares
17
14
  * truthy-vs-falsy so undefined / null / 0 collapse to "unchecked".
18
- *
19
- * Lifted from `TableContext.svelte.ts` during Phase 6.1.
20
15
  */
21
16
  export declare function checkboxSortingFn<T>(id: keyof T, desc: boolean): (a: T, b: T) => -1 | 0 | 1;
22
17
  /**
23
18
  * Comparator factory for `ProgressBarDef` columns. The stored value is a
24
- * `[min, max]` tuple and the comparison is performed on `min / max` (the
25
- * fractional completion). Zero-`max` and undefined endpoints sort to the
26
- * bottom in ascending order (and to the top in descending order) so empty
27
- * progress bars cluster together.
28
- *
29
- * Lifted from `TableContext.svelte.ts` during Phase 6.1.
19
+ * `[min, max]` tuple; comparison is performed on `min / max` (fractional
20
+ * completion). Zero-`max` and undefined endpoints sort to the bottom in
21
+ * ascending order (and to the top in descending order) so empty progress
22
+ * bars cluster together.
30
23
  */
31
24
  export declare function progressSortingFn<T>(id: keyof T, desc: boolean): (a: T, b: T) => -1 | 0 | 1;
32
25
  /**
@@ -52,16 +45,10 @@ export interface SortingStateDeps<T extends object> {
52
45
  getDebug: () => boolean;
53
46
  }
54
47
  /**
55
- * Phase 6.1 god-object decomposition - sub-context that owns the
56
- * sort-related derived chain (`sortedData`), the per-`ColumnDef`
57
- * comparator dispatch (`getSortingFn`), and the comparator-hoist
58
- * optimisation that lifts the `instanceof` cascade out of the
59
- * `.sort()` callback.
60
- *
61
- * `TableContext` retains delegating getters / methods for backwards
62
- * compatibility; future consumers can read `tableContext._sorting`
63
- * directly once the migration is complete (see
64
- * `src/stories/Concepts/TableContext-decomposition.mdx`).
48
+ * Sub-context owning the sort-related derived chain (`sortedData`),
49
+ * the per-`ColumnDef` comparator dispatch (`getSortingFn`), and the
50
+ * comparator-hoist optimisation that lifts the `instanceof` cascade
51
+ * out of the `.sort()` callback.
65
52
  */
66
53
  export declare class SortingState<T extends object> {
67
54
  private readonly _deps;
@@ -99,9 +86,8 @@ export declare class SortingState<T extends object> {
99
86
  *
100
87
  * Performance: the per-column `instanceof` cascade inside
101
88
  * `getSortingFn` is paid O(columns) times per re-sort instead of
102
- * O(n log n) - the comparator array is materialised once before the
103
- * `.sort()` callback. Lifted from `TableContext.sortedData` in
104
- * Phase-5 Group 2 (workorder P0); preserved verbatim here.
89
+ * O(n log n); the comparator array is materialised once before the
90
+ * `.sort()` callback runs.
105
91
  *
106
92
  * Abort semantics: when `filteredData` or `sortingState` changes
107
93
  * mid-sort the previous controller is aborted and the in-flight
@@ -8,14 +8,11 @@ import { DisplayDef } from '../Columns/Definitions/Display/DisplayDef.svelte.js'
8
8
  import { ProgressBarDef } from '../Columns/Definitions/Display/ProgressBarDef.svelte.js';
9
9
  import { PaginationType } from '../Pagination/PaginationType.js';
10
10
  /**
11
- * Comparator factory for any column whose stored row values implement the
12
- * `<` / `>` operators natively (strings, numbers, Dates). Used by
13
- * `DisplayDef`, `TextInputDef`, `NumberInputDef`, `DateInputDef`, and
14
- * `SelectDef`. The desc flag is captured at builder time so the inner
15
- * comparator pays no extra branching per comparison.
16
- *
17
- * Lifted out of `TableContext.svelte.ts` during Phase 6.1 god-object
18
- * decomposition; the closure shape and return values are unchanged.
11
+ * Comparator factory for any column whose stored row values implement
12
+ * `<` / `>` natively (strings, numbers, Dates). Used by `DisplayDef`,
13
+ * `TextInputDef`, `NumberInputDef`, `DateInputDef`, and `SelectDef`.
14
+ * The desc flag is captured at builder time so the inner comparator
15
+ * pays no extra branching per comparison.
19
16
  */
20
17
  export function comparableSortingFn(id, desc) {
21
18
  return desc
@@ -53,8 +50,6 @@ export function comparableSortingFn(id, desc) {
53
50
  /**
54
51
  * Comparator factory for `CheckboxDef` columns. Boolean-coercion compares
55
52
  * truthy-vs-falsy so undefined / null / 0 collapse to "unchecked".
56
- *
57
- * Lifted from `TableContext.svelte.ts` during Phase 6.1.
58
53
  */
59
54
  export function checkboxSortingFn(id, desc) {
60
55
  return desc
@@ -79,12 +74,10 @@ export function checkboxSortingFn(id, desc) {
79
74
  }
80
75
  /**
81
76
  * Comparator factory for `ProgressBarDef` columns. The stored value is a
82
- * `[min, max]` tuple and the comparison is performed on `min / max` (the
83
- * fractional completion). Zero-`max` and undefined endpoints sort to the
84
- * bottom in ascending order (and to the top in descending order) so empty
85
- * progress bars cluster together.
86
- *
87
- * Lifted from `TableContext.svelte.ts` during Phase 6.1.
77
+ * `[min, max]` tuple; comparison is performed on `min / max` (fractional
78
+ * completion). Zero-`max` and undefined endpoints sort to the bottom in
79
+ * ascending order (and to the top in descending order) so empty progress
80
+ * bars cluster together.
88
81
  */
89
82
  export function progressSortingFn(id, desc) {
90
83
  return desc
@@ -138,16 +131,10 @@ export function progressSortingFn(id, desc) {
138
131
  };
139
132
  }
140
133
  /**
141
- * Phase 6.1 god-object decomposition - sub-context that owns the
142
- * sort-related derived chain (`sortedData`), the per-`ColumnDef`
143
- * comparator dispatch (`getSortingFn`), and the comparator-hoist
144
- * optimisation that lifts the `instanceof` cascade out of the
145
- * `.sort()` callback.
146
- *
147
- * `TableContext` retains delegating getters / methods for backwards
148
- * compatibility; future consumers can read `tableContext._sorting`
149
- * directly once the migration is complete (see
150
- * `src/stories/Concepts/TableContext-decomposition.mdx`).
134
+ * Sub-context owning the sort-related derived chain (`sortedData`),
135
+ * the per-`ColumnDef` comparator dispatch (`getSortingFn`), and the
136
+ * comparator-hoist optimisation that lifts the `instanceof` cascade
137
+ * out of the `.sort()` callback.
151
138
  */
152
139
  export class SortingState {
153
140
  _deps;
@@ -214,9 +201,8 @@ export class SortingState {
214
201
  *
215
202
  * Performance: the per-column `instanceof` cascade inside
216
203
  * `getSortingFn` is paid O(columns) times per re-sort instead of
217
- * O(n log n) - the comparator array is materialised once before the
218
- * `.sort()` callback. Lifted from `TableContext.sortedData` in
219
- * Phase-5 Group 2 (workorder P0); preserved verbatim here.
204
+ * O(n log n); the comparator array is materialised once before the
205
+ * `.sort()` callback runs.
220
206
  *
221
207
  * Abort semantics: when `filteredData` or `sortingState` changes
222
208
  * mid-sort the previous controller is aborted and the in-flight
@@ -239,8 +225,8 @@ export class SortingState {
239
225
  }
240
226
  const dataToSort = filteredData.concat();
241
227
  // Hoist comparators out of the .sort() callback so the
242
- // per-column instanceof cascade inside getSortingFn is paid
243
- // O(columns) times instead of O(n log n) (workorder P0).
228
+ // per-column instanceof cascade in getSortingFn is paid
229
+ // O(columns) times instead of O(n log n).
244
230
  const sortingFns = [];
245
231
  for (let i = 0; i < sortingArray.length; i++) {
246
232
  const { id, desc } = sortingArray[i];