@elaraai/e3-ui 1.0.85 → 1.0.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/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 @@
|
|
|
1
|
+
{"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../../src/flowchart/library.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,611 @@
|
|
|
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
|
+
* `Flowchart.library` — the flowchart's library pane (#1246, #1248,
|
|
7
|
+
* `Flowchart Builder Spec.md` decisions 5–8, §4.2, §4.4, FB13, FB25–FB29):
|
|
8
|
+
* `library` lists the pane's tabs, in order, each a `Flowchart.library.*`
|
|
9
|
+
* call. Left out, or empty, the flowchart has no library pane.
|
|
10
|
+
*
|
|
11
|
+
* - `Flowchart.library.flows()` (#1246) — the Flows tab: every flow the
|
|
12
|
+
* flowchart holds by name, a click opening one on the canvas, and "+ New
|
|
13
|
+
* flow" naming another. Over one flow there is none to list, so one flow's
|
|
14
|
+
* library takes every tab but it.
|
|
15
|
+
* - `Flowchart.library.states(rows, { … })` — state templates: one card per
|
|
16
|
+
* row, its `drop` the fields of the state a card dropped on a lane adds.
|
|
17
|
+
* - `Flowchart.library.transitions(rows, { … })` — transition templates: one
|
|
18
|
+
* card per row, its `drop` the fields a card sets on the transition it lands
|
|
19
|
+
* on.
|
|
20
|
+
* - `Flowchart.library.tab(rows, { … })` — the author's own cards; given a
|
|
21
|
+
* `drop`, its patch's type names what a card lands on: a state, a
|
|
22
|
+
* transition, a lane's header or a decision's diamond.
|
|
23
|
+
*
|
|
24
|
+
* Each data tab takes its own bound data (the user, 2026-10-08), apart from
|
|
25
|
+
* the flows and from the other tabs: its rows are an `Array<T>` or a
|
|
26
|
+
* `Dict<String, T>` the app binds — a value, or an expression such as a
|
|
27
|
+
* binding's `read()` — read as `Sheet.library.tab` reads its rows: its
|
|
28
|
+
* accessors `(row, key) => …` reified once into a describe function the rows'
|
|
29
|
+
* map then calls, a Dict's key the second argument and an Array's index,
|
|
30
|
+
* printed, in its place; a key that repeats keeps its first card. A card
|
|
31
|
+
* crosses the closed payload as the fields its drop sets, typed by the row it
|
|
32
|
+
* lands on — a flow's rows are the flowchart's own types. Dropped on the
|
|
33
|
+
* canvas (#1249), a state template adds a state where it lands on a lane, a
|
|
34
|
+
* transition template retypes the transition it lands on, and an author's card
|
|
35
|
+
* sets its fields on what its drop's type names; ⏎ on a card drops it on the
|
|
36
|
+
* canvas's selection.
|
|
37
|
+
*
|
|
38
|
+
* @packageDocumentation
|
|
39
|
+
*/
|
|
40
|
+
import { ArrayType, DictType, East, Expr, NullType, OptionType, SetType, StringType, StructType, VariantType, isTypeEqual, none, printType, some, variant, } from "@elaraai/east";
|
|
41
|
+
import { FlowchartPatchTypeFor } from "./patch.js";
|
|
42
|
+
import { FlowchartLaneType, FlowchartLinkType, FlowchartStateType, FlowchartTriggerType } from "./types.js";
|
|
43
|
+
// ============================================================================
|
|
44
|
+
// The wire
|
|
45
|
+
// ============================================================================
|
|
46
|
+
/**
|
|
47
|
+
* A card a library tab lists that drops nothing: an author's card read, never
|
|
48
|
+
* dragged.
|
|
49
|
+
*
|
|
50
|
+
* @property key - Its identity in its tab
|
|
51
|
+
* @property label - Its title
|
|
52
|
+
* @property meta - A line under its title
|
|
53
|
+
* @property group - The group its tab lists it under
|
|
54
|
+
*/
|
|
55
|
+
export const FlowchartCardType = StructType({
|
|
56
|
+
key: StringType,
|
|
57
|
+
label: StringType,
|
|
58
|
+
meta: OptionType(StringType),
|
|
59
|
+
group: OptionType(StringType),
|
|
60
|
+
});
|
|
61
|
+
/**
|
|
62
|
+
* A state template's card: what it shows, and the fields of the state it
|
|
63
|
+
* adds, over a state's defaults — the `Flowchart.patch(Flowchart.Types.State, …)`
|
|
64
|
+
* its drop returns.
|
|
65
|
+
*/
|
|
66
|
+
export const FlowchartStateCardType = StructType({
|
|
67
|
+
...FlowchartCardType.fields,
|
|
68
|
+
sets: FlowchartPatchTypeFor(FlowchartStateType),
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* A transition template's card: what it shows, and the fields it sets on the
|
|
72
|
+
* transition it lands on — the `Flowchart.patch(Flowchart.Types.Link, …)` its
|
|
73
|
+
* drop returns.
|
|
74
|
+
*/
|
|
75
|
+
export const FlowchartTransitionCardType = StructType({
|
|
76
|
+
...FlowchartCardType.fields,
|
|
77
|
+
sets: FlowchartPatchTypeFor(FlowchartLinkType),
|
|
78
|
+
});
|
|
79
|
+
/** An author's card that lands on a lane's header, and the lane's fields it sets. */
|
|
80
|
+
export const FlowchartLaneCardType = StructType({
|
|
81
|
+
...FlowchartCardType.fields,
|
|
82
|
+
sets: FlowchartPatchTypeFor(FlowchartLaneType),
|
|
83
|
+
});
|
|
84
|
+
/** An author's card that lands on a decision's diamond, and the decision's fields it sets. */
|
|
85
|
+
export const FlowchartDecisionCardType = StructType({
|
|
86
|
+
...FlowchartCardType.fields,
|
|
87
|
+
sets: FlowchartPatchTypeFor(FlowchartTriggerType),
|
|
88
|
+
});
|
|
89
|
+
/**
|
|
90
|
+
* An author's tab's cards, by what they land on — the type of the patch its
|
|
91
|
+
* `drop` returns — each card with the fields it sets there.
|
|
92
|
+
*
|
|
93
|
+
* @property none - The tab declares no `drop`: its cards are read, never dragged
|
|
94
|
+
* @property state - Its cards land on a state
|
|
95
|
+
* @property transition - Its cards land on a transition
|
|
96
|
+
* @property lane - Its cards land on a lane's header
|
|
97
|
+
* @property decision - Its cards land on a decision's diamond
|
|
98
|
+
*/
|
|
99
|
+
export const FlowchartLandsType = VariantType({
|
|
100
|
+
none: ArrayType(FlowchartCardType),
|
|
101
|
+
state: ArrayType(FlowchartStateCardType),
|
|
102
|
+
transition: ArrayType(FlowchartTransitionCardType),
|
|
103
|
+
lane: ArrayType(FlowchartLaneCardType),
|
|
104
|
+
decision: ArrayType(FlowchartDecisionCardType),
|
|
105
|
+
});
|
|
106
|
+
/**
|
|
107
|
+
* One tab of the library pane, as `library` lists it (`Flowchart Builder
|
|
108
|
+
* Spec.md` §4.2).
|
|
109
|
+
*
|
|
110
|
+
* @remarks
|
|
111
|
+
* A card crosses the closed payload as the fields its drop sets, typed by the
|
|
112
|
+
* row it lands on — a flow's rows are the flowchart's own types. A template
|
|
113
|
+
* tab's name is the author's when given; left out, the renderer names it in
|
|
114
|
+
* its words (`States`, `Transitions`), so a host translates it.
|
|
115
|
+
*
|
|
116
|
+
* @property flows - Every flow in the record; a click opens one
|
|
117
|
+
* @property states - State templates from the tab's own rows: its name, its icon and its cards
|
|
118
|
+
* @property transitions - Transition templates from the tab's own rows: its name, its icon and its cards
|
|
119
|
+
* @property tab - The author's own cards: its name, its icon, and its cards by what they land on
|
|
120
|
+
*/
|
|
121
|
+
export const FlowchartLibraryTabType = VariantType({
|
|
122
|
+
flows: NullType,
|
|
123
|
+
states: StructType({ name: OptionType(StringType), icon: OptionType(StringType), cards: ArrayType(FlowchartStateCardType) }),
|
|
124
|
+
transitions: StructType({ name: OptionType(StringType), icon: OptionType(StringType), cards: ArrayType(FlowchartTransitionCardType) }),
|
|
125
|
+
tab: StructType({ name: StringType, icon: OptionType(StringType), lands: FlowchartLandsType }),
|
|
126
|
+
});
|
|
127
|
+
/**
|
|
128
|
+
* The Flows tab — `Flowchart.library.flows()` (FB13, FB14): every flow the
|
|
129
|
+
* flowchart holds, by name, each card its name and its description — or, with
|
|
130
|
+
* none, its counts — the open flow placed, and a flow whose drafts are not
|
|
131
|
+
* yet saved marked Pending. A click opens a flow on the canvas, and the
|
|
132
|
+
* tab's search reads names and descriptions. Where the flowchart edits — a
|
|
133
|
+
* record, or the host's flows given `onApply`, and not read only — "+ New
|
|
134
|
+
* flow" names another, refusing a name the flowchart holds, and opens it
|
|
135
|
+
* empty, one lane, as a draft the history item saves or discards.
|
|
136
|
+
*
|
|
137
|
+
* @remarks
|
|
138
|
+
* Over a record of flows, or the host's flows by name. Over one flow (`data`
|
|
139
|
+
* of `Flowchart.Types.Flow`) it is refused, when the surface is built and by
|
|
140
|
+
* the tag's types.
|
|
141
|
+
*
|
|
142
|
+
* @returns The tab
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```tsx
|
|
146
|
+
* // .tsx file with the `@jsxImportSource @elaraai/e3-ui` pragma
|
|
147
|
+
* import { East } from "@elaraai/east";
|
|
148
|
+
* import { Box, Reactive, UIComponentType } from "@elaraai/east-ui";
|
|
149
|
+
* import { Flowchart, Record } from "@elaraai/e3-ui";
|
|
150
|
+
* import e3 from "@elaraai/e3";
|
|
151
|
+
*
|
|
152
|
+
* export const depotFlows = e3.record("flowchart_depot_flows", Flowchart.Types.Flows, Flowchart.values({
|
|
153
|
+
* "Inbound parcels": {
|
|
154
|
+
* description: "From the trailer to the van",
|
|
155
|
+
* lanes: [{ key: "intake", label: "Intake" }, { key: "sort", label: "Sort" }, { key: "load", label: "Load" }],
|
|
156
|
+
* states: [
|
|
157
|
+
* { key: "ARV", label: "Arrived", lane: "intake" },
|
|
158
|
+
* { key: "SCN", label: "Scanned", lane: "intake" },
|
|
159
|
+
* { key: "CH*", label: "Sort chutes", lane: "sort", members: 12n },
|
|
160
|
+
* { key: "LDD", label: "Loaded", lane: "load" },
|
|
161
|
+
* ],
|
|
162
|
+
* links: [
|
|
163
|
+
* { from: "ARV", to: "SCN" },
|
|
164
|
+
* { from: "SCN", to: "CH*", trigger: "route" },
|
|
165
|
+
* { from: "CH*", to: "LDD" },
|
|
166
|
+
* { from: "SCN", to: "SCN", kind: "observed" },
|
|
167
|
+
* ],
|
|
168
|
+
* triggers: [{ key: "route", label: "route", owner: "sort-planner" }],
|
|
169
|
+
* },
|
|
170
|
+
* "Returns": {
|
|
171
|
+
* description: "From the counter back to the sender",
|
|
172
|
+
* lanes: [{ key: "counter", label: "Counter" }, { key: "check", label: "Check" }, { key: "out", label: "Out" }],
|
|
173
|
+
* states: [
|
|
174
|
+
* { key: "RCV", label: "Received", lane: "counter" },
|
|
175
|
+
* { key: "INS", label: "Inspected", lane: "check" },
|
|
176
|
+
* { key: "RSD", label: "Resent", lane: "out" },
|
|
177
|
+
* ],
|
|
178
|
+
* links: [{ from: "RCV", to: "INS" }, { from: "INS", to: "RSD" }, { from: "INS", to: "BIN", kind: "observed" }],
|
|
179
|
+
* },
|
|
180
|
+
* }));
|
|
181
|
+
* export const depotFlowsPatch = e3.mutation.patch(depotFlows);
|
|
182
|
+
*
|
|
183
|
+
* const flowchart = East.function([], UIComponentType, (_$) => (
|
|
184
|
+
* <Reactive>{$ => {
|
|
185
|
+
* const flows = $.let(Record.bind(depotFlows, [depotFlowsPatch]));
|
|
186
|
+
* return (
|
|
187
|
+
* <Box height="500px">
|
|
188
|
+
* <Flowchart record={flows} flow="Inbound parcels" library={[Flowchart.library.flows()]} />
|
|
189
|
+
* </Box>
|
|
190
|
+
* );
|
|
191
|
+
* }}</Reactive>
|
|
192
|
+
* ));
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
export function libraryFlows() {
|
|
196
|
+
return { kind: "flows" };
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* The state templates — `Flowchart.library.states(rows, { … })` (FB26,
|
|
200
|
+
* decisions 6 and 7): one card per row of the tab's own rows — its label, the
|
|
201
|
+
* line under it, the tab's icon — grouped by its `group` and searched by its
|
|
202
|
+
* key, label and line. Each card is a drag source, and a click selects it, a
|
|
203
|
+
* click on the selected card letting it go. A card dropped on a lane adds a
|
|
204
|
+
* state there, seeded with the fields its `drop` sets over a state's defaults
|
|
205
|
+
* (#1249).
|
|
206
|
+
*
|
|
207
|
+
* @remarks
|
|
208
|
+
* The rows are the app's own — an input or a record the app binds, apart from
|
|
209
|
+
* the flows and from the other tabs — read as `Sheet.library.tab` reads its
|
|
210
|
+
* rows: an `Array<T>` or a `Dict<String, T>`, each accessor taking a row and
|
|
211
|
+
* its key, a Dict's key or an Array's index, printed. A key that repeats keeps
|
|
212
|
+
* its first card. Left out, the tab's name is `States`, in the flowchart's
|
|
213
|
+
* words. Refused when the surface is built: rows that are neither an Array
|
|
214
|
+
* nor a `Dict<String, T>`, a `drop` over another type than
|
|
215
|
+
* `Flowchart.Types.State`, and the tab listed twice.
|
|
216
|
+
*
|
|
217
|
+
* @typeParam T - The rows' element type
|
|
218
|
+
* @param rows - The rows — an `Array<T>` or a `Dict<String, T>` value or expression, such as a binding's `read()`
|
|
219
|
+
* @param config - The tab's name and icon, what each card shows, and its `drop` ({@link FlowchartStatesConfig})
|
|
220
|
+
* @returns The tab
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* ```tsx
|
|
224
|
+
* // .tsx file with the `@jsxImportSource @elaraai/e3-ui` pragma
|
|
225
|
+
* import { ArrayType, DictType, East, IntegerType, OptionType, StringType, StructType, none, some, variant } from "@elaraai/east";
|
|
226
|
+
* import { Box, Reactive, UIComponentType } from "@elaraai/east-ui";
|
|
227
|
+
* import { Data, Flowchart, Record } from "@elaraai/e3-ui";
|
|
228
|
+
* import e3 from "@elaraai/e3";
|
|
229
|
+
*
|
|
230
|
+
* export const depotFlows = e3.record("flowchart_depot_flows", Flowchart.Types.Flows, Flowchart.values({
|
|
231
|
+
* "Inbound parcels": {
|
|
232
|
+
* description: "From the trailer to the van",
|
|
233
|
+
* lanes: [{ key: "intake", label: "Intake" }, { key: "sort", label: "Sort" }, { key: "load", label: "Load" }],
|
|
234
|
+
* states: [
|
|
235
|
+
* { key: "ARV", label: "Arrived", lane: "intake" },
|
|
236
|
+
* { key: "SCN", label: "Scanned", lane: "intake" },
|
|
237
|
+
* { key: "CH*", label: "Sort chutes", lane: "sort", members: 12n },
|
|
238
|
+
* { key: "LDD", label: "Loaded", lane: "load" },
|
|
239
|
+
* ],
|
|
240
|
+
* links: [
|
|
241
|
+
* { from: "ARV", to: "SCN" },
|
|
242
|
+
* { from: "SCN", to: "CH*", trigger: "route" },
|
|
243
|
+
* { from: "CH*", to: "LDD" },
|
|
244
|
+
* { from: "SCN", to: "SCN", kind: "observed" },
|
|
245
|
+
* ],
|
|
246
|
+
* triggers: [{ key: "route", label: "route", owner: "sort-planner" }],
|
|
247
|
+
* },
|
|
248
|
+
* "Returns": {
|
|
249
|
+
* description: "From the counter back to the sender",
|
|
250
|
+
* lanes: [{ key: "counter", label: "Counter" }, { key: "check", label: "Check" }, { key: "out", label: "Out" }],
|
|
251
|
+
* states: [
|
|
252
|
+
* { key: "RCV", label: "Received", lane: "counter" },
|
|
253
|
+
* { key: "INS", label: "Inspected", lane: "check" },
|
|
254
|
+
* { key: "RSD", label: "Resent", lane: "out" },
|
|
255
|
+
* ],
|
|
256
|
+
* links: [{ from: "RCV", to: "INS" }, { from: "INS", to: "RSD" }, { from: "INS", to: "BIN", kind: "observed" }],
|
|
257
|
+
* },
|
|
258
|
+
* }));
|
|
259
|
+
* export const depotFlowsPatch = e3.mutation.patch(depotFlows);
|
|
260
|
+
* export const StepTemplate = StructType({ code: StringType, name: StringType, kind: StringType, slots: OptionType(IntegerType) });
|
|
261
|
+
* export const stepTemplates = e3.input("flowchart_step_templates", ArrayType(StepTemplate), variant("value", [
|
|
262
|
+
* { code: "ARV", name: "Arrived", kind: "Intake", slots: none },
|
|
263
|
+
* { code: "SCN", name: "Scanned", kind: "Intake", slots: none },
|
|
264
|
+
* { code: "CH*", name: "Sort chutes", kind: "Sort", slots: some(12n) },
|
|
265
|
+
* { code: "HLD", name: "Held", kind: "Hold", slots: none },
|
|
266
|
+
* { code: "LDD", name: "Loaded", kind: "Load", slots: none },
|
|
267
|
+
* ]));
|
|
268
|
+
* export const MoveTemplate = StructType({ kind: Flowchart.Types.Kind, decision: OptionType(StringType), note: StringType });
|
|
269
|
+
* export const moveTemplates = e3.record("flowchart_move_templates", DictType(StringType, MoveTemplate), new Map([
|
|
270
|
+
* ["Observed", { kind: variant("observed", null), decision: none, note: "Mined from the scans" }],
|
|
271
|
+
* ["Planned", { kind: variant("planned", null), decision: none, note: "The designed path" }],
|
|
272
|
+
* ["Routed", { kind: variant("planned", null), decision: some("route"), note: "Governed by the route decision" }],
|
|
273
|
+
* ]));
|
|
274
|
+
* export const DecisionOwner = StructType({ role: StringType, name: StringType, desk: StringType });
|
|
275
|
+
* export const decisionOwners = e3.input("flowchart_decision_owners", ArrayType(DecisionOwner), variant("value", [
|
|
276
|
+
* { role: "sort-planner", name: "Sort planner", desk: "Sort hall" },
|
|
277
|
+
* { role: "customs-desk", name: "Customs desk", desk: "Hold bay" },
|
|
278
|
+
* ]));
|
|
279
|
+
*
|
|
280
|
+
* const flowchart = East.function([], UIComponentType, (_$) => (
|
|
281
|
+
* <Reactive>{$ => {
|
|
282
|
+
* const flows = $.let(Record.bind(depotFlows, [depotFlowsPatch]));
|
|
283
|
+
* const steps = $.let(Data.bind(stepTemplates));
|
|
284
|
+
* const moves = $.let(Record.bind(moveTemplates, []));
|
|
285
|
+
* const owners = $.let(Data.bind(decisionOwners));
|
|
286
|
+
* return (
|
|
287
|
+
* <Box height="560px">
|
|
288
|
+
* <Flowchart
|
|
289
|
+
* record={flows}
|
|
290
|
+
* flow="Inbound parcels"
|
|
291
|
+
* name="depot"
|
|
292
|
+
* library={[
|
|
293
|
+
* Flowchart.library.flows(),
|
|
294
|
+
* // Step types, an input's rows: a card dropped on a lane adds a state seeded with what its drop sets.
|
|
295
|
+
* Flowchart.library.states(steps.read(), {
|
|
296
|
+
* name: "Steps", icon: "box",
|
|
297
|
+
* key: s => s.code, label: s => s.name, meta: s => some(s.code), group: s => s.kind,
|
|
298
|
+
* drop: s => Flowchart.patch(Flowchart.Types.State, { key: s.code, label: some(s.name), members: s.slots }),
|
|
299
|
+
* }),
|
|
300
|
+
* // Transition types, a record's rows by name: a card dropped on a transition retypes it.
|
|
301
|
+
* Flowchart.library.transitions(moves.read(), {
|
|
302
|
+
* icon: "arrow-right",
|
|
303
|
+
* key: (_m, name) => name, label: (_m, name) => name, meta: m => some(m.note),
|
|
304
|
+
* drop: m => Flowchart.patch(Flowchart.Types.Link, { kind: some(m.kind), trigger: m.decision }),
|
|
305
|
+
* }),
|
|
306
|
+
* // The author's own cards: a role dropped on a decision owns it.
|
|
307
|
+
* Flowchart.library.tab(owners.read(), {
|
|
308
|
+
* name: "Owners", icon: "user-tie",
|
|
309
|
+
* key: o => o.role, label: o => o.name, meta: o => some(o.desk),
|
|
310
|
+
* drop: o => Flowchart.patch(Flowchart.Types.Trigger, { owner: some(o.role) }),
|
|
311
|
+
* }),
|
|
312
|
+
* ]}
|
|
313
|
+
* />
|
|
314
|
+
* </Box>
|
|
315
|
+
* );
|
|
316
|
+
* }}</Reactive>
|
|
317
|
+
* ));
|
|
318
|
+
* ```
|
|
319
|
+
*/
|
|
320
|
+
export function libraryStates(rows, config) {
|
|
321
|
+
return { kind: "states", rows, config: config };
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* The transition templates — `Flowchart.library.transitions(rows, { … })`
|
|
325
|
+
* (FB26, decision 8): one card per row of the tab's own rows, as
|
|
326
|
+
* {@link libraryStates}' are, each a drag source that a click selects and a
|
|
327
|
+
* second click lets go. A card dropped on a transition sets the fields its
|
|
328
|
+
* `drop` sets on it — its kind, its decision and its other fields (#1249): a
|
|
329
|
+
* connection makes a transition of the default type, and a card retypes it.
|
|
330
|
+
*
|
|
331
|
+
* @remarks
|
|
332
|
+
* The rows are read as {@link libraryStates}' are. Left out, the tab's name is
|
|
333
|
+
* `Transitions`, in the flowchart's words. Refused when the surface is built:
|
|
334
|
+
* rows that are neither an Array nor a `Dict<String, T>`, a `drop` over
|
|
335
|
+
* another type than `Flowchart.Types.Link`, and the tab listed twice; and,
|
|
336
|
+
* when the tab's cards are read, a card whose `drop` sets the transition's
|
|
337
|
+
* `key`, `from` or `to` — the fields a patch sets are values its rows give,
|
|
338
|
+
* which the build cannot see.
|
|
339
|
+
*
|
|
340
|
+
* @typeParam T - The rows' element type
|
|
341
|
+
* @param rows - The rows — an `Array<T>` or a `Dict<String, T>` value or expression, such as a binding's `read()`
|
|
342
|
+
* @param config - The tab's name and icon, what each card shows, and its `drop` ({@link FlowchartTransitionsConfig})
|
|
343
|
+
* @returns The tab
|
|
344
|
+
*/
|
|
345
|
+
export function libraryTransitions(rows, config) {
|
|
346
|
+
return { kind: "transitions", rows, config: config };
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* A tab of the author's own cards — `Flowchart.library.tab(rows, { … })`
|
|
350
|
+
* (FB27): one card per row of the tab's own rows, as {@link libraryStates}'
|
|
351
|
+
* are, a click selecting a card and a second click letting it go. Given a
|
|
352
|
+
* `drop`, each card is a drag source, which lands where its patch's type says
|
|
353
|
+
* — a state, a transition, a lane's header or a decision's diamond — and sets
|
|
354
|
+
* its fields there (#1249); without one, the cards are read, never dragged.
|
|
355
|
+
*
|
|
356
|
+
* @remarks
|
|
357
|
+
* The rows are read as {@link libraryStates}' are. A tab's name is its
|
|
358
|
+
* identity in `library`. Refused when the surface is built: rows that are
|
|
359
|
+
* neither an Array nor a `Dict<String, T>`, a `drop` over none of a flow's
|
|
360
|
+
* row types, and two tabs of one name.
|
|
361
|
+
*
|
|
362
|
+
* @typeParam T - The rows' element type
|
|
363
|
+
* @typeParam P - The patch `drop` returns
|
|
364
|
+
* @param rows - The rows — an `Array<T>` or a `Dict<String, T>` value or expression, such as a binding's `read()`
|
|
365
|
+
* @param config - The tab's name and icon, what each card shows, and its `drop` ({@link FlowchartTabConfig})
|
|
366
|
+
* @returns The tab
|
|
367
|
+
*/
|
|
368
|
+
export function libraryTab(rows, config) {
|
|
369
|
+
return { kind: "tab", rows, config: config };
|
|
370
|
+
}
|
|
371
|
+
/** The library pane's tabs, each a factory (`Flowchart.library`). */
|
|
372
|
+
export const FlowchartLibraryFactories = {
|
|
373
|
+
flows: libraryFlows,
|
|
374
|
+
states: libraryStates,
|
|
375
|
+
transitions: libraryTransitions,
|
|
376
|
+
tab: libraryTab,
|
|
377
|
+
};
|
|
378
|
+
/** The cards a key repeats on, folded: the first kept, in the rows' order — as a register's members fold. */
|
|
379
|
+
function keepFirst(cardType) {
|
|
380
|
+
return East.function([ArrayType(cardType)], ArrayType(cardType), ($, cards) => {
|
|
381
|
+
const out = $.let([], ArrayType(cardType));
|
|
382
|
+
const seen = $.let(new Set(), SetType(StringType));
|
|
383
|
+
$.for(cards, ($2, card) => {
|
|
384
|
+
const key = $2.let(card.key, StringType);
|
|
385
|
+
$2.if(seen.has(key).not(), ($3) => {
|
|
386
|
+
$3(seen.insert(key));
|
|
387
|
+
$3(out.pushLast(card));
|
|
388
|
+
});
|
|
389
|
+
});
|
|
390
|
+
return out;
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
/** Each card type's fold, once. */
|
|
394
|
+
const KEEP_FIRST = new Map([
|
|
395
|
+
FlowchartCardType, FlowchartStateCardType, FlowchartTransitionCardType, FlowchartLaneCardType, FlowchartDecisionCardType,
|
|
396
|
+
].map((cardType) => [cardType, keepFirst(cardType)]));
|
|
397
|
+
/** What an author's card lands on, by its drop's row type: the arm its cards ride, and their type. */
|
|
398
|
+
const LANDINGS = [
|
|
399
|
+
["state", FlowchartStateType, FlowchartStateCardType],
|
|
400
|
+
["transition", FlowchartLinkType, FlowchartTransitionCardType],
|
|
401
|
+
["lane", FlowchartLaneType, FlowchartLaneCardType],
|
|
402
|
+
["decision", FlowchartTriggerType, FlowchartDecisionCardType],
|
|
403
|
+
];
|
|
404
|
+
/** How a tab names itself in a refusal. */
|
|
405
|
+
function tabName(tab) {
|
|
406
|
+
return tab.kind === "tab" ? `the "${tab.config.name}" tab` : `Flowchart.library.${tab.kind}()`;
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* A data tab's rows: an Array, or a Dict by String keys.
|
|
410
|
+
*
|
|
411
|
+
* @param tab - The tab
|
|
412
|
+
* @returns The rows, as East reads them
|
|
413
|
+
* @throws {Error} Naming the tab: rows that are neither an Array nor a `Dict<String, T>`
|
|
414
|
+
*/
|
|
415
|
+
function rowsOf(tab) {
|
|
416
|
+
const expr = East.value(tab.rows);
|
|
417
|
+
const type = Expr.type(expr);
|
|
418
|
+
if (type.type === "Array")
|
|
419
|
+
return { expr, dict: false, row: type.value };
|
|
420
|
+
if (type.type === "Dict" && type.key.type === "String")
|
|
421
|
+
return { expr, dict: true, row: type.value };
|
|
422
|
+
throw new Error(`Flowchart: ${tabName(tab)} reads its rows as an Array<T> or a Dict<String, T> — a value, or an expression such as a binding's read(), its own apart from the flows and the other tabs — and these are ${printType(type)}`);
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* A data tab's drop, reified once over its rows' type: the function a card's
|
|
426
|
+
* fields are set by, and the type of the patch it returns.
|
|
427
|
+
*/
|
|
428
|
+
function dropOf(rows, drop) {
|
|
429
|
+
const fn = East.function([rows.row, StringType], undefined, (_$, row, key) => drop(row, key));
|
|
430
|
+
return { fn, patch: Expr.type(fn).output };
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* A data tab's cards: one per row, read through its accessors, each with what
|
|
434
|
+
* its drop sets, when the tab's cards set anything, and a key that repeats
|
|
435
|
+
* keeping its first card.
|
|
436
|
+
*
|
|
437
|
+
* @param rows - The tab's rows
|
|
438
|
+
* @param config - What each card shows
|
|
439
|
+
* @param cardType - The cards' type
|
|
440
|
+
* @param sets - What a card sets, from its row and its key, checked as it is read; `undefined` for cards that set nothing
|
|
441
|
+
* @returns The cards, in the rows' order
|
|
442
|
+
*/
|
|
443
|
+
function cardsOf(rows, config, cardType, sets) {
|
|
444
|
+
const describe = East.function([rows.row, StringType], cardType, ($, row, key) => {
|
|
445
|
+
const card = $.let(config.key(row, key), StringType);
|
|
446
|
+
return {
|
|
447
|
+
key: card,
|
|
448
|
+
label: config.label(row, key),
|
|
449
|
+
meta: config.meta !== undefined ? config.meta(row, key) : East.value(none, OptionType(StringType)),
|
|
450
|
+
group: config.group !== undefined ? some(config.group(row, key)) : East.value(none, OptionType(StringType)),
|
|
451
|
+
...(sets === undefined ? {} : { sets: sets($, row, key, card) }),
|
|
452
|
+
};
|
|
453
|
+
});
|
|
454
|
+
const list = rows.dict
|
|
455
|
+
? rows.expr.toArray(($, row, key) => {
|
|
456
|
+
const read = $.const(describe);
|
|
457
|
+
return read(row, key);
|
|
458
|
+
})
|
|
459
|
+
: rows.expr.map(($, row, index) => {
|
|
460
|
+
const read = $.const(describe);
|
|
461
|
+
return read(row, East.print(index));
|
|
462
|
+
});
|
|
463
|
+
const fold = KEEP_FIRST.get(cardType);
|
|
464
|
+
return fold(list);
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* The state templates on the wire: the tab's name and icon, and its cards,
|
|
468
|
+
* each with the state its drop seeds.
|
|
469
|
+
*
|
|
470
|
+
* @param tab - The tab
|
|
471
|
+
* @returns The tab's wire value
|
|
472
|
+
* @throws {Error} Naming the tab: rows that are neither an Array nor a `Dict<String, T>`, or a `drop` over another type than a state's patch
|
|
473
|
+
*/
|
|
474
|
+
function statesTab(tab) {
|
|
475
|
+
const rows = rowsOf(tab);
|
|
476
|
+
const drop = dropOf(rows, tab.config.drop);
|
|
477
|
+
if (!isTypeEqual(drop.patch, FlowchartPatchTypeFor(FlowchartStateType))) {
|
|
478
|
+
throw new Error(`Flowchart: ${tabName(tab)}'s \`drop\` returns the fields of the state a card adds — Flowchart.patch(Flowchart.Types.State, { … }) — and this one returns ${printType(drop.patch)}`);
|
|
479
|
+
}
|
|
480
|
+
const cards = cardsOf(rows, tab.config, FlowchartStateCardType, ($, row, key) => {
|
|
481
|
+
const seed = $.const(drop.fn);
|
|
482
|
+
return seed(row, key);
|
|
483
|
+
});
|
|
484
|
+
// The cards' expression is typed loosely here; East checks it against the tab's type.
|
|
485
|
+
return East.value(variant("states", {
|
|
486
|
+
name: tab.config.name === undefined ? none : some(tab.config.name),
|
|
487
|
+
icon: tab.config.icon === undefined ? none : some(tab.config.icon),
|
|
488
|
+
cards,
|
|
489
|
+
}), FlowchartLibraryTabType);
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* The transition templates on the wire: the tab's name and icon, and its
|
|
493
|
+
* cards, each with what it sets on the transition it lands on — refused, as
|
|
494
|
+
* the card is read, when that is the transition's `key`, `from` or `to`.
|
|
495
|
+
*
|
|
496
|
+
* @param tab - The tab
|
|
497
|
+
* @returns The tab's wire value
|
|
498
|
+
* @throws {Error} Naming the tab: rows that are neither an Array nor a `Dict<String, T>`, or a `drop` over another type than a transition's patch
|
|
499
|
+
*/
|
|
500
|
+
function transitionsTab(tab) {
|
|
501
|
+
const rows = rowsOf(tab);
|
|
502
|
+
const drop = dropOf(rows, tab.config.drop);
|
|
503
|
+
if (!isTypeEqual(drop.patch, FlowchartPatchTypeFor(FlowchartLinkType))) {
|
|
504
|
+
throw new Error(`Flowchart: ${tabName(tab)}'s \`drop\` returns the fields a card sets on the transition it lands on — Flowchart.patch(Flowchart.Types.Link, { … }) — and this one returns ${printType(drop.patch)}`);
|
|
505
|
+
}
|
|
506
|
+
const name = tabName(tab);
|
|
507
|
+
const cards = cardsOf(rows, tab.config, FlowchartTransitionCardType, ($, row, key, card) => {
|
|
508
|
+
const retype = $.const(drop.fn);
|
|
509
|
+
const patched = $.let(retype(row, key));
|
|
510
|
+
const sets = patched;
|
|
511
|
+
// A transition card retypes the transition it lands on: never its key, nor its ends.
|
|
512
|
+
const refusal = (field) => East.str `Flowchart: ${name}'s card "${card}" sets a transition's \`${field}\` — a transition card retypes the transition it lands on, its kind, its decision and its other fields, never its key or its ends: leave \`key\`, \`from\` and \`to\` out of its Flowchart.patch`;
|
|
513
|
+
$.if(sets.key.hasTag("some"), ($2) => { $2.error(refusal("key")); });
|
|
514
|
+
$.if(sets.from.hasTag("some"), ($2) => { $2.error(refusal("from")); });
|
|
515
|
+
$.if(sets.to.hasTag("some"), ($2) => { $2.error(refusal("to")); });
|
|
516
|
+
return patched;
|
|
517
|
+
});
|
|
518
|
+
return East.value(variant("transitions", {
|
|
519
|
+
name: tab.config.name === undefined ? none : some(tab.config.name),
|
|
520
|
+
icon: tab.config.icon === undefined ? none : some(tab.config.icon),
|
|
521
|
+
cards,
|
|
522
|
+
}), FlowchartLibraryTabType);
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* An author's tab on the wire: its name and icon, and its cards by what they
|
|
526
|
+
* land on — the row type of the patch its `drop` returns — or read, never
|
|
527
|
+
* dragged, without one.
|
|
528
|
+
*
|
|
529
|
+
* @param tab - The tab
|
|
530
|
+
* @returns The tab's wire value
|
|
531
|
+
* @throws {Error} Naming the tab: rows that are neither an Array nor a `Dict<String, T>`, or a `drop` over none of a flow's row types
|
|
532
|
+
*/
|
|
533
|
+
function authorTab(tab) {
|
|
534
|
+
const rows = rowsOf(tab);
|
|
535
|
+
const config = tab.config;
|
|
536
|
+
// Without a drop, its cards are read, never dragged: they land nowhere.
|
|
537
|
+
let arm = "none";
|
|
538
|
+
let cardType = FlowchartCardType;
|
|
539
|
+
let sets = undefined;
|
|
540
|
+
if (config.drop !== undefined) {
|
|
541
|
+
const drop = dropOf(rows, config.drop);
|
|
542
|
+
const landing = LANDINGS.find(([, rowType]) => isTypeEqual(drop.patch, FlowchartPatchTypeFor(rowType)));
|
|
543
|
+
if (landing === undefined) {
|
|
544
|
+
throw new Error(`Flowchart: ${tabName(tab)}'s \`drop\` returns a patch over one of a flow's rows, its type naming what a card lands on — Flowchart.patch(Flowchart.Types.State, Link, Lane or Trigger, { … }) — and this one returns ${printType(drop.patch)}`);
|
|
545
|
+
}
|
|
546
|
+
[arm, , cardType] = landing;
|
|
547
|
+
sets = ($, row, key) => {
|
|
548
|
+
const setsOf = $.const(drop.fn);
|
|
549
|
+
return setsOf(row, key);
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
const lands = East.value(variant(arm, cardsOf(rows, config, cardType, sets)), FlowchartLandsType);
|
|
553
|
+
return East.value(variant("tab", {
|
|
554
|
+
name: config.name,
|
|
555
|
+
icon: config.icon === undefined ? none : some(config.icon),
|
|
556
|
+
lands,
|
|
557
|
+
}), FlowchartLibraryTabType);
|
|
558
|
+
}
|
|
559
|
+
/** The kinds of tab `library` lists. */
|
|
560
|
+
const KINDS = new Set(["flows", "states", "transitions", "tab"]);
|
|
561
|
+
/**
|
|
562
|
+
* The library pane on the wire (`Flowchart Builder Spec.md` §4.2, §4.4, FB16,
|
|
563
|
+
* FB25–FB29): its tabs in the order `library` lists them; none when it is
|
|
564
|
+
* left out, or empty.
|
|
565
|
+
*
|
|
566
|
+
* @param library - The tabs, each a `Flowchart.library.*` call
|
|
567
|
+
* @param many - Whether the flowchart holds flows by name, rather than one flow
|
|
568
|
+
* @returns The tabs on the wire
|
|
569
|
+
* @throws {Error} Naming the tab and the remedy: a `library` that is no list
|
|
570
|
+
* of `Flowchart.library.*` calls; a tab listed twice — the Flows tab, the
|
|
571
|
+
* state templates or the transition templates, or two of the author's tabs
|
|
572
|
+
* of one name; the Flows tab over one flow; and each of a data tab's
|
|
573
|
+
* refusals — rows that are neither an Array nor a `Dict<String, T>`, and a
|
|
574
|
+
* `drop` of another type than its tab's
|
|
575
|
+
* @internal
|
|
576
|
+
*/
|
|
577
|
+
export function buildLibrary(library, many) {
|
|
578
|
+
if (library === undefined)
|
|
579
|
+
return East.value([], ArrayType(FlowchartLibraryTabType));
|
|
580
|
+
const LIST = "Flowchart: `library` lists the library pane's tabs, each a Flowchart.library.* call — library={[Flowchart.library.flows()]}";
|
|
581
|
+
if (!Array.isArray(library))
|
|
582
|
+
throw new Error(LIST);
|
|
583
|
+
const seen = new Set();
|
|
584
|
+
const wires = library.map((given) => {
|
|
585
|
+
const tab = given;
|
|
586
|
+
if (tab === null || tab === undefined || typeof tab !== "object" || !KINDS.has(tab.kind)
|
|
587
|
+
|| (tab.kind !== "flows" && (typeof tab.config !== "object" || tab.config === null))) {
|
|
588
|
+
throw new Error(LIST);
|
|
589
|
+
}
|
|
590
|
+
// A tab once: the Flows tab and the templates by kind, an author's tab by its name.
|
|
591
|
+
const id = tab.kind === "tab" ? `tab:${tab.config.name}` : tab.kind;
|
|
592
|
+
if (seen.has(id)) {
|
|
593
|
+
throw new Error(tab.kind === "tab"
|
|
594
|
+
? `Flowchart: the library lists two tabs named "${tab.config.name}" — each tab's name is its own`
|
|
595
|
+
: `Flowchart: the library lists ${tabName(tab)} twice — each tab once`);
|
|
596
|
+
}
|
|
597
|
+
seen.add(id);
|
|
598
|
+
switch (tab.kind) {
|
|
599
|
+
case "flows":
|
|
600
|
+
if (!many) {
|
|
601
|
+
throw new Error(`Flowchart: ${tabName(tab)} lists flows by name, and this \`data\` is one flow, Flowchart.Types.Flow — leave the Flows tab out of \`library\`, or pass the flows by name`);
|
|
602
|
+
}
|
|
603
|
+
return East.value(variant("flows", null), FlowchartLibraryTabType);
|
|
604
|
+
case "states": return statesTab(tab);
|
|
605
|
+
case "transitions": return transitionsTab(tab);
|
|
606
|
+
case "tab": return authorTab(tab);
|
|
607
|
+
}
|
|
608
|
+
});
|
|
609
|
+
return East.value(wires, ArrayType(FlowchartLibraryTabType));
|
|
610
|
+
}
|
|
611
|
+
//# sourceMappingURL=library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../../src/flowchart/library.ts"],"names":[],"mappings":"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"}
|