@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.
- package/README.md +58 -58
- package/dist/Components/AccordionGroup.svelte +46 -46
- package/dist/Components/AccordionGroupButton.svelte +76 -76
- package/dist/Components/Action.svelte +136 -136
- package/dist/Components/ActionProps.d.ts +2 -6
- package/dist/Components/AlertModal.svelte +195 -183
- package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte +702 -702
- package/dist/Components/Base/BaseModal.svelte +125 -125
- package/dist/Components/Base/ContextWrapper.svelte +72 -72
- package/dist/Components/Base/Pagination.svelte +198 -198
- package/dist/Components/Base/Snippets.svelte +36 -36
- package/dist/Components/BigRadioSet.svelte +38 -38
- package/dist/Components/Bubble.svelte +101 -101
- package/dist/Components/Button.svelte +209 -209
- package/dist/Components/ButtonProps.d.ts +2 -6
- package/dist/Components/Checkbox.svelte +86 -86
- package/dist/Components/CollapsibleCard.svelte +78 -78
- package/dist/Components/Contexts/ContextMenu.svelte +164 -164
- package/dist/Components/Contexts/ContextMenuDivider.svelte +15 -15
- package/dist/Components/Contexts/ContextMenuOption.svelte +60 -60
- package/dist/Components/Contexts/Toast.svelte +83 -83
- package/dist/Components/Contexts/ToastContainer.svelte +65 -65
- package/dist/Components/Contexts/Tooltip.svelte +37 -37
- package/dist/Components/DataMatrixIcon.svelte +112 -112
- package/dist/Components/DataMatrixIconProps.d.ts +3 -13
- package/dist/Components/DateInput.svelte +148 -148
- package/dist/Components/DatePicker.svelte +300 -300
- package/dist/Components/DesktopModal.svelte +90 -90
- package/dist/Components/Dial.svelte +204 -204
- package/dist/Components/DialProps.d.ts +1 -18
- package/dist/Components/DimensionInput.svelte +170 -170
- package/dist/Components/DragMenu/DragMenuHolder.svelte +119 -119
- package/dist/Components/DragMenu/DraggableCard.svelte +77 -77
- package/dist/Components/FileCard.svelte +24 -24
- package/dist/Components/FileUpload.svelte +236 -236
- package/dist/Components/GridInput.svelte +196 -200
- package/dist/Components/GridInputSet.svelte +29 -29
- package/dist/Components/HorizontalTabGroup.svelte +82 -82
- package/dist/Components/HorizontalTabGroupButton.svelte +44 -44
- package/dist/Components/Icon.svelte +128 -128
- package/dist/Components/IconProps.d.ts +2 -7
- package/dist/Components/Icons.js +357 -357
- package/dist/Components/LoadingAnimation.svelte +29 -29
- package/dist/Components/LoadingModal.svelte +45 -45
- package/dist/Components/LoadingOverlay.svelte +25 -25
- package/dist/Components/LoadingOverlayProps.d.ts +3 -7
- package/dist/Components/Modal.svelte +258 -258
- package/dist/Components/ModalProps.d.ts +0 -3
- package/dist/Components/MultiSelect.svelte +220 -220
- package/dist/Components/MultiSelectCommonProps.d.ts +6 -17
- package/dist/Components/Nav/Nav.svelte +99 -99
- package/dist/Components/Nav/NavProps.d.ts +4 -11
- package/dist/Components/Nav/NavServiceMenuList.svelte +43 -43
- package/dist/Components/Nav/NavTab.svelte +62 -62
- package/dist/Components/Nav/ServiceMenuItem.svelte +100 -100
- package/dist/Components/Nav/ServicesNav.svelte +80 -80
- package/dist/Components/NumberInput.svelte +157 -157
- package/dist/Components/PageHeading.svelte +25 -25
- package/dist/Components/PasswordInput.svelte +88 -88
- package/dist/Components/Portal.svelte +36 -36
- package/dist/Components/ProgressBubble.svelte +107 -108
- package/dist/Components/ProgressBubbleProps.d.ts +3 -3
- package/dist/Components/QuerySelect.svelte +366 -366
- package/dist/Components/QuerySelectProps.d.ts +4 -14
- package/dist/Components/SingleSelect.svelte +250 -250
- package/dist/Components/SingleSelectCommonProps.d.ts +3 -19
- package/dist/Components/StepButton.svelte +70 -70
- package/dist/Components/StepForm.svelte +140 -140
- package/dist/Components/Switch.svelte +69 -69
- package/dist/Components/Table/ARCHITECTURE.md +298 -0
- package/dist/Components/Table/Body/QuickSearchCell.svelte +679 -694
- package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +51 -51
- package/dist/Components/Table/Body/Rows/ColumnList.svelte +59 -59
- package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +456 -478
- package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +79 -79
- package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +185 -188
- package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +124 -124
- package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +120 -120
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +230 -230
- package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +105 -105
- package/dist/Components/Table/Body/Rows/Columns/SelectColumn.d.ts +12 -9
- package/dist/Components/Table/Body/Rows/Columns/SelectTableCell.d.ts +5 -5
- package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +87 -87
- package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +126 -126
- package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +159 -159
- package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +246 -246
- package/dist/Components/Table/Body/Rows/Columns/TableDatePickerProps.d.ts +4 -4
- package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +216 -216
- package/dist/Components/Table/Body/Rows/Columns/TableQueryCell.d.ts +6 -5
- package/dist/Components/Table/Body/Rows/Columns/TableQueryColumn.d.ts +7 -6
- package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +252 -257
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +179 -179
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +221 -229
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte.d.ts +11 -11
- package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +197 -197
- package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +190 -190
- package/dist/Components/Table/Body/Rows/TableRow.svelte +290 -290
- package/dist/Components/Table/Body/TableBody.svelte +155 -155
- package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +2 -3
- package/dist/Components/Table/ColumnFactory.svelte.d.ts +9 -11
- package/dist/Components/Table/ColumnFactory.svelte.js +101 -118
- package/dist/Components/Table/ColumnKindRegistry.d.ts +112 -0
- package/dist/Components/Table/ColumnKindRegistry.js +63 -0
- package/dist/Components/Table/Headers/HighlightAllHeader.svelte +41 -41
- package/dist/Components/Table/Headers/SelectAllHeader.svelte +30 -30
- package/dist/Components/Table/Headers/TableHead.svelte +415 -413
- package/dist/Components/Table/Misc/ColumnPanel.svelte +94 -94
- package/dist/Components/Table/Misc/ColumnPanelModal.svelte +112 -112
- package/dist/Components/Table/Misc/FilterInput.svelte +620 -644
- package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -12
- package/dist/Components/Table/Misc/FilterInputProps.d.ts +2 -2
- package/dist/Components/Table/Misc/FilterPanel.svelte +257 -257
- package/dist/Components/Table/Misc/FilterPanelModal.svelte +30 -30
- package/dist/Components/Table/Misc/SidePanel.svelte +35 -35
- package/dist/Components/Table/Misc/TableFooter.svelte +311 -311
- package/dist/Components/Table/Misc/TableHorizontalBar.svelte +125 -125
- package/dist/Components/Table/Misc/TableSidebar.svelte +157 -157
- package/dist/Components/Table/Misc/ToolboxPanel.svelte +100 -100
- package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +107 -107
- package/dist/Components/Table/NestedTable.svelte +130 -133
- package/dist/Components/Table/SubApis.svelte.d.ts +1 -5
- package/dist/Components/Table/SubApis.svelte.js +33 -32
- package/dist/Components/Table/Table.svelte +692 -745
- package/dist/Components/Table/TableHelpers.svelte.d.ts +6 -19
- package/dist/Components/Table/TableHelpers.svelte.js +6 -14
- package/dist/Components/Table/Types/Columns/Column.d.ts +2 -2
- package/dist/Components/Table/Types/Columns/DateColumn.d.ts +3 -3
- package/dist/Components/Table/Types/Columns/DateTableCell.d.ts +7 -7
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.d.ts +7 -8
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.js +4 -5
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.d.ts +11 -14
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.js +3 -4
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.d.ts +7 -11
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.js +3 -3
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.d.ts +13 -18
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.js +4 -5
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +15 -12
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.js +4 -5
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.d.ts +8 -12
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.js +3 -3
- package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +6 -6
- package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +3 -3
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +49 -16
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.js +27 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.d.ts +7 -7
- package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +4 -4
- package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +11 -19
- package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.js +4 -8
- package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts +6 -7
- package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.js +3 -4
- package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +9 -9
- package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +4 -4
- package/dist/Components/Table/Types/Columns/ExpandTableCell.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/ProgressBarTableCell.d.ts +6 -6
- package/dist/Components/Table/Types/Columns/TableCell.d.ts +7 -6
- package/dist/Components/Table/Types/Context/ClipboardState.svelte.d.ts +98 -0
- package/dist/Components/Table/Types/Context/ClipboardState.svelte.js +290 -0
- package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.d.ts +17 -45
- package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.js +17 -45
- package/dist/Components/Table/Types/Context/FilteringState.svelte.d.ts +9 -20
- package/dist/Components/Table/Types/Context/FilteringState.svelte.js +9 -20
- package/dist/Components/Table/Types/Context/FocusState.svelte.d.ts +23 -42
- package/dist/Components/Table/Types/Context/FocusState.svelte.js +32 -59
- package/dist/Components/Table/Types/Context/ITable.d.ts +5 -8
- package/dist/Components/Table/Types/Context/PreferencesState.svelte.d.ts +29 -56
- package/dist/Components/Table/Types/Context/PreferencesState.svelte.js +28 -55
- package/dist/Components/Table/Types/Context/QueryValuesState.svelte.d.ts +50 -0
- package/dist/Components/Table/Types/Context/QueryValuesState.svelte.js +62 -0
- package/dist/Components/Table/Types/Context/SelectionState.svelte.d.ts +17 -28
- package/dist/Components/Table/Types/Context/SelectionState.svelte.js +17 -28
- package/dist/Components/Table/Types/Context/SortingState.svelte.d.ts +15 -29
- package/dist/Components/Table/Types/Context/SortingState.svelte.js +17 -31
- package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +212 -325
- package/dist/Components/Table/Types/Context/TableContext.svelte.js +292 -706
- package/dist/Components/Table/Types/Context/VirtualisationState.svelte.d.ts +62 -79
- package/dist/Components/Table/Types/Context/VirtualisationState.svelte.js +54 -73
- package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.d.ts +16 -27
- package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.js +16 -27
- package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +12 -15
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +15 -30
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +16 -28
- package/dist/Components/Table/Types/Header.d.ts +4 -4
- package/dist/Components/Table/Types/HeaderGroup.d.ts +5 -5
- package/dist/Components/Table/Types/Public/index.d.ts +2 -4
- package/dist/Components/Table/Types/Public/index.js +2 -4
- package/dist/Components/Table/clipboardEscape.d.ts +32 -0
- package/dist/Components/Table/clipboardEscape.js +45 -0
- package/dist/Components/Table/createTable.svelte.d.ts +8 -18
- package/dist/Components/Table/createTable.svelte.js +19 -47
- package/dist/Components/Test/TestContextConsumer.svelte +13 -13
- package/dist/Components/TextArea.svelte +130 -130
- package/dist/Components/TextInput.svelte +176 -176
- package/dist/Components/ThreeStateRadio.svelte +131 -131
- package/dist/Components/Touch/BoolCard.svelte +45 -45
- package/dist/Components/Touch/DateModal.svelte +209 -209
- package/dist/Components/Touch/EditCard.svelte +59 -59
- package/dist/Components/Touch/InfoCard.svelte +31 -31
- package/dist/Components/Touch/InfoTextCard.svelte +28 -28
- package/dist/Components/Touch/ModalExplanation.svelte +17 -17
- package/dist/Components/Touch/NumberKeyboard.svelte +225 -225
- package/dist/Components/Touch/NumberModal.svelte +79 -79
- package/dist/Components/Touch/PlusMinusCard.svelte +46 -46
- package/dist/Components/Touch/SelectModal.svelte +123 -123
- package/dist/Components/Touch/SummaryCard.svelte +93 -93
- package/dist/Components/Touch/TextAreaModal.svelte +95 -95
- package/dist/Components/Touch/TextModal.svelte +106 -106
- package/dist/Components/Touch/TouchCard.svelte +33 -33
- package/dist/Components/Touch/TouchModal.svelte +274 -274
- package/dist/Components/Touch/UtilityButton.svelte +109 -109
- package/dist/Components/VerticalTabGroup.svelte +79 -79
- package/dist/Components/VerticalTabGroupButton.svelte +58 -58
- package/dist/Contexts/ToastContext.svelte.js +3 -4
- package/dist/Helpers/Datamatrix.d.ts +19 -19
- package/dist/Helpers/Datamatrix.js +291 -291
- package/dist/Helpers/Helpers.svelte.d.ts +2 -4
- package/dist/Helpers/Helpers.svelte.js +2 -4
- package/dist/Helpers/dropdownPortal.d.ts +26 -41
- package/dist/Helpers/dropdownPortal.js +62 -116
- package/dist/Types/Examples/ExampleModal.svelte +35 -35
- package/dist/index.d.ts +0 -1
- package/dist/scss/_basics.scss +12 -12
- package/dist/scss/_colours.scss +134 -134
- package/dist/scss/_mixins.scss +3348 -3360
- package/dist/scss/_motion.scss +57 -57
- package/dist/scss/_sizing.scss +85 -85
- package/dist/scss/_transitions.scss +8 -8
- 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
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* on `TableContext`:
|
|
51
|
+
* Sub-context owning every selection + highlighting + key-cache
|
|
52
|
+
* concern:
|
|
54
53
|
*
|
|
55
|
-
* - `selectedItems`
|
|
56
|
-
*
|
|
57
|
-
* - `
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* the
|
|
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
|
-
*
|
|
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
|
-
*
|
|
79
|
-
*
|
|
72
|
+
* `onEditCell`; the user-supplied edit callback lives on
|
|
73
|
+
* `TableContext`).
|
|
80
74
|
*
|
|
81
|
-
* Effect lifecycle: the parent owns every `$effect`.
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* `
|
|
85
|
-
* `
|
|
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
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* on `TableContext`:
|
|
6
|
+
* Sub-context owning every selection + highlighting + key-cache
|
|
7
|
+
* concern:
|
|
9
8
|
*
|
|
10
|
-
* - `selectedItems`
|
|
11
|
-
*
|
|
12
|
-
* - `
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* the
|
|
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
|
-
*
|
|
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
|
-
*
|
|
34
|
-
*
|
|
27
|
+
* `onEditCell`; the user-supplied edit callback lives on
|
|
28
|
+
* `TableContext`).
|
|
35
29
|
*
|
|
36
|
-
* Effect lifecycle: the parent owns every `$effect`.
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* `
|
|
40
|
-
* `
|
|
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
|
|
6
|
-
* `<` / `>`
|
|
7
|
-
* `
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
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
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* comparator
|
|
58
|
-
*
|
|
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)
|
|
103
|
-
* `.sort()` callback
|
|
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
|
|
12
|
-
* `<` / `>`
|
|
13
|
-
* `
|
|
14
|
-
*
|
|
15
|
-
*
|
|
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
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
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
|
-
*
|
|
142
|
-
*
|
|
143
|
-
* comparator
|
|
144
|
-
*
|
|
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)
|
|
218
|
-
* `.sort()` callback
|
|
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
|
|
243
|
-
// O(columns) times instead of O(n log n)
|
|
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];
|