@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 @@
|
|
|
1
|
+
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../src/flowchart/payload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EACH,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,WAAW,EACX,QAAQ,EAGR,YAAY,EACZ,UAAU,EAEV,UAAU,EACV,UAAU,EACV,WAAW,EAQX,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,kBAAkB,EAE1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKzE,OAAO,EAAoC,KAAK,sBAAsB,EAA8B,MAAM,aAAa,CAAC;AAExH,OAAO,EAAqB,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAM1G,uEAAuE;AACvE,eAAO,MAAM,oBAAoB;;;;;;;;KAAgE,CAAC;AAElG,sDAAsD;AACtD,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC;AAE/D;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;GAA2D,CAAC;AAElG,2DAA2D;AAC3D,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAC;AAEzE;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKnC,CAAC;AAEH,0DAA0D;AAC1D,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAC;AAEvE;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA4F,CAAC;AAEjI,yDAAyD;AACzD,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC;AAErE;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA2F,CAAC;AAE/H,wDAAwD;AACxD,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC;AAEnE;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG5B,CAAC;AAEH,mDAAmD;AACnD,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW9B,CAAC;AAEH,qDAAqD;AACrD,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC;AAM7D;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB;;;EAGjC,CAAC;AAEH,wDAAwD;AACxD,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC;AAMnE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
@@ -0,0 +1,521 @@
|
|
|
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 flowchart's payload (#1244, `Flowchart Builder Spec.md` §4.1, §4.4,
|
|
7
|
+
* §5.2): what `<Flowchart>` hands the renderer through its `Flowchart`
|
|
8
|
+
* carrier — its canvas, where its flows come from, the flow it opens first,
|
|
9
|
+
* its library's tabs, its inspector, whether it is read only, and its name —
|
|
10
|
+
* and every refusal of its props, made when the surface is built.
|
|
11
|
+
*
|
|
12
|
+
* Its flows come from one of two sources:
|
|
13
|
+
* - `record`, an e3 record of `Flowchart.Types.Flows` — flows by name — bound
|
|
14
|
+
* with its patch mutation. The handle crosses the payload as the query
|
|
15
|
+
* builder's does: its `read`, its `history` and its patch write — and, for
|
|
16
|
+
* the editing session over the flows (#1246), its Save: the session's keyed
|
|
17
|
+
* batch committed through the patch mutation by `Record.onApply(record, {
|
|
18
|
+
* keyed: true })`. A record always holds flows by name (ruled 2026-10-07:
|
|
19
|
+
* e3's patch mutation writes only keyed records), so a lone flow is a
|
|
20
|
+
* one-entry record, or the host's. With `window`, only the paged browse
|
|
21
|
+
* source and primary-entry read cross; the whole-record read is omitted;
|
|
22
|
+
* - `data`, the host's flows by name or one flow — a value, an expression or a
|
|
23
|
+
* bind handle — the value's type picking the arm. Given the host's
|
|
24
|
+
* `onApply`, the arm carries the session's Save through it (#1247): the
|
|
25
|
+
* session's batch restated as one patch of the host's value, which the
|
|
26
|
+
* host's `onApply` takes and answers.
|
|
27
|
+
*
|
|
28
|
+
* The flowchart takes no callback for an edit (#1247, FB24): every gesture is
|
|
29
|
+
* one transaction of its editing session, and each callback it took before is
|
|
30
|
+
* refused when the surface is built, naming the remedy.
|
|
31
|
+
*
|
|
32
|
+
* Its library's tabs are the `Flowchart.library.*` calls `library` lists, on
|
|
33
|
+
* the wire in that order: `library.ts` builds each — the Flows tab, and the
|
|
34
|
+
* template and author's tabs, each card read from the tab's own rows — and
|
|
35
|
+
* makes the library's refusals (#1248).
|
|
36
|
+
*
|
|
37
|
+
* Its inspector is on by default (#1250, ruled by the user on 2026-10-08):
|
|
38
|
+
* the end pane, Details and Issues, unless `inspector={false}`; and
|
|
39
|
+
* `inspector={{ state, transition }}` gives a kind its own Details in place of
|
|
40
|
+
* its form, each an East function over the row and its writer, wrapped over
|
|
41
|
+
* bytes as the Sheet's own Details are. The hover cards went with it: each
|
|
42
|
+
* hover prop is refused, naming the inspector.
|
|
43
|
+
*
|
|
44
|
+
* @packageDocumentation
|
|
45
|
+
*/
|
|
46
|
+
import { ArrayType, AsyncFunctionType, BlobType, BooleanType, DictType, East, Expr, FunctionType, OptionType, PatchType, StringType, StructType, VariantType, dictPatchOpsType, isTypeEqual, isValueOf, none, printType, some, variant, } from "@elaraai/east";
|
|
47
|
+
import { RecordCommitInfoType } from "@elaraai/e3-types";
|
|
48
|
+
import { EastUI, Editing } from "@elaraai/east-ui";
|
|
49
|
+
import { flowchartWindow, FlowchartWindowType, FlowchartReadEntryType, FlowchartRecordChromeType } from "./window.js";
|
|
50
|
+
import { Record as RecordBind, RecordOutcomeType } from "../bind/record.js";
|
|
51
|
+
import { RowInspectorType, rowInspector } from "../utils/row-inspector.js";
|
|
52
|
+
import { buildCanvas, FlowchartCanvasType } from "./canvas.js";
|
|
53
|
+
import { FlowchartLibraryTabType, buildLibrary } from "./library.js";
|
|
54
|
+
import { FlowchartFlowType, FlowchartFlowsType, FlowchartLinkType, FlowchartStateType } from "./types.js";
|
|
55
|
+
// ============================================================================
|
|
56
|
+
// Where the flows come from
|
|
57
|
+
// ============================================================================
|
|
58
|
+
/** A record's commits, newest first: who changed it last, and when. */
|
|
59
|
+
export const FlowchartHistoryType = FunctionType([], OptionType(ArrayType(RecordCommitInfoType)));
|
|
60
|
+
/**
|
|
61
|
+
* The editing session's Save (#1246, #1247, FB22): the session's keyed batch —
|
|
62
|
+
* the open flow's insert, update or delete by name — as the session hands it,
|
|
63
|
+
* bytes of `Editing.Types.ChangeSet(Flowchart.Types.Flow, String)`, sent as
|
|
64
|
+
* one commit and answered as the session's Save is: over a record, one patch
|
|
65
|
+
* through its patch mutation by `Record.onApply(record, { keyed: true })`;
|
|
66
|
+
* over the host's flows or flow, one patch of that value through the host's
|
|
67
|
+
* `onApply`, handed the batch's request id with it (#1275).
|
|
68
|
+
*/
|
|
69
|
+
export const FlowchartSessionApplyType = AsyncFunctionType([BlobType], Editing.Types.ApplyResult);
|
|
70
|
+
/**
|
|
71
|
+
* A record of flows by name, bound with its patch mutation — what the
|
|
72
|
+
* renderer reads the flows from and commits to, as the query builder's
|
|
73
|
+
* `QueriesHandleType` is the saved queries record's.
|
|
74
|
+
*
|
|
75
|
+
* @property read - The record's flows
|
|
76
|
+
* @property history - Its commits, newest first
|
|
77
|
+
* @property commit - Its patch write, awaited: a request id and the patch, answered by the outcome
|
|
78
|
+
* @property apply - The editing session's Apply through that patch write ({@link FlowchartSessionApplyType})
|
|
79
|
+
*/
|
|
80
|
+
export const FlowchartFlowsHandleType = StructType({
|
|
81
|
+
read: FunctionType([], FlowchartFlowsType),
|
|
82
|
+
history: FlowchartHistoryType,
|
|
83
|
+
commit: StructType({ patch: AsyncFunctionType([StringType, PatchType(FlowchartFlowsType)], RecordOutcomeType) }),
|
|
84
|
+
apply: FlowchartSessionApplyType,
|
|
85
|
+
});
|
|
86
|
+
/**
|
|
87
|
+
* The host's commit of its flows' edits (#1247, #1275): the session's request
|
|
88
|
+
* id and one patch of the flows, as a record's patch write takes them, answered
|
|
89
|
+
* as the editing session's Save is. A Retry after a write with no answer hands
|
|
90
|
+
* the same id again, so a host that keys its write by it — as e3's `commit.patch`
|
|
91
|
+
* does — writes once.
|
|
92
|
+
*/
|
|
93
|
+
export const FlowchartFlowsApplyType = AsyncFunctionType([StringType, PatchType(FlowchartFlowsType)], Editing.Types.ApplyResult);
|
|
94
|
+
/**
|
|
95
|
+
* The host's commit of its one flow's edits (#1247, #1275): the session's
|
|
96
|
+
* request id and the flow's own patch, answered as the editing session's Save
|
|
97
|
+
* is — a Retry handing the same id again.
|
|
98
|
+
*/
|
|
99
|
+
export const FlowchartFlowApplyType = AsyncFunctionType([StringType, PatchType(FlowchartFlowType)], Editing.Types.ApplyResult);
|
|
100
|
+
/**
|
|
101
|
+
* The host's flows: its value, of either type, and — when the host takes the
|
|
102
|
+
* flowchart's edits — the session's Save through the host's `onApply` (#1247,
|
|
103
|
+
* FB22), which hands the host the batch's request id and one patch of its own
|
|
104
|
+
* value's type (#1275).
|
|
105
|
+
*
|
|
106
|
+
* @property flows - Flows by name
|
|
107
|
+
* @property flow - One flow
|
|
108
|
+
*/
|
|
109
|
+
export const FlowchartDataType = VariantType({
|
|
110
|
+
flows: StructType({ value: FlowchartFlowsType, apply: OptionType(FlowchartSessionApplyType) }),
|
|
111
|
+
flow: StructType({ value: FlowchartFlowType, apply: OptionType(FlowchartSessionApplyType) }),
|
|
112
|
+
});
|
|
113
|
+
/**
|
|
114
|
+
* Where a flowchart's flows come from.
|
|
115
|
+
*
|
|
116
|
+
* @property record - A record of flows by name, bound with its patch mutation
|
|
117
|
+
* @property paged - Bounded browse pages, primary-entry reads and shared record Slice chrome over a record
|
|
118
|
+
* @property data - The host's flows by name, or one flow: the arm its value's type picked
|
|
119
|
+
*/
|
|
120
|
+
export const FlowchartSourceType = VariantType({
|
|
121
|
+
record: FlowchartFlowsHandleType,
|
|
122
|
+
paged: StructType({
|
|
123
|
+
recordId: StringType,
|
|
124
|
+
window: FlowchartWindowType,
|
|
125
|
+
entry: FlowchartReadEntryType,
|
|
126
|
+
chrome: FlowchartRecordChromeType,
|
|
127
|
+
history: FlowchartHistoryType,
|
|
128
|
+
apply: FlowchartSessionApplyType,
|
|
129
|
+
}),
|
|
130
|
+
data: FlowchartDataType,
|
|
131
|
+
});
|
|
132
|
+
// ============================================================================
|
|
133
|
+
// The inspector
|
|
134
|
+
// ============================================================================
|
|
135
|
+
/**
|
|
136
|
+
* The inspector pane on the wire (#1250, `Flowchart Builder Spec.md` §5.3,
|
|
137
|
+
* FB35–FB38, FB44, FB45): each kind's own Details, where the author gives them
|
|
138
|
+
* — a state's, a transition's — in place of that kind's form, as the Sheet's
|
|
139
|
+
* own Details (SB58) and a Plan event kind's inspector are: the row as bytes,
|
|
140
|
+
* and the writer that takes the edited row back as bytes.
|
|
141
|
+
*
|
|
142
|
+
* @property state - A state's own Details; `none`, its form
|
|
143
|
+
* @property transition - A transition's own Details; `none`, its form
|
|
144
|
+
*/
|
|
145
|
+
export const FlowchartInspectorType = StructType({
|
|
146
|
+
state: OptionType(RowInspectorType),
|
|
147
|
+
transition: OptionType(RowInspectorType),
|
|
148
|
+
});
|
|
149
|
+
// ============================================================================
|
|
150
|
+
// The payload
|
|
151
|
+
// ============================================================================
|
|
152
|
+
/**
|
|
153
|
+
* The `Flowchart` renderer's payload: the flowchart's interface.
|
|
154
|
+
*
|
|
155
|
+
* @property canvas - What the canvas draws its flow with ({@link FlowchartCanvasType})
|
|
156
|
+
* @property source - Where the flows come from: a record of flows by name, or the host's flows or flow
|
|
157
|
+
* @property open - Over many flows, the one opened first
|
|
158
|
+
* @property library - The library pane's tabs, in the order `library` lists them; none, no library pane
|
|
159
|
+
* @property inspector - The inspector pane — on by default — with each kind's own Details the author gives ({@link FlowchartInspectorType}); `none`, no inspector pane (`inspector={false}`)
|
|
160
|
+
* @property readOnly - No gesture edits, no drop lands, the inspector edits nothing
|
|
161
|
+
* @property name - Names the flowchart, when a surface holds two
|
|
162
|
+
*/
|
|
163
|
+
export const FlowchartPayloadType = StructType({
|
|
164
|
+
canvas: FlowchartCanvasType,
|
|
165
|
+
source: FlowchartSourceType,
|
|
166
|
+
open: OptionType(StringType),
|
|
167
|
+
library: ArrayType(FlowchartLibraryTabType),
|
|
168
|
+
inspector: OptionType(FlowchartInspectorType),
|
|
169
|
+
readOnly: BooleanType,
|
|
170
|
+
name: OptionType(StringType),
|
|
171
|
+
});
|
|
172
|
+
/**
|
|
173
|
+
* The `Flowchart` carrier: `<Flowchart>` builds a {@link FlowchartPayloadType}
|
|
174
|
+
* and returns it through this {@link EastUI.component}. The React renderer
|
|
175
|
+
* registers against it in `@elaraai/e3-ui-components` via
|
|
176
|
+
* `implementUIComponent`.
|
|
177
|
+
*/
|
|
178
|
+
export const FlowchartComponent = EastUI.component("Flowchart", FlowchartPayloadType, { optional: true });
|
|
179
|
+
// ============================================================================
|
|
180
|
+
// The flowchart's shared keys
|
|
181
|
+
// ============================================================================
|
|
182
|
+
/**
|
|
183
|
+
* The names a flowchart keeps its viewer's state under, by its `name`: its
|
|
184
|
+
* frame's panes — their open tab and collapsed state (#1245) — the flow open
|
|
185
|
+
* in it, its library's id, LR · TD (#1246), and its drop target, where its
|
|
186
|
+
* library's cards land (#1249).
|
|
187
|
+
*
|
|
188
|
+
* @remarks
|
|
189
|
+
* As the Plan's `planKeys` and the Sheet's `sheetKeys`: two flowcharts on one
|
|
190
|
+
* surface keep apart only when each is named, and two of one name open one
|
|
191
|
+
* flow together, and turn together, as the query builder's open query is
|
|
192
|
+
* shared by its id.
|
|
193
|
+
*
|
|
194
|
+
* @param name - The flowchart's name, when a surface holds more than one; omitted, the one flowchart
|
|
195
|
+
* @returns The keys
|
|
196
|
+
*/
|
|
197
|
+
export function flowchartKeys(name) {
|
|
198
|
+
const suffix = name === undefined ? "" : `.${name}`;
|
|
199
|
+
return {
|
|
200
|
+
frame: `flowchart${suffix}.frame`,
|
|
201
|
+
flow: `flowchart${suffix}.flow`,
|
|
202
|
+
library: `flowchart.library${suffix}`,
|
|
203
|
+
orientation: `flowchart${suffix}.orientation`,
|
|
204
|
+
surface: `flowchart${suffix}.surface`,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/** The tables and row mappers the flowchart took before it held flows, which `Flowchart.over` takes now. */
|
|
208
|
+
const TABLES = ["states", "links", "lanes", "triggers", "state", "link", "lane", "trigger"];
|
|
209
|
+
/** The sizes the flowchart took before it filled the box it is given (#1245). */
|
|
210
|
+
const SIZES = ["height", "maxHeight"];
|
|
211
|
+
/**
|
|
212
|
+
* The refusal of `density`, which the flowchart took and never drew by (#1251,
|
|
213
|
+
* ruled by the user on 2026-10-09: "Remove it"): the canvas draws at one
|
|
214
|
+
* rhythm, the spec's.
|
|
215
|
+
*/
|
|
216
|
+
const DENSITY = "Flowchart: `density` is not a prop — the canvas draws at one rhythm, the spec's 116×40 state cards in their lanes; leave `density` out";
|
|
217
|
+
/** The callbacks the flowchart took for its edits before each gesture was a transaction of its editing session (#1247, FB24). */
|
|
218
|
+
const EDIT_CALLBACKS = ["linkMode", "onCreateLink", "onDeleteLink", "onAddLane", "onRenameLane", "onDeleteLane", "onAddState", "onEditState", "onMoveState"];
|
|
219
|
+
/**
|
|
220
|
+
* The hover cards the flowchart took before its inspector showed what is
|
|
221
|
+
* selected (#1250, FB46, ruled by the user on 2026-10-08), each with its
|
|
222
|
+
* remedy: a state's or a transition's own Details, or a decision's form.
|
|
223
|
+
*/
|
|
224
|
+
const HOVERS = {
|
|
225
|
+
stateHover: "give a state its own Details with inspector={{ state: East.function([Flowchart.Types.State, FunctionType([Flowchart.Types.State], NullType)], UIComponentType, ($, state, update) => …) }}",
|
|
226
|
+
linkHover: "give a transition its own Details with inspector={{ transition: East.function([Flowchart.Types.Link, FunctionType([Flowchart.Types.Link], NullType)], UIComponentType, ($, link, update) => …) }}",
|
|
227
|
+
triggerHover: "a decision's Details are its form — every field, and the transitions it governs",
|
|
228
|
+
};
|
|
229
|
+
/**
|
|
230
|
+
* The refusal of a kind's own Details of another type than its row's.
|
|
231
|
+
*
|
|
232
|
+
* @param kind - The kind, as `inspector` names it
|
|
233
|
+
* @param type - Its row's type, as `Flowchart.Types` names it
|
|
234
|
+
* @param row - What the function calls its row
|
|
235
|
+
* @returns The refusal
|
|
236
|
+
*/
|
|
237
|
+
function rowRefusal(kind, type, row) {
|
|
238
|
+
return `Flowchart: \`inspector.${kind}\` is a ${kind}'s own Details — an East function over the ${kind} and its writer: East.function([Flowchart.Types.${type}, FunctionType([Flowchart.Types.${type}], NullType)], UIComponentType, ($, ${row}, update) => …)`;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* The inspector pane on the wire (#1250, FB44, FB45): on by default, or given
|
|
242
|
+
* `true`; none for `false`; and each kind's own Details where `{ state,
|
|
243
|
+
* transition }` gives them, checked against the row's type and wrapped over
|
|
244
|
+
* bytes, as the Sheet's own Details are.
|
|
245
|
+
*
|
|
246
|
+
* @param inspector - The flowchart's `inspector`
|
|
247
|
+
* @returns The pane, or none
|
|
248
|
+
* @throws {Error} Naming the prop and the remedy: an `inspector` of another
|
|
249
|
+
* kind, a key other than `state` and `transition`, and a function of another
|
|
250
|
+
* type than `(Row, (Row) => Null) => UIComponentType`
|
|
251
|
+
*/
|
|
252
|
+
function inspectorOf(inspector) {
|
|
253
|
+
if (inspector === false)
|
|
254
|
+
return East.value(none, OptionType(FlowchartInspectorType));
|
|
255
|
+
if (inspector === undefined || inspector === true) {
|
|
256
|
+
return East.value(some({ state: none, transition: none }), OptionType(FlowchartInspectorType));
|
|
257
|
+
}
|
|
258
|
+
if (inspector === null || typeof inspector !== "object" || inspector instanceof Expr || Array.isArray(inspector)) {
|
|
259
|
+
throw new Error("Flowchart: `inspector` is on by default — inspector={false} removes the pane, and inspector={{ state, transition }} gives a state or a transition its own Details, each an East function over the row and its writer");
|
|
260
|
+
}
|
|
261
|
+
const given = inspector;
|
|
262
|
+
for (const key of Object.keys(given)) {
|
|
263
|
+
if (key !== "state" && key !== "transition") {
|
|
264
|
+
throw new Error(`Flowchart: \`inspector\` gives a state or a transition its own Details — { state, transition } — and \`${key}\` is neither: every other kind's Details are its form`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
const state = given.state === undefined ? none : some(rowInspector(given.state, FlowchartStateType, rowRefusal("state", "State", "state")));
|
|
268
|
+
const transition = given.transition === undefined ? none : some(rowInspector(given.transition, FlowchartLinkType, rowRefusal("transition", "Link", "link")));
|
|
269
|
+
return East.value(some({ state, transition }), OptionType(FlowchartInspectorType));
|
|
270
|
+
}
|
|
271
|
+
/** The refusal of a record not bound with its patch mutation. */
|
|
272
|
+
const UNBOUND = "Flowchart: `record` is an e3 record bound with its patch mutation — Record.bind(record, [e3.mutation.patch(record)])";
|
|
273
|
+
/** A field of a struct type, or `undefined`. */
|
|
274
|
+
function fieldOf(type, name) {
|
|
275
|
+
return type?.type === "Struct" ? type.fields[name] : undefined;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* The record arm: a `Record.bind` handle over flows by name, bound with its
|
|
279
|
+
* patch mutation, crossing the payload as its read, its history, its patch
|
|
280
|
+
* write and the editing session's Apply through it. A record of one flow is
|
|
281
|
+
* refused: e3's patch mutation writes only keyed records (ruled 2026-10-07),
|
|
282
|
+
* so a lone flow is a one-entry record, or the host's `data`.
|
|
283
|
+
*/
|
|
284
|
+
function recordArm(record, window, slice) {
|
|
285
|
+
if (!(record instanceof Expr))
|
|
286
|
+
throw new Error(UNBOUND);
|
|
287
|
+
const type = Expr.type(record);
|
|
288
|
+
const read = fieldOf(type, "read");
|
|
289
|
+
if (read === undefined || read.type !== "Function" || read.inputs.length !== 0
|
|
290
|
+
|| fieldOf(type, "history")?.type !== "Function" || fieldOf(type, "binding") === undefined) {
|
|
291
|
+
throw new Error(UNBOUND);
|
|
292
|
+
}
|
|
293
|
+
const recordType = read.output;
|
|
294
|
+
if (isTypeEqual(recordType, FlowchartFlowType)) {
|
|
295
|
+
throw new Error("Flowchart: `record` holds flows by name, Flowchart.Types.Flows — e3's patch mutation writes only keyed records — and this record holds one flow: make it a record of flows with one entry (Flowchart.values({ [name]: flow })), or pass the flow as `data`");
|
|
296
|
+
}
|
|
297
|
+
if (!isTypeEqual(recordType, FlowchartFlowsType)) {
|
|
298
|
+
throw new Error(`Flowchart: \`record\` holds flows by name, Flowchart.Types.Flows — declare it with that type — and this record holds ${printType(recordType)}`);
|
|
299
|
+
}
|
|
300
|
+
// The patch door: e3.mutation.patch's, the mutation named `patch` taking
|
|
301
|
+
// the record's patch.
|
|
302
|
+
const door = fieldOf(fieldOf(type, "commit"), "patch");
|
|
303
|
+
if (door === undefined || !isTypeEqual(door, AsyncFunctionType([StringType, PatchType(FlowchartFlowsType)], RecordOutcomeType))) {
|
|
304
|
+
throw new Error(`${UNBOUND}, and this binding ${door === undefined ? "has no `patch`" : "has a `patch` that takes another patch than the record's"}`);
|
|
305
|
+
}
|
|
306
|
+
const handle = record;
|
|
307
|
+
// The session's Apply (#1246): its keyed batch, decoded at its own type
|
|
308
|
+
// and committed as it is — each flow's insert, update or delete by name —
|
|
309
|
+
// through the patch door, by Record.onApply's keyed form.
|
|
310
|
+
const keyed = RecordBind.onApply(record, { keyed: true });
|
|
311
|
+
const batchType = Editing.Types.ChangeSet(FlowchartFlowType, StringType);
|
|
312
|
+
const apply = East.asyncFunction([BlobType], Editing.Types.ApplyResult, ($, blob) => {
|
|
313
|
+
const commit = $.const(keyed);
|
|
314
|
+
return commit(blob.decodeBeast(batchType, "v2"));
|
|
315
|
+
});
|
|
316
|
+
if (window !== undefined) {
|
|
317
|
+
const view = flowchartWindow(window, slice);
|
|
318
|
+
const binding = record;
|
|
319
|
+
return { many: true, source: variant("paged", {
|
|
320
|
+
recordId: binding.binding.name, ...view, history: handle.history, apply,
|
|
321
|
+
}) };
|
|
322
|
+
}
|
|
323
|
+
return {
|
|
324
|
+
many: true,
|
|
325
|
+
source: variant("record", { read: handle.read, history: handle.history, commit: { patch: handle.commit.patch }, apply }),
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
/** The host's flows as an expression: an expression, a bind handle's read, or a value of either type. */
|
|
329
|
+
function dataValue(data) {
|
|
330
|
+
if (data instanceof Expr) {
|
|
331
|
+
const read = fieldOf(Expr.type(data), "read");
|
|
332
|
+
return read !== undefined && read.type === "Function" && read.inputs.length === 0
|
|
333
|
+
? data.read()
|
|
334
|
+
: data;
|
|
335
|
+
}
|
|
336
|
+
if (isValueOf(data, FlowchartFlowsType))
|
|
337
|
+
return East.value(data, FlowchartFlowsType);
|
|
338
|
+
if (isValueOf(data, FlowchartFlowType))
|
|
339
|
+
return East.value(data, FlowchartFlowType);
|
|
340
|
+
throw new Error("Flowchart: `data` is Flowchart.Types.Flows, flows by name, or Flowchart.Types.Flow, one flow — a value, an expression or a bind handle of either; Flowchart.over builds one flow from an app's tables — and this value is neither");
|
|
341
|
+
}
|
|
342
|
+
/** The host's `onApply`, checked against a request id and the patch of its flows' type. */
|
|
343
|
+
function applyOf(onApply, applyType, value) {
|
|
344
|
+
const apply = (onApply instanceof Expr ? onApply : East.value(onApply, applyType));
|
|
345
|
+
const type = Expr.type(apply);
|
|
346
|
+
if (!isTypeEqual(type, applyType)) {
|
|
347
|
+
throw new Error(`Flowchart: \`onApply\` commits \`data\`'s edits, one patch of the value at a time — an East.asyncFunction from the session's request id and PatchType(${value}), [StringType, PatchType(${value})], to Editing.Types.ApplyResult; a Retry hands the same id again — and this one is ${printType(type)}`);
|
|
348
|
+
}
|
|
349
|
+
return apply;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* The data arm: the host's flows, of either type, and — when the host takes
|
|
353
|
+
* the edits — the session's Save through its `onApply` (#1247, FB22). The
|
|
354
|
+
* session's batch is keyed by name, as over a record: over flows by name it is
|
|
355
|
+
* restated as one patch of the flows, each change the open flow's insert,
|
|
356
|
+
* update or delete by name, as `Record.onApply(record, { keyed: true })`
|
|
357
|
+
* restates it for a record — never the whole value replaced, so the host's
|
|
358
|
+
* other flows stay as they are; over one flow, its one change is the flow's
|
|
359
|
+
* own patch. The host's `onApply` is handed the batch's request id with it
|
|
360
|
+
* (#1275) — the same id on a Retry, which resends the same batch — and answers
|
|
361
|
+
* the session.
|
|
362
|
+
*/
|
|
363
|
+
function dataArm(data, onApply) {
|
|
364
|
+
const value = dataValue(data);
|
|
365
|
+
const type = Expr.type(value);
|
|
366
|
+
const many = isTypeEqual(type, FlowchartFlowsType);
|
|
367
|
+
if (!many && !isTypeEqual(type, FlowchartFlowType)) {
|
|
368
|
+
throw new Error(`Flowchart: \`data\` is Flowchart.Types.Flows, flows by name, or Flowchart.Types.Flow, one flow — a value, an expression or a bind handle of either; Flowchart.over builds one flow from an app's tables — and this is ${printType(type)}`);
|
|
369
|
+
}
|
|
370
|
+
if (onApply === undefined)
|
|
371
|
+
return { many, source: variant("data", variant(many ? "flows" : "flow", { value, apply: none })) };
|
|
372
|
+
// The host's commit, its patch opaque here, as in `Record.onApply`; its runtime type is exact.
|
|
373
|
+
const host = applyOf(onApply, many ? FlowchartFlowsApplyType : FlowchartFlowApplyType, many ? "Flowchart.Types.Flows" : "Flowchart.Types.Flow");
|
|
374
|
+
const batchType = Editing.Types.ChangeSet(FlowchartFlowType, StringType);
|
|
375
|
+
const apply = many
|
|
376
|
+
? East.asyncFunction([BlobType], Editing.Types.ApplyResult, ($, blob) => {
|
|
377
|
+
const commit = $.const(host);
|
|
378
|
+
const batch = $.const(blob.decodeBeast(batchType, "v2"));
|
|
379
|
+
// Each change is its flow's insert, update or delete, by name: the
|
|
380
|
+
// batch's own values and patches, carrying what the flow was when
|
|
381
|
+
// the edit began.
|
|
382
|
+
const ops = $.let(new Map(), DictType(StringType, dictPatchOpsType(FlowchartFlowType)));
|
|
383
|
+
$.for(batch.changes, ($, change) => {
|
|
384
|
+
$.match(change.patch, {
|
|
385
|
+
replace: ($, swap) => {
|
|
386
|
+
$.match(swap.after, {
|
|
387
|
+
some: ($, after) => {
|
|
388
|
+
$.match(swap.before, {
|
|
389
|
+
none: ($) => { $(ops.insert(change.id, variant("insert", after))); },
|
|
390
|
+
some: ($, before) => { $(ops.insert(change.id, variant("update", East.diff(before, after)))); },
|
|
391
|
+
});
|
|
392
|
+
},
|
|
393
|
+
none: ($) => {
|
|
394
|
+
$.match(swap.before, { some: ($, before) => { $(ops.insert(change.id, variant("delete", before))); } });
|
|
395
|
+
},
|
|
396
|
+
});
|
|
397
|
+
},
|
|
398
|
+
patch: ($, entry) => {
|
|
399
|
+
$.match(entry, { some: ($, update) => { $(ops.insert(change.id, variant("update", update))); } });
|
|
400
|
+
},
|
|
401
|
+
});
|
|
402
|
+
});
|
|
403
|
+
return commit(batch.requestId, variant("patch", ops));
|
|
404
|
+
})
|
|
405
|
+
: East.asyncFunction([BlobType], Editing.Types.ApplyResult, ($, blob) => {
|
|
406
|
+
const commit = $.const(host);
|
|
407
|
+
const batch = $.const(blob.decodeBeast(batchType, "v2"));
|
|
408
|
+
// One flow is one entry, changed in place: its change is the flow's own patch.
|
|
409
|
+
const result = $.let(variant("rejected", [{ entry: "", row: none, field: none,
|
|
410
|
+
message: "One flow is changed in place: Save never adds or removes it" }]), Editing.Types.ApplyResult);
|
|
411
|
+
$.for(batch.changes, ($, change) => {
|
|
412
|
+
$.match(change.patch, {
|
|
413
|
+
replace: ($, swap) => {
|
|
414
|
+
$.match(swap.before, {
|
|
415
|
+
some: ($, before) => {
|
|
416
|
+
$.match(swap.after, { some: ($, after) => { $.assign(result, commit(batch.requestId, East.diff(before, after))); } });
|
|
417
|
+
},
|
|
418
|
+
});
|
|
419
|
+
},
|
|
420
|
+
patch: ($, entry) => {
|
|
421
|
+
$.match(entry, { some: ($, update) => { $.assign(result, commit(batch.requestId, update)); } });
|
|
422
|
+
},
|
|
423
|
+
});
|
|
424
|
+
});
|
|
425
|
+
return result;
|
|
426
|
+
});
|
|
427
|
+
return { many, source: variant("data", variant(many ? "flows" : "flow", { value, apply: some(apply) })) };
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Creates the flowchart's payload alone — what `<Flowchart>` returns through
|
|
431
|
+
* the `Flowchart` carrier — for the tests and the renderer's fixtures, which
|
|
432
|
+
* read it whole.
|
|
433
|
+
*
|
|
434
|
+
* @param props - The flowchart's props, as `<Flowchart>` takes them
|
|
435
|
+
* @returns An East expression of {@link FlowchartPayloadType}
|
|
436
|
+
* @throws {Error} Naming the prop and the remedy: flows from both `record` and
|
|
437
|
+
* `data`, or from neither; `onApply` or top-level `affordances` over a
|
|
438
|
+
* record; a record Slice without a window or a local Slice over a record; `flow` over one flow; a record of one flow, or of another type
|
|
439
|
+
* than `Flowchart.Types.Flows`, or not bound with its patch mutation; `data`
|
|
440
|
+
* of neither flow type; an `onApply` that does not take a request id and
|
|
441
|
+
* the patch of `data`'s type; `"brush"` among the affordances; a table or row mapper,
|
|
442
|
+
* which `Flowchart.over` takes; `height` or `maxHeight`, which the box the
|
|
443
|
+
* flowchart fills sets; a callback for an edit, or `linkMode`, which the
|
|
444
|
+
* editing session's gestures replace; a hover card's builder (`stateHover`,
|
|
445
|
+
* `linkHover`, `triggerHover`), which the inspector replaces; `density`,
|
|
446
|
+
* which the canvas's one rhythm replaces; an `inspector`
|
|
447
|
+
* of another kind than a Boolean or `{ state, transition }`, a key other
|
|
448
|
+
* than those two, or a kind's own Details of another type than `(Row, (Row)
|
|
449
|
+
* => Null) => UIComponentType`; and each of the library's refusals
|
|
450
|
+
* (`library.ts`'s `buildLibrary`): a tab listed twice, the Flows tab over
|
|
451
|
+
* one flow, a data tab's rows of neither an Array nor a `Dict<String, T>`,
|
|
452
|
+
* and a `drop` of another type than its tab's
|
|
453
|
+
* @internal
|
|
454
|
+
*/
|
|
455
|
+
export function createFlowchartPayload(props) {
|
|
456
|
+
const { record, window, data, onApply, flow, library, slice, affordances, inspector, readOnly, name, ...canvas } = props;
|
|
457
|
+
for (const table of TABLES) {
|
|
458
|
+
if (table in canvas) {
|
|
459
|
+
throw new Error(`Flowchart: \`${table}\` is one of the tables, or the row mappers, Flowchart.over builds a flow from — pass data={Flowchart.over(states, { … })}, or bind a record of flows as \`record\``);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
for (const size of SIZES) {
|
|
463
|
+
if (size in canvas) {
|
|
464
|
+
throw new Error(`Flowchart: \`${size}\` is not a prop — the flowchart fills the box it is given; give it a box of its own height: <Box height="560px"><Flowchart … /></Box>`);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
if ("density" in canvas)
|
|
468
|
+
throw new Error(DENSITY);
|
|
469
|
+
for (const callback of EDIT_CALLBACKS) {
|
|
470
|
+
if (callback in canvas) {
|
|
471
|
+
throw new Error(`Flowchart: \`${callback}\` is not a prop — every gesture is a transaction of the flowchart's editing session, and Save commits them as one patch: over \`record\`, through its patch mutation; over \`data\`, through the host's \`onApply\``);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
for (const [hover, remedy] of Object.entries(HOVERS)) {
|
|
475
|
+
if (hover in canvas) {
|
|
476
|
+
throw new Error(`Flowchart: \`${hover}\` is not a prop — the hover cards went, and the inspector, on by default, shows what is selected: ${remedy}`);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
if (record !== undefined && data !== undefined) {
|
|
480
|
+
throw new Error("Flowchart: takes its flows from `record` or from `data`, never both");
|
|
481
|
+
}
|
|
482
|
+
if (record === undefined && data === undefined) {
|
|
483
|
+
throw new Error("Flowchart: needs its flows — `record`, an e3 record of Flowchart.Types.Flows bound with its patch mutation, or `data`: flows by name or one flow, as a value, an expression or a bind handle");
|
|
484
|
+
}
|
|
485
|
+
let arm;
|
|
486
|
+
if (record !== undefined) {
|
|
487
|
+
if (onApply !== undefined) {
|
|
488
|
+
throw new Error("Flowchart: `onApply` commits `data`'s edits — a flowchart over `record` commits through the record's patch mutation; leave `onApply` out");
|
|
489
|
+
}
|
|
490
|
+
if (slice !== undefined && (window === undefined || slice instanceof Expr || !("slice" in slice))) {
|
|
491
|
+
throw new Error("Flowchart: record filters use window={Slice.rows(slice)} and slice={{ slice }}; a local Slice only narrows transitions over data");
|
|
492
|
+
}
|
|
493
|
+
if (affordances !== undefined) {
|
|
494
|
+
throw new Error("Flowchart: record affordances belong inside slice={{ slice, affordances }}");
|
|
495
|
+
}
|
|
496
|
+
arm = recordArm(record, window, slice);
|
|
497
|
+
}
|
|
498
|
+
else {
|
|
499
|
+
if (window !== undefined)
|
|
500
|
+
throw new Error("Flowchart: `window` pages a bound `record`; pass the record with its patch mutation");
|
|
501
|
+
arm = dataArm(data, onApply);
|
|
502
|
+
}
|
|
503
|
+
if (flow !== undefined && !arm.many) {
|
|
504
|
+
throw new Error("Flowchart: `flow` opens one of many flows first, and this `data` is one flow, Flowchart.Types.Flow — leave `flow` out");
|
|
505
|
+
}
|
|
506
|
+
const tabs = buildLibrary(library, arm.many);
|
|
507
|
+
const pane = inspectorOf(inspector);
|
|
508
|
+
return East.value({
|
|
509
|
+
canvas: buildCanvas(canvas, {
|
|
510
|
+
...(slice === undefined || record !== undefined ? {} : { slice: slice }),
|
|
511
|
+
...(affordances === undefined ? {} : { affordances }),
|
|
512
|
+
}),
|
|
513
|
+
source: arm.source,
|
|
514
|
+
open: flow === undefined ? none : some(flow),
|
|
515
|
+
library: tabs,
|
|
516
|
+
inspector: pane,
|
|
517
|
+
readOnly: readOnly ?? false,
|
|
518
|
+
name: name === undefined ? none : some(name),
|
|
519
|
+
}, FlowchartPayloadType);
|
|
520
|
+
}
|
|
521
|
+
//# sourceMappingURL=payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../src/flowchart/payload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EACH,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,OAAO,GAMV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAwB,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAEtH,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAA2D,MAAM,aAAa,CAAC;AACxH,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE1G,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,uEAAuE;AACvE,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAKlG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAKlG;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAU,CAAC;IAC/C,IAAI,EAAE,YAAY,CAAC,EAAE,EAAE,kBAAkB,CAAC;IAC1C,OAAO,EAAE,oBAAoB;IAC7B,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,iBAAiB,CAAC,EAAE,CAAC;IAChH,KAAK,EAAE,yBAAyB;CACnC,CAAC,CAAC;AAKH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAKjI;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAK/H;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC;IACzC,KAAK,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,CAAC,yBAAyB,CAAC,EAAE,CAAC;IAC9F,IAAI,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,CAAC,yBAAyB,CAAC,EAAE,CAAC;CAC/F,CAAC,CAAC;AAKH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;IAC3C,MAAM,EAAE,wBAAwB;IAChC,KAAK,EAAE,UAAU,CAAC;QACd,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,mBAAmB;QAC3B,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,yBAAyB;QACjC,OAAO,EAAE,oBAAoB;QAC7B,KAAK,EAAE,yBAAyB;KACnC,CAAC;IACF,IAAI,EAAE,iBAAiB;CAC1B,CAAC,CAAC;AAKH,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC;IAC7C,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC;IACnC,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC;CAC3C,CAAC,CAAC;AAKH,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC;IAC3C,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,mBAAmB;IAC3B,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC;IAC5B,OAAO,EAAE,SAAS,CAAC,uBAAuB,CAAC;IAC3C,SAAS,EAAE,UAAU,CAAC,sBAAsB,CAAC;IAC7C,QAAQ,EAAE,WAAW;IACrB,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC;CAC/B,CAAC,CAAC;AAKH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAE1G,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa,CAAC,IAAwB;IAYlD,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IACpD,OAAO;QACH,KAAK,EAAE,YAAY,MAAM,QAAQ;QACjC,IAAI,EAAE,YAAY,MAAM,OAAO;QAC/B,OAAO,EAAE,oBAAoB,MAAM,EAAE;QACrC,WAAW,EAAE,YAAY,MAAM,cAAc;QAC7C,OAAO,EAAE,YAAY,MAAM,UAAU;KACxC,CAAC;AACN,CAAC;AAwFD,4GAA4G;AAC5G,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAU,CAAC;AAErG,iFAAiF;AACjF,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAU,CAAC;AAE/C;;;;GAIG;AACH,MAAM,OAAO,GAAG,wIAAwI,CAAC;AAEzJ,iIAAiI;AACjI,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,CAAU,CAAC;AAEtK;;;;GAIG;AACH,MAAM,MAAM,GAAG;IACX,UAAU,EAAE,4LAA4L;IACxM,SAAS,EAAE,mMAAmM;IAC9M,YAAY,EAAE,iFAAiF;CACzF,CAAC;AAEX;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,IAA4B,EAAE,IAAsB,EAAE,GAAW;IACjF,OAAO,0BAA0B,IAAI,WAAW,IAAI,8CAA8C,IAAI,mDAAmD,IAAI,mCAAmC,IAAI,uCAAuC,GAAG,iBAAiB,CAAC;AACpQ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,WAAW,CAAC,SAAkB;IACnC,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACrF,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,YAAY,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/G,MAAM,IAAI,KAAK,CAAC,sNAAsN,CAAC,CAAC;IAC5O,CAAC;IACD,MAAM,KAAK,GAAG,SAAkG,CAAC;IACjH,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,0GAA0G,GAAG,wDAAwD,CAAC,CAAC;QAC3L,CAAC;IACL,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,kBAAkB,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5I,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7J,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,iEAAiE;AACjE,MAAM,OAAO,GAAG,sHAAsH,CAAC;AAUvI,gDAAgD;AAChD,SAAS,OAAO,CAAC,IAA0B,EAAE,IAAY;IACrD,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,MAAmC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjG,CAAC;AAED;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,MAAe,EAAE,MAAgB,EAAE,KAAgC;IAClF,IAAI,CAAC,CAAC,MAAM,YAAY,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAa,CAAC;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;WACvE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;QAC7F,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAkB,CAAC;IAC3C,IAAI,WAAW,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,4PAA4P,CAAC,CAAC;IAClR,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,wHAAwH,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACrK,CAAC;IACD,yEAAyE;IACzE,sBAAsB;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IACvD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC;QAC9H,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,sBAAsB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,0DAA0D,EAAE,CAAC,CAAC;IAC1J,CAAC;IACD,MAAM,MAAM,GAAG,MAAoF,CAAC;IACpG,wEAAwE;IACxE,0EAA0E;IAC1E,0DAA0D;IAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,MAAe,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAyF,CAAC;IAC3J,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;QAChF,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAgE,CAAC;QACjF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE;gBAC1C,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK;aAC1E,CAAC,EAAE,CAAC;IACT,CAAC;IACD,OAAO;QACH,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;KAC3H,CAAC;AACN,CAAC;AAED,yGAAyG;AACzG,SAAS,SAAS,CAAC,IAAa;IAC5B,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAC7E,CAAC,CAAE,IAAsD,CAAC,IAAI,EAAE;YAChE,CAAC,CAAC,IAA0B,CAAC;IACrC,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,EAAE,kBAAkB,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAuC,EAAE,kBAAkB,CAAkC,CAAC;IACzJ,IAAI,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAsC,EAAE,iBAAiB,CAAkC,CAAC;IACtJ,MAAM,IAAI,KAAK,CAAC,mOAAmO,CAAC,CAAC;AACzP,CAAC;AAED,2FAA2F;AAC3F,SAAS,OAAO,CAAC,OAAgB,EAAE,SAAmB,EAAE,KAAa;IACjE,MAAM,KAAK,GAAG,CAAC,OAAO,YAAY,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAuC,EAAE,SAAS,CAAC,CAAuB,CAAC;IACzI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAwB,CAAa,CAAC;IAC7D,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,yJAAyJ,KAAK,6BAA6B,KAAK,uFAAuF,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9T,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,OAAO,CAAC,IAAa,EAAE,OAAgB;IAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAwB,CAAa,CAAC;IAC7D,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,yNAAyN,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChQ,CAAC;IACD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAC9H,+FAA+F;IAC/F,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,sBAAsB,CAC9C,CAAC;IACjG,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,IAAI;QACd,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;YACpE,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;YACzD,mEAAmE;YACnE,kEAAkE;YAClE,kBAAkB;YAClB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACxF,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC/B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;oBAClB,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;wBACjB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;4BAChB,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gCACf,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;oCACjB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oCACpE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iCAClG,CAAC,CAAC;4BACP,CAAC;4BACD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;gCACR,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;4BAC5G,CAAC;yBACJ,CAAC,CAAC;oBACP,CAAC;oBACD,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;wBAChB,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACtG,CAAC;iBACJ,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC;QACF,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;YACpE,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;YACzD,+EAA+E;YAC/E,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;oBACzE,OAAO,EAAE,6DAA6D,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC3G,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC/B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;oBAClB,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;wBACjB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;4BACjB,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gCAChB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;4BAC1H,CAAC;yBACJ,CAAC,CAAC;oBACP,CAAC;oBACD,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;wBAChB,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACpG,CAAC;iBACJ,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC9G,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAChD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,GAAG,KAA0B,CAAC;IAC9I,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,qKAAqK,CAAC,CAAC;QAChN,CAAC;IACL,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,wIAAwI,CAAC,CAAC;QAClL,CAAC;IACL,CAAC;IACD,IAAI,SAAS,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAClD,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,gBAAgB,QAAQ,sNAAsN,CAAC,CAAC;QACpQ,CAAC;IACL,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,sGAAsG,MAAM,EAAE,CAAC,CAAC;QACzJ,CAAC;IACL,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,8LAA8L,CAAC,CAAC;IACpN,CAAC;IACD,IAAI,GAAiB,CAAC;IACtB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,0IAA0I,CAAC,CAAC;QAChK,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;YAChG,MAAM,IAAI,KAAK,CAAC,kIAAkI,CAAC,CAAC;QACxJ,CAAC;QACD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAClG,CAAC;QACD,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAA6C,CAAC,CAAC;IACnF,CAAC;SAAM,CAAC;QACJ,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;QACjI,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,uHAAuH,CAAC,CAAC;IAC7I,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC;QACd,MAAM,EAAE,WAAW,CAAC,MAAgC,EAAE;YAClD,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAoD,EAAE,CAAC;YACvH,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;SACxD,CAAC;QACF,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5C,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,QAAQ,IAAI,KAAK;QAC3B,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;KACtC,EAAE,oBAAoB,CAAC,CAAC;AACtC,CAAC"}
|