@elaraai/east-ui 1.0.67 → 1.0.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/src/charts/chart/index.d.ts +39 -4
- 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 +61 -3
- package/dist/src/charts/spec/index.d.ts.map +1 -1
- package/dist/src/charts/spec/types.d.ts +1 -1
- package/dist/src/charts/spec/types.js +1 -1
- package/dist/src/collections/blend/index.d.ts +1 -1
- package/dist/src/collections/blend/index.d.ts.map +1 -1
- package/dist/src/collections/blend/index.js +1 -1
- package/dist/src/collections/blend/index.js.map +1 -1
- package/dist/src/collections/blend/types.js +1 -1
- package/dist/src/collections/blend/types.js.map +1 -1
- package/dist/src/collections/board/index.d.ts +4 -4
- package/dist/src/collections/board/index.d.ts.map +1 -1
- package/dist/src/collections/board/index.js +1 -1
- package/dist/src/collections/board/index.js.map +1 -1
- package/dist/src/collections/board/types.js +1 -1
- package/dist/src/collections/board/types.js.map +1 -1
- package/dist/src/collections/calendar/index.d.ts +1 -1
- package/dist/src/collections/calendar/index.d.ts.map +1 -1
- package/dist/src/collections/deck/index.d.ts +58 -0
- package/dist/src/collections/deck/index.d.ts.map +1 -1
- package/dist/src/collections/index.d.ts +1 -2
- package/dist/src/collections/index.d.ts.map +1 -1
- package/dist/src/collections/index.js +1 -2
- package/dist/src/collections/index.js.map +1 -1
- package/dist/src/collections/library/index.d.ts +29 -0
- package/dist/src/collections/library/index.d.ts.map +1 -1
- package/dist/src/collections/library/types.d.ts +29 -0
- package/dist/src/collections/library/types.d.ts.map +1 -1
- package/dist/src/collections/matrix/index.d.ts +1 -1
- package/dist/src/collections/matrix/index.d.ts.map +1 -1
- package/dist/src/collections/plan/assemble.d.ts +3732 -0
- package/dist/src/collections/plan/assemble.d.ts.map +1 -0
- package/dist/src/collections/plan/assemble.js +187 -0
- package/dist/src/collections/plan/assemble.js.map +1 -0
- package/dist/src/collections/plan/builders.d.ts +612 -0
- package/dist/src/collections/plan/builders.d.ts.map +1 -0
- package/dist/src/collections/plan/builders.js +543 -0
- package/dist/src/collections/plan/builders.js.map +1 -0
- package/dist/src/collections/plan/data-forms.d.ts +332 -0
- package/dist/src/collections/plan/data-forms.d.ts.map +1 -0
- package/dist/src/collections/plan/data-forms.js +212 -0
- package/dist/src/collections/plan/data-forms.js.map +1 -0
- package/dist/src/collections/plan/factories.d.ts +338 -0
- package/dist/src/collections/plan/factories.d.ts.map +1 -0
- package/dist/src/collections/plan/factories.js +414 -0
- package/dist/src/collections/plan/factories.js.map +1 -0
- package/dist/src/collections/plan/index.d.ts +271 -0
- package/dist/src/collections/plan/index.d.ts.map +1 -0
- package/dist/src/collections/plan/index.js +162 -0
- package/dist/src/collections/plan/index.js.map +1 -0
- package/dist/src/collections/plan/ir.d.ts +3496 -0
- package/dist/src/collections/plan/ir.d.ts.map +1 -0
- package/dist/src/collections/plan/ir.js +83 -0
- package/dist/src/collections/plan/ir.js.map +1 -0
- package/dist/src/collections/plan/pick.d.ts +115 -0
- package/dist/src/collections/plan/pick.d.ts.map +1 -0
- package/dist/src/collections/plan/pick.js +193 -0
- package/dist/src/collections/plan/pick.js.map +1 -0
- package/dist/src/collections/plan/root.d.ts +210 -0
- package/dist/src/collections/plan/root.d.ts.map +1 -0
- package/dist/src/collections/plan/root.js +146 -0
- package/dist/src/collections/plan/root.js.map +1 -0
- package/dist/src/collections/plan/series.d.ts +11890 -0
- package/dist/src/collections/plan/series.d.ts.map +1 -0
- package/dist/src/collections/plan/series.js +412 -0
- package/dist/src/collections/plan/series.js.map +1 -0
- package/dist/src/collections/plan/types.d.ts +9291 -0
- package/dist/src/collections/plan/types.d.ts.map +1 -0
- package/dist/src/collections/plan/types.js +940 -0
- package/dist/src/collections/plan/types.js.map +1 -0
- package/dist/src/collections/roster/index.d.ts +4 -4
- package/dist/src/collections/roster/index.d.ts.map +1 -1
- package/dist/src/collections/roster/index.js +1 -1
- package/dist/src/collections/roster/index.js.map +1 -1
- package/dist/src/collections/roster/types.d.ts +1 -1
- package/dist/src/collections/roster/types.d.ts.map +1 -1
- package/dist/src/collections/roster/types.js +4 -3
- package/dist/src/collections/roster/types.js.map +1 -1
- package/dist/src/collections/table/index.d.ts +70 -2
- package/dist/src/collections/table/index.d.ts.map +1 -1
- package/dist/src/collections/table/index.js +55 -11
- package/dist/src/collections/table/index.js.map +1 -1
- package/dist/src/collections/table/types.d.ts +1 -1
- package/dist/src/collections/table/types.d.ts.map +1 -1
- package/dist/src/component.d.ts +3898 -1339
- package/dist/src/component.d.ts.map +1 -1
- package/dist/src/component.js +83 -146
- package/dist/src/component.js.map +1 -1
- package/dist/src/container/card/types.d.ts +1 -1
- package/dist/src/container/card/types.d.ts.map +1 -1
- package/dist/src/contracts/approval.d.ts +117 -0
- package/dist/src/contracts/approval.d.ts.map +1 -0
- package/dist/src/contracts/approval.js +105 -0
- package/dist/src/contracts/approval.js.map +1 -0
- package/dist/src/contracts/drag.d.ts +3 -3
- package/dist/src/contracts/drag.d.ts.map +1 -1
- package/dist/src/contracts/drag.js +23 -10
- package/dist/src/contracts/drag.js.map +1 -1
- package/dist/src/contracts/index.d.ts +4 -1
- package/dist/src/contracts/index.d.ts.map +1 -1
- package/dist/src/contracts/index.js +4 -1
- package/dist/src/contracts/index.js.map +1 -1
- package/dist/src/contracts/pick.d.ts +705 -0
- package/dist/src/contracts/pick.d.ts.map +1 -0
- package/dist/src/contracts/pick.js +360 -0
- package/dist/src/contracts/pick.js.map +1 -0
- package/dist/src/contracts/review.d.ts +7 -99
- package/dist/src/contracts/review.d.ts.map +1 -1
- package/dist/src/contracts/review.js +11 -85
- package/dist/src/contracts/review.js.map +1 -1
- package/dist/src/contracts/slice-affordances.d.ts +13 -4
- package/dist/src/contracts/slice-affordances.d.ts.map +1 -1
- package/dist/src/contracts/slice-affordances.js +13 -3
- package/dist/src/contracts/slice-affordances.js.map +1 -1
- package/dist/src/contracts/source.d.ts +432 -0
- package/dist/src/contracts/source.d.ts.map +1 -0
- package/dist/src/contracts/source.js +505 -0
- package/dist/src/contracts/source.js.map +1 -0
- package/dist/src/contracts/states.d.ts +130 -0
- package/dist/src/contracts/states.d.ts.map +1 -1
- package/dist/src/contracts/states.js +122 -0
- package/dist/src/contracts/states.js.map +1 -1
- package/dist/src/contracts/time.d.ts +76 -0
- package/dist/src/contracts/time.d.ts.map +1 -0
- package/dist/src/contracts/time.js +78 -0
- package/dist/src/contracts/time.js.map +1 -0
- package/dist/src/display/trace/types.d.ts +1 -1
- package/dist/src/display/trace/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +10 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +22 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +5 -3
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +4 -3
- package/dist/src/internal.js.map +1 -1
- package/dist/src/layout/dock/index.d.ts +1 -1
- package/dist/src/layout/dock/index.js +1 -1
- package/dist/src/layout/index.d.ts +0 -1
- package/dist/src/layout/index.d.ts.map +1 -1
- package/dist/src/layout/index.js +0 -1
- package/dist/src/layout/index.js.map +1 -1
- package/dist/src/overlays/drawer/types.d.ts +1 -1
- package/dist/src/overlays/drawer/types.d.ts.map +1 -1
- package/dist/src/pick/index.d.ts +443 -0
- package/dist/src/pick/index.d.ts.map +1 -0
- package/dist/src/pick/index.js +64 -0
- package/dist/src/pick/index.js.map +1 -0
- package/dist/src/pick/panel/index.d.ts +64 -0
- package/dist/src/pick/panel/index.d.ts.map +1 -0
- package/dist/src/pick/panel/index.js +61 -0
- package/dist/src/pick/panel/index.js.map +1 -0
- package/dist/src/platform/slice/index.d.ts +291 -0
- package/dist/src/platform/slice/index.d.ts.map +1 -1
- package/dist/src/platform/slice/index.js +16 -0
- package/dist/src/platform/slice/index.js.map +1 -1
- package/dist/src/runtime/collections/deck.d.ts +29 -0
- package/dist/src/runtime/collections/deck.d.ts.map +1 -1
- package/dist/src/runtime/collections/index.d.ts +1 -2
- package/dist/src/runtime/collections/index.d.ts.map +1 -1
- package/dist/src/runtime/collections/index.js +1 -2
- package/dist/src/runtime/collections/index.js.map +1 -1
- package/dist/src/runtime/collections/library.d.ts +1 -1
- package/dist/src/runtime/collections/library.js +1 -1
- package/dist/src/runtime/collections/plan.d.ts +98 -0
- package/dist/src/runtime/collections/plan.d.ts.map +1 -0
- package/dist/src/runtime/collections/plan.js +98 -0
- package/dist/src/runtime/collections/plan.js.map +1 -0
- package/dist/src/runtime/collections/schematic.d.ts +1 -1
- package/dist/src/runtime/collections/schematic.js +1 -1
- package/dist/src/runtime/collections/table.d.ts +9 -1
- package/dist/src/runtime/collections/table.d.ts.map +1 -1
- package/dist/src/runtime/collections/table.js +1 -7
- package/dist/src/runtime/collections/table.js.map +1 -1
- package/dist/src/runtime/layout/dock.d.ts +2 -2
- package/dist/src/runtime/layout/dock.js +2 -2
- package/dist/src/runtime/layout/index.d.ts +0 -1
- package/dist/src/runtime/layout/index.d.ts.map +1 -1
- package/dist/src/runtime/layout/index.js +0 -1
- package/dist/src/runtime/layout/index.js.map +1 -1
- package/dist/src/shared/plot-gutter.d.ts +6 -23
- package/dist/src/shared/plot-gutter.d.ts.map +1 -1
- package/dist/src/shared/plot-gutter.js +6 -19
- package/dist/src/shared/plot-gutter.js.map +1 -1
- package/dist/src/shared/reify.d.ts +47 -4
- package/dist/src/shared/reify.d.ts.map +1 -1
- package/dist/src/shared/reify.js +62 -4
- package/dist/src/shared/reify.js.map +1 -1
- package/dist/src/slice/breakdown/index.d.ts +27 -0
- package/dist/src/slice/breakdown/index.d.ts.map +1 -1
- package/dist/src/slice/breakdown/types.d.ts +27 -0
- package/dist/src/slice/breakdown/types.d.ts.map +1 -1
- package/dist/src/slice/cohort/index.d.ts +54 -0
- package/dist/src/slice/cohort/index.d.ts.map +1 -1
- package/dist/src/slice/cohort/types.d.ts +27 -0
- package/dist/src/slice/cohort/types.d.ts.map +1 -1
- package/dist/src/slice/filter/index.d.ts +27 -0
- package/dist/src/slice/filter/index.d.ts.map +1 -1
- package/dist/src/slice/filter/types.d.ts +27 -0
- package/dist/src/slice/filter/types.d.ts.map +1 -1
- package/dist/src/slice/index.d.ts +405 -0
- package/dist/src/slice/index.d.ts.map +1 -1
- package/dist/src/slice/legend/index.d.ts +27 -0
- package/dist/src/slice/legend/index.d.ts.map +1 -1
- package/dist/src/slice/legend/types.d.ts +27 -0
- package/dist/src/slice/legend/types.d.ts.map +1 -1
- package/dist/src/slice/range/index.d.ts +60 -18
- package/dist/src/slice/range/index.d.ts.map +1 -1
- package/dist/src/slice/range/index.js +9 -1
- package/dist/src/slice/range/index.js.map +1 -1
- package/dist/src/slice/range/types.d.ts +63 -22
- package/dist/src/slice/range/types.d.ts.map +1 -1
- package/dist/src/slice/range/types.js +12 -5
- package/dist/src/slice/range/types.js.map +1 -1
- package/dist/src/slice/search/index.d.ts +27 -0
- package/dist/src/slice/search/index.d.ts.map +1 -1
- package/dist/src/slice/search/types.d.ts +27 -0
- package/dist/src/slice/search/types.d.ts.map +1 -1
- package/dist/src/slice/summary/index.d.ts +27 -0
- package/dist/src/slice/summary/index.d.ts.map +1 -1
- package/dist/src/slice/summary/types.d.ts +27 -0
- package/dist/src/slice/summary/types.d.ts.map +1 -1
- package/dist/src/style/content.d.ts +4 -6
- package/dist/src/style/content.d.ts.map +1 -1
- package/dist/src/style/content.js +4 -6
- package/dist/src/style/content.js.map +1 -1
- package/dist/src/style/scheme.js +1 -1
- package/dist/src/style/scheme.js.map +1 -1
- package/dist/test/collections/index.d.ts +2 -2
- package/dist/test/collections/index.d.ts.map +1 -1
- package/dist/test/collections/index.js +2 -2
- package/dist/test/collections/index.js.map +1 -1
- package/dist/test/collections/paged-source.examples.d.ts +9 -0
- package/dist/test/collections/paged-source.examples.d.ts.map +1 -0
- package/dist/test/collections/paged-source.examples.js +136 -0
- package/dist/test/collections/paged-source.examples.js.map +1 -0
- package/dist/test/collections/plan.examples.d.ts +125 -0
- package/dist/test/collections/plan.examples.d.ts.map +1 -0
- package/dist/test/collections/plan.examples.js +2939 -0
- package/dist/test/collections/plan.examples.js.map +1 -0
- package/dist/test/contracts/pick.examples.d.ts +6 -0
- package/dist/test/contracts/pick.examples.d.ts.map +1 -0
- package/dist/test/contracts/pick.examples.js +89 -0
- package/dist/test/contracts/pick.examples.js.map +1 -0
- package/dist/test/layout/dock.examples.d.ts +4 -4
- package/dist/test/layout/dock.examples.d.ts.map +1 -1
- package/dist/test/layout/dock.examples.js +34 -16
- package/dist/test/layout/dock.examples.js.map +1 -1
- package/dist/test/slice/slice.examples.d.ts +2 -1
- package/dist/test/slice/slice.examples.d.ts.map +1 -1
- package/dist/test/slice/slice.examples.js +67 -9
- package/dist/test/slice/slice.examples.js.map +1 -1
- package/package.json +3 -3
- package/dist/src/collections/gantt/index.d.ts +0 -377
- package/dist/src/collections/gantt/index.d.ts.map +0 -1
- package/dist/src/collections/gantt/index.js +0 -896
- package/dist/src/collections/gantt/index.js.map +0 -1
- package/dist/src/collections/gantt/types.d.ts +0 -353
- package/dist/src/collections/gantt/types.d.ts.map +0 -1
- package/dist/src/collections/gantt/types.js +0 -207
- package/dist/src/collections/gantt/types.js.map +0 -1
- package/dist/src/collections/planner/index.d.ts +0 -624
- package/dist/src/collections/planner/index.d.ts.map +0 -1
- package/dist/src/collections/planner/index.js +0 -941
- package/dist/src/collections/planner/index.js.map +0 -1
- package/dist/src/collections/planner/types.d.ts +0 -615
- package/dist/src/collections/planner/types.d.ts.map +0 -1
- package/dist/src/collections/planner/types.js +0 -423
- package/dist/src/collections/planner/types.js.map +0 -1
- package/dist/src/layout/aligned-stack/index.d.ts +0 -101
- package/dist/src/layout/aligned-stack/index.d.ts.map +0 -1
- package/dist/src/layout/aligned-stack/index.js +0 -105
- package/dist/src/layout/aligned-stack/index.js.map +0 -1
- package/dist/src/layout/aligned-stack/types.d.ts +0 -50
- package/dist/src/layout/aligned-stack/types.d.ts.map +0 -1
- package/dist/src/layout/aligned-stack/types.js +0 -24
- package/dist/src/layout/aligned-stack/types.js.map +0 -1
- package/dist/src/runtime/collections/gantt.d.ts +0 -67
- package/dist/src/runtime/collections/gantt.d.ts.map +0 -1
- package/dist/src/runtime/collections/gantt.js +0 -58
- package/dist/src/runtime/collections/gantt.js.map +0 -1
- package/dist/src/runtime/collections/planner.d.ts +0 -80
- package/dist/src/runtime/collections/planner.d.ts.map +0 -1
- package/dist/src/runtime/collections/planner.js +0 -76
- package/dist/src/runtime/collections/planner.js.map +0 -1
- package/dist/src/runtime/layout/aligned-stack.d.ts +0 -38
- package/dist/src/runtime/layout/aligned-stack.d.ts.map +0 -1
- package/dist/src/runtime/layout/aligned-stack.js +0 -36
- package/dist/src/runtime/layout/aligned-stack.js.map +0 -1
- package/dist/test/collections/gantt.examples.d.ts +0 -33
- package/dist/test/collections/gantt.examples.d.ts.map +0 -1
- package/dist/test/collections/gantt.examples.js +0 -359
- package/dist/test/collections/gantt.examples.js.map +0 -1
- package/dist/test/collections/planner.examples.d.ts +0 -47
- package/dist/test/collections/planner.examples.d.ts.map +0 -1
- package/dist/test/collections/planner.examples.js +0 -546
- package/dist/test/collections/planner.examples.js.map +0 -1
- package/dist/test/layout/aligned-stack.examples.d.ts +0 -25
- package/dist/test/layout/aligned-stack.examples.d.ts.map +0 -1
- package/dist/test/layout/aligned-stack.examples.js +0 -294
- package/dist/test/layout/aligned-stack.examples.js.map +0 -1
|
@@ -0,0 +1,705 @@
|
|
|
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
|
+
/**
|
|
6
|
+
* The PICK contract (#590) — which of a component's declared things are shown.
|
|
7
|
+
*
|
|
8
|
+
* A Plan picks row series, a Table would pick columns, a Chart layers. The
|
|
9
|
+
* operation is the same one every time: a library of identified things, some
|
|
10
|
+
* switched off, the survivors fed back to the component. This module is the one
|
|
11
|
+
* place that vocabulary is spelled; `Pick.Panel` renders it and never imports a
|
|
12
|
+
* component, exactly as `Slice.Rail` mounts anywhere.
|
|
13
|
+
*
|
|
14
|
+
* # Why it splits in two
|
|
15
|
+
*
|
|
16
|
+
* A `UIComponentType` arm must be a CLOSED East type, so the panel cannot ride
|
|
17
|
+
* a generic. That is not a stylistic call — it is why {@link SliceLegendType}
|
|
18
|
+
* carries `SliceBindType` and not `SliceBindType<T>`. Pick therefore splits at
|
|
19
|
+
* exactly the point where the item type stops mattering:
|
|
20
|
+
*
|
|
21
|
+
* - {@link PickBindType} is NON-GENERIC — a key, a state binding, and a list of
|
|
22
|
+
* plain-data descriptors. It is the only part that enters the IR, so ONE
|
|
23
|
+
* panel arm serves every component that ever adopts this.
|
|
24
|
+
* - {@link PickHandleType} is the AUTHOR's handle, and never enters the IR.
|
|
25
|
+
* `I` rides STRUCTURALLY (in `all` and `id`), the way `C` rides in
|
|
26
|
+
* {@link PagedSourceType}'s `page` signature, so a handle bound to one item
|
|
27
|
+
* type is a compile error against a component expecting another.
|
|
28
|
+
*
|
|
29
|
+
* # Why no platform function
|
|
30
|
+
*
|
|
31
|
+
* `state` is literally {@link State.bind}'s `{read, write, has}` pinned at
|
|
32
|
+
* {@link PickStateType}. Pick declares nothing of its own, so it needs neither
|
|
33
|
+
* of the two re-export hops in `east-ui-components` nor the two hard-coded
|
|
34
|
+
* arrays in `e3-ui-components` — the documented "ships broken while tests pass"
|
|
35
|
+
* trap. It also means {@link Pick.active} is provable in a plain `describeEast`
|
|
36
|
+
* spec rather than only in a browser.
|
|
37
|
+
*
|
|
38
|
+
* # Why the state is what is HIDDEN
|
|
39
|
+
*
|
|
40
|
+
* Storing the active list looks equivalent and is not: a thing the author adds
|
|
41
|
+
* in a later release is absent from every user's persisted state, so it
|
|
42
|
+
* silently never appears. Storing what is switched OFF means new arrivals show
|
|
43
|
+
* by default and only explicit removals persist — the same reason `Slice`
|
|
44
|
+
* stores `visible: Option<Set>` with `none` meaning all, minus the `Option`,
|
|
45
|
+
* because an empty HIDDEN list is unambiguous where an empty VISIBLE set is not.
|
|
46
|
+
*
|
|
47
|
+
* # What this contract deliberately does NOT do
|
|
48
|
+
*
|
|
49
|
+
* It does not ORDER. On a key-ordered surface there is nothing for an order to
|
|
50
|
+
* order: a Plan's rows sit in canonical KEY order (`PlanRowsCollectionType` is
|
|
51
|
+
* a `Dict`, and `applySeries` unions with LAST_WINS), so a series' position in
|
|
52
|
+
* the list resolves key collisions and never row position. The panel's own list
|
|
53
|
+
* order is already `all`'s array order. Ordering becomes real for an adopter
|
|
54
|
+
* whose collection is positional — a Table's columns — and belongs to that
|
|
55
|
+
* adopter, not here.
|
|
56
|
+
*
|
|
57
|
+
* @packageDocumentation
|
|
58
|
+
*/
|
|
59
|
+
import { type EastType, type ExprType, type SubtypeExprOrValue, ArrayType, BooleanType, FunctionType, IntegerType, NullType, OptionType, StringType, StructType } from "@elaraai/east";
|
|
60
|
+
import { IconType } from "../display/icon/types.js";
|
|
61
|
+
/**
|
|
62
|
+
* The pick state — the ids switched OFF. An empty list shows everything.
|
|
63
|
+
*
|
|
64
|
+
* @remarks
|
|
65
|
+
* Deliberately the hidden ids rather than the active ones, and deliberately a
|
|
66
|
+
* bare `Array<String>` rather than a struct: there is exactly one fact to
|
|
67
|
+
* store. See this module's overview for why hidden beats active.
|
|
68
|
+
*
|
|
69
|
+
* Duplicates are harmless ({@link Pick.active} tests membership through a set)
|
|
70
|
+
* and an id that no longer names anything is ignored, so persisted state
|
|
71
|
+
* survives an author renaming or removing an item.
|
|
72
|
+
*/
|
|
73
|
+
export declare const PickStateType: ArrayType<StringType>;
|
|
74
|
+
/** Type alias for {@link PickStateType}. */
|
|
75
|
+
export type PickStateType = typeof PickStateType;
|
|
76
|
+
/**
|
|
77
|
+
* One pickable thing as the PANEL sees it — plain data, no item type.
|
|
78
|
+
*
|
|
79
|
+
* @remarks
|
|
80
|
+
* This is the whole of what a panel can render, which is what keeps the panel
|
|
81
|
+
* component-agnostic: it never learns what a "series" or a "column" is.
|
|
82
|
+
*
|
|
83
|
+
* @property id - Stable identity — what the state addresses and what `id` returns; must be unique across the list
|
|
84
|
+
* @property title - The name a user reads (`"Machine jobs"`)
|
|
85
|
+
* @property subtitle - The muted role line (`"one row per machine"`); `none` ⇒ one-line row
|
|
86
|
+
* @property icon - The leading glyph; `none` ⇒ the panel prints no icon
|
|
87
|
+
* @property count - How many things this yields (`"24 rs"`); `none` ⇒ no count printed, which is what a paged source must say
|
|
88
|
+
* @property narrowed - `true` ⇒ the count is a NARROWED count, printed in the brand with a dot
|
|
89
|
+
*/
|
|
90
|
+
export declare const PickItemType: StructType<{
|
|
91
|
+
readonly id: StringType;
|
|
92
|
+
readonly title: StringType;
|
|
93
|
+
readonly subtitle: OptionType<StringType>;
|
|
94
|
+
readonly icon: OptionType<StructType<{
|
|
95
|
+
readonly name: StringType;
|
|
96
|
+
readonly prefix: StringType;
|
|
97
|
+
readonly label: OptionType<StringType>;
|
|
98
|
+
readonly style: OptionType<StructType<{
|
|
99
|
+
readonly size: OptionType<import("@elaraai/east").VariantType<{
|
|
100
|
+
readonly xs: NullType;
|
|
101
|
+
readonly sm: NullType;
|
|
102
|
+
readonly md: NullType;
|
|
103
|
+
readonly lg: NullType;
|
|
104
|
+
readonly xl: NullType;
|
|
105
|
+
readonly "2xl": NullType;
|
|
106
|
+
}>>;
|
|
107
|
+
readonly variant: OptionType<import("@elaraai/east").VariantType<{
|
|
108
|
+
readonly solid: NullType;
|
|
109
|
+
readonly regular: NullType;
|
|
110
|
+
readonly light: NullType;
|
|
111
|
+
readonly thin: NullType;
|
|
112
|
+
readonly brands: NullType;
|
|
113
|
+
}>>;
|
|
114
|
+
readonly color: OptionType<StringType>;
|
|
115
|
+
readonly background: OptionType<StringType>;
|
|
116
|
+
readonly colorPalette: OptionType<import("@elaraai/east").VariantType<{
|
|
117
|
+
readonly brand: NullType;
|
|
118
|
+
readonly gray: NullType;
|
|
119
|
+
readonly red: NullType;
|
|
120
|
+
readonly orange: NullType;
|
|
121
|
+
readonly yellow: NullType;
|
|
122
|
+
readonly green: NullType;
|
|
123
|
+
readonly teal: NullType;
|
|
124
|
+
readonly blue: NullType;
|
|
125
|
+
readonly cyan: NullType;
|
|
126
|
+
readonly purple: NullType;
|
|
127
|
+
readonly pink: NullType;
|
|
128
|
+
readonly success: NullType;
|
|
129
|
+
readonly warning: NullType;
|
|
130
|
+
readonly danger: NullType;
|
|
131
|
+
readonly info: NullType;
|
|
132
|
+
readonly neutral: NullType;
|
|
133
|
+
}>>;
|
|
134
|
+
readonly opacity: OptionType<import("@elaraai/east").FloatType>;
|
|
135
|
+
readonly borderRadius: OptionType<StringType>;
|
|
136
|
+
readonly overflow: OptionType<import("@elaraai/east").VariantType<{
|
|
137
|
+
readonly visible: NullType;
|
|
138
|
+
readonly hidden: NullType;
|
|
139
|
+
readonly scroll: NullType;
|
|
140
|
+
readonly auto: NullType;
|
|
141
|
+
}>>;
|
|
142
|
+
readonly overflowX: OptionType<import("@elaraai/east").VariantType<{
|
|
143
|
+
readonly visible: NullType;
|
|
144
|
+
readonly hidden: NullType;
|
|
145
|
+
readonly scroll: NullType;
|
|
146
|
+
readonly auto: NullType;
|
|
147
|
+
}>>;
|
|
148
|
+
readonly overflowY: OptionType<import("@elaraai/east").VariantType<{
|
|
149
|
+
readonly visible: NullType;
|
|
150
|
+
readonly hidden: NullType;
|
|
151
|
+
readonly scroll: NullType;
|
|
152
|
+
readonly auto: NullType;
|
|
153
|
+
}>>;
|
|
154
|
+
readonly width: OptionType<StringType>;
|
|
155
|
+
readonly height: OptionType<StringType>;
|
|
156
|
+
readonly minWidth: OptionType<StringType>;
|
|
157
|
+
readonly minHeight: OptionType<StringType>;
|
|
158
|
+
readonly maxWidth: OptionType<StringType>;
|
|
159
|
+
readonly maxHeight: OptionType<StringType>;
|
|
160
|
+
readonly padding: OptionType<StructType<{
|
|
161
|
+
readonly top: OptionType<StringType>;
|
|
162
|
+
readonly right: OptionType<StringType>;
|
|
163
|
+
readonly bottom: OptionType<StringType>;
|
|
164
|
+
readonly left: OptionType<StringType>;
|
|
165
|
+
}>>;
|
|
166
|
+
readonly margin: OptionType<StructType<{
|
|
167
|
+
readonly top: OptionType<StringType>;
|
|
168
|
+
readonly right: OptionType<StringType>;
|
|
169
|
+
readonly bottom: OptionType<StringType>;
|
|
170
|
+
readonly left: OptionType<StringType>;
|
|
171
|
+
}>>;
|
|
172
|
+
}>>;
|
|
173
|
+
}>>;
|
|
174
|
+
readonly count: OptionType<IntegerType>;
|
|
175
|
+
readonly narrowed: BooleanType;
|
|
176
|
+
}>;
|
|
177
|
+
/** Type alias for {@link PickItemType}. */
|
|
178
|
+
export type PickItemType = typeof PickItemType;
|
|
179
|
+
/**
|
|
180
|
+
* The state binding a pick carries — EXACTLY {@link State.bind}'s return type,
|
|
181
|
+
* pinned at {@link PickStateType}.
|
|
182
|
+
*
|
|
183
|
+
* @remarks
|
|
184
|
+
* Field order matters and is `read` / `write` / `has`, because East struct
|
|
185
|
+
* subtyping is exact — same arity, same names, same order. Declaring it here
|
|
186
|
+
* rather than re-deriving it means a change to `State.bind`'s shape fails this
|
|
187
|
+
* file's build rather than something downstream.
|
|
188
|
+
*
|
|
189
|
+
* Nothing bespoke is introduced: per #106 a bind handle's methods are
|
|
190
|
+
* IR-bearing East functions over plain-data primitives, so a pick handle is
|
|
191
|
+
* ordinary serializable East data and `decodeBeast2For({ platform })` re-binds
|
|
192
|
+
* it to the decoder's store.
|
|
193
|
+
*
|
|
194
|
+
* @property read - The current state; TRACKS the key, so it belongs in a reactive evaluation
|
|
195
|
+
* @property write - Replace the state
|
|
196
|
+
* @property has - Whether the key is set
|
|
197
|
+
*/
|
|
198
|
+
export declare const PickStateHandleType: StructType<{
|
|
199
|
+
readonly read: FunctionType<[], ArrayType<StringType>>;
|
|
200
|
+
readonly write: FunctionType<[ArrayType<StringType>], NullType>;
|
|
201
|
+
readonly has: FunctionType<[], BooleanType>;
|
|
202
|
+
}>;
|
|
203
|
+
/** Type alias for {@link PickStateHandleType}. */
|
|
204
|
+
export type PickStateHandleType = typeof PickStateHandleType;
|
|
205
|
+
/**
|
|
206
|
+
* THE CONTRACT — what a panel stores and what any component's IR may hold.
|
|
207
|
+
*
|
|
208
|
+
* @remarks
|
|
209
|
+
* Non-generic by construction, so it embeds directly in a `UIComponentType`
|
|
210
|
+
* arm. A renderer needs nothing else: `key` to self-subscribe, `state` to read
|
|
211
|
+
* and write, `items` to draw.
|
|
212
|
+
*
|
|
213
|
+
* `items` is an EXPRESSION (`all.map(describe)`), not a build-time snapshot, so
|
|
214
|
+
* a count derived from data re-evaluates every reactive frame instead of
|
|
215
|
+
* freezing at authoring time.
|
|
216
|
+
*
|
|
217
|
+
* @property key - The store key; renderers self-subscribe on it, like `SliceBindType.key`
|
|
218
|
+
* @property state - The {@link PickStateHandleType} binding
|
|
219
|
+
* @property items - Every pickable thing, in declaration order
|
|
220
|
+
*/
|
|
221
|
+
export declare const PickBindType: StructType<{
|
|
222
|
+
readonly key: StringType;
|
|
223
|
+
readonly state: StructType<{
|
|
224
|
+
readonly read: FunctionType<[], ArrayType<StringType>>;
|
|
225
|
+
readonly write: FunctionType<[ArrayType<StringType>], NullType>;
|
|
226
|
+
readonly has: FunctionType<[], BooleanType>;
|
|
227
|
+
}>;
|
|
228
|
+
readonly items: ArrayType<StructType<{
|
|
229
|
+
readonly id: StringType;
|
|
230
|
+
readonly title: StringType;
|
|
231
|
+
readonly subtitle: OptionType<StringType>;
|
|
232
|
+
readonly icon: OptionType<StructType<{
|
|
233
|
+
readonly name: StringType;
|
|
234
|
+
readonly prefix: StringType;
|
|
235
|
+
readonly label: OptionType<StringType>;
|
|
236
|
+
readonly style: OptionType<StructType<{
|
|
237
|
+
readonly size: OptionType<import("@elaraai/east").VariantType<{
|
|
238
|
+
readonly xs: NullType;
|
|
239
|
+
readonly sm: NullType;
|
|
240
|
+
readonly md: NullType;
|
|
241
|
+
readonly lg: NullType;
|
|
242
|
+
readonly xl: NullType;
|
|
243
|
+
readonly "2xl": NullType;
|
|
244
|
+
}>>;
|
|
245
|
+
readonly variant: OptionType<import("@elaraai/east").VariantType<{
|
|
246
|
+
readonly solid: NullType;
|
|
247
|
+
readonly regular: NullType;
|
|
248
|
+
readonly light: NullType;
|
|
249
|
+
readonly thin: NullType;
|
|
250
|
+
readonly brands: NullType;
|
|
251
|
+
}>>;
|
|
252
|
+
readonly color: OptionType<StringType>;
|
|
253
|
+
readonly background: OptionType<StringType>;
|
|
254
|
+
readonly colorPalette: OptionType<import("@elaraai/east").VariantType<{
|
|
255
|
+
readonly brand: NullType;
|
|
256
|
+
readonly gray: NullType;
|
|
257
|
+
readonly red: NullType;
|
|
258
|
+
readonly orange: NullType;
|
|
259
|
+
readonly yellow: NullType;
|
|
260
|
+
readonly green: NullType;
|
|
261
|
+
readonly teal: NullType;
|
|
262
|
+
readonly blue: NullType;
|
|
263
|
+
readonly cyan: NullType;
|
|
264
|
+
readonly purple: NullType;
|
|
265
|
+
readonly pink: NullType;
|
|
266
|
+
readonly success: NullType;
|
|
267
|
+
readonly warning: NullType;
|
|
268
|
+
readonly danger: NullType;
|
|
269
|
+
readonly info: NullType;
|
|
270
|
+
readonly neutral: NullType;
|
|
271
|
+
}>>;
|
|
272
|
+
readonly opacity: OptionType<import("@elaraai/east").FloatType>;
|
|
273
|
+
readonly borderRadius: OptionType<StringType>;
|
|
274
|
+
readonly overflow: OptionType<import("@elaraai/east").VariantType<{
|
|
275
|
+
readonly visible: NullType;
|
|
276
|
+
readonly hidden: NullType;
|
|
277
|
+
readonly scroll: NullType;
|
|
278
|
+
readonly auto: NullType;
|
|
279
|
+
}>>;
|
|
280
|
+
readonly overflowX: OptionType<import("@elaraai/east").VariantType<{
|
|
281
|
+
readonly visible: NullType;
|
|
282
|
+
readonly hidden: NullType;
|
|
283
|
+
readonly scroll: NullType;
|
|
284
|
+
readonly auto: NullType;
|
|
285
|
+
}>>;
|
|
286
|
+
readonly overflowY: OptionType<import("@elaraai/east").VariantType<{
|
|
287
|
+
readonly visible: NullType;
|
|
288
|
+
readonly hidden: NullType;
|
|
289
|
+
readonly scroll: NullType;
|
|
290
|
+
readonly auto: NullType;
|
|
291
|
+
}>>;
|
|
292
|
+
readonly width: OptionType<StringType>;
|
|
293
|
+
readonly height: OptionType<StringType>;
|
|
294
|
+
readonly minWidth: OptionType<StringType>;
|
|
295
|
+
readonly minHeight: OptionType<StringType>;
|
|
296
|
+
readonly maxWidth: OptionType<StringType>;
|
|
297
|
+
readonly maxHeight: OptionType<StringType>;
|
|
298
|
+
readonly padding: OptionType<StructType<{
|
|
299
|
+
readonly top: OptionType<StringType>;
|
|
300
|
+
readonly right: OptionType<StringType>;
|
|
301
|
+
readonly bottom: OptionType<StringType>;
|
|
302
|
+
readonly left: OptionType<StringType>;
|
|
303
|
+
}>>;
|
|
304
|
+
readonly margin: OptionType<StructType<{
|
|
305
|
+
readonly top: OptionType<StringType>;
|
|
306
|
+
readonly right: OptionType<StringType>;
|
|
307
|
+
readonly bottom: OptionType<StringType>;
|
|
308
|
+
readonly left: OptionType<StringType>;
|
|
309
|
+
}>>;
|
|
310
|
+
}>>;
|
|
311
|
+
}>>;
|
|
312
|
+
readonly count: OptionType<IntegerType>;
|
|
313
|
+
readonly narrowed: BooleanType;
|
|
314
|
+
}>>;
|
|
315
|
+
}>;
|
|
316
|
+
/** Type alias for {@link PickBindType}. */
|
|
317
|
+
export type PickBindType = typeof PickBindType;
|
|
318
|
+
/**
|
|
319
|
+
* The `Pick.Panel` component payload — the contract plus the author's noun.
|
|
320
|
+
*
|
|
321
|
+
* @remarks
|
|
322
|
+
* Defined HERE rather than inline in `component.ts` because it carries no
|
|
323
|
+
* `UIComponentType`: only arms that need the recursion `node` for children have
|
|
324
|
+
* to be written inline (and then hand-synced). `SliceLegendType` is legal as a
|
|
325
|
+
* single shared export for exactly the same reason, and this follows it.
|
|
326
|
+
*
|
|
327
|
+
* `persist` is deliberately absent. The slice's storage vocabulary
|
|
328
|
+
* (`SlicePersistType`) lives in `platform/slice`, which imports FROM
|
|
329
|
+
* `contracts/` — referencing it here would close an import cycle. Persistence
|
|
330
|
+
* beyond the store's own lifetime is a separate decision, made where the
|
|
331
|
+
* dependency runs the right way.
|
|
332
|
+
*
|
|
333
|
+
* @property pick - The bound contract ({@link PickBindType})
|
|
334
|
+
* @property title - The author's noun for the collection ("Series" / "Columns")
|
|
335
|
+
*/
|
|
336
|
+
export declare const PickPanelType: StructType<{
|
|
337
|
+
readonly pick: StructType<{
|
|
338
|
+
readonly key: StringType;
|
|
339
|
+
readonly state: StructType<{
|
|
340
|
+
readonly read: FunctionType<[], ArrayType<StringType>>;
|
|
341
|
+
readonly write: FunctionType<[ArrayType<StringType>], NullType>;
|
|
342
|
+
readonly has: FunctionType<[], BooleanType>;
|
|
343
|
+
}>;
|
|
344
|
+
readonly items: ArrayType<StructType<{
|
|
345
|
+
readonly id: StringType;
|
|
346
|
+
readonly title: StringType;
|
|
347
|
+
readonly subtitle: OptionType<StringType>;
|
|
348
|
+
readonly icon: OptionType<StructType<{
|
|
349
|
+
readonly name: StringType;
|
|
350
|
+
readonly prefix: StringType;
|
|
351
|
+
readonly label: OptionType<StringType>;
|
|
352
|
+
readonly style: OptionType<StructType<{
|
|
353
|
+
readonly size: OptionType<import("@elaraai/east").VariantType<{
|
|
354
|
+
readonly xs: NullType;
|
|
355
|
+
readonly sm: NullType;
|
|
356
|
+
readonly md: NullType;
|
|
357
|
+
readonly lg: NullType;
|
|
358
|
+
readonly xl: NullType;
|
|
359
|
+
readonly "2xl": NullType;
|
|
360
|
+
}>>;
|
|
361
|
+
readonly variant: OptionType<import("@elaraai/east").VariantType<{
|
|
362
|
+
readonly solid: NullType;
|
|
363
|
+
readonly regular: NullType;
|
|
364
|
+
readonly light: NullType;
|
|
365
|
+
readonly thin: NullType;
|
|
366
|
+
readonly brands: NullType;
|
|
367
|
+
}>>;
|
|
368
|
+
readonly color: OptionType<StringType>;
|
|
369
|
+
readonly background: OptionType<StringType>;
|
|
370
|
+
readonly colorPalette: OptionType<import("@elaraai/east").VariantType<{
|
|
371
|
+
readonly brand: NullType;
|
|
372
|
+
readonly gray: NullType;
|
|
373
|
+
readonly red: NullType;
|
|
374
|
+
readonly orange: NullType;
|
|
375
|
+
readonly yellow: NullType;
|
|
376
|
+
readonly green: NullType;
|
|
377
|
+
readonly teal: NullType;
|
|
378
|
+
readonly blue: NullType;
|
|
379
|
+
readonly cyan: NullType;
|
|
380
|
+
readonly purple: NullType;
|
|
381
|
+
readonly pink: NullType;
|
|
382
|
+
readonly success: NullType;
|
|
383
|
+
readonly warning: NullType;
|
|
384
|
+
readonly danger: NullType;
|
|
385
|
+
readonly info: NullType;
|
|
386
|
+
readonly neutral: NullType;
|
|
387
|
+
}>>;
|
|
388
|
+
readonly opacity: OptionType<import("@elaraai/east").FloatType>;
|
|
389
|
+
readonly borderRadius: OptionType<StringType>;
|
|
390
|
+
readonly overflow: OptionType<import("@elaraai/east").VariantType<{
|
|
391
|
+
readonly visible: NullType;
|
|
392
|
+
readonly hidden: NullType;
|
|
393
|
+
readonly scroll: NullType;
|
|
394
|
+
readonly auto: NullType;
|
|
395
|
+
}>>;
|
|
396
|
+
readonly overflowX: OptionType<import("@elaraai/east").VariantType<{
|
|
397
|
+
readonly visible: NullType;
|
|
398
|
+
readonly hidden: NullType;
|
|
399
|
+
readonly scroll: NullType;
|
|
400
|
+
readonly auto: NullType;
|
|
401
|
+
}>>;
|
|
402
|
+
readonly overflowY: OptionType<import("@elaraai/east").VariantType<{
|
|
403
|
+
readonly visible: NullType;
|
|
404
|
+
readonly hidden: NullType;
|
|
405
|
+
readonly scroll: NullType;
|
|
406
|
+
readonly auto: NullType;
|
|
407
|
+
}>>;
|
|
408
|
+
readonly width: OptionType<StringType>;
|
|
409
|
+
readonly height: OptionType<StringType>;
|
|
410
|
+
readonly minWidth: OptionType<StringType>;
|
|
411
|
+
readonly minHeight: OptionType<StringType>;
|
|
412
|
+
readonly maxWidth: OptionType<StringType>;
|
|
413
|
+
readonly maxHeight: OptionType<StringType>;
|
|
414
|
+
readonly padding: OptionType<StructType<{
|
|
415
|
+
readonly top: OptionType<StringType>;
|
|
416
|
+
readonly right: OptionType<StringType>;
|
|
417
|
+
readonly bottom: OptionType<StringType>;
|
|
418
|
+
readonly left: OptionType<StringType>;
|
|
419
|
+
}>>;
|
|
420
|
+
readonly margin: OptionType<StructType<{
|
|
421
|
+
readonly top: OptionType<StringType>;
|
|
422
|
+
readonly right: OptionType<StringType>;
|
|
423
|
+
readonly bottom: OptionType<StringType>;
|
|
424
|
+
readonly left: OptionType<StringType>;
|
|
425
|
+
}>>;
|
|
426
|
+
}>>;
|
|
427
|
+
}>>;
|
|
428
|
+
readonly count: OptionType<IntegerType>;
|
|
429
|
+
readonly narrowed: BooleanType;
|
|
430
|
+
}>>;
|
|
431
|
+
}>;
|
|
432
|
+
readonly title: StringType;
|
|
433
|
+
}>;
|
|
434
|
+
/** Type alias for {@link PickPanelType}. */
|
|
435
|
+
export type PickPanelType = typeof PickPanelType;
|
|
436
|
+
/**
|
|
437
|
+
* The AUTHOR's handle — the contract plus the typed things it selects over.
|
|
438
|
+
*
|
|
439
|
+
* @remarks
|
|
440
|
+
* Never enters the IR. `all` and `id` are what carry `I`, structurally, so the
|
|
441
|
+
* type flows from `Pick.bind` to `Pick.active` and back into the component
|
|
442
|
+
* without a phantom brand and without surviving into a closed arm.
|
|
443
|
+
*
|
|
444
|
+
* @typeParam I - The item type being picked over
|
|
445
|
+
* @param i - The item type value
|
|
446
|
+
* @returns The concrete `StructType` of a handle over `i`
|
|
447
|
+
*
|
|
448
|
+
* @property pick - The non-generic contract handed to {@link Pick.Panel}
|
|
449
|
+
* @property all - Every item that COULD show, in declaration order
|
|
450
|
+
* @property id - An item's stable id — the same one its {@link PickItemType} carries
|
|
451
|
+
*/
|
|
452
|
+
export declare const PickHandleType: <I extends EastType>(i: I) => StructType<{
|
|
453
|
+
readonly pick: StructType<{
|
|
454
|
+
readonly key: StringType;
|
|
455
|
+
readonly state: StructType<{
|
|
456
|
+
readonly read: FunctionType<[], ArrayType<StringType>>;
|
|
457
|
+
readonly write: FunctionType<[ArrayType<StringType>], NullType>;
|
|
458
|
+
readonly has: FunctionType<[], BooleanType>;
|
|
459
|
+
}>;
|
|
460
|
+
readonly items: ArrayType<StructType<{
|
|
461
|
+
readonly id: StringType;
|
|
462
|
+
readonly title: StringType;
|
|
463
|
+
readonly subtitle: OptionType<StringType>;
|
|
464
|
+
readonly icon: OptionType<StructType<{
|
|
465
|
+
readonly name: StringType;
|
|
466
|
+
readonly prefix: StringType;
|
|
467
|
+
readonly label: OptionType<StringType>;
|
|
468
|
+
readonly style: OptionType<StructType<{
|
|
469
|
+
readonly size: OptionType<import("@elaraai/east").VariantType<{
|
|
470
|
+
readonly xs: NullType;
|
|
471
|
+
readonly sm: NullType;
|
|
472
|
+
readonly md: NullType;
|
|
473
|
+
readonly lg: NullType;
|
|
474
|
+
readonly xl: NullType;
|
|
475
|
+
readonly "2xl": NullType;
|
|
476
|
+
}>>;
|
|
477
|
+
readonly variant: OptionType<import("@elaraai/east").VariantType<{
|
|
478
|
+
readonly solid: NullType;
|
|
479
|
+
readonly regular: NullType;
|
|
480
|
+
readonly light: NullType;
|
|
481
|
+
readonly thin: NullType;
|
|
482
|
+
readonly brands: NullType;
|
|
483
|
+
}>>;
|
|
484
|
+
readonly color: OptionType<StringType>;
|
|
485
|
+
readonly background: OptionType<StringType>;
|
|
486
|
+
readonly colorPalette: OptionType<import("@elaraai/east").VariantType<{
|
|
487
|
+
readonly brand: NullType;
|
|
488
|
+
readonly gray: NullType;
|
|
489
|
+
readonly red: NullType;
|
|
490
|
+
readonly orange: NullType;
|
|
491
|
+
readonly yellow: NullType;
|
|
492
|
+
readonly green: NullType;
|
|
493
|
+
readonly teal: NullType;
|
|
494
|
+
readonly blue: NullType;
|
|
495
|
+
readonly cyan: NullType;
|
|
496
|
+
readonly purple: NullType;
|
|
497
|
+
readonly pink: NullType;
|
|
498
|
+
readonly success: NullType;
|
|
499
|
+
readonly warning: NullType;
|
|
500
|
+
readonly danger: NullType;
|
|
501
|
+
readonly info: NullType;
|
|
502
|
+
readonly neutral: NullType;
|
|
503
|
+
}>>;
|
|
504
|
+
readonly opacity: OptionType<import("@elaraai/east").FloatType>;
|
|
505
|
+
readonly borderRadius: OptionType<StringType>;
|
|
506
|
+
readonly overflow: OptionType<import("@elaraai/east").VariantType<{
|
|
507
|
+
readonly visible: NullType;
|
|
508
|
+
readonly hidden: NullType;
|
|
509
|
+
readonly scroll: NullType;
|
|
510
|
+
readonly auto: NullType;
|
|
511
|
+
}>>;
|
|
512
|
+
readonly overflowX: OptionType<import("@elaraai/east").VariantType<{
|
|
513
|
+
readonly visible: NullType;
|
|
514
|
+
readonly hidden: NullType;
|
|
515
|
+
readonly scroll: NullType;
|
|
516
|
+
readonly auto: NullType;
|
|
517
|
+
}>>;
|
|
518
|
+
readonly overflowY: OptionType<import("@elaraai/east").VariantType<{
|
|
519
|
+
readonly visible: NullType;
|
|
520
|
+
readonly hidden: NullType;
|
|
521
|
+
readonly scroll: NullType;
|
|
522
|
+
readonly auto: NullType;
|
|
523
|
+
}>>;
|
|
524
|
+
readonly width: OptionType<StringType>;
|
|
525
|
+
readonly height: OptionType<StringType>;
|
|
526
|
+
readonly minWidth: OptionType<StringType>;
|
|
527
|
+
readonly minHeight: OptionType<StringType>;
|
|
528
|
+
readonly maxWidth: OptionType<StringType>;
|
|
529
|
+
readonly maxHeight: OptionType<StringType>;
|
|
530
|
+
readonly padding: OptionType<StructType<{
|
|
531
|
+
readonly top: OptionType<StringType>;
|
|
532
|
+
readonly right: OptionType<StringType>;
|
|
533
|
+
readonly bottom: OptionType<StringType>;
|
|
534
|
+
readonly left: OptionType<StringType>;
|
|
535
|
+
}>>;
|
|
536
|
+
readonly margin: OptionType<StructType<{
|
|
537
|
+
readonly top: OptionType<StringType>;
|
|
538
|
+
readonly right: OptionType<StringType>;
|
|
539
|
+
readonly bottom: OptionType<StringType>;
|
|
540
|
+
readonly left: OptionType<StringType>;
|
|
541
|
+
}>>;
|
|
542
|
+
}>>;
|
|
543
|
+
}>>;
|
|
544
|
+
readonly count: OptionType<IntegerType>;
|
|
545
|
+
readonly narrowed: BooleanType;
|
|
546
|
+
}>>;
|
|
547
|
+
}>;
|
|
548
|
+
readonly all: ArrayType<I>;
|
|
549
|
+
readonly id: FunctionType<[I], StringType>;
|
|
550
|
+
}>;
|
|
551
|
+
/**
|
|
552
|
+
* The TypeScript type of a {@link PickHandleType} over item type `I`.
|
|
553
|
+
*
|
|
554
|
+
* @typeParam I - The item type being picked over
|
|
555
|
+
*/
|
|
556
|
+
export type PickHandle<I extends EastType> = ExprType<ReturnType<typeof PickHandleType<I>>>;
|
|
557
|
+
/**
|
|
558
|
+
* How one item describes itself to the panel — the accessors {@link Pick.bind}
|
|
559
|
+
* reifies.
|
|
560
|
+
*
|
|
561
|
+
* @remarks
|
|
562
|
+
* `id` and `title` are required because a thing with no identity cannot be
|
|
563
|
+
* persisted and a thing with no name cannot be offered to a user. Everything
|
|
564
|
+
* else is presentation the panel degrades gracefully without.
|
|
565
|
+
*
|
|
566
|
+
* @typeParam I - The item type being picked over
|
|
567
|
+
*/
|
|
568
|
+
export interface PickOptions<I extends EastType> {
|
|
569
|
+
/**
|
|
570
|
+
* The item's stable id — what the state addresses.
|
|
571
|
+
*
|
|
572
|
+
* @remarks
|
|
573
|
+
* Must be UNIQUE across `all`. The hidden set is a list of ids, so two
|
|
574
|
+
* items sharing one are a single switch wearing two labels: toggling either
|
|
575
|
+
* hides both, and a persisted id cannot say which was meant. `Pick.Panel`
|
|
576
|
+
* reports a duplicate in development rather than resolving it — dropping
|
|
577
|
+
* one would silently remove an item that is still in the FEED, since
|
|
578
|
+
* {@link Pick.active} filters the item list rather than the descriptors.
|
|
579
|
+
*/
|
|
580
|
+
id: (item: ExprType<I>) => SubtypeExprOrValue<StringType>;
|
|
581
|
+
/** The name a user reads. */
|
|
582
|
+
title: (item: ExprType<I>) => SubtypeExprOrValue<StringType>;
|
|
583
|
+
/** The muted role line — return the field's `Option`. */
|
|
584
|
+
subtitle?: (item: ExprType<I>) => SubtypeExprOrValue<OptionType<StringType>>;
|
|
585
|
+
/** The leading glyph — return the field's `Option`. */
|
|
586
|
+
icon?: (item: ExprType<I>) => SubtypeExprOrValue<OptionType<IconType>>;
|
|
587
|
+
/** How many things this item yields — return the field's `Option`; `none` when the source is paged and cannot know. */
|
|
588
|
+
count?: (item: ExprType<I>) => SubtypeExprOrValue<OptionType<IntegerType>>;
|
|
589
|
+
/** `true` ⇒ the count is a narrowed count. */
|
|
590
|
+
narrowed?: (item: ExprType<I>) => SubtypeExprOrValue<BooleanType>;
|
|
591
|
+
/** Ids switched off to begin with; omit ⇒ everything shows. */
|
|
592
|
+
hidden?: readonly string[];
|
|
593
|
+
}
|
|
594
|
+
/**
|
|
595
|
+
* Build a {@link PickStateType} seed.
|
|
596
|
+
*
|
|
597
|
+
* @param hidden - The ids switched off; omit ⇒ everything shows
|
|
598
|
+
* @returns The state expression
|
|
599
|
+
*
|
|
600
|
+
* @example
|
|
601
|
+
* ```ts
|
|
602
|
+
* Pick.state() // everything shows
|
|
603
|
+
* Pick.state(["crew"]) // "crew" starts switched off
|
|
604
|
+
* ```
|
|
605
|
+
*/
|
|
606
|
+
export declare function createPickState(hidden?: readonly string[]): ExprType<PickStateType>;
|
|
607
|
+
/**
|
|
608
|
+
* Bind a list of things to a persisted pick.
|
|
609
|
+
*
|
|
610
|
+
* @remarks
|
|
611
|
+
* Takes NO item-type argument — `I` is already carried by `all`, recovered with
|
|
612
|
+
* the `Expr.type` idiom, so the call reads the way the author thinks about it.
|
|
613
|
+
*
|
|
614
|
+
* The accessors are REIFIED once into a single describe function which the map
|
|
615
|
+
* then CALLS, per the factory rule (`shared/reify.ts`, `EAST_UI_PROP_PATTERNS.md`)
|
|
616
|
+
* — never invoked mid-map with their expression trees spliced in.
|
|
617
|
+
*
|
|
618
|
+
* Bind exactly ONCE, in the same reactive evaluation that mounts both the panel
|
|
619
|
+
* and the component. A `Reactive.Root` body is a free function and cannot
|
|
620
|
+
* capture a `$.let` handle from an enclosing scope, so a panel that is its own
|
|
621
|
+
* root would need its own bind — two binds on one key work (they share the
|
|
622
|
+
* store) but must be given identical item lists, or the two surfaces disagree
|
|
623
|
+
* about what exists.
|
|
624
|
+
*
|
|
625
|
+
* @typeParam I - The item type being picked over
|
|
626
|
+
* @param key - The store key; also the persistence key
|
|
627
|
+
* @param all - Every item that COULD show — an expression of `Array<I>`
|
|
628
|
+
* @param options - The per-item accessors and the seed ({@link PickOptions})
|
|
629
|
+
* @returns A {@link PickHandleType} over `I`
|
|
630
|
+
*
|
|
631
|
+
* @example
|
|
632
|
+
* ```tsx
|
|
633
|
+
* const shown = $.let(Pick.bind("orders.cols", cols, {
|
|
634
|
+
* id: c => c.key,
|
|
635
|
+
* title: c => c.header,
|
|
636
|
+
* hidden: ["price"],
|
|
637
|
+
* }));
|
|
638
|
+
*
|
|
639
|
+
* <Pick.Panel value={shown} title="Columns" />
|
|
640
|
+
* <Table data={orders} columns={Pick.active(shown)} />
|
|
641
|
+
* ```
|
|
642
|
+
*/
|
|
643
|
+
/**
|
|
644
|
+
* The library entries alone — every item described, with NO state binding.
|
|
645
|
+
*
|
|
646
|
+
* @remarks
|
|
647
|
+
* {@link Pick.bind} builds `items` with exactly this call, so proving one
|
|
648
|
+
* proves the other. It is split out for the same reason {@link pickVisible} is:
|
|
649
|
+
* `State.bind` is not runnable in a `describeEast` spec, and the descriptor
|
|
650
|
+
* derivation — identity, icons, counts — is the part worth testing.
|
|
651
|
+
*
|
|
652
|
+
* Useful in its own right when a host wants to render its own list rather than
|
|
653
|
+
* mount `Pick.Panel`.
|
|
654
|
+
*
|
|
655
|
+
* @typeParam I - The item type being picked over
|
|
656
|
+
* @param all - Every item that COULD show
|
|
657
|
+
* @param options - The per-item accessors ({@link PickOptions})
|
|
658
|
+
* @returns The descriptors, in declaration order
|
|
659
|
+
*/
|
|
660
|
+
export declare function pickItems<I extends EastType>(all: SubtypeExprOrValue<ArrayType<I>>, options: PickOptions<I>): ExprType<ArrayType<PickItemType>>;
|
|
661
|
+
export declare function createPickBind<I extends EastType>(key: string, all: SubtypeExprOrValue<ArrayType<I>>, options: PickOptions<I>): PickHandle<I>;
|
|
662
|
+
/**
|
|
663
|
+
* The items still switched on, in DECLARATION order — the feed a component takes.
|
|
664
|
+
*
|
|
665
|
+
* @remarks
|
|
666
|
+
* The twin of `Slice.rows(...)`: one tracked read, one derivation, and the
|
|
667
|
+
* result is an ordinary expression the component's own prop already accepts.
|
|
668
|
+
* For a Plan that means `series={Pick.active(shown)}` needs no Plan change at
|
|
669
|
+
* all, because `PlanSeriesInput` already accepts the expression form.
|
|
670
|
+
*
|
|
671
|
+
* Declaration order, never the state's — see this module's overview. An id in
|
|
672
|
+
* the state that names nothing is ignored, so a rename or removal degrades to
|
|
673
|
+
* "shown" rather than to an error.
|
|
674
|
+
*
|
|
675
|
+
* Call this INSIDE the reactive evaluation that renders the component: the read
|
|
676
|
+
* is what registers the dependency that repaints on a toggle.
|
|
677
|
+
*
|
|
678
|
+
* @typeParam I - The item type being picked over
|
|
679
|
+
* @param handle - The handle from {@link Pick.bind}
|
|
680
|
+
* @returns The surviving items, as `Array<I>`
|
|
681
|
+
*/
|
|
682
|
+
export declare function pickActive<I extends EastType>(handle: PickHandle<I>): ExprType<ArrayType<I>>;
|
|
683
|
+
/**
|
|
684
|
+
* The derivation on its own — items minus a hidden list, with NO state binding.
|
|
685
|
+
*
|
|
686
|
+
* @remarks
|
|
687
|
+
* {@link Pick.active} is this plus one tracked read, so proving this proves the
|
|
688
|
+
* shipped behaviour. It exists split out because the semantics are the part
|
|
689
|
+
* worth testing and `State.bind` is not runnable in a `describeEast` spec —
|
|
690
|
+
* `TestImpl` carries no State runtime (`test/platform/state.spec.ts` is
|
|
691
|
+
* compile-only for exactly this reason). Here the hidden list is a plain value,
|
|
692
|
+
* so the whole contract is provable with no platform function at all.
|
|
693
|
+
*
|
|
694
|
+
* Three behaviours it fixes, all of them things a bare `active` list gets
|
|
695
|
+
* wrong: declaration order is preserved, an id naming nothing is ignored, and
|
|
696
|
+
* an item absent from the list still shows.
|
|
697
|
+
*
|
|
698
|
+
* @typeParam I - The item type being picked over
|
|
699
|
+
* @param all - Every item that COULD show
|
|
700
|
+
* @param id - An item's stable id
|
|
701
|
+
* @param hidden - The ids switched off
|
|
702
|
+
* @returns The surviving items, in declaration order
|
|
703
|
+
*/
|
|
704
|
+
export declare function pickVisible<I extends EastType>(all: SubtypeExprOrValue<ArrayType<I>>, id: SubtypeExprOrValue<FunctionType<[I], StringType>>, hidden: SubtypeExprOrValue<PickStateType>): ExprType<ArrayType<I>>;
|
|
705
|
+
//# sourceMappingURL=pick.d.ts.map
|