@elaraai/e3-ui 1.0.86 → 1.0.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/bind/data-indexed.d.ts +159 -0
- package/dist/src/bind/data-indexed.d.ts.map +1 -0
- package/dist/src/bind/data-indexed.js +105 -0
- package/dist/src/bind/data-indexed.js.map +1 -0
- package/dist/src/bind/data.d.ts +5 -3
- package/dist/src/bind/data.d.ts.map +1 -1
- package/dist/src/bind/data.js +6 -0
- package/dist/src/bind/data.js.map +1 -1
- package/dist/src/bind/record.d.ts +34 -23
- package/dist/src/bind/record.d.ts.map +1 -1
- package/dist/src/bind/record.js +46 -19
- package/dist/src/bind/record.js.map +1 -1
- package/dist/src/calendar/index.d.ts +2923 -0
- package/dist/src/calendar/index.d.ts.map +1 -0
- package/dist/src/calendar/index.js +135 -0
- package/dist/src/calendar/index.js.map +1 -0
- package/dist/src/decision/queue.d.ts +3 -3
- package/dist/src/decision/queue.d.ts.map +1 -1
- package/dist/src/decision/queue.js +2 -2
- package/dist/src/decision/queue.js.map +1 -1
- package/dist/src/decision/types.d.ts +4 -0
- package/dist/src/decision/types.d.ts.map +1 -1
- package/dist/src/decision/types.js +4 -0
- package/dist/src/decision/types.js.map +1 -1
- package/dist/src/flowchart/canvas.d.ts +114 -0
- package/dist/src/flowchart/canvas.d.ts.map +1 -0
- package/dist/src/flowchart/canvas.js +84 -0
- package/dist/src/flowchart/canvas.js.map +1 -0
- package/dist/src/flowchart/flowchart.d.ts +79 -0
- package/dist/src/flowchart/flowchart.d.ts.map +1 -0
- package/dist/src/flowchart/flowchart.js +9 -0
- package/dist/src/flowchart/flowchart.js.map +1 -0
- package/dist/src/flowchart/index.d.ts +305 -0
- package/dist/src/flowchart/index.d.ts.map +1 -0
- package/dist/src/flowchart/index.js +267 -0
- package/dist/src/flowchart/index.js.map +1 -0
- package/dist/src/flowchart/library.d.ts +720 -0
- package/dist/src/flowchart/library.d.ts.map +1 -0
- package/dist/src/flowchart/library.js +611 -0
- package/dist/src/flowchart/library.js.map +1 -0
- package/dist/src/flowchart/over.d.ts +234 -0
- package/dist/src/flowchart/over.d.ts.map +1 -0
- package/dist/src/flowchart/over.js +220 -0
- package/dist/src/flowchart/over.js.map +1 -0
- package/dist/src/flowchart/patch.d.ts +64 -0
- package/dist/src/flowchart/patch.d.ts.map +1 -0
- package/dist/src/flowchart/patch.js +67 -0
- package/dist/src/flowchart/patch.js.map +1 -0
- package/dist/src/flowchart/payload.d.ts +8220 -0
- package/dist/src/flowchart/payload.d.ts.map +1 -0
- package/dist/src/flowchart/payload.js +521 -0
- package/dist/src/flowchart/payload.js.map +1 -0
- package/dist/src/flowchart/types.d.ts +393 -0
- package/dist/src/flowchart/types.d.ts.map +1 -0
- package/dist/src/flowchart/types.js +216 -0
- package/dist/src/flowchart/types.js.map +1 -0
- package/dist/src/flowchart/values.d.ts +267 -0
- package/dist/src/flowchart/values.d.ts.map +1 -0
- package/dist/src/flowchart/values.js +216 -0
- package/dist/src/flowchart/values.js.map +1 -0
- package/dist/src/flowchart/window.d.ts +521 -0
- package/dist/src/flowchart/window.d.ts.map +1 -0
- package/dist/src/flowchart/window.js +69 -0
- package/dist/src/flowchart/window.js.map +1 -0
- package/dist/src/index.d.ts +25 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +48 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +35 -3
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +72 -3
- package/dist/src/internal.js.map +1 -1
- package/dist/src/plan/assemble.d.ts +2224 -0
- package/dist/src/plan/assemble.d.ts.map +1 -0
- package/dist/src/plan/assemble.js +210 -0
- package/dist/src/plan/assemble.js.map +1 -0
- package/dist/src/plan/builders.d.ts +790 -0
- package/dist/src/plan/builders.d.ts.map +1 -0
- package/dist/src/plan/builders.js +749 -0
- package/dist/src/plan/builders.js.map +1 -0
- package/dist/src/plan/event-rows.d.ts +2565 -0
- package/dist/src/plan/event-rows.d.ts.map +1 -0
- package/dist/src/plan/event-rows.js +689 -0
- package/dist/src/plan/event-rows.js.map +1 -0
- package/dist/src/plan/factories.d.ts +458 -0
- package/dist/src/plan/factories.d.ts.map +1 -0
- package/dist/src/plan/factories.js +484 -0
- package/dist/src/plan/factories.js.map +1 -0
- package/dist/src/plan/index.d.ts +672 -0
- package/dist/src/plan/index.d.ts.map +1 -0
- package/dist/src/plan/index.js +532 -0
- package/dist/src/plan/index.js.map +1 -0
- package/dist/src/plan/ir.d.ts +2594 -0
- package/dist/src/plan/ir.d.ts.map +1 -0
- package/dist/src/plan/ir.js +78 -0
- package/dist/src/plan/ir.js.map +1 -0
- package/dist/src/plan/library.d.ts +772 -0
- package/dist/src/plan/library.d.ts.map +1 -0
- package/dist/src/plan/library.js +424 -0
- package/dist/src/plan/library.js.map +1 -0
- package/dist/src/plan/ordered-source.d.ts +27 -0
- package/dist/src/plan/ordered-source.d.ts.map +1 -0
- package/dist/src/plan/ordered-source.js +48 -0
- package/dist/src/plan/ordered-source.js.map +1 -0
- package/dist/src/plan/over.d.ts +247 -0
- package/dist/src/plan/over.d.ts.map +1 -0
- package/dist/src/plan/over.js +266 -0
- package/dist/src/plan/over.js.map +1 -0
- package/dist/src/plan/pick.d.ts +78 -0
- package/dist/src/plan/pick.d.ts.map +1 -0
- package/dist/src/plan/pick.js +146 -0
- package/dist/src/plan/pick.js.map +1 -0
- package/dist/src/plan/plan.d.ts +11611 -0
- package/dist/src/plan/plan.d.ts.map +1 -0
- package/dist/src/plan/plan.js +428 -0
- package/dist/src/plan/plan.js.map +1 -0
- package/dist/src/plan/refs.d.ts +218 -0
- package/dist/src/plan/refs.d.ts.map +1 -0
- package/dist/src/plan/refs.js +226 -0
- package/dist/src/plan/refs.js.map +1 -0
- package/dist/src/plan/root.d.ts +290 -0
- package/dist/src/plan/root.d.ts.map +1 -0
- package/dist/src/plan/root.js +463 -0
- package/dist/src/plan/root.js.map +1 -0
- package/dist/src/plan/series.d.ts +13554 -0
- package/dist/src/plan/series.d.ts.map +1 -0
- package/dist/src/plan/series.js +1921 -0
- package/dist/src/plan/series.js.map +1 -0
- package/dist/src/plan/types.d.ts +12400 -0
- package/dist/src/plan/types.d.ts.map +1 -0
- package/dist/src/plan/types.js +1335 -0
- package/dist/src/plan/types.js.map +1 -0
- package/dist/src/roster/coverage.d.ts +240 -0
- package/dist/src/roster/coverage.d.ts.map +1 -0
- package/dist/src/roster/coverage.js +109 -0
- package/dist/src/roster/coverage.js.map +1 -0
- package/dist/src/roster/index.d.ts +4028 -0
- package/dist/src/roster/index.d.ts.map +1 -0
- package/dist/src/roster/index.js +115 -0
- package/dist/src/roster/index.js.map +1 -0
- package/dist/src/roster/library.d.ts +106 -0
- package/dist/src/roster/library.d.ts.map +1 -0
- package/dist/src/roster/library.js +78 -0
- package/dist/src/roster/library.js.map +1 -0
- package/dist/src/roster/people.d.ts +50 -0
- package/dist/src/roster/people.d.ts.map +1 -0
- package/dist/src/roster/people.js +32 -0
- package/dist/src/roster/people.js.map +1 -0
- package/dist/src/roster/rules.d.ts +275 -0
- package/dist/src/roster/rules.d.ts.map +1 -0
- package/dist/src/roster/rules.js +162 -0
- package/dist/src/roster/rules.js.map +1 -0
- package/dist/src/roster/types.d.ts +672 -0
- package/dist/src/roster/types.d.ts.map +1 -0
- package/dist/src/roster/types.js +248 -0
- package/dist/src/roster/types.js.map +1 -0
- package/dist/src/roster/visibility.d.ts +66 -0
- package/dist/src/roster/visibility.d.ts.map +1 -0
- package/dist/src/roster/visibility.js +25 -0
- package/dist/src/roster/visibility.js.map +1 -0
- package/dist/src/schedule/days.d.ts +54 -0
- package/dist/src/schedule/days.d.ts.map +1 -0
- package/dist/src/schedule/days.js +68 -0
- package/dist/src/schedule/days.js.map +1 -0
- package/dist/src/schedule/events.d.ts +433 -0
- package/dist/src/schedule/events.d.ts.map +1 -0
- package/dist/src/schedule/events.js +851 -0
- package/dist/src/schedule/events.js.map +1 -0
- package/dist/src/schedule/index.d.ts +150 -0
- package/dist/src/schedule/index.d.ts.map +1 -0
- package/dist/src/schedule/index.js +132 -0
- package/dist/src/schedule/index.js.map +1 -0
- package/dist/src/schedule/library.d.ts +70 -0
- package/dist/src/schedule/library.d.ts.map +1 -0
- package/dist/src/schedule/library.js +102 -0
- package/dist/src/schedule/library.js.map +1 -0
- package/dist/src/schedule/patch.d.ts +74 -0
- package/dist/src/schedule/patch.d.ts.map +1 -0
- package/dist/src/schedule/patch.js +68 -0
- package/dist/src/schedule/patch.js.map +1 -0
- package/dist/src/schedule/record-window.d.ts +189 -0
- package/dist/src/schedule/record-window.d.ts.map +1 -0
- package/dist/src/schedule/record-window.js +95 -0
- package/dist/src/schedule/record-window.js.map +1 -0
- package/dist/src/schedule/resources.d.ts +165 -0
- package/dist/src/schedule/resources.d.ts.map +1 -0
- package/dist/src/schedule/resources.js +234 -0
- package/dist/src/schedule/resources.js.map +1 -0
- package/dist/src/schedule/templates.d.ts +47 -0
- package/dist/src/schedule/templates.d.ts.map +1 -0
- package/dist/src/schedule/templates.js +61 -0
- package/dist/src/schedule/templates.js.map +1 -0
- package/dist/src/schedule/types.d.ts +1677 -0
- package/dist/src/schedule/types.d.ts.map +1 -0
- package/dist/src/schedule/types.js +374 -0
- package/dist/src/schedule/types.js.map +1 -0
- package/dist/src/schedule/window.d.ts +154 -0
- package/dist/src/schedule/window.d.ts.map +1 -0
- package/dist/src/schedule/window.js +363 -0
- package/dist/src/schedule/window.js.map +1 -0
- package/dist/src/sheet/bridge.d.ts +385 -0
- package/dist/src/sheet/bridge.d.ts.map +1 -0
- package/dist/src/sheet/bridge.js +809 -0
- package/dist/src/sheet/bridge.js.map +1 -0
- package/dist/src/sheet/columns.d.ts +410 -0
- package/dist/src/sheet/columns.d.ts.map +1 -0
- package/dist/src/sheet/columns.js +99 -0
- package/dist/src/sheet/columns.js.map +1 -0
- package/dist/src/sheet/context-bridge.d.ts +48 -0
- package/dist/src/sheet/context-bridge.d.ts.map +1 -0
- package/dist/src/sheet/context-bridge.js +216 -0
- package/dist/src/sheet/context-bridge.js.map +1 -0
- package/dist/src/sheet/draft-bridge.d.ts +37 -0
- package/dist/src/sheet/draft-bridge.d.ts.map +1 -0
- package/dist/src/sheet/draft-bridge.js +153 -0
- package/dist/src/sheet/draft-bridge.js.map +1 -0
- package/dist/src/sheet/drafts.d.ts +14 -0
- package/dist/src/sheet/drafts.d.ts.map +1 -0
- package/dist/src/sheet/drafts.js +14 -0
- package/dist/src/sheet/drafts.js.map +1 -0
- package/dist/src/sheet/editing-bridge.d.ts +40 -0
- package/dist/src/sheet/editing-bridge.d.ts.map +1 -0
- package/dist/src/sheet/editing-bridge.js +231 -0
- package/dist/src/sheet/editing-bridge.js.map +1 -0
- package/dist/src/sheet/editing-types.d.ts +268 -0
- package/dist/src/sheet/editing-types.d.ts.map +1 -0
- package/dist/src/sheet/editing-types.js +34 -0
- package/dist/src/sheet/editing-types.js.map +1 -0
- package/dist/src/sheet/edits.d.ts +37 -0
- package/dist/src/sheet/edits.d.ts.map +1 -0
- package/dist/src/sheet/edits.js +31 -0
- package/dist/src/sheet/edits.js.map +1 -0
- package/dist/src/sheet/fields.d.ts +693 -0
- package/dist/src/sheet/fields.d.ts.map +1 -0
- package/dist/src/sheet/fields.js +280 -0
- package/dist/src/sheet/fields.js.map +1 -0
- package/dist/src/sheet/group.d.ts +165 -0
- package/dist/src/sheet/group.d.ts.map +1 -0
- package/dist/src/sheet/group.js +52 -0
- package/dist/src/sheet/group.js.map +1 -0
- package/dist/src/sheet/index.d.ts +542 -0
- package/dist/src/sheet/index.d.ts.map +1 -0
- package/dist/src/sheet/index.js +387 -0
- package/dist/src/sheet/index.js.map +1 -0
- package/dist/src/sheet/library.d.ts +284 -0
- package/dist/src/sheet/library.d.ts.map +1 -0
- package/dist/src/sheet/library.js +259 -0
- package/dist/src/sheet/library.js.map +1 -0
- package/dist/src/sheet/link.d.ts +398 -0
- package/dist/src/sheet/link.d.ts.map +1 -0
- package/dist/src/sheet/link.js +228 -0
- package/dist/src/sheet/link.js.map +1 -0
- package/dist/src/sheet/record.d.ts +75 -0
- package/dist/src/sheet/record.d.ts.map +1 -0
- package/dist/src/sheet/record.js +128 -0
- package/dist/src/sheet/record.js.map +1 -0
- package/dist/src/sheet/registers.d.ts +681 -0
- package/dist/src/sheet/registers.d.ts.map +1 -0
- package/dist/src/sheet/registers.js +671 -0
- package/dist/src/sheet/registers.js.map +1 -0
- package/dist/src/sheet/root.d.ts +329 -0
- package/dist/src/sheet/root.d.ts.map +1 -0
- package/dist/src/sheet/root.js +511 -0
- package/dist/src/sheet/root.js.map +1 -0
- package/dist/src/sheet/seed-bridge.d.ts +14 -0
- package/dist/src/sheet/seed-bridge.d.ts.map +1 -0
- package/dist/src/sheet/seed-bridge.js +51 -0
- package/dist/src/sheet/seed-bridge.js.map +1 -0
- package/dist/src/sheet/sheet.d.ts +11819 -0
- package/dist/src/sheet/sheet.d.ts.map +1 -0
- package/dist/src/sheet/sheet.js +236 -0
- package/dist/src/sheet/sheet.js.map +1 -0
- package/dist/src/sheet/sub-rows.d.ts +299 -0
- package/dist/src/sheet/sub-rows.d.ts.map +1 -0
- package/dist/src/sheet/sub-rows.js +272 -0
- package/dist/src/sheet/sub-rows.js.map +1 -0
- package/dist/src/sheet/templates.d.ts +161 -0
- package/dist/src/sheet/templates.d.ts.map +1 -0
- package/dist/src/sheet/templates.js +122 -0
- package/dist/src/sheet/templates.js.map +1 -0
- package/dist/src/sheet/transactions.d.ts +76 -0
- package/dist/src/sheet/transactions.d.ts.map +1 -0
- package/dist/src/sheet/transactions.js +40 -0
- package/dist/src/sheet/transactions.js.map +1 -0
- package/dist/src/sheet/types.d.ts +15226 -0
- package/dist/src/sheet/types.d.ts.map +1 -0
- package/dist/src/sheet/types.js +1070 -0
- package/dist/src/sheet/types.js.map +1 -0
- package/dist/src/sheet/views.d.ts +29 -0
- package/dist/src/sheet/views.d.ts.map +1 -0
- package/dist/src/sheet/views.js +43 -0
- package/dist/src/sheet/views.js.map +1 -0
- package/dist/src/studio/component.d.ts.map +1 -1
- package/dist/src/studio/component.js +11 -8
- package/dist/src/studio/component.js.map +1 -1
- package/dist/src/utils/derive.d.ts +134 -8
- package/dist/src/utils/derive.d.ts.map +1 -1
- package/dist/src/utils/derive.js +409 -7
- package/dist/src/utils/derive.js.map +1 -1
- package/dist/src/utils/ordered-source.d.ts +38 -0
- package/dist/src/utils/ordered-source.d.ts.map +1 -0
- package/dist/src/utils/ordered-source.js +45 -0
- package/dist/src/utils/ordered-source.js.map +1 -0
- package/dist/src/utils/row-inspector.d.ts +36 -0
- package/dist/src/utils/row-inspector.d.ts.map +1 -0
- package/dist/src/utils/row-inspector.js +49 -0
- package/dist/src/utils/row-inspector.js.map +1 -0
- package/dist/test/bind/data/data.examples.d.ts +21 -19
- package/dist/test/bind/data/data.examples.d.ts.map +1 -1
- package/dist/test/bind/data/data.examples.js +122 -122
- package/dist/test/bind/data/data.examples.js.map +1 -1
- package/dist/test/bind/record/record.examples.d.ts.map +1 -1
- package/dist/test/bind/record/record.examples.js +9 -9
- package/dist/test/bind/record/record.examples.js.map +1 -1
- package/dist/test/calendar/calendar-records.examples.d.ts +228 -0
- package/dist/test/calendar/calendar-records.examples.d.ts.map +1 -0
- package/dist/test/calendar/calendar-records.examples.js +91 -0
- package/dist/test/calendar/calendar-records.examples.js.map +1 -0
- package/dist/test/calendar/calendar.examples.d.ts +776 -0
- package/dist/test/calendar/calendar.examples.d.ts.map +1 -0
- package/dist/test/calendar/calendar.examples.js +336 -0
- package/dist/test/calendar/calendar.examples.js.map +1 -0
- package/dist/test/decision/journal.examples.d.ts +28 -28
- package/dist/test/decision/journal.examples.d.ts.map +1 -1
- package/dist/test/decision/journal.examples.js +4 -4
- package/dist/test/decision/journal.examples.js.map +1 -1
- package/dist/test/decision/queue.examples.d.ts.map +1 -1
- package/dist/test/decision/queue.examples.js +5 -7
- package/dist/test/decision/queue.examples.js.map +1 -1
- package/dist/test/flowchart/flowchart.examples.d.ts +3713 -0
- package/dist/test/flowchart/flowchart.examples.d.ts.map +1 -0
- package/dist/test/flowchart/flowchart.examples.js +465 -0
- package/dist/test/flowchart/flowchart.examples.js.map +1 -0
- package/dist/test/plan/plan-events.examples.d.ts +3666 -0
- package/dist/test/plan/plan-events.examples.d.ts.map +1 -0
- package/dist/test/plan/plan-events.examples.js +773 -0
- package/dist/test/plan/plan-events.examples.js.map +1 -0
- package/dist/test/plan/plan-records.examples.d.ts +3 -0
- package/dist/test/plan/plan-records.examples.d.ts.map +1 -0
- package/dist/test/plan/plan-records.examples.js +45 -0
- package/dist/test/plan/plan-records.examples.js.map +1 -0
- package/dist/test/plan/plan-windows.examples.d.ts +588 -0
- package/dist/test/plan/plan-windows.examples.d.ts.map +1 -0
- package/dist/test/plan/plan-windows.examples.js +170 -0
- package/dist/test/plan/plan-windows.examples.js.map +1 -0
- package/dist/test/plan/plan.examples.d.ts +8095 -0
- package/dist/test/plan/plan.examples.d.ts.map +1 -0
- package/dist/test/plan/plan.examples.js +2500 -0
- package/dist/test/plan/plan.examples.js.map +1 -0
- package/dist/test/roster/domain.examples.d.ts +367 -0
- package/dist/test/roster/domain.examples.d.ts.map +1 -0
- package/dist/test/roster/domain.examples.js +72 -0
- package/dist/test/roster/domain.examples.js.map +1 -0
- package/dist/test/roster/roster-records.examples.d.ts +729 -0
- package/dist/test/roster/roster-records.examples.d.ts.map +1 -0
- package/dist/test/roster/roster-records.examples.js +86 -0
- package/dist/test/roster/roster-records.examples.js.map +1 -0
- package/dist/test/roster/roster.examples.d.ts +750 -0
- package/dist/test/roster/roster.examples.d.ts.map +1 -0
- package/dist/test/roster/roster.examples.js +198 -0
- package/dist/test/roster/roster.examples.js.map +1 -0
- package/dist/test/roster/warehouse.d.ts +87 -0
- package/dist/test/roster/warehouse.d.ts.map +1 -0
- package/dist/test/roster/warehouse.js +883 -0
- package/dist/test/roster/warehouse.js.map +1 -0
- package/dist/test/sheet/sheet-link.examples.d.ts +7 -0
- package/dist/test/sheet/sheet-link.examples.d.ts.map +1 -0
- package/dist/test/sheet/sheet-link.examples.js +41 -0
- package/dist/test/sheet/sheet-link.examples.js.map +1 -0
- package/dist/test/sheet/sheet-records.examples.d.ts +421 -0
- package/dist/test/sheet/sheet-records.examples.d.ts.map +1 -0
- package/dist/test/sheet/sheet-records.examples.js +79 -0
- package/dist/test/sheet/sheet-records.examples.js.map +1 -0
- package/dist/test/sheet/sheet-transactions.examples.d.ts +7 -0
- package/dist/test/sheet/sheet-transactions.examples.d.ts.map +1 -0
- package/dist/test/sheet/sheet-transactions.examples.js +58 -0
- package/dist/test/sheet/sheet-transactions.examples.js.map +1 -0
- package/dist/test/sheet/sheet.examples.d.ts +5562 -0
- package/dist/test/sheet/sheet.examples.d.ts.map +1 -0
- package/dist/test/sheet/sheet.examples.js +1178 -0
- package/dist/test/sheet/sheet.examples.js.map +1 -0
- package/dist/test/studio/studio.examples.d.ts.map +1 -1
- package/dist/test/studio/studio.examples.js +11 -11
- package/dist/test/studio/studio.examples.js.map +1 -1
- package/package.json +12 -9
|
@@ -0,0 +1,463 @@
|
|
|
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 Plan's canvas — `Plan.Root`, which assembles the canvas's root
|
|
7
|
+
* ({@link PlanRootType}): its rows over `data`, its axis, links, editing
|
|
8
|
+
* session and the rest. `<Plan>` carries it in its payload (#1191),
|
|
9
|
+
* beside the event kinds and their resources.
|
|
10
|
+
*
|
|
11
|
+
* @packageDocumentation
|
|
12
|
+
*/
|
|
13
|
+
import { East, Expr, ArrayType, AsyncFunctionType, BlobType, BooleanType, DictType, FunctionType, IntegerType, NullType, OptionType, StringType, StructType, isTypeEqual, ref, toEastTypeValue, variant, some, none, } from "@elaraai/east";
|
|
14
|
+
import { DensityType, DragEventType, PickBindType, StatusValueType, UIComponentType, } from "@elaraai/east-ui";
|
|
15
|
+
import { EditingApplyResultType, EditingChangeSetTypeFor, EditingDraftFieldType, EditingPatchEventTypeWith, EditingReadinessType, EditingWireApplyType, SliceAffordanceType, SliceBindType, SliceChromeType, localSliceHandle, isRecordSlice, recordSliceChrome, buildKeyedInlineApply, buildPagedWindow, buildRowSource, checkedEditingCallback, pickActive, resolveRowSource, resolveTag, } from "@elaraai/east-ui/internal";
|
|
16
|
+
import { PlanAxisType, PlanGrainType, PlanLinkType, PlanRowIdType, PlanGroupToggleEventType, PlanFooterItemType, PlanStyleType, PlanElementRefType, PlanBlocksType, PlanRowsType, PlanUiBindType, PlanEditingType, PlanReadyEntryType, PlanWriteRequestType, PLAN_PAGE_SIZE, } from "./types.js";
|
|
17
|
+
import { orderedPlanSource } from "./ordered-source.js";
|
|
18
|
+
import { PlanRootType } from "./ir.js";
|
|
19
|
+
import { WINDOWLESS_AXES } from "./builders.js";
|
|
20
|
+
import { applySeries, checkSeries, seriesWriteFn, PlanCarriedType, PlanSeriesType } from "./series.js";
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// Root
|
|
23
|
+
// ============================================================================
|
|
24
|
+
/** The default slice affordance list (§1 toolbar). */
|
|
25
|
+
const DEFAULT_PLAN_AFFORDANCES = ["cohort", "filter", "search", "range", "resolution", "brush", "summary"];
|
|
26
|
+
/** The source collection a series list's East type reads — its `derive`'s input, when the list's element is a series variant. */
|
|
27
|
+
function seriesSourceOf(list) {
|
|
28
|
+
const element = Expr.type(list).value;
|
|
29
|
+
if (element?.type !== "Variant")
|
|
30
|
+
return undefined;
|
|
31
|
+
return element.cases?.["span"]?.fields?.["derive"]?.inputs?.[0];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates the canvas's root — the {@link PlanRootType} value `<Plan>`
|
|
35
|
+
* carries as its payload's `plan` — for the tests and the renderer's own
|
|
36
|
+
* fixtures, which read it whole.
|
|
37
|
+
*
|
|
38
|
+
* @typeParam K - The canvas's axis kind, inferred from `config.axis`; every series must lie within it
|
|
39
|
+
* @param config - The canvas's configuration ({@link PlanConfig})
|
|
40
|
+
* @returns An East expression of {@link PlanRootType}
|
|
41
|
+
* @throws {Error} When `data` is not a keyed source, `series` / `pick` are both or neither given, two series share a
|
|
42
|
+
* key, a bound series list reads another key type than `data`, or the axis states no window and no slice is bound
|
|
43
|
+
*
|
|
44
|
+
* @remarks
|
|
45
|
+
* Window and resolution have no callbacks by design: they are slice writes
|
|
46
|
+
* (`setRange` / `setResolution`) — hosts observe the slice. A change to the
|
|
47
|
+
* data — a dropped card, a moved or resized element — is a draft of the
|
|
48
|
+
* `editing` session, saved as one checked batch (#880, #825).
|
|
49
|
+
*/
|
|
50
|
+
export function createPlanRoot(config) {
|
|
51
|
+
return buildPlanRoot(config, undefined);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Builds the canvas's root (#1191): its rows over `data`, and then `extra`,
|
|
55
|
+
* fixed blocks every window serves alike — or, with no `data`, `extra`
|
|
56
|
+
* alone.
|
|
57
|
+
*
|
|
58
|
+
* @param config - The canvas's configuration, `data` optional
|
|
59
|
+
* @param extra - The fixed blocks after `data`'s: a Plan's `rows`
|
|
60
|
+
* @returns An East expression of {@link PlanRootType}
|
|
61
|
+
* @throws {Error} As {@link createPlanRoot} does; and with no `data`, a `series`, `pick` or `editing`, each of which reads it
|
|
62
|
+
* @internal
|
|
63
|
+
*/
|
|
64
|
+
export function buildPlanRoot(config, extra) {
|
|
65
|
+
// A canvas is DEFINED as data + series (+ the root resolvers) — there
|
|
66
|
+
// is no rows-authoring channel; the IR's inline arm is what inline
|
|
67
|
+
// application collapses to. A Plan of event kinds or `rows` alone has no data.
|
|
68
|
+
if (config.data === undefined && extra === undefined) {
|
|
69
|
+
throw new Error("Plan: `data` is required — a canvas is its data plus the series over it");
|
|
70
|
+
}
|
|
71
|
+
// The removed callbacks, named (#880) — a plain JS caller would otherwise
|
|
72
|
+
// lose them silently.
|
|
73
|
+
if ("onDrag" in config) {
|
|
74
|
+
throw new Error("Plan: `onDrag` is removed (#880) — a card dropped on a row is a draft of the `editing` session: declare " +
|
|
75
|
+
"`edit: { items, create }` on the series it lands on, and commit with `editing.onApply` (or `onUpdate`)");
|
|
76
|
+
}
|
|
77
|
+
if ("review" in config) {
|
|
78
|
+
throw new Error("Plan: `review` is removed (#1260) — a Plan approves and rejects nothing: its changes are drafts of the " +
|
|
79
|
+
"`editing` session, undone, redone, discarded or saved together");
|
|
80
|
+
}
|
|
81
|
+
if (config.data === undefined) {
|
|
82
|
+
for (const prop of ["series", "pick", "editing"]) {
|
|
83
|
+
if (config[prop] !== undefined) {
|
|
84
|
+
throw new Error(`Plan: \`${prop}\` reads \`data\`'s entries — pass \`data\` with it, or place read-only rows with \`rows\``);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else if ((config.series === undefined) === (config.pick === undefined)) {
|
|
89
|
+
throw new Error("Plan: give exactly one of `series` or `pick` — `series` for a fixed canvas, " +
|
|
90
|
+
"`pick` for a pickable one. A `Plan.pick` handle already carries the series list, " +
|
|
91
|
+
"so passing both says it twice and lets the two disagree.");
|
|
92
|
+
}
|
|
93
|
+
// There is no fit to the data (#822): every canvas states its window, or
|
|
94
|
+
// binds a slice whose range supplies it — inline and paged alike.
|
|
95
|
+
if (WINDOWLESS_AXES.has(config.axis) && config.slice === undefined) {
|
|
96
|
+
throw new Error("Plan: the axis states no `window` and no `slice` is bound — declare the window " +
|
|
97
|
+
"(`Plan.axis({ window: { min, max }, … })`), or bind a slice whose range supplies it. " +
|
|
98
|
+
"A canvas never fits its axis to the data, so it reads the same inline and paged.");
|
|
99
|
+
}
|
|
100
|
+
if (config.series !== undefined)
|
|
101
|
+
checkSeries(config.series, "Plan");
|
|
102
|
+
const data = config.data;
|
|
103
|
+
if (data === undefined)
|
|
104
|
+
return rootOf(config, East.value(variant("inline", extra), PlanRowsType), undefined);
|
|
105
|
+
// A pick feeds the canvas its SURVIVING series; everything downstream sees
|
|
106
|
+
// one series input either way.
|
|
107
|
+
const seriesInput = config.pick !== undefined
|
|
108
|
+
? pickActive(config.pick)
|
|
109
|
+
: config.series;
|
|
110
|
+
// The shared row-source resolution (#567): inline collection, paged
|
|
111
|
+
// source, or a whole-value bind handle — one dispatch, one vocabulary,
|
|
112
|
+
// and the series pipeline is the `make` that turns each window's entries
|
|
113
|
+
// into canvas rows (the single R-erasure point).
|
|
114
|
+
const incoming = resolveRowSource(data, "Plan");
|
|
115
|
+
const ordered = incoming.kind === "ordered" ? orderedPlanSource(incoming) : undefined;
|
|
116
|
+
const resolved = ordered?.resolved ?? incoming;
|
|
117
|
+
// The canvas is KEYED: a row's path starts with its entry's key, which is
|
|
118
|
+
// what keeps the canvas addressable by the keys the source is searched and
|
|
119
|
+
// windowed by (#568). Refuse anything else rather than inventing keys.
|
|
120
|
+
const collectionType = resolved.collectionType;
|
|
121
|
+
if (collectionType.type !== "Dict") {
|
|
122
|
+
throw new Error("Plan: `data` must be a keyed collection (`Dict<K, R>`) — a row's path starts with its entry's " +
|
|
123
|
+
"key, so the canvas is addressed the same way the source is (the row space a paged source windows " +
|
|
124
|
+
`and seeks). Got a ${collectionType.type}; key it at the call site, e.g. ` +
|
|
125
|
+
"`data={rows.toDict((_$, r) => r.id)}`.");
|
|
126
|
+
}
|
|
127
|
+
// A series list bound as an East value was built for its declared key
|
|
128
|
+
// type — it must read the source's.
|
|
129
|
+
if (!Array.isArray(seriesInput)) {
|
|
130
|
+
const reads = seriesSourceOf(seriesInput);
|
|
131
|
+
if (reads !== undefined && !isTypeEqual(reads, resolved.collectionType)) {
|
|
132
|
+
throw new Error("Plan: the series list is typed for another source than `data` — a list bound as an East value " +
|
|
133
|
+
"(a `$.const` list, a `Plan.pick`) is built for the entries' declared key type, String unless a " +
|
|
134
|
+
"series says `keyType`. Declare `keyType` on each series and type the list " +
|
|
135
|
+
"`Plan.Types.Series(R, keyType)`, or pass the series as a TS array, which is built for `data` itself.");
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// The canvas's BLOCKS, in layout order (#823): inline, the whole source's;
|
|
139
|
+
// paged, each window's share of every block — one read serves them all.
|
|
140
|
+
// A Plan's `rows` follow as fixed blocks, which every window serves alike.
|
|
141
|
+
const rowsValue = buildRowSource(incoming, PlanBlocksType, (source) => {
|
|
142
|
+
const blocks = ordered === undefined ? applySeries(seriesInput, source) : ordered.make(seriesInput, source);
|
|
143
|
+
return extra === undefined ? blocks : blocks.concat(extra);
|
|
144
|
+
});
|
|
145
|
+
const editing = config.editing === undefined ? undefined : buildPlanEditing(resolved, seriesInput, config.editing);
|
|
146
|
+
return rootOf(config, rowsValue, editing === undefined ? undefined : ordered?.editing(editing) ?? editing);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* The canvas's root around its rows and its editing session.
|
|
150
|
+
*
|
|
151
|
+
* @param config - The canvas's configuration
|
|
152
|
+
* @param rowsValue - Its rows: inline blocks, or a paged source of them
|
|
153
|
+
* @param editing - Its editing session over `data`, if it has one
|
|
154
|
+
* @returns An East expression of {@link PlanRootType}
|
|
155
|
+
*/
|
|
156
|
+
function rootOf(config, rowsValue, editing) {
|
|
157
|
+
const style = config.style;
|
|
158
|
+
const styleValue = style !== undefined
|
|
159
|
+
? some(East.value({
|
|
160
|
+
height: style.height !== undefined ? some(style.height) : none,
|
|
161
|
+
maxHeight: style.maxHeight !== undefined ? some(style.maxHeight) : none,
|
|
162
|
+
density: style.density !== undefined ? some(resolveTag(style.density, DensityType)) : none,
|
|
163
|
+
gutterWidth: style.gutterWidth !== undefined ? some(style.gutterWidth) : none,
|
|
164
|
+
}, PlanStyleType))
|
|
165
|
+
: none;
|
|
166
|
+
const record = config.slice !== undefined && isRecordSlice(config.slice.slice);
|
|
167
|
+
const recordOptions = record ? config.slice : undefined;
|
|
168
|
+
const sliceChrome = config.slice !== undefined && !record
|
|
169
|
+
? some(East.value({
|
|
170
|
+
slice: localSliceHandle(config.slice.slice),
|
|
171
|
+
affordances: East.value((config.slice.affordances ?? DEFAULT_PLAN_AFFORDANCES).map(a => variant(a, null)), ArrayType(SliceAffordanceType)),
|
|
172
|
+
}, SliceChromeType))
|
|
173
|
+
: none;
|
|
174
|
+
return East.value({
|
|
175
|
+
rows: rowsValue,
|
|
176
|
+
links: East.value(config.links ?? [], ArrayType(PlanLinkType)),
|
|
177
|
+
axis: config.axis,
|
|
178
|
+
grain: config.grain !== undefined ? some(resolveTag(config.grain, PlanGrainType)) : none,
|
|
179
|
+
// East.value pins the exact function type (the Schematic `itemHover`
|
|
180
|
+
// pattern), so a resolver's result is the payload's UIComponentType.
|
|
181
|
+
popover: config.popover !== undefined
|
|
182
|
+
? some(East.value(config.popover, FunctionType([PlanElementRefType], OptionType(UIComponentType))))
|
|
183
|
+
: none,
|
|
184
|
+
hover: config.hover !== undefined
|
|
185
|
+
? some(East.value(config.hover, FunctionType([PlanElementRefType], OptionType(UIComponentType))))
|
|
186
|
+
: none,
|
|
187
|
+
expandRender: config.expandRender !== undefined
|
|
188
|
+
? some(East.value(config.expandRender, FunctionType([PlanRowIdType], UIComponentType)))
|
|
189
|
+
: none,
|
|
190
|
+
expandGutter: config.expandGutter !== undefined
|
|
191
|
+
? some(East.value(config.expandGutter, FunctionType([PlanRowIdType], UIComponentType)))
|
|
192
|
+
: none,
|
|
193
|
+
editing: editing !== undefined ? some(editing) : none,
|
|
194
|
+
// The library rides as chrome, like the slice rail: the non-generic
|
|
195
|
+
// contract only, since the payload must stay a closed East type.
|
|
196
|
+
pick: config.pick !== undefined
|
|
197
|
+
? some(East.value(config.pick.pick, PickBindType))
|
|
198
|
+
: none,
|
|
199
|
+
slice: sliceChrome,
|
|
200
|
+
footer: (config.footer ?? []).map(f => East.value({
|
|
201
|
+
text: f.text,
|
|
202
|
+
tone: f.tone !== undefined ? some(resolveTag(f.tone, StatusValueType)) : none,
|
|
203
|
+
end: f.end ?? false,
|
|
204
|
+
}, PlanFooterItemType)),
|
|
205
|
+
id: config.id !== undefined ? some(config.id) : none,
|
|
206
|
+
sources: East.value(config.sources ?? [], ArrayType(StringType)),
|
|
207
|
+
canDrop: config.canDrop !== undefined ? some(config.canDrop) : none,
|
|
208
|
+
onSelect: config.onSelect !== undefined ? some(config.onSelect) : none,
|
|
209
|
+
onElementClick: config.onElementClick !== undefined
|
|
210
|
+
? some(East.value(config.onElementClick, FunctionType([PlanElementRefType], NullType)))
|
|
211
|
+
: none,
|
|
212
|
+
onGroupToggle: config.onGroupToggle !== undefined ? some(config.onGroupToggle) : none,
|
|
213
|
+
onGrainChange: config.onGrainChange !== undefined ? some(config.onGrainChange) : none,
|
|
214
|
+
ui: config.ui !== undefined ? some(East.value(config.ui, PlanUiBindType)) : none,
|
|
215
|
+
style: styleValue,
|
|
216
|
+
recordSlice: recordOptions === undefined ? none : some(recordSliceChrome({ ...recordOptions,
|
|
217
|
+
affordances: recordOptions.affordances ?? ["fields", "presets", "summary", "brush"],
|
|
218
|
+
})),
|
|
219
|
+
}, PlanRootType);
|
|
220
|
+
}
|
|
221
|
+
// ============================================================================
|
|
222
|
+
// Editing (#880) — the canvas's side of the shared session
|
|
223
|
+
// ============================================================================
|
|
224
|
+
/**
|
|
225
|
+
* The canvas's editing declaration (#880) — the shared session's fields over
|
|
226
|
+
* the source's top-level entries, and the canvas's own: its blocks with the
|
|
227
|
+
* drafted entries in place, one entry's blocks, the gestures written into
|
|
228
|
+
* entries, a window's entry ids and the author's readiness check.
|
|
229
|
+
*
|
|
230
|
+
* @remarks
|
|
231
|
+
* Everything crosses as bytes at the exact entry type the wire names, so the
|
|
232
|
+
* payload stays closed. The entries are read where the canvas reads them — the
|
|
233
|
+
* inline `Dict`, or the very windows the canvas pages (`buildPagedWindow`), so
|
|
234
|
+
* an entry read back for a gesture is a window the canvas already holds.
|
|
235
|
+
*
|
|
236
|
+
* @param resolved - The resolved `data` — a keyed collection, inline or paged
|
|
237
|
+
* @param series - The series input the canvas applies
|
|
238
|
+
* @param input - The author's editing declaration
|
|
239
|
+
* @returns The editing declaration, on the wire
|
|
240
|
+
* @throws {Error} When the declaration is inconsistent, or a callback has another signature
|
|
241
|
+
*/
|
|
242
|
+
function buildPlanEditing(resolved, series, input) {
|
|
243
|
+
const sourceType = resolved.collectionType;
|
|
244
|
+
const entryType = sourceType.value;
|
|
245
|
+
const keyType = sourceType.key;
|
|
246
|
+
const draftType = EditingDraftFieldType(entryType);
|
|
247
|
+
const batchType = EditingChangeSetTypeFor(entryType, keyType);
|
|
248
|
+
const eventType = EditingPatchEventTypeWith(entryType, draftType);
|
|
249
|
+
const DraftsType = DictType(StringType, BlobType);
|
|
250
|
+
if (input.onApply !== undefined && input.onUpdate !== undefined) {
|
|
251
|
+
throw new Error("Plan: editing takes onApply or the inline onUpdate adapter, not both");
|
|
252
|
+
}
|
|
253
|
+
if (input.onUpdate !== undefined && (resolved.kind !== "inline" || resolved.live === undefined)) {
|
|
254
|
+
throw new Error("Plan: editing.onUpdate requires data={liveHandle}, so each batch reads the latest entries — pass the bound " +
|
|
255
|
+
"handle itself, or commit with onApply");
|
|
256
|
+
}
|
|
257
|
+
if (input.mode === "auto" && input.onApply === undefined && input.onUpdate === undefined) {
|
|
258
|
+
throw new Error("Plan: editing.mode \"auto\" applies each ready gesture at once — it needs onApply or onUpdate to apply it with");
|
|
259
|
+
}
|
|
260
|
+
if (resolved.kind !== "inline" && !resolved.pinned && input.onApply !== undefined) {
|
|
261
|
+
throw new Error("Plan: editing a paged source needs its revision and refresh — a pinned source (Data.bindPaged's handle): " +
|
|
262
|
+
"a batch is checked against the revision it began at, and the drafts retire once the source reads back at " +
|
|
263
|
+
"the revision it committed");
|
|
264
|
+
}
|
|
265
|
+
// An entry's id is its key's text — the first segment of its rows' paths:
|
|
266
|
+
// a String key as it is, any other key its `.east` text.
|
|
267
|
+
const keyOf = (keyType.type === "String"
|
|
268
|
+
? East.function([StringType], StringType, (_$, id) => id)
|
|
269
|
+
: East.function([StringType], keyType, (_$, id) => id.parse(keyType)));
|
|
270
|
+
const idOf = (keyType.type === "String"
|
|
271
|
+
? East.function([StringType], StringType, (_$, key) => key)
|
|
272
|
+
: East.function([keyType], StringType, (_$, key) => East.print(key)));
|
|
273
|
+
// Where the entries are read: the inline Dict, or the canvas's own windows.
|
|
274
|
+
const inline = resolved.kind === "inline" ? resolved.rows : undefined;
|
|
275
|
+
const window = resolved.kind === "paged"
|
|
276
|
+
? buildPagedWindow(resolved)
|
|
277
|
+
: undefined;
|
|
278
|
+
const pageSize = BigInt(PLAN_PAGE_SIZE);
|
|
279
|
+
// One entry, read back: inline by key; paged from the window it came from
|
|
280
|
+
// (aligned to the canvas's page), the very request the canvas made.
|
|
281
|
+
const readEntry = East.function([StringType, IntegerType], OptionType(BlobType), ($, id, offset) => {
|
|
282
|
+
const parse = $.const(keyOf);
|
|
283
|
+
const key = $.let(parse(id));
|
|
284
|
+
const result = $.let(none, OptionType(BlobType));
|
|
285
|
+
if (inline !== undefined) {
|
|
286
|
+
const all = $.const(inline);
|
|
287
|
+
$.match(all.tryGet(key), {
|
|
288
|
+
some: ($2, entry) => { $2.assign(result, some(East.Blob.encodeBeast(entry, "v2"))); },
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
const read = $.const(window);
|
|
293
|
+
const start = $.let(offset.subtract(offset.remainder(pageSize)));
|
|
294
|
+
const piece = $.let(read(start, pageSize));
|
|
295
|
+
$.match(piece, {
|
|
296
|
+
some: ($2, entries) => {
|
|
297
|
+
$2.match(entries.tryGet(key), {
|
|
298
|
+
some: ($3, entry) => { $3.assign(result, some(East.Blob.encodeBeast(entry, "v2"))); },
|
|
299
|
+
});
|
|
300
|
+
},
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
return result;
|
|
304
|
+
});
|
|
305
|
+
// The entries with the drafted ones in their place — a new collection, the
|
|
306
|
+
// source's untouched — and the series applied to it: a draft draws exactly
|
|
307
|
+
// as the applied batch will.
|
|
308
|
+
const withDrafts = East.function([sourceType, DraftsType], sourceType, ($, entries, drafts) => {
|
|
309
|
+
const idText = $.const(idOf);
|
|
310
|
+
return entries.map(($2, value, key) => {
|
|
311
|
+
const id = $2.let(idText(key));
|
|
312
|
+
return drafts.has(id).ifElse(() => drafts.get(id).decodeBeast(entryType, "v2"), () => value);
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
const derive = East.function([IntegerType, IntegerType, DraftsType], OptionType(PlanBlocksType), ($, offset, limit, drafts) => {
|
|
316
|
+
const draft = $.const(withDrafts);
|
|
317
|
+
const result = $.let(none, OptionType(PlanBlocksType));
|
|
318
|
+
if (inline !== undefined) {
|
|
319
|
+
const all = $.const(inline);
|
|
320
|
+
const drafted = $.let(draft(all, drafts));
|
|
321
|
+
$.assign(result, some(applySeries(series, drafted)));
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
const read = $.const(window);
|
|
325
|
+
const piece = $.let(read(offset, limit));
|
|
326
|
+
$.match(piece, {
|
|
327
|
+
some: ($2, entries) => {
|
|
328
|
+
const drafted = $2.let(draft(entries, drafts));
|
|
329
|
+
$2.assign(result, some(applySeries(series, drafted)));
|
|
330
|
+
},
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
return result;
|
|
334
|
+
});
|
|
335
|
+
// One entry's blocks — what a draft is compared by, row by row.
|
|
336
|
+
const deriveEntry = East.function([StringType, BlobType], PlanBlocksType, ($, id, bytes) => {
|
|
337
|
+
const parse = $.const(keyOf);
|
|
338
|
+
const one = $.let(new Map(), sourceType);
|
|
339
|
+
$(one.insert(parse(id), bytes.decodeBeast(entryType, "v2")));
|
|
340
|
+
return applySeries(series, one);
|
|
341
|
+
});
|
|
342
|
+
// Gestures written into their entries, through the series that made each
|
|
343
|
+
// row; `none` for an entry no series took the gesture on. A move to
|
|
344
|
+
// another row carries its item from the row that gives it up to the row
|
|
345
|
+
// that takes it — the requests are in that order (#825) — and an item
|
|
346
|
+
// still carried at the end is a move that landed nowhere: the batch is
|
|
347
|
+
// refused whole, so an item is never taken without being put.
|
|
348
|
+
const writeOne = seriesWriteFn(series, sourceType);
|
|
349
|
+
const write = East.function([ArrayType(PlanWriteRequestType)], ArrayType(OptionType(BlobType)), ($, requests) => {
|
|
350
|
+
const writeRow = $.const(writeOne);
|
|
351
|
+
const parse = $.const(keyOf);
|
|
352
|
+
const carried = $.let(ref(East.value(none, OptionType(BlobType))), PlanCarriedType);
|
|
353
|
+
const written = $.let(requests.map(($2, request) => {
|
|
354
|
+
const key = $2.let(parse(request.id));
|
|
355
|
+
const entry = $2.let(request.entry.decodeBeast(entryType, "v2"), entryType);
|
|
356
|
+
const out = $2.let(none, OptionType(BlobType));
|
|
357
|
+
$2.for(request.rows, ($3, row) => {
|
|
358
|
+
const next = $3.let(writeRow(entry, key, row, request.gesture, carried));
|
|
359
|
+
$3.match(next, { some: ($4, value) => { $4.assign(entry, value); } });
|
|
360
|
+
$3.if(next.hasTag("some"), ($4) => { $4.assign(out, some(East.Blob.encodeBeast(entry, "v2"))); });
|
|
361
|
+
});
|
|
362
|
+
return out;
|
|
363
|
+
}), ArrayType(OptionType(BlobType)));
|
|
364
|
+
const stranded = $.let(carried.get(), OptionType(BlobType));
|
|
365
|
+
return stranded.hasTag("some").ifElse(() => written.map((_$2) => East.value(none, OptionType(BlobType))), () => written);
|
|
366
|
+
});
|
|
367
|
+
// A window's entry ids, in the source's order.
|
|
368
|
+
const entryIds = East.function([IntegerType, IntegerType], OptionType(ArrayType(StringType)), ($, offset, limit) => {
|
|
369
|
+
const idText = $.const(idOf);
|
|
370
|
+
const result = $.let(none, OptionType(ArrayType(StringType)));
|
|
371
|
+
if (inline !== undefined) {
|
|
372
|
+
const all = $.const(inline);
|
|
373
|
+
const ids = $.let(all.toArray(($2, _value, key) => idText(key)));
|
|
374
|
+
const n = $.let(ids.size());
|
|
375
|
+
const start = $.let(offset.less(n).ifElse(() => offset, () => n));
|
|
376
|
+
const end = $.let(offset.add(limit).less(n).ifElse(() => offset.add(limit), () => n));
|
|
377
|
+
$.assign(result, some(ids.slice(start, end)));
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
const read = $.const(window);
|
|
381
|
+
const piece = $.let(read(offset, limit));
|
|
382
|
+
$.match(piece, {
|
|
383
|
+
some: ($2, entries) => { $2.assign(result, some(entries.toArray(($3, _value, key) => idText(key)))); },
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
return result;
|
|
387
|
+
});
|
|
388
|
+
// The author's readiness check, one result per drafted entry, in order. A
|
|
389
|
+
// check that throws refuses its own entry alone.
|
|
390
|
+
const authorReady = input.ready === undefined ? undefined : checkedEditingCallback("Plan", input.ready, [entryType, keyType], EditingReadinessType, "ready", false, "over this canvas's entry and key (R, K), returning Editing.Types.Readiness");
|
|
391
|
+
const ready = authorReady === undefined ? undefined : East.function([ArrayType(PlanReadyEntryType)], ArrayType(EditingReadinessType), ($, batch) => {
|
|
392
|
+
const check = $.const(authorReady);
|
|
393
|
+
const parse = $.const(keyOf);
|
|
394
|
+
return batch.map(($2, item) => {
|
|
395
|
+
const result = $2.let(variant("ready", null), EditingReadinessType);
|
|
396
|
+
$2.try(($3) => {
|
|
397
|
+
$3.assign(result, check(item.entry.decodeBeast(entryType, "v2"), parse(item.id)));
|
|
398
|
+
}).catch(($3, message) => {
|
|
399
|
+
$3.assign(result, variant("invalid", [{ field: "", message: East.str `Readiness check failed: ${message}` }]));
|
|
400
|
+
});
|
|
401
|
+
return result;
|
|
402
|
+
});
|
|
403
|
+
});
|
|
404
|
+
// The authoritative apply: the author's, or the inline adapter over the
|
|
405
|
+
// live handle's latest Dict (#879's protocol, keyed).
|
|
406
|
+
const live = resolved.kind === "inline" ? resolved.live : undefined;
|
|
407
|
+
const reader = live !== undefined
|
|
408
|
+
? live.read
|
|
409
|
+
: undefined;
|
|
410
|
+
const authorApply = input.onApply === undefined ? undefined : checkedEditingCallback("Plan", input.onApply, [batchType], EditingApplyResultType, "onApply", true, "over Editing.Types.ChangeSet(R, K) — this canvas's entry and key types — returning Editing.Types.ApplyResult");
|
|
411
|
+
// A paged source is one of the contract's shapes, both of which carry `id`.
|
|
412
|
+
const sourceId = resolved.kind === "paged"
|
|
413
|
+
? resolved.source.id
|
|
414
|
+
: reader !== undefined ? East.print(East.Blob.encodeBeast(reader, "v2"))
|
|
415
|
+
: authorApply !== undefined ? East.print(East.Blob.encodeBeast(authorApply, "v2"))
|
|
416
|
+
: East.value("readonly-inline", StringType);
|
|
417
|
+
let onApply;
|
|
418
|
+
if (input.onUpdate !== undefined && reader !== undefined) {
|
|
419
|
+
const writer = checkedEditingCallback("Plan", input.onUpdate, [sourceType], NullType, "onUpdate", false, "over the whole Dict<K, R> the batch leaves, returning Null");
|
|
420
|
+
onApply = East.value(variant("sync", buildKeyedInlineApply(sourceType, sourceId, reader, writer)), EditingWireApplyType);
|
|
421
|
+
}
|
|
422
|
+
else if (authorApply !== undefined) {
|
|
423
|
+
const typedBatch = batchType;
|
|
424
|
+
if (Expr.type(authorApply).type === "AsyncFunction") {
|
|
425
|
+
const fn = authorApply;
|
|
426
|
+
onApply = East.value(variant("async", East.asyncFunction([BlobType], EditingApplyResultType, ($, blob) => {
|
|
427
|
+
const apply = $.const(fn);
|
|
428
|
+
return apply(blob.decodeBeast(typedBatch, "v2"));
|
|
429
|
+
})), EditingWireApplyType);
|
|
430
|
+
}
|
|
431
|
+
else {
|
|
432
|
+
const fn = authorApply;
|
|
433
|
+
onApply = East.value(variant("sync", East.function([BlobType], EditingApplyResultType, ($, blob) => {
|
|
434
|
+
const apply = $.const(fn);
|
|
435
|
+
return apply(blob.decodeBeast(typedBatch, "v2"));
|
|
436
|
+
})), EditingWireApplyType);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
const authorPatch = input.onPatch === undefined ? undefined : checkedEditingCallback("Plan", input.onPatch, [eventType], NullType, "onPatch", false, "over Plan.Types.PatchEvent(R), returning Null");
|
|
440
|
+
const onPatch = authorPatch === undefined ? undefined : East.function([BlobType], NullType, ($, blob) => {
|
|
441
|
+
const observe = $.const(authorPatch);
|
|
442
|
+
$(observe(blob.decodeBeast(eventType, "v2")));
|
|
443
|
+
});
|
|
444
|
+
return East.value({
|
|
445
|
+
sourceId,
|
|
446
|
+
entryType: toEastTypeValue(entryType),
|
|
447
|
+
idField: none,
|
|
448
|
+
draftType: toEastTypeValue(draftType),
|
|
449
|
+
children: none,
|
|
450
|
+
keyType: some(toEastTypeValue(keyType)),
|
|
451
|
+
snapshot: inline !== undefined ? some(East.Blob.encodeBeast(inline, "v2")) : none,
|
|
452
|
+
readEntry,
|
|
453
|
+
onPatch: onPatch !== undefined ? some(onPatch) : none,
|
|
454
|
+
onApply: onApply !== undefined ? some(onApply) : none,
|
|
455
|
+
mode: variant(input.mode ?? "batch", null),
|
|
456
|
+
derive,
|
|
457
|
+
deriveEntry,
|
|
458
|
+
write,
|
|
459
|
+
entryIds,
|
|
460
|
+
ready: ready !== undefined ? some(ready) : none,
|
|
461
|
+
}, PlanEditingType);
|
|
462
|
+
}
|
|
463
|
+
//# sourceMappingURL=root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root.js","sourceRoot":"","sources":["../../../src/plan/root.ts"],"names":[],"mappings":"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"}
|