@elaraai/e3-ui 1.0.86 → 1.0.88
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,284 @@
|
|
|
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
|
+
* `Sheet.library` — the sheet's library pane, the author's (#1186,
|
|
7
|
+
* `Sheet Builder Spec.md` §4.4, SB32, SB59, SB60). `library` lists the
|
|
8
|
+
* pane's tabs, in order, each built here: `Sheet.library.rows()` (the
|
|
9
|
+
* templates), `Sheet.library.columns()` (the columns a viewer shows and
|
|
10
|
+
* hides) and `Sheet.library.tab(data, { … })`, cards of the author's own.
|
|
11
|
+
* Left out, or empty, the sheet has no library pane.
|
|
12
|
+
*
|
|
13
|
+
* An author's tab reads its rows as `Sheet.register.members` does — an
|
|
14
|
+
* `Array<T>` or a `Dict<String, T>`, its accessors reified ONCE into a
|
|
15
|
+
* describe function the map then calls — and its `drop` returns what a
|
|
16
|
+
* dropped card sets, as a template's `values` do: `Sheet.patch` over the row
|
|
17
|
+
* type lands on a row, over the group type on a band. The patch crosses the
|
|
18
|
+
* closed payload as the cells it sets through the sheet's editable columns
|
|
19
|
+
* (or band cells), as a proposed row's does.
|
|
20
|
+
*
|
|
21
|
+
* @packageDocumentation
|
|
22
|
+
*/
|
|
23
|
+
import { ArrayType, DictType, NullType, OptionType, StringType, StructType, VariantType, type EastType, type ExprType, type SubtypeExprOrValue } from "@elaraai/east";
|
|
24
|
+
import { type SheetBridge } from "./bridge.js";
|
|
25
|
+
/**
|
|
26
|
+
* One card of an author's tab on the wire.
|
|
27
|
+
*
|
|
28
|
+
* @property key - The card's key, unique within its tab
|
|
29
|
+
* @property label - Its name
|
|
30
|
+
* @property meta - The line under its name
|
|
31
|
+
* @property group - The tab's group the card sits under
|
|
32
|
+
* @property sets - What a drop writes: the tab's `drop` patch, through the sheet's editable columns (or a band's cells); empty without a `drop`
|
|
33
|
+
*/
|
|
34
|
+
export declare const SheetLibraryCardType: StructType<{
|
|
35
|
+
readonly key: StringType;
|
|
36
|
+
readonly label: StringType;
|
|
37
|
+
readonly meta: OptionType<StringType>;
|
|
38
|
+
readonly group: OptionType<StringType>;
|
|
39
|
+
readonly sets: DictType<StringType, VariantType<{
|
|
40
|
+
readonly Invalid: StringType;
|
|
41
|
+
readonly Null: NullType;
|
|
42
|
+
readonly Boolean: import("@elaraai/east").BooleanType;
|
|
43
|
+
readonly Integer: import("@elaraai/east").IntegerType;
|
|
44
|
+
readonly Float: import("@elaraai/east").FloatType;
|
|
45
|
+
readonly String: StringType;
|
|
46
|
+
readonly DateTime: import("@elaraai/east").DateTimeType;
|
|
47
|
+
readonly Link: StructType<{
|
|
48
|
+
readonly from: ArrayType<VariantType<{
|
|
49
|
+
readonly identified: StructType<{
|
|
50
|
+
readonly key: StringType;
|
|
51
|
+
}>;
|
|
52
|
+
readonly range: StructType<{
|
|
53
|
+
readonly from: StringType;
|
|
54
|
+
readonly to: StringType;
|
|
55
|
+
}>;
|
|
56
|
+
readonly counted: StructType<{
|
|
57
|
+
readonly n: import("@elaraai/east").IntegerType;
|
|
58
|
+
readonly key: StringType;
|
|
59
|
+
}>;
|
|
60
|
+
readonly placeholder: NullType;
|
|
61
|
+
readonly text: StringType;
|
|
62
|
+
}>>;
|
|
63
|
+
readonly to: ArrayType<VariantType<{
|
|
64
|
+
readonly identified: StructType<{
|
|
65
|
+
readonly key: StringType;
|
|
66
|
+
}>;
|
|
67
|
+
readonly range: StructType<{
|
|
68
|
+
readonly from: StringType;
|
|
69
|
+
readonly to: StringType;
|
|
70
|
+
}>;
|
|
71
|
+
readonly counted: StructType<{
|
|
72
|
+
readonly n: import("@elaraai/east").IntegerType;
|
|
73
|
+
readonly key: StringType;
|
|
74
|
+
}>;
|
|
75
|
+
readonly placeholder: NullType;
|
|
76
|
+
readonly text: StringType;
|
|
77
|
+
}>>;
|
|
78
|
+
}>;
|
|
79
|
+
}>>;
|
|
80
|
+
}>;
|
|
81
|
+
/** Type representing {@link SheetLibraryCardType}. */
|
|
82
|
+
export type SheetLibraryCardType = typeof SheetLibraryCardType;
|
|
83
|
+
/** Where an author's tab's cards land: on rows (a grouped sheet's lines), or on a grouped sheet's bands. */
|
|
84
|
+
export declare const SheetLibraryDropType: VariantType<{
|
|
85
|
+
readonly row: NullType;
|
|
86
|
+
readonly group: NullType;
|
|
87
|
+
}>;
|
|
88
|
+
/** Type representing {@link SheetLibraryDropType}. */
|
|
89
|
+
export type SheetLibraryDropType = typeof SheetLibraryDropType;
|
|
90
|
+
/**
|
|
91
|
+
* One tab of the library pane on the wire, in the order `library` lists them.
|
|
92
|
+
*
|
|
93
|
+
* - `rows` — the templates (`templates`), by their group;
|
|
94
|
+
* - `columns` — the declared columns, each with an eye;
|
|
95
|
+
* - `tab` — the author's own: its name, its icon, where its cards land, and its cards.
|
|
96
|
+
*/
|
|
97
|
+
export declare const SheetLibraryTabType: VariantType<{
|
|
98
|
+
readonly rows: NullType;
|
|
99
|
+
readonly columns: NullType;
|
|
100
|
+
readonly tab: StructType<{
|
|
101
|
+
readonly name: StringType;
|
|
102
|
+
readonly icon: OptionType<StringType>;
|
|
103
|
+
readonly drop: OptionType<VariantType<{
|
|
104
|
+
readonly row: NullType;
|
|
105
|
+
readonly group: NullType;
|
|
106
|
+
}>>;
|
|
107
|
+
readonly cards: ArrayType<StructType<{
|
|
108
|
+
readonly key: StringType;
|
|
109
|
+
readonly label: StringType;
|
|
110
|
+
readonly meta: OptionType<StringType>;
|
|
111
|
+
readonly group: OptionType<StringType>;
|
|
112
|
+
readonly sets: DictType<StringType, VariantType<{
|
|
113
|
+
readonly Invalid: StringType;
|
|
114
|
+
readonly Null: NullType;
|
|
115
|
+
readonly Boolean: import("@elaraai/east").BooleanType;
|
|
116
|
+
readonly Integer: import("@elaraai/east").IntegerType;
|
|
117
|
+
readonly Float: import("@elaraai/east").FloatType;
|
|
118
|
+
readonly String: StringType;
|
|
119
|
+
readonly DateTime: import("@elaraai/east").DateTimeType;
|
|
120
|
+
readonly Link: StructType<{
|
|
121
|
+
readonly from: ArrayType<VariantType<{
|
|
122
|
+
readonly identified: StructType<{
|
|
123
|
+
readonly key: StringType;
|
|
124
|
+
}>;
|
|
125
|
+
readonly range: StructType<{
|
|
126
|
+
readonly from: StringType;
|
|
127
|
+
readonly to: StringType;
|
|
128
|
+
}>;
|
|
129
|
+
readonly counted: StructType<{
|
|
130
|
+
readonly n: import("@elaraai/east").IntegerType;
|
|
131
|
+
readonly key: StringType;
|
|
132
|
+
}>;
|
|
133
|
+
readonly placeholder: NullType;
|
|
134
|
+
readonly text: StringType;
|
|
135
|
+
}>>;
|
|
136
|
+
readonly to: ArrayType<VariantType<{
|
|
137
|
+
readonly identified: StructType<{
|
|
138
|
+
readonly key: StringType;
|
|
139
|
+
}>;
|
|
140
|
+
readonly range: StructType<{
|
|
141
|
+
readonly from: StringType;
|
|
142
|
+
readonly to: StringType;
|
|
143
|
+
}>;
|
|
144
|
+
readonly counted: StructType<{
|
|
145
|
+
readonly n: import("@elaraai/east").IntegerType;
|
|
146
|
+
readonly key: StringType;
|
|
147
|
+
}>;
|
|
148
|
+
readonly placeholder: NullType;
|
|
149
|
+
readonly text: StringType;
|
|
150
|
+
}>>;
|
|
151
|
+
}>;
|
|
152
|
+
}>>;
|
|
153
|
+
}>>;
|
|
154
|
+
}>;
|
|
155
|
+
}>;
|
|
156
|
+
/** Type representing {@link SheetLibraryTabType}. */
|
|
157
|
+
export type SheetLibraryTabType = typeof SheetLibraryTabType;
|
|
158
|
+
/**
|
|
159
|
+
* An author's tab: its name and icon, and the accessors over one entry of its
|
|
160
|
+
* data — its value and its key — as `Sheet.register.members` takes them
|
|
161
|
+
* (`(_v, k) => k` over a `Dict`; over an `Array` the key is the index,
|
|
162
|
+
* printed).
|
|
163
|
+
*
|
|
164
|
+
* @typeParam T - The data's element type
|
|
165
|
+
* @typeParam P - The patch `drop` returns: `Sheet.Types.Patch` of the row type, or of the group type
|
|
166
|
+
*/
|
|
167
|
+
export interface SheetLibraryTabConfig<T extends EastType, P extends EastType = EastType> {
|
|
168
|
+
/** The tab's name: its label in the tab row. */
|
|
169
|
+
name: string;
|
|
170
|
+
/** A Font Awesome solid icon name for the tab's cards. */
|
|
171
|
+
icon?: string;
|
|
172
|
+
/** The card's key — unique within the tab; a key that repeats keeps its first card. */
|
|
173
|
+
key: (value: ExprType<T>, key: ExprType<StringType>) => SubtypeExprOrValue<StringType>;
|
|
174
|
+
/** The card's name. */
|
|
175
|
+
label: (value: ExprType<T>, key: ExprType<StringType>) => SubtypeExprOrValue<StringType>;
|
|
176
|
+
/** The line under it — return the field's `Option`. */
|
|
177
|
+
meta?: (value: ExprType<T>, key: ExprType<StringType>) => SubtypeExprOrValue<OptionType<StringType>>;
|
|
178
|
+
/** The tab's group the card sits under. */
|
|
179
|
+
group?: (value: ExprType<T>, key: ExprType<StringType>) => SubtypeExprOrValue<StringType>;
|
|
180
|
+
/** What a dropped card sets: `Sheet.patch(RowType, …)` lands on a row, `Sheet.patch(GroupType, …)` on a grouped sheet's band. */
|
|
181
|
+
drop?: (value: ExprType<T>, key: ExprType<StringType>) => ExprType<P>;
|
|
182
|
+
}
|
|
183
|
+
/** One tab of the library pane — what each `Sheet.library.*` call returns, and `library` lists. */
|
|
184
|
+
export type SheetLibraryTab = {
|
|
185
|
+
readonly kind: "rows";
|
|
186
|
+
} | {
|
|
187
|
+
readonly kind: "columns";
|
|
188
|
+
} | {
|
|
189
|
+
readonly kind: "tab";
|
|
190
|
+
readonly data: unknown;
|
|
191
|
+
readonly config: SheetLibraryTabConfig<EastType>;
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* The library's Rows tab — `Sheet.library.rows()`: the sheet's templates,
|
|
195
|
+
* by their group, each card saying what it sets (SB33).
|
|
196
|
+
*
|
|
197
|
+
* @returns The tab
|
|
198
|
+
*/
|
|
199
|
+
export declare function libraryRows(): SheetLibraryTab;
|
|
200
|
+
/**
|
|
201
|
+
* The library's Columns tab — `Sheet.library.columns()`: the declared
|
|
202
|
+
* columns, each with its kind and an eye that hides it from the grid for the
|
|
203
|
+
* viewer (SB36).
|
|
204
|
+
*
|
|
205
|
+
* @returns The tab
|
|
206
|
+
*/
|
|
207
|
+
export declare function libraryColumns(): SheetLibraryTab;
|
|
208
|
+
/**
|
|
209
|
+
* A tab of the author's own cards — `Sheet.library.tab(data, { … })` (SB60):
|
|
210
|
+
* one card per entry of `data`, read through accessors as
|
|
211
|
+
* `Sheet.register.members` reads a register, and a `drop` that says what a
|
|
212
|
+
* dropped card sets.
|
|
213
|
+
*
|
|
214
|
+
* @typeParam T - The data's element type
|
|
215
|
+
* @typeParam P - The patch `drop` returns
|
|
216
|
+
* @param data - The rows — an `Array<T>` or a `Dict<String, T>` value or expression, a record's `read()`
|
|
217
|
+
* @param config - The tab's name and icon, and the accessors ({@link SheetLibraryTabConfig})
|
|
218
|
+
* @returns The tab
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```tsx
|
|
222
|
+
* // .tsx file with the `@jsxImportSource @elaraai/e3-ui` pragma
|
|
223
|
+
* import { ArrayType, DateTimeType, DictType, East, FloatType, OptionType, StringType, StructType, none, some } from "@elaraai/east";
|
|
224
|
+
* import { Box, Reactive, UIComponentType } from "@elaraai/east-ui";
|
|
225
|
+
* import { Record, Sheet } from "@elaraai/e3-ui";
|
|
226
|
+
* import e3 from "@elaraai/e3";
|
|
227
|
+
*
|
|
228
|
+
* export const SheetJob = StructType({ task: StringType, start: OptionType(DateTimeType), qty: OptionType(FloatType) });
|
|
229
|
+
* export const sheetJobs = e3.record("sheet_jobs", DictType(StringType, SheetJob), new Map([
|
|
230
|
+
* ["J-0001", { task: "Panel cutting", start: some(new Date("2026-10-12T00:00:00Z")), qty: some(48.0) }],
|
|
231
|
+
* ["J-0002", { task: "Edge banding", start: some(new Date("2026-10-13T00:00:00Z")), qty: some(120.0) }],
|
|
232
|
+
* ["J-0003", { task: "CNC routing", start: none, qty: some(48.0) }],
|
|
233
|
+
* ["J-0004", { task: "Spray finish", start: none, qty: none }],
|
|
234
|
+
* ]));
|
|
235
|
+
* export const sheetJobsPatch = e3.mutation.patch(sheetJobs);
|
|
236
|
+
* export const LibraryTask = StructType({ name: StringType, stage: StringType });
|
|
237
|
+
*
|
|
238
|
+
* const sheet = East.function([], UIComponentType, (_$) => (
|
|
239
|
+
* <Reactive>{$ => {
|
|
240
|
+
* const jobs = $.let(Record.bind(sheetJobs, [sheetJobsPatch]));
|
|
241
|
+
* const tasks = $.let([
|
|
242
|
+
* { name: "Panel cutting", stage: "Cutting" },
|
|
243
|
+
* { name: "Edge banding", stage: "Cutting" },
|
|
244
|
+
* { name: "CNC routing", stage: "Machining" },
|
|
245
|
+
* { name: "Sanding", stage: "Finishing" },
|
|
246
|
+
* { name: "Spray finish", stage: "Finishing" },
|
|
247
|
+
* ], ArrayType(LibraryTask));
|
|
248
|
+
* return (
|
|
249
|
+
* <Box height="560px">
|
|
250
|
+
* <Sheet
|
|
251
|
+
* record={jobs}
|
|
252
|
+
* name="library"
|
|
253
|
+
* columns={{
|
|
254
|
+
* task: Sheet.column.text(SheetJob, { header: "Task", width: "240px" }),
|
|
255
|
+
* start: Sheet.column.date(SheetJob, { header: "Start", width: "96px" }),
|
|
256
|
+
* qty: Sheet.column.quantity(SheetJob, { header: "Qty", width: "96px" }),
|
|
257
|
+
* }}
|
|
258
|
+
* library={[
|
|
259
|
+
* // The tasks a job takes, by their stage: a card dropped on a job sets its task.
|
|
260
|
+
* Sheet.library.tab(tasks, { name: "Tasks", icon: "hammer",
|
|
261
|
+
* key: t => t.name, label: t => t.name, group: t => t.stage,
|
|
262
|
+
* drop: t => Sheet.patch(SheetJob, { task: t.name }) }),
|
|
263
|
+
* Sheet.library.columns(),
|
|
264
|
+
* ]}
|
|
265
|
+
* />
|
|
266
|
+
* </Box>
|
|
267
|
+
* );
|
|
268
|
+
* }}</Reactive>
|
|
269
|
+
* ));
|
|
270
|
+
* ```
|
|
271
|
+
*/
|
|
272
|
+
export declare function libraryTab<T extends EastType, P extends EastType = EastType>(data: SubtypeExprOrValue<ArrayType<T>> | SubtypeExprOrValue<DictType<StringType, T>>, config: SheetLibraryTabConfig<T, P>): SheetLibraryTab;
|
|
273
|
+
/**
|
|
274
|
+
* Builds the library pane on the wire (SB59, SB60): its tabs in the
|
|
275
|
+
* order `library` lists them; none when it is left out.
|
|
276
|
+
*
|
|
277
|
+
* @param tabs - The tabs, each a `Sheet.library.*` call
|
|
278
|
+
* @param bridge - The sheet's bridge, as its root compiled it
|
|
279
|
+
* @returns The tabs on the wire
|
|
280
|
+
* @throws Error naming the tab: a tab listed twice (an author's tab by its name), and each of an author's tab's refusals
|
|
281
|
+
* @internal
|
|
282
|
+
*/
|
|
283
|
+
export declare function buildLibrary(tabs: readonly SheetLibraryTab[] | undefined, bridge: SheetBridge): ExprType<ArrayType<SheetLibraryTabType>>;
|
|
284
|
+
//# sourceMappingURL=library.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../../src/sheet/library.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,259 @@
|
|
|
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
|
+
* `Sheet.library` — the sheet's library pane, the author's (#1186,
|
|
7
|
+
* `Sheet Builder Spec.md` §4.4, SB32, SB59, SB60). `library` lists the
|
|
8
|
+
* pane's tabs, in order, each built here: `Sheet.library.rows()` (the
|
|
9
|
+
* templates), `Sheet.library.columns()` (the columns a viewer shows and
|
|
10
|
+
* hides) and `Sheet.library.tab(data, { … })`, cards of the author's own.
|
|
11
|
+
* Left out, or empty, the sheet has no library pane.
|
|
12
|
+
*
|
|
13
|
+
* An author's tab reads its rows as `Sheet.register.members` does — an
|
|
14
|
+
* `Array<T>` or a `Dict<String, T>`, its accessors reified ONCE into a
|
|
15
|
+
* describe function the map then calls — and its `drop` returns what a
|
|
16
|
+
* dropped card sets, as a template's `values` do: `Sheet.patch` over the row
|
|
17
|
+
* type lands on a row, over the group type on a band. The patch crosses the
|
|
18
|
+
* closed payload as the cells it sets through the sheet's editable columns
|
|
19
|
+
* (or band cells), as a proposed row's does.
|
|
20
|
+
*
|
|
21
|
+
* @packageDocumentation
|
|
22
|
+
*/
|
|
23
|
+
import { ArrayType, DictType, East, Expr, NullType, OptionType, SetType, StringType, StructType, VariantType, isTypeEqual, none, some, variant, } from "@elaraai/east";
|
|
24
|
+
import { SheetCellType, SheetPatchTypeFor } from "./types.js";
|
|
25
|
+
import { SheetCellsType, buildPatchCells } from "./bridge.js";
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// The wire
|
|
28
|
+
// ============================================================================
|
|
29
|
+
/**
|
|
30
|
+
* One card of an author's tab on the wire.
|
|
31
|
+
*
|
|
32
|
+
* @property key - The card's key, unique within its tab
|
|
33
|
+
* @property label - Its name
|
|
34
|
+
* @property meta - The line under its name
|
|
35
|
+
* @property group - The tab's group the card sits under
|
|
36
|
+
* @property sets - What a drop writes: the tab's `drop` patch, through the sheet's editable columns (or a band's cells); empty without a `drop`
|
|
37
|
+
*/
|
|
38
|
+
export const SheetLibraryCardType = StructType({
|
|
39
|
+
key: StringType,
|
|
40
|
+
label: StringType,
|
|
41
|
+
meta: OptionType(StringType),
|
|
42
|
+
group: OptionType(StringType),
|
|
43
|
+
sets: DictType(StringType, SheetCellType),
|
|
44
|
+
});
|
|
45
|
+
/** Where an author's tab's cards land: on rows (a grouped sheet's lines), or on a grouped sheet's bands. */
|
|
46
|
+
export const SheetLibraryDropType = VariantType({ row: NullType, group: NullType });
|
|
47
|
+
/**
|
|
48
|
+
* One tab of the library pane on the wire, in the order `library` lists them.
|
|
49
|
+
*
|
|
50
|
+
* - `rows` — the templates (`templates`), by their group;
|
|
51
|
+
* - `columns` — the declared columns, each with an eye;
|
|
52
|
+
* - `tab` — the author's own: its name, its icon, where its cards land, and its cards.
|
|
53
|
+
*/
|
|
54
|
+
export const SheetLibraryTabType = VariantType({
|
|
55
|
+
rows: NullType,
|
|
56
|
+
columns: NullType,
|
|
57
|
+
tab: StructType({
|
|
58
|
+
name: StringType,
|
|
59
|
+
icon: OptionType(StringType),
|
|
60
|
+
drop: OptionType(SheetLibraryDropType),
|
|
61
|
+
cards: ArrayType(SheetLibraryCardType),
|
|
62
|
+
}),
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* The library's Rows tab — `Sheet.library.rows()`: the sheet's templates,
|
|
66
|
+
* by their group, each card saying what it sets (SB33).
|
|
67
|
+
*
|
|
68
|
+
* @returns The tab
|
|
69
|
+
*/
|
|
70
|
+
export function libraryRows() {
|
|
71
|
+
return { kind: "rows" };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The library's Columns tab — `Sheet.library.columns()`: the declared
|
|
75
|
+
* columns, each with its kind and an eye that hides it from the grid for the
|
|
76
|
+
* viewer (SB36).
|
|
77
|
+
*
|
|
78
|
+
* @returns The tab
|
|
79
|
+
*/
|
|
80
|
+
export function libraryColumns() {
|
|
81
|
+
return { kind: "columns" };
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* A tab of the author's own cards — `Sheet.library.tab(data, { … })` (SB60):
|
|
85
|
+
* one card per entry of `data`, read through accessors as
|
|
86
|
+
* `Sheet.register.members` reads a register, and a `drop` that says what a
|
|
87
|
+
* dropped card sets.
|
|
88
|
+
*
|
|
89
|
+
* @typeParam T - The data's element type
|
|
90
|
+
* @typeParam P - The patch `drop` returns
|
|
91
|
+
* @param data - The rows — an `Array<T>` or a `Dict<String, T>` value or expression, a record's `read()`
|
|
92
|
+
* @param config - The tab's name and icon, and the accessors ({@link SheetLibraryTabConfig})
|
|
93
|
+
* @returns The tab
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```tsx
|
|
97
|
+
* // .tsx file with the `@jsxImportSource @elaraai/e3-ui` pragma
|
|
98
|
+
* import { ArrayType, DateTimeType, DictType, East, FloatType, OptionType, StringType, StructType, none, some } from "@elaraai/east";
|
|
99
|
+
* import { Box, Reactive, UIComponentType } from "@elaraai/east-ui";
|
|
100
|
+
* import { Record, Sheet } from "@elaraai/e3-ui";
|
|
101
|
+
* import e3 from "@elaraai/e3";
|
|
102
|
+
*
|
|
103
|
+
* export const SheetJob = StructType({ task: StringType, start: OptionType(DateTimeType), qty: OptionType(FloatType) });
|
|
104
|
+
* export const sheetJobs = e3.record("sheet_jobs", DictType(StringType, SheetJob), new Map([
|
|
105
|
+
* ["J-0001", { task: "Panel cutting", start: some(new Date("2026-10-12T00:00:00Z")), qty: some(48.0) }],
|
|
106
|
+
* ["J-0002", { task: "Edge banding", start: some(new Date("2026-10-13T00:00:00Z")), qty: some(120.0) }],
|
|
107
|
+
* ["J-0003", { task: "CNC routing", start: none, qty: some(48.0) }],
|
|
108
|
+
* ["J-0004", { task: "Spray finish", start: none, qty: none }],
|
|
109
|
+
* ]));
|
|
110
|
+
* export const sheetJobsPatch = e3.mutation.patch(sheetJobs);
|
|
111
|
+
* export const LibraryTask = StructType({ name: StringType, stage: StringType });
|
|
112
|
+
*
|
|
113
|
+
* const sheet = East.function([], UIComponentType, (_$) => (
|
|
114
|
+
* <Reactive>{$ => {
|
|
115
|
+
* const jobs = $.let(Record.bind(sheetJobs, [sheetJobsPatch]));
|
|
116
|
+
* const tasks = $.let([
|
|
117
|
+
* { name: "Panel cutting", stage: "Cutting" },
|
|
118
|
+
* { name: "Edge banding", stage: "Cutting" },
|
|
119
|
+
* { name: "CNC routing", stage: "Machining" },
|
|
120
|
+
* { name: "Sanding", stage: "Finishing" },
|
|
121
|
+
* { name: "Spray finish", stage: "Finishing" },
|
|
122
|
+
* ], ArrayType(LibraryTask));
|
|
123
|
+
* return (
|
|
124
|
+
* <Box height="560px">
|
|
125
|
+
* <Sheet
|
|
126
|
+
* record={jobs}
|
|
127
|
+
* name="library"
|
|
128
|
+
* columns={{
|
|
129
|
+
* task: Sheet.column.text(SheetJob, { header: "Task", width: "240px" }),
|
|
130
|
+
* start: Sheet.column.date(SheetJob, { header: "Start", width: "96px" }),
|
|
131
|
+
* qty: Sheet.column.quantity(SheetJob, { header: "Qty", width: "96px" }),
|
|
132
|
+
* }}
|
|
133
|
+
* library={[
|
|
134
|
+
* // The tasks a job takes, by their stage: a card dropped on a job sets its task.
|
|
135
|
+
* Sheet.library.tab(tasks, { name: "Tasks", icon: "hammer",
|
|
136
|
+
* key: t => t.name, label: t => t.name, group: t => t.stage,
|
|
137
|
+
* drop: t => Sheet.patch(SheetJob, { task: t.name }) }),
|
|
138
|
+
* Sheet.library.columns(),
|
|
139
|
+
* ]}
|
|
140
|
+
* />
|
|
141
|
+
* </Box>
|
|
142
|
+
* );
|
|
143
|
+
* }}</Reactive>
|
|
144
|
+
* ));
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
export function libraryTab(data, config) {
|
|
148
|
+
return { kind: "tab", data, config: config };
|
|
149
|
+
}
|
|
150
|
+
// ============================================================================
|
|
151
|
+
// The build
|
|
152
|
+
// ============================================================================
|
|
153
|
+
/** Fold the cards a key repeats on, keeping the FIRST, in the data's order — as a register's members fold. */
|
|
154
|
+
const dedupeCards = East.function([ArrayType(SheetLibraryCardType)], ArrayType(SheetLibraryCardType), ($, cards) => {
|
|
155
|
+
const out = $.let([], ArrayType(SheetLibraryCardType));
|
|
156
|
+
const seen = $.let(new Set(), SetType(StringType));
|
|
157
|
+
$.for(cards, ($2, card) => {
|
|
158
|
+
$2.if(seen.has(card.key).not(), ($3) => {
|
|
159
|
+
$3(seen.insert(card.key));
|
|
160
|
+
$3(out.pushLast(card));
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
return out;
|
|
164
|
+
});
|
|
165
|
+
/** How a tab names itself in a refusal. */
|
|
166
|
+
function tabName(tab) {
|
|
167
|
+
return tab.kind === "tab" ? `the "${tab.config.name}" tab` : `Sheet.library.${tab.kind}()`;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* An author's tab on the wire: its cards, read through its accessors, and
|
|
171
|
+
* where its `drop` patch lands, decided by the patch's type.
|
|
172
|
+
*
|
|
173
|
+
* @param tab - The tab
|
|
174
|
+
* @param bridge - The sheet's bridge, as its root compiled it
|
|
175
|
+
* @returns The tab's wire value
|
|
176
|
+
* @throws Error naming the tab: data that is not an Array or a `Dict<String, T>`, or a `drop` over neither the row type nor the group type
|
|
177
|
+
*/
|
|
178
|
+
function buildTab(tab, bridge) {
|
|
179
|
+
const cfg = tab.config;
|
|
180
|
+
const expr = East.value(tab.data);
|
|
181
|
+
// The data is an Array or a Dict whatever the cast above says: widen to read its real East type.
|
|
182
|
+
const t = Expr.type(expr);
|
|
183
|
+
if (t.type !== "Array" && t.type !== "Dict") {
|
|
184
|
+
throw new Error(`Sheet: ${tabName(tab)}'s data must be an Array or a Dict<String, T> — got a ${t.type}`);
|
|
185
|
+
}
|
|
186
|
+
if (t.type === "Dict" && t.key.type !== "String") {
|
|
187
|
+
throw new Error(`Sheet: ${tabName(tab)}'s data must be a Dict<String, T> — its keys ride to the accessors as the second argument`);
|
|
188
|
+
}
|
|
189
|
+
const elem = t.value;
|
|
190
|
+
// The drop: reified once, its patch's type deciding where a card lands.
|
|
191
|
+
let landing;
|
|
192
|
+
let dropFn;
|
|
193
|
+
let project;
|
|
194
|
+
if (cfg.drop !== undefined) {
|
|
195
|
+
const drop = cfg.drop;
|
|
196
|
+
dropFn = East.function([elem, StringType], undefined, (_$, v, k) => drop(v, k));
|
|
197
|
+
const out = Expr.type(dropFn).output;
|
|
198
|
+
const groupHalf = bridge.group;
|
|
199
|
+
if (isTypeEqual(out, bridge.patchType)) {
|
|
200
|
+
landing = "row";
|
|
201
|
+
project = bridge.encodePatch;
|
|
202
|
+
}
|
|
203
|
+
else if (groupHalf !== undefined && isTypeEqual(out, SheetPatchTypeFor(groupHalf.groupType))) {
|
|
204
|
+
landing = "group";
|
|
205
|
+
project = buildPatchCells(groupHalf.groupType, groupHalf.cellMetas, {});
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
throw new Error(`Sheet: ${tabName(tab)}'s \`drop\` returns a patch over neither the row type nor the group type — build it with Sheet.patch(RowType, …)${bridge.group !== undefined ? ", or Sheet.patch(GroupType, …) for a band" : " over the sheet's row type"}`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const describe = East.function([elem, StringType], SheetLibraryCardType, ($, v, k) => {
|
|
212
|
+
const sets = dropFn === undefined || project === undefined
|
|
213
|
+
? $.const(new Map(), SheetCellsType)
|
|
214
|
+
: $.const(($.const(project))(($.const(dropFn))(v, k)), SheetCellsType);
|
|
215
|
+
return {
|
|
216
|
+
key: cfg.key(v, k),
|
|
217
|
+
label: cfg.label(v, k),
|
|
218
|
+
meta: cfg.meta !== undefined ? cfg.meta(v, k) : East.value(none, OptionType(StringType)),
|
|
219
|
+
group: cfg.group !== undefined ? some(cfg.group(v, k)) : East.value(none, OptionType(StringType)),
|
|
220
|
+
sets,
|
|
221
|
+
};
|
|
222
|
+
});
|
|
223
|
+
const list = t.type === "Dict"
|
|
224
|
+
? expr.toArray((_$, v, k) => describe(v, k))
|
|
225
|
+
: expr.map((_$, v, i) => describe(v, East.print(i)));
|
|
226
|
+
return East.value(variant("tab", {
|
|
227
|
+
name: cfg.name,
|
|
228
|
+
icon: cfg.icon === undefined ? none : some(cfg.icon),
|
|
229
|
+
drop: landing === undefined ? none : some(variant(landing, null)),
|
|
230
|
+
cards: dedupeCards(list),
|
|
231
|
+
}), SheetLibraryTabType);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Builds the library pane on the wire (SB59, SB60): its tabs in the
|
|
235
|
+
* order `library` lists them; none when it is left out.
|
|
236
|
+
*
|
|
237
|
+
* @param tabs - The tabs, each a `Sheet.library.*` call
|
|
238
|
+
* @param bridge - The sheet's bridge, as its root compiled it
|
|
239
|
+
* @returns The tabs on the wire
|
|
240
|
+
* @throws Error naming the tab: a tab listed twice (an author's tab by its name), and each of an author's tab's refusals
|
|
241
|
+
* @internal
|
|
242
|
+
*/
|
|
243
|
+
export function buildLibrary(tabs, bridge) {
|
|
244
|
+
const seen = new Set();
|
|
245
|
+
for (const tab of tabs ?? []) {
|
|
246
|
+
const id = tab.kind === "tab" ? `tab:${tab.config.name}` : tab.kind;
|
|
247
|
+
if (seen.has(id)) {
|
|
248
|
+
throw new Error(tab.kind === "tab"
|
|
249
|
+
? `Sheet: the library lists two tabs named "${tab.config.name}" — each tab's name is its own`
|
|
250
|
+
: `Sheet: the library lists ${tabName(tab)} twice — each tab once`);
|
|
251
|
+
}
|
|
252
|
+
seen.add(id);
|
|
253
|
+
}
|
|
254
|
+
const wires = (tabs ?? []).map((tab) => tab.kind === "tab"
|
|
255
|
+
? buildTab(tab, bridge)
|
|
256
|
+
: East.value(variant(tab.kind, null), SheetLibraryTabType));
|
|
257
|
+
return East.value(wires, ArrayType(SheetLibraryTabType));
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../../src/sheet/library.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACH,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,OAAO,EACP,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,OAAO,GAKV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAoB,MAAM,aAAa,CAAC;AAEhF,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC;IAC3C,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC;IAC5B,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC;IAC7B,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;CAC5C,CAAC,CAAC;AAKH,4GAA4G;AAC5G,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAKpF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;IAC3C,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,QAAQ;IACjB,GAAG,EAAE,UAAU,CAAC;QACZ,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC;QAC5B,IAAI,EAAE,UAAU,CAAC,oBAAoB,CAAC;QACtC,KAAK,EAAE,SAAS,CAAC,oBAAoB,CAAC;KACzC,CAAC;CACL,CAAC,CAAC;AAyCH;;;;;GAKG;AACH,MAAM,UAAU,WAAW;IACvB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc;IAC1B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,MAAM,UAAU,UAAU,CACtB,IAAoF,EACpF,MAAmC;IAEnC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAoD,EAAE,CAAC;AAC/F,CAAC;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,8GAA8G;AAC9G,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,EAAE,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;IAC/G,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;QACtB,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YACnC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACf,CAAC,CAAC,CAAC;AAEH,2CAA2C;AAC3C,SAAS,OAAO,CAAC,GAAoB;IACjC,OAAO,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,IAAI,IAAI,CAAC;AAC/F,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,QAAQ,CAAC,GAA8C,EAAE,MAAmB;IACjF,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAA+C,CAAkC,CAAC;IAC9G,iGAAiG;IACjG,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,CAAC;IACtC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7G,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAK,CAAC,CAAC,GAAgB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,CAAC,GAAG,CAAC,2FAA2F,CAAC,CAAC;IACvI,CAAC;IACD,MAAM,IAAI,GAAa,CAAC,CAAC,KAAK,CAAC;IAE/B,wEAAwE;IACxE,IAAI,OAAoC,CAAC;IACzC,IAAI,MAA8E,CAAC;IACnF,IAAI,OAA+C,CAAC;IACpD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAA0E,CAAC;QACzJ,MAAM,GAAG,GAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAkB,CAAC,MAAkB,CAAC;QACnE,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;QAC/B,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,OAAO,GAAG,KAAK,CAAC;YAChB,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;QACjC,CAAC;aAAM,IAAI,SAAS,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,EAAE,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YAC7F,OAAO,GAAG,OAAO,CAAC;YAClB,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,CAAC,GAAG,CAAC,mHAAmH,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,4BAA4B,EAAE,CAAC,CAAC;QACxQ,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QACjF,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;YACtD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE,cAAc,CAAC;YACpC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAC3E,OAAO;YACH,GAAG,EAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACpB,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACtB,IAAI,EAAG,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;YACzF,KAAK,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;YACjG,IAAI;SACP,CAAC;IACN,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM;QAC1B,CAAC,CAAE,IAA4D,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE;QAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACpD,IAAI,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACjE,KAAK,EAAE,WAAW,CAAC,IAAiD,CAAC;KACxE,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,IAA4C,EAAE,MAAmB;IAC1F,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;QACpE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK;gBAC9B,CAAC,CAAC,4CAA4C,GAAG,CAAC,MAAM,CAAC,IAAI,gCAAgC;gBAC7F,CAAC,CAAC,4BAA4B,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAiC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK;QACrF,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACvB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAChE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC7D,CAAC"}
|