@fusedashlabs/widgets 0.4.4 → 0.5.0
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/CHANGELOG.md +23 -0
- package/README.md +24 -3
- package/dist/catalog/engine.d.ts +9 -0
- package/dist/catalog/engine.d.ts.map +1 -0
- package/dist/catalog/engine.js +28 -0
- package/dist/catalog/engine.js.map +1 -0
- package/dist/catalog/evaluate.d.ts +11 -0
- package/dist/catalog/evaluate.d.ts.map +1 -0
- package/dist/catalog/evaluate.js +18 -0
- package/dist/catalog/evaluate.js.map +1 -0
- package/dist/catalog/index.d.ts +8 -0
- package/dist/catalog/index.d.ts.map +1 -0
- package/dist/catalog/index.js +25 -0
- package/dist/catalog/index.js.map +1 -0
- package/dist/catalog/load.d.ts +11 -0
- package/dist/catalog/load.d.ts.map +1 -0
- package/dist/catalog/load.js +140 -0
- package/dist/catalog/load.js.map +1 -0
- package/dist/catalog/schema.d.ts +5 -0
- package/dist/catalog/schema.d.ts.map +1 -0
- package/dist/catalog/schema.js +143 -0
- package/dist/catalog/schema.js.map +1 -0
- package/dist/catalog/types.d.ts +83 -0
- package/dist/catalog/types.d.ts.map +1 -0
- package/dist/catalog/types.js +45 -0
- package/dist/catalog/types.js.map +1 -0
- package/dist/catalog/when.d.ts +13 -0
- package/dist/catalog/when.d.ts.map +1 -0
- package/dist/catalog/when.js +236 -0
- package/dist/catalog/when.js.map +1 -0
- package/dist/components/approval-bar/element/ui9000-approval-bar.d.ts +17 -0
- package/dist/components/approval-bar/element/ui9000-approval-bar.d.ts.map +1 -0
- package/dist/components/approval-bar/element/ui9000-approval-bar.js +83 -0
- package/dist/components/approval-bar/element/ui9000-approval-bar.js.map +1 -0
- package/dist/components/approval-bar/index.d.ts +4 -0
- package/dist/components/approval-bar/index.d.ts.map +1 -0
- package/dist/components/approval-bar/index.js +11 -0
- package/dist/components/approval-bar/index.js.map +1 -0
- package/dist/components/approval-bar/lib/normalize.d.ts +7 -0
- package/dist/components/approval-bar/lib/normalize.d.ts.map +1 -0
- package/dist/components/approval-bar/lib/normalize.js +12 -0
- package/dist/components/approval-bar/lib/normalize.js.map +1 -0
- package/dist/components/approval-bar/metadata.json.d.ts +99 -0
- package/dist/components/approval-bar/metadata.json.js +63 -0
- package/dist/components/approval-bar/metadata.json.js.map +1 -0
- package/dist/components/bar-chart/element/styles.js +3 -3
- package/dist/components/bar-chart/element/styles.js.map +1 -1
- package/dist/components/bar-chart/metadata.json.d.ts +53 -0
- package/dist/components/bar-chart/metadata.json.js +21 -0
- package/dist/components/bar-chart/metadata.json.js.map +1 -1
- package/dist/components/box-plot-chart/element/styles.js +3 -3
- package/dist/components/box-plot-chart/element/styles.js.map +1 -1
- package/dist/components/button/element/ui9000-button.d.ts +15 -0
- package/dist/components/button/element/ui9000-button.d.ts.map +1 -0
- package/dist/components/button/element/ui9000-button.js +56 -0
- package/dist/components/button/element/ui9000-button.js.map +1 -0
- package/dist/components/button/index.d.ts +3 -0
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/button/index.js +9 -0
- package/dist/components/button/index.js.map +1 -0
- package/dist/components/button/metadata.json.d.ts +99 -0
- package/dist/components/button/metadata.json.js +63 -0
- package/dist/components/button/metadata.json.js.map +1 -0
- package/dist/components/chart-renderer/element/styles.d.ts.map +1 -1
- package/dist/components/chart-renderer/element/styles.js +4 -1
- package/dist/components/chart-renderer/element/styles.js.map +1 -1
- package/dist/components/chart-renderer/element/ui9000-chart-renderer.d.ts.map +1 -1
- package/dist/components/chart-renderer/element/ui9000-chart-renderer.js +12 -0
- package/dist/components/chart-renderer/element/ui9000-chart-renderer.js.map +1 -1
- package/dist/components/chart-renderer/metadata.json.d.ts +7 -1
- package/dist/components/chart-renderer/metadata.json.js +4 -1
- package/dist/components/chart-renderer/metadata.json.js.map +1 -1
- package/dist/components/checkbox/element/ui9000-checkbox.d.ts +16 -0
- package/dist/components/checkbox/element/ui9000-checkbox.d.ts.map +1 -0
- package/dist/components/checkbox/element/ui9000-checkbox.js +71 -0
- package/dist/components/checkbox/element/ui9000-checkbox.js.map +1 -0
- package/dist/components/checkbox/index.d.ts +3 -0
- package/dist/components/checkbox/index.d.ts.map +1 -0
- package/dist/components/checkbox/index.js +9 -0
- package/dist/components/checkbox/index.js.map +1 -0
- package/dist/components/checkbox/metadata.json.d.ts +99 -0
- package/dist/components/checkbox/metadata.json.js +63 -0
- package/dist/components/checkbox/metadata.json.js.map +1 -0
- package/dist/components/custom-widget/element/styles.d.ts +2 -0
- package/dist/components/custom-widget/element/styles.d.ts.map +1 -0
- package/dist/components/custom-widget/element/styles.js +286 -0
- package/dist/components/custom-widget/element/styles.js.map +1 -0
- package/dist/components/custom-widget/element/ui9000-custom-widget.d.ts +47 -0
- package/dist/components/custom-widget/element/ui9000-custom-widget.d.ts.map +1 -0
- package/dist/components/custom-widget/element/ui9000-custom-widget.js +242 -0
- package/dist/components/custom-widget/element/ui9000-custom-widget.js.map +1 -0
- package/dist/components/custom-widget/index.d.ts +4 -0
- package/dist/components/custom-widget/index.d.ts.map +1 -0
- package/dist/components/custom-widget/index.js +19 -0
- package/dist/components/custom-widget/index.js.map +1 -0
- package/dist/components/custom-widget/lib/content.d.ts +2 -0
- package/dist/components/custom-widget/lib/content.d.ts.map +1 -0
- package/dist/components/custom-widget/lib/index.d.ts +8 -0
- package/dist/components/custom-widget/lib/index.d.ts.map +1 -0
- package/dist/components/custom-widget/lib/layout.d.ts +35 -0
- package/dist/components/custom-widget/lib/layout.d.ts.map +1 -0
- package/dist/components/custom-widget/lib/layout.js +13 -0
- package/dist/components/custom-widget/lib/layout.js.map +1 -0
- package/dist/components/custom-widget/lib/markdown.d.ts +2 -0
- package/dist/components/custom-widget/lib/markdown.d.ts.map +1 -0
- package/dist/components/custom-widget/lib/normalize.d.ts +6 -0
- package/dist/components/custom-widget/lib/normalize.d.ts.map +1 -0
- package/dist/components/custom-widget/lib/normalize.js +144 -0
- package/dist/components/custom-widget/lib/normalize.js.map +1 -0
- package/dist/components/custom-widget/lib/table.d.ts +2 -0
- package/dist/components/custom-widget/lib/table.d.ts.map +1 -0
- package/dist/components/custom-widget/lib/types.d.ts +55 -0
- package/dist/components/custom-widget/lib/types.d.ts.map +1 -0
- package/dist/components/custom-widget/metadata.json.d.ts +97 -0
- package/dist/components/custom-widget/metadata.json.js +45 -0
- package/dist/components/custom-widget/metadata.json.js.map +1 -0
- package/dist/components/date-input/element/ui9000-date-input.d.ts +16 -0
- package/dist/components/date-input/element/ui9000-date-input.d.ts.map +1 -0
- package/dist/components/date-input/element/ui9000-date-input.js +71 -0
- package/dist/components/date-input/element/ui9000-date-input.js.map +1 -0
- package/dist/components/date-input/index.d.ts +3 -0
- package/dist/components/date-input/index.d.ts.map +1 -0
- package/dist/components/date-input/index.js +9 -0
- package/dist/components/date-input/index.js.map +1 -0
- package/dist/components/date-input/metadata.json.d.ts +99 -0
- package/dist/components/date-input/metadata.json.js +63 -0
- package/dist/components/date-input/metadata.json.js.map +1 -0
- package/dist/components/entity-detail/element/ui9000-entity-detail.d.ts +17 -0
- package/dist/components/entity-detail/element/ui9000-entity-detail.d.ts.map +1 -0
- package/dist/components/entity-detail/element/ui9000-entity-detail.js +91 -0
- package/dist/components/entity-detail/element/ui9000-entity-detail.js.map +1 -0
- package/dist/components/entity-detail/index.d.ts +4 -0
- package/dist/components/entity-detail/index.d.ts.map +1 -0
- package/dist/components/entity-detail/index.js +11 -0
- package/dist/components/entity-detail/index.js.map +1 -0
- package/dist/components/entity-detail/lib/normalize.d.ts +17 -0
- package/dist/components/entity-detail/lib/normalize.d.ts.map +1 -0
- package/dist/components/entity-detail/lib/normalize.js +34 -0
- package/dist/components/entity-detail/lib/normalize.js.map +1 -0
- package/dist/components/entity-detail/metadata.json.d.ts +110 -0
- package/dist/components/entity-detail/metadata.json.js +63 -0
- package/dist/components/entity-detail/metadata.json.js.map +1 -0
- package/dist/components/event-timeline/element/ui9000-event-timeline.d.ts +17 -0
- package/dist/components/event-timeline/element/ui9000-event-timeline.d.ts.map +1 -0
- package/dist/components/event-timeline/element/ui9000-event-timeline.js +78 -0
- package/dist/components/event-timeline/element/ui9000-event-timeline.js.map +1 -0
- package/dist/components/event-timeline/index.d.ts +4 -0
- package/dist/components/event-timeline/index.d.ts.map +1 -0
- package/dist/components/event-timeline/index.js +11 -0
- package/dist/components/event-timeline/index.js.map +1 -0
- package/dist/components/event-timeline/lib/normalize.d.ts +10 -0
- package/dist/components/event-timeline/lib/normalize.d.ts.map +1 -0
- package/dist/components/event-timeline/lib/normalize.js +25 -0
- package/dist/components/event-timeline/lib/normalize.js.map +1 -0
- package/dist/components/event-timeline/metadata.json.d.ts +124 -0
- package/dist/components/event-timeline/metadata.json.js +63 -0
- package/dist/components/event-timeline/metadata.json.js.map +1 -0
- package/dist/components/evidence-panel/element/ui9000-evidence-panel.d.ts +17 -0
- package/dist/components/evidence-panel/element/ui9000-evidence-panel.d.ts.map +1 -0
- package/dist/components/evidence-panel/element/ui9000-evidence-panel.js +84 -0
- package/dist/components/evidence-panel/element/ui9000-evidence-panel.js.map +1 -0
- package/dist/components/evidence-panel/index.d.ts +4 -0
- package/dist/components/evidence-panel/index.d.ts.map +1 -0
- package/dist/components/evidence-panel/index.js +11 -0
- package/dist/components/evidence-panel/index.js.map +1 -0
- package/dist/components/evidence-panel/lib/normalize.d.ts +19 -0
- package/dist/components/evidence-panel/lib/normalize.d.ts.map +1 -0
- package/dist/components/evidence-panel/lib/normalize.js +33 -0
- package/dist/components/evidence-panel/lib/normalize.js.map +1 -0
- package/dist/components/evidence-panel/metadata.json.d.ts +114 -0
- package/dist/components/evidence-panel/metadata.json.js +63 -0
- package/dist/components/evidence-panel/metadata.json.js.map +1 -0
- package/dist/components/form/element/ui9000-form.d.ts +21 -0
- package/dist/components/form/element/ui9000-form.d.ts.map +1 -0
- package/dist/components/form/element/ui9000-form.js +115 -0
- package/dist/components/form/element/ui9000-form.js.map +1 -0
- package/dist/components/form/index.d.ts +4 -0
- package/dist/components/form/index.d.ts.map +1 -0
- package/dist/components/form/index.js +11 -0
- package/dist/components/form/index.js.map +1 -0
- package/dist/components/form/lib/normalize.d.ts +14 -0
- package/dist/components/form/lib/normalize.d.ts.map +1 -0
- package/dist/components/form/lib/normalize.js +36 -0
- package/dist/components/form/lib/normalize.js.map +1 -0
- package/dist/components/form/metadata.json.d.ts +94 -0
- package/dist/components/form/metadata.json.js +63 -0
- package/dist/components/form/metadata.json.js.map +1 -0
- package/dist/components/histogram-chart/element/styles.js +2 -2
- package/dist/components/histogram-chart/element/styles.js.map +1 -1
- package/dist/components/histogram-chart/metadata.json.d.ts +47 -0
- package/dist/components/histogram-chart/metadata.json.js +21 -0
- package/dist/components/histogram-chart/metadata.json.js.map +1 -1
- package/dist/components/image/element/ui9000-image.d.ts +17 -0
- package/dist/components/image/element/ui9000-image.d.ts.map +1 -0
- package/dist/components/image/element/ui9000-image.js +74 -0
- package/dist/components/image/element/ui9000-image.js.map +1 -0
- package/dist/components/image/index.d.ts +4 -0
- package/dist/components/image/index.d.ts.map +1 -0
- package/dist/components/image/index.js +13 -0
- package/dist/components/image/index.js.map +1 -0
- package/dist/components/image/lib/url.d.ts +14 -0
- package/dist/components/image/lib/url.d.ts.map +1 -0
- package/dist/components/image/lib/url.js +23 -0
- package/dist/components/image/lib/url.js.map +1 -0
- package/dist/components/image/metadata.json.d.ts +95 -0
- package/dist/components/image/metadata.json.js +63 -0
- package/dist/components/image/metadata.json.js.map +1 -0
- package/dist/components/kpi-widget/metadata.json.d.ts +47 -0
- package/dist/components/kpi-widget/metadata.json.js +21 -0
- package/dist/components/kpi-widget/metadata.json.js.map +1 -1
- package/dist/components/line-chart/element/styles.js +2 -2
- package/dist/components/line-chart/element/styles.js.map +1 -1
- package/dist/components/lollipop/element/styles.js +3 -3
- package/dist/components/lollipop/element/styles.js.map +1 -1
- package/dist/components/map-chart/metadata.json.d.ts +54 -2
- package/dist/components/map-chart/metadata.json.js +23 -2
- package/dist/components/map-chart/metadata.json.js.map +1 -1
- package/dist/components/multi-select/element/ui9000-multi-select.d.ts +16 -0
- package/dist/components/multi-select/element/ui9000-multi-select.d.ts.map +1 -0
- package/dist/components/multi-select/element/ui9000-multi-select.js +77 -0
- package/dist/components/multi-select/element/ui9000-multi-select.js.map +1 -0
- package/dist/components/multi-select/index.d.ts +3 -0
- package/dist/components/multi-select/index.d.ts.map +1 -0
- package/dist/components/multi-select/index.js +9 -0
- package/dist/components/multi-select/index.js.map +1 -0
- package/dist/components/multi-select/metadata.json.d.ts +99 -0
- package/dist/components/multi-select/metadata.json.js +63 -0
- package/dist/components/multi-select/metadata.json.js.map +1 -0
- package/dist/components/network-graph/metadata.json.d.ts +53 -2
- package/dist/components/network-graph/metadata.json.js +23 -2
- package/dist/components/network-graph/metadata.json.js.map +1 -1
- package/dist/components/number-input/element/ui9000-number-input.d.ts +16 -0
- package/dist/components/number-input/element/ui9000-number-input.d.ts.map +1 -0
- package/dist/components/number-input/element/ui9000-number-input.js +71 -0
- package/dist/components/number-input/element/ui9000-number-input.js.map +1 -0
- package/dist/components/number-input/index.d.ts +3 -0
- package/dist/components/number-input/index.d.ts.map +1 -0
- package/dist/components/number-input/index.js +9 -0
- package/dist/components/number-input/index.js.map +1 -0
- package/dist/components/number-input/metadata.json.d.ts +99 -0
- package/dist/components/number-input/metadata.json.js +63 -0
- package/dist/components/number-input/metadata.json.js.map +1 -0
- package/dist/components/select/element/ui9000-select.d.ts +16 -0
- package/dist/components/select/element/ui9000-select.d.ts.map +1 -0
- package/dist/components/select/element/ui9000-select.js +73 -0
- package/dist/components/select/element/ui9000-select.js.map +1 -0
- package/dist/components/select/index.d.ts +3 -0
- package/dist/components/select/index.d.ts.map +1 -0
- package/dist/components/select/index.js +9 -0
- package/dist/components/select/index.js.map +1 -0
- package/dist/components/select/metadata.json.d.ts +99 -0
- package/dist/components/select/metadata.json.js +63 -0
- package/dist/components/select/metadata.json.js.map +1 -0
- package/dist/components/step-line-chart/element/styles.js +2 -2
- package/dist/components/step-line-chart/element/styles.js.map +1 -1
- package/dist/components/table/element/styles.d.ts +2 -0
- package/dist/components/table/element/styles.d.ts.map +1 -0
- package/dist/components/table/element/styles.js +105 -0
- package/dist/components/table/element/styles.js.map +1 -0
- package/dist/components/table/element/ui9000-table.d.ts +17 -0
- package/dist/components/table/element/ui9000-table.d.ts.map +1 -0
- package/dist/components/table/element/ui9000-table.js +113 -0
- package/dist/components/table/element/ui9000-table.js.map +1 -0
- package/dist/components/table/index.d.ts +4 -0
- package/dist/components/table/index.d.ts.map +1 -0
- package/dist/components/table/index.js +14 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/table/lib/table.d.ts +55 -0
- package/dist/components/table/lib/table.d.ts.map +1 -0
- package/dist/components/table/lib/table.js +181 -0
- package/dist/components/table/lib/table.js.map +1 -0
- package/dist/components/table/metadata.json.d.ts +88 -0
- package/dist/components/table/metadata.json.js +63 -0
- package/dist/components/table/metadata.json.js.map +1 -0
- package/dist/components/text/element/ui9000-text.d.ts +16 -0
- package/dist/components/text/element/ui9000-text.d.ts.map +1 -0
- package/dist/components/text/element/ui9000-text.js +90 -0
- package/dist/components/text/element/ui9000-text.js.map +1 -0
- package/dist/components/text/index.d.ts +4 -0
- package/dist/components/text/index.d.ts.map +1 -0
- package/dist/components/text/index.js +11 -0
- package/dist/components/text/index.js.map +1 -0
- package/dist/components/text/lib/content.d.ts +2 -0
- package/dist/components/text/lib/content.d.ts.map +1 -0
- package/dist/components/text/lib/markdown.d.ts +4 -0
- package/dist/components/text/lib/markdown.d.ts.map +1 -0
- package/dist/components/text/lib/markdown.js +125 -0
- package/dist/components/text/lib/markdown.js.map +1 -0
- package/dist/components/text/metadata.json.d.ts +98 -0
- package/dist/components/text/metadata.json.js +63 -0
- package/dist/components/text/metadata.json.js.map +1 -0
- package/dist/components/text-input/element/ui9000-text-input.d.ts +16 -0
- package/dist/components/text-input/element/ui9000-text-input.d.ts.map +1 -0
- package/dist/components/text-input/element/ui9000-text-input.js +70 -0
- package/dist/components/text-input/element/ui9000-text-input.js.map +1 -0
- package/dist/components/text-input/index.d.ts +3 -0
- package/dist/components/text-input/index.d.ts.map +1 -0
- package/dist/components/text-input/index.js +9 -0
- package/dist/components/text-input/index.js.map +1 -0
- package/dist/components/text-input/metadata.json.d.ts +99 -0
- package/dist/components/text-input/metadata.json.js +63 -0
- package/dist/components/text-input/metadata.json.js.map +1 -0
- package/dist/element/chart-shell-styles.d.ts.map +1 -1
- package/dist/element/chart-shell-styles.js +11 -4
- package/dist/element/chart-shell-styles.js.map +1 -1
- package/dist/element/dispatch-ui9000.d.ts +11 -0
- package/dist/element/dispatch-ui9000.d.ts.map +1 -0
- package/dist/element/dispatch-ui9000.js +21 -0
- package/dist/element/dispatch-ui9000.js.map +1 -0
- package/dist/element/surface-styles.d.ts +2 -0
- package/dist/element/surface-styles.d.ts.map +1 -0
- package/dist/element/surface-styles.js +84 -0
- package/dist/element/surface-styles.js.map +1 -0
- package/dist/element/ui9000-chart-base.d.ts +5 -0
- package/dist/element/ui9000-chart-base.d.ts.map +1 -1
- package/dist/element/ui9000-chart-base.js +7 -1
- package/dist/element/ui9000-chart-base.js.map +1 -1
- package/dist/index.d.ts +20 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +116 -1
- package/dist/index.js.map +1 -1
- package/dist/lazy/approval-bar.d.ts +4 -0
- package/dist/lazy/approval-bar.d.ts.map +1 -0
- package/dist/lazy/approval-bar.js +5 -0
- package/dist/lazy/approval-bar.js.map +1 -0
- package/dist/lazy/button.d.ts +4 -0
- package/dist/lazy/button.d.ts.map +1 -0
- package/dist/lazy/button.js +5 -0
- package/dist/lazy/button.js.map +1 -0
- package/dist/lazy/checkbox.d.ts +4 -0
- package/dist/lazy/checkbox.d.ts.map +1 -0
- package/dist/lazy/checkbox.js +5 -0
- package/dist/lazy/checkbox.js.map +1 -0
- package/dist/lazy/custom-widget.d.ts +4 -0
- package/dist/lazy/custom-widget.d.ts.map +1 -0
- package/dist/lazy/custom-widget.js +5 -0
- package/dist/lazy/custom-widget.js.map +1 -0
- package/dist/lazy/date-input.d.ts +4 -0
- package/dist/lazy/date-input.d.ts.map +1 -0
- package/dist/lazy/date-input.js +5 -0
- package/dist/lazy/date-input.js.map +1 -0
- package/dist/lazy/entity-detail.d.ts +4 -0
- package/dist/lazy/entity-detail.d.ts.map +1 -0
- package/dist/lazy/entity-detail.js +5 -0
- package/dist/lazy/entity-detail.js.map +1 -0
- package/dist/lazy/event-timeline.d.ts +4 -0
- package/dist/lazy/event-timeline.d.ts.map +1 -0
- package/dist/lazy/event-timeline.js +5 -0
- package/dist/lazy/event-timeline.js.map +1 -0
- package/dist/lazy/evidence-panel.d.ts +4 -0
- package/dist/lazy/evidence-panel.d.ts.map +1 -0
- package/dist/lazy/evidence-panel.js +5 -0
- package/dist/lazy/evidence-panel.js.map +1 -0
- package/dist/lazy/form.d.ts +4 -0
- package/dist/lazy/form.d.ts.map +1 -0
- package/dist/lazy/form.js +5 -0
- package/dist/lazy/form.js.map +1 -0
- package/dist/lazy/image.d.ts +4 -0
- package/dist/lazy/image.d.ts.map +1 -0
- package/dist/lazy/image.js +5 -0
- package/dist/lazy/image.js.map +1 -0
- package/dist/lazy/index.d.ts +17 -1
- package/dist/lazy/index.d.ts.map +1 -1
- package/dist/lazy/index.js +128 -0
- package/dist/lazy/index.js.map +1 -1
- package/dist/lazy/multi-select.d.ts +4 -0
- package/dist/lazy/multi-select.d.ts.map +1 -0
- package/dist/lazy/multi-select.js +5 -0
- package/dist/lazy/multi-select.js.map +1 -0
- package/dist/lazy/number-input.d.ts +4 -0
- package/dist/lazy/number-input.d.ts.map +1 -0
- package/dist/lazy/number-input.js +5 -0
- package/dist/lazy/number-input.js.map +1 -0
- package/dist/lazy/select.d.ts +4 -0
- package/dist/lazy/select.d.ts.map +1 -0
- package/dist/lazy/select.js +5 -0
- package/dist/lazy/select.js.map +1 -0
- package/dist/lazy/table.d.ts +4 -0
- package/dist/lazy/table.d.ts.map +1 -0
- package/dist/lazy/table.js +5 -0
- package/dist/lazy/table.js.map +1 -0
- package/dist/lazy/text-input.d.ts +4 -0
- package/dist/lazy/text-input.d.ts.map +1 -0
- package/dist/lazy/text-input.js +5 -0
- package/dist/lazy/text-input.js.map +1 -0
- package/dist/lazy/text.d.ts +4 -0
- package/dist/lazy/text.d.ts.map +1 -0
- package/dist/lazy/text.js +5 -0
- package/dist/lazy/text.js.map +1 -0
- package/dist/lib/labelled-control.d.ts +12 -0
- package/dist/lib/labelled-control.d.ts.map +1 -0
- package/dist/lib/labelled-control.js +14 -0
- package/dist/lib/labelled-control.js.map +1 -0
- package/package.json +134 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/catalog/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const INTENTS = [
|
|
2
|
+
"spatial",
|
|
3
|
+
"comparison",
|
|
4
|
+
"summary",
|
|
5
|
+
"form",
|
|
6
|
+
"evidence",
|
|
7
|
+
"graph"
|
|
8
|
+
];
|
|
9
|
+
const CATALOG_TIERS = ["engine", "substrate", "host"];
|
|
10
|
+
const ALLOWED_ACTIONS = [
|
|
11
|
+
"hover",
|
|
12
|
+
"resize",
|
|
13
|
+
"select",
|
|
14
|
+
"submit",
|
|
15
|
+
"approve",
|
|
16
|
+
"reject",
|
|
17
|
+
"pan",
|
|
18
|
+
"zoom",
|
|
19
|
+
"drag",
|
|
20
|
+
"filter"
|
|
21
|
+
];
|
|
22
|
+
const DATA_PROFILE_KEYS = [
|
|
23
|
+
"hasCategory",
|
|
24
|
+
"hasNumericMetric",
|
|
25
|
+
"categoryCardinality",
|
|
26
|
+
"hasGeo",
|
|
27
|
+
"hasTemporal",
|
|
28
|
+
"hasNodes",
|
|
29
|
+
"hasLinks",
|
|
30
|
+
"hasTabularRows",
|
|
31
|
+
"rowCount",
|
|
32
|
+
"hasEntityId",
|
|
33
|
+
"hasClaim",
|
|
34
|
+
"hasEvents",
|
|
35
|
+
"controlCount",
|
|
36
|
+
"allControlsLabelled",
|
|
37
|
+
"hasMapToken"
|
|
38
|
+
];
|
|
39
|
+
export {
|
|
40
|
+
ALLOWED_ACTIONS,
|
|
41
|
+
CATALOG_TIERS,
|
|
42
|
+
DATA_PROFILE_KEYS,
|
|
43
|
+
INTENTS
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../src/catalog/types.ts"],"sourcesContent":["/** Closed intent enum — Stage 3 must not rename these. */\nexport const INTENTS = [\n 'spatial',\n 'comparison',\n 'summary',\n 'form',\n 'evidence',\n 'graph',\n] as const;\n\nexport type Intent = (typeof INTENTS)[number];\n\nexport const CATALOG_TIERS = ['engine', 'substrate', 'host'] as const;\n\nexport type CatalogTier = (typeof CATALOG_TIERS)[number];\n\n/** Closed action types declared in engine metadata — not JS handler names. */\nexport const ALLOWED_ACTIONS = [\n 'hover',\n 'resize',\n 'select',\n 'submit',\n 'approve',\n 'reject',\n 'pan',\n 'zoom',\n 'drag',\n 'filter',\n] as const;\n\nexport type AllowedAction = (typeof ALLOWED_ACTIONS)[number];\n\n/** Closed DataProfile keys — evalCases.profile and `when` strings may use only these. */\nexport const DATA_PROFILE_KEYS = [\n 'hasCategory',\n 'hasNumericMetric',\n 'categoryCardinality',\n 'hasGeo',\n 'hasTemporal',\n 'hasNodes',\n 'hasLinks',\n 'hasTabularRows',\n 'rowCount',\n 'hasEntityId',\n 'hasClaim',\n 'hasEvents',\n 'controlCount',\n 'allControlsLabelled',\n 'hasMapToken',\n] as const;\n\nexport type DataProfileKey = (typeof DATA_PROFILE_KEYS)[number];\n\nexport type DataProfile = {\n hasCategory?: boolean;\n hasNumericMetric?: boolean;\n categoryCardinality?: number;\n hasGeo?: boolean;\n hasTemporal?: boolean;\n hasNodes?: boolean;\n hasLinks?: boolean;\n hasTabularRows?: boolean;\n rowCount?: number;\n hasEntityId?: boolean;\n hasClaim?: boolean;\n hasEvents?: boolean;\n controlCount?: number;\n allControlsLabelled?: boolean;\n hasMapToken?: boolean;\n};\n\nexport type DataRole = {\n id: string;\n required: boolean;\n description: string;\n cardinality?: string;\n type?: string;\n};\n\nexport type CatalogRule = {\n when: string;\n reason: string;\n};\n\nexport type AccessibilityBlock = {\n nameFrom: string;\n keyboard: string[];\n shadowBoundary: string;\n};\n\nexport type EvalCase = {\n id: string;\n intent: Intent;\n profile: DataProfile;\n expect: 'eligible' | 'disqualified';\n reasonIncludes: string;\n};\n\nexport type EngineMetadata = {\n id: string;\n tag: string;\n title: string;\n description: string;\n entry: string;\n lazyImport: string;\n propsSchema: Record<string, unknown>;\n tier: 'engine';\n intents: Intent[];\n dataRoles: DataRole[];\n eligibility: CatalogRule[];\n disqualify: CatalogRule[];\n allowedActions: AllowedAction[];\n accessibility: AccessibilityBlock;\n evalCases: EvalCase[];\n chartTypeKeys?: string[];\n source?: string;\n stack?: string;\n usageConditions?: Record<string, unknown>;\n};\n\nexport type PortMetadata = {\n id: string;\n tag: string;\n title?: string;\n description?: string;\n entry?: string;\n lazyImport?: string;\n tier?: CatalogTier;\n [key: string]: unknown;\n};\n"],"names":[],"mappings":"AACO,MAAM,UAAU;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIO,MAAM,gBAAgB,CAAC,UAAU,aAAa,MAAM;AAKpD,MAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKO,MAAM,oBAAoB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DataProfile, DataProfileKey } from './types.js';
|
|
2
|
+
declare function isDataProfileKey(key: string): key is DataProfileKey;
|
|
3
|
+
/** Pull `profile.<key>` identifiers out of a `when` string. */
|
|
4
|
+
export declare function profileKeysInWhen(when: string): string[];
|
|
5
|
+
export declare function assertWhenUsesClosedProfile(when: string): void;
|
|
6
|
+
export declare function assertProfileUsesClosedKeys(profile: DataProfile): void;
|
|
7
|
+
/**
|
|
8
|
+
* Evaluate a catalog `when` string against a profile.
|
|
9
|
+
* Only `profile.<DataProfileKey>`, numbers, && || ! comparisons, and grouping.
|
|
10
|
+
*/
|
|
11
|
+
export declare function evalWhen(when: string, profile: DataProfile): boolean;
|
|
12
|
+
export { isDataProfileKey };
|
|
13
|
+
//# sourceMappingURL=when.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when.d.ts","sourceRoot":"","sources":["../../src/catalog/when.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAetF,iBAAS,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,cAAc,CAE5D;AA8ND,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAIxD;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAK9D;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAMtE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAMpE;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { DATA_PROFILE_KEYS } from "./types.js";
|
|
2
|
+
const PROFILE_KEY_SET = new Set(DATA_PROFILE_KEYS);
|
|
3
|
+
const CMP_OPS = ["===", "!==", "<=", ">=", "<", ">"];
|
|
4
|
+
function isDataProfileKey(key) {
|
|
5
|
+
return PROFILE_KEY_SET.has(key);
|
|
6
|
+
}
|
|
7
|
+
function tokenize(when) {
|
|
8
|
+
const tokens = [];
|
|
9
|
+
let i = 0;
|
|
10
|
+
const src = when;
|
|
11
|
+
const skipWs = () => {
|
|
12
|
+
while (i < src.length && /\s/.test(src[i])) i += 1;
|
|
13
|
+
};
|
|
14
|
+
while (i < src.length) {
|
|
15
|
+
skipWs();
|
|
16
|
+
if (i >= src.length) break;
|
|
17
|
+
if (src.startsWith("profile.", i)) {
|
|
18
|
+
i += "profile.".length;
|
|
19
|
+
const start = i;
|
|
20
|
+
if (!/[A-Za-z]/.test(src[i] ?? "")) {
|
|
21
|
+
throw new Error(`when: expected DataProfile key after profile. at ${start}`);
|
|
22
|
+
}
|
|
23
|
+
i += 1;
|
|
24
|
+
while (i < src.length && /[A-Za-z0-9]/.test(src[i])) i += 1;
|
|
25
|
+
const key = src.slice(start, i);
|
|
26
|
+
if (!isDataProfileKey(key)) {
|
|
27
|
+
throw new Error(`when references unknown DataProfile key "${key}"`);
|
|
28
|
+
}
|
|
29
|
+
skipWs();
|
|
30
|
+
if (src[i] === "(") {
|
|
31
|
+
throw new Error("when does not allow calls");
|
|
32
|
+
}
|
|
33
|
+
tokens.push({ kind: "profile", key });
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (src.startsWith("&&", i)) {
|
|
37
|
+
tokens.push({ kind: "op", op: "&&" });
|
|
38
|
+
i += 2;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (src.startsWith("||", i)) {
|
|
42
|
+
tokens.push({ kind: "op", op: "||" });
|
|
43
|
+
i += 2;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (src.startsWith("===", i)) {
|
|
47
|
+
tokens.push({ kind: "op", op: "===" });
|
|
48
|
+
i += 3;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (src.startsWith("!==", i)) {
|
|
52
|
+
tokens.push({ kind: "op", op: "!==" });
|
|
53
|
+
i += 3;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (src.startsWith("<=", i)) {
|
|
57
|
+
tokens.push({ kind: "op", op: "<=" });
|
|
58
|
+
i += 2;
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (src.startsWith(">=", i)) {
|
|
62
|
+
tokens.push({ kind: "op", op: ">=" });
|
|
63
|
+
i += 2;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (src[i] === "<" || src[i] === ">") {
|
|
67
|
+
tokens.push({ kind: "op", op: src[i] });
|
|
68
|
+
i += 1;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (src[i] === "!") {
|
|
72
|
+
tokens.push({ kind: "op", op: "!" });
|
|
73
|
+
i += 1;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (src[i] === "(") {
|
|
77
|
+
tokens.push({ kind: "lparen" });
|
|
78
|
+
i += 1;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (src[i] === ")") {
|
|
82
|
+
tokens.push({ kind: "rparen" });
|
|
83
|
+
i += 1;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (src[i] === "-" || /[0-9]/.test(src[i])) {
|
|
87
|
+
const start = i;
|
|
88
|
+
if (src[i] === "-") i += 1;
|
|
89
|
+
if (!/[0-9]/.test(src[i] ?? "")) {
|
|
90
|
+
throw new Error(`when uses disallowed characters near "${src.slice(start)}"`);
|
|
91
|
+
}
|
|
92
|
+
while (i < src.length && /[0-9]/.test(src[i])) i += 1;
|
|
93
|
+
if (src[i] === ".") {
|
|
94
|
+
i += 1;
|
|
95
|
+
if (!/[0-9]/.test(src[i] ?? "")) {
|
|
96
|
+
throw new Error("when: number has a trailing dot");
|
|
97
|
+
}
|
|
98
|
+
while (i < src.length && /[0-9]/.test(src[i])) i += 1;
|
|
99
|
+
}
|
|
100
|
+
tokens.push({ kind: "number", value: Number(src.slice(start, i)) });
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
throw new Error(`when uses disallowed characters: ${src.slice(i)}`);
|
|
104
|
+
}
|
|
105
|
+
return tokens;
|
|
106
|
+
}
|
|
107
|
+
class Parser {
|
|
108
|
+
constructor(tokens, profile) {
|
|
109
|
+
this.tokens = tokens;
|
|
110
|
+
this.profile = profile;
|
|
111
|
+
this.pos = 0;
|
|
112
|
+
}
|
|
113
|
+
peek() {
|
|
114
|
+
return this.tokens[this.pos];
|
|
115
|
+
}
|
|
116
|
+
peekOp(op) {
|
|
117
|
+
const token = this.peek();
|
|
118
|
+
return (token == null ? void 0 : token.kind) === "op" && token.op === op;
|
|
119
|
+
}
|
|
120
|
+
take() {
|
|
121
|
+
const token = this.tokens[this.pos];
|
|
122
|
+
if (!token) throw new Error("when: unexpected end of expression");
|
|
123
|
+
this.pos += 1;
|
|
124
|
+
return token;
|
|
125
|
+
}
|
|
126
|
+
expectEnd() {
|
|
127
|
+
if (this.pos !== this.tokens.length) {
|
|
128
|
+
throw new Error("when: unexpected trailing tokens");
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
parseExpr() {
|
|
132
|
+
return this.parseOr();
|
|
133
|
+
}
|
|
134
|
+
parseOr() {
|
|
135
|
+
let left = this.parseAnd();
|
|
136
|
+
while (this.peekOp("||")) {
|
|
137
|
+
this.take();
|
|
138
|
+
const right = this.parseAnd();
|
|
139
|
+
left = left || right;
|
|
140
|
+
}
|
|
141
|
+
return left;
|
|
142
|
+
}
|
|
143
|
+
parseAnd() {
|
|
144
|
+
let left = this.parseComparison();
|
|
145
|
+
while (this.peekOp("&&")) {
|
|
146
|
+
this.take();
|
|
147
|
+
const right = this.parseComparison();
|
|
148
|
+
left = left && right;
|
|
149
|
+
}
|
|
150
|
+
return left;
|
|
151
|
+
}
|
|
152
|
+
parseComparison() {
|
|
153
|
+
const left = this.parseUnary();
|
|
154
|
+
const next = this.peek();
|
|
155
|
+
if ((next == null ? void 0 : next.kind) === "op" && CMP_OPS.includes(next.op)) {
|
|
156
|
+
const op = next.op;
|
|
157
|
+
this.take();
|
|
158
|
+
const right = this.parseUnary();
|
|
159
|
+
return compare(op, left, right);
|
|
160
|
+
}
|
|
161
|
+
return left;
|
|
162
|
+
}
|
|
163
|
+
parseUnary() {
|
|
164
|
+
const next = this.peek();
|
|
165
|
+
if ((next == null ? void 0 : next.kind) === "op" && next.op === "!") {
|
|
166
|
+
this.take();
|
|
167
|
+
return !this.parseUnary();
|
|
168
|
+
}
|
|
169
|
+
return this.parsePrimary();
|
|
170
|
+
}
|
|
171
|
+
parsePrimary() {
|
|
172
|
+
const token = this.take();
|
|
173
|
+
if (token.kind === "profile") {
|
|
174
|
+
return this.profile[token.key];
|
|
175
|
+
}
|
|
176
|
+
if (token.kind === "number") {
|
|
177
|
+
return token.value;
|
|
178
|
+
}
|
|
179
|
+
if (token.kind === "lparen") {
|
|
180
|
+
const inner = this.parseExpr();
|
|
181
|
+
const close = this.take();
|
|
182
|
+
if (close.kind !== "rparen") {
|
|
183
|
+
throw new Error("when: expected closing parenthesis");
|
|
184
|
+
}
|
|
185
|
+
return inner;
|
|
186
|
+
}
|
|
187
|
+
throw new Error("when: expected profile key, number, or grouped expression");
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
function compare(op, left, right) {
|
|
191
|
+
switch (op) {
|
|
192
|
+
case "===":
|
|
193
|
+
return left === right;
|
|
194
|
+
case "!==":
|
|
195
|
+
return left !== right;
|
|
196
|
+
case "<=":
|
|
197
|
+
return left <= right;
|
|
198
|
+
case ">=":
|
|
199
|
+
return left >= right;
|
|
200
|
+
case "<":
|
|
201
|
+
return left < right;
|
|
202
|
+
case ">":
|
|
203
|
+
return left > right;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
function profileKeysInWhen(when) {
|
|
207
|
+
return tokenize(when).filter((token) => token.kind === "profile").map((token) => token.key);
|
|
208
|
+
}
|
|
209
|
+
function assertWhenUsesClosedProfile(when) {
|
|
210
|
+
if (!when.trim()) {
|
|
211
|
+
throw new Error("empty when expression");
|
|
212
|
+
}
|
|
213
|
+
tokenize(when);
|
|
214
|
+
}
|
|
215
|
+
function assertProfileUsesClosedKeys(profile) {
|
|
216
|
+
for (const key of Object.keys(profile)) {
|
|
217
|
+
if (!PROFILE_KEY_SET.has(key)) {
|
|
218
|
+
throw new Error(`evalCases.profile has unknown key "${key}"`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
function evalWhen(when, profile) {
|
|
223
|
+
assertWhenUsesClosedProfile(when);
|
|
224
|
+
const parser = new Parser(tokenize(when), profile);
|
|
225
|
+
const value = parser.parseExpr();
|
|
226
|
+
parser.expectEnd();
|
|
227
|
+
return Boolean(value);
|
|
228
|
+
}
|
|
229
|
+
export {
|
|
230
|
+
assertProfileUsesClosedKeys,
|
|
231
|
+
assertWhenUsesClosedProfile,
|
|
232
|
+
evalWhen,
|
|
233
|
+
isDataProfileKey,
|
|
234
|
+
profileKeysInWhen
|
|
235
|
+
};
|
|
236
|
+
//# sourceMappingURL=when.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when.js","sources":["../../src/catalog/when.ts"],"sourcesContent":["import { DATA_PROFILE_KEYS, type DataProfile, type DataProfileKey } from './types.js';\n\nconst PROFILE_KEY_SET = new Set<string>(DATA_PROFILE_KEYS);\n\ntype CmpOp = '===' | '!==' | '<=' | '>=' | '<' | '>';\n\ntype Token =\n | { kind: 'profile'; key: DataProfileKey }\n | { kind: 'number'; value: number }\n | { kind: 'op'; op: '&&' | '||' | '!' | CmpOp }\n | { kind: 'lparen' }\n | { kind: 'rparen' };\n\nconst CMP_OPS: CmpOp[] = ['===', '!==', '<=', '>=', '<', '>'];\n\nfunction isDataProfileKey(key: string): key is DataProfileKey {\n return PROFILE_KEY_SET.has(key);\n}\n\nfunction tokenize(when: string): Token[] {\n const tokens: Token[] = [];\n let i = 0;\n const src = when;\n\n const skipWs = () => {\n while (i < src.length && /\\s/.test(src[i])) i += 1;\n };\n\n while (i < src.length) {\n skipWs();\n if (i >= src.length) break;\n\n if (src.startsWith('profile.', i)) {\n i += 'profile.'.length;\n const start = i;\n if (!/[A-Za-z]/.test(src[i] ?? '')) {\n throw new Error(`when: expected DataProfile key after profile. at ${start}`);\n }\n i += 1;\n while (i < src.length && /[A-Za-z0-9]/.test(src[i])) i += 1;\n const key = src.slice(start, i);\n if (!isDataProfileKey(key)) {\n throw new Error(`when references unknown DataProfile key \"${key}\"`);\n }\n skipWs();\n if (src[i] === '(') {\n throw new Error('when does not allow calls');\n }\n tokens.push({ kind: 'profile', key });\n continue;\n }\n\n if (src.startsWith('&&', i)) {\n tokens.push({ kind: 'op', op: '&&' });\n i += 2;\n continue;\n }\n if (src.startsWith('||', i)) {\n tokens.push({ kind: 'op', op: '||' });\n i += 2;\n continue;\n }\n if (src.startsWith('===', i)) {\n tokens.push({ kind: 'op', op: '===' });\n i += 3;\n continue;\n }\n if (src.startsWith('!==', i)) {\n tokens.push({ kind: 'op', op: '!==' });\n i += 3;\n continue;\n }\n if (src.startsWith('<=', i)) {\n tokens.push({ kind: 'op', op: '<=' });\n i += 2;\n continue;\n }\n if (src.startsWith('>=', i)) {\n tokens.push({ kind: 'op', op: '>=' });\n i += 2;\n continue;\n }\n if (src[i] === '<' || src[i] === '>') {\n tokens.push({ kind: 'op', op: src[i] as '<' | '>' });\n i += 1;\n continue;\n }\n if (src[i] === '!') {\n tokens.push({ kind: 'op', op: '!' });\n i += 1;\n continue;\n }\n if (src[i] === '(') {\n tokens.push({ kind: 'lparen' });\n i += 1;\n continue;\n }\n if (src[i] === ')') {\n tokens.push({ kind: 'rparen' });\n i += 1;\n continue;\n }\n\n if (src[i] === '-' || /[0-9]/.test(src[i])) {\n const start = i;\n if (src[i] === '-') i += 1;\n if (!/[0-9]/.test(src[i] ?? '')) {\n throw new Error(`when uses disallowed characters near \"${src.slice(start)}\"`);\n }\n while (i < src.length && /[0-9]/.test(src[i])) i += 1;\n if (src[i] === '.') {\n i += 1;\n if (!/[0-9]/.test(src[i] ?? '')) {\n throw new Error('when: number has a trailing dot');\n }\n while (i < src.length && /[0-9]/.test(src[i])) i += 1;\n }\n tokens.push({ kind: 'number', value: Number(src.slice(start, i)) });\n continue;\n }\n\n throw new Error(`when uses disallowed characters: ${src.slice(i)}`);\n }\n\n return tokens;\n}\n\nclass Parser {\n private pos = 0;\n\n constructor(\n private readonly tokens: Token[],\n private readonly profile: DataProfile,\n ) {}\n\n private peek(): Token | undefined {\n return this.tokens[this.pos];\n }\n\n private peekOp(op: '&&' | '||' | '!' | CmpOp): boolean {\n const token = this.peek();\n return token?.kind === 'op' && token.op === op;\n }\n\n private take(): Token {\n const token = this.tokens[this.pos];\n if (!token) throw new Error('when: unexpected end of expression');\n this.pos += 1;\n return token;\n }\n\n expectEnd(): void {\n if (this.pos !== this.tokens.length) {\n throw new Error('when: unexpected trailing tokens');\n }\n }\n\n parseExpr(): unknown {\n return this.parseOr();\n }\n\n private parseOr(): unknown {\n let left = this.parseAnd();\n while (this.peekOp('||')) {\n this.take();\n const right = this.parseAnd();\n left = left || right;\n }\n return left;\n }\n\n private parseAnd(): unknown {\n let left = this.parseComparison();\n while (this.peekOp('&&')) {\n this.take();\n const right = this.parseComparison();\n left = left && right;\n }\n return left;\n }\n\n private parseComparison(): unknown {\n const left = this.parseUnary();\n const next = this.peek();\n if (next?.kind === 'op' && (CMP_OPS as string[]).includes(next.op)) {\n const op = next.op as CmpOp;\n this.take();\n const right = this.parseUnary();\n return compare(op, left, right);\n }\n return left;\n }\n\n private parseUnary(): unknown {\n const next = this.peek();\n if (next?.kind === 'op' && next.op === '!') {\n this.take();\n return !this.parseUnary();\n }\n return this.parsePrimary();\n }\n\n private parsePrimary(): unknown {\n const token = this.take();\n if (token.kind === 'profile') {\n return this.profile[token.key];\n }\n if (token.kind === 'number') {\n return token.value;\n }\n if (token.kind === 'lparen') {\n const inner = this.parseExpr();\n const close = this.take();\n if (close.kind !== 'rparen') {\n throw new Error('when: expected closing parenthesis');\n }\n return inner;\n }\n throw new Error('when: expected profile key, number, or grouped expression');\n }\n}\n\nfunction compare(op: CmpOp, left: unknown, right: unknown): boolean {\n switch (op) {\n case '===':\n return left === right;\n case '!==':\n return left !== right;\n case '<=':\n return (left as number) <= (right as number);\n case '>=':\n return (left as number) >= (right as number);\n case '<':\n return (left as number) < (right as number);\n case '>':\n return (left as number) > (right as number);\n }\n}\n\n/** Pull `profile.<key>` identifiers out of a `when` string. */\nexport function profileKeysInWhen(when: string): string[] {\n return tokenize(when)\n .filter((token): token is Extract<Token, { kind: 'profile' }> => token.kind === 'profile')\n .map((token) => token.key);\n}\n\nexport function assertWhenUsesClosedProfile(when: string): void {\n if (!when.trim()) {\n throw new Error('empty when expression');\n }\n tokenize(when);\n}\n\nexport function assertProfileUsesClosedKeys(profile: DataProfile): void {\n for (const key of Object.keys(profile)) {\n if (!PROFILE_KEY_SET.has(key)) {\n throw new Error(`evalCases.profile has unknown key \"${key}\"`);\n }\n }\n}\n\n/**\n * Evaluate a catalog `when` string against a profile.\n * Only `profile.<DataProfileKey>`, numbers, && || ! comparisons, and grouping.\n */\nexport function evalWhen(when: string, profile: DataProfile): boolean {\n assertWhenUsesClosedProfile(when);\n const parser = new Parser(tokenize(when), profile);\n const value = parser.parseExpr();\n parser.expectEnd();\n return Boolean(value);\n}\n\nexport { isDataProfileKey };\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { LitElement, PropertyValues } from 'lit';
|
|
2
|
+
export declare class Ui9000ApprovalBar extends LitElement {
|
|
3
|
+
static styles: import('lit').CSSResult;
|
|
4
|
+
dataJson: string;
|
|
5
|
+
private _model;
|
|
6
|
+
private refresh;
|
|
7
|
+
connectedCallback(): void;
|
|
8
|
+
willUpdate(changed: PropertyValues): void;
|
|
9
|
+
render(): import('lit-html').TemplateResult<1>;
|
|
10
|
+
}
|
|
11
|
+
export declare function registerApprovalBar(): void;
|
|
12
|
+
declare global {
|
|
13
|
+
interface HTMLElementTagNameMap {
|
|
14
|
+
'ui9000-approval-bar': Ui9000ApprovalBar;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=ui9000-approval-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui9000-approval-bar.d.ts","sourceRoot":"","sources":["../../../../src/components/approval-bar/element/ui9000-approval-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAQ5D,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,0BAAiB;IAGvC,QAAQ,SAAQ;IAGhB,OAAO,CAAC,MAAM,CAA8B;IAE5C,OAAO,CAAC,OAAO;IAIN,iBAAiB,IAAI,IAAI;IAKzB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIzC,MAAM;CA8BhB;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAI1C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,iBAAiB,CAAC;KAC1C;CACF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { LitElement, html } from "lit";
|
|
2
|
+
import { property, state, customElement } from "lit/decorators.js";
|
|
3
|
+
import { dispatchUi9000Action } from "../../../element/dispatch-ui9000.js";
|
|
4
|
+
import { surfaceStyles } from "../../../element/surface-styles.js";
|
|
5
|
+
import { parseJsonAttr } from "../../../utils/chart-helpers.js";
|
|
6
|
+
import { normalizeApproval } from "../lib/normalize.js";
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
10
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
11
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
12
|
+
if (decorator = decorators[i])
|
|
13
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
14
|
+
if (kind && result) __defProp(target, key, result);
|
|
15
|
+
return result;
|
|
16
|
+
};
|
|
17
|
+
let Ui9000ApprovalBar = class extends LitElement {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this.dataJson = "{}";
|
|
21
|
+
this._model = null;
|
|
22
|
+
}
|
|
23
|
+
refresh() {
|
|
24
|
+
this._model = normalizeApproval(parseJsonAttr(this.dataJson, null));
|
|
25
|
+
}
|
|
26
|
+
connectedCallback() {
|
|
27
|
+
super.connectedCallback();
|
|
28
|
+
this.refresh();
|
|
29
|
+
}
|
|
30
|
+
willUpdate(changed) {
|
|
31
|
+
if (changed.has("dataJson")) this.refresh();
|
|
32
|
+
}
|
|
33
|
+
render() {
|
|
34
|
+
const model = this._model;
|
|
35
|
+
if (!model) {
|
|
36
|
+
return html`<p class="blocked" role="status">Proposal required</p>`;
|
|
37
|
+
}
|
|
38
|
+
return html`
|
|
39
|
+
<div class="root" role="region" aria-label="Approval">
|
|
40
|
+
<p>${model.proposal}</p>
|
|
41
|
+
<p class="muted">Displayed only — this host does not execute the action.</p>
|
|
42
|
+
<p class="muted">Status: ${model.status}</p>
|
|
43
|
+
<div class="actions">
|
|
44
|
+
<button
|
|
45
|
+
class="btn"
|
|
46
|
+
data-kind="approve"
|
|
47
|
+
type="button"
|
|
48
|
+
@click=${() => dispatchUi9000Action(this, { type: "approve" })}
|
|
49
|
+
>
|
|
50
|
+
Approve
|
|
51
|
+
</button>
|
|
52
|
+
<button
|
|
53
|
+
class="btn"
|
|
54
|
+
type="button"
|
|
55
|
+
@click=${() => dispatchUi9000Action(this, { type: "reject" })}
|
|
56
|
+
>
|
|
57
|
+
Reject
|
|
58
|
+
</button>
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
`;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
Ui9000ApprovalBar.styles = surfaceStyles;
|
|
65
|
+
__decorateClass([
|
|
66
|
+
property({ type: String, attribute: "data" })
|
|
67
|
+
], Ui9000ApprovalBar.prototype, "dataJson", 2);
|
|
68
|
+
__decorateClass([
|
|
69
|
+
state()
|
|
70
|
+
], Ui9000ApprovalBar.prototype, "_model", 2);
|
|
71
|
+
Ui9000ApprovalBar = __decorateClass([
|
|
72
|
+
customElement("ui9000-approval-bar")
|
|
73
|
+
], Ui9000ApprovalBar);
|
|
74
|
+
function registerApprovalBar() {
|
|
75
|
+
if (!customElements.get("ui9000-approval-bar")) {
|
|
76
|
+
customElements.define("ui9000-approval-bar", Ui9000ApprovalBar);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export {
|
|
80
|
+
Ui9000ApprovalBar,
|
|
81
|
+
registerApprovalBar
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=ui9000-approval-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui9000-approval-bar.js","sources":["../../../../src/components/approval-bar/element/ui9000-approval-bar.ts"],"sourcesContent":["import { html, LitElement, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { dispatchUi9000Action } from '../../../element/dispatch-ui9000.js';\nimport { surfaceStyles } from '../../../element/surface-styles.js';\nimport { parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport { normalizeApproval, type ApprovalModel } from '../lib/normalize.js';\n\n@customElement('ui9000-approval-bar')\nexport class Ui9000ApprovalBar extends LitElement {\n static override styles = surfaceStyles;\n\n @property({ type: String, attribute: 'data' })\n dataJson = '{}';\n\n @state()\n private _model: ApprovalModel | null = null;\n\n private refresh(): void {\n this._model = normalizeApproval(parseJsonAttr<unknown>(this.dataJson, null));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.refresh();\n }\n\n override willUpdate(changed: PropertyValues): void {\n if (changed.has('dataJson')) this.refresh();\n }\n\n override render() {\n const model = this._model;\n if (!model) {\n return html`<p class=\"blocked\" role=\"status\">Proposal required</p>`;\n }\n return html`\n <div class=\"root\" role=\"region\" aria-label=\"Approval\">\n <p>${model.proposal}</p>\n <p class=\"muted\">Displayed only — this host does not execute the action.</p>\n <p class=\"muted\">Status: ${model.status}</p>\n <div class=\"actions\">\n <button\n class=\"btn\"\n data-kind=\"approve\"\n type=\"button\"\n @click=${() => dispatchUi9000Action(this, { type: 'approve' })}\n >\n Approve\n </button>\n <button\n class=\"btn\"\n type=\"button\"\n @click=${() => dispatchUi9000Action(this, { type: 'reject' })}\n >\n Reject\n </button>\n </div>\n </div>\n `;\n }\n}\n\nexport function registerApprovalBar(): void {\n if (!customElements.get('ui9000-approval-bar')) {\n customElements.define('ui9000-approval-bar', Ui9000ApprovalBar);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-approval-bar': Ui9000ApprovalBar;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AASO,IAAM,oBAAN,cAAgC,WAAW;AAAA,EAA3C,cAAA;AAAA,UAAA,GAAA,SAAA;AAIL,SAAA,WAAW;AAGX,SAAQ,SAA+B;AAAA,EAAA;AAAA,EAE/B,UAAgB;AACtB,SAAK,SAAS,kBAAkB,cAAuB,KAAK,UAAU,IAAI,CAAC;AAAA,EAC7E;AAAA,EAES,oBAA0B;AACjC,UAAM,kBAAA;AACN,SAAK,QAAA;AAAA,EACP;AAAA,EAES,WAAW,SAA+B;AACjD,QAAI,QAAQ,IAAI,UAAU,QAAQ,QAAA;AAAA,EACpC;AAAA,EAES,SAAS;AAChB,UAAM,QAAQ,KAAK;AACnB,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AACA,WAAO;AAAA;AAAA,aAEE,MAAM,QAAQ;AAAA;AAAA,mCAEQ,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAM1B,MAAM,qBAAqB,MAAM,EAAE,MAAM,UAAA,CAAW,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAOrD,MAAM,qBAAqB,MAAM,EAAE,MAAM,SAAA,CAAU,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOvE;AACF;AApDa,kBACK,SAAS;AAGzB,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,QAAQ;AAAA,GAHlC,kBAIX,WAAA,YAAA,CAAA;AAGQ,gBAAA;AAAA,EADP,MAAA;AAAM,GANI,kBAOH,WAAA,UAAA,CAAA;AAPG,oBAAN,gBAAA;AAAA,EADN,cAAc,qBAAqB;AAAA,GACvB,iBAAA;AAsDN,SAAS,sBAA4B;AAC1C,MAAI,CAAC,eAAe,IAAI,qBAAqB,GAAG;AAC9C,mBAAe,OAAO,uBAAuB,iBAAiB;AAAA,EAChE;AACF;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { Ui9000ApprovalBar, registerApprovalBar } from './element/ui9000-approval-bar.js';
|
|
2
|
+
export { normalizeApproval, type ApprovalModel } from './lib/normalize.js';
|
|
3
|
+
export { default as approvalBarMetadata } from './metadata.json';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/approval-bar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { registerApprovalBar } from "./element/ui9000-approval-bar.js";
|
|
2
|
+
import { Ui9000ApprovalBar } from "./element/ui9000-approval-bar.js";
|
|
3
|
+
import { normalizeApproval } from "./lib/normalize.js";
|
|
4
|
+
import { default as default2 } from "./metadata.json.js";
|
|
5
|
+
export {
|
|
6
|
+
Ui9000ApprovalBar,
|
|
7
|
+
default2 as approvalBarMetadata,
|
|
8
|
+
normalizeApproval,
|
|
9
|
+
registerApprovalBar
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type ApprovalStatus = 'proposed' | 'approved' | 'rejected';
|
|
2
|
+
export type ApprovalModel = {
|
|
3
|
+
proposal: string;
|
|
4
|
+
status: ApprovalStatus;
|
|
5
|
+
};
|
|
6
|
+
export declare function normalizeApproval(raw: unknown): ApprovalModel | null;
|
|
7
|
+
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../../src/components/approval-bar/lib/normalize.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAUpE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
function normalizeApproval(raw) {
|
|
2
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) return null;
|
|
3
|
+
const o = raw;
|
|
4
|
+
const proposal = typeof o.proposal === "string" ? o.proposal.trim() : "";
|
|
5
|
+
if (!proposal) return null;
|
|
6
|
+
const status = o.status === "approved" || o.status === "rejected" || o.status === "proposed" ? o.status : "proposed";
|
|
7
|
+
return { proposal, status };
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
normalizeApproval
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sources":["../../../../src/components/approval-bar/lib/normalize.ts"],"sourcesContent":["export type ApprovalStatus = 'proposed' | 'approved' | 'rejected';\n\nexport type ApprovalModel = {\n proposal: string;\n status: ApprovalStatus;\n};\n\nexport function normalizeApproval(raw: unknown): ApprovalModel | null {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return null;\n const o = raw as Record<string, unknown>;\n const proposal = typeof o.proposal === 'string' ? o.proposal.trim() : '';\n if (!proposal) return null;\n const status =\n o.status === 'approved' || o.status === 'rejected' || o.status === 'proposed'\n ? o.status\n : 'proposed';\n return { proposal, status };\n}\n"],"names":[],"mappings":"AAOO,SAAS,kBAAkB,KAAoC;AACpE,MAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,MAAM,QAAQ,GAAG,EAAG,QAAO;AAClE,QAAM,IAAI;AACV,QAAM,WAAW,OAAO,EAAE,aAAa,WAAW,EAAE,SAAS,SAAS;AACtE,MAAI,CAAC,SAAU,QAAO;AACtB,QAAM,SACJ,EAAE,WAAW,cAAc,EAAE,WAAW,cAAc,EAAE,WAAW,aAC/D,EAAE,SACF;AACN,SAAO,EAAE,UAAU,OAAA;AACrB;"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
"id": "approval-bar",
|
|
3
|
+
"tag": "ui9000-approval-bar",
|
|
4
|
+
"title": "Approval Bar",
|
|
5
|
+
"description": "Propose / approve / reject. Displays only in a foreign host — does not execute.",
|
|
6
|
+
"chartTypeKeys": [],
|
|
7
|
+
"source": "ui9000-widgets Stage 2 close-out",
|
|
8
|
+
"stack": "lit",
|
|
9
|
+
"lazyImport": "@ui9000/widgets/lazy/approval-bar",
|
|
10
|
+
"entry": "@ui9000/widgets/approval-bar",
|
|
11
|
+
"usageConditions": {
|
|
12
|
+
"host": "mcp-chat",
|
|
13
|
+
"notFor": "fusedash-editor",
|
|
14
|
+
"mapsExcluded": true
|
|
15
|
+
},
|
|
16
|
+
"allowedActions": [
|
|
17
|
+
"approve",
|
|
18
|
+
"reject"
|
|
19
|
+
],
|
|
20
|
+
"tier": "engine",
|
|
21
|
+
"intents": [
|
|
22
|
+
"form"
|
|
23
|
+
],
|
|
24
|
+
"dataRoles": [
|
|
25
|
+
{
|
|
26
|
+
"id": "proposal",
|
|
27
|
+
"required": true,
|
|
28
|
+
"description": "The action being proposed."
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"eligibility": [
|
|
32
|
+
{
|
|
33
|
+
"when": "profile.hasClaim || profile.hasEntityId",
|
|
34
|
+
"reason": "Approval bar proposes an action on a claim or entity."
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"disqualify": [
|
|
38
|
+
{
|
|
39
|
+
"when": "!profile.hasClaim && !profile.hasEntityId",
|
|
40
|
+
"reason": "Without a claim or entity there is nothing to approve."
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"accessibility": {
|
|
44
|
+
"nameFrom": "proposal",
|
|
45
|
+
"keyboard": [
|
|
46
|
+
"Tab to Approve and Reject"
|
|
47
|
+
],
|
|
48
|
+
"shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element."
|
|
49
|
+
},
|
|
50
|
+
"evalCases": [
|
|
51
|
+
{
|
|
52
|
+
"id": "approval-picks-claim",
|
|
53
|
+
"intent": "form",
|
|
54
|
+
"profile": {
|
|
55
|
+
"hasClaim": true
|
|
56
|
+
},
|
|
57
|
+
"expect": "eligible",
|
|
58
|
+
"reasonIncludes": "proposes"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "approval-rejects-empty",
|
|
62
|
+
"intent": "form",
|
|
63
|
+
"profile": {
|
|
64
|
+
"hasClaim": false,
|
|
65
|
+
"hasEntityId": false
|
|
66
|
+
},
|
|
67
|
+
"expect": "disqualified",
|
|
68
|
+
"reasonIncludes": "nothing to approve"
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"propsSchema": {
|
|
72
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
73
|
+
"type": "object",
|
|
74
|
+
"properties": {
|
|
75
|
+
"data": {
|
|
76
|
+
"type": "object",
|
|
77
|
+
"properties": {
|
|
78
|
+
"proposal": {
|
|
79
|
+
"type": "string"
|
|
80
|
+
},
|
|
81
|
+
"status": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"enum": [
|
|
84
|
+
"proposed",
|
|
85
|
+
"approved",
|
|
86
|
+
"rejected"
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"required": [
|
|
93
|
+
"data"
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
;
|
|
98
|
+
|
|
99
|
+
export default _default;
|