@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,110 @@
|
|
|
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 narrowing, shared by the platform handle and its controls. */
|
|
6
|
+
import { variant, type EastType, type StructType, type ValueTypeOf, type option } from "@elaraai/east";
|
|
7
|
+
import { type RecordSlicePlan } from "../platform/slice/record-plan.js";
|
|
8
|
+
import type { RecordSliceConfigType, RecordSliceStateType, RecordSliceWhereType, RecordSliceChoiceType, RecordSliceCountType, RecordSliceDomainType } from "../platform/slice/record-types.js";
|
|
9
|
+
import { RecordSliceSource, type RecordSliceReader } from "./record-slice-source.js";
|
|
10
|
+
type Config = ValueTypeOf<RecordSliceConfigType>;
|
|
11
|
+
type State = ValueTypeOf<RecordSliceStateType>;
|
|
12
|
+
type Where = ValueTypeOf<RecordSliceWhereType>;
|
|
13
|
+
type Choice = ValueTypeOf<RecordSliceChoiceType>;
|
|
14
|
+
type Count = ValueTypeOf<RecordSliceCountType>;
|
|
15
|
+
/** Only the index key is inspected; record rows and covering values stay opaque. */
|
|
16
|
+
export interface RecordSliceEntry {
|
|
17
|
+
/** Tagged key of the index that served the entry. */
|
|
18
|
+
ik: variant<string, unknown>;
|
|
19
|
+
/** Original key, inspected only by editing confirmation. */
|
|
20
|
+
key?: unknown;
|
|
21
|
+
/** Joined row, encoded whole only for editing confirmation. */
|
|
22
|
+
row?: option<unknown>;
|
|
23
|
+
}
|
|
24
|
+
/** Indexed reads together with the binding's stable identity and default path. */
|
|
25
|
+
export interface RecordSliceBinding extends RecordSliceReader<RecordSliceEntry> {
|
|
26
|
+
/** Binding identity. */
|
|
27
|
+
id: string;
|
|
28
|
+
/** Primary record identity, independent of the listed indexes. */
|
|
29
|
+
recordId: string;
|
|
30
|
+
/** Unfiltered source with one entry per primary row. */
|
|
31
|
+
defaultIndex: string;
|
|
32
|
+
/** Exact maintained entry keys for one row, for indexed membership checks. */
|
|
33
|
+
entryKeys(index: string, key: unknown, row: unknown): string[];
|
|
34
|
+
/** Follow a confirmed record state or the current state. */
|
|
35
|
+
refresh(hash: option<string>): null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Validates all custom-control input and delegates every record query to the
|
|
39
|
+
* indexed binding. It never evaluates a predicate over a record row.
|
|
40
|
+
*/
|
|
41
|
+
export declare class RecordSliceController {
|
|
42
|
+
readonly source: RecordSliceBinding;
|
|
43
|
+
readonly config: Config;
|
|
44
|
+
readonly readState: () => State;
|
|
45
|
+
private readonly writeState;
|
|
46
|
+
private readonly primaryKey;
|
|
47
|
+
/** Bounded, revision-aware windows shared by counts and data. */
|
|
48
|
+
readonly windows: RecordSliceSource<RecordSliceEntry>;
|
|
49
|
+
private readonly encodeRow;
|
|
50
|
+
private readonly decodeRow;
|
|
51
|
+
private readonly schemas;
|
|
52
|
+
private readonly parse;
|
|
53
|
+
private readonly print;
|
|
54
|
+
/**
|
|
55
|
+
* @param source - Bound indexed reads.
|
|
56
|
+
* @param config - Author-derived field metadata and paths.
|
|
57
|
+
* @param row - Record row type recovered from the platform's source type.
|
|
58
|
+
* @param readState - Tracked state read.
|
|
59
|
+
* @param writeState - Shared store write, including persistence.
|
|
60
|
+
* @param primaryKey - Original key type; String ids stay raw, other ids are East literals.
|
|
61
|
+
* @param indexes - Type metadata for computed fields, carried by the source.
|
|
62
|
+
*/
|
|
63
|
+
constructor(source: RecordSliceBinding, config: Config, row: StructType, readState: () => State, writeState: (state: State) => void, primaryKey?: EastType, indexes?: StructType);
|
|
64
|
+
private schema;
|
|
65
|
+
private readValue;
|
|
66
|
+
private validate;
|
|
67
|
+
/** Validate the whole state before a custom control or saved view writes it. */
|
|
68
|
+
write(state: State): null;
|
|
69
|
+
/** Compile a supported narrowing, refusing an incompatible saved/custom state. */
|
|
70
|
+
plan(where: Where): RecordSlicePlan;
|
|
71
|
+
/** The next valid state for one choice; shared with prospective counts. */
|
|
72
|
+
proposed(field: string, choice: Choice | undefined): Where;
|
|
73
|
+
/** Apply one choice, clearing incompatible trailing clauses together. */
|
|
74
|
+
choose(field: string, choice: Choice | undefined): null;
|
|
75
|
+
/** Clear narrowing while preserving presentation resolution. */
|
|
76
|
+
clearAll(): null;
|
|
77
|
+
/** Set or clear a named narrowing. */
|
|
78
|
+
togglePreset(id: string): null;
|
|
79
|
+
/** Exact count, never a partial sum while another query is pending. */
|
|
80
|
+
count(where?: Where): option<bigint>;
|
|
81
|
+
/**
|
|
82
|
+
* Measure a numeric/date field using only boundary index entries. Leading
|
|
83
|
+
* choices remain applied; this field's own range is ignored. Unset entries
|
|
84
|
+
* are skipped with one exact search, never by walking their rows.
|
|
85
|
+
*/
|
|
86
|
+
domain(field: string): option<ValueTypeOf<RecordSliceDomainType>>;
|
|
87
|
+
/** Confirm a saved entry without confusing a filtered-out row with a deletion. */
|
|
88
|
+
readEntry(id: string): option<option<Uint8Array>>;
|
|
89
|
+
/**
|
|
90
|
+
* Exact membership of one primary identity, independent of loaded pages.
|
|
91
|
+
* Reads that row once, then seeks its maintained keys against the selected
|
|
92
|
+
* server bounds. Interval fan-out and Set indexes keep primary identity;
|
|
93
|
+
* no predicate is evaluated over the row or a fetched run.
|
|
94
|
+
*/
|
|
95
|
+
contains(where: Where, id: string): option<boolean>;
|
|
96
|
+
/** Labels a typical exact choice would replace, for advance explanation. */
|
|
97
|
+
replaces(field: string): string[];
|
|
98
|
+
private counted;
|
|
99
|
+
/** Known choices with exact prospective counts; one failure does not hide others. */
|
|
100
|
+
values(field: string): Count[];
|
|
101
|
+
/**
|
|
102
|
+
* Find up to eight distinct String values by jumping over each value's exact
|
|
103
|
+
* bounds. At most one entry is read for a visited value, even if that value
|
|
104
|
+
* appears millions of times. Set searches only suggest exact membership;
|
|
105
|
+
* they never turn their potentially duplicated prefix ranges into rows.
|
|
106
|
+
*/
|
|
107
|
+
suggest(field: string, text: string): option<Count[]>;
|
|
108
|
+
}
|
|
109
|
+
export {};
|
|
110
|
+
//# sourceMappingURL=record-slice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-slice.d.ts","sourceRoot":"","sources":["../../../src/runtime/record-slice.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,374 @@
|
|
|
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 narrowing, shared by the platform handle and its controls. */
|
|
6
|
+
import { StringType, compareFor, decodeBeast2For, encodeBeast2For, none, parseFor, printFor, some, variant, } from "@elaraai/east";
|
|
7
|
+
import { recordSliceFieldSchema, recordSliceFieldTypes } from "../platform/slice/record.js";
|
|
8
|
+
import { planRecordSlice, recordChoiceWhere, recordPlanIndex } from "../platform/slice/record-plan.js";
|
|
9
|
+
import { RecordSliceSource } from "./record-slice-source.js";
|
|
10
|
+
/**
|
|
11
|
+
* Validates all custom-control input and delegates every record query to the
|
|
12
|
+
* indexed binding. It never evaluates a predicate over a record row.
|
|
13
|
+
*/
|
|
14
|
+
export class RecordSliceController {
|
|
15
|
+
source;
|
|
16
|
+
config;
|
|
17
|
+
readState;
|
|
18
|
+
writeState;
|
|
19
|
+
primaryKey;
|
|
20
|
+
/** Bounded, revision-aware windows shared by counts and data. */
|
|
21
|
+
windows;
|
|
22
|
+
encodeRow;
|
|
23
|
+
decodeRow;
|
|
24
|
+
schemas = new Map();
|
|
25
|
+
parse = new Map();
|
|
26
|
+
print = new Map();
|
|
27
|
+
/**
|
|
28
|
+
* @param source - Bound indexed reads.
|
|
29
|
+
* @param config - Author-derived field metadata and paths.
|
|
30
|
+
* @param row - Record row type recovered from the platform's source type.
|
|
31
|
+
* @param readState - Tracked state read.
|
|
32
|
+
* @param writeState - Shared store write, including persistence.
|
|
33
|
+
* @param primaryKey - Original key type; String ids stay raw, other ids are East literals.
|
|
34
|
+
* @param indexes - Type metadata for computed fields, carried by the source.
|
|
35
|
+
*/
|
|
36
|
+
constructor(source, config, row, readState, writeState, primaryKey = StringType, indexes) {
|
|
37
|
+
this.source = source;
|
|
38
|
+
this.config = config;
|
|
39
|
+
this.readState = readState;
|
|
40
|
+
this.writeState = writeState;
|
|
41
|
+
this.primaryKey = primaryKey;
|
|
42
|
+
this.encodeRow = encodeBeast2For(row);
|
|
43
|
+
this.decodeRow = decodeBeast2For(row);
|
|
44
|
+
this.windows = new RecordSliceSource(source);
|
|
45
|
+
const fieldTypes = recordSliceFieldTypes(row, indexes);
|
|
46
|
+
for (const field of config.fields) {
|
|
47
|
+
const type = fieldTypes[field.fieldId];
|
|
48
|
+
if (type === undefined)
|
|
49
|
+
throw new Error(`Unknown field '${field.label}'`);
|
|
50
|
+
const schema = recordSliceFieldSchema(type, field.fieldId);
|
|
51
|
+
this.schemas.set(field.fieldId, schema);
|
|
52
|
+
this.parse.set(field.fieldId, parseFor(schema.key));
|
|
53
|
+
this.print.set(field.fieldId, printFor(schema.key));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
schema(field) {
|
|
57
|
+
const schema = this.schemas.get(field);
|
|
58
|
+
if (schema === undefined)
|
|
59
|
+
throw new Error(`Unknown field '${field}'`);
|
|
60
|
+
return schema;
|
|
61
|
+
}
|
|
62
|
+
readValue(field, text) {
|
|
63
|
+
this.schema(field);
|
|
64
|
+
const result = this.parse.get(field)(text);
|
|
65
|
+
if (!result.success)
|
|
66
|
+
throw new Error(`Invalid value for ${this.config.fields.find(f => f.fieldId === field).label}: ${result.error}`);
|
|
67
|
+
return result.value;
|
|
68
|
+
}
|
|
69
|
+
validate(field, choice) {
|
|
70
|
+
const schema = this.schema(field);
|
|
71
|
+
const print = this.print.get(field);
|
|
72
|
+
if (choice.type === "values") {
|
|
73
|
+
const values = [...new Set(choice.value.map(text => print(this.readValue(field, text))))];
|
|
74
|
+
if (values.length === 0 || (schema.set && values.length !== 1))
|
|
75
|
+
throw new Error(schema.set ? "Choose one value" : "Choose at least one value");
|
|
76
|
+
return variant("values", values);
|
|
77
|
+
}
|
|
78
|
+
if (choice.type === "prefix") {
|
|
79
|
+
if (schema.kind !== "string" || schema.set)
|
|
80
|
+
throw new Error("Choose an exact value for this field");
|
|
81
|
+
return choice;
|
|
82
|
+
}
|
|
83
|
+
if (schema.set || !["datetime", "integer", "float"].includes(schema.kind))
|
|
84
|
+
throw new Error("This field does not support a range");
|
|
85
|
+
const from = this.readValue(field, choice.value.from);
|
|
86
|
+
const to = this.readValue(field, choice.value.to);
|
|
87
|
+
if (schema.optional && (from.type === "none" || to.type === "none"))
|
|
88
|
+
throw new Error("Choose two range endpoints");
|
|
89
|
+
if (compareFor(schema.key)(from, to) >= 0)
|
|
90
|
+
throw new Error("The range end must be after its start");
|
|
91
|
+
return variant("range", { from: print(from), to: print(to) });
|
|
92
|
+
}
|
|
93
|
+
/** Validate the whole state before a custom control or saved view writes it. */
|
|
94
|
+
write(state) {
|
|
95
|
+
const where = new Map([...state.where].map(([field, choice]) => [field, this.validate(field, choice)]));
|
|
96
|
+
this.plan(where);
|
|
97
|
+
if (state.preset.type === "some" && !this.config.presets.some(preset => preset.id === state.preset.value))
|
|
98
|
+
throw new Error("Unknown preset");
|
|
99
|
+
this.writeState({ ...state, where });
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
/** Compile a supported narrowing, refusing an incompatible saved/custom state. */
|
|
103
|
+
plan(where) {
|
|
104
|
+
const plan = planRecordSlice(this.config.indexes, where, this.source.defaultIndex);
|
|
105
|
+
if (plan === null)
|
|
106
|
+
throw new Error("These choices cannot be combined; clear a field and try again");
|
|
107
|
+
return plan;
|
|
108
|
+
}
|
|
109
|
+
/** The next valid state for one choice; shared with prospective counts. */
|
|
110
|
+
proposed(field, choice) {
|
|
111
|
+
this.schema(field);
|
|
112
|
+
const next = recordChoiceWhere(this.config.indexes, this.readState().where, field, choice === undefined ? undefined : this.validate(field, choice));
|
|
113
|
+
if (next === null)
|
|
114
|
+
throw new Error("Choose the preceding fields before this field");
|
|
115
|
+
this.plan(next);
|
|
116
|
+
return next;
|
|
117
|
+
}
|
|
118
|
+
/** Apply one choice, clearing incompatible trailing clauses together. */
|
|
119
|
+
choose(field, choice) {
|
|
120
|
+
return this.write({ ...this.readState(), where: this.proposed(field, choice), preset: none });
|
|
121
|
+
}
|
|
122
|
+
/** Clear narrowing while preserving presentation resolution. */
|
|
123
|
+
clearAll() { return this.write({ ...this.readState(), where: new Map(), preset: none }); }
|
|
124
|
+
/** Set or clear a named narrowing. */
|
|
125
|
+
togglePreset(id) {
|
|
126
|
+
const state = this.readState();
|
|
127
|
+
if (state.preset.type === "some" && state.preset.value === id)
|
|
128
|
+
return this.clearAll();
|
|
129
|
+
const preset = this.config.presets.find(value => value.id === id);
|
|
130
|
+
if (preset === undefined)
|
|
131
|
+
throw new Error("Unknown preset");
|
|
132
|
+
return this.write({ ...state, where: preset.where, preset: some(id) });
|
|
133
|
+
}
|
|
134
|
+
/** Exact count, never a partial sum while another query is pending. */
|
|
135
|
+
count(where = this.readState().where) {
|
|
136
|
+
const result = this.windows.resolve(this.plan(where));
|
|
137
|
+
return result.type === "some" ? some(result.value.total) : none;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Measure a numeric/date field using only boundary index entries. Leading
|
|
141
|
+
* choices remain applied; this field's own range is ignored. Unset entries
|
|
142
|
+
* are skipped with one exact search, never by walking their rows.
|
|
143
|
+
*/
|
|
144
|
+
domain(field) {
|
|
145
|
+
const schema = this.schema(field);
|
|
146
|
+
if (schema.set || !["datetime", "integer", "float"].includes(schema.kind))
|
|
147
|
+
throw new Error("This field has no range");
|
|
148
|
+
const proposal = recordChoiceWhere(this.config.indexes, this.readState().where, field, variant("range", { from: "", to: "" }));
|
|
149
|
+
if (proposal === null)
|
|
150
|
+
return none;
|
|
151
|
+
const index = recordPlanIndex(this.config.indexes, proposal);
|
|
152
|
+
if (index === undefined)
|
|
153
|
+
return none;
|
|
154
|
+
const position = index.fields.indexOf(field);
|
|
155
|
+
const leading = new Map([...proposal].filter(([name]) => index.fields.indexOf(name) < position));
|
|
156
|
+
const plan = planRecordSlice([index], leading, index.name);
|
|
157
|
+
const bounds = this.windows.resolve(plan);
|
|
158
|
+
if (bounds.type === "none")
|
|
159
|
+
return none;
|
|
160
|
+
const compare = compareFor(schema.key);
|
|
161
|
+
const print = this.print.get(field);
|
|
162
|
+
let min;
|
|
163
|
+
let max;
|
|
164
|
+
let pending = false;
|
|
165
|
+
const keyOf = (entry) => {
|
|
166
|
+
if (entry.ik.type !== index.name)
|
|
167
|
+
throw new Error("The source returned a different ordering");
|
|
168
|
+
return !index.structured ? entry.ik.value : entry.ik.value[field];
|
|
169
|
+
};
|
|
170
|
+
for (const run of bounds.value.runs) {
|
|
171
|
+
if (run.count === 0n)
|
|
172
|
+
continue;
|
|
173
|
+
let start = run.row;
|
|
174
|
+
let first = this.source.page(index.name, start, 1n);
|
|
175
|
+
const last = this.source.page(index.name, run.row + run.count - 1n, 1n);
|
|
176
|
+
if (first.type === "none" || last.type === "none") {
|
|
177
|
+
pending = true;
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
let entry = first.value[0];
|
|
181
|
+
const end = last.value[0];
|
|
182
|
+
if (entry === undefined || end === undefined)
|
|
183
|
+
throw new Error("The results changed while reading the range; retry");
|
|
184
|
+
if (schema.optional && keyOf(entry).type === "none") {
|
|
185
|
+
const fields = index.structured
|
|
186
|
+
? index.fields.slice(0, position + 1).map(name => this.print.get(name)(entry.ik.value[name])) : [];
|
|
187
|
+
if (index.interval.type === "some")
|
|
188
|
+
fields.splice(index.fields.length - 1, 0, "0");
|
|
189
|
+
const query = !index.structured ? variant("key", print(none))
|
|
190
|
+
: variant("fields", { values: fields, prefix: none });
|
|
191
|
+
const unset = this.source.seek(index.name, query);
|
|
192
|
+
if (unset.type === "none") {
|
|
193
|
+
pending = true;
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
start = unset.value.row + unset.value.count;
|
|
197
|
+
if (start >= run.row + run.count)
|
|
198
|
+
continue;
|
|
199
|
+
if (start <= run.row)
|
|
200
|
+
throw new Error("Range search did not advance; retry");
|
|
201
|
+
first = this.source.page(index.name, start, 1n);
|
|
202
|
+
if (first.type === "none") {
|
|
203
|
+
pending = true;
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
entry = first.value[0];
|
|
207
|
+
if (entry === undefined)
|
|
208
|
+
throw new Error("The results changed while reading the range; retry");
|
|
209
|
+
}
|
|
210
|
+
const low = keyOf(entry);
|
|
211
|
+
const high = keyOf(end);
|
|
212
|
+
if (min === undefined || compare(low, min) < 0)
|
|
213
|
+
min = low;
|
|
214
|
+
if (max === undefined || compare(high, max) > 0)
|
|
215
|
+
max = high;
|
|
216
|
+
}
|
|
217
|
+
const revision = this.source.revision();
|
|
218
|
+
if (pending || min === undefined || revision.type === "none" || revision.value !== bounds.value.revision)
|
|
219
|
+
return none;
|
|
220
|
+
return some({ from: print(min), to: print(max) });
|
|
221
|
+
}
|
|
222
|
+
/** Confirm a saved entry without confusing a filtered-out row with a deletion. */
|
|
223
|
+
readEntry(id) {
|
|
224
|
+
const revision = this.source.revision();
|
|
225
|
+
if (revision.type === "none")
|
|
226
|
+
return none;
|
|
227
|
+
const text = this.primaryKey.type === "String" ? printFor(StringType)(id) : id;
|
|
228
|
+
const key = parseFor(this.primaryKey)(text);
|
|
229
|
+
if (!key.success)
|
|
230
|
+
throw new Error("Invalid record identity");
|
|
231
|
+
const found = this.source.seek("primary", variant("key", text));
|
|
232
|
+
if (found.type === "none")
|
|
233
|
+
return none;
|
|
234
|
+
let result = none;
|
|
235
|
+
if (found.value.found) {
|
|
236
|
+
const page = this.source.page("primary", found.value.row, 1n);
|
|
237
|
+
if (page.type === "none")
|
|
238
|
+
return none;
|
|
239
|
+
const entry = page.value[0];
|
|
240
|
+
if (entry === undefined || entry.row?.type !== "some" || compareFor(this.primaryKey)(entry.key, key.value) !== 0) {
|
|
241
|
+
throw new Error("The record changed while confirming the edit; retry");
|
|
242
|
+
}
|
|
243
|
+
result = some(this.encodeRow(entry.row.value));
|
|
244
|
+
}
|
|
245
|
+
const current = this.source.revision();
|
|
246
|
+
return current.type === "some" && current.value === revision.value ? some(result) : none;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Exact membership of one primary identity, independent of loaded pages.
|
|
250
|
+
* Reads that row once, then seeks its maintained keys against the selected
|
|
251
|
+
* server bounds. Interval fan-out and Set indexes keep primary identity;
|
|
252
|
+
* no predicate is evaluated over the row or a fetched run.
|
|
253
|
+
*/
|
|
254
|
+
contains(where, id) {
|
|
255
|
+
const plan = this.plan(where);
|
|
256
|
+
const runs = this.windows.resolve(plan);
|
|
257
|
+
const row = this.readEntry(id);
|
|
258
|
+
if (runs.type === "none" || row.type === "none")
|
|
259
|
+
return none;
|
|
260
|
+
const current = this.source.revision();
|
|
261
|
+
if (current.type === "none" || current.value !== runs.value.revision)
|
|
262
|
+
return none;
|
|
263
|
+
if (row.value.type === "none")
|
|
264
|
+
return some(false);
|
|
265
|
+
if (plan.index === "primary")
|
|
266
|
+
return some(true);
|
|
267
|
+
const key = parseFor(this.primaryKey)(this.primaryKey.type === "String" ? printFor(StringType)(id) : id);
|
|
268
|
+
if (!key.success)
|
|
269
|
+
throw new Error("Invalid record identity");
|
|
270
|
+
const keys = this.source.entryKeys(plan.index, key.value, this.decodeRow(row.value.value));
|
|
271
|
+
let pending = false;
|
|
272
|
+
let included = false;
|
|
273
|
+
for (const key of keys) {
|
|
274
|
+
const found = this.windows.seek(plan, variant("key", key));
|
|
275
|
+
if (found.type === "none")
|
|
276
|
+
pending = true;
|
|
277
|
+
else
|
|
278
|
+
included ||= found.value.found;
|
|
279
|
+
}
|
|
280
|
+
const revision = this.source.revision();
|
|
281
|
+
if (revision.type === "none" || revision.value !== runs.value.revision || (pending && !included))
|
|
282
|
+
return none;
|
|
283
|
+
return some(included);
|
|
284
|
+
}
|
|
285
|
+
/** Labels a typical exact choice would replace, for advance explanation. */
|
|
286
|
+
replaces(field) {
|
|
287
|
+
const state = this.readState();
|
|
288
|
+
const where = recordChoiceWhere(this.config.indexes, state.where, field, variant("values", [""]));
|
|
289
|
+
if (where === null)
|
|
290
|
+
return [];
|
|
291
|
+
return this.config.fields.filter(value => state.where.has(value.fieldId) && !where.has(value.fieldId)).map(value => value.label);
|
|
292
|
+
}
|
|
293
|
+
counted(field, value, label, toggle = false) {
|
|
294
|
+
const selected = this.readState().where.get(field);
|
|
295
|
+
const base = { value, label, selected: selected?.type === "values" && selected.value.includes(value) };
|
|
296
|
+
try {
|
|
297
|
+
const active = selected?.type === "values" ? selected.value : [];
|
|
298
|
+
const multiple = this.config.fields.find(candidate => candidate.fieldId === field).multiple;
|
|
299
|
+
const values = !toggle ? [value] : base.selected ? active.filter(candidate => candidate !== value) : multiple ? [...active, value] : [value];
|
|
300
|
+
return { ...base, count: this.count(this.proposed(field, values.length === 0 ? undefined : variant("values", values))), error: none };
|
|
301
|
+
}
|
|
302
|
+
catch (error) {
|
|
303
|
+
return { ...base, count: none, error: some(error instanceof Error ? error.message : "Could not load the count") };
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
/** Known choices with exact prospective counts; one failure does not hide others. */
|
|
307
|
+
values(field) {
|
|
308
|
+
this.schema(field);
|
|
309
|
+
return this.config.fields.find(value => value.fieldId === field).values.map(value => this.counted(field, value.value, value.label, true));
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Find up to eight distinct String values by jumping over each value's exact
|
|
313
|
+
* bounds. At most one entry is read for a visited value, even if that value
|
|
314
|
+
* appears millions of times. Set searches only suggest exact membership;
|
|
315
|
+
* they never turn their potentially duplicated prefix ranges into rows.
|
|
316
|
+
*/
|
|
317
|
+
suggest(field, text) {
|
|
318
|
+
const schema = this.schema(field);
|
|
319
|
+
if (schema.kind !== "string")
|
|
320
|
+
throw new Error("This field does not support text search");
|
|
321
|
+
const exact = this.print.get(field)(schema.optional ? some(text) : text);
|
|
322
|
+
const proposal = this.proposed(field, variant("values", [exact]));
|
|
323
|
+
const plan = this.plan(proposal);
|
|
324
|
+
const index = this.config.indexes.find(value => value.name === plan.index);
|
|
325
|
+
const position = index.fields.indexOf(field);
|
|
326
|
+
const leading = new Map([...proposal].filter(([name]) => index.fields.indexOf(name) < position));
|
|
327
|
+
leading.set(field, variant("prefix", text));
|
|
328
|
+
// Suggestion bounds may include fan-out entries; each displayed value
|
|
329
|
+
// gets its count from a separately validated exact-membership path.
|
|
330
|
+
const searchPlan = planRecordSlice([{ ...index, sets: new Set(), interval: none }], leading, this.source.defaultIndex);
|
|
331
|
+
const ranges = this.windows.resolve(searchPlan);
|
|
332
|
+
if (ranges.type === "none")
|
|
333
|
+
return none;
|
|
334
|
+
const values = [];
|
|
335
|
+
const seen = new Set();
|
|
336
|
+
for (const run of ranges.value.runs) {
|
|
337
|
+
let offset = run.row;
|
|
338
|
+
while (offset < run.row + run.count && values.length < 8) {
|
|
339
|
+
const page = this.source.page(index.name, offset, 1n);
|
|
340
|
+
if (page.type === "none")
|
|
341
|
+
return none;
|
|
342
|
+
const entry = page.value[0];
|
|
343
|
+
if (entry === undefined)
|
|
344
|
+
throw new Error("The results changed while searching; retry");
|
|
345
|
+
if (entry.ik.type !== index.name)
|
|
346
|
+
throw new Error("The source returned a different ordering");
|
|
347
|
+
const key = !index.structured ? entry.ik.value : entry.ik.value[field];
|
|
348
|
+
const literal = this.print.get(field)(key);
|
|
349
|
+
if (!seen.has(literal)) {
|
|
350
|
+
seen.add(literal);
|
|
351
|
+
const optional = key;
|
|
352
|
+
const value = schema.optional ? optional.type === "some" ? optional.value : "Unset" : key;
|
|
353
|
+
values.push(this.counted(field, literal, value));
|
|
354
|
+
}
|
|
355
|
+
const query = !index.structured ? variant("key", literal)
|
|
356
|
+
: variant("fields", { values: index.fields.slice(0, position + 1).map(name => this.print.get(name)(entry.ik.value[name])), prefix: none });
|
|
357
|
+
const next = this.source.seek(index.name, query);
|
|
358
|
+
if (next.type === "none")
|
|
359
|
+
return none;
|
|
360
|
+
const end = next.value.row + next.value.count;
|
|
361
|
+
if (end <= offset)
|
|
362
|
+
throw new Error("Search did not advance; retry");
|
|
363
|
+
offset = end;
|
|
364
|
+
}
|
|
365
|
+
if (values.length === 8)
|
|
366
|
+
break;
|
|
367
|
+
}
|
|
368
|
+
const current = this.source.revision();
|
|
369
|
+
if (current.type === "none" || current.value !== ranges.value.revision)
|
|
370
|
+
return none;
|
|
371
|
+
return some(values);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
//# sourceMappingURL=record-slice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-slice.js","sourceRoot":"","sources":["../../../src/runtime/record-slice.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* and write one shared narrowing state, plus the platform that creates and
|
|
8
8
|
* applies it. A *slice* is a typed view over a row collection: a range, a set
|
|
9
9
|
* of filter predicates, a search, a breakdown dimension, and saved cohorts.
|
|
10
|
-
*
|
|
11
|
-
* `Slice.
|
|
10
|
+
* Bind rows with `Slice.bind(key, rows, options)` or indexed records with
|
|
11
|
+
* `Slice.bindRecord(key, binding, options)`, then
|
|
12
12
|
* drop in whichever `<Slice.*>` controls a surface needs — they all stay in
|
|
13
13
|
* sync because they target the same bound handle.
|
|
14
14
|
*
|
|
@@ -25,23 +25,20 @@
|
|
|
25
25
|
* ```tsx
|
|
26
26
|
* // .tsx file with the `@jsxImportSource @elaraai/east-ui` pragma
|
|
27
27
|
* import { East, StructType, StringType, IntegerType, ArrayType, none } from "@elaraai/east";
|
|
28
|
-
* import { Reactive, Slice, Table, UIComponentType } from "@elaraai/east-ui";
|
|
28
|
+
* import { Reactive, Slice, Table, UIComponentType, VStack } from "@elaraai/east-ui";
|
|
29
29
|
*
|
|
30
30
|
* const view = East.function([], UIComponentType, _$ => {
|
|
31
31
|
* const EventType = StructType({ scenario: StringType, sessions: IntegerType });
|
|
32
|
-
* const cfg = Slice.config(EventType, {
|
|
33
|
-
* fields: { scenario: { label: "Scenario" }, sessions: { label: "Sessions" } },
|
|
34
|
-
* searchFieldIds: ["scenario"],
|
|
35
|
-
* });
|
|
36
32
|
* return (
|
|
37
33
|
* <Reactive>{$ => {
|
|
38
34
|
* const data = $.const([{ scenario: "v3", sessions: 42n }], ArrayType(EventType));
|
|
39
|
-
* const slice = $.let(Slice.bind(
|
|
40
|
-
* const filtered = $.let(Slice.
|
|
35
|
+
* const slice = $.let(Slice.bind("ex.slice", data, { search: "scenario" }));
|
|
36
|
+
* const filtered = $.let(Slice.rows(slice));
|
|
41
37
|
* return (
|
|
42
|
-
* <
|
|
38
|
+
* <VStack gap="3" align="stretch">
|
|
39
|
+
* <Slice.Rail slice={slice} affordances={["filter", "search"]} />
|
|
43
40
|
* <Table data={filtered} columns={{ scenario: { header: "Scenario" }, sessions: { header: "Sessions" } }} />
|
|
44
|
-
* </
|
|
41
|
+
* </VStack>
|
|
45
42
|
* );
|
|
46
43
|
* }}</Reactive>
|
|
47
44
|
* );
|
|
@@ -49,8 +46,8 @@
|
|
|
49
46
|
* ```
|
|
50
47
|
*
|
|
51
48
|
* @remarks
|
|
52
|
-
* Carries the slice platform alongside the tags: `Slice.
|
|
53
|
-
*
|
|
49
|
+
* Carries the slice platform alongside the tags: `Slice.bind` (typed rows in hand),
|
|
50
|
+
* `Slice.bindRecord` (paged indexed records), `Slice.config` (pure apply configuration),
|
|
54
51
|
* `Slice.state` (the initial-state builder), `Slice.apply` (the pure
|
|
55
52
|
* narrowing — `Slice.apply.where`, `.breakdown`, …), and `Slice.Types` (every
|
|
56
53
|
* East type: `State`, `Predicate`, `Range`, `Breakdown`, `Cohort`,
|
|
@@ -72,6 +69,7 @@ type SliceTags = {
|
|
|
72
69
|
Rail: JsxTag<OptionsProps<typeof SliceFactory.Rail.Root>>;
|
|
73
70
|
config: typeof SliceFactory.config;
|
|
74
71
|
bind: typeof SliceFactory.bind;
|
|
72
|
+
bindRecord: typeof SliceFactory.bindRecord;
|
|
75
73
|
rows: typeof SliceFactory.rows;
|
|
76
74
|
partition: typeof SliceFactory.partition;
|
|
77
75
|
partitionRowType: typeof SliceFactory.partitionRowType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../../src/runtime/slice.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../../src/runtime/slice.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAc,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE9E,gFAAgF;AAChF,KAAK,SAAS,GAAG;IACb,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,EAAE,OAAO,YAAY,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC/B,UAAU,EAAE,OAAO,YAAY,CAAC,UAAU,CAAC;IAC3C,IAAI,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC/B,SAAS,EAAE,OAAO,YAAY,CAAC,SAAS,CAAC;IACzC,gBAAgB,EAAE,OAAO,YAAY,CAAC,gBAAgB,CAAC;IACvD,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;IACjC,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;IACjC,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,SAuTnB,CAAC"}
|