@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":"library.d.ts","sourceRoot":"","sources":["../../../src/plan/library.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,424 @@
|
|
|
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
|
+
* `Plan.library` — the Plan's library pane, the author's (#1195,
|
|
7
|
+
* `Plan Builder Spec.md` §4.3, §8, §9.6, PB26–PB30, PB61, PB62). `library`
|
|
8
|
+
* lists the pane's tabs, in order, each built here:
|
|
9
|
+
*
|
|
10
|
+
* - `Plan.library.events()`: every event kind's templates, by kind;
|
|
11
|
+
* - `Plan.library.backlog()`: every event kind's unscheduled events, by when
|
|
12
|
+
* they are due;
|
|
13
|
+
* - `Plan.library.series()`: what the canvas shows that a viewer can hide,
|
|
14
|
+
* each with an eye — the resource kinds and their measures, the event
|
|
15
|
+
* kinds, `data`'s series when they are picked (`pick`), and the Plan's
|
|
16
|
+
* `rows`;
|
|
17
|
+
* - `Plan.library.tab(rows, { … })`: cards of the author's own.
|
|
18
|
+
*
|
|
19
|
+
* Left out, or empty, the Plan has no library pane.
|
|
20
|
+
*
|
|
21
|
+
* An author's tab reads its rows as `Schedule.resources` does: a `Dict<K, R>`,
|
|
22
|
+
* usually a record's `read()`, its accessors `(row, key) => …` reified once
|
|
23
|
+
* into a describe function the map then calls, each card keyed by its row's
|
|
24
|
+
* key as text. Its cards drag onto the rows of `data` whose series makes an
|
|
25
|
+
* item of a dropped card (`edit.create`, #1259), as a Library's card beside
|
|
26
|
+
* the Plan does — the Plan takes its own panel's cards with no `id` or
|
|
27
|
+
* `sources`. Its `drop` returns what a card dropped on an event sets:
|
|
28
|
+
* `Schedule.patch` over one event kind's row type, whose type names that kind.
|
|
29
|
+
* The patch crosses the closed payload as that kind's field writes — each
|
|
30
|
+
* field it sets, its path and its value as bytes — which a drop writes through
|
|
31
|
+
* the kind's own `write` (#1196).
|
|
32
|
+
*
|
|
33
|
+
* @packageDocumentation
|
|
34
|
+
*/
|
|
35
|
+
import { ArrayType, DictType, East, NullType, StringType, StructType, VariantType, none, some, variant, } from "@elaraai/east";
|
|
36
|
+
import { PickItemType } from "@elaraai/east-ui";
|
|
37
|
+
import { ScheduleAuthorTabType, buildScheduleTab } from "../schedule/library.js";
|
|
38
|
+
export { ScheduleLibraryCardType as PlanLibraryCardType } from "../schedule/library.js";
|
|
39
|
+
import { overSeries } from "./over.js";
|
|
40
|
+
import { KIND_ICONS } from "./pick.js";
|
|
41
|
+
import { planSeriesFacts } from "./series.js";
|
|
42
|
+
import { PlanRowsCollectionType } from "./types.js";
|
|
43
|
+
// ============================================================================
|
|
44
|
+
// The wire
|
|
45
|
+
// ============================================================================
|
|
46
|
+
/**
|
|
47
|
+
* One card of an author's tab on the wire.
|
|
48
|
+
*
|
|
49
|
+
* @property key - Its row's key, as text
|
|
50
|
+
* @property label - Its name
|
|
51
|
+
* @property meta - The line under its name
|
|
52
|
+
* @property group - The tab's group the card sits under
|
|
53
|
+
* @property sets - What a drop writes into the event it lands on: each field the tab's `drop` patch sets; empty without a `drop`
|
|
54
|
+
*/
|
|
55
|
+
/**
|
|
56
|
+
* The id the Series tab lists a thing by, and a viewer's hidden set holds it by
|
|
57
|
+
* (PB29): one namespace per source, so no two collide — a resource kind and an
|
|
58
|
+
* event kind by slot, a measure, a hand-built row and a `Plan.over` series by
|
|
59
|
+
* key. `data`'s picked series are the pick's own, by their bare keys.
|
|
60
|
+
*
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
export const planHideId = {
|
|
64
|
+
/** A resource kind, by slot: hiding it hides its rows. */
|
|
65
|
+
resources: (slot) => `resources.${slot}`,
|
|
66
|
+
/** An event kind, by slot: hiding it hides its elements everywhere. */
|
|
67
|
+
events: (slot) => `events.${slot}`,
|
|
68
|
+
/** A measure, by key: hiding it hides its row under each resource. */
|
|
69
|
+
measures: (key) => `measures.${key}`,
|
|
70
|
+
/** A hand-built row, by key: hiding it hides it and the rows under it. */
|
|
71
|
+
rows: (key) => `rows.${key}`,
|
|
72
|
+
/** A `Plan.over` series, by key: hiding it hides its rows and its nested series'. */
|
|
73
|
+
series: (key) => `series.${key}`,
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* What hiding one of a Plan's `rows` hides on the canvas: a `Plan.over`
|
|
77
|
+
* series' rows, by the keys they carry — its own and every series' nested in
|
|
78
|
+
* it — or a hand-built row and the rows under it, by its key, the first step
|
|
79
|
+
* of their ids' paths.
|
|
80
|
+
*/
|
|
81
|
+
export const PlanLibraryHidesType = VariantType({
|
|
82
|
+
series: ArrayType(StringType),
|
|
83
|
+
rows: StringType,
|
|
84
|
+
});
|
|
85
|
+
/**
|
|
86
|
+
* One of a Plan's `rows` as the Series tab lists it.
|
|
87
|
+
*
|
|
88
|
+
* @property item - Its line in the tab, an eye beside it
|
|
89
|
+
* @property hides - What hiding it hides
|
|
90
|
+
*/
|
|
91
|
+
export const PlanLibraryRowsItemType = StructType({
|
|
92
|
+
item: PickItemType,
|
|
93
|
+
hides: PlanLibraryHidesType,
|
|
94
|
+
});
|
|
95
|
+
/**
|
|
96
|
+
* What the Series tab lists (PB29), each a pick item with its eye, in the
|
|
97
|
+
* order the canvas draws them. `data`'s series, when they are picked, sit
|
|
98
|
+
* between the two lists: they are the pick's own (the root's `pick`).
|
|
99
|
+
*
|
|
100
|
+
* @property kinds - The resource kinds, each followed by its measures, then the event kinds
|
|
101
|
+
* @property rows - The Plan's `rows`: a hand-built row by its key, each series of a `Plan.over` by its own
|
|
102
|
+
*/
|
|
103
|
+
export const PlanLibrarySeriesType = StructType({
|
|
104
|
+
kinds: ArrayType(PickItemType),
|
|
105
|
+
rows: ArrayType(PlanLibraryRowsItemType),
|
|
106
|
+
});
|
|
107
|
+
/**
|
|
108
|
+
* One tab of the library pane on the wire, in the order `library` lists them.
|
|
109
|
+
*
|
|
110
|
+
* - `events` — every event kind's templates, read off the kinds;
|
|
111
|
+
* - `backlog` — every event kind's unscheduled events, read off the kinds;
|
|
112
|
+
* - `series` — what the canvas shows that a viewer can hide;
|
|
113
|
+
* - `tab` — the author's own: its name, its icon, the event kind its cards
|
|
114
|
+
* land on, and its cards.
|
|
115
|
+
*/
|
|
116
|
+
export const PlanLibraryTabType = VariantType({
|
|
117
|
+
events: NullType,
|
|
118
|
+
backlog: NullType,
|
|
119
|
+
series: PlanLibrarySeriesType,
|
|
120
|
+
tab: ScheduleAuthorTabType,
|
|
121
|
+
});
|
|
122
|
+
/**
|
|
123
|
+
* The library's Events tab — `Plan.library.events()`: every event kind's
|
|
124
|
+
* templates, under the kind's name and icon, then by a template's `group`
|
|
125
|
+
* (PB27). A card dropped on a resource's row creates an event of its kind
|
|
126
|
+
* (#1196).
|
|
127
|
+
*
|
|
128
|
+
* @returns The tab
|
|
129
|
+
*/
|
|
130
|
+
export function libraryEvents() {
|
|
131
|
+
return { kind: "events" };
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* The library's Backlog tab — `Plan.library.backlog()`: every event kind's
|
|
135
|
+
* unscheduled events (a kind whose times are Options), by when they are due:
|
|
136
|
+
* this week, next week, later, or no date (PB28). A card dropped on a
|
|
137
|
+
* resource's row schedules it (#1196).
|
|
138
|
+
*
|
|
139
|
+
* @returns The tab
|
|
140
|
+
*/
|
|
141
|
+
export function libraryBacklog() {
|
|
142
|
+
return { kind: "backlog" };
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* The library's Series tab — `Plan.library.series()`: what the canvas shows
|
|
146
|
+
* that a viewer can hide, each with an eye (PB29). Hiding an event kind hides
|
|
147
|
+
* its elements everywhere, a resource kind its rows, a measure or one of the
|
|
148
|
+
* Plan's `rows` that row; `data`'s series show and hide through their `pick`.
|
|
149
|
+
* What a viewer hides is kept for them.
|
|
150
|
+
*
|
|
151
|
+
* @returns The tab
|
|
152
|
+
*/
|
|
153
|
+
export function librarySeries() {
|
|
154
|
+
return { kind: "series" };
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* A tab of the author's own cards — `Plan.library.tab(rows, { … })` (PB62):
|
|
158
|
+
* one card per row, its label and meta, grouped by its `group`, searched by
|
|
159
|
+
* its key, label and meta. Each card drags onto the rows of `data` whose
|
|
160
|
+
* series makes an item of it (`edit.create`, #1259) — the drop's `from.key`
|
|
161
|
+
* its row's key as text, so `canDrop` and `create` read it as a Library card's
|
|
162
|
+
* — and, given a `drop`, onto an event (#1196), setting the fields the patch
|
|
163
|
+
* sets.
|
|
164
|
+
*
|
|
165
|
+
* @typeParam K - The rows' key type
|
|
166
|
+
* @typeParam R - Their row type
|
|
167
|
+
* @typeParam P - The patch `drop` returns
|
|
168
|
+
* @param rows - The rows — a `Dict<K, R>` value or expression, usually a record's `read()`
|
|
169
|
+
* @param config - The tab's name and icon, and the accessors ({@link PlanLibraryTabConfig})
|
|
170
|
+
* @returns The tab
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```tsx
|
|
174
|
+
* // .tsx file with the `@jsxImportSource @elaraai/e3-ui` pragma
|
|
175
|
+
* import { DateTimeType, DictType, East, FloatType, NullType, OptionType, StringType, StructType, VariantType, none, some, variant } from "@elaraai/east";
|
|
176
|
+
* import { EventStateType, Reactive, UIComponentType } from "@elaraai/east-ui";
|
|
177
|
+
* import { Plan, Record, Schedule } from "@elaraai/e3-ui";
|
|
178
|
+
* import e3 from "@elaraai/e3";
|
|
179
|
+
*
|
|
180
|
+
* export const PrintPress = StructType({ name: StringType, hall: StringType, sheets_per_hour: FloatType });
|
|
181
|
+
* export const PrintJob = StructType({
|
|
182
|
+
* title: StringType,
|
|
183
|
+
* start: OptionType(DateTimeType),
|
|
184
|
+
* end: OptionType(DateTimeType),
|
|
185
|
+
* press: OptionType(StringType),
|
|
186
|
+
* state: EventStateType,
|
|
187
|
+
* sheets: FloatType,
|
|
188
|
+
* customer: StringType,
|
|
189
|
+
* stock: VariantType({ coated: NullType, uncoated: NullType, board: NullType }),
|
|
190
|
+
* due: OptionType(DateTimeType),
|
|
191
|
+
* });
|
|
192
|
+
* export const PrintCustomer = StructType({ name: StringType, district: StringType, trade: StringType });
|
|
193
|
+
* export const planPrintPresses = e3.record("plan_print_presses", DictType(StringType, PrintPress), new Map([
|
|
194
|
+
* ["a1", { name: "Press A1", hall: "Hall A", sheets_per_hour: 12000.0 }],
|
|
195
|
+
* ["a2", { name: "Press A2", hall: "Hall A", sheets_per_hour: 10000.0 }],
|
|
196
|
+
* ["a3", { name: "Press A3", hall: "Hall A", sheets_per_hour: 8000.0 }],
|
|
197
|
+
* ["b1", { name: "Press B1", hall: "Hall B", sheets_per_hour: 15000.0 }],
|
|
198
|
+
* ["b2", { name: "Press B2", hall: "Hall B", sheets_per_hour: 12000.0 }],
|
|
199
|
+
* ["b3", { name: "Press B3", hall: "Hall B", sheets_per_hour: 6000.0 }],
|
|
200
|
+
* ]));
|
|
201
|
+
* export const planPrintCustomers = e3.record("plan_print_customers", DictType(StringType, PrintCustomer), new Map([
|
|
202
|
+
* ["alder-finch", { name: "Alder & Finch", district: "Old Town", trade: "Retail" }],
|
|
203
|
+
* ["bluewater-tours", { name: "Bluewater Tours", district: "North Quay", trade: "Travel" }],
|
|
204
|
+
* ["copperleaf-cafe", { name: "Copperleaf Cafe", district: "Old Town", trade: "Hospitality" }],
|
|
205
|
+
* ["driftwood-museum", { name: "Driftwood Museum", district: "North Quay", trade: "Arts" }],
|
|
206
|
+
* ["elmway-college", { name: "Elmway College", district: "Riverside", trade: "Education" }],
|
|
207
|
+
* ["foxglove-gardens", { name: "Foxglove Gardens", district: "Riverside", trade: "Retail" }],
|
|
208
|
+
* ["granite-hall", { name: "Granite Hall", district: "Old Town", trade: "Events" }],
|
|
209
|
+
* ["harbour-arts", { name: "Harbour Arts Society", district: "North Quay", trade: "Arts" }],
|
|
210
|
+
* ["heathfield", { name: "Heathfield Theatre", district: "Old Town", trade: "Arts" }],
|
|
211
|
+
* ["ivy-lane", { name: "Ivy Lane Studio", district: "Riverside", trade: "Design" }],
|
|
212
|
+
* ["juniper-toys", { name: "Juniper Toys", district: "Riverside", trade: "Retail" }],
|
|
213
|
+
* ["kestrel-cycling", { name: "Kestrel Cycling Club", district: "Riverside", trade: "Sport" }],
|
|
214
|
+
* ["larkspur-home", { name: "Larkspur Home", district: "Old Town", trade: "Retail" }],
|
|
215
|
+
* ["meridian-monthly", { name: "Meridian Monthly", district: "North Quay", trade: "Publishing" }],
|
|
216
|
+
* ["northwind", { name: "Northwind Outfitters", district: "North Quay", trade: "Retail" }],
|
|
217
|
+
* ["orchard-market", { name: "Orchard Street Market", district: "Old Town", trade: "Markets" }],
|
|
218
|
+
* ]));
|
|
219
|
+
* export const planEventJobs = e3.record("plan_event_jobs", DictType(StringType, PrintJob), new Map([
|
|
220
|
+
* ["J-3001", { title: "Spring catalogue", start: some(new Date("2026-10-06T06:00:00Z")), end: some(new Date("2026-10-06T14:00:00Z")), press: some("a1"), state: variant("actual", null), sheets: 96000.0, customer: "Alder & Finch", stock: variant("coated", null), due: some(new Date("2026-10-08T00:00:00Z")) }],
|
|
221
|
+
* ["J-3002", { title: "Course handbook", start: some(new Date("2026-10-19T06:00:00Z")), end: some(new Date("2026-10-19T18:00:00Z")), press: some("a1"), state: variant("confirmed", null), sheets: 144000.0, customer: "Elmway College", stock: variant("uncoated", null), due: some(new Date("2026-10-23T00:00:00Z")) }],
|
|
222
|
+
* ["J-3003", { title: "Annual report", start: some(new Date("2026-10-14T06:00:00Z")), end: some(new Date("2026-10-14T12:00:00Z")), press: some("a2"), state: variant("in-progress", null), sheets: 60000.0, customer: "Harbour Arts Society", stock: variant("coated", null), due: some(new Date("2026-10-16T00:00:00Z")) }],
|
|
223
|
+
* ["J-3004", { title: "Club newsletter", start: some(new Date("2026-10-08T06:00:00Z")), end: some(new Date("2026-10-08T08:00:00Z")), press: some("a3"), state: variant("actual", null), sheets: 16000.0, customer: "Kestrel Cycling Club", stock: variant("uncoated", null), due: some(new Date("2026-10-09T00:00:00Z")) }],
|
|
224
|
+
* ["J-3005", { title: "Store flyers", start: some(new Date("2026-10-15T06:00:00Z")), end: some(new Date("2026-10-15T16:00:00Z")), press: some("b1"), state: variant("confirmed", null), sheets: 150000.0, customer: "Northwind Outfitters", stock: variant("uncoated", null), due: some(new Date("2026-10-16T00:00:00Z")) }],
|
|
225
|
+
* ["J-3006", { title: "Market posters", start: some(new Date("2026-10-20T06:00:00Z")), end: some(new Date("2026-10-20T12:00:00Z")), press: some("b2"), state: variant("confirmed", null), sheets: 72000.0, customer: "Orchard Street Market", stock: variant("coated", null), due: some(new Date("2026-10-22T00:00:00Z")) }],
|
|
226
|
+
* ["J-3007", { title: "Loyalty cards", start: some(new Date("2026-10-20T10:00:00Z")), end: some(new Date("2026-10-20T13:00:00Z")), press: some("b2"), state: variant("proposed", variant("added", null)), sheets: 36000.0, customer: "Copperleaf Cafe", stock: variant("board", null), due: some(new Date("2026-10-23T00:00:00Z")) }],
|
|
227
|
+
* ["J-3008", { title: "Gift boxes", start: some(new Date("2026-10-27T06:00:00Z")), end: some(new Date("2026-10-27T12:00:00Z")), press: some("b3"), state: variant("proposed", variant("recommended", null)), sheets: 48000.0, customer: "Juniper Toys", stock: variant("board", null), due: some(new Date("2026-10-30T00:00:00Z")) }],
|
|
228
|
+
* ["J-3009", { title: "Ticket books", start: some(new Date("2026-10-22T06:00:00Z")), end: some(new Date("2026-10-22T09:00:00Z")), press: none, state: variant("proposed", variant("added", null)), sheets: 24000.0, customer: "Heathfield Theatre", stock: variant("uncoated", null), due: some(new Date("2026-10-26T00:00:00Z")) }],
|
|
229
|
+
* ["J-3010", { title: "Guide reprint", start: none, end: none, press: none, state: variant("estimated", null), sheets: 24000.0, customer: "Driftwood Museum", stock: variant("coated", null), due: some(new Date("2026-10-16T00:00:00Z")) }],
|
|
230
|
+
* ["J-3011", { title: "Wall calendars", start: none, end: none, press: none, state: variant("estimated", null), sheets: 50000.0, customer: "Foxglove Gardens", stock: variant("coated", null), due: some(new Date("2026-10-23T00:00:00Z")) }],
|
|
231
|
+
* ["J-3012", { title: "Spare covers", start: none, end: none, press: none, state: variant("estimated", null), sheets: 8000.0, customer: "Meridian Monthly", stock: variant("board", null), due: none }],
|
|
232
|
+
* ]));
|
|
233
|
+
* export const planEventJobsPatch = e3.mutation.patch(planEventJobs);
|
|
234
|
+
*
|
|
235
|
+
* const planEvents = East.function([], UIComponentType, (_$) => (
|
|
236
|
+
* <Reactive>{$ => {
|
|
237
|
+
* const presses = $.let(Record.bind(planPrintPresses, []));
|
|
238
|
+
* const jobs = $.let(Record.bind(planEventJobs, [planEventJobsPatch]));
|
|
239
|
+
* const customers = $.let(Record.bind(planPrintCustomers, []));
|
|
240
|
+
* const axis = $.let(Plan.axis({
|
|
241
|
+
* window: { min: new Date("2026-10-05T00:00:00Z"), max: new Date("2026-11-02T00:00:00Z") },
|
|
242
|
+
* resolution: "day", now: new Date("2026-10-14T09:00:00Z"),
|
|
243
|
+
* }));
|
|
244
|
+
* return (
|
|
245
|
+
* <Plan
|
|
246
|
+
* id="jobs"
|
|
247
|
+
* axis={axis}
|
|
248
|
+
* resources={{
|
|
249
|
+
* presses: Schedule.resources(presses.read(), { name: "Presses", icon: "print", label: p => p.name }),
|
|
250
|
+
* }}
|
|
251
|
+
* events={{
|
|
252
|
+
* job: Schedule.events(jobs, {
|
|
253
|
+
* name: "Print job", icon: "file-lines",
|
|
254
|
+
* title: "title", start: "start", end: "end",
|
|
255
|
+
* resource: { field: "press", of: "presses" },
|
|
256
|
+
* state: "state",
|
|
257
|
+
* // A job with no start waits in the backlog: placed, it runs as long as its sheets take at
|
|
258
|
+
* // 8,000 an hour.
|
|
259
|
+
* backlog: { duration: j => variant("hours", j.sheets.divide(8000.0)), due: j => j.due },
|
|
260
|
+
* fields: {
|
|
261
|
+
* customer: Schedule.field.text({ label: "Customer" }),
|
|
262
|
+
* stock: Schedule.field.select({ labels: { coated: "Coated", uncoated: "Uncoated", board: "Board" } }),
|
|
263
|
+
* },
|
|
264
|
+
* }),
|
|
265
|
+
* }}
|
|
266
|
+
* library={[
|
|
267
|
+
* Plan.library.backlog(),
|
|
268
|
+
* // The customers, by district: a card dropped on a job sets its customer.
|
|
269
|
+
* Plan.library.tab(customers.read(), {
|
|
270
|
+
* name: "Customers", icon: "building",
|
|
271
|
+
* label: c => c.name, meta: c => some(c.trade), group: c => c.district,
|
|
272
|
+
* drop: c => Schedule.patch(PrintJob, { customer: c.name }),
|
|
273
|
+
* }),
|
|
274
|
+
* ]}
|
|
275
|
+
* inspector
|
|
276
|
+
* />
|
|
277
|
+
* );
|
|
278
|
+
* }}</Reactive>
|
|
279
|
+
* ));
|
|
280
|
+
* ```
|
|
281
|
+
*/
|
|
282
|
+
export function libraryTab(rows, config) {
|
|
283
|
+
return { kind: "tab", rows, config: config };
|
|
284
|
+
}
|
|
285
|
+
/** How a tab names itself in a refusal. */
|
|
286
|
+
function tabName(tab) {
|
|
287
|
+
return tab.kind === "tab" ? `the "${tab.config.name}" tab` : `Plan.library.${tab.kind}()`;
|
|
288
|
+
}
|
|
289
|
+
/** A pick item of the Series tab, known at build. */
|
|
290
|
+
function item(id, title, subtitle, icon) {
|
|
291
|
+
return East.value({
|
|
292
|
+
id,
|
|
293
|
+
title,
|
|
294
|
+
subtitle: subtitle === undefined ? none : some(subtitle),
|
|
295
|
+
icon: some({ name: icon, prefix: "fas", label: none, style: none }),
|
|
296
|
+
count: none,
|
|
297
|
+
narrowed: false,
|
|
298
|
+
}, PickItemType);
|
|
299
|
+
}
|
|
300
|
+
/** The glyph a hand-built row's kind is listed with: its series kind's (`Plan.pick`'s). */
|
|
301
|
+
const ROW_ICONS = {
|
|
302
|
+
group: KIND_ICONS.group,
|
|
303
|
+
span: KIND_ICONS.span,
|
|
304
|
+
buckets: KIND_ICONS.buckets,
|
|
305
|
+
chart: KIND_ICONS.chart,
|
|
306
|
+
heat: KIND_ICONS.heat,
|
|
307
|
+
table: KIND_ICONS.table,
|
|
308
|
+
cards: KIND_ICONS.cards,
|
|
309
|
+
events: KIND_ICONS.events,
|
|
310
|
+
};
|
|
311
|
+
/**
|
|
312
|
+
* A hand-built row stream's Series items: each row at its top by its key, the
|
|
313
|
+
* one step of its id's path (`Plan.chart({ key })`), and its name.
|
|
314
|
+
*/
|
|
315
|
+
const handItems = East.function([PlanRowsCollectionType], ArrayType(PlanLibraryRowsItemType), ($, rows) => {
|
|
316
|
+
const out = $.let([], ArrayType(PlanLibraryRowsItemType));
|
|
317
|
+
$.for(rows, ($2, row) => {
|
|
318
|
+
const path = $2.let(row.id.match({
|
|
319
|
+
entry: (_$3, at) => at.path,
|
|
320
|
+
section: (_$3, at) => at.path,
|
|
321
|
+
}), ArrayType(StringType));
|
|
322
|
+
$2.if(row.parent.hasTag("none").and(() => path.size().greater(0n)), ($3) => {
|
|
323
|
+
const key = $3.let(path.get(0n), StringType);
|
|
324
|
+
const icon = $3.let(row.kind.match({
|
|
325
|
+
group: () => ROW_ICONS.group,
|
|
326
|
+
span: () => ROW_ICONS.span,
|
|
327
|
+
buckets: () => ROW_ICONS.buckets,
|
|
328
|
+
chart: () => ROW_ICONS.chart,
|
|
329
|
+
heat: () => ROW_ICONS.heat,
|
|
330
|
+
table: () => ROW_ICONS.table,
|
|
331
|
+
cards: () => ROW_ICONS.cards,
|
|
332
|
+
events: () => ROW_ICONS.events,
|
|
333
|
+
}), StringType);
|
|
334
|
+
$3(out.pushLast({
|
|
335
|
+
item: {
|
|
336
|
+
id: East.str `rows.${key}`,
|
|
337
|
+
title: row.gutter.label,
|
|
338
|
+
subtitle: none,
|
|
339
|
+
icon: some({ name: icon, prefix: "fas", label: none, style: none }),
|
|
340
|
+
count: none,
|
|
341
|
+
narrowed: false,
|
|
342
|
+
},
|
|
343
|
+
hides: variant("rows", key),
|
|
344
|
+
}));
|
|
345
|
+
});
|
|
346
|
+
});
|
|
347
|
+
return out;
|
|
348
|
+
});
|
|
349
|
+
/**
|
|
350
|
+
* The Series tab on the wire (PB29): the resource kinds, each followed by its
|
|
351
|
+
* measures, then the event kinds; and the Plan's `rows`.
|
|
352
|
+
*
|
|
353
|
+
* @param ctx - What the library is built against
|
|
354
|
+
* @returns The tab's wire value
|
|
355
|
+
*/
|
|
356
|
+
function seriesTab(ctx) {
|
|
357
|
+
const kinds = [];
|
|
358
|
+
for (const [slot, kind] of ctx.resources) {
|
|
359
|
+
kinds.push(item(planHideId.resources(slot), kind.name, undefined, kind.icon));
|
|
360
|
+
const collection = DictType(kind.keyType, kind.rowType);
|
|
361
|
+
kind.measures.forEach((measure, i) => {
|
|
362
|
+
// Checked when the kind was declared: a measure is a series written in place.
|
|
363
|
+
const facts = planSeriesFacts(measure, collection, `Plan: resources.${slot}.measures[${i}]`);
|
|
364
|
+
kinds.push(item(planHideId.measures(facts.key), facts.title, kind.name, KIND_ICONS[facts.arm]));
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
for (const [slot, kind] of ctx.events)
|
|
368
|
+
kinds.push(item(planHideId.events(slot), kind.name, undefined, kind.icon));
|
|
369
|
+
const rows = (ctx.rows ?? []).map((one) => {
|
|
370
|
+
const over = overSeries(one);
|
|
371
|
+
if (over !== undefined) {
|
|
372
|
+
return East.value(over.map(({ facts, keys }) => East.value({
|
|
373
|
+
item: item(planHideId.series(facts.key), facts.title, undefined, KIND_ICONS[facts.arm]),
|
|
374
|
+
hides: variant("series", [...keys]),
|
|
375
|
+
}, PlanLibraryRowsItemType)), ArrayType(PlanLibraryRowsItemType));
|
|
376
|
+
}
|
|
377
|
+
return handItems(East.value(one, PlanRowsCollectionType));
|
|
378
|
+
}).reduce((all, part) => all.concat(part), East.value([], ArrayType(PlanLibraryRowsItemType)));
|
|
379
|
+
return East.value(variant("series", { kinds: East.value(kinds, ArrayType(PickItemType)), rows }), PlanLibraryTabType);
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Builds the library pane on the wire (PB26, PB61, PB62): its tabs in the
|
|
383
|
+
* order `library` lists them; none when it is left out.
|
|
384
|
+
*
|
|
385
|
+
* @param tabs - The tabs, each a `Plan.library.*` call
|
|
386
|
+
* @param ctx - What the library is built against
|
|
387
|
+
* @returns The tabs on the wire
|
|
388
|
+
* @throws {Error} Naming the tab: a tab listed twice (an author's tab by its name); the Events or Backlog tab on a Plan
|
|
389
|
+
* with no event kinds; the Series tab on a Plan with nothing a viewer can hide; and each of an author's tab's refusals
|
|
390
|
+
* @internal
|
|
391
|
+
*/
|
|
392
|
+
export function buildLibrary(tabs, ctx) {
|
|
393
|
+
const seen = new Set();
|
|
394
|
+
for (const tab of tabs ?? []) {
|
|
395
|
+
const id = tab.kind === "tab" ? `tab:${tab.config.name}` : tab.kind;
|
|
396
|
+
if (seen.has(id)) {
|
|
397
|
+
throw new Error(tab.kind === "tab"
|
|
398
|
+
? `Plan: the library lists two tabs named "${tab.config.name}" — each tab's name is its own`
|
|
399
|
+
: `Plan: the library lists ${tabName(tab)} twice — each tab once`);
|
|
400
|
+
}
|
|
401
|
+
seen.add(id);
|
|
402
|
+
if ((tab.kind === "events" || tab.kind === "backlog") && ctx.events.length === 0) {
|
|
403
|
+
throw new Error(`Plan: the library lists ${tabName(tab)}, and this Plan has no event kinds — ` +
|
|
404
|
+
`its ${tab.kind === "events" ? "templates" : "unscheduled events"} are its event kinds' (Schedule.events)`);
|
|
405
|
+
}
|
|
406
|
+
if (tab.kind === "series" && ctx.resources.length === 0 && ctx.events.length === 0 && (ctx.rows ?? []).length === 0 && !ctx.picked) {
|
|
407
|
+
throw new Error("Plan: the library lists Plan.library.series(), and this Plan has nothing a viewer can hide — it lists " +
|
|
408
|
+
"event kinds, resource kinds and their measures, `rows`, and `data`'s series when they are picked (`pick`)");
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
const wires = (tabs ?? []).map((tab) => {
|
|
412
|
+
switch (tab.kind) {
|
|
413
|
+
case "events":
|
|
414
|
+
case "backlog":
|
|
415
|
+
return East.value(variant(tab.kind, null), PlanLibraryTabType);
|
|
416
|
+
case "series":
|
|
417
|
+
return seriesTab(ctx);
|
|
418
|
+
case "tab":
|
|
419
|
+
return East.value(variant("tab", buildScheduleTab(tab, ctx.events, "Plan")), PlanLibraryTabType);
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
return East.value(wires, ArrayType(PlanLibraryTabType));
|
|
423
|
+
}
|
|
424
|
+
//# sourceMappingURL=library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../../src/plan/library.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
/** Preserve index order while the existing Plan series and editing use primary keys. */
|
|
6
|
+
import { type EastType, type ExprType, type StructType } from "@elaraai/east";
|
|
7
|
+
import { type ResolvedRowSource } from "@elaraai/east-ui/internal";
|
|
8
|
+
import { PlanBlocksType, PlanEditingType } from "./types.js";
|
|
9
|
+
import { type PlanSeriesInput } from "./series.js";
|
|
10
|
+
type Ordered = Extract<ResolvedRowSource, {
|
|
11
|
+
kind: "ordered";
|
|
12
|
+
}>;
|
|
13
|
+
/** Build one bounded window adapter; its primary-key map is never a predicate. */
|
|
14
|
+
export declare function orderedPlanSource(source: Ordered): {
|
|
15
|
+
resolved: {
|
|
16
|
+
kind: "paged";
|
|
17
|
+
source: ExprType<StructType>;
|
|
18
|
+
collectionType: EastType;
|
|
19
|
+
elementType: EastType;
|
|
20
|
+
keyType: EastType | undefined;
|
|
21
|
+
pinned: boolean;
|
|
22
|
+
};
|
|
23
|
+
make: (series: PlanSeriesInput, values: ExprType<EastType>) => ExprType<PlanBlocksType>;
|
|
24
|
+
editing: (input: ExprType<PlanEditingType>) => ExprType<PlanEditingType>;
|
|
25
|
+
};
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=ordered-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordered-source.d.ts","sourceRoot":"","sources":["../../../src/plan/ordered-source.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wFAAwF;AACxF,OAAO,EAA4E,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAc,MAAM,eAAe,CAAC;AACpK,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,eAAe,EAA0B,MAAM,YAAY,CAAC;AACrF,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEhE,KAAK,OAAO,GAAG,OAAO,CAAC,iBAAiB,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAE/D,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO;;;;;;;;;mBAcvB,eAAe,UAAU,QAAQ,CAAC,QAAQ,CAAC,KAAG,QAAQ,CAAC,cAAc,CAAC;qBAIpE,QAAQ,CAAC,eAAe,CAAC,KAAG,QAAQ,CAAC,eAAe,CAAC;EAkBhF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
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
|
+
/** Preserve index order while the existing Plan series and editing use primary keys. */
|
|
6
|
+
import { ArrayType, BlobType, DictType, East, IntegerType, OptionType, StringType, none, some } from "@elaraai/east";
|
|
7
|
+
import {} from "@elaraai/east-ui/internal";
|
|
8
|
+
import { orderedRowSource } from "../utils/ordered-source.js";
|
|
9
|
+
import { PlanBlocksType, PlanEditingType, PlanRowsCollectionType } from "./types.js";
|
|
10
|
+
import { applySeries } from "./series.js";
|
|
11
|
+
/** Build one bounded window adapter; its primary-key map is never a predicate. */
|
|
12
|
+
export function orderedPlanSource(source) {
|
|
13
|
+
const { resolved, entries: _entries, window, rows, keys } = orderedRowSource(source, "Plan");
|
|
14
|
+
// Group each root's complete subtree once, then visit roots in index order.
|
|
15
|
+
// Fixed section/header blocks retain their position. This is O(rows log rows),
|
|
16
|
+
// without a scan per entry or re-deriving each series once per record.
|
|
17
|
+
const order = East.function([PlanBlocksType, ArrayType(StringType)], PlanBlocksType, (_$, blocks, ids) => blocks.map((_$2, block) => ({
|
|
18
|
+
fixed: block.fixed, parent: block.parent, rows: block.fixed.ifElse(() => block.rows, ($3) => {
|
|
19
|
+
const grouped = $3.const(block.rows.groupToArrays((_$4, r) => r.id.match({
|
|
20
|
+
entry: (_$5, id) => id.path.get(0n), section: (_$5, id) => id.path.get(0n),
|
|
21
|
+
})));
|
|
22
|
+
return ids.flatMap((_$4, id) => grouped.get(id, () => East.value([], PlanRowsCollectionType)));
|
|
23
|
+
}),
|
|
24
|
+
})));
|
|
25
|
+
const make = (series, values) => {
|
|
26
|
+
const input = values;
|
|
27
|
+
return order(applySeries(series, rows(input)), keys(input));
|
|
28
|
+
};
|
|
29
|
+
const editing = (input) => {
|
|
30
|
+
const entryIds = East.function([IntegerType, IntegerType], OptionType(ArrayType(StringType)), ($, offset, limit) => {
|
|
31
|
+
const read = $.const(window);
|
|
32
|
+
const ids = $.const(keys);
|
|
33
|
+
return read(offset, limit).match({ some: (_$2, values) => East.value(some(ids(values)), OptionType(ArrayType(StringType))), none: () => East.value(none, OptionType(ArrayType(StringType))) });
|
|
34
|
+
});
|
|
35
|
+
const derive = East.function([IntegerType, IntegerType, DictType(StringType, BlobType)], OptionType(PlanBlocksType), ($, offset, limit, drafts) => {
|
|
36
|
+
const read = $.const(entryIds);
|
|
37
|
+
const sort = $.const(order);
|
|
38
|
+
const build = $.const(input.derive);
|
|
39
|
+
return read(offset, limit).match({
|
|
40
|
+
some: (_$2, ids) => build(offset, limit, drafts).match({ some: (_$3, blocks) => East.value(some(sort(blocks, ids)), OptionType(PlanBlocksType)), none: () => East.value(none, OptionType(PlanBlocksType)) }),
|
|
41
|
+
none: () => East.value(none, OptionType(PlanBlocksType)),
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
return East.value(Object.fromEntries(Object.keys(PlanEditingType.fields).map(field => [field, field === "entryIds" ? entryIds : field === "derive" ? derive : input[field]])), PlanEditingType);
|
|
45
|
+
};
|
|
46
|
+
return { resolved, make, editing };
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=ordered-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordered-source.js","sourceRoot":"","sources":["../../../src/plan/ordered-source.ts"],"names":[],"mappings":"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"}
|