base-paint 0.3.15 → 0.3.16
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/README.md +23 -6
- package/dist/charts.js +1 -0
- package/dist/components/bulk-bar/attrs.js +1 -0
- package/dist/components/bulk-bar/index.js +1 -0
- package/dist/components/bulk-bar/keys.d.ts +23 -0
- package/dist/components/bulk-bar/keys.d.ts.map +1 -0
- package/dist/components/bulk-bar/keys.js +55 -0
- package/dist/components/bulk-bar/keys.js.map +1 -0
- package/dist/components/bulk-bar/model.d.ts.map +1 -1
- package/dist/components/bulk-bar/model.js +10 -0
- package/dist/components/bulk-bar/model.js.map +1 -1
- package/dist/components/bulk-bar/render.js +1 -0
- package/dist/components/bulk-bar/runtime.js +1 -0
- package/dist/components/bulk-bar/style-column.js +1 -0
- package/dist/components/bulk-bar/style-confirm.js +1 -0
- package/dist/components/bulk-bar/style-sizes.js +1 -0
- package/dist/components/bulk-bar/style.js +1 -0
- package/dist/components/calendar-month/attrs.js +1 -0
- package/dist/components/calendar-month/index.js +1 -0
- package/dist/components/calendar-month/model.js +1 -0
- package/dist/components/calendar-month/render.js +1 -0
- package/dist/components/calendar-month/style.js +1 -0
- package/dist/components/cash-waterline/attrs.js +1 -0
- package/dist/components/cash-waterline/fields.d.ts +17 -0
- package/dist/components/cash-waterline/fields.d.ts.map +1 -1
- package/dist/components/cash-waterline/fields.js +41 -0
- package/dist/components/cash-waterline/fields.js.map +1 -1
- package/dist/components/cash-waterline/index.js +1 -0
- package/dist/components/cash-waterline/model.d.ts.map +1 -1
- package/dist/components/cash-waterline/model.js +3 -1
- package/dist/components/cash-waterline/model.js.map +1 -1
- package/dist/components/cash-waterline/render.js +1 -0
- package/dist/components/cash-waterline/style-forms.js +1 -0
- package/dist/components/cash-waterline/style.js +1 -0
- package/dist/components/charts/bar.js +1 -0
- package/dist/components/charts/combo.js +1 -0
- package/dist/components/charts/coords.js +1 -0
- package/dist/components/charts/dispatch.js +1 -0
- package/dist/components/charts/donut.js +1 -0
- package/dist/components/charts/gauge.js +1 -0
- package/dist/components/charts/helpers.js +1 -0
- package/dist/components/charts/index.js +1 -0
- package/dist/components/charts/line.js +1 -0
- package/dist/components/charts/options.js +1 -0
- package/dist/components/charts/progress.js +1 -0
- package/dist/components/charts/scatter.js +1 -0
- package/dist/components/charts/shared.js +1 -0
- package/dist/components/charts/sparkline.js +1 -0
- package/dist/components/charts/style.d.ts.map +1 -1
- package/dist/components/charts/style.js +5 -1
- package/dist/components/charts/style.js.map +1 -1
- package/dist/components/charts/svg.js +1 -0
- package/dist/components/command-palette/attrs.js +1 -0
- package/dist/components/command-palette/index.js +1 -0
- package/dist/components/command-palette/model.js +1 -0
- package/dist/components/command-palette/render.js +1 -0
- package/dist/components/command-palette/runtime.js +1 -0
- package/dist/components/command-palette/style.js +1 -0
- package/dist/components/compare-columns/attrs.js +1 -0
- package/dist/components/compare-columns/index.js +1 -0
- package/dist/components/compare-columns/model.js +1 -0
- package/dist/components/compare-columns/render.js +1 -0
- package/dist/components/compare-columns/style.js +1 -0
- package/dist/components/confirm-strip/attrs.js +1 -0
- package/dist/components/confirm-strip/index.js +1 -0
- package/dist/components/confirm-strip/model.js +1 -0
- package/dist/components/confirm-strip/render.js +1 -0
- package/dist/components/confirm-strip/runtime.js +1 -0
- package/dist/components/confirm-strip/style.js +1 -0
- package/dist/components/controls/action-bar.js +1 -0
- package/dist/components/controls/bind.js +1 -0
- package/dist/components/controls/copy.js +1 -0
- package/dist/components/controls/helpers-meta.js +1 -0
- package/dist/components/controls/helpers.js +1 -0
- package/dist/components/controls/index.js +1 -0
- package/dist/components/controls/shared.js +1 -0
- package/dist/components/controls/status.js +1 -0
- package/dist/components/controls/toast.js +1 -0
- package/dist/components/date-range/attrs.d.ts +11 -2
- package/dist/components/date-range/attrs.d.ts.map +1 -1
- package/dist/components/date-range/attrs.js +12 -2
- package/dist/components/date-range/attrs.js.map +1 -1
- package/dist/components/date-range/index.js +1 -0
- package/dist/components/date-range/model.js +1 -0
- package/dist/components/date-range/render.js +1 -0
- package/dist/components/date-range/runtime.js +1 -0
- package/dist/components/date-range/style-calendar.d.ts.map +1 -1
- package/dist/components/date-range/style-calendar.js +24 -6
- package/dist/components/date-range/style-calendar.js.map +1 -1
- package/dist/components/date-range/style.d.ts.map +1 -1
- package/dist/components/date-range/style.js +8 -5
- package/dist/components/date-range/style.js.map +1 -1
- package/dist/components/dialog/attrs.js +1 -0
- package/dist/components/dialog/index.js +1 -0
- package/dist/components/dialog/model.js +1 -0
- package/dist/components/dialog/render.js +1 -0
- package/dist/components/dialog/runtime.js +1 -0
- package/dist/components/dialog/style.js +1 -0
- package/dist/components/drag-sort/attrs.d.ts +182 -0
- package/dist/components/drag-sort/attrs.d.ts.map +1 -0
- package/dist/components/drag-sort/attrs.js +204 -0
- package/dist/components/drag-sort/attrs.js.map +1 -0
- package/dist/components/drag-sort/index.d.ts +22 -0
- package/dist/components/drag-sort/index.d.ts.map +1 -0
- package/dist/components/drag-sort/index.js +21 -0
- package/dist/components/drag-sort/index.js.map +1 -0
- package/dist/components/drag-sort/model.d.ts +46 -0
- package/dist/components/drag-sort/model.d.ts.map +1 -0
- package/dist/components/drag-sort/model.js +200 -0
- package/dist/components/drag-sort/model.js.map +1 -0
- package/dist/components/drag-sort/render.d.ts +3 -0
- package/dist/components/drag-sort/render.d.ts.map +1 -0
- package/dist/components/drag-sort/render.js +182 -0
- package/dist/components/drag-sort/render.js.map +1 -0
- package/dist/components/drag-sort/runtime-buttons.d.ts +27 -0
- package/dist/components/drag-sort/runtime-buttons.d.ts.map +1 -0
- package/dist/components/drag-sort/runtime-buttons.js +139 -0
- package/dist/components/drag-sort/runtime-buttons.js.map +1 -0
- package/dist/components/drag-sort/runtime-lift.d.ts +16 -0
- package/dist/components/drag-sort/runtime-lift.d.ts.map +1 -0
- package/dist/components/drag-sort/runtime-lift.js +74 -0
- package/dist/components/drag-sort/runtime-lift.js.map +1 -0
- package/dist/components/drag-sort/runtime-prelude.d.ts +18 -0
- package/dist/components/drag-sort/runtime-prelude.d.ts.map +1 -0
- package/dist/components/drag-sort/runtime-prelude.js +168 -0
- package/dist/components/drag-sort/runtime-prelude.js.map +1 -0
- package/dist/components/drag-sort/runtime-text.d.ts +58 -0
- package/dist/components/drag-sort/runtime-text.d.ts.map +1 -0
- package/dist/components/drag-sort/runtime-text.js +81 -0
- package/dist/components/drag-sort/runtime-text.js.map +1 -0
- package/dist/components/drag-sort/runtime.d.ts +9 -0
- package/dist/components/drag-sort/runtime.d.ts.map +1 -0
- package/dist/components/drag-sort/runtime.js +181 -0
- package/dist/components/drag-sort/runtime.js.map +1 -0
- package/dist/components/drag-sort/style-forms.d.ts +5 -0
- package/dist/components/drag-sort/style-forms.d.ts.map +1 -0
- package/dist/components/drag-sort/style-forms.js +135 -0
- package/dist/components/drag-sort/style-forms.js.map +1 -0
- package/dist/components/drag-sort/style.d.ts +5 -0
- package/dist/components/drag-sort/style.d.ts.map +1 -0
- package/dist/components/drag-sort/style.js +304 -0
- package/dist/components/drag-sort/style.js.map +1 -0
- package/dist/components/drawer-sheet/attrs.js +1 -0
- package/dist/components/drawer-sheet/index.js +1 -0
- package/dist/components/drawer-sheet/model.js +1 -0
- package/dist/components/drawer-sheet/render.js +1 -0
- package/dist/components/drawer-sheet/runtime.js +1 -0
- package/dist/components/drawer-sheet/style.js +1 -0
- package/dist/components/due-row/attrs.js +1 -0
- package/dist/components/due-row/index.js +1 -0
- package/dist/components/due-row/model.js +1 -0
- package/dist/components/due-row/render.js +1 -0
- package/dist/components/due-row/runtime.js +1 -0
- package/dist/components/due-row/style.js +1 -0
- package/dist/components/editable-value/attrs.d.ts +2 -2
- package/dist/components/editable-value/attrs.d.ts.map +1 -1
- package/dist/components/editable-value/attrs.js +3 -2
- package/dist/components/editable-value/attrs.js.map +1 -1
- package/dist/components/editable-value/index.js +1 -0
- package/dist/components/editable-value/render.d.ts.map +1 -1
- package/dist/components/editable-value/render.js +40 -0
- package/dist/components/editable-value/render.js.map +1 -1
- package/dist/components/editable-value/runtime.d.ts.map +1 -1
- package/dist/components/editable-value/runtime.js +15 -5
- package/dist/components/editable-value/runtime.js.map +1 -1
- package/dist/components/editable-value/style.js +1 -0
- package/dist/components/entry-rows/index.js +1 -0
- package/dist/components/entry-rows/render.js +1 -0
- package/dist/components/entry-rows/style.js +1 -0
- package/dist/components/filter-chips/attrs.js +1 -0
- package/dist/components/filter-chips/index.js +1 -0
- package/dist/components/filter-chips/model.js +1 -0
- package/dist/components/filter-chips/render.js +1 -0
- package/dist/components/filter-chips/runtime.js +1 -0
- package/dist/components/filter-chips/style.js +1 -0
- package/dist/components/flow-ribbon/fields.d.ts +8 -1
- package/dist/components/flow-ribbon/fields.d.ts.map +1 -1
- package/dist/components/flow-ribbon/fields.js +39 -3
- package/dist/components/flow-ribbon/fields.js.map +1 -1
- package/dist/components/flow-ribbon/forms-rails.d.ts +26 -0
- package/dist/components/flow-ribbon/forms-rails.d.ts.map +1 -0
- package/dist/components/flow-ribbon/forms-rails.js +63 -0
- package/dist/components/flow-ribbon/forms-rails.js.map +1 -0
- package/dist/components/flow-ribbon/forms.d.ts +6 -25
- package/dist/components/flow-ribbon/forms.d.ts.map +1 -1
- package/dist/components/flow-ribbon/forms.js +11 -49
- package/dist/components/flow-ribbon/forms.js.map +1 -1
- package/dist/components/flow-ribbon/model.d.ts.map +1 -1
- package/dist/components/flow-ribbon/model.js +2 -1
- package/dist/components/flow-ribbon/model.js.map +1 -1
- package/dist/components/gantt-timeline/attrs.js +1 -0
- package/dist/components/gantt-timeline/index.js +1 -0
- package/dist/components/gantt-timeline/layout.js +1 -0
- package/dist/components/gantt-timeline/model.d.ts.map +1 -1
- package/dist/components/gantt-timeline/model.js +51 -0
- package/dist/components/gantt-timeline/model.js.map +1 -1
- package/dist/components/gantt-timeline/render.js +1 -0
- package/dist/components/gantt-timeline/scale.js +1 -0
- package/dist/components/gantt-timeline/style-marks.js +1 -0
- package/dist/components/gantt-timeline/style.js +1 -0
- package/dist/components/gap-band/attrs.d.ts +77 -0
- package/dist/components/gap-band/attrs.d.ts.map +1 -0
- package/dist/components/gap-band/attrs.js +113 -0
- package/dist/components/gap-band/attrs.js.map +1 -0
- package/dist/components/gap-band/forms.d.ts +117 -0
- package/dist/components/gap-band/forms.d.ts.map +1 -0
- package/dist/components/gap-band/forms.js +172 -0
- package/dist/components/gap-band/forms.js.map +1 -0
- package/dist/components/gap-band/index.d.ts +16 -0
- package/dist/components/gap-band/index.d.ts.map +1 -0
- package/dist/components/gap-band/index.js +15 -0
- package/dist/components/gap-band/index.js.map +1 -0
- package/dist/components/gap-band/model.d.ts +5 -0
- package/dist/components/gap-band/model.d.ts.map +1 -0
- package/dist/components/gap-band/model.js +116 -0
- package/dist/components/gap-band/model.js.map +1 -0
- package/dist/components/gap-band/render.d.ts +3 -0
- package/dist/components/gap-band/render.d.ts.map +1 -0
- package/dist/components/gap-band/render.js +142 -0
- package/dist/components/gap-band/render.js.map +1 -0
- package/dist/components/gap-band/scale.d.ts +45 -0
- package/dist/components/gap-band/scale.d.ts.map +1 -0
- package/dist/components/gap-band/scale.js +163 -0
- package/dist/components/gap-band/scale.js.map +1 -0
- package/dist/components/gap-band/style-forms.d.ts +10 -0
- package/dist/components/gap-band/style-forms.d.ts.map +1 -0
- package/dist/components/gap-band/style-forms.js +244 -0
- package/dist/components/gap-band/style-forms.js.map +1 -0
- package/dist/components/gap-band/style.d.ts +9 -0
- package/dist/components/gap-band/style.d.ts.map +1 -0
- package/dist/components/gap-band/style.js +334 -0
- package/dist/components/gap-band/style.js.map +1 -0
- package/dist/components/goal-stairs/attrs.js +1 -0
- package/dist/components/goal-stairs/index.js +1 -0
- package/dist/components/goal-stairs/model.d.ts.map +1 -1
- package/dist/components/goal-stairs/model.js +31 -0
- package/dist/components/goal-stairs/model.js.map +1 -1
- package/dist/components/goal-stairs/render.js +1 -0
- package/dist/components/goal-stairs/style.js +1 -0
- package/dist/components/heat-grid/attrs.js +1 -0
- package/dist/components/heat-grid/index.js +1 -0
- package/dist/components/heat-grid/model.js +1 -0
- package/dist/components/heat-grid/render.js +1 -0
- package/dist/components/heat-grid/style.js +1 -0
- package/dist/components/help/index.js +1 -0
- package/dist/components/help/render.d.ts.map +1 -1
- package/dist/components/help/render.js +12 -2
- package/dist/components/help/render.js.map +1 -1
- package/dist/components/help/schema.js +1 -0
- package/dist/components/help/shared.js +1 -0
- package/dist/components/help/shell.js +1 -0
- package/dist/components/help/template.js +1 -0
- package/dist/components/hour-band/attrs.js +1 -0
- package/dist/components/hour-band/index.js +1 -0
- package/dist/components/hour-band/model.js +1 -0
- package/dist/components/hour-band/render.js +1 -0
- package/dist/components/hour-band/style.js +1 -0
- package/dist/components/index.d.ts +7 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +53 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/invoice-lines/attrs.js +1 -0
- package/dist/components/invoice-lines/index.js +1 -0
- package/dist/components/invoice-lines/model.js +1 -0
- package/dist/components/invoice-lines/render.js +1 -0
- package/dist/components/invoice-lines/style.js +1 -0
- package/dist/components/kanban-columns/attrs.d.ts +213 -0
- package/dist/components/kanban-columns/attrs.d.ts.map +1 -0
- package/dist/components/kanban-columns/attrs.js +242 -0
- package/dist/components/kanban-columns/attrs.js.map +1 -0
- package/dist/components/kanban-columns/index.d.ts +21 -0
- package/dist/components/kanban-columns/index.d.ts.map +1 -0
- package/dist/components/kanban-columns/index.js +20 -0
- package/dist/components/kanban-columns/index.js.map +1 -0
- package/dist/components/kanban-columns/model.d.ts +63 -0
- package/dist/components/kanban-columns/model.d.ts.map +1 -0
- package/dist/components/kanban-columns/model.js +251 -0
- package/dist/components/kanban-columns/model.js.map +1 -0
- package/dist/components/kanban-columns/render.d.ts +3 -0
- package/dist/components/kanban-columns/render.d.ts.map +1 -0
- package/dist/components/kanban-columns/render.js +209 -0
- package/dist/components/kanban-columns/render.js.map +1 -0
- package/dist/components/kanban-columns/runtime.d.ts +3 -0
- package/dist/components/kanban-columns/runtime.d.ts.map +1 -0
- package/dist/components/kanban-columns/runtime.js +228 -0
- package/dist/components/kanban-columns/runtime.js.map +1 -0
- package/dist/components/kanban-columns/style-grouped.d.ts +5 -0
- package/dist/components/kanban-columns/style-grouped.d.ts.map +1 -0
- package/dist/components/kanban-columns/style-grouped.js +145 -0
- package/dist/components/kanban-columns/style-grouped.js.map +1 -0
- package/dist/components/kanban-columns/style-narrow.d.ts +5 -0
- package/dist/components/kanban-columns/style-narrow.d.ts.map +1 -0
- package/dist/components/kanban-columns/style-narrow.js +49 -0
- package/dist/components/kanban-columns/style-narrow.js.map +1 -0
- package/dist/components/kanban-columns/style.d.ts +5 -0
- package/dist/components/kanban-columns/style.d.ts.map +1 -0
- package/dist/components/kanban-columns/style.js +328 -0
- package/dist/components/kanban-columns/style.js.map +1 -0
- package/dist/components/key-value-list/attrs.js +1 -0
- package/dist/components/key-value-list/index.js +1 -0
- package/dist/components/key-value-list/model.js +1 -0
- package/dist/components/key-value-list/render.js +1 -0
- package/dist/components/key-value-list/style.js +1 -0
- package/dist/components/ledger-rows/index.js +1 -0
- package/dist/components/ledger-rows/render.js +1 -0
- package/dist/components/ledger-rows/style.js +1 -0
- package/dist/components/multi-checks/attrs.js +1 -0
- package/dist/components/multi-checks/index.js +1 -0
- package/dist/components/multi-checks/model.js +1 -0
- package/dist/components/multi-checks/render.js +1 -0
- package/dist/components/multi-checks/runtime.js +1 -0
- package/dist/components/multi-checks/style.js +1 -0
- package/dist/components/note-block/attrs.js +1 -0
- package/dist/components/note-block/index.js +1 -0
- package/dist/components/note-block/model.js +1 -0
- package/dist/components/note-block/render.js +1 -0
- package/dist/components/note-block/style.js +1 -0
- package/dist/components/number-stepper/attrs.js +1 -0
- package/dist/components/number-stepper/index.js +1 -0
- package/dist/components/number-stepper/model.js +1 -0
- package/dist/components/number-stepper/render.js +1 -0
- package/dist/components/number-stepper/runtime.js +1 -0
- package/dist/components/number-stepper/style.js +1 -0
- package/dist/components/page/fact-strip.js +1 -0
- package/dist/components/page/index.js +1 -0
- package/dist/components/page/media.js +1 -0
- package/dist/components/page/shared.js +1 -0
- package/dist/components/page/style.js +1 -0
- package/dist/components/page/timeline.js +1 -0
- package/dist/components/page-bars/index.js +1 -0
- package/dist/components/page-bars/style.js +1 -0
- package/dist/components/page-head/attrs.js +1 -0
- package/dist/components/page-head/index.js +1 -0
- package/dist/components/page-head/model.js +1 -0
- package/dist/components/page-head/render.js +1 -0
- package/dist/components/page-head/style.js +1 -0
- package/dist/components/page-nav/index.js +1 -0
- package/dist/components/page-nav/style.js +1 -0
- package/dist/components/page-ui/index.js +1 -0
- package/dist/components/page-ui/toast.js +1 -0
- package/dist/components/photo-compare/attrs.js +1 -0
- package/dist/components/photo-compare/index.js +1 -0
- package/dist/components/photo-compare/model.js +1 -0
- package/dist/components/photo-compare/render.js +1 -0
- package/dist/components/photo-compare/runtime.js +1 -0
- package/dist/components/photo-compare/style.js +1 -0
- package/dist/components/photo-grid/attrs.js +1 -0
- package/dist/components/photo-grid/index.js +1 -0
- package/dist/components/photo-grid/model.js +1 -0
- package/dist/components/photo-grid/render.js +1 -0
- package/dist/components/photo-grid/style.js +1 -0
- package/dist/components/popover-menu/attrs.js +1 -0
- package/dist/components/popover-menu/index.js +1 -0
- package/dist/components/popover-menu/model.js +1 -0
- package/dist/components/popover-menu/render.js +1 -0
- package/dist/components/popover-menu/runtime.js +1 -0
- package/dist/components/popover-menu/style.js +1 -0
- package/dist/components/portion-gauge/attrs.d.ts +103 -0
- package/dist/components/portion-gauge/attrs.d.ts.map +1 -0
- package/dist/components/portion-gauge/attrs.js +108 -0
- package/dist/components/portion-gauge/attrs.js.map +1 -0
- package/dist/components/portion-gauge/fields.d.ts +26 -0
- package/dist/components/portion-gauge/fields.d.ts.map +1 -0
- package/dist/components/portion-gauge/fields.js +172 -0
- package/dist/components/portion-gauge/fields.js.map +1 -0
- package/dist/components/portion-gauge/index.d.ts +18 -0
- package/dist/components/portion-gauge/index.d.ts.map +1 -0
- package/dist/components/portion-gauge/index.js +16 -0
- package/dist/components/portion-gauge/index.js.map +1 -0
- package/dist/components/portion-gauge/model.d.ts +76 -0
- package/dist/components/portion-gauge/model.d.ts.map +1 -0
- package/dist/components/portion-gauge/model.js +127 -0
- package/dist/components/portion-gauge/model.js.map +1 -0
- package/dist/components/portion-gauge/render.d.ts +3 -0
- package/dist/components/portion-gauge/render.d.ts.map +1 -0
- package/dist/components/portion-gauge/render.js +158 -0
- package/dist/components/portion-gauge/render.js.map +1 -0
- package/dist/components/portion-gauge/style-gauge.d.ts +7 -0
- package/dist/components/portion-gauge/style-gauge.d.ts.map +1 -0
- package/dist/components/portion-gauge/style-gauge.js +154 -0
- package/dist/components/portion-gauge/style-gauge.js.map +1 -0
- package/dist/components/portion-gauge/style.d.ts +10 -0
- package/dist/components/portion-gauge/style.d.ts.map +1 -0
- package/dist/components/portion-gauge/style.js +293 -0
- package/dist/components/portion-gauge/style.js.map +1 -0
- package/dist/components/progress-list/attrs.js +1 -0
- package/dist/components/progress-list/index.js +1 -0
- package/dist/components/progress-list/model.js +1 -0
- package/dist/components/progress-list/render.js +1 -0
- package/dist/components/progress-list/style.js +1 -0
- package/dist/components/progress-ring/attrs.js +1 -0
- package/dist/components/progress-ring/index.js +1 -0
- package/dist/components/progress-ring/model.js +1 -0
- package/dist/components/progress-ring/render.js +1 -0
- package/dist/components/progress-ring/style.js +1 -0
- package/dist/components/punch-strip/index.js +1 -0
- package/dist/components/punch-strip/render.js +1 -0
- package/dist/components/punch-strip/style.js +1 -0
- package/dist/components/quick-capture/attrs.d.ts +181 -0
- package/dist/components/quick-capture/attrs.d.ts.map +1 -0
- package/dist/components/quick-capture/attrs.js +203 -0
- package/dist/components/quick-capture/attrs.js.map +1 -0
- package/dist/components/quick-capture/index.d.ts +23 -0
- package/dist/components/quick-capture/index.d.ts.map +1 -0
- package/dist/components/quick-capture/index.js +22 -0
- package/dist/components/quick-capture/index.js.map +1 -0
- package/dist/components/quick-capture/model.d.ts +34 -0
- package/dist/components/quick-capture/model.d.ts.map +1 -0
- package/dist/components/quick-capture/model.js +183 -0
- package/dist/components/quick-capture/model.js.map +1 -0
- package/dist/components/quick-capture/render.d.ts +3 -0
- package/dist/components/quick-capture/render.d.ts.map +1 -0
- package/dist/components/quick-capture/render.js +143 -0
- package/dist/components/quick-capture/render.js.map +1 -0
- package/dist/components/quick-capture/runtime.d.ts +3 -0
- package/dist/components/quick-capture/runtime.d.ts.map +1 -0
- package/dist/components/quick-capture/runtime.js +184 -0
- package/dist/components/quick-capture/runtime.js.map +1 -0
- package/dist/components/quick-capture/style-cells.d.ts +5 -0
- package/dist/components/quick-capture/style-cells.d.ts.map +1 -0
- package/dist/components/quick-capture/style-cells.js +108 -0
- package/dist/components/quick-capture/style-cells.js.map +1 -0
- package/dist/components/quick-capture/style-choices.d.ts +5 -0
- package/dist/components/quick-capture/style-choices.d.ts.map +1 -0
- package/dist/components/quick-capture/style-choices.js +132 -0
- package/dist/components/quick-capture/style-choices.js.map +1 -0
- package/dist/components/quick-capture/style-drawer.d.ts +5 -0
- package/dist/components/quick-capture/style-drawer.d.ts.map +1 -0
- package/dist/components/quick-capture/style-drawer.js +88 -0
- package/dist/components/quick-capture/style-drawer.js.map +1 -0
- package/dist/components/quick-capture/style.d.ts +5 -0
- package/dist/components/quick-capture/style.d.ts.map +1 -0
- package/dist/components/quick-capture/style.js +177 -0
- package/dist/components/quick-capture/style.js.map +1 -0
- package/dist/components/radar-profile/attrs.js +1 -1
- package/dist/components/radar-profile/attrs.js.map +1 -1
- package/dist/components/radar-profile/fields.d.ts +149 -0
- package/dist/components/radar-profile/fields.d.ts.map +1 -0
- package/dist/components/radar-profile/fields.js +77 -0
- package/dist/components/radar-profile/fields.js.map +1 -0
- package/dist/components/radar-profile/forms.d.ts +2 -140
- package/dist/components/radar-profile/forms.d.ts.map +1 -1
- package/dist/components/radar-profile/forms.js +50 -84
- package/dist/components/radar-profile/forms.js.map +1 -1
- package/dist/components/radar-profile/model.d.ts +2 -2
- package/dist/components/radar-profile/model.d.ts.map +1 -1
- package/dist/components/radar-profile/model.js +22 -2
- package/dist/components/radar-profile/model.js.map +1 -1
- package/dist/components/radar-profile/render.d.ts.map +1 -1
- package/dist/components/radar-profile/render.js +8 -5
- package/dist/components/radar-profile/render.js.map +1 -1
- package/dist/components/radar-profile/scale.d.ts +0 -2
- package/dist/components/radar-profile/scale.d.ts.map +1 -1
- package/dist/components/radar-profile/scale.js +0 -3
- package/dist/components/radar-profile/scale.js.map +1 -1
- package/dist/components/radar-profile/style-readouts.d.ts +5 -0
- package/dist/components/radar-profile/style-readouts.d.ts.map +1 -0
- package/dist/components/radar-profile/style-readouts.js +257 -0
- package/dist/components/radar-profile/style-readouts.js.map +1 -0
- package/dist/components/radar-profile/style.d.ts.map +1 -1
- package/dist/components/radar-profile/style.js +19 -232
- package/dist/components/radar-profile/style.js.map +1 -1
- package/dist/components/radio-cards/attrs.js +1 -0
- package/dist/components/radio-cards/index.js +1 -0
- package/dist/components/radio-cards/model.js +1 -0
- package/dist/components/radio-cards/render.js +1 -0
- package/dist/components/radio-cards/runtime.js +1 -0
- package/dist/components/radio-cards/style.js +1 -0
- package/dist/components/range-bar/attrs.js +1 -0
- package/dist/components/range-bar/index.js +1 -0
- package/dist/components/range-bar/model.js +1 -0
- package/dist/components/range-bar/render.js +1 -0
- package/dist/components/range-bar/style.js +1 -0
- package/dist/components/rank-list/attrs.js +1 -0
- package/dist/components/rank-list/index.js +1 -0
- package/dist/components/rank-list/model.js +1 -0
- package/dist/components/rank-list/render.js +1 -0
- package/dist/components/rank-list/style.js +1 -0
- package/dist/components/rating-row/attrs.js +1 -0
- package/dist/components/rating-row/index.js +1 -0
- package/dist/components/rating-row/model.js +1 -0
- package/dist/components/rating-row/render.js +1 -0
- package/dist/components/rating-row/runtime.js +1 -0
- package/dist/components/rating-row/style.js +1 -0
- package/dist/components/relation-picker/attrs.d.ts +196 -0
- package/dist/components/relation-picker/attrs.d.ts.map +1 -0
- package/dist/components/relation-picker/attrs.js +240 -0
- package/dist/components/relation-picker/attrs.js.map +1 -0
- package/dist/components/relation-picker/index.d.ts +20 -0
- package/dist/components/relation-picker/index.d.ts.map +1 -0
- package/dist/components/relation-picker/index.js +19 -0
- package/dist/components/relation-picker/index.js.map +1 -0
- package/dist/components/relation-picker/model.d.ts +85 -0
- package/dist/components/relation-picker/model.d.ts.map +1 -0
- package/dist/components/relation-picker/model.js +189 -0
- package/dist/components/relation-picker/model.js.map +1 -0
- package/dist/components/relation-picker/render.d.ts +3 -0
- package/dist/components/relation-picker/render.d.ts.map +1 -0
- package/dist/components/relation-picker/render.js +244 -0
- package/dist/components/relation-picker/render.js.map +1 -0
- package/dist/components/relation-picker/runtime.d.ts +3 -0
- package/dist/components/relation-picker/runtime.d.ts.map +1 -0
- package/dist/components/relation-picker/runtime.js +260 -0
- package/dist/components/relation-picker/runtime.js.map +1 -0
- package/dist/components/relation-picker/style-forms.d.ts +5 -0
- package/dist/components/relation-picker/style-forms.d.ts.map +1 -0
- package/dist/components/relation-picker/style-forms.js +190 -0
- package/dist/components/relation-picker/style-forms.js.map +1 -0
- package/dist/components/relation-picker/style-list.d.ts +5 -0
- package/dist/components/relation-picker/style-list.d.ts.map +1 -0
- package/dist/components/relation-picker/style-list.js +146 -0
- package/dist/components/relation-picker/style-list.js.map +1 -0
- package/dist/components/relation-picker/style.d.ts +5 -0
- package/dist/components/relation-picker/style.d.ts.map +1 -0
- package/dist/components/relation-picker/style.js +308 -0
- package/dist/components/relation-picker/style.js.map +1 -0
- package/dist/components/reminder-setter/attrs.d.ts +240 -0
- package/dist/components/reminder-setter/attrs.d.ts.map +1 -0
- package/dist/components/reminder-setter/attrs.js +268 -0
- package/dist/components/reminder-setter/attrs.js.map +1 -0
- package/dist/components/reminder-setter/index.d.ts +22 -0
- package/dist/components/reminder-setter/index.d.ts.map +1 -0
- package/dist/components/reminder-setter/index.js +21 -0
- package/dist/components/reminder-setter/index.js.map +1 -0
- package/dist/components/reminder-setter/model-track.d.ts +29 -0
- package/dist/components/reminder-setter/model-track.d.ts.map +1 -0
- package/dist/components/reminder-setter/model-track.js +110 -0
- package/dist/components/reminder-setter/model-track.js.map +1 -0
- package/dist/components/reminder-setter/model.d.ts +51 -0
- package/dist/components/reminder-setter/model.d.ts.map +1 -0
- package/dist/components/reminder-setter/model.js +110 -0
- package/dist/components/reminder-setter/model.js.map +1 -0
- package/dist/components/reminder-setter/render.d.ts +3 -0
- package/dist/components/reminder-setter/render.d.ts.map +1 -0
- package/dist/components/reminder-setter/render.js +221 -0
- package/dist/components/reminder-setter/render.js.map +1 -0
- package/dist/components/reminder-setter/rules.d.ts +34 -0
- package/dist/components/reminder-setter/rules.d.ts.map +1 -0
- package/dist/components/reminder-setter/rules.js +121 -0
- package/dist/components/reminder-setter/rules.js.map +1 -0
- package/dist/components/reminder-setter/runtime.d.ts +3 -0
- package/dist/components/reminder-setter/runtime.d.ts.map +1 -0
- package/dist/components/reminder-setter/runtime.js +264 -0
- package/dist/components/reminder-setter/runtime.js.map +1 -0
- package/dist/components/reminder-setter/style-track.d.ts +3 -0
- package/dist/components/reminder-setter/style-track.d.ts.map +1 -0
- package/dist/components/reminder-setter/style-track.js +189 -0
- package/dist/components/reminder-setter/style-track.js.map +1 -0
- package/dist/components/reminder-setter/style.d.ts +5 -0
- package/dist/components/reminder-setter/style.d.ts.map +1 -0
- package/dist/components/reminder-setter/style.js +306 -0
- package/dist/components/reminder-setter/style.js.map +1 -0
- package/dist/components/result-row/attrs.js +1 -0
- package/dist/components/result-row/index.js +1 -0
- package/dist/components/result-row/model.js +1 -0
- package/dist/components/result-row/render.js +1 -0
- package/dist/components/result-row/style.js +1 -0
- package/dist/components/scale-bar/index.js +1 -0
- package/dist/components/scale-bar/render.js +1 -0
- package/dist/components/scale-bar/style.js +1 -0
- package/dist/components/scatter-fit/attrs.js +1 -0
- package/dist/components/scatter-fit/forms.js +1 -0
- package/dist/components/scatter-fit/index.js +1 -0
- package/dist/components/scatter-fit/model.d.ts.map +1 -1
- package/dist/components/scatter-fit/model.js +68 -18
- package/dist/components/scatter-fit/model.js.map +1 -1
- package/dist/components/scatter-fit/render.js +1 -0
- package/dist/components/scatter-fit/scale.js +1 -0
- package/dist/components/scatter-fit/style-forms.js +1 -0
- package/dist/components/scatter-fit/style.js +1 -0
- package/dist/components/search-field/attrs.js +1 -0
- package/dist/components/search-field/index.js +1 -0
- package/dist/components/search-field/model.js +1 -0
- package/dist/components/search-field/render.js +1 -0
- package/dist/components/search-field/runtime.js +1 -0
- package/dist/components/search-field/style.js +1 -0
- package/dist/components/section-head/attrs.js +1 -0
- package/dist/components/section-head/index.js +1 -0
- package/dist/components/section-head/model.js +1 -0
- package/dist/components/section-head/render.js +1 -0
- package/dist/components/section-head/style.js +1 -0
- package/dist/components/shared/escape.js +1 -0
- package/dist/components/shared/typography.js +1 -0
- package/dist/components/shared/validate.js +1 -0
- package/dist/components/sheet-frame/index.js +1 -0
- package/dist/components/sheet-frame/render.js +1 -0
- package/dist/components/sheet-frame/style.js +1 -0
- package/dist/components/skeleton/attrs.js +1 -0
- package/dist/components/skeleton/index.js +1 -0
- package/dist/components/skeleton/model.js +1 -0
- package/dist/components/skeleton/render.js +1 -0
- package/dist/components/skeleton/style.js +1 -0
- package/dist/components/skin/contract.d.ts +1 -1
- package/dist/components/skin/contract.js +1 -0
- package/dist/components/skin/index.js +1 -0
- package/dist/components/skin/skins/broadsheet.js +1 -0
- package/dist/components/skin/skins/ink.js +1 -0
- package/dist/components/skin/skins/neutral.js +1 -0
- package/dist/components/skin/skins/paper.js +1 -0
- package/dist/components/slider-row/attrs.js +1 -0
- package/dist/components/slider-row/index.js +1 -0
- package/dist/components/slider-row/model.js +1 -0
- package/dist/components/slider-row/render.js +1 -0
- package/dist/components/slider-row/runtime.js +1 -0
- package/dist/components/slider-row/style.js +1 -0
- package/dist/components/small-multiples/attrs.js +1 -0
- package/dist/components/small-multiples/index.js +1 -0
- package/dist/components/small-multiples/model.d.ts.map +1 -1
- package/dist/components/small-multiples/model.js +43 -0
- package/dist/components/small-multiples/model.js.map +1 -1
- package/dist/components/small-multiples/render.js +1 -0
- package/dist/components/small-multiples/scale.js +1 -0
- package/dist/components/small-multiples/style.js +1 -0
- package/dist/components/sort-toggle/attrs.js +1 -0
- package/dist/components/sort-toggle/index.js +1 -0
- package/dist/components/sort-toggle/model.js +1 -0
- package/dist/components/sort-toggle/render.js +1 -0
- package/dist/components/sort-toggle/runtime.js +1 -0
- package/dist/components/sort-toggle/style.js +1 -0
- package/dist/components/spread-dist/attrs.d.ts +56 -12
- package/dist/components/spread-dist/attrs.d.ts.map +1 -1
- package/dist/components/spread-dist/attrs.js +72 -12
- package/dist/components/spread-dist/attrs.js.map +1 -1
- package/dist/components/spread-dist/forms.d.ts +53 -10
- package/dist/components/spread-dist/forms.d.ts.map +1 -1
- package/dist/components/spread-dist/forms.js +104 -7
- package/dist/components/spread-dist/forms.js.map +1 -1
- package/dist/components/spread-dist/index.d.ts +5 -4
- package/dist/components/spread-dist/index.d.ts.map +1 -1
- package/dist/components/spread-dist/index.js +5 -3
- package/dist/components/spread-dist/index.js.map +1 -1
- package/dist/components/spread-dist/model.d.ts +1 -1
- package/dist/components/spread-dist/model.d.ts.map +1 -1
- package/dist/components/spread-dist/model.js +154 -4
- package/dist/components/spread-dist/model.js.map +1 -1
- package/dist/components/spread-dist/render.d.ts.map +1 -1
- package/dist/components/spread-dist/render.js +79 -10
- package/dist/components/spread-dist/render.js.map +1 -1
- package/dist/components/spread-dist/scale.d.ts +15 -3
- package/dist/components/spread-dist/scale.d.ts.map +1 -1
- package/dist/components/spread-dist/scale.js +50 -15
- package/dist/components/spread-dist/scale.js.map +1 -1
- package/dist/components/spread-dist/style-box.d.ts +5 -0
- package/dist/components/spread-dist/style-box.d.ts.map +1 -0
- package/dist/components/spread-dist/style-box.js +252 -0
- package/dist/components/spread-dist/style-box.js.map +1 -0
- package/dist/components/spread-dist/style-quantile.d.ts +5 -0
- package/dist/components/spread-dist/style-quantile.d.ts.map +1 -0
- package/dist/components/spread-dist/style-quantile.js +97 -0
- package/dist/components/spread-dist/style-quantile.js.map +1 -0
- package/dist/components/spread-dist/style.d.ts.map +1 -1
- package/dist/components/spread-dist/style.js +28 -87
- package/dist/components/spread-dist/style.js.map +1 -1
- package/dist/components/stacked-bar/attrs.js +1 -0
- package/dist/components/stacked-bar/index.js +1 -0
- package/dist/components/stacked-bar/model.js +1 -0
- package/dist/components/stacked-bar/render.js +1 -0
- package/dist/components/stacked-bar/style.js +1 -0
- package/dist/components/stat-inline/attrs.js +1 -0
- package/dist/components/stat-inline/index.js +1 -0
- package/dist/components/stat-inline/model.js +1 -0
- package/dist/components/stat-inline/render.js +1 -0
- package/dist/components/stat-inline/style.js +1 -0
- package/dist/components/status-row/attrs.js +1 -0
- package/dist/components/status-row/index.js +1 -0
- package/dist/components/status-row/model.js +1 -0
- package/dist/components/status-row/render.js +1 -0
- package/dist/components/status-row/style.js +1 -0
- package/dist/components/step-flow/attrs.js +1 -0
- package/dist/components/step-flow/index.js +1 -0
- package/dist/components/step-flow/model.js +1 -0
- package/dist/components/step-flow/render.js +1 -0
- package/dist/components/step-flow/style.js +1 -0
- package/dist/components/streak-badge/attrs.js +1 -0
- package/dist/components/streak-badge/index.js +1 -0
- package/dist/components/streak-badge/model.js +1 -0
- package/dist/components/streak-badge/render.js +1 -0
- package/dist/components/streak-badge/style.js +1 -0
- package/dist/components/style/action-bar.js +1 -0
- package/dist/components/style/copy-button.js +1 -0
- package/dist/components/style/empty-state.js +1 -0
- package/dist/components/style/error-receipt.js +1 -0
- package/dist/components/style/help-shell.js +1 -0
- package/dist/components/style/index.js +1 -0
- package/dist/components/style/parts.js +1 -0
- package/dist/components/style/sheet.js +1 -0
- package/dist/components/style/status-badge.js +1 -0
- package/dist/components/style/toast.js +1 -0
- package/dist/components/style/tokens.js +1 -0
- package/dist/components/sub-list/attrs.js +1 -0
- package/dist/components/sub-list/index.js +1 -0
- package/dist/components/sub-list/model.js +1 -0
- package/dist/components/sub-list/render.js +1 -0
- package/dist/components/sub-list/style.js +1 -0
- package/dist/components/summary-head/index.js +1 -0
- package/dist/components/summary-head/render.js +1 -0
- package/dist/components/summary-head/style.js +1 -0
- package/dist/components/switch-row/attrs.js +1 -0
- package/dist/components/switch-row/index.js +1 -0
- package/dist/components/switch-row/model.js +1 -0
- package/dist/components/switch-row/render.js +1 -0
- package/dist/components/switch-row/runtime.js +1 -0
- package/dist/components/switch-row/style.js +1 -0
- package/dist/components/sync-status/attrs.js +1 -0
- package/dist/components/sync-status/index.js +1 -0
- package/dist/components/sync-status/model.js +1 -0
- package/dist/components/sync-status/render.js +1 -0
- package/dist/components/sync-status/runtime.js +1 -0
- package/dist/components/sync-status/style.js +1 -0
- package/dist/components/task-list/attrs.js +1 -0
- package/dist/components/task-list/index.js +1 -0
- package/dist/components/task-list/model.js +1 -0
- package/dist/components/task-list/render.js +1 -0
- package/dist/components/task-list/runtime.js +1 -0
- package/dist/components/task-list/style.js +1 -0
- package/dist/components/template/fill.js +1 -0
- package/dist/components/template/index.js +1 -0
- package/dist/components/template/markers.d.ts +1 -1
- package/dist/components/template/markers.js +2 -1
- package/dist/components/template/shared.js +1 -0
- package/dist/components/text/api.js +1 -0
- package/dist/components/text/formats.js +1 -0
- package/dist/components/text/index.js +1 -0
- package/dist/components/text/input.js +1 -0
- package/dist/components/text/log.js +1 -0
- package/dist/components/text/rows.js +1 -0
- package/dist/components/text/shared.js +1 -0
- package/dist/components/timer-card/attrs.js +1 -0
- package/dist/components/timer-card/index.js +1 -0
- package/dist/components/timer-card/model.js +1 -0
- package/dist/components/timer-card/render.js +1 -0
- package/dist/components/timer-card/runtime.js +1 -0
- package/dist/components/timer-card/style.js +1 -0
- package/dist/components/toast-card/attrs.js +1 -0
- package/dist/components/toast-card/index.js +1 -0
- package/dist/components/toast-card/model.js +1 -0
- package/dist/components/toast-card/render.js +1 -0
- package/dist/components/toast-card/runtime.js +1 -0
- package/dist/components/toast-card/style.js +1 -0
- package/dist/components/tooltip/attrs.d.ts +11 -4
- package/dist/components/tooltip/attrs.d.ts.map +1 -1
- package/dist/components/tooltip/attrs.js +12 -4
- package/dist/components/tooltip/attrs.js.map +1 -1
- package/dist/components/tooltip/index.d.ts +2 -1
- package/dist/components/tooltip/index.d.ts.map +1 -1
- package/dist/components/tooltip/index.js +3 -1
- package/dist/components/tooltip/index.js.map +1 -1
- package/dist/components/tooltip/model.js +1 -0
- package/dist/components/tooltip/render.d.ts.map +1 -1
- package/dist/components/tooltip/render.js +4 -2
- package/dist/components/tooltip/render.js.map +1 -1
- package/dist/components/tooltip/runtime.d.ts.map +1 -1
- package/dist/components/tooltip/runtime.js +28 -6
- package/dist/components/tooltip/runtime.js.map +1 -1
- package/dist/components/tooltip/style.d.ts.map +1 -1
- package/dist/components/tooltip/style.js +11 -4
- package/dist/components/tooltip/style.js.map +1 -1
- package/dist/components/undo-timeline/attrs.d.ts +1 -1
- package/dist/components/undo-timeline/attrs.d.ts.map +1 -1
- package/dist/components/undo-timeline/attrs.js +1 -1
- package/dist/components/undo-timeline/attrs.js.map +1 -1
- package/dist/components/undo-timeline/index.d.ts +1 -1
- package/dist/components/undo-timeline/index.d.ts.map +1 -1
- package/dist/components/undo-timeline/index.js +1 -1
- package/dist/components/undo-timeline/index.js.map +1 -1
- package/dist/components/undo-timeline/keys.d.ts +17 -0
- package/dist/components/undo-timeline/keys.d.ts.map +1 -0
- package/dist/components/undo-timeline/keys.js +47 -0
- package/dist/components/undo-timeline/keys.js.map +1 -0
- package/dist/components/undo-timeline/model.d.ts.map +1 -1
- package/dist/components/undo-timeline/model.js +20 -1
- package/dist/components/undo-timeline/model.js.map +1 -1
- package/dist/components/undo-timeline/render.d.ts.map +1 -1
- package/dist/components/undo-timeline/render.js +10 -2
- package/dist/components/undo-timeline/render.js.map +1 -1
- package/dist/components/undo-timeline/runtime.d.ts.map +1 -1
- package/dist/components/undo-timeline/runtime.js +19 -12
- package/dist/components/undo-timeline/runtime.js.map +1 -1
- package/dist/components/undo-timeline/style-impact.d.ts.map +1 -1
- package/dist/components/undo-timeline/style-impact.js +2 -4
- package/dist/components/undo-timeline/style-impact.js.map +1 -1
- package/dist/components/undo-timeline/style-track.d.ts.map +1 -1
- package/dist/components/undo-timeline/style-track.js +5 -0
- package/dist/components/undo-timeline/style-track.js.map +1 -1
- package/dist/components/undo-timeline/text.d.ts +0 -2
- package/dist/components/undo-timeline/text.d.ts.map +1 -1
- package/dist/components/undo-timeline/text.js +0 -2
- package/dist/components/undo-timeline/text.js.map +1 -1
- package/dist/components/window-picker/attrs.js +1 -0
- package/dist/components/window-picker/index.js +1 -0
- package/dist/components/window-picker/model.js +1 -0
- package/dist/components/window-picker/render.js +1 -0
- package/dist/components/window-picker/runtime.js +1 -0
- package/dist/components/window-picker/style.js +1 -0
- package/dist/components/wizard-shell/attrs.d.ts +2 -1
- package/dist/components/wizard-shell/attrs.d.ts.map +1 -1
- package/dist/components/wizard-shell/attrs.js +3 -1
- package/dist/components/wizard-shell/attrs.js.map +1 -1
- package/dist/components/wizard-shell/index.js +1 -0
- package/dist/components/wizard-shell/model.d.ts.map +1 -1
- package/dist/components/wizard-shell/model.js +36 -0
- package/dist/components/wizard-shell/model.js.map +1 -1
- package/dist/components/wizard-shell/render.js +1 -0
- package/dist/components/wizard-shell/runtime.js +1 -0
- package/dist/components/wizard-shell/style-answer.js +1 -0
- package/dist/components/wizard-shell/style.js +1 -0
- package/dist/components//346/270/205/345/215/225.d.ts +2 -2
- package/dist/components//346/270/205/345/215/225.d.ts.map +1 -1
- package/dist/components//346/270/205/345/215/225.js +68 -54
- package/dist/components//346/270/205/345/215/225.js.map +1 -1
- package/dist/contract.js +1 -0
- package/dist/controls.js +1 -0
- package/dist/font.js +1 -0
- package/dist/help.js +1 -0
- package/dist/helpShell.d.ts.map +1 -1
- package/dist/helpShell.js +3 -2
- package/dist/helpShell.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/injector.js +1 -0
- package/dist/output/saveHtml.js +1 -0
- package/dist/pageUi.js +1 -0
- package/dist/spec/charts.js +1 -0
- package/dist/spec/controls.js +1 -0
- package/dist/spec/help.d.ts +59 -0
- package/dist/spec/help.d.ts.map +1 -1
- package/dist/spec/help.js +20 -0
- package/dist/spec/help.js.map +1 -1
- package/dist/spec/index.js +2 -1
- package/dist/spec/index.js.map +1 -1
- package/dist/spec/style.js +1 -0
- package/dist/spec/template.d.ts +1 -1
- package/dist/spec/template.d.ts.map +1 -1
- package/dist/spec/template.js +2 -1
- package/dist/spec/template.js.map +1 -1
- package/dist/spec/text.d.ts +1 -1
- package/dist/spec/text.js +2 -1
- package/dist/style.js +1 -0
- package/dist/template.js +1 -0
- package/dist/text.js +1 -0
- package/dist/ui.js +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/** portion-gauge · **入参小件**(形状校验与数字写法;`model.ts` 只管「算什么」,本文件管「收不收」)。
|
|
2
|
+
*
|
|
3
|
+
* 为什么独立成件:本件两档(换算三栏/量感条)的行数与量感那一份都要逐字段校验,攒在 `model.ts` 里
|
|
4
|
+
* 过了本包的行数告警线(350 行/LF 口径,见 `packages/base-render/AGENTS.md`)。分开之后:
|
|
5
|
+
* · **一个规矩只有一处**:读数怎么闸、键表怎么列、数怎么写,都只在本文件里;
|
|
6
|
+
* · **没有环**:本文件只依赖 `attrs.ts` 与 `shared/validate.ts`,`model.ts` 单向依赖它。
|
|
7
|
+
*
|
|
8
|
+
* 报错句的口径(别处也会读它):每句都点名**路径**(`portion-gauge: input.rows[2].grams`)与**为什么**。
|
|
9
|
+
*/
|
|
10
|
+
import { assertDenseArray, assertPlainObject, badInput, optText, reqText } from '../shared/validate.js';
|
|
11
|
+
import { PORTION_GAUGE_MAX_ROWS, PORTION_GAUGE_MIN_ROWS, } from './attrs.js';
|
|
12
|
+
/** 必填文本:非空串**且不是全空白**(全空白的标题会在屏上留一块空白,那是“看得到的错”)。 */
|
|
13
|
+
export function reqRealText(value, field) {
|
|
14
|
+
const text = reqText(value, field);
|
|
15
|
+
if (text.trim() === '')
|
|
16
|
+
badInput(field + ' 必须是真正的文本(全空白不算)');
|
|
17
|
+
return text;
|
|
18
|
+
}
|
|
19
|
+
/** 可选文本:空串=未给(与全层 `optText` 同口径);**全空白=拒**(那会在屏上留一块空白)。 */
|
|
20
|
+
export function optRealText(value, field) {
|
|
21
|
+
const text = optText(value, field);
|
|
22
|
+
if (text !== undefined && text.trim() === '')
|
|
23
|
+
badInput(field + ' 必须是真正的文本(全空白不算)');
|
|
24
|
+
return text;
|
|
25
|
+
}
|
|
26
|
+
/** 可加性的量级上界(`Number.MAX_VALUE ÷ 2`)。**判据是「相加会不会溢出」,不是「好不好读」**:
|
|
27
|
+
* `|a| + |b| > Number.MAX_VALUE` 那一刻就是双精度的 `Infinity`,屏上写出 `1e+308` 这种读不出来的东西
|
|
28
|
+
* (本件实测:`grams = 1e308` 原样渲成 `1e+308 g`)。故 `1e21`/`1e-7`(十进制写法与指数写法的分界那一档)**照旧合法**。 */
|
|
29
|
+
const PORTION_GAUGE_MAGNITUDE_MAX = Number.MAX_VALUE / 2;
|
|
30
|
+
/** 读数的量级闸(上界住 `PORTION_GAUGE_MAGNITUDE_MAX`,那一档的数是**有限的**:`Number.isFinite(1e308)` 为真)。 */
|
|
31
|
+
function reqMagnitude(n, field) {
|
|
32
|
+
if (Math.abs(n) > PORTION_GAUGE_MAGNITUDE_MAX) {
|
|
33
|
+
badInput(field + ' 的量级太大:两笔同量级的读数相加就溢出成 `Infinity`'
|
|
34
|
+
+ '(图上会写出 `1e+308` 这类读不出来的数;读数至多到 `Number.MAX_VALUE ÷ 2` 那一档)');
|
|
35
|
+
}
|
|
36
|
+
return n;
|
|
37
|
+
}
|
|
38
|
+
/** 只许入参表里写着的键:多给一个键(多半是打错名)=拒,不静默吞掉(先例:`relation-picker`/
|
|
39
|
+
* `kanban-columns` 的同名小件)。**两条都会被查到**(只走 `Object.keys` 会漏一半):
|
|
40
|
+
* · `Object.getOwnPropertyNames` —— 自有的**全部**键,含**不可枚举**的;
|
|
41
|
+
* · `for…in` —— 走**整条原型链**(`Object.create({ zzUnknown: 1 })` 那种继承来的键就是这一路)。 */
|
|
42
|
+
export function assertKeys(raw, allowed, field) {
|
|
43
|
+
const bad = [];
|
|
44
|
+
const note = (key) => {
|
|
45
|
+
if (!allowed.includes(key) && !bad.includes(key))
|
|
46
|
+
bad.push(key);
|
|
47
|
+
};
|
|
48
|
+
for (const key of Object.getOwnPropertyNames(raw))
|
|
49
|
+
note(key);
|
|
50
|
+
for (const key in raw)
|
|
51
|
+
note(key);
|
|
52
|
+
if (bad.length > 0) {
|
|
53
|
+
badInput(field + ' 里没有 `' + bad.join('`/`') + '` 这个键(入参表以外的键一律拒:写错的键静默吞掉会让'
|
|
54
|
+
+ '调用方以为自己设上了;继承来的与不可枚举的键同样算)');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/** 顶层入参表的键(照 `attrs.ts` 的 `PortionGaugeInput` 列全:两个形态的字段都在表里——
|
|
58
|
+
* 形状决定读哪一组,不读的那一组照收不误,**别把合法入参误拒**)。 */
|
|
59
|
+
export const INPUT_KEYS = ['title', 'form', 'stamp', 'tail', 'rows', 'gauge', 'note', 'missingCount', 'extraClass'];
|
|
60
|
+
/** 换算一行的键(照 `attrs.ts` 的 `PortionGaugeRow`)。 */
|
|
61
|
+
const ROW_KEYS = ['name', 'kind', 'recipe', 'grams', 'basis', 'toLabel', 'shareOf', 'sharePct'];
|
|
62
|
+
/** A 档那一份量感的键(照 `attrs.ts` 的 `PortionGaugeGauge`)。 */
|
|
63
|
+
const GAUGE_KEYS = ['name', 'usedPct', 'capText', 'refText', 'refPct', 'equiv'];
|
|
64
|
+
/** 三位分组(`1200` → `1,200`;负号留在最前;小数部分原样)。
|
|
65
|
+
*
|
|
66
|
+
* **指数写法原样返回**:量级大到(或小到)`String()` 只给指数写法时(`1e+21`/`1e-7`),
|
|
67
|
+
* 按三位插逗号会把它切成 `1e,+21`/`1,e-7`——那是**读不出来的数**(同族先例
|
|
68
|
+
* `spread-dist/scale.ts` 的 `numText()`)。**非有限值一律 `badInput`**:写不出数的东西不上屏。 */
|
|
69
|
+
export function groupNum(value) {
|
|
70
|
+
if (!Number.isFinite(value))
|
|
71
|
+
badInput('portion-gauge: 要写的数必须是有限数(读不到 ' + String(value) + ')');
|
|
72
|
+
const s = String(value);
|
|
73
|
+
if (s.includes('e') || s.includes('E'))
|
|
74
|
+
return s;
|
|
75
|
+
const dot = s.indexOf('.');
|
|
76
|
+
const head = dot < 0 ? s : s.slice(0, dot);
|
|
77
|
+
const frac = dot < 0 ? '' : s.slice(dot);
|
|
78
|
+
const neg = head.startsWith('-');
|
|
79
|
+
const body = neg ? head.slice(1) : head;
|
|
80
|
+
let out = '';
|
|
81
|
+
for (let i = 0; i < body.length; i += 1) {
|
|
82
|
+
if (i > 0 && (body.length - i) % 3 === 0)
|
|
83
|
+
out += ',';
|
|
84
|
+
out += body[i];
|
|
85
|
+
}
|
|
86
|
+
return (neg ? '-' : '') + out + frac;
|
|
87
|
+
}
|
|
88
|
+
/** 一行的克数(有限数、量级可读、且大于 0):0 与负数不是“一行菜的量”,小数照收(`12.5 g`)。 */
|
|
89
|
+
function reqGrams(value, field) {
|
|
90
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
91
|
+
badInput(field + ' 必须是有限数(`NaN`/`Infinity` 这类"写不成数的东西"一律拒)');
|
|
92
|
+
}
|
|
93
|
+
if (!(value > 0))
|
|
94
|
+
badInput(field + ' 必须大于 0(一行菜没有克数就谈不上换算)');
|
|
95
|
+
return reqMagnitude(value, field);
|
|
96
|
+
}
|
|
97
|
+
/** 占比(有限数且落在 0…100):越界的占比画出来会顶出轨道,不静默夹。 */
|
|
98
|
+
function reqSharePct(value, field) {
|
|
99
|
+
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
100
|
+
badInput(field + ' 必须是有限数');
|
|
101
|
+
if (!(value >= 0 && value <= 100))
|
|
102
|
+
badInput(field + ' 必须落在 0 到 100 之间(越界的占比会顶出轨道)');
|
|
103
|
+
return reqMagnitude(Math.round(value * 10) / 10, field);
|
|
104
|
+
}
|
|
105
|
+
/** 换算各行:1–8 行;每一行的名字、菜谱写法、克数、占比项、占比都得到位。 */
|
|
106
|
+
export function reqRows(value) {
|
|
107
|
+
if (!Array.isArray(value) || value.length < PORTION_GAUGE_MIN_ROWS) {
|
|
108
|
+
badInput('portion-gauge: input.rows 至少 ' + String(PORTION_GAUGE_MIN_ROWS)
|
|
109
|
+
+ ' 行(一道菜也要换算,请调用方至少给一行)');
|
|
110
|
+
}
|
|
111
|
+
if (value.length > PORTION_GAUGE_MAX_ROWS) {
|
|
112
|
+
badInput('portion-gauge: input.rows 最多 ' + String(PORTION_GAUGE_MAX_ROWS)
|
|
113
|
+
+ ' 行(再多一屏读不完,请调用方先按餐分组)');
|
|
114
|
+
}
|
|
115
|
+
assertDenseArray(value, 'portion-gauge: input.rows');
|
|
116
|
+
return value.map((item, i) => {
|
|
117
|
+
const at = 'portion-gauge: input.rows[' + String(i) + ']';
|
|
118
|
+
assertPlainObject(item, at);
|
|
119
|
+
const r = item;
|
|
120
|
+
assertKeys(r, ROW_KEYS, at);
|
|
121
|
+
const row = {
|
|
122
|
+
name: reqRealText(r.name, at + '.name'),
|
|
123
|
+
recipe: reqRealText(r.recipe, at + '.recipe'),
|
|
124
|
+
grams: reqGrams(r.grams, at + '.grams'),
|
|
125
|
+
shareOf: reqRealText(r.shareOf, at + '.shareOf'),
|
|
126
|
+
sharePct: reqSharePct(r.sharePct, at + '.sharePct'),
|
|
127
|
+
};
|
|
128
|
+
const kind = optRealText(r.kind, at + '.kind');
|
|
129
|
+
const basis = optRealText(r.basis, at + '.basis');
|
|
130
|
+
const toLabel = optRealText(r.toLabel, at + '.toLabel');
|
|
131
|
+
return {
|
|
132
|
+
...row,
|
|
133
|
+
...(kind === undefined ? {} : { kind }),
|
|
134
|
+
...(basis === undefined ? {} : { basis }),
|
|
135
|
+
...(toLabel === undefined ? {} : { toLabel }),
|
|
136
|
+
};
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/** 缺换算有几样(非负整数、量级可读;0=没有缺的)。**写法与克数同一处出**:屏上那个数经 `groupNum()`。 */
|
|
140
|
+
export function reqMissingCount(value) {
|
|
141
|
+
if (value === undefined)
|
|
142
|
+
return 0;
|
|
143
|
+
if (typeof value !== 'number' || !Number.isInteger(value) || value < 0) {
|
|
144
|
+
badInput('portion-gauge: input.missingCount 必须是非负整数(缺几样就写几样,没有缺的就不给)');
|
|
145
|
+
}
|
|
146
|
+
return reqMagnitude(value, 'portion-gauge: input.missingCount');
|
|
147
|
+
}
|
|
148
|
+
/** A 档那一份量感:名字、已用几成、上限那个量必给;**建议那句与它落的位置成对给**。 */
|
|
149
|
+
export function reqGauge(value) {
|
|
150
|
+
assertPlainObject(value, 'portion-gauge: input.gauge');
|
|
151
|
+
const g = value;
|
|
152
|
+
const at = 'portion-gauge: input.gauge';
|
|
153
|
+
assertKeys(g, GAUGE_KEYS, at);
|
|
154
|
+
const name = reqRealText(g.name, at + '.name');
|
|
155
|
+
const usedPct = reqSharePct(g.usedPct, at + '.usedPct');
|
|
156
|
+
const capText = reqRealText(g.capText, at + '.capText');
|
|
157
|
+
const refText = optRealText(g.refText, at + '.refText');
|
|
158
|
+
const refPct = g.refPct === undefined ? undefined : reqSharePct(g.refPct, at + '.refPct');
|
|
159
|
+
if ((refText === undefined) !== (refPct === undefined)) {
|
|
160
|
+
badInput(at + ' 的一餐建议要**成对**给(`refText` 那句字与 `refPct` 它落在几成处)——'
|
|
161
|
+
+ '只给一样,那句参照要么没地方挂,要么挂在编出来的位置上');
|
|
162
|
+
}
|
|
163
|
+
const equiv = optRealText(g.equiv, at + '.equiv');
|
|
164
|
+
return {
|
|
165
|
+
name,
|
|
166
|
+
usedPct,
|
|
167
|
+
capText,
|
|
168
|
+
...(refText === undefined ? {} : { refText, refPct }),
|
|
169
|
+
...(equiv === undefined ? {} : { equiv }),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/components/portion-gauge/fields.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** portion-gauge · **组件出口**(本组件对外的唯一名字面)。
|
|
2
|
+
*
|
|
3
|
+
* 出口:`renderPortionGauge(input)`(产标记,零 DOM)/`portionGaugeCss()`(样式段)/
|
|
4
|
+
* `PORTION_GAUGE_FORMS`(形态闭集:换算三栏 `convert`/量感条 `gauge`)/
|
|
5
|
+
* `PORTION_GAUGE_CLASS` 与 `portionGaugeSlot()`(标记契约)/
|
|
6
|
+
* `PORTION_GAUGE_NARROW_PX` 与 `PORTION_GAUGE_BAR_MIN_PX`(几何常量:判据拿它对两档几何与条宽)/
|
|
7
|
+
* `normalizePortionGauge`(归一化入口)/行数上下限(判据拿它对非法入参)。
|
|
8
|
+
*
|
|
9
|
+
* 用法与参数表见同目录 `README.md`。消费方走 `base-paint/blocks`(组件层出口),不走根出口。
|
|
10
|
+
*/
|
|
11
|
+
export { renderPortionGauge } from './render.js';
|
|
12
|
+
export type { PortionGaugeForm, PortionGaugeGauge, PortionGaugeInput, PortionGaugeRow, PortionGaugeSlot, } from './attrs.js';
|
|
13
|
+
export { PORTION_GAUGE_CLASS, PORTION_GAUGE_FORMS, PORTION_GAUGE_MAX_ROWS, PORTION_GAUGE_MIN_ROWS, PORTION_GAUGE_NARROW_PX, PORTION_GAUGE_SLOTS, portionGaugeSlot, } from './attrs.js';
|
|
14
|
+
export { PORTION_GAUGE_NOTE, normalizePortionGauge } from './model.js';
|
|
15
|
+
export type { PortionGaugeGaugeModel, PortionGaugeMarkModel, PortionGaugeModel, PortionGaugeRowModel, PortionGaugeTickModel, } from './model.js';
|
|
16
|
+
export { PORTION_GAUGE_BAR_MIN_PX, portionGaugeCss } from './style.js';
|
|
17
|
+
export { PORTION_GAUGE_RAIL_PX } from './style-gauge.js';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/portion-gauge/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACvE,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** portion-gauge · **组件出口**(本组件对外的唯一名字面)。
|
|
2
|
+
*
|
|
3
|
+
* 出口:`renderPortionGauge(input)`(产标记,零 DOM)/`portionGaugeCss()`(样式段)/
|
|
4
|
+
* `PORTION_GAUGE_FORMS`(形态闭集:换算三栏 `convert`/量感条 `gauge`)/
|
|
5
|
+
* `PORTION_GAUGE_CLASS` 与 `portionGaugeSlot()`(标记契约)/
|
|
6
|
+
* `PORTION_GAUGE_NARROW_PX` 与 `PORTION_GAUGE_BAR_MIN_PX`(几何常量:判据拿它对两档几何与条宽)/
|
|
7
|
+
* `normalizePortionGauge`(归一化入口)/行数上下限(判据拿它对非法入参)。
|
|
8
|
+
*
|
|
9
|
+
* 用法与参数表见同目录 `README.md`。消费方走 `base-paint/blocks`(组件层出口),不走根出口。
|
|
10
|
+
*/
|
|
11
|
+
export { renderPortionGauge } from './render.js';
|
|
12
|
+
export { PORTION_GAUGE_CLASS, PORTION_GAUGE_FORMS, PORTION_GAUGE_MAX_ROWS, PORTION_GAUGE_MIN_ROWS, PORTION_GAUGE_NARROW_PX, PORTION_GAUGE_SLOTS, portionGaugeSlot, } from './attrs.js';
|
|
13
|
+
export { PORTION_GAUGE_NOTE, normalizePortionGauge } from './model.js';
|
|
14
|
+
export { PORTION_GAUGE_BAR_MIN_PX, portionGaugeCss } from './style.js';
|
|
15
|
+
export { PORTION_GAUGE_RAIL_PX } from './style-gauge.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/portion-gauge/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAQjD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAQvE,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { type PortionGaugeForm } from './attrs.js';
|
|
2
|
+
/** 一行的内部形状:每个字段都已校验、已归一、已算好(`render.ts` 只拼标记,一个算术都不写)。 */
|
|
3
|
+
export interface PortionGaugeRowModel {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
/** 出处那句(`主料,菜谱写“2 份”`):分档与菜谱写法拼在这里,换算左栏读的是同一个菜谱串。 */
|
|
6
|
+
readonly sub: string;
|
|
7
|
+
/** 这一行合计多少克的写法(`700 g`):行头与换算右栏读的是**同一个串**。 */
|
|
8
|
+
readonly gramsText: string;
|
|
9
|
+
/** 菜谱写的那一句(`2 份`):出处句与换算左栏读的是**同一个串**。 */
|
|
10
|
+
readonly recipeText: string;
|
|
11
|
+
/** 右栏口径名(`营养库口径`/`生重(1 碗 = 150 g)`)。 */
|
|
12
|
+
readonly toLabelText: string;
|
|
13
|
+
/** 占比(0…100,取一位小数):占比那句的字与占比条的宽度读的是**同一个数**。 */
|
|
14
|
+
readonly sharePct: number;
|
|
15
|
+
/** 占比那句(`占一天蛋白 70%`)。 */
|
|
16
|
+
readonly shareText: string;
|
|
17
|
+
}
|
|
18
|
+
/** 轨道上的一根刻度竖线:位置与粗细都由 `model.ts` 定形(`render.ts` 只贴上去,不拼算术)。 */
|
|
19
|
+
export interface PortionGaugeTickModel {
|
|
20
|
+
/** 行内定位(`left: 25%`)。 */
|
|
21
|
+
readonly pos: string;
|
|
22
|
+
/** 整份那一档(`0`/`50`):刻度画长一档。 */
|
|
23
|
+
readonly major: boolean;
|
|
24
|
+
}
|
|
25
|
+
/** 轨道上的一枚参照刻度竖线:一餐建议(实线)/一天上限(虚线)。 */
|
|
26
|
+
export interface PortionGaugeMarkModel {
|
|
27
|
+
readonly kind: 'ref' | 'cap';
|
|
28
|
+
/** 行内定位。右端那枚是 `right: 0`——`left: 100%` 会把它自己那 1px 描边推到轨道外面(横溢)。 */
|
|
29
|
+
readonly pos: string;
|
|
30
|
+
}
|
|
31
|
+
/** A 档量感条(`gauge`)的内部形状:每个字段都已校验、已归一、已算好。 */
|
|
32
|
+
export interface PortionGaugeGaugeModel {
|
|
33
|
+
/** 这一份叫什么(`红烧肉`):卡头上屏 + 进无障碍名。 */
|
|
34
|
+
readonly name: string;
|
|
35
|
+
/** 已用占上限的几成(0…100,取一位小数):大字与已用那一段的长度读的是**同一个数**。 */
|
|
36
|
+
readonly usedPct: number;
|
|
37
|
+
/** 那个大字(`58%`)。 */
|
|
38
|
+
readonly usedText: string;
|
|
39
|
+
/** 上限那枚刻度值(`一天上限 2 份`),挂在尺子右端。 */
|
|
40
|
+
readonly capLabel: string;
|
|
41
|
+
/** 一餐建议那枚刻度值(`一餐建议 1.2 份`);没给建议=不出这一行。 */
|
|
42
|
+
readonly refLabel?: string;
|
|
43
|
+
/** 建议那枚刻度值那一行的**行内内距**(把那一行的话居中到它那枚刻度上);正中那一档是空串=不写。 */
|
|
44
|
+
readonly refPad?: string;
|
|
45
|
+
/** 实物参照那一行(`≈ 1 个拳头 + 2 汤勺`);不给=不出那一行。 */
|
|
46
|
+
readonly equiv?: string;
|
|
47
|
+
/** 轨道那句话(`role="img"` 的无障碍名):把这一条读数说成一句话,数出自上面同一批字段。 */
|
|
48
|
+
readonly ariaText: string;
|
|
49
|
+
/** 刻度竖线(四等分;右端那枚由「一天上限」那枚参照收口,同一处不画两条线)。 */
|
|
50
|
+
readonly ticks: readonly PortionGaugeTickModel[];
|
|
51
|
+
/** 参照刻度竖线(有建议时两枚,否则只有上限那一枚)。 */
|
|
52
|
+
readonly marks: readonly PortionGaugeMarkModel[];
|
|
53
|
+
}
|
|
54
|
+
/** 内部类型:每个字段都已校验、已归一、已算好。 */
|
|
55
|
+
export interface PortionGaugeModel {
|
|
56
|
+
readonly form: PortionGaugeForm;
|
|
57
|
+
readonly title: string;
|
|
58
|
+
readonly stamp?: string;
|
|
59
|
+
readonly tail?: string;
|
|
60
|
+
/** `convert` 的行;`gauge` 形态是**空数组**(那个形态读 `gauge`)。 */
|
|
61
|
+
readonly rows: readonly PortionGaugeRowModel[];
|
|
62
|
+
/** `gauge` 的那一份;`convert` 形态是 `null`。 */
|
|
63
|
+
readonly gauge: PortionGaugeGaugeModel | null;
|
|
64
|
+
readonly note: string;
|
|
65
|
+
/** 缺换算的食材有几样(0=没有缺的,那一行整行不出)。 */
|
|
66
|
+
readonly missingCount: number;
|
|
67
|
+
/** 缺换算那一行里的数(`还差 12 样没有换算` 里的 `12`):**与克数走同一把分组**(同一处出,
|
|
68
|
+
* 指数写法同样不被打散);`missingCount` 是 0 时是空串(那一行整行不出)。 */
|
|
69
|
+
readonly missingText: string;
|
|
70
|
+
readonly extraClass?: string;
|
|
71
|
+
}
|
|
72
|
+
/** 本件的口径句(调用方不给 `note` 时用它;分隔符只用逗号与句号)。 */
|
|
73
|
+
export declare const PORTION_GAUGE_NOTE: string;
|
|
74
|
+
/** 入参归一化。**唯一入口**:`render.ts` 只吃它产出的 `PortionGaugeModel`,不再自己碰 `any`。 */
|
|
75
|
+
export declare function normalizePortionGauge(input: unknown): PortionGaugeModel;
|
|
76
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/components/portion-gauge/model.ts"],"names":[],"mappings":"AAgBA,OAAO,EAIL,KAAK,gBAAgB,EAGtB,MAAM,YAAY,CAAC;AAKpB,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wCAAwC;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,yBAAyB;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,+DAA+D;AAC/D,MAAM,WAAW,qBAAqB;IACpC,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,sCAAsC;AACtC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,6CAA6C;AAC7C,MAAM,WAAW,sBAAsB;IACrC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mBAAmB;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACjD,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAClD;AAED,6BAA6B;AAC7B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/C,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;wDACoD;IACpD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,2CAA2C;AAC3C,eAAO,MAAM,kBAAkB,QAGE,CAAC;AA4DlC,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAiDvE"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/** portion-gauge · **入参校验与归一化入口**(把 `any` 与说不出的 `unknown` 挡在门外,产出内部类型)。
|
|
2
|
+
*
|
|
3
|
+
* 三条口径:
|
|
4
|
+
* 1. **非法入参一律 `badInput()`**(抛 `BlocksError`)——不静默降级、不“尽量猜”:
|
|
5
|
+
* 行数不够、克数不是数、占比越界,画出来都是“错位”,而调用方以为拿到了一组完整换算。
|
|
6
|
+
* 2. **换算链三栏的数是同一份真值**:克数串、百分比、菜谱那一句都在这里**各算一次**,
|
|
7
|
+
* `render.ts` 只把算好的串写进两处(行头与换算栏各一处)——两处各算一遍必然走散。
|
|
8
|
+
* A 档量感条同此:那个百分比大字与已用那一段的长度是**同一个数**,两枚参照刻度值的位置
|
|
9
|
+
* 与它们各自那句字也在这一处定形。
|
|
10
|
+
* 3. **空白串不是文本**:全空白的 `title`/食材名会在屏上留一块空白,**一律拒**
|
|
11
|
+
* (与同层 `optExtraClass` 对空白串的口径一致;可选文本字段同办:空串仍按“未给”处理)。
|
|
12
|
+
*
|
|
13
|
+
* **形态决定读哪一组字段**(同族先例 `spread-dist/model.ts`):`convert` 读 `rows`、`gauge` 读 `gauge`,
|
|
14
|
+
* 另一个形态的字段一概不读(缺了就是缺了,不拿另一形态的字段顶上)。
|
|
15
|
+
*/
|
|
16
|
+
import { assertPlainObject, badInput, optExtraClass } from '../shared/validate.js';
|
|
17
|
+
import { PORTION_GAUGE_FORMS, } from './attrs.js';
|
|
18
|
+
import { assertKeys, groupNum, INPUT_KEYS, optRealText, reqGauge, reqMissingCount, reqRealText, reqRows, } from './fields.js';
|
|
19
|
+
/** 本件的口径句(调用方不给 `note` 时用它;分隔符只用逗号与句号)。 */
|
|
20
|
+
export const PORTION_GAUGE_NOTE = '口径:左边永远是菜谱写的单位(份,碗,把),'
|
|
21
|
+
+ '右边永远是营养库认的单位(g)。中间是这一份菜的换算系数,'
|
|
22
|
+
+ '系数变了要写明是哪一版菜谱改的,不悄悄改数。'
|
|
23
|
+
+ '缺换算系数的食材整行不画,只在下面写还差几样没有换算。';
|
|
24
|
+
/** 尺子的刻度:四等分(0/25/50/75)。**右端那枚不画**——它由「一天上限」那枚参照收口
|
|
25
|
+
* (同一处画两条线=同一个位置说两遍)。 */
|
|
26
|
+
const RAIL_TICKS = [0, 25, 50, 75];
|
|
27
|
+
/** 参照刻度值那一行的**行内内距**:把那一行的话**居中到它那枚刻度**上(`text-align: center` + 一侧内距)。
|
|
28
|
+
* 刻度过半时内距压在左边、不过半时压右边 —— 两侧都推不出轨道,也不用 `translateX`(那会让
|
|
29
|
+
* 0 宽刻度上的标签自己吃掉一半宽)。
|
|
30
|
+
*
|
|
31
|
+
* **内距最多压到 `REF_PAD_MAX_PCT`**:刻度贴着尺子两端时(0/100),按上面那把尺算出来的内距
|
|
32
|
+
* 会把那一行的可用宽压成 0,一个字居中在 0 宽里 ⇒ 半个字被推到轨道外(真机读数 `scrollWidth`
|
|
33
|
+
* 比 `clientWidth` 多 12px)。压到 75% = 至少给那枚标签留四分之一条轨道:话仍**贴着它那一端**,
|
|
34
|
+
* 只是不再严格居中(尺子两端本来就摆不下居中)。 */
|
|
35
|
+
const REF_PAD_MAX_PCT = 75;
|
|
36
|
+
function refPad(pct) {
|
|
37
|
+
if (pct > 50)
|
|
38
|
+
return 'padding-left: ' + String(Math.min(2 * pct - 100, REF_PAD_MAX_PCT)) + '%';
|
|
39
|
+
if (pct < 50)
|
|
40
|
+
return 'padding-right: ' + String(Math.min(100 - 2 * pct, REF_PAD_MAX_PCT)) + '%';
|
|
41
|
+
return '';
|
|
42
|
+
}
|
|
43
|
+
/** 一枚刻度/参照竖线的位置:贴着尺子右端(100%)的那一枚用 `right: 0` 收口 ——
|
|
44
|
+
* `left: 100%` 会把它自己那 1px 描边推到轨道外面(真机读数:`scrollWidth` 比 `clientWidth` 多 1)。 */
|
|
45
|
+
function markPos(pct) {
|
|
46
|
+
return pct >= 100 ? 'right: 0' : 'left: ' + String(pct) + '%';
|
|
47
|
+
}
|
|
48
|
+
/** A 档那一份量感:大字、两枚参照刻度值、刻度竖线、无障碍名都在这一处定形。 */
|
|
49
|
+
function gaugeModel(g) {
|
|
50
|
+
const usedText = String(g.usedPct) + '%';
|
|
51
|
+
const capLabel = '一天上限 ' + g.capText;
|
|
52
|
+
const ticks = RAIL_TICKS
|
|
53
|
+
.map((p) => ({ pos: 'left: ' + String(p) + '%', major: p % 50 === 0 }));
|
|
54
|
+
/* 上限那枚收右端;有建议时它排在前面(屏上先读到建议,再读到上限)。 */
|
|
55
|
+
const marks = [{ kind: 'cap', pos: markPos(100) }];
|
|
56
|
+
let refLabel;
|
|
57
|
+
let pad;
|
|
58
|
+
if (g.refPct !== undefined && g.refText !== undefined) {
|
|
59
|
+
refLabel = '一餐建议 ' + g.refText;
|
|
60
|
+
pad = refPad(g.refPct);
|
|
61
|
+
marks.unshift({ kind: 'ref', pos: markPos(g.refPct) });
|
|
62
|
+
}
|
|
63
|
+
/* 无障碍名把这一条读数说成一句话:数**出自上面同一批字段**(不另算一遍)。 */
|
|
64
|
+
const ariaText = '量感条:' + g.name + '用掉一天上限 ' + g.capText + '的' + usedText
|
|
65
|
+
+ (refLabel === undefined || g.refPct === undefined
|
|
66
|
+
? '。' : ',' + refLabel + '那枚刻度落在 ' + String(g.refPct) + '% 处。');
|
|
67
|
+
return {
|
|
68
|
+
name: g.name,
|
|
69
|
+
usedPct: g.usedPct,
|
|
70
|
+
usedText,
|
|
71
|
+
capLabel,
|
|
72
|
+
...(refLabel === undefined ? {} : { refLabel }),
|
|
73
|
+
...(pad === undefined ? {} : { refPad: pad }),
|
|
74
|
+
...(g.equiv === undefined ? {} : { equiv: g.equiv }),
|
|
75
|
+
ariaText,
|
|
76
|
+
ticks,
|
|
77
|
+
marks,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/** 入参归一化。**唯一入口**:`render.ts` 只吃它产出的 `PortionGaugeModel`,不再自己碰 `any`。 */
|
|
81
|
+
export function normalizePortionGauge(input) {
|
|
82
|
+
assertPlainObject(input, 'renderPortionGauge: input');
|
|
83
|
+
const raw = input;
|
|
84
|
+
assertKeys(raw, INPUT_KEYS, 'portion-gauge: input');
|
|
85
|
+
const form = raw.form === undefined ? PORTION_GAUGE_FORMS[0] : raw.form;
|
|
86
|
+
if (!PORTION_GAUGE_FORMS.includes(form)) {
|
|
87
|
+
badInput('portion-gauge: input.form 必须是 ' + PORTION_GAUGE_FORMS.join('/')
|
|
88
|
+
+ ' 之一(A 量感条/B 换算三栏)');
|
|
89
|
+
}
|
|
90
|
+
const gauge = form === 'gauge' ? gaugeModel(reqGauge(raw.gauge)) : null;
|
|
91
|
+
const rows = form === 'gauge' ? [] : reqRows(raw.rows).map((r) => {
|
|
92
|
+
/* 同一份真值各算一次:克数串只拼一遍(行头与右栏同引),菜谱串只收一遍
|
|
93
|
+
(出处句与左栏同引),百分比只取一位(占比句与条宽同引)。 */
|
|
94
|
+
const gramsText = groupNum(r.grams) + ' g';
|
|
95
|
+
const pctText = String(r.sharePct) + '%';
|
|
96
|
+
const toName = r.toLabel ?? '营养库口径';
|
|
97
|
+
const model = {
|
|
98
|
+
name: r.name,
|
|
99
|
+
sub: (r.kind === undefined ? '' : r.kind + ',') + '菜谱写「' + r.recipe + '」',
|
|
100
|
+
gramsText,
|
|
101
|
+
recipeText: r.recipe,
|
|
102
|
+
toLabelText: r.basis === undefined ? toName : toName + '(' + r.basis + ')',
|
|
103
|
+
sharePct: r.sharePct,
|
|
104
|
+
shareText: '占一天' + r.shareOf + ' ' + pctText,
|
|
105
|
+
};
|
|
106
|
+
return model;
|
|
107
|
+
});
|
|
108
|
+
/* 缺换算那个数也在这一处定形(写法与克数同一把分组):`render.ts` 只贴它,不再自己 `String()`。 */
|
|
109
|
+
const missingCount = reqMissingCount(raw.missingCount);
|
|
110
|
+
/* 脚注缺省按形态分:`convert` 用本件的口径句;`gauge` **不出脚注**(那两条参照刻度值在尺子上
|
|
111
|
+
自己报了名,再写一句口径=同一件事印两遍,正是用户砍掉的那类文字)。 */
|
|
112
|
+
const noteIn = optRealText(raw.note, 'portion-gauge: input.note');
|
|
113
|
+
const note = noteIn ?? (form === 'gauge' ? '' : PORTION_GAUGE_NOTE);
|
|
114
|
+
return {
|
|
115
|
+
form: form,
|
|
116
|
+
title: reqRealText(raw.title, 'portion-gauge: input.title'),
|
|
117
|
+
stamp: optRealText(raw.stamp, 'portion-gauge: input.stamp'),
|
|
118
|
+
tail: optRealText(raw.tail, 'portion-gauge: input.tail'),
|
|
119
|
+
rows,
|
|
120
|
+
gauge,
|
|
121
|
+
note,
|
|
122
|
+
missingCount,
|
|
123
|
+
missingText: missingCount > 0 ? groupNum(missingCount) : '',
|
|
124
|
+
extraClass: optExtraClass(raw.extraClass, 'portion-gauge: input.extraClass'),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/components/portion-gauge/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/components/portion-gauge/render.ts"],"names":[],"mappings":"AAkKA,wDAAwD;AACxD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKzD"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/** portion-gauge · **渲染**(纯函数产 HTML;本件两档骨架:A 量感条/B 换算三栏)。
|
|
2
|
+
*
|
|
3
|
+
* —— 形态 `convert`:换算三栏 ——
|
|
4
|
+
*
|
|
5
|
+
* 一行一样食材,每行三栏:第一栏是菜谱写的那一句(`2 份`),第二栏是营养库认的那一句
|
|
6
|
+
* (`700 g`),第三栏是实物占比(占比条 + `占一天蛋白 70%`)。行头写清食材名、
|
|
7
|
+
* 出处与这一行合计多少克,脚注写口径,缺换算的另起一行只报数。
|
|
8
|
+
* 它替掉的两种错法:
|
|
9
|
+
* · 只给克数 —— 人对着 `200 g` 不知道这是多是少;
|
|
10
|
+
* · 单位靠人自己心算 —— 菜谱的份碗把与营养库的克各说各的。
|
|
11
|
+
*
|
|
12
|
+
* —— 形态 `gauge`:量感条(占上限几成 + 两条参照刻度)——
|
|
13
|
+
*
|
|
14
|
+
* 一条尺子(量程=0…上限):余量底是一根发丝线、已用那一段压在它上面、刻度是竖线(三级重量);
|
|
15
|
+
* 上面一档大字是占比,两枚参照刻度值(一餐建议/一天上限)**一高一低挂在自己那枚刻度上**;
|
|
16
|
+
* 最下面一行是实物参照(`≈ 1 个拳头 + 2 汤勺`)。
|
|
17
|
+
* 它替掉的那一种错法:**只报一个百分比**(58% 是多少,人对着手比不出来)。
|
|
18
|
+
*
|
|
19
|
+
* 三条硬口径(判据断的就是它们):
|
|
20
|
+
* · **算数不在这里**:克数串、百分比、菜谱串、刻度位置、无障碍名都在 `model.ts` 算好;
|
|
21
|
+
* 这一支只把**算好的数**写进它该去的地方,静态规则一律住 `style.ts`;
|
|
22
|
+
* · **同一份真值只印一次**:换算三栏的行头与换算栏同引一个串;量感条的占比大字、已用那一段的
|
|
23
|
+
* 宽度、无障碍名里的百分比是**同一个数**(`usedPct`);
|
|
24
|
+
* · **本件不带可点元素、不带脚本**:没有 `runtime.ts`;调用方把某一行包成入口时,
|
|
25
|
+
* 件里那条 `:focus-visible` 地板保证焦点看得见(见 `README.md`)。
|
|
26
|
+
*/
|
|
27
|
+
import { esc } from '../shared/escape.js';
|
|
28
|
+
import { badInput } from '../shared/validate.js';
|
|
29
|
+
import { PORTION_GAUGE_CLASS, portionGaugeSlot } from './attrs.js';
|
|
30
|
+
import { normalizePortionGauge, } from './model.js';
|
|
31
|
+
/** 卡头:标题(+ A 档的「这一份叫什么」)+ 口径那枚 + 换算基准。 */
|
|
32
|
+
function headHtml(m) {
|
|
33
|
+
const parts = ['<div class="' + portionGaugeSlot('hd') + '">'];
|
|
34
|
+
parts.push('<h4 class="' + portionGaugeSlot('title') + '">' + esc(m.title) + '</h4>');
|
|
35
|
+
/* A 档才有「这一份叫什么」(`convert` 那一档的模型里 `gauge` 恒为 `null` ⇒ 这段不进标记)。 */
|
|
36
|
+
if (m.gauge !== null) {
|
|
37
|
+
parts.push('<b class="' + portionGaugeSlot('subject') + '">' + esc(m.gauge.name) + '</b>');
|
|
38
|
+
}
|
|
39
|
+
if (m.stamp !== undefined) {
|
|
40
|
+
parts.push('<span class="' + portionGaugeSlot('stamp') + '">' + esc(m.stamp) + '</span>');
|
|
41
|
+
}
|
|
42
|
+
if (m.tail !== undefined) {
|
|
43
|
+
parts.push('<span class="' + portionGaugeSlot('tail') + '">' + esc(m.tail) + '</span>');
|
|
44
|
+
}
|
|
45
|
+
parts.push('</div>');
|
|
46
|
+
return parts.join('');
|
|
47
|
+
}
|
|
48
|
+
/** 一行:行头(名 + 出处 + 合计)→ 换算框(左栏 → 右栏)→ 实物占比(条 + 那句)。 */
|
|
49
|
+
function rowHtml(r) {
|
|
50
|
+
const parts = ['<div class="' + portionGaugeSlot('row') + '">'];
|
|
51
|
+
parts.push('<span class="' + portionGaugeSlot('head') + '">'
|
|
52
|
+
+ '<b class="' + portionGaugeSlot('name') + '">' + esc(r.name) + '</b>'
|
|
53
|
+
+ '<span class="' + portionGaugeSlot('sub') + '">' + esc(r.sub) + '</span>'
|
|
54
|
+
+ '<span class="' + portionGaugeSlot('same') + '">' + esc(r.gramsText) + '</span>'
|
|
55
|
+
+ '</span>');
|
|
56
|
+
parts.push('<span class="' + portionGaugeSlot('eq') + '">'
|
|
57
|
+
+ '<span class="' + portionGaugeSlot('side') + '">'
|
|
58
|
+
+ '<b class="' + portionGaugeSlot('side-value') + '">' + esc(r.recipeText) + '</b>'
|
|
59
|
+
+ '<em class="' + portionGaugeSlot('side-label') + '">菜谱单位</em>'
|
|
60
|
+
+ '</span>'
|
|
61
|
+
+ '<span class="' + portionGaugeSlot('arrow') + '" aria-hidden="true">→</span>'
|
|
62
|
+
+ '<span class="' + portionGaugeSlot('side') + ' is-to">'
|
|
63
|
+
+ '<b class="' + portionGaugeSlot('side-value') + '">' + esc(r.gramsText) + '</b>'
|
|
64
|
+
+ '<em class="' + portionGaugeSlot('side-label') + '">' + esc(r.toLabelText) + '</em>'
|
|
65
|
+
+ '</span>'
|
|
66
|
+
+ '</span>');
|
|
67
|
+
/* 占比条是纯装饰(那句占比已经把数说出来了):填充宽度就是占比本身,与那句同源。 */
|
|
68
|
+
parts.push('<span class="' + portionGaugeSlot('obj') + '">'
|
|
69
|
+
+ '<span class="' + portionGaugeSlot('bar') + '" aria-hidden="true">'
|
|
70
|
+
+ '<i class="' + portionGaugeSlot('fill') + '" style="width: ' + String(r.sharePct) + '%"></i>'
|
|
71
|
+
+ '</span>'
|
|
72
|
+
+ '<span class="' + portionGaugeSlot('share') + '">' + esc(r.shareText) + '</span>'
|
|
73
|
+
+ '</span>');
|
|
74
|
+
parts.push('</div>');
|
|
75
|
+
return parts.join('');
|
|
76
|
+
}
|
|
77
|
+
/** 脚注一句人话 +(有缺换算时)缺的那一行。 */
|
|
78
|
+
function footHtml(m) {
|
|
79
|
+
const parts = ['<p class="' + portionGaugeSlot('note') + '">' + esc(m.note) + '</p>'];
|
|
80
|
+
if (m.missingCount > 0) {
|
|
81
|
+
/* 那个数在 `model.ts` 就定好形(与克数同一把分组):这里只贴,不再自己 `String()` 一遍
|
|
82
|
+
——两处各拼一遍必然走散(同 `gramsText`/`shareText` 的口径)。 */
|
|
83
|
+
parts.push('<p class="' + portionGaugeSlot('missing') + '">还差 ' + m.missingText
|
|
84
|
+
+ ' 样没有换算</p>');
|
|
85
|
+
}
|
|
86
|
+
return parts.join('');
|
|
87
|
+
}
|
|
88
|
+
/** 形态 `convert` 的骨架:卡头 → 一行一样 → 脚注。 */
|
|
89
|
+
function renderConvert(m) {
|
|
90
|
+
const parts = [headHtml(m)];
|
|
91
|
+
parts.push('<div class="' + portionGaugeSlot('conv') + '">'
|
|
92
|
+
+ m.rows.map(rowHtml).join('') + '</div>');
|
|
93
|
+
parts.push(footHtml(m));
|
|
94
|
+
return parts.join('');
|
|
95
|
+
}
|
|
96
|
+
/** A 档那一份量感(归一化保证 `form === 'gauge'` 时它**不是** `null`;真缺了就当错报,不静默降级)。 */
|
|
97
|
+
function gaugeOf(m) {
|
|
98
|
+
if (m.gauge === null)
|
|
99
|
+
badInput('portion-gauge: 形态 gauge 缺 input.gauge');
|
|
100
|
+
return m.gauge;
|
|
101
|
+
}
|
|
102
|
+
/** 尺子:余量底 → 已用那一段 → 刻度竖线 → 参照刻度竖线(位置一律由 `model.ts` 定形)。 */
|
|
103
|
+
function railHtml(g) {
|
|
104
|
+
const parts = ['<span class="' + portionGaugeSlot('rail') + '" role="img" aria-label="'
|
|
105
|
+
+ esc(g.ariaText) + '">'];
|
|
106
|
+
parts.push('<span class="' + portionGaugeSlot('rest') + '" aria-hidden="true"></span>');
|
|
107
|
+
/* 已用那一段的宽度**就是占比本身**(与大字、与无障碍名同一个数)。 */
|
|
108
|
+
parts.push('<span class="' + portionGaugeSlot('used') + '" aria-hidden="true" style="width: '
|
|
109
|
+
+ String(g.usedPct) + '%"></span>');
|
|
110
|
+
for (const tick of g.ticks) {
|
|
111
|
+
parts.push('<span class="' + portionGaugeSlot('tick') + (tick.major ? ' is-major' : '')
|
|
112
|
+
+ '" aria-hidden="true" style="' + tick.pos + '"></span>');
|
|
113
|
+
}
|
|
114
|
+
for (const mark of g.marks) {
|
|
115
|
+
parts.push('<span class="' + portionGaugeSlot('mark') + ' is-' + mark.kind
|
|
116
|
+
+ '" aria-hidden="true" style="' + mark.pos + '"></span>');
|
|
117
|
+
}
|
|
118
|
+
parts.push('</span>');
|
|
119
|
+
return parts.join('');
|
|
120
|
+
}
|
|
121
|
+
/** 形态 `gauge` 的骨架:卡头 → 占比大字 → 尺子(两枚参照刻度值 + 轨道)→ 实物参照 →(给了才出)脚注。 */
|
|
122
|
+
function renderGauge(m) {
|
|
123
|
+
const g = gaugeOf(m);
|
|
124
|
+
const parts = [headHtml(m)];
|
|
125
|
+
parts.push('<p class="' + portionGaugeSlot('lead') + '"><b class="'
|
|
126
|
+
+ portionGaugeSlot('lead-value') + '">' + esc(g.usedText) + '</b></p>');
|
|
127
|
+
const box = ['<span class="' + portionGaugeSlot('gauge') + '">'];
|
|
128
|
+
/* 两枚参照刻度值一高一低:上面那行是上限,贴着轨道那行是建议(离得近的那一枚是「这一餐」)。 */
|
|
129
|
+
box.push('<span class="' + portionGaugeSlot('mark-label') + ' is-cap" aria-hidden="true">'
|
|
130
|
+
+ esc(g.capLabel) + '</span>');
|
|
131
|
+
if (g.refLabel !== undefined) {
|
|
132
|
+
box.push('<span class="' + portionGaugeSlot('mark-label') + ' is-ref" aria-hidden="true"'
|
|
133
|
+
+ (g.refPad === undefined || g.refPad === '' ? '' : ' style="' + g.refPad + '"') + '>'
|
|
134
|
+
+ esc(g.refLabel) + '</span>');
|
|
135
|
+
}
|
|
136
|
+
box.push(railHtml(g));
|
|
137
|
+
box.push('</span>');
|
|
138
|
+
parts.push(box.join(''));
|
|
139
|
+
if (g.equiv !== undefined) {
|
|
140
|
+
parts.push('<p class="' + portionGaugeSlot('equiv') + '"><b>' + esc(g.equiv) + '</b></p>');
|
|
141
|
+
}
|
|
142
|
+
if (m.note !== '')
|
|
143
|
+
parts.push('<p class="' + portionGaugeSlot('note') + '">' + esc(m.note) + '</p>');
|
|
144
|
+
return parts.join('');
|
|
145
|
+
}
|
|
146
|
+
/** 形态 → 骨架(分派写在这里;加形态就是在这里加一支)。 */
|
|
147
|
+
const SKELETONS = {
|
|
148
|
+
convert: renderConvert,
|
|
149
|
+
gauge: renderGauge,
|
|
150
|
+
};
|
|
151
|
+
/** 渲染份量换算(纯函数:同样的入参恒产同样的字节;转义只经 `shared/escape.ts`)。 */
|
|
152
|
+
export function renderPortionGauge(input) {
|
|
153
|
+
const m = normalizePortionGauge(input);
|
|
154
|
+
const extra = m.extraClass === undefined ? '' : ' ' + m.extraClass;
|
|
155
|
+
return '<div class="' + PORTION_GAUGE_CLASS + ' is-' + m.form + extra + '">'
|
|
156
|
+
+ SKELETONS[m.form](m) + '</div>';
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=render.js.map
|