@fusedashlabs/widgets 0.4.5 → 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 +17 -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/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/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/metadata.json.d.ts +1 -0
- package/dist/components/chart-renderer/metadata.json.js +3 -0
- 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/ui9000-custom-widget.d.ts +1 -2
- package/dist/components/custom-widget/element/ui9000-custom-widget.d.ts.map +1 -1
- package/dist/components/custom-widget/element/ui9000-custom-widget.js +12 -35
- package/dist/components/custom-widget/element/ui9000-custom-widget.js.map +1 -1
- package/dist/components/custom-widget/index.js +1 -1
- package/dist/components/custom-widget/lib/content.d.ts +1 -12
- package/dist/components/custom-widget/lib/content.d.ts.map +1 -1
- package/dist/components/custom-widget/lib/markdown.d.ts +1 -3
- package/dist/components/custom-widget/lib/markdown.d.ts.map +1 -1
- package/dist/components/custom-widget/lib/normalize.js +2 -2
- package/dist/components/custom-widget/lib/table.d.ts +1 -54
- package/dist/components/custom-widget/lib/table.d.ts.map +1 -1
- package/dist/components/custom-widget/metadata.json.d.ts +2 -1
- package/dist/components/custom-widget/metadata.json.js +4 -1
- package/dist/components/custom-widget/metadata.json.js.map +1 -1
- 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/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/{custom-widget/lib/content.js → image/lib/url.js} +4 -3
- 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/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/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.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.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/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/index.d.ts +18 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +99 -2
- 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.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 +16 -1
- package/dist/lazy/index.d.ts.map +1 -1
- package/dist/lazy/index.js +120 -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 +126 -1
- package/dist/components/custom-widget/lib/content.js.map +0 -1
- package/dist/components/custom-widget/lib/markdown.js.map +0 -1
- package/dist/components/custom-widget/lib/table.js.map +0 -1
- /package/dist/components/{custom-widget → table}/lib/table.js +0 -0
- /package/dist/components/{custom-widget → text}/lib/markdown.js +0 -0
|
@@ -9,6 +9,13 @@ const lazyImport = "@ui9000/widgets/lazy/histogram-chart";
|
|
|
9
9
|
const entry = "@ui9000/widgets/histogram-chart";
|
|
10
10
|
const usageConditions = { "host": "mcp-chat", "notFor": "fusedash-editor", "mapsExcluded": true };
|
|
11
11
|
const allowedActions = ["hover", "resize"];
|
|
12
|
+
const tier = "engine";
|
|
13
|
+
const intents = ["comparison"];
|
|
14
|
+
const dataRoles = [{ "id": "distribution", "required": true, "type": "number", "description": "Numeric values binned into a severity or score distribution." }];
|
|
15
|
+
const eligibility = [{ "when": "profile.hasNumericMetric && profile.rowCount >= 8", "reason": "Histogram shows the shape of a numeric distribution such as severity scores." }];
|
|
16
|
+
const disqualify = [{ "when": "profile.hasCategory && !profile.hasNumericMetric", "reason": "Category-only counts belong on bar-chart, not a histogram." }, { "when": "profile.hasGeo && !profile.hasNumericMetric", "reason": "Spatial-only data belongs on map-chart." }];
|
|
17
|
+
const accessibility = { "nameFrom": "title or xLabel", "keyboard": ["Tab into chart"], "shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element." };
|
|
18
|
+
const evalCases = [{ "id": "histogram-picks-score-distribution", "intent": "comparison", "profile": { "hasNumericMetric": true, "rowCount": 40 }, "expect": "eligible", "reasonIncludes": "distribution" }, { "id": "histogram-rejects-categories-only", "intent": "comparison", "profile": { "hasCategory": true, "hasNumericMetric": false }, "expect": "disqualified", "reasonIncludes": "bar-chart" }];
|
|
12
19
|
const propsSchema = { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "data": { "oneOf": [{ "type": "array", "items": { "type": "object", "required": ["label", "value"], "properties": { "label": { "type": "string" }, "value": { "type": "number" }, "color": { "type": "string" } } } }, { "type": "object", "properties": { "bins": { "type": "array", "items": { "type": "object", "required": ["x0", "x1", "stacks"], "properties": { "x0": { "type": "number" }, "x1": { "type": "number" }, "stacks": { "type": "array", "items": { "type": "object", "required": ["group", "count"], "properties": { "group": { "type": "string" }, "count": { "type": "number" }, "color": { "type": "string" } } } } } } }, "xMin": { "type": "number" }, "xMax": { "type": "number" } }, "required": ["bins"] }, { "type": "object", "properties": { "xMin": { "type": "number" }, "xMax": { "type": "number" }, "groups": { "type": "array", "items": { "type": "string" } }, "data": { "type": "array", "items": { "type": "object", "required": ["bucketIndex", "count"], "properties": { "bucketIndex": { "type": "number" }, "count": { "type": "number" }, "group": { "type": "string" }, "color": { "type": "string" } } } } }, "required": ["xMin", "xMax", "data"] }] }, "scale": { "type": "string", "enum": ["compact", "default", "comfortable"], "default": "default" }, "showGrid": { "type": "boolean", "default": true }, "showLegend": { "type": "boolean", "default": true }, "showTooltip": { "type": "boolean", "default": true }, "xLabel": { "type": "string" }, "yLabel": { "type": "string" } }, "required": ["data"] };
|
|
13
20
|
const histogramMeta = {
|
|
14
21
|
id,
|
|
@@ -22,20 +29,34 @@ const histogramMeta = {
|
|
|
22
29
|
entry,
|
|
23
30
|
usageConditions,
|
|
24
31
|
allowedActions,
|
|
32
|
+
tier,
|
|
33
|
+
intents,
|
|
34
|
+
dataRoles,
|
|
35
|
+
eligibility,
|
|
36
|
+
disqualify,
|
|
37
|
+
accessibility,
|
|
38
|
+
evalCases,
|
|
25
39
|
propsSchema
|
|
26
40
|
};
|
|
27
41
|
export {
|
|
42
|
+
accessibility,
|
|
28
43
|
allowedActions,
|
|
29
44
|
chartTypeKeys,
|
|
45
|
+
dataRoles,
|
|
30
46
|
histogramMeta as default,
|
|
31
47
|
description,
|
|
48
|
+
disqualify,
|
|
49
|
+
eligibility,
|
|
32
50
|
entry,
|
|
51
|
+
evalCases,
|
|
33
52
|
id,
|
|
53
|
+
intents,
|
|
34
54
|
lazyImport,
|
|
35
55
|
propsSchema,
|
|
36
56
|
source,
|
|
37
57
|
stack,
|
|
38
58
|
tag,
|
|
59
|
+
tier,
|
|
39
60
|
title,
|
|
40
61
|
usageConditions
|
|
41
62
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { LitElement, PropertyValues } from 'lit';
|
|
2
|
+
export declare class Ui9000Image extends LitElement {
|
|
3
|
+
static styles: import('lit').CSSResult[];
|
|
4
|
+
dataJson: string;
|
|
5
|
+
private _image;
|
|
6
|
+
private refresh;
|
|
7
|
+
connectedCallback(): void;
|
|
8
|
+
willUpdate(changed: PropertyValues): void;
|
|
9
|
+
render(): import('lit-html').TemplateResult<1>;
|
|
10
|
+
}
|
|
11
|
+
export declare function registerImage(): void;
|
|
12
|
+
declare global {
|
|
13
|
+
interface HTMLElementTagNameMap {
|
|
14
|
+
'ui9000-image': Ui9000Image;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=ui9000-image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui9000-image.d.ts","sourceRoot":"","sources":["../../../../src/components/image/element/ui9000-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAoBjE,qBACa,WAAY,SAAQ,UAAU;IACzC,OAAgB,MAAM,4BAAgC;IAGtD,QAAQ,SAAQ;IAGhB,OAAO,CAAC,MAAM,CAA6C;IAE3D,OAAO,CAAC,OAAO;IAIN,iBAAiB,IAAI,IAAI;IAKzB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIzC,MAAM;CAUhB;AAED,wBAAgB,aAAa,IAAI,IAAI,CAIpC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { LitElement, html, css } from "lit";
|
|
2
|
+
import { property, state, customElement } from "lit/decorators.js";
|
|
3
|
+
import { surfaceStyles } from "../../../element/surface-styles.js";
|
|
4
|
+
import { parseJsonAttr } from "../../../utils/chart-helpers.js";
|
|
5
|
+
import { normalizeImageContent } from "../lib/url.js";
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
8
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
9
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
10
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
11
|
+
if (decorator = decorators[i])
|
|
12
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
13
|
+
if (kind && result) __defProp(target, key, result);
|
|
14
|
+
return result;
|
|
15
|
+
};
|
|
16
|
+
const imageStyles = css`
|
|
17
|
+
.image-pane {
|
|
18
|
+
display: flex;
|
|
19
|
+
overflow: hidden;
|
|
20
|
+
border-radius: 6px;
|
|
21
|
+
}
|
|
22
|
+
.image-pane img {
|
|
23
|
+
width: 100%;
|
|
24
|
+
height: 100%;
|
|
25
|
+
object-fit: cover;
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
let Ui9000Image = class extends LitElement {
|
|
29
|
+
constructor() {
|
|
30
|
+
super(...arguments);
|
|
31
|
+
this.dataJson = "{}";
|
|
32
|
+
this._image = null;
|
|
33
|
+
}
|
|
34
|
+
refresh() {
|
|
35
|
+
this._image = normalizeImageContent(parseJsonAttr(this.dataJson, {}));
|
|
36
|
+
}
|
|
37
|
+
connectedCallback() {
|
|
38
|
+
super.connectedCallback();
|
|
39
|
+
this.refresh();
|
|
40
|
+
}
|
|
41
|
+
willUpdate(changed) {
|
|
42
|
+
if (changed.has("dataJson")) this.refresh();
|
|
43
|
+
}
|
|
44
|
+
render() {
|
|
45
|
+
if (!this._image) {
|
|
46
|
+
return html`<p class="blocked" role="status">Image URL must be http(s)</p>`;
|
|
47
|
+
}
|
|
48
|
+
return html`
|
|
49
|
+
<div class="root image-pane">
|
|
50
|
+
<img src=${this._image.src} alt=${this._image.alt} referrerpolicy="no-referrer" />
|
|
51
|
+
</div>
|
|
52
|
+
`;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
Ui9000Image.styles = [surfaceStyles, imageStyles];
|
|
56
|
+
__decorateClass([
|
|
57
|
+
property({ type: String, attribute: "data" })
|
|
58
|
+
], Ui9000Image.prototype, "dataJson", 2);
|
|
59
|
+
__decorateClass([
|
|
60
|
+
state()
|
|
61
|
+
], Ui9000Image.prototype, "_image", 2);
|
|
62
|
+
Ui9000Image = __decorateClass([
|
|
63
|
+
customElement("ui9000-image")
|
|
64
|
+
], Ui9000Image);
|
|
65
|
+
function registerImage() {
|
|
66
|
+
if (!customElements.get("ui9000-image")) {
|
|
67
|
+
customElements.define("ui9000-image", Ui9000Image);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export {
|
|
71
|
+
Ui9000Image,
|
|
72
|
+
registerImage
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=ui9000-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui9000-image.js","sources":["../../../../src/components/image/element/ui9000-image.ts"],"sourcesContent":["import { css, html, LitElement, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { surfaceStyles } from '../../../element/surface-styles.js';\nimport { parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport { normalizeImageContent } from '../lib/url.js';\n\nconst imageStyles = css`\n .image-pane {\n display: flex;\n overflow: hidden;\n border-radius: 6px;\n }\n .image-pane img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n`;\n\n@customElement('ui9000-image')\nexport class Ui9000Image extends LitElement {\n static override styles = [surfaceStyles, imageStyles];\n\n @property({ type: String, attribute: 'data' })\n dataJson = '{}';\n\n @state()\n private _image: { src: string; alt: string } | null = null;\n\n private refresh(): void {\n this._image = normalizeImageContent(parseJsonAttr<Record<string, unknown>>(this.dataJson, {}));\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 if (!this._image) {\n return html`<p class=\"blocked\" role=\"status\">Image URL must be http(s)</p>`;\n }\n return html`\n <div class=\"root image-pane\">\n <img src=${this._image.src} alt=${this._image.alt} referrerpolicy=\"no-referrer\" />\n </div>\n `;\n }\n}\n\nexport function registerImage(): void {\n if (!customElements.get('ui9000-image')) {\n customElements.define('ui9000-image', Ui9000Image);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-image': Ui9000Image;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAOA,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcb,IAAM,cAAN,cAA0B,WAAW;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA;AAIL,SAAA,WAAW;AAGX,SAAQ,SAA8C;AAAA,EAAA;AAAA,EAE9C,UAAgB;AACtB,SAAK,SAAS,sBAAsB,cAAuC,KAAK,UAAU,CAAA,CAAE,CAAC;AAAA,EAC/F;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,QAAI,CAAC,KAAK,QAAQ;AAChB,aAAO;AAAA,IACT;AACA,WAAO;AAAA;AAAA,mBAEQ,KAAK,OAAO,GAAG,QAAQ,KAAK,OAAO,GAAG;AAAA;AAAA;AAAA,EAGvD;AACF;AAhCa,YACK,SAAS,CAAC,eAAe,WAAW;AAGpD,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,QAAQ;AAAA,GAHlC,YAIX,WAAA,YAAA,CAAA;AAGQ,gBAAA;AAAA,EADP,MAAA;AAAM,GANI,YAOH,WAAA,UAAA,CAAA;AAPG,cAAN,gBAAA;AAAA,EADN,cAAc,cAAc;AAAA,GAChB,WAAA;AAkCN,SAAS,gBAAsB;AACpC,MAAI,CAAC,eAAe,IAAI,cAAc,GAAG;AACvC,mBAAe,OAAO,gBAAgB,WAAW;AAAA,EACnD;AACF;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/image/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { registerImage } from "./element/ui9000-image.js";
|
|
2
|
+
import { Ui9000Image } from "./element/ui9000-image.js";
|
|
3
|
+
import { isExternalImageUrl, normalizeImageContent, normalizeTextContent } from "./lib/url.js";
|
|
4
|
+
import { default as default2 } from "./metadata.json.js";
|
|
5
|
+
export {
|
|
6
|
+
Ui9000Image,
|
|
7
|
+
default2 as imageMetadata,
|
|
8
|
+
isExternalImageUrl,
|
|
9
|
+
normalizeImageContent,
|
|
10
|
+
normalizeTextContent,
|
|
11
|
+
registerImage
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Text + image panes — MCP is read-only (no editor, upload, or AI chat). */
|
|
2
|
+
export declare function normalizeTextContent(widget: {
|
|
3
|
+
text?: unknown;
|
|
4
|
+
}): string | null;
|
|
5
|
+
export declare function isExternalImageUrl(url: string): boolean;
|
|
6
|
+
export declare function normalizeImageContent(widget: {
|
|
7
|
+
imageUrl?: unknown;
|
|
8
|
+
src?: unknown;
|
|
9
|
+
alt?: unknown;
|
|
10
|
+
}): {
|
|
11
|
+
src: string;
|
|
12
|
+
alt: string;
|
|
13
|
+
} | null;
|
|
14
|
+
//# sourceMappingURL=url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../../src/components/image/lib/url.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAI7E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAI9E;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOtC"}
|
|
@@ -8,8 +8,9 @@ function isExternalImageUrl(url) {
|
|
|
8
8
|
return HTTP_URL.test(url.trim());
|
|
9
9
|
}
|
|
10
10
|
function normalizeImageContent(widget) {
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
const raw = typeof widget.imageUrl === "string" ? widget.imageUrl : widget.src;
|
|
12
|
+
if (typeof raw !== "string") return null;
|
|
13
|
+
const src = raw.trim();
|
|
13
14
|
if (!src || src === "-" || !isExternalImageUrl(src)) return null;
|
|
14
15
|
const alt = typeof widget.alt === "string" && widget.alt.trim() ? widget.alt.trim() : "Preview";
|
|
15
16
|
return { src, alt };
|
|
@@ -19,4 +20,4 @@ export {
|
|
|
19
20
|
normalizeImageContent,
|
|
20
21
|
normalizeTextContent
|
|
21
22
|
};
|
|
22
|
-
//# sourceMappingURL=
|
|
23
|
+
//# sourceMappingURL=url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","sources":["../../../../src/components/image/lib/url.ts"],"sourcesContent":["/** Text + image panes — MCP is read-only (no editor, upload, or AI chat). */\n\nconst HTTP_URL = /^https?:\\/\\//i;\n\nexport function normalizeTextContent(widget: { text?: unknown }): string | null {\n if (typeof widget.text !== 'string') return null;\n const text = widget.text.trim();\n return text ? text : null;\n}\n\nexport function isExternalImageUrl(url: string): boolean {\n return HTTP_URL.test(url.trim());\n}\n\nexport function normalizeImageContent(widget: {\n imageUrl?: unknown;\n src?: unknown;\n alt?: unknown;\n}): { src: string; alt: string } | null {\n const raw = typeof widget.imageUrl === 'string' ? widget.imageUrl : widget.src;\n if (typeof raw !== 'string') return null;\n const src = raw.trim();\n if (!src || src === '-' || !isExternalImageUrl(src)) return null;\n const alt = typeof widget.alt === 'string' && widget.alt.trim() ? widget.alt.trim() : 'Preview';\n return { src, alt };\n}\n"],"names":[],"mappings":"AAEA,MAAM,WAAW;AAEV,SAAS,qBAAqB,QAA2C;AAC9E,MAAI,OAAO,OAAO,SAAS,SAAU,QAAO;AAC5C,QAAM,OAAO,OAAO,KAAK,KAAA;AACzB,SAAO,OAAO,OAAO;AACvB;AAEO,SAAS,mBAAmB,KAAsB;AACvD,SAAO,SAAS,KAAK,IAAI,KAAA,CAAM;AACjC;AAEO,SAAS,sBAAsB,QAIE;AACtC,QAAM,MAAM,OAAO,OAAO,aAAa,WAAW,OAAO,WAAW,OAAO;AAC3E,MAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,QAAM,MAAM,IAAI,KAAA;AAChB,MAAI,CAAC,OAAO,QAAQ,OAAO,CAAC,mBAAmB,GAAG,EAAG,QAAO;AAC5D,QAAM,MAAM,OAAO,OAAO,QAAQ,YAAY,OAAO,IAAI,KAAA,IAAS,OAAO,IAAI,KAAA,IAAS;AACtF,SAAO,EAAE,KAAK,IAAA;AAChB;"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
"id": "image",
|
|
3
|
+
"tag": "ui9000-image",
|
|
4
|
+
"title": "Image",
|
|
5
|
+
"description": "http(s) screenshot / IOC image. Rejects javascript: and data: URLs.",
|
|
6
|
+
"chartTypeKeys": [],
|
|
7
|
+
"source": "ui9000-widgets Stage 2 close-out",
|
|
8
|
+
"stack": "lit",
|
|
9
|
+
"lazyImport": "@ui9000/widgets/lazy/image",
|
|
10
|
+
"entry": "@ui9000/widgets/image",
|
|
11
|
+
"usageConditions": {
|
|
12
|
+
"host": "mcp-chat",
|
|
13
|
+
"notFor": "fusedash-editor",
|
|
14
|
+
"mapsExcluded": true
|
|
15
|
+
},
|
|
16
|
+
"allowedActions": [
|
|
17
|
+
"resize"
|
|
18
|
+
],
|
|
19
|
+
"tier": "engine",
|
|
20
|
+
"intents": [
|
|
21
|
+
"evidence"
|
|
22
|
+
],
|
|
23
|
+
"dataRoles": [
|
|
24
|
+
{
|
|
25
|
+
"id": "image",
|
|
26
|
+
"required": true,
|
|
27
|
+
"description": "http(s) image URL."
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"eligibility": [
|
|
31
|
+
{
|
|
32
|
+
"when": "profile.hasClaim",
|
|
33
|
+
"reason": "Image supports a claim (screenshot, IOC)."
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"disqualify": [
|
|
37
|
+
{
|
|
38
|
+
"when": "!profile.hasClaim",
|
|
39
|
+
"reason": "An image without a claim is decoration; use evidence-panel."
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"accessibility": {
|
|
43
|
+
"nameFrom": "alt",
|
|
44
|
+
"keyboard": [
|
|
45
|
+
"Tab onto image"
|
|
46
|
+
],
|
|
47
|
+
"shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element."
|
|
48
|
+
},
|
|
49
|
+
"evalCases": [
|
|
50
|
+
{
|
|
51
|
+
"id": "image-picks-with-claim",
|
|
52
|
+
"intent": "evidence",
|
|
53
|
+
"profile": {
|
|
54
|
+
"hasClaim": true
|
|
55
|
+
},
|
|
56
|
+
"expect": "eligible",
|
|
57
|
+
"reasonIncludes": "screenshot"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "image-rejects-no-claim",
|
|
61
|
+
"intent": "evidence",
|
|
62
|
+
"profile": {
|
|
63
|
+
"hasClaim": false
|
|
64
|
+
},
|
|
65
|
+
"expect": "disqualified",
|
|
66
|
+
"reasonIncludes": "evidence-panel"
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"propsSchema": {
|
|
70
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
71
|
+
"type": "object",
|
|
72
|
+
"properties": {
|
|
73
|
+
"data": {
|
|
74
|
+
"type": "object",
|
|
75
|
+
"properties": {
|
|
76
|
+
"src": {
|
|
77
|
+
"type": "string"
|
|
78
|
+
},
|
|
79
|
+
"imageUrl": {
|
|
80
|
+
"type": "string"
|
|
81
|
+
},
|
|
82
|
+
"alt": {
|
|
83
|
+
"type": "string"
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"required": [
|
|
89
|
+
"data"
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
;
|
|
94
|
+
|
|
95
|
+
export default _default;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
const id = "image";
|
|
2
|
+
const tag = "ui9000-image";
|
|
3
|
+
const title = "Image";
|
|
4
|
+
const description = "http(s) screenshot / IOC image. Rejects javascript: and data: URLs.";
|
|
5
|
+
const chartTypeKeys = [];
|
|
6
|
+
const source = "ui9000-widgets Stage 2 close-out";
|
|
7
|
+
const stack = "lit";
|
|
8
|
+
const lazyImport = "@ui9000/widgets/lazy/image";
|
|
9
|
+
const entry = "@ui9000/widgets/image";
|
|
10
|
+
const usageConditions = { "host": "mcp-chat", "notFor": "fusedash-editor", "mapsExcluded": true };
|
|
11
|
+
const allowedActions = ["resize"];
|
|
12
|
+
const tier = "engine";
|
|
13
|
+
const intents = ["evidence"];
|
|
14
|
+
const dataRoles = [{ "id": "image", "required": true, "description": "http(s) image URL." }];
|
|
15
|
+
const eligibility = [{ "when": "profile.hasClaim", "reason": "Image supports a claim (screenshot, IOC)." }];
|
|
16
|
+
const disqualify = [{ "when": "!profile.hasClaim", "reason": "An image without a claim is decoration; use evidence-panel." }];
|
|
17
|
+
const accessibility = { "nameFrom": "alt", "keyboard": ["Tab onto image"], "shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element." };
|
|
18
|
+
const evalCases = [{ "id": "image-picks-with-claim", "intent": "evidence", "profile": { "hasClaim": true }, "expect": "eligible", "reasonIncludes": "screenshot" }, { "id": "image-rejects-no-claim", "intent": "evidence", "profile": { "hasClaim": false }, "expect": "disqualified", "reasonIncludes": "evidence-panel" }];
|
|
19
|
+
const propsSchema = { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "data": { "type": "object", "properties": { "src": { "type": "string" }, "imageUrl": { "type": "string" }, "alt": { "type": "string" } } } }, "required": ["data"] };
|
|
20
|
+
const metadata = {
|
|
21
|
+
id,
|
|
22
|
+
tag,
|
|
23
|
+
title,
|
|
24
|
+
description,
|
|
25
|
+
chartTypeKeys,
|
|
26
|
+
source,
|
|
27
|
+
stack,
|
|
28
|
+
lazyImport,
|
|
29
|
+
entry,
|
|
30
|
+
usageConditions,
|
|
31
|
+
allowedActions,
|
|
32
|
+
tier,
|
|
33
|
+
intents,
|
|
34
|
+
dataRoles,
|
|
35
|
+
eligibility,
|
|
36
|
+
disqualify,
|
|
37
|
+
accessibility,
|
|
38
|
+
evalCases,
|
|
39
|
+
propsSchema
|
|
40
|
+
};
|
|
41
|
+
export {
|
|
42
|
+
accessibility,
|
|
43
|
+
allowedActions,
|
|
44
|
+
chartTypeKeys,
|
|
45
|
+
dataRoles,
|
|
46
|
+
metadata as default,
|
|
47
|
+
description,
|
|
48
|
+
disqualify,
|
|
49
|
+
eligibility,
|
|
50
|
+
entry,
|
|
51
|
+
evalCases,
|
|
52
|
+
id,
|
|
53
|
+
intents,
|
|
54
|
+
lazyImport,
|
|
55
|
+
propsSchema,
|
|
56
|
+
source,
|
|
57
|
+
stack,
|
|
58
|
+
tag,
|
|
59
|
+
tier,
|
|
60
|
+
title,
|
|
61
|
+
usageConditions
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=metadata.json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -14,6 +14,53 @@ declare const _default: {
|
|
|
14
14
|
"mapsExcluded": true
|
|
15
15
|
},
|
|
16
16
|
"allowedActions": ["resize"],
|
|
17
|
+
"tier": "engine",
|
|
18
|
+
"intents": ["summary"],
|
|
19
|
+
"dataRoles": [
|
|
20
|
+
{
|
|
21
|
+
"id": "metric",
|
|
22
|
+
"required": true,
|
|
23
|
+
"type": "number",
|
|
24
|
+
"description": "One or more headline counts or scores."
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"eligibility": [
|
|
28
|
+
{
|
|
29
|
+
"when": "profile.hasNumericMetric && profile.categoryCardinality <= 12",
|
|
30
|
+
"reason": "KPI summarises a small set of numeric headlines."
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"disqualify": [
|
|
34
|
+
{
|
|
35
|
+
"when": "profile.hasTabularRows && profile.rowCount > 20 && !profile.hasNumericMetric",
|
|
36
|
+
"reason": "Row-heavy evidence belongs on table, not KPI cards."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"when": "profile.hasGeo && !profile.hasNumericMetric",
|
|
40
|
+
"reason": "Spatial-only data belongs on map-chart."
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"accessibility": {
|
|
44
|
+
"nameFrom": "card name",
|
|
45
|
+
"keyboard": ["Tab between cards"],
|
|
46
|
+
"shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element."
|
|
47
|
+
},
|
|
48
|
+
"evalCases": [
|
|
49
|
+
{
|
|
50
|
+
"id": "kpi-picks-counts",
|
|
51
|
+
"intent": "summary",
|
|
52
|
+
"profile": { "hasNumericMetric": true, "categoryCardinality": 4 },
|
|
53
|
+
"expect": "eligible",
|
|
54
|
+
"reasonIncludes": "headlines"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "kpi-rejects-geo-only",
|
|
58
|
+
"intent": "spatial",
|
|
59
|
+
"profile": { "hasGeo": true, "hasNumericMetric": false },
|
|
60
|
+
"expect": "disqualified",
|
|
61
|
+
"reasonIncludes": "map-chart"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
17
64
|
"propsSchema": {
|
|
18
65
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
19
66
|
"type": "object",
|
|
@@ -9,6 +9,13 @@ const lazyImport = "@ui9000/widgets/lazy/kpi-widget";
|
|
|
9
9
|
const entry = "@ui9000/widgets/kpi-widget";
|
|
10
10
|
const usageConditions = { "host": "mcp-chat", "notFor": "fusedash-editor", "mapsExcluded": true };
|
|
11
11
|
const allowedActions = ["resize"];
|
|
12
|
+
const tier = "engine";
|
|
13
|
+
const intents = ["summary"];
|
|
14
|
+
const dataRoles = [{ "id": "metric", "required": true, "type": "number", "description": "One or more headline counts or scores." }];
|
|
15
|
+
const eligibility = [{ "when": "profile.hasNumericMetric && profile.categoryCardinality <= 12", "reason": "KPI summarises a small set of numeric headlines." }];
|
|
16
|
+
const disqualify = [{ "when": "profile.hasTabularRows && profile.rowCount > 20 && !profile.hasNumericMetric", "reason": "Row-heavy evidence belongs on table, not KPI cards." }, { "when": "profile.hasGeo && !profile.hasNumericMetric", "reason": "Spatial-only data belongs on map-chart." }];
|
|
17
|
+
const accessibility = { "nameFrom": "card name", "keyboard": ["Tab between cards"], "shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element." };
|
|
18
|
+
const evalCases = [{ "id": "kpi-picks-counts", "intent": "summary", "profile": { "hasNumericMetric": true, "categoryCardinality": 4 }, "expect": "eligible", "reasonIncludes": "headlines" }, { "id": "kpi-rejects-geo-only", "intent": "spatial", "profile": { "hasGeo": true, "hasNumericMetric": false }, "expect": "disqualified", "reasonIncludes": "map-chart" }];
|
|
12
19
|
const propsSchema = { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "data": { "oneOf": [{ "type": "object", "description": "Multi-KPI dashboard (chartType KPIs)", "properties": { "chartType": { "const": "KPIs" }, "items": { "type": "array" } } }, { "type": "object", "description": "Single FuseDash KPI item (chartType KPI)", "properties": { "chartType": { "const": "KPI" }, "type": { "type": "string" }, "data": { "type": "array" } } }, { "type": "array", "description": "Array of KPI items from MCP tool output" }] }, "scale": { "type": "string", "enum": ["compact", "default", "comfortable"] } } };
|
|
13
20
|
const kpiMeta = {
|
|
14
21
|
id,
|
|
@@ -22,20 +29,34 @@ const kpiMeta = {
|
|
|
22
29
|
entry,
|
|
23
30
|
usageConditions,
|
|
24
31
|
allowedActions,
|
|
32
|
+
tier,
|
|
33
|
+
intents,
|
|
34
|
+
dataRoles,
|
|
35
|
+
eligibility,
|
|
36
|
+
disqualify,
|
|
37
|
+
accessibility,
|
|
38
|
+
evalCases,
|
|
25
39
|
propsSchema
|
|
26
40
|
};
|
|
27
41
|
export {
|
|
42
|
+
accessibility,
|
|
28
43
|
allowedActions,
|
|
29
44
|
chartTypeKeys,
|
|
45
|
+
dataRoles,
|
|
30
46
|
kpiMeta as default,
|
|
31
47
|
description,
|
|
48
|
+
disqualify,
|
|
49
|
+
eligibility,
|
|
32
50
|
entry,
|
|
51
|
+
evalCases,
|
|
33
52
|
id,
|
|
53
|
+
intents,
|
|
34
54
|
lazyImport,
|
|
35
55
|
propsSchema,
|
|
36
56
|
source,
|
|
37
57
|
stack,
|
|
38
58
|
tag,
|
|
59
|
+
tier,
|
|
39
60
|
title,
|
|
40
61
|
usageConditions
|
|
41
62
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -6,8 +6,8 @@ declare const _default: {
|
|
|
6
6
|
"chartTypeKeys": ["mapChart", "UniversalMap"],
|
|
7
7
|
"source": "client/libs/shared/components/src/Widgets/MapBox/",
|
|
8
8
|
"stack": "mapbox-gl",
|
|
9
|
-
"lazyImport": "@
|
|
10
|
-
"entry": "@
|
|
9
|
+
"lazyImport": "@ui9000/widgets/lazy/map-chart",
|
|
10
|
+
"entry": "@ui9000/widgets/map-chart",
|
|
11
11
|
"usageConditions": {
|
|
12
12
|
"host": "mcp-chat",
|
|
13
13
|
"notFor": "fusedash-editor",
|
|
@@ -16,6 +16,58 @@ declare const _default: {
|
|
|
16
16
|
"requires": ["mapbox-token", "geojson", "pmtiles"]
|
|
17
17
|
},
|
|
18
18
|
"allowedActions": ["hover", "pan", "zoom", "resize"],
|
|
19
|
+
"tier": "engine",
|
|
20
|
+
"intents": ["spatial"],
|
|
21
|
+
"dataRoles": [
|
|
22
|
+
{
|
|
23
|
+
"id": "geo",
|
|
24
|
+
"required": true,
|
|
25
|
+
"description": "lat/lng or a region id that joins to GeoJSON / PMTiles."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "metric",
|
|
29
|
+
"required": false,
|
|
30
|
+
"type": "number",
|
|
31
|
+
"description": "Optional fill or bubble magnitude."
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"eligibility": [
|
|
35
|
+
{
|
|
36
|
+
"when": "profile.hasGeo && profile.hasMapToken",
|
|
37
|
+
"reason": "Map is eligible when the profile is spatial and a Mapbox token plus tiles are available (lazy entry)."
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"disqualify": [
|
|
41
|
+
{
|
|
42
|
+
"when": "!profile.hasGeo",
|
|
43
|
+
"reason": "Without geo fields the map has nothing to join; use bar-chart or table."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"when": "profile.hasGeo && !profile.hasMapToken",
|
|
47
|
+
"reason": "Map stays lazy until the host injects a token and tile URLs."
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"accessibility": {
|
|
51
|
+
"nameFrom": "title",
|
|
52
|
+
"keyboard": ["Tab into map chrome", "legend filters"],
|
|
53
|
+
"shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element."
|
|
54
|
+
},
|
|
55
|
+
"evalCases": [
|
|
56
|
+
{
|
|
57
|
+
"id": "map-picks-geo-with-token",
|
|
58
|
+
"intent": "spatial",
|
|
59
|
+
"profile": { "hasGeo": true, "hasMapToken": true },
|
|
60
|
+
"expect": "eligible",
|
|
61
|
+
"reasonIncludes": "spatial"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "map-rejects-no-geo",
|
|
65
|
+
"intent": "comparison",
|
|
66
|
+
"profile": { "hasGeo": false, "hasCategory": true, "hasNumericMetric": true },
|
|
67
|
+
"expect": "disqualified",
|
|
68
|
+
"reasonIncludes": "bar-chart"
|
|
69
|
+
}
|
|
70
|
+
],
|
|
19
71
|
"propsSchema": {
|
|
20
72
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
21
73
|
"type": "object",
|
|
@@ -5,10 +5,17 @@ const description = "FuseDash MapBox / UniversalMap as a Shadow DOM web componen
|
|
|
5
5
|
const chartTypeKeys = ["mapChart", "UniversalMap"];
|
|
6
6
|
const source = "client/libs/shared/components/src/Widgets/MapBox/";
|
|
7
7
|
const stack = "mapbox-gl";
|
|
8
|
-
const lazyImport = "@
|
|
9
|
-
const entry = "@
|
|
8
|
+
const lazyImport = "@ui9000/widgets/lazy/map-chart";
|
|
9
|
+
const entry = "@ui9000/widgets/map-chart";
|
|
10
10
|
const usageConditions = { "host": "mcp-chat", "notFor": "fusedash-editor", "mapsExcluded": false, "hostReady": true, "requires": ["mapbox-token", "geojson", "pmtiles"] };
|
|
11
11
|
const allowedActions = ["hover", "pan", "zoom", "resize"];
|
|
12
|
+
const tier = "engine";
|
|
13
|
+
const intents = ["spatial"];
|
|
14
|
+
const dataRoles = [{ "id": "geo", "required": true, "description": "lat/lng or a region id that joins to GeoJSON / PMTiles." }, { "id": "metric", "required": false, "type": "number", "description": "Optional fill or bubble magnitude." }];
|
|
15
|
+
const eligibility = [{ "when": "profile.hasGeo && profile.hasMapToken", "reason": "Map is eligible when the profile is spatial and a Mapbox token plus tiles are available (lazy entry)." }];
|
|
16
|
+
const disqualify = [{ "when": "!profile.hasGeo", "reason": "Without geo fields the map has nothing to join; use bar-chart or table." }, { "when": "profile.hasGeo && !profile.hasMapToken", "reason": "Map stays lazy until the host injects a token and tile URLs." }];
|
|
17
|
+
const accessibility = { "nameFrom": "title", "keyboard": ["Tab into map chrome", "legend filters"], "shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element." };
|
|
18
|
+
const evalCases = [{ "id": "map-picks-geo-with-token", "intent": "spatial", "profile": { "hasGeo": true, "hasMapToken": true }, "expect": "eligible", "reasonIncludes": "spatial" }, { "id": "map-rejects-no-geo", "intent": "comparison", "profile": { "hasGeo": false, "hasCategory": true, "hasNumericMetric": true }, "expect": "disqualified", "reasonIncludes": "bar-chart" }];
|
|
12
19
|
const propsSchema = { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "data": { "oneOf": [{ "type": "object", "description": "FuseDash WidgetItem-shaped map payload (layers[].data + geospatialData).", "properties": { "name": { "type": "string" }, "chartType": { "type": "string", "const": "mapChart" }, "layers": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "visualisationType": { "type": "string", "enum": ["choropleth", "bubbles", "spike", "markers"] }, "geospatialData": { "type": "array", "items": { "type": "string" } }, "arrangeByMetric": { "type": "array", "items": { "type": "string" } }, "data": { "type": "array", "items": { "type": "object" } } } } } } }, { "type": "array", "description": "Chat rows { label, value } joined as a country choropleth.", "items": { "type": "object", "required": ["label", "value"], "properties": { "label": { "type": "string" }, "value": { "type": "number" } } } }] }, "chart-title": { "type": "string" }, "show-header": { "type": "boolean", "default": true }, "show-legend": { "type": "boolean", "default": true }, "show-tooltip": { "type": "boolean", "default": true }, "mapbox-token": { "type": "string" }, "geojson-base-url": { "type": "string", "description": "Base URL that serves {country,state,county,city,province}.json centroid FeatureCollections used for the data-join / bubbles / spikes." }, "pmtiles-base-url": { "type": "string", "default": "/pmtiles", "description": "Base URL that serves world-countries.pmtiles (and other admin archives). Choropleth fills use these vector tiles — the GeoJSON files are centroids, not polygons." } }, "required": ["data"] };
|
|
13
20
|
const mapChartMeta = {
|
|
14
21
|
id,
|
|
@@ -22,20 +29,34 @@ const mapChartMeta = {
|
|
|
22
29
|
entry,
|
|
23
30
|
usageConditions,
|
|
24
31
|
allowedActions,
|
|
32
|
+
tier,
|
|
33
|
+
intents,
|
|
34
|
+
dataRoles,
|
|
35
|
+
eligibility,
|
|
36
|
+
disqualify,
|
|
37
|
+
accessibility,
|
|
38
|
+
evalCases,
|
|
25
39
|
propsSchema
|
|
26
40
|
};
|
|
27
41
|
export {
|
|
42
|
+
accessibility,
|
|
28
43
|
allowedActions,
|
|
29
44
|
chartTypeKeys,
|
|
45
|
+
dataRoles,
|
|
30
46
|
mapChartMeta as default,
|
|
31
47
|
description,
|
|
48
|
+
disqualify,
|
|
49
|
+
eligibility,
|
|
32
50
|
entry,
|
|
51
|
+
evalCases,
|
|
33
52
|
id,
|
|
53
|
+
intents,
|
|
34
54
|
lazyImport,
|
|
35
55
|
propsSchema,
|
|
36
56
|
source,
|
|
37
57
|
stack,
|
|
38
58
|
tag,
|
|
59
|
+
tier,
|
|
39
60
|
title,
|
|
40
61
|
usageConditions
|
|
41
62
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|