@elaraai/east-ui 1.0.80 → 1.0.82
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/charts/chart/index.d.ts +4 -0
- package/dist/src/charts/chart/index.d.ts.map +1 -1
- package/dist/src/charts/spec/index.d.ts +8 -0
- package/dist/src/charts/spec/index.d.ts.map +1 -1
- package/dist/src/collections/deck/index.d.ts +8 -0
- package/dist/src/collections/deck/index.d.ts.map +1 -1
- package/dist/src/collections/index.d.ts +2 -2
- package/dist/src/collections/index.d.ts.map +1 -1
- package/dist/src/collections/index.js.map +1 -1
- package/dist/src/collections/library/index.d.ts +4 -0
- package/dist/src/collections/library/index.d.ts.map +1 -1
- package/dist/src/collections/library/types.d.ts +4 -0
- package/dist/src/collections/library/types.d.ts.map +1 -1
- package/dist/src/collections/matrix/index.d.ts +56 -19
- package/dist/src/collections/matrix/index.d.ts.map +1 -1
- package/dist/src/collections/matrix/index.js +38 -24
- package/dist/src/collections/matrix/index.js.map +1 -1
- package/dist/src/collections/plan/assemble.d.ts +655 -2113
- package/dist/src/collections/plan/assemble.d.ts.map +1 -1
- package/dist/src/collections/plan/assemble.js +159 -136
- package/dist/src/collections/plan/assemble.js.map +1 -1
- package/dist/src/collections/plan/builders.d.ts +193 -40
- package/dist/src/collections/plan/builders.d.ts.map +1 -1
- package/dist/src/collections/plan/builders.js +162 -32
- package/dist/src/collections/plan/builders.js.map +1 -1
- package/dist/src/collections/plan/factories.d.ts +290 -116
- package/dist/src/collections/plan/factories.d.ts.map +1 -1
- package/dist/src/collections/plan/factories.js +281 -156
- package/dist/src/collections/plan/factories.js.map +1 -1
- package/dist/src/collections/plan/index.d.ts +111 -58
- package/dist/src/collections/plan/index.d.ts.map +1 -1
- package/dist/src/collections/plan/index.js +62 -31
- package/dist/src/collections/plan/index.js.map +1 -1
- package/dist/src/collections/plan/ir.d.ts +759 -1769
- package/dist/src/collections/plan/ir.d.ts.map +1 -1
- package/dist/src/collections/plan/ir.js +51 -27
- package/dist/src/collections/plan/ir.js.map +1 -1
- package/dist/src/collections/plan/pick.d.ts +89 -71
- package/dist/src/collections/plan/pick.d.ts.map +1 -1
- package/dist/src/collections/plan/pick.js +101 -86
- package/dist/src/collections/plan/pick.js.map +1 -1
- package/dist/src/collections/plan/root.d.ts +164 -77
- package/dist/src/collections/plan/root.d.ts.map +1 -1
- package/dist/src/collections/plan/root.js +350 -42
- package/dist/src/collections/plan/root.js.map +1 -1
- package/dist/src/collections/plan/series.d.ts +12524 -10527
- package/dist/src/collections/plan/series.d.ts.map +1 -1
- package/dist/src/collections/plan/series.js +1596 -298
- package/dist/src/collections/plan/series.js.map +1 -1
- package/dist/src/collections/plan/types.d.ts +6115 -2802
- package/dist/src/collections/plan/types.d.ts.map +1 -1
- package/dist/src/collections/plan/types.js +575 -170
- package/dist/src/collections/plan/types.js.map +1 -1
- package/dist/src/collections/sheet/bridge.d.ts +154 -43
- package/dist/src/collections/sheet/bridge.d.ts.map +1 -1
- package/dist/src/collections/sheet/bridge.js +383 -240
- package/dist/src/collections/sheet/bridge.js.map +1 -1
- package/dist/src/collections/sheet/columns.d.ts +66 -16
- package/dist/src/collections/sheet/columns.d.ts.map +1 -1
- package/dist/src/collections/sheet/columns.js +25 -25
- package/dist/src/collections/sheet/columns.js.map +1 -1
- package/dist/src/collections/sheet/context-bridge.d.ts +48 -0
- package/dist/src/collections/sheet/context-bridge.d.ts.map +1 -0
- package/dist/src/collections/sheet/context-bridge.js +216 -0
- package/dist/src/collections/sheet/context-bridge.js.map +1 -0
- package/dist/src/collections/sheet/draft-bridge.d.ts +37 -0
- package/dist/src/collections/sheet/draft-bridge.d.ts.map +1 -0
- package/dist/src/collections/sheet/draft-bridge.js +153 -0
- package/dist/src/collections/sheet/draft-bridge.js.map +1 -0
- package/dist/src/collections/sheet/drafts.d.ts +14 -0
- package/dist/src/collections/sheet/drafts.d.ts.map +1 -0
- package/dist/src/collections/sheet/drafts.js +14 -0
- package/dist/src/collections/sheet/drafts.js.map +1 -0
- package/dist/src/collections/sheet/editing-bridge.d.ts +36 -0
- package/dist/src/collections/sheet/editing-bridge.d.ts.map +1 -0
- package/dist/src/collections/sheet/editing-bridge.js +196 -0
- package/dist/src/collections/sheet/editing-bridge.js.map +1 -0
- package/dist/src/collections/sheet/editing-types.d.ts +268 -0
- package/dist/src/collections/sheet/editing-types.d.ts.map +1 -0
- package/dist/src/collections/sheet/editing-types.js +34 -0
- package/dist/src/collections/sheet/editing-types.js.map +1 -0
- package/dist/src/collections/sheet/edits.d.ts +37 -0
- package/dist/src/collections/sheet/edits.d.ts.map +1 -0
- package/dist/src/collections/sheet/edits.js +31 -0
- package/dist/src/collections/sheet/edits.js.map +1 -0
- package/dist/src/collections/sheet/group.d.ts +165 -0
- package/dist/src/collections/sheet/group.d.ts.map +1 -0
- package/dist/src/collections/sheet/group.js +52 -0
- package/dist/src/collections/sheet/group.js.map +1 -0
- package/dist/src/collections/sheet/index.d.ts +171 -27
- package/dist/src/collections/sheet/index.d.ts.map +1 -1
- package/dist/src/collections/sheet/index.js +99 -17
- package/dist/src/collections/sheet/index.js.map +1 -1
- package/dist/src/collections/sheet/link.d.ts +22 -16
- package/dist/src/collections/sheet/link.d.ts.map +1 -1
- package/dist/src/collections/sheet/link.js +18 -12
- package/dist/src/collections/sheet/link.js.map +1 -1
- package/dist/src/collections/sheet/registers.d.ts +152 -5
- package/dist/src/collections/sheet/registers.d.ts.map +1 -1
- package/dist/src/collections/sheet/registers.js +154 -5
- package/dist/src/collections/sheet/registers.js.map +1 -1
- package/dist/src/collections/sheet/root.d.ts +175 -26
- package/dist/src/collections/sheet/root.d.ts.map +1 -1
- package/dist/src/collections/sheet/root.js +150 -26
- package/dist/src/collections/sheet/root.js.map +1 -1
- package/dist/src/collections/sheet/seed-bridge.d.ts +14 -0
- package/dist/src/collections/sheet/seed-bridge.d.ts.map +1 -0
- package/dist/src/collections/sheet/seed-bridge.js +51 -0
- package/dist/src/collections/sheet/seed-bridge.js.map +1 -0
- package/dist/src/collections/sheet/sub-rows.d.ts +249 -0
- package/dist/src/collections/sheet/sub-rows.d.ts.map +1 -0
- package/dist/src/collections/sheet/sub-rows.js +222 -0
- package/dist/src/collections/sheet/sub-rows.js.map +1 -0
- package/dist/src/collections/sheet/transactions.d.ts +76 -0
- package/dist/src/collections/sheet/transactions.d.ts.map +1 -0
- package/dist/src/collections/sheet/transactions.js +40 -0
- package/dist/src/collections/sheet/transactions.js.map +1 -0
- package/dist/src/collections/sheet/types.d.ts +12034 -3651
- package/dist/src/collections/sheet/types.d.ts.map +1 -1
- package/dist/src/collections/sheet/types.js +365 -48
- package/dist/src/collections/sheet/types.js.map +1 -1
- package/dist/src/collections/table/index.d.ts +98 -123
- package/dist/src/collections/table/index.d.ts.map +1 -1
- package/dist/src/collections/table/index.js +97 -111
- package/dist/src/collections/table/index.js.map +1 -1
- package/dist/src/collections/table/types.d.ts +87 -31
- package/dist/src/collections/table/types.d.ts.map +1 -1
- package/dist/src/collections/table/types.js +51 -26
- package/dist/src/collections/table/types.js.map +1 -1
- package/dist/src/collections/value-tree/flatten.d.ts.map +1 -1
- package/dist/src/collections/value-tree/flatten.js +4 -1
- package/dist/src/collections/value-tree/flatten.js.map +1 -1
- package/dist/src/component.d.ts +5075 -4079
- package/dist/src/component.d.ts.map +1 -1
- package/dist/src/component.js +46 -46
- package/dist/src/component.js.map +1 -1
- package/dist/src/contracts/approval.d.ts +10 -8
- package/dist/src/contracts/approval.d.ts.map +1 -1
- package/dist/src/contracts/approval.js +10 -8
- package/dist/src/contracts/approval.js.map +1 -1
- package/dist/src/contracts/drag.d.ts +11 -9
- package/dist/src/contracts/drag.d.ts.map +1 -1
- package/dist/src/contracts/drag.js +28 -21
- package/dist/src/contracts/drag.js.map +1 -1
- package/dist/src/contracts/editing.d.ts +1283 -0
- package/dist/src/contracts/editing.d.ts.map +1 -0
- package/dist/src/contracts/editing.js +711 -0
- package/dist/src/contracts/editing.js.map +1 -0
- package/dist/src/contracts/index.d.ts +2 -1
- package/dist/src/contracts/index.d.ts.map +1 -1
- package/dist/src/contracts/index.js +2 -1
- package/dist/src/contracts/index.js.map +1 -1
- package/dist/src/contracts/pick.d.ts +6 -7
- package/dist/src/contracts/pick.d.ts.map +1 -1
- package/dist/src/contracts/pick.js +6 -7
- package/dist/src/contracts/pick.js.map +1 -1
- package/dist/src/contracts/review.d.ts +3 -1
- package/dist/src/contracts/review.d.ts.map +1 -1
- package/dist/src/contracts/review.js +3 -1
- package/dist/src/contracts/review.js.map +1 -1
- package/dist/src/contracts/source.d.ts +270 -80
- package/dist/src/contracts/source.d.ts.map +1 -1
- package/dist/src/contracts/source.js +357 -58
- package/dist/src/contracts/source.js.map +1 -1
- package/dist/src/display/chip-rail/index.d.ts.map +1 -1
- package/dist/src/display/chip-rail/index.js +10 -10
- package/dist/src/display/chip-rail/index.js.map +1 -1
- package/dist/src/extension.d.ts +2 -1
- package/dist/src/extension.d.ts.map +1 -1
- package/dist/src/extension.js +2 -1
- package/dist/src/extension.js.map +1 -1
- package/dist/src/format/index.d.ts +1 -154
- package/dist/src/format/index.d.ts.map +1 -1
- package/dist/src/format/types.d.ts +35 -23
- package/dist/src/format/types.d.ts.map +1 -1
- package/dist/src/format/types.js +16 -14
- package/dist/src/format/types.js.map +1 -1
- package/dist/src/forms/field/index.js +4 -4
- package/dist/src/forms/field/index.js.map +1 -1
- package/dist/src/forms/file-upload/index.js +16 -16
- package/dist/src/forms/file-upload/index.js.map +1 -1
- package/dist/src/index.d.ts +4 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +8 -3
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +11 -3
- package/dist/src/internal.js.map +1 -1
- package/dist/src/layout/box/index.d.ts.map +1 -1
- package/dist/src/layout/box/index.js +47 -47
- package/dist/src/layout/box/index.js.map +1 -1
- package/dist/src/layout/flex/index.d.ts.map +1 -1
- package/dist/src/layout/flex/index.js +47 -47
- package/dist/src/layout/flex/index.js.map +1 -1
- package/dist/src/layout/grid/index.js +11 -11
- package/dist/src/layout/grid/index.js.map +1 -1
- package/dist/src/layout/scroll-area/index.d.ts.map +1 -1
- package/dist/src/layout/scroll-area/index.js +8 -8
- package/dist/src/layout/scroll-area/index.js.map +1 -1
- package/dist/src/layout/separator/index.d.ts.map +1 -1
- package/dist/src/layout/separator/index.js +6 -6
- package/dist/src/layout/separator/index.js.map +1 -1
- package/dist/src/layout/stack/index.d.ts.map +1 -1
- package/dist/src/layout/stack/index.js +46 -46
- package/dist/src/layout/stack/index.js.map +1 -1
- package/dist/src/layout/sticky/index.d.ts.map +1 -1
- package/dist/src/layout/sticky/index.js +8 -8
- package/dist/src/layout/sticky/index.js.map +1 -1
- package/dist/src/overlays/action-bar/index.d.ts.map +1 -1
- package/dist/src/overlays/action-bar/index.js +8 -8
- package/dist/src/overlays/action-bar/index.js.map +1 -1
- package/dist/src/platform/index.d.ts +1 -1
- package/dist/src/platform/index.d.ts.map +1 -1
- package/dist/src/platform/index.js +1 -1
- package/dist/src/platform/index.js.map +1 -1
- package/dist/src/platform/slice/impl.d.ts +62 -51
- package/dist/src/platform/slice/impl.d.ts.map +1 -1
- package/dist/src/platform/slice/impl.js +155 -72
- package/dist/src/platform/slice/impl.js.map +1 -1
- package/dist/src/platform/slice/index.d.ts +3744 -2226
- package/dist/src/platform/slice/index.d.ts.map +1 -1
- package/dist/src/platform/slice/index.js +43 -1
- package/dist/src/platform/slice/index.js.map +1 -1
- package/dist/src/runtime/collections/deck.d.ts +4 -0
- package/dist/src/runtime/collections/deck.d.ts.map +1 -1
- package/dist/src/runtime/collections/matrix.d.ts +10 -9
- package/dist/src/runtime/collections/matrix.d.ts.map +1 -1
- package/dist/src/runtime/collections/matrix.js +11 -6
- package/dist/src/runtime/collections/matrix.js.map +1 -1
- package/dist/src/runtime/collections/plan.d.ts +148 -65
- package/dist/src/runtime/collections/plan.d.ts.map +1 -1
- package/dist/src/runtime/collections/plan.js +155 -67
- package/dist/src/runtime/collections/plan.js.map +1 -1
- package/dist/src/runtime/collections/sheet.d.ts +56 -23
- package/dist/src/runtime/collections/sheet.d.ts.map +1 -1
- package/dist/src/runtime/collections/sheet.js +30 -22
- package/dist/src/runtime/collections/sheet.js.map +1 -1
- package/dist/src/runtime/collections/table.d.ts +18 -11
- package/dist/src/runtime/collections/table.d.ts.map +1 -1
- package/dist/src/runtime/collections/table.js +7 -4
- package/dist/src/runtime/collections/table.js.map +1 -1
- package/dist/src/shared/reify.d.ts +4 -46
- package/dist/src/shared/reify.d.ts.map +1 -1
- package/dist/src/shared/reify.js +4 -61
- package/dist/src/shared/reify.js.map +1 -1
- package/dist/src/shared/tree.d.ts +88 -0
- package/dist/src/shared/tree.d.ts.map +1 -0
- package/dist/src/shared/tree.js +134 -0
- package/dist/src/shared/tree.js.map +1 -0
- package/dist/src/slice/breakdown/index.d.ts +4 -0
- package/dist/src/slice/breakdown/index.d.ts.map +1 -1
- package/dist/src/slice/breakdown/types.d.ts +4 -0
- package/dist/src/slice/breakdown/types.d.ts.map +1 -1
- package/dist/src/slice/cohort/index.d.ts +24 -4
- package/dist/src/slice/cohort/index.d.ts.map +1 -1
- package/dist/src/slice/cohort/index.js +8 -4
- package/dist/src/slice/cohort/index.js.map +1 -1
- package/dist/src/slice/cohort/types.d.ts +11 -0
- package/dist/src/slice/cohort/types.d.ts.map +1 -1
- package/dist/src/slice/cohort/types.js +7 -0
- package/dist/src/slice/cohort/types.js.map +1 -1
- package/dist/src/slice/filter/index.d.ts +4 -0
- package/dist/src/slice/filter/index.d.ts.map +1 -1
- package/dist/src/slice/filter/types.d.ts +4 -0
- package/dist/src/slice/filter/types.d.ts.map +1 -1
- package/dist/src/slice/index.d.ts +736 -0
- package/dist/src/slice/index.d.ts.map +1 -1
- package/dist/src/slice/legend/index.d.ts +4 -0
- package/dist/src/slice/legend/index.d.ts.map +1 -1
- package/dist/src/slice/legend/types.d.ts +4 -0
- package/dist/src/slice/legend/types.d.ts.map +1 -1
- package/dist/src/slice/rail/index.d.ts +8 -4
- package/dist/src/slice/rail/index.d.ts.map +1 -1
- package/dist/src/slice/rail/index.js.map +1 -1
- package/dist/src/slice/range/index.d.ts +4 -0
- package/dist/src/slice/range/index.d.ts.map +1 -1
- package/dist/src/slice/range/types.d.ts +4 -0
- package/dist/src/slice/range/types.d.ts.map +1 -1
- package/dist/src/slice/search/index.d.ts +4 -0
- package/dist/src/slice/search/index.d.ts.map +1 -1
- package/dist/src/slice/search/types.d.ts +4 -0
- package/dist/src/slice/search/types.d.ts.map +1 -1
- package/dist/src/slice/summary/index.d.ts +4 -0
- package/dist/src/slice/summary/index.d.ts.map +1 -1
- package/dist/src/slice/summary/types.d.ts +4 -0
- package/dist/src/slice/summary/types.d.ts.map +1 -1
- package/dist/src/typography/code/index.js +1 -1
- package/dist/src/typography/code/index.js.map +1 -1
- package/dist/src/typography/code-block/index.js +7 -7
- package/dist/src/typography/code-block/index.js.map +1 -1
- package/dist/src/typography/heading/index.js +2 -2
- package/dist/src/typography/heading/index.js.map +1 -1
- package/dist/src/typography/list/index.js +1 -1
- package/dist/src/typography/list/index.js.map +1 -1
- package/dist/src/typography/mark/index.js +1 -1
- package/dist/src/typography/mark/index.js.map +1 -1
- package/dist/src/typography/note/index.js +1 -1
- package/dist/src/typography/note/index.js.map +1 -1
- package/dist/src/typography/numeric/index.d.ts +3 -308
- package/dist/src/typography/numeric/index.d.ts.map +1 -1
- package/dist/src/typography/numeric/index.js +4 -4
- package/dist/src/typography/numeric/index.js.map +1 -1
- package/dist/src/typography/numeric/types.d.ts +1 -154
- package/dist/src/typography/numeric/types.d.ts.map +1 -1
- package/dist/src/typography/text/index.js +1 -1
- package/dist/src/typography/text/index.js.map +1 -1
- package/dist/test/collections/matrix.examples.d.ts +7 -3
- package/dist/test/collections/matrix.examples.d.ts.map +1 -1
- package/dist/test/collections/matrix.examples.js +55 -24
- package/dist/test/collections/matrix.examples.js.map +1 -1
- package/dist/test/collections/paged-source.examples.d.ts +4 -0
- package/dist/test/collections/paged-source.examples.d.ts.map +1 -1
- package/dist/test/collections/paged-source.examples.js +98 -13
- package/dist/test/collections/paged-source.examples.js.map +1 -1
- package/dist/test/collections/plan.examples.d.ts +101 -26
- package/dist/test/collections/plan.examples.d.ts.map +1 -1
- package/dist/test/collections/plan.examples.js +1481 -755
- package/dist/test/collections/plan.examples.js.map +1 -1
- package/dist/test/collections/sheet-link.examples.d.ts +7 -0
- package/dist/test/collections/sheet-link.examples.d.ts.map +1 -0
- package/dist/test/collections/sheet-link.examples.js +41 -0
- package/dist/test/collections/sheet-link.examples.js.map +1 -0
- package/dist/test/collections/sheet-transactions.examples.d.ts +7 -0
- package/dist/test/collections/sheet-transactions.examples.d.ts.map +1 -0
- package/dist/test/collections/sheet-transactions.examples.js +58 -0
- package/dist/test/collections/sheet-transactions.examples.js.map +1 -0
- package/dist/test/collections/sheet.examples.d.ts +52 -5
- package/dist/test/collections/sheet.examples.d.ts.map +1 -1
- package/dist/test/collections/sheet.examples.js +500 -158
- package/dist/test/collections/sheet.examples.js.map +1 -1
- package/dist/test/collections/table.examples.d.ts +31 -3
- package/dist/test/collections/table.examples.d.ts.map +1 -1
- package/dist/test/collections/table.examples.js +188 -28
- package/dist/test/collections/table.examples.js.map +1 -1
- package/dist/test/contracts/editing.examples.d.ts +7 -0
- package/dist/test/contracts/editing.examples.d.ts.map +1 -0
- package/dist/test/contracts/editing.examples.js +58 -0
- package/dist/test/contracts/editing.examples.js.map +1 -0
- package/dist/test/layout/splitter.examples.d.ts.map +1 -1
- package/dist/test/layout/splitter.examples.js +3 -1
- package/dist/test/layout/splitter.examples.js.map +1 -1
- package/dist/test/platform/slice.examples.d.ts.map +1 -1
- package/dist/test/platform/slice.examples.js +1 -0
- package/dist/test/platform/slice.examples.js.map +1 -1
- package/dist/test/slice/slice.examples.d.ts.map +1 -1
- package/dist/test/slice/slice.examples.js +5 -2
- package/dist/test/slice/slice.examples.js.map +1 -1
- package/package.json +4 -3
- package/dist/src/collections/plan/data-forms.d.ts +0 -332
- package/dist/src/collections/plan/data-forms.d.ts.map +0 -1
- package/dist/src/collections/plan/data-forms.js +0 -212
- package/dist/src/collections/plan/data-forms.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../../../../src/collections/plan/ir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,EACH,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,UAAU,EACV,UAAU,EACb,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../../../../src/collections/plan/ir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,EACH,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,UAAU,EACV,UAAU,EACb,MAAM,eAAe,CAAC;AAMvB,OAAO,EAWH,eAAe,EAClB,MAAM,YAAY,CAAC;AAMpB;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,cAAc;;;;;EAKzB,CAAC;AACH,6CAA6C;AAC7C,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC;AAEnD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCvB,CAAC;AACH,2CAA2C;AAC3C,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC"}
|
|
@@ -5,30 +5,48 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* The Plan's resolved UIComponent-coupled IR — since the data-interface
|
|
7
7
|
* redesign only the ROOT and the review config touch `UIComponentType`; the
|
|
8
|
-
* whole row vocabulary (elements, kinds, rows
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* whole row vocabulary (elements, kinds, rows) is pure data in `./types.ts`.
|
|
9
|
+
* These are the named twins of the `Plan` arm in `component.ts`, which spells
|
|
10
|
+
* the SAME shapes inline with the recursion `node`. The renderer decodes the
|
|
11
|
+
* arm's values through {@link PlanRootType}, so the two must be one East
|
|
12
|
+
* type: `test/collections/plan.spec.ts` compares them as East type values,
|
|
13
|
+
* and a field (or a field type) on only one side fails it.
|
|
14
14
|
*
|
|
15
15
|
* @packageDocumentation
|
|
16
16
|
*/
|
|
17
17
|
import { ArrayType, FunctionType, NullType, OptionType, StringType, StructType, } from "@elaraai/east";
|
|
18
18
|
import { UIComponentType } from "../../component.js";
|
|
19
19
|
import { PickBindType } from "../../contracts/pick.js";
|
|
20
|
-
import {
|
|
21
|
-
import { CanDropFnType, DragEventType } from "../../contracts/drag.js";
|
|
20
|
+
import { CanDropFnType } from "../../contracts/drag.js";
|
|
22
21
|
import { SliceChromeType } from "../../platform/slice/index.js";
|
|
23
|
-
import { PlanAxisType, PlanGrainType, PlanLinkType, PlanRowsType, PlanElementRefType,
|
|
22
|
+
import { PlanAxisType, PlanGrainType, PlanLinkType, PlanRowsType, PlanElementRefType, PlanRowIdType, PlanGroupToggleEventType, PlanFooterItemType, PlanStyleType, PlanUiBindType, PlanEditingType, } from "./types.js";
|
|
24
23
|
// ============================================================================
|
|
25
24
|
// Resolved types — the UIComponent-coupled shapes at `UIComponentType`
|
|
26
25
|
// ============================================================================
|
|
27
26
|
/**
|
|
28
|
-
* The Plan review
|
|
29
|
-
*
|
|
27
|
+
* The Plan's review chrome (#880) — the decision column's header, the foot's
|
|
28
|
+
* summary and its Rerun.
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* A verdict is a GESTURE of the root's editing session: the series whose rows
|
|
32
|
+
* are reviewed names the field it writes (`review.verdict`), Approve / Reject
|
|
33
|
+
* on a row and Approve all / Reject all over the canvas draft the entries,
|
|
34
|
+
* and Apply sends them as one checked batch. So the chrome carries no verdict
|
|
35
|
+
* callbacks — the shared contract's (`reviewType`) stay with Table, Roster
|
|
36
|
+
* and Board until they adopt a session. Rerun changes no data, so it stays a
|
|
37
|
+
* callback.
|
|
38
|
+
*
|
|
39
|
+
* @property columnLabel - The decision column's header (`"Decision"` by default)
|
|
40
|
+
* @property summary - The foot's eyebrow — a host-composed component
|
|
41
|
+
* @property onRerun - The Rerun verb (absent ⇒ no Rerun button)
|
|
42
|
+
* @property rerunLabel - The Rerun button's label (`"Rerun"` by default)
|
|
30
43
|
*/
|
|
31
|
-
export const PlanReviewType =
|
|
44
|
+
export const PlanReviewType = StructType({
|
|
45
|
+
columnLabel: StringType,
|
|
46
|
+
summary: OptionType(UIComponentType),
|
|
47
|
+
onRerun: OptionType(FunctionType([], NullType)),
|
|
48
|
+
rerunLabel: StringType,
|
|
49
|
+
});
|
|
32
50
|
/**
|
|
33
51
|
* The Plan root IR — the whole canvas.
|
|
34
52
|
*
|
|
@@ -38,8 +56,11 @@ export const PlanReviewType = reviewType(PlanRowRefType, UIComponentType);
|
|
|
38
56
|
* order is data (no sort callback), and element detail lives in the root
|
|
39
57
|
* RESOLVERS: `popover` / `hover` over {@link PlanElementRefType} (a `none`
|
|
40
58
|
* result opens nothing) and `expandRender` over the row ref (the R2
|
|
41
|
-
* developer render for rows declaring `expand
|
|
42
|
-
* surface instead of UI embedded per element.
|
|
59
|
+
* developer render for rows declaring `expand`, over the row's id) — one stored function per
|
|
60
|
+
* surface instead of UI embedded per element. A click on any element reports
|
|
61
|
+
* to ONE callback over the same ref (`onElementClick`, #824), and the
|
|
62
|
+
* interaction state a host wants to hold — selection, collapse, charts, a row
|
|
63
|
+
* to bring into view — rides a bound `ui` state.
|
|
43
64
|
*/
|
|
44
65
|
export const PlanRootType = StructType({
|
|
45
66
|
rows: PlanRowsType,
|
|
@@ -54,30 +75,33 @@ export const PlanRootType = StructType({
|
|
|
54
75
|
// the action callbacks below).
|
|
55
76
|
popover: OptionType(FunctionType([PlanElementRefType], OptionType(UIComponentType))),
|
|
56
77
|
hover: OptionType(FunctionType([PlanElementRefType], OptionType(UIComponentType))),
|
|
57
|
-
expandRender: OptionType(FunctionType([
|
|
78
|
+
expandRender: OptionType(FunctionType([PlanRowIdType], UIComponentType)),
|
|
58
79
|
// The GUTTER half of R2. An expanded row's gutter cell grows with the row
|
|
59
80
|
// (one tall cell, top-aligned), and the space that opens up is the
|
|
60
81
|
// author's — identity that only earns its place when the row has the
|
|
61
|
-
// canvas. Same shape as `expandRender`, over the same row
|
|
62
|
-
expandGutter: OptionType(FunctionType([
|
|
82
|
+
// canvas. Same shape as `expandRender`, over the same row id.
|
|
83
|
+
expandGutter: OptionType(FunctionType([PlanRowIdType], UIComponentType)),
|
|
63
84
|
review: OptionType(PlanReviewType),
|
|
85
|
+
// The editing session (#880) — every verdict, every dropped card and every
|
|
86
|
+
// moved or resized element (#825) is a draft, applied as one checked batch.
|
|
87
|
+
editing: OptionType(PlanEditingType),
|
|
64
88
|
pick: OptionType(PickBindType),
|
|
65
89
|
slice: OptionType(SliceChromeType),
|
|
66
90
|
footer: ArrayType(PlanFooterItemType),
|
|
67
|
-
// DnD target role — the shared grammar
|
|
68
|
-
|
|
91
|
+
// DnD target role — the shared grammar (contracts/drag.ts); no id, no
|
|
92
|
+
// library card lands (#824 — it used to be `""`), though the canvas's own
|
|
93
|
+
// elements still move (#825). A drop or a move is a gesture of the editing
|
|
94
|
+
// session (#880); `canDrop` vets it first.
|
|
95
|
+
id: OptionType(StringType),
|
|
69
96
|
sources: ArrayType(StringType),
|
|
70
|
-
onDrag: OptionType(FunctionType([DragEventType], NullType)),
|
|
71
97
|
canDrop: OptionType(CanDropFnType),
|
|
72
|
-
// Selection +
|
|
73
|
-
onSelect: OptionType(FunctionType([
|
|
74
|
-
|
|
75
|
-
onEventClick: OptionType(FunctionType([PlanEventClickEventType], NullType)),
|
|
76
|
-
onMarkClick: OptionType(FunctionType([PlanMarkClickEventType], NullType)),
|
|
77
|
-
onChipClick: OptionType(FunctionType([PlanChipClickEventType], NullType)),
|
|
78
|
-
onCellClick: OptionType(FunctionType([PlanCellClickEventType], NullType)),
|
|
98
|
+
// Selection + the one element click (#824).
|
|
99
|
+
onSelect: OptionType(FunctionType([PlanRowIdType], NullType)),
|
|
100
|
+
onElementClick: OptionType(FunctionType([PlanElementRefType], NullType)),
|
|
79
101
|
onGroupToggle: OptionType(FunctionType([PlanGroupToggleEventType], NullType)),
|
|
80
102
|
onGrainChange: OptionType(FunctionType([PlanGrainType], NullType)),
|
|
103
|
+
// The interaction state a host holds — a bound `State.bind` handle (#824).
|
|
104
|
+
ui: OptionType(PlanUiBindType),
|
|
81
105
|
style: OptionType(PlanStyleType),
|
|
82
106
|
});
|
|
83
107
|
//# sourceMappingURL=ir.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ir.js","sourceRoot":"","sources":["../../../../src/collections/plan/ir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,EACH,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,UAAU,EACV,UAAU,GACb,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ir.js","sourceRoot":"","sources":["../../../../src/collections/plan/ir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,EACH,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,UAAU,EACV,UAAU,GACb,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACH,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,eAAe,GAClB,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,uEAAuE;AACvE,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACrC,WAAW,EAAE,UAAU;IACvB,OAAO,EAAM,UAAU,CAAC,eAAe,CAAC;IACxC,OAAO,EAAM,UAAU,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnD,UAAU,EAAG,UAAU;CAC1B,CAAC,CAAC;AAIH;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACnC,IAAI,EAAE,YAAY;IAClB,iEAAiE;IACjE,iEAAiE;IACjE,KAAK,EAAE,SAAS,CAAC,YAAY,CAAC;IAC9B,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC;IAChC,oEAAoE;IACpE,iEAAiE;IACjE,uEAAuE;IACvE,+BAA+B;IAC/B,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;IACpF,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;IAClF,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC;IACxE,0EAA0E;IAC1E,mEAAmE;IACnE,qEAAqE;IACrE,8DAA8D;IAC9D,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC;IACxE,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC;IAClC,2EAA2E;IAC3E,4EAA4E;IAC5E,OAAO,EAAE,UAAU,CAAC,eAAe,CAAC;IACpC,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC;IAC9B,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC;IAClC,MAAM,EAAE,SAAS,CAAC,kBAAkB,CAAC;IACrC,sEAAsE;IACtE,0EAA0E;IAC1E,2EAA2E;IAC3E,2CAA2C;IAC3C,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC;IAC1B,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC;IAC9B,OAAO,EAAE,UAAU,CAAC,aAAa,CAAC;IAClC,4CAA4C;IAC5C,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7D,cAAc,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,kBAAkB,CAAC,EAAE,QAAQ,CAAC,CAAC;IACxE,aAAa,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,wBAAwB,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7E,aAAa,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClE,2EAA2E;IAC3E,EAAE,EAAE,UAAU,CAAC,cAAc,CAAC;IAC9B,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC;CACnC,CAAC,CAAC"}
|
|
@@ -6,31 +6,21 @@
|
|
|
6
6
|
* `Plan.pick` — the Plan's façade over the shared pick contract (#590).
|
|
7
7
|
*
|
|
8
8
|
* The contract holds identified things and does not know what they are, so an
|
|
9
|
-
* adopter supplies
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* adopter supplies what it cannot: how to read identity off one item. For a
|
|
10
|
+
* Plan that is an eleven-arm match over the series variant — every arm carries
|
|
11
|
+
* the same four identity fields, and the arm itself picks the kind's icon.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* There are no per-series row counts (#822): a count means something only when
|
|
14
|
+
* every entry is in hand, and nothing on a Plan may behave differently because
|
|
15
|
+
* its data is inline or paged.
|
|
16
16
|
*
|
|
17
17
|
* @packageDocumentation
|
|
18
18
|
*/
|
|
19
|
-
import { type ExprType,
|
|
19
|
+
import { type ExprType, ArrayType } from "@elaraai/east";
|
|
20
20
|
import { type PickHandle, type PickItemType } from "../../contracts/pick.js";
|
|
21
21
|
import { PlanSeriesType, type PlanSeriesInput } from "./series.js";
|
|
22
22
|
/** Options for {@link createPlanPick}. */
|
|
23
23
|
export interface PlanPickOptions {
|
|
24
|
-
/**
|
|
25
|
-
* The canvas data. Supplying it gives each library entry its row COUNT,
|
|
26
|
-
* derived by running that series' own pipeline — which is what turns "this
|
|
27
|
-
* series is on" into "this series contributes 18 rows", and what surfaces
|
|
28
|
-
* the `0 rs` case where a series is switched on to no visible effect.
|
|
29
|
-
*
|
|
30
|
-
* Omit it for a paged canvas: a window cannot know the total, and a wrong
|
|
31
|
-
* count is worse than none.
|
|
32
|
-
*/
|
|
33
|
-
data?: SubtypeExprOrValue<DictType<StringType, StructType>>;
|
|
34
24
|
/** Series switched off to begin with; omit ⇒ everything shows. */
|
|
35
25
|
hidden?: readonly string[];
|
|
36
26
|
}
|
|
@@ -38,27 +28,92 @@ export interface PlanPickOptions {
|
|
|
38
28
|
* Bind a Plan's row series to a persisted pick.
|
|
39
29
|
*
|
|
40
30
|
* @remarks
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
31
|
+
* The list is the layout (#822): the canvas shows the series still switched
|
|
32
|
+
* on, in the order they are listed, one block each — so the order written here
|
|
33
|
+
* is the order on screen. A section, a group or a views series is the unit a
|
|
34
|
+
* person picks — "add Machines" — and hiding one takes its whole subtree with
|
|
35
|
+
* it, because its members are built by its own `derive`.
|
|
46
36
|
*
|
|
47
|
-
* Identity is read through ONE
|
|
48
|
-
*
|
|
49
|
-
*
|
|
37
|
+
* Identity is read through ONE match rather than one match per accessor —
|
|
38
|
+
* every arm carries the same four fields, so matching four times would build
|
|
39
|
+
* four copies of the same traversal. A TS list is checked here for two series
|
|
40
|
+
* sharing a key (one switch would wear two labels).
|
|
41
|
+
*
|
|
42
|
+
* The handle is STATE (`State.bind` underneath), so it is built inside a
|
|
43
|
+
* `Reactive`. Pass it to the canvas as `pick`, in place of `series`: the Plan
|
|
44
|
+
* shows the picked series and mounts the library panel itself.
|
|
50
45
|
*
|
|
51
46
|
* @param key - The store key; also the persistence key
|
|
52
|
-
* @param all - Every series that COULD show
|
|
53
|
-
* @param options -
|
|
54
|
-
* @returns A pick handle over the series type
|
|
47
|
+
* @param all - Every series that COULD show, in layout order
|
|
48
|
+
* @param options - The initial hidden set ({@link PlanPickOptions})
|
|
49
|
+
* @returns A pick handle over the series type — the canvas's `pick` prop
|
|
55
50
|
*
|
|
56
51
|
* @example
|
|
57
52
|
* ```tsx
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
53
|
+
* // .tsx file with the `@jsxImportSource @elaraai/east-ui` pragma
|
|
54
|
+
* import { ArrayType, DateTimeType, DictType, East, FloatType, IntegerType, StringType, StructType, none, some, variant } from "@elaraai/east";
|
|
55
|
+
* import { EventStateType, Plan, Reactive, UIComponentType } from "@elaraai/east-ui";
|
|
56
|
+
*
|
|
57
|
+
* const canvas = East.function([], UIComponentType, (_$) => (
|
|
58
|
+
* <Reactive>{$ => {
|
|
59
|
+
* // Monday of ISO week n, 2026 — window W27–W38 (half-open), now W31.
|
|
60
|
+
* const week = $.const(East.function([IntegerType], DateTimeType, ($, n) => {
|
|
61
|
+
* const w1 = $.const(new Date("2025-12-29T00:00:00Z"), DateTimeType);
|
|
62
|
+
* return w1.addWeeks(n.subtract(1n));
|
|
63
|
+
* }));
|
|
64
|
+
* const JobRow = StructType({
|
|
65
|
+
* batch: StringType, start: DateTimeType, end: DateTimeType, state: EventStateType,
|
|
66
|
+
* });
|
|
67
|
+
* const OpsRow = StructType({
|
|
68
|
+
* series: StringType, jobs: ArrayType(JobRow), cells: ArrayType(Plan.Types.HeatCell),
|
|
69
|
+
* });
|
|
70
|
+
* const noJobs = $.const([], ArrayType(JobRow));
|
|
71
|
+
* const noCells = $.const([], ArrayType(Plan.Types.HeatCell));
|
|
72
|
+
* const pcts = $.const([46.0, 58.0, 66.0, 72.0, 84.0, 96.0], ArrayType(FloatType));
|
|
73
|
+
* const cells = $.let(East.Array.generate(6n, Plan.Types.HeatCell, (_$, i) => ({
|
|
74
|
+
* at: Plan.at.time(week(i.multiply(2n).add(27n))), value: some(pcts.get(i)), label: none,
|
|
75
|
+
* })));
|
|
76
|
+
* const ops = $.const(new Map([
|
|
77
|
+
* ["L1-M03", { series: "machines", cells: noCells,
|
|
78
|
+
* jobs: [{ batch: "B-214", start: week(28n), end: week(31n), state: variant("in-progress", null) }] }],
|
|
79
|
+
* ["L1-M04", { series: "machines", cells: noCells,
|
|
80
|
+
* jobs: [{ batch: "B-208", start: week(27n), end: week(30n), state: variant("actual", null) }] }],
|
|
81
|
+
* ["L2-load", { series: "load", cells, jobs: noJobs }],
|
|
82
|
+
* ]), DictType(StringType, OpsRow));
|
|
83
|
+
* // Every series that COULD show — the library lists these, and the
|
|
84
|
+
* // canvas shows the ones switched on in this order.
|
|
85
|
+
* const all = $.const([
|
|
86
|
+
* Plan.series.span(OpsRow, {
|
|
87
|
+
* key: "machines", title: "Machine jobs", subtitle: "one row per machine",
|
|
88
|
+
* match: r => r.series.equal("machines"),
|
|
89
|
+
* label: (_r, k) => k, id: true,
|
|
90
|
+
* runs: r => r.jobs.map((_$, j) => Plan.run({
|
|
91
|
+
* key: j.batch, start: j.start, end: j.end,
|
|
92
|
+
* label: East.str`RUN · ${j.batch}`, state: j.state,
|
|
93
|
+
* })),
|
|
94
|
+
* }),
|
|
95
|
+
* Plan.series.heat(OpsRow, {
|
|
96
|
+
* key: "load", title: "Line load", subtitle: "% per fortnight",
|
|
97
|
+
* match: r => r.series.equal("load"),
|
|
98
|
+
* label: (_r, k) => k,
|
|
99
|
+
* cells: r => Plan.heatCells(r.cells, { min: 0, max: 100 }),
|
|
100
|
+
* }),
|
|
101
|
+
* ], ArrayType(Plan.Types.Series(OpsRow)));
|
|
102
|
+
* // The handle is STATE — which series are switched off, persisted
|
|
103
|
+
* // under its key — so it lives inside the Reactive. "load" starts off.
|
|
104
|
+
* const shown = $.let(Plan.pick("ex.plan.pick", all, { hidden: ["load"] }));
|
|
105
|
+
* const axis = $.const(Plan.axis({ window: { min: week(27n), max: week(39n) }, resolution: "week", now: week(31n) }));
|
|
106
|
+
* // `pick` REPLACES `series`: the canvas shows the picked series and
|
|
107
|
+
* // mounts the library itself, so nothing else is wired.
|
|
108
|
+
* return (
|
|
109
|
+
* <Plan
|
|
110
|
+
* axis={axis}
|
|
111
|
+
* data={ops}
|
|
112
|
+
* pick={shown}
|
|
113
|
+
* />
|
|
114
|
+
* );
|
|
115
|
+
* }}</Reactive>
|
|
116
|
+
* ));
|
|
62
117
|
* ```
|
|
63
118
|
*/
|
|
64
119
|
export declare function createPlanPick(key: string, all: PlanSeriesInput, options?: PlanPickOptions): PickHandle<ReturnType<typeof PlanSeriesType>>;
|
|
@@ -69,47 +124,10 @@ export declare function createPlanPick(key: string, all: PlanSeriesInput, option
|
|
|
69
124
|
* {@link createPlanPick} builds its `items` from the same accessors, so proving
|
|
70
125
|
* this proves the bound path too. Split out because `State.bind` is not
|
|
71
126
|
* runnable in a `describeEast` spec (`TestImpl` carries no State runtime), and
|
|
72
|
-
* identity
|
|
127
|
+
* identity and kind icons are exactly the part worth asserting.
|
|
73
128
|
*
|
|
74
129
|
* @param all - Every series that COULD show
|
|
75
|
-
* @param options - Data for counts ({@link PlanPickOptions})
|
|
76
130
|
* @returns One descriptor per series, in declaration order
|
|
77
131
|
*/
|
|
78
|
-
|
|
79
|
-
* A stable signature of WHICH series a canvas is built from.
|
|
80
|
-
*
|
|
81
|
-
* @remarks
|
|
82
|
-
* Exists for the paged arm. `PagedSourceType` requires that "two sources with
|
|
83
|
-
* the same `id` must serve the same rows", and a derived source built from a
|
|
84
|
-
* SUBSET of the series serves different rows than one built from all of them —
|
|
85
|
-
* so its id has to say so.
|
|
86
|
-
*
|
|
87
|
-
* That requirement is not theoretical: the window cache invalidates on
|
|
88
|
-
* `source.id` alone (`use-plan-paging.ts`), and resident windows are immutable
|
|
89
|
-
* and served without re-calling `page`. Without a signature, toggling a series
|
|
90
|
-
* off leaves the previous rows on screen indefinitely
|
|
91
|
-
* (`use-plan-paging.dom.test.tsx` pins both halves of this).
|
|
92
|
-
*
|
|
93
|
-
* **This makes the key a load-bearing identity on a paged canvas.** The
|
|
94
|
-
* signature is the joined keys, so it assumes a key NAMES a series: same keys ⇒
|
|
95
|
-
* same rows. Two consequences worth knowing:
|
|
96
|
-
*
|
|
97
|
-
* - Two series sharing a key are safe HERE, because they share one entry in the
|
|
98
|
-
* hidden set and so toggle together — the active list is both-in or both-out,
|
|
99
|
-
* and the signature moves either way. They break the LIBRARY instead (one
|
|
100
|
-
* switch, two labels — `Pick.Panel` reports it).
|
|
101
|
-
* - A key that stays put while the series it names CHANGES is the real hazard:
|
|
102
|
-
* the id does not move, the cache is not dropped, and resident windows keep
|
|
103
|
-
* serving rows built by the previous pipeline. Keys must be stable AND
|
|
104
|
-
* identifying, which is what they were for.
|
|
105
|
-
*
|
|
106
|
-
* Row keys are a separate layer with its own rule: two series emitting the same
|
|
107
|
-
* ROW key resolve LAST_WINS inside `applySeries`, deterministically by series
|
|
108
|
-
* order, and identically in every window (#568).
|
|
109
|
-
*
|
|
110
|
-
* @param all - The series the canvas is built from
|
|
111
|
-
* @returns The series' keys, joined — stable for a given active set
|
|
112
|
-
*/
|
|
113
|
-
export declare function seriesSignature(all: PlanSeriesInput): ExprType<StringType>;
|
|
114
|
-
export declare function createPlanPickItems(all: PlanSeriesInput, options?: PlanPickOptions): ExprType<ArrayType<PickItemType>>;
|
|
132
|
+
export declare function createPlanPickItems(all: PlanSeriesInput): ExprType<ArrayType<PickItemType>>;
|
|
115
133
|
//# sourceMappingURL=pick.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../../../src/collections/plan/pick.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAEH,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../../../src/collections/plan/pick.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAEH,KAAK,QAAQ,EAEb,SAAS,EAQZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EAA6B,KAAK,UAAU,EAAE,KAAK,YAAY,EAAoB,MAAM,yBAAyB,CAAC;AAC1H,OAAO,EAAE,cAAc,EAAmC,KAAK,eAAe,EAAwB,MAAM,aAAa,CAAC;AAkC1H,0CAA0C;AAC1C,MAAM,WAAW,eAAe;IAC5B,kEAAkE;IAClE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAmDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2FG;AACH,wBAAgB,cAAc,CAC1B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,eAAe,EACpB,OAAO,CAAC,EAAE,eAAe,GAC1B,UAAU,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAO/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAI3F"}
|
|
@@ -6,28 +6,25 @@
|
|
|
6
6
|
* `Plan.pick` — the Plan's façade over the shared pick contract (#590).
|
|
7
7
|
*
|
|
8
8
|
* The contract holds identified things and does not know what they are, so an
|
|
9
|
-
* adopter supplies
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* adopter supplies what it cannot: how to read identity off one item. For a
|
|
10
|
+
* Plan that is an eleven-arm match over the series variant — every arm carries
|
|
11
|
+
* the same four identity fields, and the arm itself picks the kind's icon.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* There are no per-series row counts (#822): a count means something only when
|
|
14
|
+
* every entry is in hand, and nothing on a Plan may behave differently because
|
|
15
|
+
* its data is inline or paged.
|
|
16
16
|
*
|
|
17
17
|
* @packageDocumentation
|
|
18
18
|
*/
|
|
19
|
-
import { ArrayType,
|
|
19
|
+
import { ArrayType, East, Expr, OptionType, StringType, StructType, some, none, } from "@elaraai/east";
|
|
20
20
|
import { IconType } from "../../display/icon/types.js";
|
|
21
21
|
import { createPickBind, pickItems } from "../../contracts/pick.js";
|
|
22
|
-
import { PlanSeriesType,
|
|
22
|
+
import { PlanSeriesType, checkSeries } from "./series.js";
|
|
23
23
|
/**
|
|
24
|
-
* The FA glyph each row kind
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* nothing has ever rendered it — the library is the first surface that does.
|
|
29
|
-
* `group` and `rows` are not template kinds and so are not in that set; they
|
|
30
|
-
* take the marks that read as "a section" and "a hand-built list".
|
|
24
|
+
* The FA glyph the library shows for each series kind — the row kind's glyph
|
|
25
|
+
* for the seven row kinds; the four composites take the marks that read as
|
|
26
|
+
* "a group per entry", "a titled block", "one entry several ways" and "a
|
|
27
|
+
* hand-built list".
|
|
31
28
|
*/
|
|
32
29
|
const KIND_ICONS = {
|
|
33
30
|
span: "bars-staggered",
|
|
@@ -42,6 +39,8 @@ const KIND_ICONS = {
|
|
|
42
39
|
cards: "user-group",
|
|
43
40
|
events: "flag",
|
|
44
41
|
group: "layer-group",
|
|
42
|
+
section: "heading",
|
|
43
|
+
views: "clone",
|
|
45
44
|
rows: "list",
|
|
46
45
|
};
|
|
47
46
|
/** Identity read off ONE series — the whole of what the library needs. */
|
|
@@ -78,18 +77,15 @@ function planPickOptions(allExpr, options) {
|
|
|
78
77
|
cards: (_$2, v) => ident(v, "cards"),
|
|
79
78
|
events: (_$2, v) => ident(v, "events"),
|
|
80
79
|
group: (_$2, v) => ident(v, "group"),
|
|
80
|
+
section: (_$2, v) => ident(v, "section"),
|
|
81
|
+
views: (_$2, v) => ident(v, "views"),
|
|
81
82
|
rows: (_$2, v) => ident(v, "rows"),
|
|
82
83
|
}));
|
|
83
|
-
// The row count this series contributes — its own pipeline, run over the
|
|
84
|
-
// canvas data. Absent for a paged canvas, which cannot know a total.
|
|
85
|
-
const data = options?.data;
|
|
86
|
-
const countOf = data === undefined ? undefined : East.function([itemType], IntegerType, (_$, s) => applySeriesValue(s, East.value(data)).size());
|
|
87
84
|
return {
|
|
88
85
|
id: (s) => identityOf(s).key,
|
|
89
86
|
title: (s) => identityOf(s).title,
|
|
90
87
|
subtitle: (s) => identityOf(s).subtitle,
|
|
91
88
|
icon: (s) => identityOf(s).icon,
|
|
92
|
-
...(countOf !== undefined ? { count: (s) => some(countOf(s)) } : {}),
|
|
93
89
|
...(options?.hidden !== undefined ? { hidden: options.hidden } : {}),
|
|
94
90
|
};
|
|
95
91
|
}
|
|
@@ -97,30 +93,96 @@ function planPickOptions(allExpr, options) {
|
|
|
97
93
|
* Bind a Plan's row series to a persisted pick.
|
|
98
94
|
*
|
|
99
95
|
* @remarks
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
96
|
+
* The list is the layout (#822): the canvas shows the series still switched
|
|
97
|
+
* on, in the order they are listed, one block each — so the order written here
|
|
98
|
+
* is the order on screen. A section, a group or a views series is the unit a
|
|
99
|
+
* person picks — "add Machines" — and hiding one takes its whole subtree with
|
|
100
|
+
* it, because its members are built by its own `derive`.
|
|
101
|
+
*
|
|
102
|
+
* Identity is read through ONE match rather than one match per accessor —
|
|
103
|
+
* every arm carries the same four fields, so matching four times would build
|
|
104
|
+
* four copies of the same traversal. A TS list is checked here for two series
|
|
105
|
+
* sharing a key (one switch would wear two labels).
|
|
105
106
|
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
107
|
+
* The handle is STATE (`State.bind` underneath), so it is built inside a
|
|
108
|
+
* `Reactive`. Pass it to the canvas as `pick`, in place of `series`: the Plan
|
|
109
|
+
* shows the picked series and mounts the library panel itself.
|
|
109
110
|
*
|
|
110
111
|
* @param key - The store key; also the persistence key
|
|
111
|
-
* @param all - Every series that COULD show
|
|
112
|
-
* @param options -
|
|
113
|
-
* @returns A pick handle over the series type
|
|
112
|
+
* @param all - Every series that COULD show, in layout order
|
|
113
|
+
* @param options - The initial hidden set ({@link PlanPickOptions})
|
|
114
|
+
* @returns A pick handle over the series type — the canvas's `pick` prop
|
|
114
115
|
*
|
|
115
116
|
* @example
|
|
116
117
|
* ```tsx
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
118
|
+
* // .tsx file with the `@jsxImportSource @elaraai/east-ui` pragma
|
|
119
|
+
* import { ArrayType, DateTimeType, DictType, East, FloatType, IntegerType, StringType, StructType, none, some, variant } from "@elaraai/east";
|
|
120
|
+
* import { EventStateType, Plan, Reactive, UIComponentType } from "@elaraai/east-ui";
|
|
121
|
+
*
|
|
122
|
+
* const canvas = East.function([], UIComponentType, (_$) => (
|
|
123
|
+
* <Reactive>{$ => {
|
|
124
|
+
* // Monday of ISO week n, 2026 — window W27–W38 (half-open), now W31.
|
|
125
|
+
* const week = $.const(East.function([IntegerType], DateTimeType, ($, n) => {
|
|
126
|
+
* const w1 = $.const(new Date("2025-12-29T00:00:00Z"), DateTimeType);
|
|
127
|
+
* return w1.addWeeks(n.subtract(1n));
|
|
128
|
+
* }));
|
|
129
|
+
* const JobRow = StructType({
|
|
130
|
+
* batch: StringType, start: DateTimeType, end: DateTimeType, state: EventStateType,
|
|
131
|
+
* });
|
|
132
|
+
* const OpsRow = StructType({
|
|
133
|
+
* series: StringType, jobs: ArrayType(JobRow), cells: ArrayType(Plan.Types.HeatCell),
|
|
134
|
+
* });
|
|
135
|
+
* const noJobs = $.const([], ArrayType(JobRow));
|
|
136
|
+
* const noCells = $.const([], ArrayType(Plan.Types.HeatCell));
|
|
137
|
+
* const pcts = $.const([46.0, 58.0, 66.0, 72.0, 84.0, 96.0], ArrayType(FloatType));
|
|
138
|
+
* const cells = $.let(East.Array.generate(6n, Plan.Types.HeatCell, (_$, i) => ({
|
|
139
|
+
* at: Plan.at.time(week(i.multiply(2n).add(27n))), value: some(pcts.get(i)), label: none,
|
|
140
|
+
* })));
|
|
141
|
+
* const ops = $.const(new Map([
|
|
142
|
+
* ["L1-M03", { series: "machines", cells: noCells,
|
|
143
|
+
* jobs: [{ batch: "B-214", start: week(28n), end: week(31n), state: variant("in-progress", null) }] }],
|
|
144
|
+
* ["L1-M04", { series: "machines", cells: noCells,
|
|
145
|
+
* jobs: [{ batch: "B-208", start: week(27n), end: week(30n), state: variant("actual", null) }] }],
|
|
146
|
+
* ["L2-load", { series: "load", cells, jobs: noJobs }],
|
|
147
|
+
* ]), DictType(StringType, OpsRow));
|
|
148
|
+
* // Every series that COULD show — the library lists these, and the
|
|
149
|
+
* // canvas shows the ones switched on in this order.
|
|
150
|
+
* const all = $.const([
|
|
151
|
+
* Plan.series.span(OpsRow, {
|
|
152
|
+
* key: "machines", title: "Machine jobs", subtitle: "one row per machine",
|
|
153
|
+
* match: r => r.series.equal("machines"),
|
|
154
|
+
* label: (_r, k) => k, id: true,
|
|
155
|
+
* runs: r => r.jobs.map((_$, j) => Plan.run({
|
|
156
|
+
* key: j.batch, start: j.start, end: j.end,
|
|
157
|
+
* label: East.str`RUN · ${j.batch}`, state: j.state,
|
|
158
|
+
* })),
|
|
159
|
+
* }),
|
|
160
|
+
* Plan.series.heat(OpsRow, {
|
|
161
|
+
* key: "load", title: "Line load", subtitle: "% per fortnight",
|
|
162
|
+
* match: r => r.series.equal("load"),
|
|
163
|
+
* label: (_r, k) => k,
|
|
164
|
+
* cells: r => Plan.heatCells(r.cells, { min: 0, max: 100 }),
|
|
165
|
+
* }),
|
|
166
|
+
* ], ArrayType(Plan.Types.Series(OpsRow)));
|
|
167
|
+
* // The handle is STATE — which series are switched off, persisted
|
|
168
|
+
* // under its key — so it lives inside the Reactive. "load" starts off.
|
|
169
|
+
* const shown = $.let(Plan.pick("ex.plan.pick", all, { hidden: ["load"] }));
|
|
170
|
+
* const axis = $.const(Plan.axis({ window: { min: week(27n), max: week(39n) }, resolution: "week", now: week(31n) }));
|
|
171
|
+
* // `pick` REPLACES `series`: the canvas shows the picked series and
|
|
172
|
+
* // mounts the library itself, so nothing else is wired.
|
|
173
|
+
* return (
|
|
174
|
+
* <Plan
|
|
175
|
+
* axis={axis}
|
|
176
|
+
* data={ops}
|
|
177
|
+
* pick={shown}
|
|
178
|
+
* />
|
|
179
|
+
* );
|
|
180
|
+
* }}</Reactive>
|
|
181
|
+
* ));
|
|
121
182
|
* ```
|
|
122
183
|
*/
|
|
123
184
|
export function createPlanPick(key, all, options) {
|
|
185
|
+
checkSeries(all, "Plan.pick");
|
|
124
186
|
const allExpr = East.value(all);
|
|
125
187
|
// Typed at the SERIES shape, not the erased element type: that is what
|
|
126
188
|
// makes `Pick.active(shown)` assignable straight back to the `series` prop.
|
|
@@ -133,61 +195,14 @@ export function createPlanPick(key, all, options) {
|
|
|
133
195
|
* {@link createPlanPick} builds its `items` from the same accessors, so proving
|
|
134
196
|
* this proves the bound path too. Split out because `State.bind` is not
|
|
135
197
|
* runnable in a `describeEast` spec (`TestImpl` carries no State runtime), and
|
|
136
|
-
* identity
|
|
198
|
+
* identity and kind icons are exactly the part worth asserting.
|
|
137
199
|
*
|
|
138
200
|
* @param all - Every series that COULD show
|
|
139
|
-
* @param options - Data for counts ({@link PlanPickOptions})
|
|
140
201
|
* @returns One descriptor per series, in declaration order
|
|
141
202
|
*/
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
*
|
|
145
|
-
* @remarks
|
|
146
|
-
* Exists for the paged arm. `PagedSourceType` requires that "two sources with
|
|
147
|
-
* the same `id` must serve the same rows", and a derived source built from a
|
|
148
|
-
* SUBSET of the series serves different rows than one built from all of them —
|
|
149
|
-
* so its id has to say so.
|
|
150
|
-
*
|
|
151
|
-
* That requirement is not theoretical: the window cache invalidates on
|
|
152
|
-
* `source.id` alone (`use-plan-paging.ts`), and resident windows are immutable
|
|
153
|
-
* and served without re-calling `page`. Without a signature, toggling a series
|
|
154
|
-
* off leaves the previous rows on screen indefinitely
|
|
155
|
-
* (`use-plan-paging.dom.test.tsx` pins both halves of this).
|
|
156
|
-
*
|
|
157
|
-
* **This makes the key a load-bearing identity on a paged canvas.** The
|
|
158
|
-
* signature is the joined keys, so it assumes a key NAMES a series: same keys ⇒
|
|
159
|
-
* same rows. Two consequences worth knowing:
|
|
160
|
-
*
|
|
161
|
-
* - Two series sharing a key are safe HERE, because they share one entry in the
|
|
162
|
-
* hidden set and so toggle together — the active list is both-in or both-out,
|
|
163
|
-
* and the signature moves either way. They break the LIBRARY instead (one
|
|
164
|
-
* switch, two labels — `Pick.Panel` reports it).
|
|
165
|
-
* - A key that stays put while the series it names CHANGES is the real hazard:
|
|
166
|
-
* the id does not move, the cache is not dropped, and resident windows keep
|
|
167
|
-
* serving rows built by the previous pipeline. Keys must be stable AND
|
|
168
|
-
* identifying, which is what they were for.
|
|
169
|
-
*
|
|
170
|
-
* Row keys are a separate layer with its own rule: two series emitting the same
|
|
171
|
-
* ROW key resolve LAST_WINS inside `applySeries`, deterministically by series
|
|
172
|
-
* order, and identically in every window (#568).
|
|
173
|
-
*
|
|
174
|
-
* @param all - The series the canvas is built from
|
|
175
|
-
* @returns The series' keys, joined — stable for a given active set
|
|
176
|
-
*/
|
|
177
|
-
export function seriesSignature(all) {
|
|
178
|
-
const allExpr = East.value(all);
|
|
179
|
-
const itemType = Expr.type(allExpr).value;
|
|
180
|
-
// An EMPTY series list has no element type (`Never`), so there is no
|
|
181
|
-
// variant to match on — and nothing to distinguish either. A canvas with no
|
|
182
|
-
// series is legal (`Plan.Root({ …, series: [] })`).
|
|
183
|
-
if (itemType.type !== "Variant")
|
|
184
|
-
return East.value("", StringType);
|
|
185
|
-
const keyOf = planPickOptions(allExpr).id;
|
|
186
|
-
const keyFn = East.function([itemType], StringType, (_$, s) => keyOf(s));
|
|
187
|
-
return allExpr.reduce((_$, acc, s) => East.str `${acc}/${keyFn(s)}`, East.value("", StringType));
|
|
188
|
-
}
|
|
189
|
-
export function createPlanPickItems(all, options) {
|
|
203
|
+
export function createPlanPickItems(all) {
|
|
204
|
+
checkSeries(all, "Plan.pickItems");
|
|
190
205
|
const allExpr = East.value(all);
|
|
191
|
-
return pickItems(allExpr, planPickOptions(allExpr
|
|
206
|
+
return pickItems(allExpr, planPickOptions(allExpr));
|
|
192
207
|
}
|
|
193
208
|
//# sourceMappingURL=pick.js.map
|