@elaraai/east-ui 1.0.85 → 1.0.87
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/dist/src/buttons/button/index.d.ts +4 -0
- package/dist/src/buttons/button/index.d.ts.map +1 -1
- package/dist/src/buttons/button/index.js +8 -1
- package/dist/src/buttons/button/index.js.map +1 -1
- package/dist/src/buttons/button/types.d.ts +6 -5
- package/dist/src/buttons/button/types.d.ts.map +1 -1
- package/dist/src/buttons/button/types.js.map +1 -1
- package/dist/src/buttons/icon-button/index.d.ts +5 -5
- package/dist/src/buttons/icon-button/index.d.ts.map +1 -1
- package/dist/src/buttons/icon-button/index.js +8 -2
- package/dist/src/buttons/icon-button/index.js.map +1 -1
- package/dist/src/buttons/icon-button/types.d.ts +8 -12
- package/dist/src/buttons/icon-button/types.d.ts.map +1 -1
- package/dist/src/buttons/icon-button/types.js +2 -2
- package/dist/src/buttons/icon-button/types.js.map +1 -1
- package/dist/src/buttons/toggle/index.d.ts +4 -0
- package/dist/src/buttons/toggle/index.d.ts.map +1 -1
- package/dist/src/buttons/toggle/index.js +6 -1
- package/dist/src/buttons/toggle/index.js.map +1 -1
- package/dist/src/buttons/toggle/types.d.ts +3 -2
- package/dist/src/buttons/toggle/types.d.ts.map +1 -1
- package/dist/src/buttons/toggle/types.js.map +1 -1
- package/dist/src/charts/chart/index.d.ts.map +1 -1
- package/dist/src/charts/chart/index.js +3 -3
- package/dist/src/charts/chart/index.js.map +1 -1
- package/dist/src/charts/spec/index.d.ts.map +1 -1
- package/dist/src/charts/spec/index.js +5 -2
- package/dist/src/charts/spec/index.js.map +1 -1
- package/dist/src/collections/deck/index.d.ts.map +1 -1
- package/dist/src/collections/deck/index.js +2 -2
- package/dist/src/collections/deck/index.js.map +1 -1
- package/dist/src/collections/index.d.ts +0 -6
- package/dist/src/collections/index.d.ts.map +1 -1
- package/dist/src/collections/index.js +0 -6
- package/dist/src/collections/index.js.map +1 -1
- package/dist/src/collections/library/index.d.ts +1 -1
- package/dist/src/collections/library/index.d.ts.map +1 -1
- package/dist/src/collections/library/index.js +2 -2
- package/dist/src/collections/library/index.js.map +1 -1
- package/dist/src/collections/schematic/index.d.ts.map +1 -1
- package/dist/src/collections/schematic/index.js +2 -2
- package/dist/src/collections/schematic/index.js.map +1 -1
- package/dist/src/collections/table/index.d.ts +1 -1
- package/dist/src/collections/table/index.d.ts.map +1 -1
- package/dist/src/collections/table/index.js +2 -2
- package/dist/src/collections/table/index.js.map +1 -1
- package/dist/src/collections/tree-view/index.d.ts +11 -32
- package/dist/src/collections/tree-view/index.d.ts.map +1 -1
- package/dist/src/collections/tree-view/index.js +15 -10
- package/dist/src/collections/tree-view/index.js.map +1 -1
- package/dist/src/component.d.ts +673 -9344
- package/dist/src/component.d.ts.map +1 -1
- package/dist/src/component.js +5 -259
- package/dist/src/component.js.map +1 -1
- package/dist/src/contracts/approval.d.ts +6 -8
- package/dist/src/contracts/approval.d.ts.map +1 -1
- package/dist/src/contracts/approval.js +6 -8
- package/dist/src/contracts/approval.js.map +1 -1
- package/dist/src/contracts/drag.d.ts +1 -1
- package/dist/src/contracts/drag.d.ts.map +1 -1
- package/dist/src/contracts/drag.js +4 -5
- package/dist/src/contracts/drag.js.map +1 -1
- package/dist/src/contracts/editing.d.ts +19 -19
- package/dist/src/contracts/editing.js +14 -14
- package/dist/src/contracts/fields.d.ts +471 -0
- package/dist/src/contracts/fields.d.ts.map +1 -0
- package/dist/src/contracts/fields.js +492 -0
- package/dist/src/contracts/fields.js.map +1 -0
- package/dist/src/contracts/index.d.ts +1 -0
- package/dist/src/contracts/index.d.ts.map +1 -1
- package/dist/src/contracts/index.js +1 -0
- package/dist/src/contracts/index.js.map +1 -1
- package/dist/src/contracts/indexed-source.d.ts +118 -0
- package/dist/src/contracts/indexed-source.d.ts.map +1 -0
- package/dist/src/contracts/indexed-source.js +89 -0
- package/dist/src/contracts/indexed-source.js.map +1 -0
- package/dist/src/contracts/pick.d.ts +0 -16
- package/dist/src/contracts/pick.d.ts.map +1 -1
- package/dist/src/contracts/review.d.ts +4 -6
- package/dist/src/contracts/review.d.ts.map +1 -1
- package/dist/src/contracts/review.js +4 -6
- package/dist/src/contracts/review.js.map +1 -1
- package/dist/src/contracts/source.d.ts +2 -2
- package/dist/src/contracts/source.d.ts.map +1 -1
- package/dist/src/contracts/source.js.map +1 -1
- package/dist/src/contracts/states.d.ts +1 -3
- package/dist/src/contracts/states.d.ts.map +1 -1
- package/dist/src/contracts/states.js +1 -3
- package/dist/src/contracts/states.js.map +1 -1
- package/dist/src/display/editable-chip/index.d.ts +2 -0
- package/dist/src/display/editable-chip/index.d.ts.map +1 -1
- package/dist/src/display/editable-chip/index.js +4 -1
- package/dist/src/display/editable-chip/index.js.map +1 -1
- package/dist/src/display/icon/index.d.ts +14 -31
- package/dist/src/display/icon/index.d.ts.map +1 -1
- package/dist/src/display/icon/index.js +15 -19
- package/dist/src/display/icon/index.js.map +1 -1
- package/dist/src/display/icon/solid.d.ts +24 -0
- package/dist/src/display/icon/solid.d.ts.map +1 -0
- package/dist/src/display/icon/solid.js +39 -0
- package/dist/src/display/icon/solid.js.map +1 -0
- package/dist/src/display/icon/types.d.ts +14 -38
- package/dist/src/display/icon/types.d.ts.map +1 -1
- package/dist/src/display/icon/types.js +6 -15
- package/dist/src/display/icon/types.js.map +1 -1
- package/dist/src/display/metric-chip/index.d.ts +2 -0
- package/dist/src/display/metric-chip/index.d.ts.map +1 -1
- package/dist/src/display/metric-chip/index.js +4 -1
- package/dist/src/display/metric-chip/index.js.map +1 -1
- package/dist/src/display/stat/index.d.ts +2 -0
- package/dist/src/display/stat/index.d.ts.map +1 -1
- package/dist/src/display/stat/index.js +4 -1
- package/dist/src/display/stat/index.js.map +1 -1
- package/dist/src/display/stat/types.d.ts +3 -5
- package/dist/src/display/stat/types.d.ts.map +1 -1
- package/dist/src/display/stat/types.js +5 -2
- package/dist/src/display/stat/types.js.map +1 -1
- package/dist/src/feedback/banner/index.d.ts +5 -3
- package/dist/src/feedback/banner/index.d.ts.map +1 -1
- package/dist/src/feedback/banner/index.js +4 -1
- package/dist/src/feedback/banner/index.js.map +1 -1
- package/dist/src/feedback/empty-state/index.d.ts +16 -19
- package/dist/src/feedback/empty-state/index.d.ts.map +1 -1
- package/dist/src/feedback/empty-state/index.js +17 -10
- package/dist/src/feedback/empty-state/index.js.map +1 -1
- package/dist/src/feedback/status/index.d.ts +5 -3
- package/dist/src/feedback/status/index.d.ts.map +1 -1
- package/dist/src/feedback/status/index.js +4 -1
- package/dist/src/feedback/status/index.js.map +1 -1
- package/dist/src/index.d.ts +5 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -11
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +23 -16
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +29 -13
- package/dist/src/internal.js.map +1 -1
- package/dist/src/navigation/index.d.ts +0 -2
- package/dist/src/navigation/index.d.ts.map +1 -1
- package/dist/src/navigation/index.js +0 -2
- package/dist/src/navigation/index.js.map +1 -1
- package/dist/src/navigation/nav-list/index.d.ts +2 -0
- package/dist/src/navigation/nav-list/index.d.ts.map +1 -1
- package/dist/src/navigation/nav-list/index.js +4 -1
- package/dist/src/navigation/nav-list/index.js.map +1 -1
- package/dist/src/navigation/nav-list/types.d.ts +3 -14
- package/dist/src/navigation/nav-list/types.d.ts.map +1 -1
- package/dist/src/navigation/nav-list/types.js.map +1 -1
- package/dist/src/overlays/command-palette/index.d.ts +2 -0
- package/dist/src/overlays/command-palette/index.d.ts.map +1 -1
- package/dist/src/overlays/command-palette/index.js +5 -0
- package/dist/src/overlays/command-palette/index.js.map +1 -1
- package/dist/src/overlays/command-palette/types.d.ts +0 -8
- package/dist/src/overlays/command-palette/types.d.ts.map +1 -1
- package/dist/src/pick/index.d.ts +1 -17
- package/dist/src/pick/index.d.ts.map +1 -1
- package/dist/src/pick/index.js +1 -1
- package/dist/src/platform/slice/index.d.ts +1324 -2039
- package/dist/src/platform/slice/index.d.ts.map +1 -1
- package/dist/src/platform/slice/index.js +55 -74
- package/dist/src/platform/slice/index.js.map +1 -1
- package/dist/src/platform/slice/local.d.ts +743 -0
- package/dist/src/platform/slice/local.d.ts.map +1 -0
- package/dist/src/platform/slice/local.js +133 -0
- package/dist/src/platform/slice/local.js.map +1 -0
- package/dist/src/platform/slice/record-chrome.d.ts +211 -0
- package/dist/src/platform/slice/record-chrome.d.ts.map +1 -0
- package/dist/src/platform/slice/record-chrome.js +52 -0
- package/dist/src/platform/slice/record-chrome.js.map +1 -0
- package/dist/src/platform/slice/record-interval.d.ts +24 -0
- package/dist/src/platform/slice/record-interval.d.ts.map +1 -0
- package/dist/src/platform/slice/record-interval.js +61 -0
- package/dist/src/platform/slice/record-interval.js.map +1 -0
- package/dist/src/platform/slice/record-plan.d.ts +54 -0
- package/dist/src/platform/slice/record-plan.d.ts.map +1 -0
- package/dist/src/platform/slice/record-plan.js +139 -0
- package/dist/src/platform/slice/record-plan.js.map +1 -0
- package/dist/src/platform/slice/record-types.d.ts +2739 -0
- package/dist/src/platform/slice/record-types.d.ts.map +1 -0
- package/dist/src/platform/slice/record-types.js +209 -0
- package/dist/src/platform/slice/record-types.js.map +1 -0
- package/dist/src/platform/slice/record.d.ts +109 -0
- package/dist/src/platform/slice/record.d.ts.map +1 -0
- package/dist/src/platform/slice/record.js +210 -0
- package/dist/src/platform/slice/record.js.map +1 -0
- package/dist/src/reactive/match.d.ts +4 -6
- package/dist/src/reactive/match.d.ts.map +1 -1
- package/dist/src/reactive/match.js +4 -6
- package/dist/src/reactive/match.js.map +1 -1
- package/dist/src/runtime/collections/deck.d.ts.map +1 -1
- package/dist/src/runtime/collections/index.d.ts +0 -6
- package/dist/src/runtime/collections/index.d.ts.map +1 -1
- package/dist/src/runtime/collections/index.js +0 -6
- package/dist/src/runtime/collections/index.js.map +1 -1
- package/dist/src/runtime/display/icon.d.ts +6 -5
- package/dist/src/runtime/display/icon.d.ts.map +1 -1
- package/dist/src/runtime/display/icon.js +6 -5
- package/dist/src/runtime/display/icon.js.map +1 -1
- package/dist/src/runtime/feedback/empty-state.d.ts +5 -5
- package/dist/src/runtime/feedback/empty-state.js +5 -5
- package/dist/src/runtime/layout/dock.d.ts +2 -1
- package/dist/src/runtime/layout/dock.d.ts.map +1 -1
- package/dist/src/runtime/layout/dock.js +2 -1
- package/dist/src/runtime/layout/dock.js.map +1 -1
- package/dist/src/runtime/navigation/index.d.ts +0 -3
- package/dist/src/runtime/navigation/index.d.ts.map +1 -1
- package/dist/src/runtime/navigation/index.js +0 -3
- package/dist/src/runtime/navigation/index.js.map +1 -1
- package/dist/src/runtime/reactive/match.d.ts +2 -3
- package/dist/src/runtime/reactive/match.d.ts.map +1 -1
- package/dist/src/runtime/reactive/match.js +2 -3
- package/dist/src/runtime/reactive/match.js.map +1 -1
- package/dist/src/runtime/record-slice-source.d.ts +78 -0
- package/dist/src/runtime/record-slice-source.d.ts.map +1 -0
- package/dist/src/runtime/record-slice-source.js +201 -0
- package/dist/src/runtime/record-slice-source.js.map +1 -0
- package/dist/src/runtime/record-slice.d.ts +110 -0
- package/dist/src/runtime/record-slice.d.ts.map +1 -0
- package/dist/src/runtime/record-slice.js +374 -0
- package/dist/src/runtime/record-slice.js.map +1 -0
- package/dist/src/runtime/slice.d.ts +11 -13
- package/dist/src/runtime/slice.d.ts.map +1 -1
- package/dist/src/runtime/slice.js +41 -93
- package/dist/src/runtime/slice.js.map +1 -1
- package/dist/src/shared/plot-gutter.d.ts +1 -1
- package/dist/src/shared/plot-gutter.js +1 -1
- package/dist/src/shared/resolve-tag.d.ts +23 -0
- package/dist/src/shared/resolve-tag.d.ts.map +1 -0
- package/dist/src/shared/resolve-tag.js +26 -0
- package/dist/src/shared/resolve-tag.js.map +1 -0
- package/dist/src/shared/tree.d.ts +1 -1
- package/dist/src/shared/tree.js +1 -1
- package/dist/src/slice/breakdown/index.d.ts +1 -1
- package/dist/src/slice/breakdown/index.d.ts.map +1 -1
- package/dist/src/slice/breakdown/index.js +3 -3
- package/dist/src/slice/breakdown/index.js.map +1 -1
- package/dist/src/slice/cohort/index.d.ts +4 -5
- package/dist/src/slice/cohort/index.d.ts.map +1 -1
- package/dist/src/slice/cohort/index.js +6 -7
- package/dist/src/slice/cohort/index.js.map +1 -1
- package/dist/src/slice/filter/index.d.ts +1 -1
- package/dist/src/slice/filter/index.d.ts.map +1 -1
- package/dist/src/slice/filter/index.js +3 -3
- package/dist/src/slice/filter/index.js.map +1 -1
- package/dist/src/slice/index.d.ts +20 -2230
- package/dist/src/slice/index.d.ts.map +1 -1
- package/dist/src/slice/legend/index.d.ts +2 -2
- package/dist/src/slice/legend/index.d.ts.map +1 -1
- package/dist/src/slice/legend/index.js +4 -4
- package/dist/src/slice/legend/index.js.map +1 -1
- package/dist/src/slice/rail/index.d.ts +7 -4
- package/dist/src/slice/rail/index.d.ts.map +1 -1
- package/dist/src/slice/rail/index.js +10 -5
- package/dist/src/slice/rail/index.js.map +1 -1
- package/dist/src/slice/range/index.d.ts +1 -1
- package/dist/src/slice/range/index.d.ts.map +1 -1
- package/dist/src/slice/range/index.js +3 -3
- package/dist/src/slice/range/index.js.map +1 -1
- package/dist/src/slice/record/index.d.ts +171 -0
- package/dist/src/slice/record/index.d.ts.map +1 -0
- package/dist/src/slice/record/index.js +10 -0
- package/dist/src/slice/record/index.js.map +1 -0
- package/dist/src/slice/search/index.d.ts +6 -6
- package/dist/src/slice/search/index.d.ts.map +1 -1
- package/dist/src/slice/search/index.js +7 -7
- package/dist/src/slice/search/index.js.map +1 -1
- package/dist/src/slice/summary/index.d.ts +1 -1
- package/dist/src/slice/summary/index.d.ts.map +1 -1
- package/dist/src/slice/summary/index.js +3 -3
- package/dist/src/slice/summary/index.js.map +1 -1
- package/dist/src/typography/list/index.d.ts +2 -8
- package/dist/src/typography/list/index.d.ts.map +1 -1
- package/dist/src/typography/list/index.js +4 -1
- package/dist/src/typography/list/index.js.map +1 -1
- package/dist/src/typography/list/types.d.ts +0 -8
- package/dist/src/typography/list/types.d.ts.map +1 -1
- package/dist/test/collections/deck.examples.d.ts.map +1 -1
- package/dist/test/collections/deck.examples.js +6 -7
- package/dist/test/collections/deck.examples.js.map +1 -1
- package/dist/test/collections/index.d.ts +0 -1
- package/dist/test/collections/index.d.ts.map +1 -1
- package/dist/test/collections/index.js +0 -1
- package/dist/test/collections/index.js.map +1 -1
- package/dist/test/collections/library.examples.d.ts.map +1 -1
- package/dist/test/collections/library.examples.js +6 -7
- package/dist/test/collections/library.examples.js.map +1 -1
- package/dist/test/collections/schematic.examples.d.ts.map +1 -1
- package/dist/test/collections/schematic.examples.js +11 -19
- package/dist/test/collections/schematic.examples.js.map +1 -1
- package/dist/test/collections/tree-view.examples.js +2 -2
- package/dist/test/contracts/editing.examples.d.ts +1 -0
- package/dist/test/contracts/editing.examples.d.ts.map +1 -1
- package/dist/test/contracts/editing.examples.js +37 -6
- package/dist/test/contracts/editing.examples.js.map +1 -1
- package/dist/test/contracts/fields.examples.d.ts +7 -0
- package/dist/test/contracts/fields.examples.d.ts.map +1 -0
- package/dist/test/contracts/fields.examples.js +42 -0
- package/dist/test/contracts/fields.examples.js.map +1 -0
- package/dist/test/display/avatar.examples.d.ts.map +1 -1
- package/dist/test/display/avatar.examples.js +3 -3
- package/dist/test/display/avatar.examples.js.map +1 -1
- package/dist/test/display/icon.examples.d.ts.map +1 -1
- package/dist/test/display/icon.examples.js +12 -11
- package/dist/test/display/icon.examples.js.map +1 -1
- package/dist/test/feedback/empty-state.examples.js +9 -9
- package/dist/test/feedback/empty-state.examples.js.map +1 -1
- package/dist/test/layout/dock.examples.d.ts +0 -8
- package/dist/test/layout/dock.examples.d.ts.map +1 -1
- package/dist/test/layout/dock.examples.js +2 -42
- package/dist/test/layout/dock.examples.js.map +1 -1
- package/dist/test/layout/snap-grid.examples.d.ts.map +1 -1
- package/dist/test/layout/snap-grid.examples.js +18 -28
- package/dist/test/layout/snap-grid.examples.js.map +1 -1
- package/dist/test/navigation/index.d.ts +0 -2
- package/dist/test/navigation/index.d.ts.map +1 -1
- package/dist/test/navigation/index.js +0 -2
- package/dist/test/navigation/index.js.map +1 -1
- package/dist/test/navigation/nav-list.examples.js.map +1 -1
- package/dist/test/platform/index.d.ts +1 -0
- package/dist/test/platform/index.d.ts.map +1 -1
- package/dist/test/platform/index.js +1 -0
- package/dist/test/platform/index.js.map +1 -1
- package/dist/test/platform/slice-local.examples.d.ts +2 -0
- package/dist/test/platform/slice-local.examples.d.ts.map +1 -0
- package/dist/test/platform/slice-local.examples.js +31 -0
- package/dist/test/platform/slice-local.examples.js.map +1 -0
- package/dist/test/platform/slice.examples.js +61 -61
- package/dist/test/platform/slice.examples.js.map +1 -1
- package/dist/test/slice/slice.examples.d.ts +0 -1
- package/dist/test/slice/slice.examples.d.ts.map +1 -1
- package/dist/test/slice/slice.examples.js +67 -181
- package/dist/test/slice/slice.examples.js.map +1 -1
- package/package.json +4 -4
- package/dist/src/collections/board/index.d.ts +0 -855
- package/dist/src/collections/board/index.d.ts.map +0 -1
- package/dist/src/collections/board/index.js +0 -416
- package/dist/src/collections/board/index.js.map +0 -1
- package/dist/src/collections/board/types.d.ts +0 -111
- package/dist/src/collections/board/types.d.ts.map +0 -1
- package/dist/src/collections/board/types.js +0 -89
- package/dist/src/collections/board/types.js.map +0 -1
- package/dist/src/collections/calendar/index.d.ts +0 -446
- package/dist/src/collections/calendar/index.d.ts.map +0 -1
- package/dist/src/collections/calendar/index.js +0 -287
- package/dist/src/collections/calendar/index.js.map +0 -1
- package/dist/src/collections/calendar/types.d.ts +0 -338
- package/dist/src/collections/calendar/types.d.ts.map +0 -1
- package/dist/src/collections/calendar/types.js +0 -206
- package/dist/src/collections/calendar/types.js.map +0 -1
- package/dist/src/collections/flowchart/index.d.ts +0 -430
- package/dist/src/collections/flowchart/index.d.ts.map +0 -1
- package/dist/src/collections/flowchart/index.js +0 -292
- package/dist/src/collections/flowchart/index.js.map +0 -1
- package/dist/src/collections/flowchart/types.d.ts +0 -333
- package/dist/src/collections/flowchart/types.d.ts.map +0 -1
- package/dist/src/collections/flowchart/types.js +0 -263
- package/dist/src/collections/flowchart/types.js.map +0 -1
- package/dist/src/collections/plan/assemble.d.ts +0 -2274
- package/dist/src/collections/plan/assemble.d.ts.map +0 -1
- package/dist/src/collections/plan/assemble.js +0 -210
- package/dist/src/collections/plan/assemble.js.map +0 -1
- package/dist/src/collections/plan/builders.d.ts +0 -765
- package/dist/src/collections/plan/builders.d.ts.map +0 -1
- package/dist/src/collections/plan/builders.js +0 -673
- package/dist/src/collections/plan/builders.js.map +0 -1
- package/dist/src/collections/plan/factories.d.ts +0 -512
- package/dist/src/collections/plan/factories.d.ts.map +0 -1
- package/dist/src/collections/plan/factories.js +0 -539
- package/dist/src/collections/plan/factories.js.map +0 -1
- package/dist/src/collections/plan/index.d.ts +0 -324
- package/dist/src/collections/plan/index.d.ts.map +0 -1
- package/dist/src/collections/plan/index.js +0 -193
- package/dist/src/collections/plan/index.js.map +0 -1
- package/dist/src/collections/plan/ir.d.ts +0 -2490
- package/dist/src/collections/plan/ir.d.ts.map +0 -1
- package/dist/src/collections/plan/ir.js +0 -107
- package/dist/src/collections/plan/ir.js.map +0 -1
- package/dist/src/collections/plan/pick.d.ts +0 -133
- package/dist/src/collections/plan/pick.d.ts.map +0 -1
- package/dist/src/collections/plan/pick.js +0 -208
- package/dist/src/collections/plan/pick.js.map +0 -1
- package/dist/src/collections/plan/root.d.ts +0 -297
- package/dist/src/collections/plan/root.d.ts.map +0 -1
- package/dist/src/collections/plan/root.js +0 -427
- package/dist/src/collections/plan/root.js.map +0 -1
- package/dist/src/collections/plan/series.d.ts +0 -13887
- package/dist/src/collections/plan/series.d.ts.map +0 -1
- package/dist/src/collections/plan/series.js +0 -1710
- package/dist/src/collections/plan/series.js.map +0 -1
- package/dist/src/collections/plan/types.d.ts +0 -12612
- package/dist/src/collections/plan/types.d.ts.map +0 -1
- package/dist/src/collections/plan/types.js +0 -1345
- package/dist/src/collections/plan/types.js.map +0 -1
- package/dist/src/collections/roster/index.d.ts +0 -787
- package/dist/src/collections/roster/index.d.ts.map +0 -1
- package/dist/src/collections/roster/index.js +0 -325
- package/dist/src/collections/roster/index.js.map +0 -1
- package/dist/src/collections/roster/types.d.ts +0 -97
- package/dist/src/collections/roster/types.d.ts.map +0 -1
- package/dist/src/collections/roster/types.js +0 -72
- package/dist/src/collections/roster/types.js.map +0 -1
- package/dist/src/collections/sheet/bridge.d.ts +0 -376
- package/dist/src/collections/sheet/bridge.d.ts.map +0 -1
- package/dist/src/collections/sheet/bridge.js +0 -773
- package/dist/src/collections/sheet/bridge.js.map +0 -1
- package/dist/src/collections/sheet/columns.d.ts +0 -410
- package/dist/src/collections/sheet/columns.d.ts.map +0 -1
- package/dist/src/collections/sheet/columns.js +0 -99
- package/dist/src/collections/sheet/columns.js.map +0 -1
- package/dist/src/collections/sheet/context-bridge.d.ts +0 -48
- package/dist/src/collections/sheet/context-bridge.d.ts.map +0 -1
- package/dist/src/collections/sheet/context-bridge.js +0 -216
- package/dist/src/collections/sheet/context-bridge.js.map +0 -1
- package/dist/src/collections/sheet/draft-bridge.d.ts +0 -37
- package/dist/src/collections/sheet/draft-bridge.d.ts.map +0 -1
- package/dist/src/collections/sheet/draft-bridge.js +0 -153
- package/dist/src/collections/sheet/draft-bridge.js.map +0 -1
- package/dist/src/collections/sheet/drafts.d.ts +0 -14
- package/dist/src/collections/sheet/drafts.d.ts.map +0 -1
- package/dist/src/collections/sheet/drafts.js +0 -14
- package/dist/src/collections/sheet/drafts.js.map +0 -1
- package/dist/src/collections/sheet/editing-bridge.d.ts +0 -36
- package/dist/src/collections/sheet/editing-bridge.d.ts.map +0 -1
- package/dist/src/collections/sheet/editing-bridge.js +0 -196
- package/dist/src/collections/sheet/editing-bridge.js.map +0 -1
- package/dist/src/collections/sheet/editing-types.d.ts +0 -268
- package/dist/src/collections/sheet/editing-types.d.ts.map +0 -1
- package/dist/src/collections/sheet/editing-types.js +0 -34
- package/dist/src/collections/sheet/editing-types.js.map +0 -1
- package/dist/src/collections/sheet/edits.d.ts +0 -37
- package/dist/src/collections/sheet/edits.d.ts.map +0 -1
- package/dist/src/collections/sheet/edits.js +0 -31
- package/dist/src/collections/sheet/edits.js.map +0 -1
- package/dist/src/collections/sheet/group.d.ts +0 -165
- package/dist/src/collections/sheet/group.d.ts.map +0 -1
- package/dist/src/collections/sheet/group.js +0 -52
- package/dist/src/collections/sheet/group.js.map +0 -1
- package/dist/src/collections/sheet/index.d.ts +0 -351
- package/dist/src/collections/sheet/index.d.ts.map +0 -1
- package/dist/src/collections/sheet/index.js +0 -208
- package/dist/src/collections/sheet/index.js.map +0 -1
- package/dist/src/collections/sheet/link.d.ts +0 -398
- package/dist/src/collections/sheet/link.d.ts.map +0 -1
- package/dist/src/collections/sheet/link.js +0 -228
- package/dist/src/collections/sheet/link.js.map +0 -1
- package/dist/src/collections/sheet/registers.d.ts +0 -278
- package/dist/src/collections/sheet/registers.d.ts.map +0 -1
- package/dist/src/collections/sheet/registers.js +0 -268
- package/dist/src/collections/sheet/registers.js.map +0 -1
- package/dist/src/collections/sheet/root.d.ts +0 -328
- package/dist/src/collections/sheet/root.d.ts.map +0 -1
- package/dist/src/collections/sheet/root.js +0 -432
- package/dist/src/collections/sheet/root.js.map +0 -1
- package/dist/src/collections/sheet/seed-bridge.d.ts +0 -14
- package/dist/src/collections/sheet/seed-bridge.d.ts.map +0 -1
- package/dist/src/collections/sheet/seed-bridge.js +0 -51
- package/dist/src/collections/sheet/seed-bridge.js.map +0 -1
- package/dist/src/collections/sheet/sub-rows.d.ts +0 -249
- package/dist/src/collections/sheet/sub-rows.d.ts.map +0 -1
- package/dist/src/collections/sheet/sub-rows.js +0 -222
- package/dist/src/collections/sheet/sub-rows.js.map +0 -1
- package/dist/src/collections/sheet/transactions.d.ts +0 -76
- package/dist/src/collections/sheet/transactions.d.ts.map +0 -1
- package/dist/src/collections/sheet/transactions.js +0 -40
- package/dist/src/collections/sheet/transactions.js.map +0 -1
- package/dist/src/collections/sheet/types.d.ts +0 -14992
- package/dist/src/collections/sheet/types.d.ts.map +0 -1
- package/dist/src/collections/sheet/types.js +0 -1061
- package/dist/src/collections/sheet/types.js.map +0 -1
- package/dist/src/navigation/app/index.d.ts +0 -150
- package/dist/src/navigation/app/index.d.ts.map +0 -1
- package/dist/src/navigation/app/index.js +0 -191
- package/dist/src/navigation/app/index.js.map +0 -1
- package/dist/src/navigation/pages/index.d.ts +0 -165
- package/dist/src/navigation/pages/index.d.ts.map +0 -1
- package/dist/src/navigation/pages/index.js +0 -152
- package/dist/src/navigation/pages/index.js.map +0 -1
- package/dist/src/navigation/pages/types.d.ts +0 -111
- package/dist/src/navigation/pages/types.d.ts.map +0 -1
- package/dist/src/navigation/pages/types.js +0 -101
- package/dist/src/navigation/pages/types.js.map +0 -1
- package/dist/src/runtime/collections/board.d.ts +0 -73
- package/dist/src/runtime/collections/board.d.ts.map +0 -1
- package/dist/src/runtime/collections/board.js +0 -68
- package/dist/src/runtime/collections/board.js.map +0 -1
- package/dist/src/runtime/collections/calendar.d.ts +0 -54
- package/dist/src/runtime/collections/calendar.d.ts.map +0 -1
- package/dist/src/runtime/collections/calendar.js +0 -54
- package/dist/src/runtime/collections/calendar.js.map +0 -1
- package/dist/src/runtime/collections/flowchart.d.ts +0 -58
- package/dist/src/runtime/collections/flowchart.d.ts.map +0 -1
- package/dist/src/runtime/collections/flowchart.js +0 -54
- package/dist/src/runtime/collections/flowchart.js.map +0 -1
- package/dist/src/runtime/collections/plan.d.ts +0 -181
- package/dist/src/runtime/collections/plan.d.ts.map +0 -1
- package/dist/src/runtime/collections/plan.js +0 -186
- package/dist/src/runtime/collections/plan.js.map +0 -1
- package/dist/src/runtime/collections/roster.d.ts +0 -60
- package/dist/src/runtime/collections/roster.d.ts.map +0 -1
- package/dist/src/runtime/collections/roster.js +0 -59
- package/dist/src/runtime/collections/roster.js.map +0 -1
- package/dist/src/runtime/collections/sheet.d.ts +0 -122
- package/dist/src/runtime/collections/sheet.d.ts.map +0 -1
- package/dist/src/runtime/collections/sheet.js +0 -73
- package/dist/src/runtime/collections/sheet.js.map +0 -1
- package/dist/src/runtime/navigation/app.d.ts +0 -52
- package/dist/src/runtime/navigation/app.d.ts.map +0 -1
- package/dist/src/runtime/navigation/app.js +0 -53
- package/dist/src/runtime/navigation/app.js.map +0 -1
- package/dist/src/runtime/navigation/pages.d.ts +0 -50
- package/dist/src/runtime/navigation/pages.d.ts.map +0 -1
- package/dist/src/runtime/navigation/pages.js +0 -52
- package/dist/src/runtime/navigation/pages.js.map +0 -1
- package/dist/src/runtime/navigation/route.d.ts +0 -46
- package/dist/src/runtime/navigation/route.d.ts.map +0 -1
- package/dist/src/runtime/navigation/route.js +0 -47
- package/dist/src/runtime/navigation/route.js.map +0 -1
- package/dist/test/collections/board.examples.d.ts +0 -18
- package/dist/test/collections/board.examples.d.ts.map +0 -1
- package/dist/test/collections/board.examples.js +0 -297
- package/dist/test/collections/board.examples.js.map +0 -1
- package/dist/test/collections/calendar.examples.d.ts +0 -5
- package/dist/test/collections/calendar.examples.d.ts.map +0 -1
- package/dist/test/collections/calendar.examples.js +0 -147
- package/dist/test/collections/calendar.examples.js.map +0 -1
- package/dist/test/collections/flowchart.examples.d.ts +0 -17
- package/dist/test/collections/flowchart.examples.d.ts.map +0 -1
- package/dist/test/collections/flowchart.examples.js +0 -243
- package/dist/test/collections/flowchart.examples.js.map +0 -1
- package/dist/test/collections/plan.examples.d.ts +0 -200
- package/dist/test/collections/plan.examples.d.ts.map +0 -1
- package/dist/test/collections/plan.examples.js +0 -3665
- package/dist/test/collections/plan.examples.js.map +0 -1
- package/dist/test/collections/roster.examples.d.ts +0 -26
- package/dist/test/collections/roster.examples.d.ts.map +0 -1
- package/dist/test/collections/roster.examples.js +0 -237
- package/dist/test/collections/roster.examples.js.map +0 -1
- package/dist/test/collections/sheet-link.examples.d.ts +0 -7
- package/dist/test/collections/sheet-link.examples.d.ts.map +0 -1
- package/dist/test/collections/sheet-link.examples.js +0 -41
- package/dist/test/collections/sheet-link.examples.js.map +0 -1
- package/dist/test/collections/sheet-transactions.examples.d.ts +0 -7
- package/dist/test/collections/sheet-transactions.examples.d.ts.map +0 -1
- package/dist/test/collections/sheet-transactions.examples.js +0 -58
- package/dist/test/collections/sheet-transactions.examples.js.map +0 -1
- package/dist/test/collections/sheet.examples.d.ts +0 -96
- package/dist/test/collections/sheet.examples.d.ts.map +0 -1
- package/dist/test/collections/sheet.examples.js +0 -1040
- package/dist/test/collections/sheet.examples.js.map +0 -1
- package/dist/test/navigation/app.examples.d.ts +0 -22
- package/dist/test/navigation/app.examples.d.ts.map +0 -1
- package/dist/test/navigation/app.examples.js +0 -136
- package/dist/test/navigation/app.examples.js.map +0 -1
- package/dist/test/navigation/pages.examples.d.ts +0 -13
- package/dist/test/navigation/pages.examples.d.ts.map +0 -1
- package/dist/test/navigation/pages.examples.js +0 -113
- package/dist/test/navigation/pages.examples.js.map +0 -1
- package/dist/test/navigation/route.examples.d.ts +0 -13
- package/dist/test/navigation/route.examples.d.ts.map +0 -1
- package/dist/test/navigation/route.examples.js +0 -69
- package/dist/test/navigation/route.examples.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../../src/platform/slice/local.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/** Typed local authoring over the existing Slice engine and frozen wire. */
|
|
6
|
+
import { ArrayType, BooleanType, DateTimeType, East, Expr, FloatType, FunctionType, IntegerType, SetType, StringType, StructType, none, some, variant, } from "@elaraai/east";
|
|
7
|
+
import { Slice, SliceBindType, SlicePredicateType, SliceSearchMatchType, slice_bind, slice_rows, } from "./index.js";
|
|
8
|
+
/** A typed authoring handle; component payloads still project to SliceBindType. */
|
|
9
|
+
export function LocalSliceHandleType(row) {
|
|
10
|
+
return StructType({ ...SliceBindType.fields, data: FunctionType([], ArrayType(row)) });
|
|
11
|
+
}
|
|
12
|
+
function label(name) {
|
|
13
|
+
const words = name.replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/_/g, " ");
|
|
14
|
+
return words.charAt(0).toUpperCase() + words.slice(1).toLowerCase();
|
|
15
|
+
}
|
|
16
|
+
/** Build predicates as data; no filtering or UI composition runs in the factory. */
|
|
17
|
+
function narrowing(row, fields, where, rangeField) {
|
|
18
|
+
const filters = [];
|
|
19
|
+
let range;
|
|
20
|
+
for (const [field, choice] of Object.entries(where)) {
|
|
21
|
+
if (!fields.has(field))
|
|
22
|
+
throw new Error(`Slice.bind: '${field}' must be included in fields`);
|
|
23
|
+
const type = row.fields[field];
|
|
24
|
+
const kind = { String: "string", Integer: "integer", Float: "float", DateTime: "datetime", Boolean: "boolean" }[type.type];
|
|
25
|
+
if (kind === undefined)
|
|
26
|
+
throw new Error(`Slice.bind: '${field}' is search-only; it cannot have a predicate`);
|
|
27
|
+
const add = (op, value) => filters.push(East.value(variant(kind, { fieldId: field, op: variant(op, value) }), SlicePredicateType));
|
|
28
|
+
if (Array.isArray(choice)) {
|
|
29
|
+
if (choice.length === 0)
|
|
30
|
+
throw new Error(`Slice.bind: '${field}' needs at least one value`);
|
|
31
|
+
if (kind === "boolean" && choice.length === 1)
|
|
32
|
+
add("is", choice[0]);
|
|
33
|
+
else if (kind === "string" || kind === "integer") {
|
|
34
|
+
if (choice.length === 1)
|
|
35
|
+
add("eq", choice[0]);
|
|
36
|
+
else
|
|
37
|
+
add("in", East.value(choice, ArrayType(type)).toSet((_$, value) => value));
|
|
38
|
+
}
|
|
39
|
+
else
|
|
40
|
+
throw new Error(`Slice.bind: '${field}' needs a range, or one Boolean value`);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (choice === null || typeof choice !== "object")
|
|
44
|
+
throw new Error(`Slice.bind: '${field}' needs values, a range or a typed operator`);
|
|
45
|
+
if ("from" in choice && "to" in choice) {
|
|
46
|
+
if (!["integer", "float", "datetime"].includes(kind))
|
|
47
|
+
throw new Error(`Slice.bind: '${field}' cannot use a range`);
|
|
48
|
+
if (rangeField === field)
|
|
49
|
+
range = East.value(variant(kind, choice), Slice.Types.Range);
|
|
50
|
+
else if (kind === "datetime")
|
|
51
|
+
add("between", choice);
|
|
52
|
+
else {
|
|
53
|
+
add("gte", choice.from);
|
|
54
|
+
add("lte", choice.to);
|
|
55
|
+
}
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if ("preset" in choice) {
|
|
59
|
+
if (kind !== "datetime" || rangeField !== field)
|
|
60
|
+
throw new Error(`Slice.bind: a date preset needs '${field}' as the range field`);
|
|
61
|
+
range = East.value(variant("datetimePreset", variant(choice.preset, null)), Slice.Types.Range);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const operators = Object.entries(choice);
|
|
65
|
+
if (operators.length === 0)
|
|
66
|
+
throw new Error(`Slice.bind: '${field}' has no predicate`);
|
|
67
|
+
for (const [op, value] of operators) {
|
|
68
|
+
add(op === "prefix" ? "startsWith" : op, op === "isEmpty" || op === "isNotEmpty" ? null : value);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return { filters, range };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Bind rows in hand with inferred fields and typed options.
|
|
75
|
+
* @param key - Stable UI store key.
|
|
76
|
+
* @param collection - Complete rows the browser may narrow.
|
|
77
|
+
* @param options - Offered fields, initial narrowing and named presets.
|
|
78
|
+
* @returns A serializable typed handle; Slice.rows reads its current narrowed rows.
|
|
79
|
+
*/
|
|
80
|
+
export function bindLocal(key, collection, options = {}) {
|
|
81
|
+
const data = East.value(collection);
|
|
82
|
+
const collectionType = Expr.type(data);
|
|
83
|
+
if (collectionType.type !== "Array" || collectionType.value.type !== "Struct")
|
|
84
|
+
throw new Error("Slice.bind needs an array of Struct rows; use Slice.bindRecord for a paged record");
|
|
85
|
+
const row = collectionType.value;
|
|
86
|
+
const offered = options.fields === undefined ? Object.keys(row.fields) : Object.keys(options.fields);
|
|
87
|
+
const fields = Object.fromEntries(offered.map(field => {
|
|
88
|
+
if (row.fields[field] === undefined)
|
|
89
|
+
throw new Error(`Slice.bind: '${field}' is not a row field`);
|
|
90
|
+
const config = options.fields?.[field];
|
|
91
|
+
return [field, { ...config, label: config?.label ?? label(field) }];
|
|
92
|
+
}));
|
|
93
|
+
const known = new Set(offered);
|
|
94
|
+
const check = (field, role) => { if (!known.has(field))
|
|
95
|
+
throw new Error(`Slice.bind: ${role} '${field}' must be included in fields`); };
|
|
96
|
+
const search = options.search === undefined ? undefined : typeof options.search === "string" ? [options.search] : [...options.search];
|
|
97
|
+
for (const field of search ?? [])
|
|
98
|
+
check(field, "search");
|
|
99
|
+
for (const field of options.breakdown ?? []) {
|
|
100
|
+
check(field, "breakdown");
|
|
101
|
+
if (!["String", "Integer", "Float", "DateTime", "Boolean"].includes(row.fields[field].type))
|
|
102
|
+
throw new Error(`Slice.bind: breakdown '${field}' must be primitive`);
|
|
103
|
+
}
|
|
104
|
+
if (options.range !== undefined) {
|
|
105
|
+
check(options.range, "range");
|
|
106
|
+
if (!["Integer", "Float", "DateTime"].includes(row.fields[options.range].type))
|
|
107
|
+
throw new Error(`Slice.bind: range '${options.range}' must be DateTime, Integer or Float`);
|
|
108
|
+
}
|
|
109
|
+
const config = Slice.config(row, { fields,
|
|
110
|
+
...(options.range === undefined ? {} : { rangeFieldId: options.range }),
|
|
111
|
+
...(search === undefined ? {} : { searchFieldIds: search }),
|
|
112
|
+
...(options.breakdown === undefined ? {} : { breakdownFieldIds: options.breakdown }),
|
|
113
|
+
});
|
|
114
|
+
const initial = narrowing(row, known, options.initial ?? {}, options.range);
|
|
115
|
+
const ids = new Set();
|
|
116
|
+
const cohorts = (options.presets ?? []).map(preset => {
|
|
117
|
+
if (ids.has(preset.id))
|
|
118
|
+
throw new Error(`Slice.bind: repeated preset '${preset.id}'`);
|
|
119
|
+
ids.add(preset.id);
|
|
120
|
+
return { id: preset.id, name: preset.name, group: preset.group === undefined ? none : some(preset.group), filters: narrowing(row, known, preset.where).filters };
|
|
121
|
+
});
|
|
122
|
+
const state = Slice.state({ ...options.view, filters: initial.filters, range: initial.range === undefined ? none : some(initial.range), cohorts,
|
|
123
|
+
activeCohorts: new Set((options.presets ?? []).filter(preset => preset.active).map(preset => preset.id)) });
|
|
124
|
+
const match = options.match;
|
|
125
|
+
const toMatch = match === undefined ? none : some(East.function([row], SliceSearchMatchType, (_$, item) => match(item)));
|
|
126
|
+
const handleType = LocalSliceHandleType(row);
|
|
127
|
+
return East.function([], handleType, $ => {
|
|
128
|
+
const handle = $.const(slice_bind([row], key, config, state, data, toMatch));
|
|
129
|
+
const read = East.function([], ArrayType(row), _$ => slice_rows([row], handle));
|
|
130
|
+
return East.value({ ...Object.fromEntries(Object.keys(SliceBindType.fields).map(name => [name, handle[name]])), data: read }, handleType);
|
|
131
|
+
})();
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../../src/platform/slice/local.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/** Record-only chrome, separate from the frozen local Slice wire. */
|
|
6
|
+
import { ArrayType, NullType, OptionType, StructType, VariantType, type SubtypeExprOrValue, type ExprType } from "@elaraai/east";
|
|
7
|
+
import { RecordSliceBindType } from "./record-types.js";
|
|
8
|
+
import { SlicePersistType } from "./index.js";
|
|
9
|
+
/** Controls a record can answer without evaluating row predicates. */
|
|
10
|
+
export declare const RecordSliceAffordanceType: VariantType<{
|
|
11
|
+
readonly fields: NullType;
|
|
12
|
+
readonly search: NullType;
|
|
13
|
+
readonly range: NullType;
|
|
14
|
+
readonly presets: NullType;
|
|
15
|
+
readonly resolution: NullType;
|
|
16
|
+
readonly brush: NullType;
|
|
17
|
+
readonly summary: NullType;
|
|
18
|
+
}>;
|
|
19
|
+
export type RecordSliceAffordanceType = typeof RecordSliceAffordanceType;
|
|
20
|
+
/** Record toolbar vocabulary; rows-only controls are intentionally absent. */
|
|
21
|
+
export type RecordSliceAffordance = keyof RecordSliceAffordanceType["cases"];
|
|
22
|
+
/**
|
|
23
|
+
* Record narrowing in a component's existing toolbar.
|
|
24
|
+
* @property slice - Canonical controls handle; typed data stays in the component's source.
|
|
25
|
+
* @property affordances - Explicit controls the host offers.
|
|
26
|
+
* @property persist - Optional store persistence.
|
|
27
|
+
*/
|
|
28
|
+
export declare const RecordSliceChromeType: StructType<{
|
|
29
|
+
readonly slice: StructType<{
|
|
30
|
+
readonly key: import("@elaraai/east").StringType;
|
|
31
|
+
readonly config: StructType<{
|
|
32
|
+
readonly fields: ArrayType<StructType<{
|
|
33
|
+
readonly fieldId: import("@elaraai/east").StringType;
|
|
34
|
+
readonly label: import("@elaraai/east").StringType;
|
|
35
|
+
readonly kind: import("@elaraai/east").StringType;
|
|
36
|
+
readonly optional: import("@elaraai/east").BooleanType;
|
|
37
|
+
readonly multiple: import("@elaraai/east").BooleanType;
|
|
38
|
+
readonly set: import("@elaraai/east").BooleanType;
|
|
39
|
+
readonly values: ArrayType<StructType<{
|
|
40
|
+
readonly value: import("@elaraai/east").StringType;
|
|
41
|
+
readonly label: import("@elaraai/east").StringType;
|
|
42
|
+
}>>;
|
|
43
|
+
readonly format: OptionType<VariantType<{
|
|
44
|
+
readonly number: NullType;
|
|
45
|
+
readonly currency: StructType<{
|
|
46
|
+
readonly code: import("@elaraai/east").StringType;
|
|
47
|
+
readonly compact: import("@elaraai/east").BooleanType;
|
|
48
|
+
}>;
|
|
49
|
+
readonly percent: NullType;
|
|
50
|
+
readonly compact: NullType;
|
|
51
|
+
readonly date: import("@elaraai/east").StringType;
|
|
52
|
+
readonly time: import("@elaraai/east").StringType;
|
|
53
|
+
readonly datetime: import("@elaraai/east").StringType;
|
|
54
|
+
}>>;
|
|
55
|
+
}>>;
|
|
56
|
+
readonly indexes: ArrayType<StructType<{
|
|
57
|
+
readonly name: import("@elaraai/east").StringType;
|
|
58
|
+
readonly fields: ArrayType<import("@elaraai/east").StringType>;
|
|
59
|
+
readonly sets: import("@elaraai/east").SetType<import("@elaraai/east").StringType>;
|
|
60
|
+
readonly structured: import("@elaraai/east").BooleanType;
|
|
61
|
+
readonly interval: OptionType<StructType<{
|
|
62
|
+
readonly from: import("@elaraai/east").StringType;
|
|
63
|
+
readonly to: import("@elaraai/east").StringType;
|
|
64
|
+
readonly optional: import("@elaraai/east").BooleanType;
|
|
65
|
+
}>>;
|
|
66
|
+
}>>;
|
|
67
|
+
readonly range: OptionType<import("@elaraai/east").StringType>;
|
|
68
|
+
readonly search: ArrayType<import("@elaraai/east").StringType>;
|
|
69
|
+
readonly presets: ArrayType<StructType<{
|
|
70
|
+
readonly id: import("@elaraai/east").StringType;
|
|
71
|
+
readonly name: import("@elaraai/east").StringType;
|
|
72
|
+
readonly where: import("@elaraai/east").DictType<import("@elaraai/east").StringType, VariantType<{
|
|
73
|
+
readonly values: ArrayType<import("@elaraai/east").StringType>;
|
|
74
|
+
readonly range: StructType<{
|
|
75
|
+
readonly from: import("@elaraai/east").StringType;
|
|
76
|
+
readonly to: import("@elaraai/east").StringType;
|
|
77
|
+
}>;
|
|
78
|
+
readonly prefix: import("@elaraai/east").StringType;
|
|
79
|
+
}>>;
|
|
80
|
+
}>>;
|
|
81
|
+
}>;
|
|
82
|
+
readonly read: import("@elaraai/east").FunctionType<[], StructType<{
|
|
83
|
+
readonly where: import("@elaraai/east").DictType<import("@elaraai/east").StringType, VariantType<{
|
|
84
|
+
readonly values: ArrayType<import("@elaraai/east").StringType>;
|
|
85
|
+
readonly range: StructType<{
|
|
86
|
+
readonly from: import("@elaraai/east").StringType;
|
|
87
|
+
readonly to: import("@elaraai/east").StringType;
|
|
88
|
+
}>;
|
|
89
|
+
readonly prefix: import("@elaraai/east").StringType;
|
|
90
|
+
}>>;
|
|
91
|
+
readonly preset: OptionType<import("@elaraai/east").StringType>;
|
|
92
|
+
readonly resolution: OptionType<VariantType<{
|
|
93
|
+
readonly auto: NullType;
|
|
94
|
+
readonly hour: NullType;
|
|
95
|
+
readonly day: NullType;
|
|
96
|
+
readonly week: NullType;
|
|
97
|
+
readonly month: NullType;
|
|
98
|
+
readonly quarter: NullType;
|
|
99
|
+
readonly year: NullType;
|
|
100
|
+
}>>;
|
|
101
|
+
}>>;
|
|
102
|
+
readonly write: import("@elaraai/east").FunctionType<[StructType<{
|
|
103
|
+
readonly where: import("@elaraai/east").DictType<import("@elaraai/east").StringType, VariantType<{
|
|
104
|
+
readonly values: ArrayType<import("@elaraai/east").StringType>;
|
|
105
|
+
readonly range: StructType<{
|
|
106
|
+
readonly from: import("@elaraai/east").StringType;
|
|
107
|
+
readonly to: import("@elaraai/east").StringType;
|
|
108
|
+
}>;
|
|
109
|
+
readonly prefix: import("@elaraai/east").StringType;
|
|
110
|
+
}>>;
|
|
111
|
+
readonly preset: OptionType<import("@elaraai/east").StringType>;
|
|
112
|
+
readonly resolution: OptionType<VariantType<{
|
|
113
|
+
readonly auto: NullType;
|
|
114
|
+
readonly hour: NullType;
|
|
115
|
+
readonly day: NullType;
|
|
116
|
+
readonly week: NullType;
|
|
117
|
+
readonly month: NullType;
|
|
118
|
+
readonly quarter: NullType;
|
|
119
|
+
readonly year: NullType;
|
|
120
|
+
}>>;
|
|
121
|
+
}>], NullType>;
|
|
122
|
+
readonly choose: import("@elaraai/east").FunctionType<[import("@elaraai/east").StringType, ArrayType<import("@elaraai/east").StringType>], NullType>;
|
|
123
|
+
readonly range: import("@elaraai/east").FunctionType<[import("@elaraai/east").StringType, import("@elaraai/east").StringType, import("@elaraai/east").StringType], NullType>;
|
|
124
|
+
readonly prefix: import("@elaraai/east").FunctionType<[import("@elaraai/east").StringType, import("@elaraai/east").StringType], NullType>;
|
|
125
|
+
readonly clear: import("@elaraai/east").FunctionType<[import("@elaraai/east").StringType], NullType>;
|
|
126
|
+
readonly clearAll: import("@elaraai/east").FunctionType<[], NullType>;
|
|
127
|
+
readonly count: import("@elaraai/east").FunctionType<[], OptionType<import("@elaraai/east").IntegerType>>;
|
|
128
|
+
readonly countWhere: import("@elaraai/east").FunctionType<[import("@elaraai/east").DictType<import("@elaraai/east").StringType, VariantType<{
|
|
129
|
+
readonly values: ArrayType<import("@elaraai/east").StringType>;
|
|
130
|
+
readonly range: StructType<{
|
|
131
|
+
readonly from: import("@elaraai/east").StringType;
|
|
132
|
+
readonly to: import("@elaraai/east").StringType;
|
|
133
|
+
}>;
|
|
134
|
+
readonly prefix: import("@elaraai/east").StringType;
|
|
135
|
+
}>>], OptionType<import("@elaraai/east").IntegerType>>;
|
|
136
|
+
readonly total: import("@elaraai/east").FunctionType<[], OptionType<import("@elaraai/east").IntegerType>>;
|
|
137
|
+
readonly domain: import("@elaraai/east").FunctionType<[import("@elaraai/east").StringType], OptionType<StructType<{
|
|
138
|
+
readonly from: import("@elaraai/east").StringType;
|
|
139
|
+
readonly to: import("@elaraai/east").StringType;
|
|
140
|
+
}>>>;
|
|
141
|
+
readonly values: import("@elaraai/east").FunctionType<[import("@elaraai/east").StringType], ArrayType<StructType<{
|
|
142
|
+
readonly value: import("@elaraai/east").StringType;
|
|
143
|
+
readonly label: import("@elaraai/east").StringType;
|
|
144
|
+
readonly count: OptionType<import("@elaraai/east").IntegerType>;
|
|
145
|
+
readonly selected: import("@elaraai/east").BooleanType;
|
|
146
|
+
readonly error: OptionType<import("@elaraai/east").StringType>;
|
|
147
|
+
}>>>;
|
|
148
|
+
readonly suggest: import("@elaraai/east").FunctionType<[import("@elaraai/east").StringType, import("@elaraai/east").StringType], OptionType<ArrayType<StructType<{
|
|
149
|
+
readonly value: import("@elaraai/east").StringType;
|
|
150
|
+
readonly label: import("@elaraai/east").StringType;
|
|
151
|
+
readonly count: OptionType<import("@elaraai/east").IntegerType>;
|
|
152
|
+
readonly selected: import("@elaraai/east").BooleanType;
|
|
153
|
+
readonly error: OptionType<import("@elaraai/east").StringType>;
|
|
154
|
+
}>>>>;
|
|
155
|
+
readonly replaces: import("@elaraai/east").FunctionType<[import("@elaraai/east").StringType], ArrayType<import("@elaraai/east").StringType>>;
|
|
156
|
+
readonly togglePreset: import("@elaraai/east").FunctionType<[import("@elaraai/east").StringType], NullType>;
|
|
157
|
+
readonly setResolution: import("@elaraai/east").FunctionType<[OptionType<VariantType<{
|
|
158
|
+
readonly auto: NullType;
|
|
159
|
+
readonly hour: NullType;
|
|
160
|
+
readonly day: NullType;
|
|
161
|
+
readonly week: NullType;
|
|
162
|
+
readonly month: NullType;
|
|
163
|
+
readonly quarter: NullType;
|
|
164
|
+
readonly year: NullType;
|
|
165
|
+
}>>], NullType>;
|
|
166
|
+
readonly retry: import("@elaraai/east").FunctionType<[], NullType>;
|
|
167
|
+
readonly sourceId: import("@elaraai/east").StringType;
|
|
168
|
+
readonly readEntry: import("@elaraai/east").FunctionType<[import("@elaraai/east").StringType], OptionType<OptionType<import("@elaraai/east").BlobType>>>;
|
|
169
|
+
readonly contains: import("@elaraai/east").FunctionType<[import("@elaraai/east").DictType<import("@elaraai/east").StringType, VariantType<{
|
|
170
|
+
readonly values: ArrayType<import("@elaraai/east").StringType>;
|
|
171
|
+
readonly range: StructType<{
|
|
172
|
+
readonly from: import("@elaraai/east").StringType;
|
|
173
|
+
readonly to: import("@elaraai/east").StringType;
|
|
174
|
+
}>;
|
|
175
|
+
readonly prefix: import("@elaraai/east").StringType;
|
|
176
|
+
}>>, import("@elaraai/east").StringType], OptionType<import("@elaraai/east").BooleanType>>;
|
|
177
|
+
}>;
|
|
178
|
+
readonly affordances: ArrayType<VariantType<{
|
|
179
|
+
readonly fields: NullType;
|
|
180
|
+
readonly search: NullType;
|
|
181
|
+
readonly range: NullType;
|
|
182
|
+
readonly presets: NullType;
|
|
183
|
+
readonly resolution: NullType;
|
|
184
|
+
readonly brush: NullType;
|
|
185
|
+
readonly summary: NullType;
|
|
186
|
+
}>>;
|
|
187
|
+
readonly persist: OptionType<VariantType<{
|
|
188
|
+
readonly local: NullType;
|
|
189
|
+
readonly session: NullType;
|
|
190
|
+
readonly url: NullType;
|
|
191
|
+
}>>;
|
|
192
|
+
}>;
|
|
193
|
+
export type RecordSliceChromeType = typeof RecordSliceChromeType;
|
|
194
|
+
/** Shared authoring options for a record-aware component. */
|
|
195
|
+
export interface RecordSliceChromeOptions {
|
|
196
|
+
/** A record Slice handle, including its typed authoring form. */
|
|
197
|
+
slice: SubtypeExprOrValue<RecordSliceBindType>;
|
|
198
|
+
/** Controls to mount; defaults to field chips, presets and summary. */
|
|
199
|
+
affordances?: readonly RecordSliceAffordance[];
|
|
200
|
+
/** Persist validated narrowing in local/session storage or the URL. */
|
|
201
|
+
persist?: keyof SlicePersistType["cases"];
|
|
202
|
+
}
|
|
203
|
+
/** Recognise the new handle at authoring time, before projecting its data member. */
|
|
204
|
+
export declare function isRecordSlice(input: unknown): boolean;
|
|
205
|
+
/**
|
|
206
|
+
* Build canonical chrome without extending the local handle or embedding its data.
|
|
207
|
+
* @param options - Bound handle, requested controls and persistence.
|
|
208
|
+
* @returns The record chrome payload.
|
|
209
|
+
*/
|
|
210
|
+
export declare function recordSliceChrome(options: RecordSliceChromeOptions): ExprType<RecordSliceChromeType>;
|
|
211
|
+
//# sourceMappingURL=record-chrome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-chrome.d.ts","sourceRoot":"","sources":["../../../../src/platform/slice/record-chrome.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qEAAqE;AACrE,OAAO,EAAE,SAAS,EAAc,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAkC,KAAK,kBAAkB,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC7K,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,sEAAsE;AACtE,eAAO,MAAM,yBAAyB;;;;;;;;EAGpC,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAC;AACzE,8EAA8E;AAC9E,MAAM,MAAM,qBAAqB,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAE7E;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIhC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC;AAEjE,6DAA6D;AAC7D,MAAM,WAAW,wBAAwB;IACrC,iEAAiE;IACjE,KAAK,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IAC/C,uEAAuE;IACvE,WAAW,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC/C,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;CAC7C;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGrD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAapG"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/** Record-only chrome, separate from the frozen local Slice wire. */
|
|
6
|
+
import { ArrayType, East, Expr, NullType, OptionType, StructType, VariantType, isSubtype, none, some, variant } from "@elaraai/east";
|
|
7
|
+
import { RecordSliceBindType } from "./record-types.js";
|
|
8
|
+
import { SlicePersistType } from "./index.js";
|
|
9
|
+
/** Controls a record can answer without evaluating row predicates. */
|
|
10
|
+
export const RecordSliceAffordanceType = VariantType({
|
|
11
|
+
fields: NullType, search: NullType, range: NullType, presets: NullType,
|
|
12
|
+
resolution: NullType, brush: NullType, summary: NullType,
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* Record narrowing in a component's existing toolbar.
|
|
16
|
+
* @property slice - Canonical controls handle; typed data stays in the component's source.
|
|
17
|
+
* @property affordances - Explicit controls the host offers.
|
|
18
|
+
* @property persist - Optional store persistence.
|
|
19
|
+
*/
|
|
20
|
+
export const RecordSliceChromeType = StructType({
|
|
21
|
+
slice: RecordSliceBindType,
|
|
22
|
+
affordances: ArrayType(RecordSliceAffordanceType),
|
|
23
|
+
persist: OptionType(SlicePersistType),
|
|
24
|
+
});
|
|
25
|
+
/** Recognise the new handle at authoring time, before projecting its data member. */
|
|
26
|
+
export function isRecordSlice(input) {
|
|
27
|
+
const type = Expr.type(East.value(input));
|
|
28
|
+
return type.type === "Struct" && type.fields.config !== undefined && type.fields.choose !== undefined;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Build canonical chrome without extending the local handle or embedding its data.
|
|
32
|
+
* @param options - Bound handle, requested controls and persistence.
|
|
33
|
+
* @returns The record chrome payload.
|
|
34
|
+
*/
|
|
35
|
+
export function recordSliceChrome(options) {
|
|
36
|
+
const source = East.value(options.slice);
|
|
37
|
+
const type = Expr.type(source);
|
|
38
|
+
if (type.type !== "Struct")
|
|
39
|
+
throw new Error("A record Slice handle is required");
|
|
40
|
+
for (const [field, expected] of Object.entries(RecordSliceBindType.fields)) {
|
|
41
|
+
if (type.fields[field] === undefined || !isSubtype(type.fields[field], expected))
|
|
42
|
+
throw new Error(`Invalid record Slice member '${field}'`);
|
|
43
|
+
}
|
|
44
|
+
const slice = East.value(Object.fromEntries(Object.keys(RecordSliceBindType.fields).map(field => [field, source[field]])), RecordSliceBindType);
|
|
45
|
+
const affordances = options.affordances ?? ["fields", "presets", "summary"];
|
|
46
|
+
for (const affordance of affordances) {
|
|
47
|
+
if (!(affordance in RecordSliceAffordanceType.cases))
|
|
48
|
+
throw new Error(`Record slices do not support '${affordance}'; use indexed field choices`);
|
|
49
|
+
}
|
|
50
|
+
return East.value({ slice, affordances: affordances.map(value => variant(value, null)), persist: options.persist === undefined ? none : some(variant(options.persist, null)) }, RecordSliceChromeType);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=record-chrome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-chrome.js","sourceRoot":"","sources":["../../../../src/platform/slice/record-chrome.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/** Queries for e3's ordinary maintained centred interval index. */
|
|
6
|
+
import { type ValueTypeOf } from "@elaraai/east";
|
|
7
|
+
import type { SeekQueryType } from "../../contracts/source.js";
|
|
8
|
+
import type { RecordSliceChoiceType, RecordSliceIndexType } from "./record-types.js";
|
|
9
|
+
type Interval = Extract<ValueTypeOf<RecordSliceIndexType>["interval"], {
|
|
10
|
+
type: "some";
|
|
11
|
+
}>["value"];
|
|
12
|
+
/**
|
|
13
|
+
* Each exact prefix has one start range and at most 54 carry-in ranges.
|
|
14
|
+
* Their event identities are disjoint: each interval lives at one ancestor;
|
|
15
|
+
* which side the lower bound lies on selects its start or end ordering.
|
|
16
|
+
* Counts therefore sum original events, without reading or deduplicating rows.
|
|
17
|
+
* @param prefix - Exact choices of every leading field.
|
|
18
|
+
* @param choice - Half-open overlap range, exact start values, or all starts.
|
|
19
|
+
* @param interval - The generated index's interval metadata.
|
|
20
|
+
* @returns Disjoint ordinary key searches understood by every record backend.
|
|
21
|
+
*/
|
|
22
|
+
export declare function intervalQueries(prefix: readonly string[], choice: ValueTypeOf<RecordSliceChoiceType> | undefined, interval: Interval): ValueTypeOf<SeekQueryType>[];
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=record-interval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-interval.d.ts","sourceRoot":"","sources":["../../../../src/platform/slice/record-interval.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mEAAmE;AACnE,OAAO,EAA+F,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9I,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAErF,KAAK,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,UAAU,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AAIlG;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,qBAAqB,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC,EAAE,CAkCnK"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/** Queries for e3's ordinary maintained centred interval index. */
|
|
6
|
+
import { DateTimeType, IntegerType, OptionType, none, parseFor, printFor, some, variant } from "@elaraai/east";
|
|
7
|
+
const leaf = 3n * (1n << 53n);
|
|
8
|
+
const integerText = printFor(IntegerType);
|
|
9
|
+
/**
|
|
10
|
+
* Each exact prefix has one start range and at most 54 carry-in ranges.
|
|
11
|
+
* Their event identities are disjoint: each interval lives at one ancestor;
|
|
12
|
+
* which side the lower bound lies on selects its start or end ordering.
|
|
13
|
+
* Counts therefore sum original events, without reading or deduplicating rows.
|
|
14
|
+
* @param prefix - Exact choices of every leading field.
|
|
15
|
+
* @param choice - Half-open overlap range, exact start values, or all starts.
|
|
16
|
+
* @param interval - The generated index's interval metadata.
|
|
17
|
+
* @returns Disjoint ordinary key searches understood by every record backend.
|
|
18
|
+
*/
|
|
19
|
+
export function intervalQueries(prefix, choice, interval) {
|
|
20
|
+
const starts = [...prefix, integerText(0n)];
|
|
21
|
+
if (choice === undefined)
|
|
22
|
+
return [variant("fields", { values: starts, prefix: none })];
|
|
23
|
+
if (choice.type === "values")
|
|
24
|
+
return [...new Set(choice.value)].map(value => variant("fields", { values: [...starts, value], prefix: none }));
|
|
25
|
+
if (choice.type !== "range")
|
|
26
|
+
throw new Error("Choose a time range for interval overlap");
|
|
27
|
+
const type = interval.optional ? OptionType(DateTimeType) : DateTimeType;
|
|
28
|
+
const parse = parseFor(type);
|
|
29
|
+
const print = printFor(type);
|
|
30
|
+
const lower = parse(choice.value.from);
|
|
31
|
+
const upper = parse(choice.value.to);
|
|
32
|
+
if (!lower.success || !upper.success)
|
|
33
|
+
throw new Error("Choose valid DateTime range endpoints");
|
|
34
|
+
const unwrap = (value) => {
|
|
35
|
+
if (!interval.optional)
|
|
36
|
+
return value;
|
|
37
|
+
const optional = value;
|
|
38
|
+
if (optional.type === "none")
|
|
39
|
+
throw new Error("Choose two range endpoints");
|
|
40
|
+
return optional.value;
|
|
41
|
+
};
|
|
42
|
+
const from = unwrap(lower.value);
|
|
43
|
+
const to = unwrap(upper.value);
|
|
44
|
+
if (from.getTime() >= to.getTime())
|
|
45
|
+
throw new Error("The range end must be after its start");
|
|
46
|
+
const after = new Date(from.getTime() + 1);
|
|
47
|
+
const afterText = print(interval.optional ? some(after) : after);
|
|
48
|
+
const queries = [variant("range", {
|
|
49
|
+
from: [...starts, choice.value.from], to: [...starts, choice.value.to],
|
|
50
|
+
})];
|
|
51
|
+
for (let child = leaf + BigInt(from.getTime()); child > 1n; child /= 2n) {
|
|
52
|
+
const right = child % 2n === 1n;
|
|
53
|
+
const code = 2n * (child / 2n) + (right ? 1n : 0n);
|
|
54
|
+
const node = [...prefix, integerText(code)];
|
|
55
|
+
queries.push(variant("range", right
|
|
56
|
+
? { from: [...node, afterText], to: [...prefix, integerText(code + 1n)] }
|
|
57
|
+
: { from: node, to: [...node, choice.value.from] }));
|
|
58
|
+
}
|
|
59
|
+
return queries;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=record-interval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-interval.js","sourceRoot":"","sources":["../../../../src/platform/slice/record-interval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/** Query planning shared by authoring validation and the record Slice runtime. */
|
|
6
|
+
import { type ValueTypeOf } from "@elaraai/east";
|
|
7
|
+
import type { SeekQueryType } from "../../contracts/source.js";
|
|
8
|
+
import type { RecordSliceChoiceType, RecordSliceIndexType } from "./record-types.js";
|
|
9
|
+
type Choice = ValueTypeOf<RecordSliceChoiceType>;
|
|
10
|
+
type Index = ValueTypeOf<RecordSliceIndexType>;
|
|
11
|
+
/** Bound the fan-out of a multi-choice path; never replace it with a row scan. */
|
|
12
|
+
export declare const MAX_RECORD_SLICE_RUNS = 64;
|
|
13
|
+
/** One supported index path and the disjoint key searches it needs. */
|
|
14
|
+
export interface RecordSlicePlan {
|
|
15
|
+
/** Source selector. */
|
|
16
|
+
index: string;
|
|
17
|
+
/** No queries means the complete source, rather than an empty result. */
|
|
18
|
+
queries: ValueTypeOf<SeekQueryType>[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Whether one index can answer every clause without scanning or duplicate rows.
|
|
22
|
+
* @param index - Available field path.
|
|
23
|
+
* @param where - Current narrowing.
|
|
24
|
+
* @returns Whether it is a supported path.
|
|
25
|
+
*/
|
|
26
|
+
export declare function recordPathMatches(index: Index, where: ReadonlyMap<string, Choice>): boolean;
|
|
27
|
+
/** Pick a supported path without executing or parsing its ranges. */
|
|
28
|
+
export declare function recordPlanIndex(indexes: readonly Index[], where: ReadonlyMap<string, Choice>): Index | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Plan the record's narrowing as exact leading values followed by at most one
|
|
31
|
+
* prefix or half-open range. The server answers every query; no predicate runs
|
|
32
|
+
* over a fetched row. Completed ranges are sorted by their actual source offsets.
|
|
33
|
+
*
|
|
34
|
+
* @param indexes - Available paths.
|
|
35
|
+
* @param where - Field choices, in any authored order.
|
|
36
|
+
* @param defaultIndex - Unfiltered source containing every primary row once.
|
|
37
|
+
* @returns One path and its key searches; null when no index answers it.
|
|
38
|
+
* @throws When a choice would exceed the bounded number of disjoint runs.
|
|
39
|
+
*/
|
|
40
|
+
export declare function planRecordSlice(indexes: readonly Index[], where: ReadonlyMap<string, Choice>, defaultIndex: string): RecordSlicePlan | null;
|
|
41
|
+
/**
|
|
42
|
+
* Keep the largest supported leading path after a choice changes. A new field
|
|
43
|
+
* that cannot follow replaces incompatible clauses; a trailing field with no
|
|
44
|
+
* chosen prerequisites remains unavailable. Chrome uses the same result to
|
|
45
|
+
* explain replacements before applying them.
|
|
46
|
+
* @param indexes - Available field paths.
|
|
47
|
+
* @param current - Current narrowing.
|
|
48
|
+
* @param field - Field being changed or cleared.
|
|
49
|
+
* @param choice - New choice, or undefined to clear the field.
|
|
50
|
+
* @returns Supported next narrowing, or null when prerequisites are missing.
|
|
51
|
+
*/
|
|
52
|
+
export declare function recordChoiceWhere(indexes: readonly Index[], current: ReadonlyMap<string, Choice>, field: string, choice: Choice | undefined): Map<string, Choice> | null;
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=record-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-plan.d.ts","sourceRoot":"","sources":["../../../../src/platform/slice/record-plan.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,kFAAkF;AAClF,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAErF,KAAK,MAAM,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC;AAGjD,KAAK,KAAK,GAAG,WAAW,CAAC,oBAAoB,CAAC,CAAC;AAE/C,kFAAkF;AAClF,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC5B,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;CACzC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAmB3F;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,GAAG,SAAS,CAIhH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAsC3I;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAiBxK"}
|