@miragon/pulse-widget-shell 0.0.0-bootstrap.0 → 0.21.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/LICENSE +21 -0
- package/README.md +163 -3
- package/dist/adapt-data-widget.d.ts +7 -0
- package/dist/adapt-data-widget.d.ts.map +1 -0
- package/dist/adapt-data-widget.js +7 -0
- package/dist/adapt-data-widget.js.map +1 -0
- package/dist/bpmn-names.d.ts +42 -0
- package/dist/bpmn-names.d.ts.map +1 -0
- package/dist/bpmn-names.js +151 -0
- package/dist/bpmn-names.js.map +1 -0
- package/dist/bpmn-names.test.d.ts +2 -0
- package/dist/bpmn-names.test.d.ts.map +1 -0
- package/dist/bpmn-names.test.js +143 -0
- package/dist/bpmn-names.test.js.map +1 -0
- package/dist/build-data-feed-result.test.d.ts +2 -0
- package/dist/build-data-feed-result.test.d.ts.map +1 -0
- package/dist/build-data-feed-result.test.js +28 -0
- package/dist/build-data-feed-result.test.js.map +1 -0
- package/dist/build-single-widget-view.test.d.ts +2 -0
- package/dist/build-single-widget-view.test.d.ts.map +1 -0
- package/dist/build-single-widget-view.test.js +136 -0
- package/dist/build-single-widget-view.test.js.map +1 -0
- package/dist/builder-texts.d.ts +27 -0
- package/dist/builder-texts.d.ts.map +1 -0
- package/dist/builder-texts.js +32 -0
- package/dist/builder-texts.js.map +1 -0
- package/dist/builder-texts.test.d.ts +2 -0
- package/dist/builder-texts.test.d.ts.map +1 -0
- package/dist/builder-texts.test.js +54 -0
- package/dist/builder-texts.test.js.map +1 -0
- package/dist/catalogue-sync.d.ts +18 -0
- package/dist/catalogue-sync.d.ts.map +1 -0
- package/dist/catalogue-sync.js +31 -0
- package/dist/catalogue-sync.js.map +1 -0
- package/dist/catalogue-sync.test.d.ts +2 -0
- package/dist/catalogue-sync.test.d.ts.map +1 -0
- package/dist/catalogue-sync.test.js +22 -0
- package/dist/catalogue-sync.test.js.map +1 -0
- package/dist/composed-server.d.ts +110 -0
- package/dist/composed-server.d.ts.map +1 -0
- package/dist/composed-server.edge.test.d.ts +2 -0
- package/dist/composed-server.edge.test.d.ts.map +1 -0
- package/dist/composed-server.edge.test.js +184 -0
- package/dist/composed-server.edge.test.js.map +1 -0
- package/dist/composed-server.fonts.test.d.ts +2 -0
- package/dist/composed-server.fonts.test.d.ts.map +1 -0
- package/dist/composed-server.fonts.test.js +186 -0
- package/dist/composed-server.fonts.test.js.map +1 -0
- package/dist/composed-server.js +260 -0
- package/dist/composed-server.js.map +1 -0
- package/dist/composed-server.test.d.ts +2 -0
- package/dist/composed-server.test.d.ts.map +1 -0
- package/dist/composed-server.test.js +332 -0
- package/dist/composed-server.test.js.map +1 -0
- package/dist/composition.d.ts +155 -0
- package/dist/composition.d.ts.map +1 -0
- package/dist/composition.js +163 -0
- package/dist/composition.js.map +1 -0
- package/dist/composition.test.d.ts +2 -0
- package/dist/composition.test.d.ts.map +1 -0
- package/dist/composition.test.js +275 -0
- package/dist/composition.test.js.map +1 -0
- package/dist/dashboard-store-postgres.d.ts +43 -0
- package/dist/dashboard-store-postgres.d.ts.map +1 -0
- package/dist/dashboard-store-postgres.js +225 -0
- package/dist/dashboard-store-postgres.js.map +1 -0
- package/dist/dashboard-store-postgres.test.d.ts +2 -0
- package/dist/dashboard-store-postgres.test.d.ts.map +1 -0
- package/dist/dashboard-store-postgres.test.js +272 -0
- package/dist/dashboard-store-postgres.test.js.map +1 -0
- package/dist/font-assets.d.ts +47 -0
- package/dist/font-assets.d.ts.map +1 -0
- package/dist/font-assets.js +93 -0
- package/dist/font-assets.js.map +1 -0
- package/dist/font-assets.test.d.ts +2 -0
- package/dist/font-assets.test.d.ts.map +1 -0
- package/dist/font-assets.test.js +123 -0
- package/dist/font-assets.test.js.map +1 -0
- package/dist/health.d.ts +59 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +74 -0
- package/dist/health.js.map +1 -0
- package/dist/health.test.d.ts +2 -0
- package/dist/health.test.d.ts.map +1 -0
- package/dist/health.test.js +140 -0
- package/dist/health.test.js.map +1 -0
- package/dist/host-boot.d.ts +56 -0
- package/dist/host-boot.d.ts.map +1 -0
- package/dist/host-boot.js +64 -0
- package/dist/host-boot.js.map +1 -0
- package/dist/host-boot.test.d.ts +2 -0
- package/dist/host-boot.test.d.ts.map +1 -0
- package/dist/host-boot.test.js +59 -0
- package/dist/host-boot.test.js.map +1 -0
- package/dist/http-edge.d.ts +117 -0
- package/dist/http-edge.d.ts.map +1 -0
- package/dist/http-edge.js +219 -0
- package/dist/http-edge.js.map +1 -0
- package/dist/http-edge.test.d.ts +2 -0
- package/dist/http-edge.test.d.ts.map +1 -0
- package/dist/http-edge.test.js +255 -0
- package/dist/http-edge.test.js.map +1 -0
- package/dist/metrics.d.ts +48 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +124 -0
- package/dist/metrics.js.map +1 -0
- package/dist/metrics.test.d.ts +2 -0
- package/dist/metrics.test.d.ts.map +1 -0
- package/dist/metrics.test.js +154 -0
- package/dist/metrics.test.js.map +1 -0
- package/dist/node-listener.d.ts +61 -0
- package/dist/node-listener.d.ts.map +1 -0
- package/dist/node-listener.js +165 -0
- package/dist/node-listener.js.map +1 -0
- package/dist/node-listener.test.d.ts +2 -0
- package/dist/node-listener.test.d.ts.map +1 -0
- package/dist/node-listener.test.js +331 -0
- package/dist/node-listener.test.js.map +1 -0
- package/dist/oauth-env.d.ts +42 -0
- package/dist/oauth-env.d.ts.map +1 -0
- package/dist/oauth-env.js +78 -0
- package/dist/oauth-env.js.map +1 -0
- package/dist/oauth-env.test.d.ts +2 -0
- package/dist/oauth-env.test.d.ts.map +1 -0
- package/dist/oauth-env.test.js +76 -0
- package/dist/oauth-env.test.js.map +1 -0
- package/dist/postgres.d.ts +59 -0
- package/dist/postgres.d.ts.map +1 -0
- package/dist/postgres.js +80 -0
- package/dist/postgres.js.map +1 -0
- package/dist/profile-advisory.d.ts +19 -0
- package/dist/profile-advisory.d.ts.map +1 -0
- package/dist/profile-advisory.js +48 -0
- package/dist/profile-advisory.js.map +1 -0
- package/dist/profile-advisory.test.d.ts +2 -0
- package/dist/profile-advisory.test.d.ts.map +1 -0
- package/dist/profile-advisory.test.js +53 -0
- package/dist/profile-advisory.test.js.map +1 -0
- package/dist/profile-constants.d.ts +37 -0
- package/dist/profile-constants.d.ts.map +1 -0
- package/dist/profile-constants.js +37 -0
- package/dist/profile-constants.js.map +1 -0
- package/dist/profile-migrations.d.ts +71 -0
- package/dist/profile-migrations.d.ts.map +1 -0
- package/dist/profile-migrations.js +88 -0
- package/dist/profile-migrations.js.map +1 -0
- package/dist/profile-migrations.test.d.ts +2 -0
- package/dist/profile-migrations.test.d.ts.map +1 -0
- package/dist/profile-migrations.test.js +200 -0
- package/dist/profile-migrations.test.js.map +1 -0
- package/dist/profile-record.d.ts +60 -0
- package/dist/profile-record.d.ts.map +1 -0
- package/dist/profile-record.js +78 -0
- package/dist/profile-record.js.map +1 -0
- package/dist/profile-slice.d.ts +53 -0
- package/dist/profile-slice.d.ts.map +1 -0
- package/dist/profile-slice.js +73 -0
- package/dist/profile-slice.js.map +1 -0
- package/dist/profile-slice.test.d.ts +2 -0
- package/dist/profile-slice.test.d.ts.map +1 -0
- package/dist/profile-slice.test.js +73 -0
- package/dist/profile-slice.test.js.map +1 -0
- package/dist/profile-store-env.d.ts +34 -0
- package/dist/profile-store-env.d.ts.map +1 -0
- package/dist/profile-store-env.js +44 -0
- package/dist/profile-store-env.js.map +1 -0
- package/dist/profile-store-env.test.d.ts +2 -0
- package/dist/profile-store-env.test.d.ts.map +1 -0
- package/dist/profile-store-env.test.js +69 -0
- package/dist/profile-store-env.test.js.map +1 -0
- package/dist/profile-store-postgres.d.ts +33 -0
- package/dist/profile-store-postgres.d.ts.map +1 -0
- package/dist/profile-store-postgres.js +87 -0
- package/dist/profile-store-postgres.js.map +1 -0
- package/dist/profile-store-raw.test.d.ts +2 -0
- package/dist/profile-store-raw.test.d.ts.map +1 -0
- package/dist/profile-store-raw.test.js +185 -0
- package/dist/profile-store-raw.test.js.map +1 -0
- package/dist/profile-store.d.ts +85 -0
- package/dist/profile-store.d.ts.map +1 -0
- package/dist/profile-store.js +182 -0
- package/dist/profile-store.js.map +1 -0
- package/dist/profile-store.test.d.ts +2 -0
- package/dist/profile-store.test.d.ts.map +1 -0
- package/dist/profile-store.test.js +353 -0
- package/dist/profile-store.test.js.map +1 -0
- package/dist/profile.d.ts +75 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +85 -0
- package/dist/profile.js.map +1 -0
- package/dist/profile.test.d.ts +2 -0
- package/dist/profile.test.d.ts.map +1 -0
- package/dist/profile.test.js +71 -0
- package/dist/profile.test.js.map +1 -0
- package/dist/request-context.d.ts +47 -0
- package/dist/request-context.d.ts.map +1 -0
- package/dist/request-context.js +85 -0
- package/dist/request-context.js.map +1 -0
- package/dist/request-context.test.d.ts +2 -0
- package/dist/request-context.test.d.ts.map +1 -0
- package/dist/request-context.test.js +107 -0
- package/dist/request-context.test.js.map +1 -0
- package/dist/served-fonts.d.ts +38 -0
- package/dist/served-fonts.d.ts.map +1 -0
- package/dist/served-fonts.js +51 -0
- package/dist/served-fonts.js.map +1 -0
- package/dist/served-fonts.test.d.ts +2 -0
- package/dist/served-fonts.test.d.ts.map +1 -0
- package/dist/served-fonts.test.js +30 -0
- package/dist/served-fonts.test.js.map +1 -0
- package/dist/server-locale.d.ts +58 -0
- package/dist/server-locale.d.ts.map +1 -0
- package/dist/server-locale.js +64 -0
- package/dist/server-locale.js.map +1 -0
- package/dist/server-locale.test.d.ts +2 -0
- package/dist/server-locale.test.d.ts.map +1 -0
- package/dist/server-locale.test.js +90 -0
- package/dist/server-locale.test.js.map +1 -0
- package/dist/server.d.ts +43 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +34 -0
- package/dist/server.js.map +1 -0
- package/dist/shell-catalogue.d.ts +12 -0
- package/dist/shell-catalogue.d.ts.map +1 -0
- package/dist/shell-catalogue.js +142 -0
- package/dist/shell-catalogue.js.map +1 -0
- package/dist/shell-settings-contract.d.ts +34 -0
- package/dist/shell-settings-contract.d.ts.map +1 -0
- package/dist/shell-settings-contract.js +21 -0
- package/dist/shell-settings-contract.js.map +1 -0
- package/dist/shell-settings.d.ts +24 -0
- package/dist/shell-settings.d.ts.map +1 -0
- package/dist/shell-settings.js +148 -0
- package/dist/shell-settings.js.map +1 -0
- package/dist/shell-settings.test.d.ts +2 -0
- package/dist/shell-settings.test.d.ts.map +1 -0
- package/dist/shell-settings.test.js +115 -0
- package/dist/shell-settings.test.js.map +1 -0
- package/dist/testing/catalog-text.d.ts +53 -0
- package/dist/testing/catalog-text.d.ts.map +1 -0
- package/dist/testing/catalog-text.js +146 -0
- package/dist/testing/catalog-text.js.map +1 -0
- package/dist/testing/catalog-text.test.d.ts +2 -0
- package/dist/testing/catalog-text.test.d.ts.map +1 -0
- package/dist/testing/catalog-text.test.js +137 -0
- package/dist/testing/catalog-text.test.js.map +1 -0
- package/dist/testing/colors.d.ts +34 -0
- package/dist/testing/colors.d.ts.map +1 -0
- package/dist/testing/colors.js +124 -0
- package/dist/testing/colors.js.map +1 -0
- package/dist/testing/colors.test.d.ts +2 -0
- package/dist/testing/colors.test.d.ts.map +1 -0
- package/dist/testing/colors.test.js +166 -0
- package/dist/testing/colors.test.js.map +1 -0
- package/dist/testing/contrast.d.ts +77 -0
- package/dist/testing/contrast.d.ts.map +1 -0
- package/dist/testing/contrast.js +382 -0
- package/dist/testing/contrast.js.map +1 -0
- package/dist/testing/contrast.test.d.ts +2 -0
- package/dist/testing/contrast.test.d.ts.map +1 -0
- package/dist/testing/contrast.test.js +230 -0
- package/dist/testing/contrast.test.js.map +1 -0
- package/dist/testing/display-texts.d.ts +23 -0
- package/dist/testing/display-texts.d.ts.map +1 -0
- package/dist/testing/display-texts.js +88 -0
- package/dist/testing/display-texts.js.map +1 -0
- package/dist/testing/display-texts.test.d.ts +2 -0
- package/dist/testing/display-texts.test.d.ts.map +1 -0
- package/dist/testing/display-texts.test.js +169 -0
- package/dist/testing/display-texts.test.js.map +1 -0
- package/dist/testing/glossary.d.ts +52 -0
- package/dist/testing/glossary.d.ts.map +1 -0
- package/dist/testing/glossary.js +135 -0
- package/dist/testing/glossary.js.map +1 -0
- package/dist/testing/glossary.test.d.ts +2 -0
- package/dist/testing/glossary.test.d.ts.map +1 -0
- package/dist/testing/glossary.test.js +78 -0
- package/dist/testing/glossary.test.js.map +1 -0
- package/dist/testing/glyphs.d.ts +27 -0
- package/dist/testing/glyphs.d.ts.map +1 -0
- package/dist/testing/glyphs.js +130 -0
- package/dist/testing/glyphs.js.map +1 -0
- package/dist/testing/glyphs.test.d.ts +2 -0
- package/dist/testing/glyphs.test.d.ts.map +1 -0
- package/dist/testing/glyphs.test.js +146 -0
- package/dist/testing/glyphs.test.js.map +1 -0
- package/dist/testing/icon-sizes.d.ts +22 -0
- package/dist/testing/icon-sizes.d.ts.map +1 -0
- package/dist/testing/icon-sizes.js +39 -0
- package/dist/testing/icon-sizes.js.map +1 -0
- package/dist/testing/icon-sizes.test.d.ts +2 -0
- package/dist/testing/icon-sizes.test.d.ts.map +1 -0
- package/dist/testing/icon-sizes.test.js +36 -0
- package/dist/testing/icon-sizes.test.js.map +1 -0
- package/dist/testing/index.d.ts +40 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +40 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/source-scan.d.ts +16 -0
- package/dist/testing/source-scan.d.ts.map +1 -0
- package/dist/testing/source-scan.js +57 -0
- package/dist/testing/source-scan.js.map +1 -0
- package/dist/testing/tone-pairs.d.ts +20 -0
- package/dist/testing/tone-pairs.d.ts.map +1 -0
- package/dist/testing/tone-pairs.js +154 -0
- package/dist/testing/tone-pairs.js.map +1 -0
- package/dist/testing/type-scale.d.ts +40 -0
- package/dist/testing/type-scale.d.ts.map +1 -0
- package/dist/testing/type-scale.js +55 -0
- package/dist/testing/type-scale.js.map +1 -0
- package/dist/testing/type-scale.test.d.ts +2 -0
- package/dist/testing/type-scale.test.d.ts.map +1 -0
- package/dist/testing/type-scale.test.js +61 -0
- package/dist/testing/type-scale.test.js.map +1 -0
- package/dist/tool-schema-trim.d.ts +24 -0
- package/dist/tool-schema-trim.d.ts.map +1 -0
- package/dist/tool-schema-trim.js +49 -0
- package/dist/tool-schema-trim.js.map +1 -0
- package/dist/tool-schema-trim.test.d.ts +2 -0
- package/dist/tool-schema-trim.test.d.ts.map +1 -0
- package/dist/tool-schema-trim.test.js +53 -0
- package/dist/tool-schema-trim.test.js.map +1 -0
- package/dist/toolsets.d.ts +76 -0
- package/dist/toolsets.d.ts.map +1 -0
- package/dist/toolsets.js +41 -0
- package/dist/toolsets.js.map +1 -0
- package/dist/toolsets.test.d.ts +2 -0
- package/dist/toolsets.test.d.ts.map +1 -0
- package/dist/toolsets.test.js +86 -0
- package/dist/toolsets.test.js.map +1 -0
- package/dist/ui/action-feedback.d.ts +33 -0
- package/dist/ui/action-feedback.d.ts.map +1 -0
- package/dist/ui/action-feedback.js +51 -0
- package/dist/ui/action-feedback.js.map +1 -0
- package/dist/ui/action-feedback.test.d.ts +2 -0
- package/dist/ui/action-feedback.test.d.ts.map +1 -0
- package/dist/ui/action-feedback.test.js +77 -0
- package/dist/ui/action-feedback.test.js.map +1 -0
- package/dist/ui/app-shell-providers.d.ts +18 -0
- package/dist/ui/app-shell-providers.d.ts.map +1 -0
- package/dist/ui/app-shell-providers.js +19 -0
- package/dist/ui/app-shell-providers.js.map +1 -0
- package/dist/ui/app-shell-providers.test.d.ts +2 -0
- package/dist/ui/app-shell-providers.test.d.ts.map +1 -0
- package/dist/ui/app-shell-providers.test.js +249 -0
- package/dist/ui/app-shell-providers.test.js.map +1 -0
- package/dist/ui/ask-ai-button.d.ts +56 -0
- package/dist/ui/ask-ai-button.d.ts.map +1 -0
- package/dist/ui/ask-ai-button.js +36 -0
- package/dist/ui/ask-ai-button.js.map +1 -0
- package/dist/ui/ask-ai-button.test.d.ts +2 -0
- package/dist/ui/ask-ai-button.test.d.ts.map +1 -0
- package/dist/ui/ask-ai-button.test.js +103 -0
- package/dist/ui/ask-ai-button.test.js.map +1 -0
- package/dist/ui/ask-ai-prompt.d.ts +115 -0
- package/dist/ui/ask-ai-prompt.d.ts.map +1 -0
- package/dist/ui/ask-ai-prompt.js +174 -0
- package/dist/ui/ask-ai-prompt.js.map +1 -0
- package/dist/ui/ask-ai-prompt.test.d.ts +2 -0
- package/dist/ui/ask-ai-prompt.test.d.ts.map +1 -0
- package/dist/ui/ask-ai-prompt.test.js +240 -0
- package/dist/ui/ask-ai-prompt.test.js.map +1 -0
- package/dist/ui/bpmn-heatmap/heat-ramp.test.d.ts +2 -0
- package/dist/ui/bpmn-heatmap/heat-ramp.test.d.ts.map +1 -0
- package/dist/ui/bpmn-heatmap/heat-ramp.test.js +174 -0
- package/dist/ui/bpmn-heatmap/heat-ramp.test.js.map +1 -0
- package/dist/ui/bpmn-heatmap/heat-utils.d.ts +119 -0
- package/dist/ui/bpmn-heatmap/heat-utils.d.ts.map +1 -0
- package/dist/ui/bpmn-heatmap/heat-utils.js +231 -0
- package/dist/ui/bpmn-heatmap/heat-utils.js.map +1 -0
- package/dist/ui/bpmn-heatmap/heat-utils.test.d.ts +2 -0
- package/dist/ui/bpmn-heatmap/heat-utils.test.d.ts.map +1 -0
- package/dist/ui/bpmn-heatmap/heat-utils.test.js +59 -0
- package/dist/ui/bpmn-heatmap/heat-utils.test.js.map +1 -0
- package/dist/ui/bpmn-heatmap-labels.d.ts +46 -0
- package/dist/ui/bpmn-heatmap-labels.d.ts.map +1 -0
- package/dist/ui/bpmn-heatmap-labels.js +16 -0
- package/dist/ui/bpmn-heatmap-labels.js.map +1 -0
- package/dist/ui/bpmn-heatmap-widget.d.ts +38 -0
- package/dist/ui/bpmn-heatmap-widget.d.ts.map +1 -0
- package/dist/ui/bpmn-heatmap-widget.js +65 -0
- package/dist/ui/bpmn-heatmap-widget.js.map +1 -0
- package/dist/ui/bpmn-heatmap-widget.test.d.ts +2 -0
- package/dist/ui/bpmn-heatmap-widget.test.d.ts.map +1 -0
- package/dist/ui/bpmn-heatmap-widget.test.js +173 -0
- package/dist/ui/bpmn-heatmap-widget.test.js.map +1 -0
- package/dist/ui/bpmn-heatmap.d.ts +61 -0
- package/dist/ui/bpmn-heatmap.d.ts.map +1 -0
- package/dist/ui/bpmn-heatmap.js +119 -0
- package/dist/ui/bpmn-heatmap.js.map +1 -0
- package/dist/ui/bpmn-tokens.d.ts +81 -0
- package/dist/ui/bpmn-tokens.d.ts.map +1 -0
- package/dist/ui/bpmn-tokens.js +114 -0
- package/dist/ui/bpmn-tokens.js.map +1 -0
- package/dist/ui/bpmn-tokens.test.d.ts +2 -0
- package/dist/ui/bpmn-tokens.test.d.ts.map +1 -0
- package/dist/ui/bpmn-tokens.test.js +98 -0
- package/dist/ui/bpmn-tokens.test.js.map +1 -0
- package/dist/ui/bpmn-zoom-controls.d.ts +30 -0
- package/dist/ui/bpmn-zoom-controls.d.ts.map +1 -0
- package/dist/ui/bpmn-zoom-controls.js +29 -0
- package/dist/ui/bpmn-zoom-controls.js.map +1 -0
- package/dist/ui/brand-gates.test.d.ts +2 -0
- package/dist/ui/brand-gates.test.d.ts.map +1 -0
- package/dist/ui/brand-gates.test.js +131 -0
- package/dist/ui/brand-gates.test.js.map +1 -0
- package/dist/ui/brand-mark.d.ts +37 -0
- package/dist/ui/brand-mark.d.ts.map +1 -0
- package/dist/ui/brand-mark.js +33 -0
- package/dist/ui/brand-mark.js.map +1 -0
- package/dist/ui/brand-mark.test.d.ts +2 -0
- package/dist/ui/brand-mark.test.d.ts.map +1 -0
- package/dist/ui/brand-mark.test.js +111 -0
- package/dist/ui/brand-mark.test.js.map +1 -0
- package/dist/ui/confirm-dialog.d.ts +55 -0
- package/dist/ui/confirm-dialog.d.ts.map +1 -0
- package/dist/ui/confirm-dialog.js +59 -0
- package/dist/ui/confirm-dialog.js.map +1 -0
- package/dist/ui/confirm-dialog.test.d.ts +2 -0
- package/dist/ui/confirm-dialog.test.d.ts.map +1 -0
- package/dist/ui/confirm-dialog.test.js +115 -0
- package/dist/ui/confirm-dialog.test.js.map +1 -0
- package/dist/ui/count-tone.d.ts +20 -0
- package/dist/ui/count-tone.d.ts.map +1 -0
- package/dist/ui/count-tone.js +27 -0
- package/dist/ui/count-tone.js.map +1 -0
- package/dist/ui/count-tone.test.d.ts +2 -0
- package/dist/ui/count-tone.test.d.ts.map +1 -0
- package/dist/ui/count-tone.test.js +27 -0
- package/dist/ui/count-tone.test.js.map +1 -0
- package/dist/ui/create-use-t.d.ts +15 -0
- package/dist/ui/create-use-t.d.ts.map +1 -0
- package/dist/ui/create-use-t.js +17 -0
- package/dist/ui/create-use-t.js.map +1 -0
- package/dist/ui/declare-served-fonts.d.ts +14 -0
- package/dist/ui/declare-served-fonts.d.ts.map +1 -0
- package/dist/ui/declare-served-fonts.js +38 -0
- package/dist/ui/declare-served-fonts.js.map +1 -0
- package/dist/ui/declare-served-fonts.test.d.ts +2 -0
- package/dist/ui/declare-served-fonts.test.d.ts.map +1 -0
- package/dist/ui/declare-served-fonts.test.js +44 -0
- package/dist/ui/declare-served-fonts.test.js.map +1 -0
- package/dist/ui/describe-error.d.ts +71 -0
- package/dist/ui/describe-error.d.ts.map +1 -0
- package/dist/ui/describe-error.js +175 -0
- package/dist/ui/describe-error.js.map +1 -0
- package/dist/ui/describe-error.test.d.ts +2 -0
- package/dist/ui/describe-error.test.d.ts.map +1 -0
- package/dist/ui/describe-error.test.js +274 -0
- package/dist/ui/describe-error.test.js.map +1 -0
- package/dist/ui/display-mode-toggle.d.ts +32 -0
- package/dist/ui/display-mode-toggle.d.ts.map +1 -0
- package/dist/ui/display-mode-toggle.js +39 -0
- package/dist/ui/display-mode-toggle.js.map +1 -0
- package/dist/ui/error-labels.d.ts +65 -0
- package/dist/ui/error-labels.d.ts.map +1 -0
- package/dist/ui/error-labels.js +111 -0
- package/dist/ui/error-labels.js.map +1 -0
- package/dist/ui/format.d.ts +81 -0
- package/dist/ui/format.d.ts.map +1 -0
- package/dist/ui/format.js +189 -0
- package/dist/ui/format.js.map +1 -0
- package/dist/ui/format.test.d.ts +2 -0
- package/dist/ui/format.test.d.ts.map +1 -0
- package/dist/ui/format.test.js +181 -0
- package/dist/ui/format.test.js.map +1 -0
- package/dist/ui/generic-widgets.d.ts +15 -0
- package/dist/ui/generic-widgets.d.ts.map +1 -0
- package/dist/ui/generic-widgets.js +122 -0
- package/dist/ui/generic-widgets.js.map +1 -0
- package/dist/ui/generic-widgets.test.d.ts +2 -0
- package/dist/ui/generic-widgets.test.d.ts.map +1 -0
- package/dist/ui/generic-widgets.test.js +139 -0
- package/dist/ui/generic-widgets.test.js.map +1 -0
- package/dist/ui/hand-off-button.d.ts +44 -0
- package/dist/ui/hand-off-button.d.ts.map +1 -0
- package/dist/ui/hand-off-button.js +44 -0
- package/dist/ui/hand-off-button.js.map +1 -0
- package/dist/ui/hand-off-button.test.d.ts +2 -0
- package/dist/ui/hand-off-button.test.d.ts.map +1 -0
- package/dist/ui/hand-off-button.test.js +78 -0
- package/dist/ui/hand-off-button.test.js.map +1 -0
- package/dist/ui/host-context.d.ts +66 -0
- package/dist/ui/host-context.d.ts.map +1 -0
- package/dist/ui/host-context.js +122 -0
- package/dist/ui/host-context.js.map +1 -0
- package/dist/ui/host-context.test.d.ts +2 -0
- package/dist/ui/host-context.test.d.ts.map +1 -0
- package/dist/ui/host-context.test.js +160 -0
- package/dist/ui/host-context.test.js.map +1 -0
- package/dist/ui/host-document.d.ts +25 -0
- package/dist/ui/host-document.d.ts.map +1 -0
- package/dist/ui/host-document.js +93 -0
- package/dist/ui/host-document.js.map +1 -0
- package/dist/ui/host-document.test.d.ts +2 -0
- package/dist/ui/host-document.test.d.ts.map +1 -0
- package/dist/ui/host-document.test.js +112 -0
- package/dist/ui/host-document.test.js.map +1 -0
- package/dist/ui/host-widgets.d.ts +8 -0
- package/dist/ui/host-widgets.d.ts.map +1 -0
- package/dist/ui/host-widgets.js +18 -0
- package/dist/ui/host-widgets.js.map +1 -0
- package/dist/ui/humanize-key.d.ts +11 -0
- package/dist/ui/humanize-key.d.ts.map +1 -0
- package/dist/ui/humanize-key.js +26 -0
- package/dist/ui/humanize-key.js.map +1 -0
- package/dist/ui/humanize-key.test.d.ts +2 -0
- package/dist/ui/humanize-key.test.d.ts.map +1 -0
- package/dist/ui/humanize-key.test.js +42 -0
- package/dist/ui/humanize-key.test.js.map +1 -0
- package/dist/ui/icon.d.ts +37 -0
- package/dist/ui/icon.d.ts.map +1 -0
- package/dist/ui/icon.js +32 -0
- package/dist/ui/icon.js.map +1 -0
- package/dist/ui/id-breaks.d.ts +17 -0
- package/dist/ui/id-breaks.d.ts.map +1 -0
- package/dist/ui/id-breaks.js +36 -0
- package/dist/ui/id-breaks.js.map +1 -0
- package/dist/ui/id-breaks.test.d.ts +2 -0
- package/dist/ui/id-breaks.test.d.ts.map +1 -0
- package/dist/ui/id-breaks.test.js +37 -0
- package/dist/ui/id-breaks.test.js.map +1 -0
- package/dist/ui/id-text.d.ts +29 -0
- package/dist/ui/id-text.d.ts.map +1 -0
- package/dist/ui/id-text.js +103 -0
- package/dist/ui/id-text.js.map +1 -0
- package/dist/ui/id-text.test.d.ts +2 -0
- package/dist/ui/id-text.test.d.ts.map +1 -0
- package/dist/ui/id-text.test.js +122 -0
- package/dist/ui/id-text.test.js.map +1 -0
- package/dist/ui/index.d.ts +57 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +65 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/index.test.d.ts +2 -0
- package/dist/ui/index.test.d.ts.map +1 -0
- package/dist/ui/index.test.js +34 -0
- package/dist/ui/index.test.js.map +1 -0
- package/dist/ui/inline-budget.d.ts +35 -0
- package/dist/ui/inline-budget.d.ts.map +1 -0
- package/dist/ui/inline-budget.js +27 -0
- package/dist/ui/inline-budget.js.map +1 -0
- package/dist/ui/inline-fit-registry.d.ts +56 -0
- package/dist/ui/inline-fit-registry.d.ts.map +1 -0
- package/dist/ui/inline-fit-registry.js +114 -0
- package/dist/ui/inline-fit-registry.js.map +1 -0
- package/dist/ui/inline-fit-solve.d.ts +50 -0
- package/dist/ui/inline-fit-solve.d.ts.map +1 -0
- package/dist/ui/inline-fit-solve.js +83 -0
- package/dist/ui/inline-fit-solve.js.map +1 -0
- package/dist/ui/inline-fit-solve.test.d.ts +2 -0
- package/dist/ui/inline-fit-solve.test.d.ts.map +1 -0
- package/dist/ui/inline-fit-solve.test.js +108 -0
- package/dist/ui/inline-fit-solve.test.js.map +1 -0
- package/dist/ui/inline-fit-time.test.d.ts +2 -0
- package/dist/ui/inline-fit-time.test.d.ts.map +1 -0
- package/dist/ui/inline-fit-time.test.js +110 -0
- package/dist/ui/inline-fit-time.test.js.map +1 -0
- package/dist/ui/inline-fit.d.ts +77 -0
- package/dist/ui/inline-fit.d.ts.map +1 -0
- package/dist/ui/inline-fit.js +242 -0
- package/dist/ui/inline-fit.js.map +1 -0
- package/dist/ui/inline-fit.test-support.d.ts +26 -0
- package/dist/ui/inline-fit.test-support.d.ts.map +1 -0
- package/dist/ui/inline-fit.test-support.js +34 -0
- package/dist/ui/inline-fit.test-support.js.map +1 -0
- package/dist/ui/inline-fit.test.d.ts +2 -0
- package/dist/ui/inline-fit.test.d.ts.map +1 -0
- package/dist/ui/inline-fit.test.js +159 -0
- package/dist/ui/inline-fit.test.js.map +1 -0
- package/dist/ui/kit-labels.d.ts +80 -0
- package/dist/ui/kit-labels.d.ts.map +1 -0
- package/dist/ui/kit-labels.js +110 -0
- package/dist/ui/kit-labels.js.map +1 -0
- package/dist/ui/kit-labels.test.d.ts +2 -0
- package/dist/ui/kit-labels.test.d.ts.map +1 -0
- package/dist/ui/kit-labels.test.js +98 -0
- package/dist/ui/kit-labels.test.js.map +1 -0
- package/dist/ui/kit-type-roles.test.d.ts +2 -0
- package/dist/ui/kit-type-roles.test.d.ts.map +1 -0
- package/dist/ui/kit-type-roles.test.js +122 -0
- package/dist/ui/kit-type-roles.test.js.map +1 -0
- package/dist/ui/komet-svg.d.ts +15 -0
- package/dist/ui/komet-svg.d.ts.map +1 -0
- package/dist/ui/komet-svg.js +21 -0
- package/dist/ui/komet-svg.js.map +1 -0
- package/dist/ui/list-table.d.ts +108 -0
- package/dist/ui/list-table.d.ts.map +1 -0
- package/dist/ui/list-table.js +161 -0
- package/dist/ui/list-table.js.map +1 -0
- package/dist/ui/list-table.test.d.ts +2 -0
- package/dist/ui/list-table.test.d.ts.map +1 -0
- package/dist/ui/list-table.test.js +169 -0
- package/dist/ui/list-table.test.js.map +1 -0
- package/dist/ui/localized-app-view.d.ts +40 -0
- package/dist/ui/localized-app-view.d.ts.map +1 -0
- package/dist/ui/localized-app-view.js +71 -0
- package/dist/ui/localized-app-view.js.map +1 -0
- package/dist/ui/log-text.d.ts +24 -0
- package/dist/ui/log-text.d.ts.map +1 -0
- package/dist/ui/log-text.js +31 -0
- package/dist/ui/log-text.js.map +1 -0
- package/dist/ui/menu-item.d.ts +12 -0
- package/dist/ui/menu-item.d.ts.map +1 -0
- package/dist/ui/menu-item.js +13 -0
- package/dist/ui/menu-item.js.map +1 -0
- package/dist/ui/named-id.d.ts +23 -0
- package/dist/ui/named-id.d.ts.map +1 -0
- package/dist/ui/named-id.js +21 -0
- package/dist/ui/named-id.js.map +1 -0
- package/dist/ui/named-id.test.d.ts +2 -0
- package/dist/ui/named-id.test.d.ts.map +1 -0
- package/dist/ui/named-id.test.js +57 -0
- package/dist/ui/named-id.test.js.map +1 -0
- package/dist/ui/native-select.d.ts +17 -0
- package/dist/ui/native-select.d.ts.map +1 -0
- package/dist/ui/native-select.js +20 -0
- package/dist/ui/native-select.js.map +1 -0
- package/dist/ui/navigation-focus.d.ts +20 -0
- package/dist/ui/navigation-focus.d.ts.map +1 -0
- package/dist/ui/navigation-focus.js +25 -0
- package/dist/ui/navigation-focus.js.map +1 -0
- package/dist/ui/navigation-focus.test.d.ts +2 -0
- package/dist/ui/navigation-focus.test.d.ts.map +1 -0
- package/dist/ui/navigation-focus.test.js +28 -0
- package/dist/ui/navigation-focus.test.js.map +1 -0
- package/dist/ui/open-in-cockpit-link.d.ts +28 -0
- package/dist/ui/open-in-cockpit-link.d.ts.map +1 -0
- package/dist/ui/open-in-cockpit-link.js +41 -0
- package/dist/ui/open-in-cockpit-link.js.map +1 -0
- package/dist/ui/paged-list-footer.test.d.ts +2 -0
- package/dist/ui/paged-list-footer.test.d.ts.map +1 -0
- package/dist/ui/paged-list-footer.test.js +128 -0
- package/dist/ui/paged-list-footer.test.js.map +1 -0
- package/dist/ui/paged-rows.d.ts +24 -0
- package/dist/ui/paged-rows.d.ts.map +1 -0
- package/dist/ui/paged-rows.js +25 -0
- package/dist/ui/paged-rows.js.map +1 -0
- package/dist/ui/parse-tool-result.test.d.ts +2 -0
- package/dist/ui/parse-tool-result.test.d.ts.map +1 -0
- package/dist/ui/parse-tool-result.test.js +88 -0
- package/dist/ui/parse-tool-result.test.js.map +1 -0
- package/dist/ui/profile-gate.d.ts +37 -0
- package/dist/ui/profile-gate.d.ts.map +1 -0
- package/dist/ui/profile-gate.js +126 -0
- package/dist/ui/profile-gate.js.map +1 -0
- package/dist/ui/profile-gate.test.d.ts +2 -0
- package/dist/ui/profile-gate.test.d.ts.map +1 -0
- package/dist/ui/profile-gate.test.js +246 -0
- package/dist/ui/profile-gate.test.js.map +1 -0
- package/dist/ui/query-fallback.d.ts +27 -0
- package/dist/ui/query-fallback.d.ts.map +1 -0
- package/dist/ui/query-fallback.js +30 -0
- package/dist/ui/query-fallback.js.map +1 -0
- package/dist/ui/query-fallback.test.d.ts +2 -0
- package/dist/ui/query-fallback.test.d.ts.map +1 -0
- package/dist/ui/query-fallback.test.js +49 -0
- package/dist/ui/query-fallback.test.js.map +1 -0
- package/dist/ui/row-card.d.ts +13 -0
- package/dist/ui/row-card.d.ts.map +1 -0
- package/dist/ui/row-card.js +11 -0
- package/dist/ui/row-card.js.map +1 -0
- package/dist/ui/section.d.ts +18 -0
- package/dist/ui/section.d.ts.map +1 -0
- package/dist/ui/section.js +14 -0
- package/dist/ui/section.js.map +1 -0
- package/dist/ui/segmented-control.d.ts +25 -0
- package/dist/ui/segmented-control.d.ts.map +1 -0
- package/dist/ui/segmented-control.js +22 -0
- package/dist/ui/segmented-control.js.map +1 -0
- package/dist/ui/settings-labels.d.ts +33 -0
- package/dist/ui/settings-labels.d.ts.map +1 -0
- package/dist/ui/settings-labels.js +50 -0
- package/dist/ui/settings-labels.js.map +1 -0
- package/dist/ui/settings-layout.d.ts +29 -0
- package/dist/ui/settings-layout.d.ts.map +1 -0
- package/dist/ui/settings-layout.js +49 -0
- package/dist/ui/settings-layout.js.map +1 -0
- package/dist/ui/settings-layout.test.d.ts +2 -0
- package/dist/ui/settings-layout.test.d.ts.map +1 -0
- package/dist/ui/settings-layout.test.js +73 -0
- package/dist/ui/settings-layout.test.js.map +1 -0
- package/dist/ui/settings.d.ts +47 -0
- package/dist/ui/settings.d.ts.map +1 -0
- package/dist/ui/settings.js +48 -0
- package/dist/ui/settings.js.map +1 -0
- package/dist/ui/settings.test.d.ts +2 -0
- package/dist/ui/settings.test.d.ts.map +1 -0
- package/dist/ui/settings.test.js +38 -0
- package/dist/ui/settings.test.js.map +1 -0
- package/dist/ui/shell-host.d.ts +46 -0
- package/dist/ui/shell-host.d.ts.map +1 -0
- package/dist/ui/shell-host.js +56 -0
- package/dist/ui/shell-host.js.map +1 -0
- package/dist/ui/shell-settings.d.ts +31 -0
- package/dist/ui/shell-settings.d.ts.map +1 -0
- package/dist/ui/shell-settings.js +97 -0
- package/dist/ui/shell-settings.js.map +1 -0
- package/dist/ui/shell-settings.test.d.ts +2 -0
- package/dist/ui/shell-settings.test.d.ts.map +1 -0
- package/dist/ui/shell-settings.test.js +108 -0
- package/dist/ui/shell-settings.test.js.map +1 -0
- package/dist/ui/shell-widgets.d.ts +14 -0
- package/dist/ui/shell-widgets.d.ts.map +1 -0
- package/dist/ui/shell-widgets.js +18 -0
- package/dist/ui/shell-widgets.js.map +1 -0
- package/dist/ui/table.d.ts +61 -0
- package/dist/ui/table.d.ts.map +1 -0
- package/dist/ui/table.js +43 -0
- package/dist/ui/table.js.map +1 -0
- package/dist/ui/tone-components.test.d.ts +2 -0
- package/dist/ui/tone-components.test.d.ts.map +1 -0
- package/dist/ui/tone-components.test.js +145 -0
- package/dist/ui/tone-components.test.js.map +1 -0
- package/dist/ui/tone-contrast.test.d.ts +2 -0
- package/dist/ui/tone-contrast.test.d.ts.map +1 -0
- package/dist/ui/tone-contrast.test.js +66 -0
- package/dist/ui/tone-contrast.test.js.map +1 -0
- package/dist/ui/toolkit-overlap.test.d.ts +2 -0
- package/dist/ui/toolkit-overlap.test.d.ts.map +1 -0
- package/dist/ui/toolkit-overlap.test.js +86 -0
- package/dist/ui/toolkit-overlap.test.js.map +1 -0
- package/dist/ui/use-apply-theme.d.ts +11 -0
- package/dist/ui/use-apply-theme.d.ts.map +1 -0
- package/dist/ui/use-apply-theme.js +37 -0
- package/dist/ui/use-apply-theme.js.map +1 -0
- package/dist/ui/use-apply-theme.test.d.ts +2 -0
- package/dist/ui/use-apply-theme.test.d.ts.map +1 -0
- package/dist/ui/use-apply-theme.test.js +102 -0
- package/dist/ui/use-apply-theme.test.js.map +1 -0
- package/dist/ui/use-bpmn-viewer.d.ts +135 -0
- package/dist/ui/use-bpmn-viewer.d.ts.map +1 -0
- package/dist/ui/use-bpmn-viewer.js +257 -0
- package/dist/ui/use-bpmn-viewer.js.map +1 -0
- package/dist/ui/use-bpmn-viewer.test.d.ts +2 -0
- package/dist/ui/use-bpmn-viewer.test.d.ts.map +1 -0
- package/dist/ui/use-bpmn-viewer.test.js +239 -0
- package/dist/ui/use-bpmn-viewer.test.js.map +1 -0
- package/dist/ui/use-detail-view.d.ts +49 -0
- package/dist/ui/use-detail-view.d.ts.map +1 -0
- package/dist/ui/use-detail-view.js +52 -0
- package/dist/ui/use-detail-view.js.map +1 -0
- package/dist/ui/use-detail-view.test.d.ts +2 -0
- package/dist/ui/use-detail-view.test.d.ts.map +1 -0
- package/dist/ui/use-detail-view.test.js +178 -0
- package/dist/ui/use-detail-view.test.js.map +1 -0
- package/dist/ui/use-paged-list-view.d.ts +48 -0
- package/dist/ui/use-paged-list-view.d.ts.map +1 -0
- package/dist/ui/use-paged-list-view.js +41 -0
- package/dist/ui/use-paged-list-view.js.map +1 -0
- package/dist/ui/use-paged-list-view.test.d.ts +2 -0
- package/dist/ui/use-paged-list-view.test.d.ts.map +1 -0
- package/dist/ui/use-paged-list-view.test.js +136 -0
- package/dist/ui/use-paged-list-view.test.js.map +1 -0
- package/dist/ui/use-paged-view-data.d.ts +103 -0
- package/dist/ui/use-paged-view-data.d.ts.map +1 -0
- package/dist/ui/use-paged-view-data.js +173 -0
- package/dist/ui/use-paged-view-data.js.map +1 -0
- package/dist/ui/use-paged-view-data.seeded.test.d.ts +2 -0
- package/dist/ui/use-paged-view-data.seeded.test.d.ts.map +1 -0
- package/dist/ui/use-paged-view-data.seeded.test.js +144 -0
- package/dist/ui/use-paged-view-data.seeded.test.js.map +1 -0
- package/dist/ui/use-paged-view-data.test.d.ts +2 -0
- package/dist/ui/use-paged-view-data.test.d.ts.map +1 -0
- package/dist/ui/use-paged-view-data.test.js +330 -0
- package/dist/ui/use-paged-view-data.test.js.map +1 -0
- package/dist/ui/use-reset-on-change.d.ts +22 -0
- package/dist/ui/use-reset-on-change.d.ts.map +1 -0
- package/dist/ui/use-reset-on-change.js +29 -0
- package/dist/ui/use-reset-on-change.js.map +1 -0
- package/dist/ui/use-reset-on-change.test.d.ts +2 -0
- package/dist/ui/use-reset-on-change.test.d.ts.map +1 -0
- package/dist/ui/use-reset-on-change.test.js +61 -0
- package/dist/ui/use-reset-on-change.test.js.map +1 -0
- package/dist/ui/use-view-data.seeded.test.d.ts +2 -0
- package/dist/ui/use-view-data.seeded.test.d.ts.map +1 -0
- package/dist/ui/use-view-data.seeded.test.js +168 -0
- package/dist/ui/use-view-data.seeded.test.js.map +1 -0
- package/dist/ui/view-data-state.d.ts +52 -0
- package/dist/ui/view-data-state.d.ts.map +1 -0
- package/dist/ui/view-data-state.js +54 -0
- package/dist/ui/view-data-state.js.map +1 -0
- package/dist/ui/view-data-state.test.d.ts +2 -0
- package/dist/ui/view-data-state.test.d.ts.map +1 -0
- package/dist/ui/view-data-state.test.js +62 -0
- package/dist/ui/view-data-state.test.js.map +1 -0
- package/dist/ui/view-meta.d.ts +70 -0
- package/dist/ui/view-meta.d.ts.map +1 -0
- package/dist/ui/view-meta.js +84 -0
- package/dist/ui/view-meta.js.map +1 -0
- package/dist/ui/view-meta.test.d.ts +2 -0
- package/dist/ui/view-meta.test.d.ts.map +1 -0
- package/dist/ui/view-meta.test.js +92 -0
- package/dist/ui/view-meta.test.js.map +1 -0
- package/dist/ui/view-refresh-state.d.ts +26 -0
- package/dist/ui/view-refresh-state.d.ts.map +1 -0
- package/dist/ui/view-refresh-state.js +15 -0
- package/dist/ui/view-refresh-state.js.map +1 -0
- package/dist/ui/widget-shell.d.ts +24 -0
- package/dist/ui/widget-shell.d.ts.map +1 -0
- package/dist/ui/widget-shell.js +50 -0
- package/dist/ui/widget-shell.js.map +1 -0
- package/dist/ui/widget-shell.test.d.ts +2 -0
- package/dist/ui/widget-shell.test.d.ts.map +1 -0
- package/dist/ui/widget-shell.test.js +41 -0
- package/dist/ui/widget-shell.test.js.map +1 -0
- package/dist/view-results.d.ts +42 -0
- package/dist/view-results.d.ts.map +1 -0
- package/dist/view-results.js +17 -0
- package/dist/view-results.js.map +1 -0
- package/dist/widget-meta-defaults.d.ts +48 -0
- package/dist/widget-meta-defaults.d.ts.map +1 -0
- package/dist/widget-meta-defaults.js +80 -0
- package/dist/widget-meta-defaults.js.map +1 -0
- package/dist/widget-meta-defaults.test.d.ts +2 -0
- package/dist/widget-meta-defaults.test.d.ts.map +1 -0
- package/dist/widget-meta-defaults.test.js +196 -0
- package/dist/widget-meta-defaults.test.js.map +1 -0
- package/dist/widget-tool-bindings.d.ts +71 -0
- package/dist/widget-tool-bindings.d.ts.map +1 -0
- package/dist/widget-tool-bindings.js +80 -0
- package/dist/widget-tool-bindings.js.map +1 -0
- package/dist/widget-tool-bindings.test.d.ts +2 -0
- package/dist/widget-tool-bindings.test.d.ts.map +1 -0
- package/dist/widget-tool-bindings.test.js +83 -0
- package/dist/widget-tool-bindings.test.js.map +1 -0
- package/dist/with-tool-errors.test.d.ts +2 -0
- package/dist/with-tool-errors.test.d.ts.map +1 -0
- package/dist/with-tool-errors.test.js +38 -0
- package/dist/with-tool-errors.test.js.map +1 -0
- package/package.json +113 -5
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// @vitest-environment happy-dom
|
|
3
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
4
|
+
import { bootstrapView, disposeView } from "mcp-use/react";
|
|
5
|
+
import { queryClient, useLocale } from "@miragon/mcp-toolkit-ui";
|
|
6
|
+
import { useHostBridge } from "@miragon/mcp-toolkit-ui/app";
|
|
7
|
+
import { AppShellProviders } from "./app-shell-providers.js";
|
|
8
|
+
import { SHELL_SETTINGS_DATA } from "../shell-settings-contract.js";
|
|
9
|
+
import { useHostWidgets } from "./host-widgets.js";
|
|
10
|
+
import { LocalizedAppView } from "./localized-app-view.js";
|
|
11
|
+
import { useHostDisplayMode } from "./widget-shell.js";
|
|
12
|
+
const PROFILE_FEED = SHELL_SETTINGS_DATA;
|
|
13
|
+
function profileResult(view) {
|
|
14
|
+
return {
|
|
15
|
+
content: [{ type: "text", text: JSON.stringify(view) }],
|
|
16
|
+
structuredContent: view,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/** A minimal host: answers `ui/initialize` and `tools/call`, records everything the view sent. */
|
|
20
|
+
function createFakeHost(options) {
|
|
21
|
+
const sent = [];
|
|
22
|
+
const transport = {
|
|
23
|
+
onmessage: undefined,
|
|
24
|
+
onclose: undefined,
|
|
25
|
+
onerror: undefined,
|
|
26
|
+
start: () => Promise.resolve(),
|
|
27
|
+
close: () => {
|
|
28
|
+
transport.onclose?.();
|
|
29
|
+
return Promise.resolve();
|
|
30
|
+
},
|
|
31
|
+
send: (message) => {
|
|
32
|
+
sent.push(message);
|
|
33
|
+
if (message.id !== undefined && message.method) {
|
|
34
|
+
const reply = answer(message);
|
|
35
|
+
queueMicrotask(() => transport.onmessage?.({ jsonrpc: "2.0", id: message.id, ...reply }));
|
|
36
|
+
}
|
|
37
|
+
return Promise.resolve();
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
function answer(message) {
|
|
41
|
+
if (message.method === "ui/initialize") {
|
|
42
|
+
return {
|
|
43
|
+
result: {
|
|
44
|
+
protocolVersion: message.params?.protocolVersion,
|
|
45
|
+
hostInfo: { name: "fake-host", version: "1.0.0" },
|
|
46
|
+
hostCapabilities: options.hostCapabilities ?? {
|
|
47
|
+
serverTools: {},
|
|
48
|
+
updateModelContext: { text: {} },
|
|
49
|
+
},
|
|
50
|
+
hostContext: options.hostContext,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
if (message.method === "tools/call") {
|
|
55
|
+
const result = options.tools?.[String(message.params?.name)];
|
|
56
|
+
if (result)
|
|
57
|
+
return { result };
|
|
58
|
+
return { error: { code: -32602, message: `unknown tool ${String(message.params?.name)}` } };
|
|
59
|
+
}
|
|
60
|
+
return { result: {} };
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
transport: transport,
|
|
64
|
+
/** The methods the view sent, in order (requests and notifications). */
|
|
65
|
+
methods: () => sent.map((m) => m.method),
|
|
66
|
+
toolCalls: () => sent
|
|
67
|
+
.filter((m) => m.method === "tools/call")
|
|
68
|
+
.map((m) => ({ name: m.params?.name, arguments: m.params?.arguments })),
|
|
69
|
+
notify: (method, params) => transport.onmessage?.({ jsonrpc: "2.0", method, params }),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const DemoWidget = () => null;
|
|
73
|
+
/** Everything the stack provides, in one line: locale | display mode | registry. */
|
|
74
|
+
function Probe() {
|
|
75
|
+
// Throws without the host bridge above — part of what is under test.
|
|
76
|
+
useHostBridge();
|
|
77
|
+
const widgets = Object.keys(useHostWidgets()).join(",");
|
|
78
|
+
return _jsx("output", { "data-testid": "probe", children: `${useLocale()}|${useHostDisplayMode()}|${widgets}` });
|
|
79
|
+
}
|
|
80
|
+
function mount(host) {
|
|
81
|
+
bootstrapView({
|
|
82
|
+
default: () => (_jsx(AppShellProviders, { widgets: { "demo:widget": DemoWidget }, children: _jsx(Probe, {}) })),
|
|
83
|
+
}, { transport: host.transport });
|
|
84
|
+
}
|
|
85
|
+
const probe = () => document.querySelector("[data-testid=probe]")?.textContent;
|
|
86
|
+
const root = document.documentElement;
|
|
87
|
+
afterEach(async () => {
|
|
88
|
+
await disposeView();
|
|
89
|
+
document.getElementById("root")?.remove();
|
|
90
|
+
// The toolkit's query client is a module singleton shared by every mount —
|
|
91
|
+
// the suite runs on its PRODUCTION defaults (react-query's retries
|
|
92
|
+
// included); cancelling stops any retry still waiting.
|
|
93
|
+
await queryClient.cancelQueries();
|
|
94
|
+
queryClient.clear();
|
|
95
|
+
root.className = "";
|
|
96
|
+
root.lang = "";
|
|
97
|
+
root.removeAttribute("data-theme");
|
|
98
|
+
root.removeAttribute("style");
|
|
99
|
+
vi.unstubAllGlobals();
|
|
100
|
+
});
|
|
101
|
+
describe("AppShellProviders (real mcp-use view runtime)", () => {
|
|
102
|
+
it("wires host bridge → display mode → profile → widget registry, in that order", async () => {
|
|
103
|
+
const host = createFakeHost({
|
|
104
|
+
hostContext: {
|
|
105
|
+
theme: "dark",
|
|
106
|
+
displayMode: "fullscreen",
|
|
107
|
+
availableDisplayModes: ["inline", "fullscreen"],
|
|
108
|
+
},
|
|
109
|
+
tools: { [PROFILE_FEED]: profileResult({ language: "de" }) },
|
|
110
|
+
});
|
|
111
|
+
mount(host);
|
|
112
|
+
// ProfileGate reached the host through the bridge ABOVE it (the profile
|
|
113
|
+
// locale arrived), the display mode came from the view scope, and the
|
|
114
|
+
// registry is provided below the gate.
|
|
115
|
+
await vi.waitFor(() => expect(probe()).toBe("de|fullscreen|demo:widget"));
|
|
116
|
+
expect(host.toolCalls()).toEqual([{ name: PROFILE_FEED, arguments: {} }]);
|
|
117
|
+
// The profile language and the host's theme are applied document-wide —
|
|
118
|
+
// one theme on every channel the CSS, the host and native controls read.
|
|
119
|
+
expect(root.lang).toBe("de");
|
|
120
|
+
expect(root.classList.contains("dark")).toBe(true);
|
|
121
|
+
expect(root.getAttribute("data-theme")).toBe("dark");
|
|
122
|
+
expect(root.style.getPropertyValue("color-scheme")).toBe("dark");
|
|
123
|
+
});
|
|
124
|
+
it("follows the HOST's theme and, for a system profile, its locale — over a light OS and English defaults (#339)", async () => {
|
|
125
|
+
vi.stubGlobal("matchMedia", vi.fn().mockReturnValue({
|
|
126
|
+
matches: false,
|
|
127
|
+
addEventListener: vi.fn(),
|
|
128
|
+
removeEventListener: vi.fn(),
|
|
129
|
+
}));
|
|
130
|
+
const host = createFakeHost({
|
|
131
|
+
hostContext: { theme: "dark", locale: "de-DE" },
|
|
132
|
+
tools: { [PROFILE_FEED]: profileResult({ language: "system" }) },
|
|
133
|
+
});
|
|
134
|
+
mount(host);
|
|
135
|
+
await vi.waitFor(() => expect(probe()).toBe("de|inline|demo:widget"));
|
|
136
|
+
expect(root.lang).toBe("de");
|
|
137
|
+
expect(root.classList.contains("dark")).toBe(true);
|
|
138
|
+
expect(root.getAttribute("data-theme")).toBe("dark");
|
|
139
|
+
});
|
|
140
|
+
it("puts the host's style variables and font on the document, and fills it in fullscreen", async () => {
|
|
141
|
+
const host = createFakeHost({
|
|
142
|
+
hostContext: {
|
|
143
|
+
theme: "light",
|
|
144
|
+
displayMode: "fullscreen",
|
|
145
|
+
availableDisplayModes: ["inline", "fullscreen"],
|
|
146
|
+
styles: {
|
|
147
|
+
variables: { "--font-sans": "HostSans, sans-serif", "--font-mono": "HostMono" },
|
|
148
|
+
css: { fonts: "@font-face { font-family: HostSans; src: local(Arial); }" },
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
tools: { [PROFILE_FEED]: profileResult({ language: "en" }) },
|
|
152
|
+
});
|
|
153
|
+
mount(host);
|
|
154
|
+
await vi.waitFor(() => expect(probe()).toBe("en|fullscreen|demo:widget"));
|
|
155
|
+
// The host's font fills the fallback slot of the theme's font roles
|
|
156
|
+
// (adoptHostFontVariables), so the stack stays Geist first, then the
|
|
157
|
+
// host's font, then the system; the role names themselves are not
|
|
158
|
+
// overwritten.
|
|
159
|
+
expect(root.style.getPropertyValue("--host-font-sans")).toBe("HostSans, sans-serif");
|
|
160
|
+
expect(root.style.getPropertyValue("--host-font-mono")).toBe("HostMono");
|
|
161
|
+
expect(root.style.getPropertyValue("--font-sans")).toBe("");
|
|
162
|
+
expect(root.style.getPropertyValue("--font-mono")).toBe("");
|
|
163
|
+
expect(document.getElementById("__mcp-host-fonts")?.textContent).toContain("HostSans");
|
|
164
|
+
expect(root.style.height).toBe("100%");
|
|
165
|
+
document.getElementById("__mcp-host-fonts")?.remove();
|
|
166
|
+
});
|
|
167
|
+
it("follows a host display-mode change live", async () => {
|
|
168
|
+
const host = createFakeHost({
|
|
169
|
+
hostContext: { displayMode: "fullscreen", availableDisplayModes: ["inline", "fullscreen"] },
|
|
170
|
+
tools: { [PROFILE_FEED]: profileResult({ language: "en" }) },
|
|
171
|
+
});
|
|
172
|
+
mount(host);
|
|
173
|
+
await vi.waitFor(() => expect(probe()).toBe("en|fullscreen|demo:widget"));
|
|
174
|
+
host.notify("ui/notifications/host-context-changed", { displayMode: "inline" });
|
|
175
|
+
await vi.waitFor(() => expect(probe()).toBe("en|inline|demo:widget"));
|
|
176
|
+
});
|
|
177
|
+
it("still renders, in English and the OS theme, on a host that cannot call server tools", async () => {
|
|
178
|
+
// No `serverTools` capability: every tool call (the profile feed
|
|
179
|
+
// included) rejects inside the guest — the gate must degrade, not crash,
|
|
180
|
+
// and not wait out react-query's retries (the toolkit's client keeps the
|
|
181
|
+
// default 3, ~7 s of backoff): the first failure releases it.
|
|
182
|
+
// A dark OS, so the theme fallback is observable (light is the default).
|
|
183
|
+
vi.stubGlobal("matchMedia", vi.fn().mockReturnValue({
|
|
184
|
+
matches: true,
|
|
185
|
+
addEventListener: vi.fn(),
|
|
186
|
+
removeEventListener: vi.fn(),
|
|
187
|
+
}));
|
|
188
|
+
const host = createFakeHost({ hostContext: {}, hostCapabilities: {} });
|
|
189
|
+
mount(host);
|
|
190
|
+
// Within 1 s — inside the gate's 1.5 s profile bound, so the bound cannot
|
|
191
|
+
// be what released it …
|
|
192
|
+
await vi.waitFor(() => expect(probe()).toBe("en|inline|demo:widget"), { timeout: 1_000 });
|
|
193
|
+
// … while the retries still run: the query is pending after one failure.
|
|
194
|
+
expect(queryClient.getQueryState(["shell:settings", {}])).toMatchObject({
|
|
195
|
+
status: "pending",
|
|
196
|
+
fetchFailureCount: 1,
|
|
197
|
+
});
|
|
198
|
+
expect(host.toolCalls()).toEqual([]);
|
|
199
|
+
expect(root.lang).toBe("en");
|
|
200
|
+
expect(root.classList.contains("dark")).toBe(true);
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
/** A module widget with its own heading, as `WidgetHeader` renders it. */
|
|
204
|
+
const HeadedWidget = () => _jsx("h2", { children: "Widget heading" });
|
|
205
|
+
const VIEW_WIDGETS = { "demo:headed": HeadedWidget };
|
|
206
|
+
/** A `show_*` / `render-view` result: the server's view title over one widget. */
|
|
207
|
+
const VIEW_RESULT = {
|
|
208
|
+
content: [{ type: "text", text: "Rendered the view." }],
|
|
209
|
+
structuredContent: {
|
|
210
|
+
title: "Server view title",
|
|
211
|
+
context: { keys: {}, stepIds: [], stepData: {}, errors: [] },
|
|
212
|
+
layout: { rows: [{ row: [{ widget: "demo:headed" }] }] },
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
/**
|
|
216
|
+
* Mount a view the way every composed-server bundle does (AppShellProviders +
|
|
217
|
+
* LocalizedAppView), deliver the tool's result over the real view runtime and
|
|
218
|
+
* return the headings it renders. `toolName` is what the host names in
|
|
219
|
+
* SEP-1865 `toolInfo`; the chain under test is toolInfo → ShellHost.toolName
|
|
220
|
+
* (ViewHostBridge) → viewTitleMode → the toolkit toolbar's title.
|
|
221
|
+
*/
|
|
222
|
+
async function viewHeadings(toolName) {
|
|
223
|
+
const host = createFakeHost({
|
|
224
|
+
hostContext: toolName
|
|
225
|
+
? { toolInfo: { tool: { name: toolName, inputSchema: { type: "object" } } } }
|
|
226
|
+
: {},
|
|
227
|
+
tools: { [PROFILE_FEED]: profileResult({ language: "en" }) },
|
|
228
|
+
});
|
|
229
|
+
bootstrapView({
|
|
230
|
+
default: () => (_jsx(AppShellProviders, { widgets: VIEW_WIDGETS, children: _jsx(LocalizedAppView, { widgets: VIEW_WIDGETS }) })),
|
|
231
|
+
}, { transport: host.transport });
|
|
232
|
+
await vi.waitFor(() => expect(host.methods()).toContain("ui/notifications/initialized"));
|
|
233
|
+
host.notify("ui/notifications/tool-input", { arguments: {} });
|
|
234
|
+
host.notify("ui/notifications/tool-result", VIEW_RESULT);
|
|
235
|
+
await vi.waitFor(() => expect(document.body.textContent).toContain("Widget heading"));
|
|
236
|
+
return [...document.querySelectorAll("h1, h2, h3, h4, h5, h6")].map((h) => h.textContent);
|
|
237
|
+
}
|
|
238
|
+
describe("LocalizedAppView: one title per view (real mcp-use view runtime)", () => {
|
|
239
|
+
it("hides the toolbar title over a module view: the widget's heading is the one title", async () => {
|
|
240
|
+
expect(await viewHeadings("camunda7_show_process_list")).toEqual(["Widget heading"]);
|
|
241
|
+
});
|
|
242
|
+
it("keeps the toolbar title over a composed render-view, whose widgets carry none", async () => {
|
|
243
|
+
expect(await viewHeadings("render-view")).toEqual(["Server view title", "Widget heading"]);
|
|
244
|
+
});
|
|
245
|
+
it("keeps it where the host does not name the rendering tool", async () => {
|
|
246
|
+
expect(await viewHeadings(undefined)).toEqual(["Server view title", "Widget heading"]);
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
//# sourceMappingURL=app-shell-providers.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-shell-providers.test.js","sourceRoot":"","sources":["../../src/ui/app-shell-providers.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { AskAiPrompt } from "./ask-ai-prompt.js";
|
|
2
|
+
import { type LucideIcon } from "./icon.js";
|
|
3
|
+
/**
|
|
4
|
+
* Placement tiers. All but `menuitem` render as the same secondary outline
|
|
5
|
+
* button (a hand-off is never the view's primary action: the deterministic
|
|
6
|
+
* next step, Retry or Resolve, is); `icon` drops the visible label for dense
|
|
7
|
+
* rows; `menuitem` is an entry of a row's action menu ({@link MENU_ITEM},
|
|
8
|
+
* `role="menuitem"`), whose card is its surface.
|
|
9
|
+
*/
|
|
10
|
+
export type AskAiVariant = "primary" | "subtle" | "icon" | "menuitem";
|
|
11
|
+
export interface AskAiButtonProps {
|
|
12
|
+
/**
|
|
13
|
+
* The hand-off posted to the agent as the user's chat message (`askAi` →
|
|
14
|
+
* `sendFollowup`). Only {@link askAiPrompt} builds one: a short localized
|
|
15
|
+
* intent + ids, engine text fenced as untrusted data, and only the tools
|
|
16
|
+
* the deployment registers for the model. `null` — nothing in the task is
|
|
17
|
+
* available here (or not yet known) — renders no button at all.
|
|
18
|
+
*/
|
|
19
|
+
prompt: AskAiPrompt | null;
|
|
20
|
+
/**
|
|
21
|
+
* The Lucide icon of the CONCRETE function the chat will do — `FileSearch`
|
|
22
|
+
* to explain an error, `ClipboardList` to draft a ticket, `GitCompare` to
|
|
23
|
+
* compare (CI: no sparkles, no generic "AI" symbol). Defaults to a neutral
|
|
24
|
+
* `MessageSquare` (it goes to the chat).
|
|
25
|
+
*/
|
|
26
|
+
icon?: LucideIcon;
|
|
27
|
+
/**
|
|
28
|
+
* A verb phrase that says the work happens in the chat: "Im Chat
|
|
29
|
+
* erklären" / "Explain in chat", "Ticket im Chat entwerfen". Defaults to
|
|
30
|
+
* the locale's "Im Chat analysieren" / "Analyze in chat". For `icon` it
|
|
31
|
+
* moves to `aria-label`/`title`.
|
|
32
|
+
*/
|
|
33
|
+
label?: string;
|
|
34
|
+
/**
|
|
35
|
+
* `primary` = the one surface-level entry of a view; `subtle` = per-row /
|
|
36
|
+
* per-section (the common case); `icon` = dense table rows (icon only,
|
|
37
|
+
* label → aria-label); `menuitem` = an entry of a row's action menu.
|
|
38
|
+
*/
|
|
39
|
+
variant?: AskAiVariant;
|
|
40
|
+
/** Tooltip/aria override; defaults to `label`. */
|
|
41
|
+
title?: string;
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
/** Optional hook fired after the handoff is dispatched. */
|
|
44
|
+
onSent?: () => void;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The single "cross into chat" affordance for the whole cockpit and the ONLY
|
|
48
|
+
* owner of the {@link useHostActions} `askAi` call site (a structural test
|
|
49
|
+
* fails on any other) for analyze / explain / compare / draft / prepare-action
|
|
50
|
+
* handoffs. Renders the same everywhere: an outline button with the icon of
|
|
51
|
+
* the concrete function and a verb that names the chat. Deterministic
|
|
52
|
+
* navigation (`useNav`/`showWidget`) and mutations must NOT use this — they
|
|
53
|
+
* keep their own controls.
|
|
54
|
+
*/
|
|
55
|
+
export declare function AskAiButton({ prompt, icon, label, variant, title, disabled, onSent, }: AskAiButtonProps): import("react").JSX.Element | null;
|
|
56
|
+
//# sourceMappingURL=ask-ai-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-ai-button.d.ts","sourceRoot":"","sources":["../../src/ui/ask-ai-button.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,WAAW,CAAA;AAIjD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;AAErE,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,IAAoB,EACpB,KAAK,EACL,OAAkB,EAClB,KAAK,EACL,QAAQ,EACR,MAAM,GACP,EAAE,gBAAgB,sCA2ClB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, useLocale } from "@miragon/mcp-toolkit-ui";
|
|
3
|
+
import { MessageSquare } from "lucide-react";
|
|
4
|
+
import { useHostActions } from "@miragon/mcp-toolkit-ui/app";
|
|
5
|
+
import { Icon } from "./icon.js";
|
|
6
|
+
import { kitLabels } from "./kit-labels.js";
|
|
7
|
+
import { MENU_ITEM } from "./menu-item.js";
|
|
8
|
+
/**
|
|
9
|
+
* The single "cross into chat" affordance for the whole cockpit and the ONLY
|
|
10
|
+
* owner of the {@link useHostActions} `askAi` call site (a structural test
|
|
11
|
+
* fails on any other) for analyze / explain / compare / draft / prepare-action
|
|
12
|
+
* handoffs. Renders the same everywhere: an outline button with the icon of
|
|
13
|
+
* the concrete function and a verb that names the chat. Deterministic
|
|
14
|
+
* navigation (`useNav`/`showWidget`) and mutations must NOT use this — they
|
|
15
|
+
* keep their own controls.
|
|
16
|
+
*/
|
|
17
|
+
export function AskAiButton({ prompt, icon = MessageSquare, label, variant = "subtle", title, disabled, onSent, }) {
|
|
18
|
+
const host = useHostActions();
|
|
19
|
+
const locale = useLocale();
|
|
20
|
+
if (prompt === null)
|
|
21
|
+
return null;
|
|
22
|
+
// The kit has no message catalog of its own, so the default verb follows the
|
|
23
|
+
// ambient locale — otherwise every label-less call site leaks English into a
|
|
24
|
+
// localized cockpit.
|
|
25
|
+
const effectiveLabel = label ?? kitLabels(locale).askAiDefault;
|
|
26
|
+
const send = () => {
|
|
27
|
+
host.askAi(prompt);
|
|
28
|
+
onSent?.();
|
|
29
|
+
};
|
|
30
|
+
if (variant === "menuitem") {
|
|
31
|
+
return (_jsxs("button", { type: "button", role: "menuitem", tabIndex: -1, disabled: disabled, title: title, className: MENU_ITEM, onClick: send, children: [_jsx(Icon, { icon: icon, dense: true }), effectiveLabel] }));
|
|
32
|
+
}
|
|
33
|
+
const isIcon = variant === "icon";
|
|
34
|
+
return (_jsxs(Button, { type: "button", variant: "outline", size: isIcon ? "icon-sm" : "sm", disabled: disabled, "aria-label": isIcon ? (title ?? effectiveLabel) : undefined, title: isIcon ? (title ?? effectiveLabel) : title, onClick: send, children: [_jsx(Icon, { icon: icon, dense: isIcon }), !isIcon && effectiveLabel] }));
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=ask-ai-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-ai-button.js","sourceRoot":"","sources":["../../src/ui/ask-ai-button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D,OAAO,EAAE,IAAI,EAAmB,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AA+C1C;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,MAAM,EACN,IAAI,GAAG,aAAa,EACpB,KAAK,EACL,OAAO,GAAG,QAAQ,EAClB,KAAK,EACL,QAAQ,EACR,MAAM,GACW;IACjB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;IAC7B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAChC,6EAA6E;IAC7E,6EAA6E;IAC7E,qBAAqB;IACrB,MAAM,cAAc,GAAG,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,YAAY,CAAA;IAC9D,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAClB,MAAM,EAAE,EAAE,CAAA;IACZ,CAAC,CAAA;IACD,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,QAAQ,EAAE,CAAC,CAAC,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,IAAI,aAEb,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,SAAG,EACzB,cAAc,IACR,CACV,CAAA;IACH,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,KAAK,MAAM,CAAA;IACjC,OAAO,CACL,MAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAC/B,QAAQ,EAAE,QAAQ,gBACN,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1D,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,EACjD,OAAO,EAAE,IAAI,aAEb,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAI,EAClC,CAAC,MAAM,IAAI,cAAc,IACnB,CACV,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-ai-button.test.d.ts","sourceRoot":"","sources":["../../src/ui/ask-ai-button.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// @vitest-environment happy-dom
|
|
3
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
4
|
+
import { cleanup, fireEvent, render, screen } from "@testing-library/react";
|
|
5
|
+
import { LocaleProvider } from "@miragon/mcp-toolkit-ui";
|
|
6
|
+
import { HostBridgeProvider } from "@miragon/mcp-toolkit-ui/app";
|
|
7
|
+
import { FileSearch } from "lucide-react";
|
|
8
|
+
import { AskAiButton } from "./ask-ai-button.js";
|
|
9
|
+
import { askAiPrompt } from "./ask-ai-prompt.js";
|
|
10
|
+
afterEach(cleanup);
|
|
11
|
+
function renderButton(prompt, locale = "en", props = {}) {
|
|
12
|
+
const sendFollowup = vi.fn();
|
|
13
|
+
const bridge = {
|
|
14
|
+
callTool: vi.fn(),
|
|
15
|
+
sendFollowup,
|
|
16
|
+
openExternal: vi.fn(),
|
|
17
|
+
getWidgetData: () => null,
|
|
18
|
+
};
|
|
19
|
+
const view = render(_jsx(HostBridgeProvider, { bridge: bridge, children: _jsx(LocaleProvider, { locale: locale, children: _jsx(AskAiButton, { prompt: prompt, ...props }) }) }));
|
|
20
|
+
return { ...view, sendFollowup };
|
|
21
|
+
}
|
|
22
|
+
const prompt = (locale = "en") => askAiPrompt({
|
|
23
|
+
intent: "Explain this.",
|
|
24
|
+
locale,
|
|
25
|
+
ids: { incidentId: "i1" },
|
|
26
|
+
surface: { has: () => true },
|
|
27
|
+
});
|
|
28
|
+
describe("AskAiButton", () => {
|
|
29
|
+
it("posts the built hand-off unchanged as the follow-up", () => {
|
|
30
|
+
const { sendFollowup } = renderButton(prompt());
|
|
31
|
+
fireEvent.click(screen.getByRole("button", { name: "Analyze in chat" }));
|
|
32
|
+
expect(sendFollowup).toHaveBeenCalledWith('Explain this.\nIds: incidentId="i1"');
|
|
33
|
+
});
|
|
34
|
+
it("renders nothing for a hand-off with nothing available in this deployment", () => {
|
|
35
|
+
const { container } = renderButton(null);
|
|
36
|
+
expect(container.querySelector("button")).toBeNull();
|
|
37
|
+
});
|
|
38
|
+
it("defaults its verb to the locale, a verb that names the chat", () => {
|
|
39
|
+
renderButton(prompt("de"), "de");
|
|
40
|
+
expect(screen.getByRole("button", { name: "Im Chat analysieren" })).toBeTruthy();
|
|
41
|
+
});
|
|
42
|
+
it("draws a decorative Lucide icon (default: the chat bubble), never the ✦ sparkle", () => {
|
|
43
|
+
const { container } = renderButton(prompt());
|
|
44
|
+
const svg = container.querySelector("svg");
|
|
45
|
+
expect(svg.getAttribute("class")).toContain("lucide-message-square");
|
|
46
|
+
expect(svg.getAttribute("aria-hidden")).toBe("true");
|
|
47
|
+
expect(container.textContent).not.toContain("✦");
|
|
48
|
+
});
|
|
49
|
+
it("shows the icon of the concrete function and the caller's verb", () => {
|
|
50
|
+
const { container } = renderButton(prompt(), "en", {
|
|
51
|
+
icon: FileSearch,
|
|
52
|
+
label: "Explain in chat",
|
|
53
|
+
});
|
|
54
|
+
expect(screen.getByRole("button", { name: "Explain in chat" })).toBeTruthy();
|
|
55
|
+
expect(container.querySelector("svg").getAttribute("class")).toContain("lucide-file-search");
|
|
56
|
+
});
|
|
57
|
+
it("the icon variant moves the label into the accessible name and the tooltip", () => {
|
|
58
|
+
const { container } = renderButton(prompt(), "en", {
|
|
59
|
+
variant: "icon",
|
|
60
|
+
label: "Draft a ticket in chat",
|
|
61
|
+
});
|
|
62
|
+
const button = screen.getByRole("button", { name: "Draft a ticket in chat" });
|
|
63
|
+
expect(button.getAttribute("title")).toBe("Draft a ticket in chat");
|
|
64
|
+
expect(button.textContent).toBe("");
|
|
65
|
+
// A dense icon bar: the CI's narrower stroke, set on the icon itself.
|
|
66
|
+
expect(container.querySelector("svg").getAttribute("stroke-width")).toBe("2");
|
|
67
|
+
});
|
|
68
|
+
it("the menuitem variant is a plain entry of a menu that posts the same hand-off", () => {
|
|
69
|
+
const onSent = vi.fn();
|
|
70
|
+
const { container, sendFollowup } = renderButton(prompt(), "en", {
|
|
71
|
+
variant: "menuitem",
|
|
72
|
+
icon: FileSearch,
|
|
73
|
+
label: "Explain error in chat",
|
|
74
|
+
onSent,
|
|
75
|
+
});
|
|
76
|
+
const item = screen.getByRole("menuitem", { name: "Explain error in chat" });
|
|
77
|
+
expect(item.getAttribute("tabindex")).toBe("-1");
|
|
78
|
+
// No button chrome: the menu's card is its surface (CI §8): an entry on
|
|
79
|
+
// the small radius in the dense step, the blue-soft hover, half opacity
|
|
80
|
+
// when off, its focus ring drawn inside.
|
|
81
|
+
expect(item.getAttribute("data-slot")).toBeNull();
|
|
82
|
+
const classes = item.className.split(/\s+/);
|
|
83
|
+
for (const role of [
|
|
84
|
+
"rounded-sm",
|
|
85
|
+
"text-dense",
|
|
86
|
+
"hover:bg-accent",
|
|
87
|
+
"disabled:opacity-50",
|
|
88
|
+
"focus-visible:ring-inset",
|
|
89
|
+
]) {
|
|
90
|
+
expect(classes, role).toContain(role);
|
|
91
|
+
}
|
|
92
|
+
expect(container.querySelector("svg").getAttribute("class")).toContain("lucide-file-search");
|
|
93
|
+
fireEvent.click(item);
|
|
94
|
+
expect(sendFollowup).toHaveBeenCalledWith('Explain this.\nIds: incidentId="i1"');
|
|
95
|
+
expect(onSent).toHaveBeenCalledTimes(1);
|
|
96
|
+
});
|
|
97
|
+
it("every variant is the same secondary outline, never a brand accent", () => {
|
|
98
|
+
renderButton(prompt(), "en", { variant: "primary" });
|
|
99
|
+
const button = screen.getByRole("button", { name: "Analyze in chat" });
|
|
100
|
+
expect(button.className).not.toMatch(/text-info|text-link|bg-primary/);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=ask-ai-button.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-ai-button.test.js","sourceRoot":"","sources":["../../src/ui/ask-ai-button.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ONE builder of every widget → model hand-off text (#338).
|
|
3
|
+
*
|
|
4
|
+
* An Ask-AI hand-off reaches the host as a `role: "user"` chat message
|
|
5
|
+
* (`askAi` → `sendFollowup`), so whatever a widget inlines reads to the model
|
|
6
|
+
* as the operator's own words. A model context (`HostModelContext`) is quieter
|
|
7
|
+
* but just as trusted. Both are therefore assembled from typed parts only:
|
|
8
|
+
*
|
|
9
|
+
* - `intent` — a SHORT task from the module's message catalogue (localized,
|
|
10
|
+
* static text: no data, no tool names);
|
|
11
|
+
* - `ids` / `facts` — identifiers the model passes to tools and on-screen
|
|
12
|
+
* numbers; a value that is not id-shaped is never inlined, it moves into
|
|
13
|
+
* the untrusted block instead;
|
|
14
|
+
* - `untrusted` — engine or third-party free text (exception messages,
|
|
15
|
+
* process and activity names, business keys, variable values), length
|
|
16
|
+
* capped and quoted in a fence the text cannot close, under an explicit
|
|
17
|
+
* "data, not instructions" label;
|
|
18
|
+
* - `tools` — the tools that fit the task, filtered by the deployment's live
|
|
19
|
+
* surface, so a hand-off never names a tool the server does not register
|
|
20
|
+
* for the model; `toolIds` — arguments only some of those tools take,
|
|
21
|
+
* inlined only while their tool is named (strict inputs refuse an argument
|
|
22
|
+
* a tool does not take).
|
|
23
|
+
*/
|
|
24
|
+
/** A hand-off built by {@link askAiPrompt} — the only prompt `AskAiButton` accepts. */
|
|
25
|
+
export type AskAiPrompt = string & {
|
|
26
|
+
readonly __brand: "AskAiPrompt";
|
|
27
|
+
};
|
|
28
|
+
/** An id or on-screen fact: inlined only when id-shaped, else quoted as untrusted. */
|
|
29
|
+
export type HandOffValue = string | number | boolean | readonly string[] | null | undefined;
|
|
30
|
+
/** Engine / third-party free text, quoted as data under its author-chosen name. */
|
|
31
|
+
export interface UntrustedText {
|
|
32
|
+
/** What the text is (`incidentMessage`, `businessKey`) — a fixed identifier, never data. */
|
|
33
|
+
label: string;
|
|
34
|
+
text: string | null | undefined;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Which tools the deployment registers for the model — the filter every tool
|
|
38
|
+
* mention passes. Three answers:
|
|
39
|
+
*
|
|
40
|
+
* - `true` — registered: the tool is named;
|
|
41
|
+
* - `false` — absent, or not answered yet (fail closed: a hand-off whose
|
|
42
|
+
* tools are ALL `false` is null, so its button appears a moment late
|
|
43
|
+
* instead of naming a tool that is gone);
|
|
44
|
+
* - `undefined` — cannot be known (the surface feed failed, or the host has
|
|
45
|
+
* no in-widget tools/call): the tool is not named, but the hand-off is
|
|
46
|
+
* still built — intent, ids and fence, no Tools line — since the host can
|
|
47
|
+
* still post it.
|
|
48
|
+
*/
|
|
49
|
+
export interface ToolSurface {
|
|
50
|
+
has(tool: string): boolean | undefined;
|
|
51
|
+
}
|
|
52
|
+
/** A surface that confirms nothing (no tool is ever mentioned). */
|
|
53
|
+
export declare const EMPTY_TOOL_SURFACE: ToolSurface;
|
|
54
|
+
export interface HandOffParts {
|
|
55
|
+
/** Identifiers the model passes to the listed tools (`engine`, `incidentId`, …). */
|
|
56
|
+
ids?: Readonly<Record<string, HandOffValue>>;
|
|
57
|
+
/** On-screen numbers and flags the task refers to (`openIncidents`, …). */
|
|
58
|
+
facts?: Readonly<Record<string, HandOffValue>>;
|
|
59
|
+
/** Engine / third-party free text — only ever inside the fence. */
|
|
60
|
+
untrusted?: readonly UntrustedText[];
|
|
61
|
+
/** The tools that fit the task; the ones off `surface` are dropped. */
|
|
62
|
+
tools?: readonly string[];
|
|
63
|
+
/**
|
|
64
|
+
* Arguments only SOME listed tools take (`period` for an analytics drill),
|
|
65
|
+
* keyed by tool: inlined into the Ids line only while that tool is named —
|
|
66
|
+
* a dropped tool must not leave behind an argument the remaining tools'
|
|
67
|
+
* strict inputs refuse.
|
|
68
|
+
*/
|
|
69
|
+
toolIds?: Readonly<Record<string, Readonly<Record<string, HandOffValue>>>>;
|
|
70
|
+
surface: ToolSurface;
|
|
71
|
+
}
|
|
72
|
+
export interface AskAiPromptSpec extends HandOffParts {
|
|
73
|
+
/** The short task, from the module's catalogue (`t("askAi.…")`) — static text. */
|
|
74
|
+
intent: string;
|
|
75
|
+
/** The active locale — decides the language of the fixed labels. */
|
|
76
|
+
locale: string;
|
|
77
|
+
}
|
|
78
|
+
export interface ModelContextSpec extends HandOffParts {
|
|
79
|
+
/** What the operator is looking at — static, model-facing text. */
|
|
80
|
+
summary: string;
|
|
81
|
+
}
|
|
82
|
+
/** Max characters of ONE untrusted text; longer text keeps its head. */
|
|
83
|
+
export declare const MAX_UNTRUSTED_CHARS = 600;
|
|
84
|
+
interface Labels {
|
|
85
|
+
ids: string;
|
|
86
|
+
facts: string;
|
|
87
|
+
tools: string;
|
|
88
|
+
untrusted: string;
|
|
89
|
+
}
|
|
90
|
+
/** The kit has no catalogue of its own; these few labels follow the locale like AskAiButton's verb. */
|
|
91
|
+
export declare const ASK_AI_PROMPT_LABELS: Readonly<Record<"en" | "de", Labels>>;
|
|
92
|
+
/**
|
|
93
|
+
* A fenced block the text cannot close: the fence is one backtick longer than
|
|
94
|
+
* the longest backtick run inside (at least three). A closing fence must be at
|
|
95
|
+
* least as long as the opening one, so no line of the text can end the block —
|
|
96
|
+
* whatever it says stays quoted data.
|
|
97
|
+
*/
|
|
98
|
+
export declare function fenceUntrusted(text: string): string;
|
|
99
|
+
/**
|
|
100
|
+
* Build an Ask-AI hand-off. Returns `null` — and `AskAiButton` renders
|
|
101
|
+
* nothing — when the task named tools and the surface answers `false` for
|
|
102
|
+
* EVERY one: there is nothing the model could do with it in this deployment
|
|
103
|
+
* (or the surface has not answered yet; the button then appears once it
|
|
104
|
+
* has). A tool the surface cannot know (`undefined`) keeps the hand-off,
|
|
105
|
+
* built without naming that tool.
|
|
106
|
+
*/
|
|
107
|
+
export declare function askAiPrompt(spec: AskAiPromptSpec): AskAiPrompt | null;
|
|
108
|
+
/**
|
|
109
|
+
* Build a model-context text (`HostModelContext` content) from the same parts.
|
|
110
|
+
* Never null: the context describes the view whether or not a tool fits.
|
|
111
|
+
* English — it addresses the model, not the user.
|
|
112
|
+
*/
|
|
113
|
+
export declare function modelContextText(spec: ModelContextSpec): string;
|
|
114
|
+
export {};
|
|
115
|
+
//# sourceMappingURL=ask-ai-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-ai-prompt.d.ts","sourceRoot":"","sources":["../../src/ui/ask-ai-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,uFAAuF;AACvF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;CAAE,CAAA;AAEtE,sFAAsF;AACtF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,CAAA;AAE3F,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC5B,4FAA4F;IAC5F,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAChC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;CACvC;AAED,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,EAAE,WAAkC,CAAA;AAEnE,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;IAC5C,2EAA2E;IAC3E,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;IAC9C,mEAAmE;IACnE,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;IACpC,uEAAuE;IACvE,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1E,OAAO,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAA;IACd,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wEAAwE;AACxE,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAiBtC,UAAU,MAAM;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,uGAAuG;AACvG,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,MAAM,CAAC,CAetE,CAAA;AAsCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKnD;AAiDD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,GAAG,IAAI,CAWrE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAE/D"}
|