@aceshooting/lyra-ui 4.0.0 → 4.1.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/README.md +1 -0
- package/custom-elements.json +49430 -32305
- package/dist/ai/types.contract.d.ts +2 -0
- package/dist/ai/types.contract.d.ts.map +1 -0
- package/dist/ai/types.contract.js +139 -0
- package/dist/ai/types.contract.js.map +1 -0
- package/dist/ai/types.d.ts +199 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +2 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/components/agent-run/agent-run.class.d.ts +158 -0
- package/dist/components/agent-run/agent-run.class.d.ts.map +1 -0
- package/dist/components/agent-run/agent-run.class.js +400 -0
- package/dist/components/agent-run/agent-run.class.js.map +1 -0
- package/dist/components/agent-run/agent-run.d.ts +2 -0
- package/dist/components/agent-run/agent-run.d.ts.map +1 -0
- package/dist/components/agent-run/agent-run.js +5 -0
- package/dist/components/agent-run/agent-run.js.map +1 -0
- package/dist/components/agent-run/agent-run.styles.d.ts +2 -0
- package/dist/components/agent-run/agent-run.styles.d.ts.map +1 -0
- package/dist/components/agent-run/agent-run.styles.js +143 -0
- package/dist/components/agent-run/agent-run.styles.js.map +1 -0
- package/dist/components/agent-trace/agent-trace.class.d.ts +111 -0
- package/dist/components/agent-trace/agent-trace.class.d.ts.map +1 -0
- package/dist/components/agent-trace/agent-trace.class.js +221 -0
- package/dist/components/agent-trace/agent-trace.class.js.map +1 -0
- package/dist/components/agent-trace/agent-trace.d.ts +5 -0
- package/dist/components/agent-trace/agent-trace.d.ts.map +1 -0
- package/dist/components/agent-trace/agent-trace.js +8 -0
- package/dist/components/agent-trace/agent-trace.js.map +1 -0
- package/dist/components/agent-trace/agent-trace.styles.d.ts +2 -0
- package/dist/components/agent-trace/agent-trace.styles.d.ts.map +1 -0
- package/dist/components/agent-trace/agent-trace.styles.js +61 -0
- package/dist/components/agent-trace/agent-trace.styles.js.map +1 -0
- package/dist/components/app-rail/app-rail.styles.d.ts.map +1 -1
- package/dist/components/app-rail/app-rail.styles.js +4 -0
- package/dist/components/app-rail/app-rail.styles.js.map +1 -1
- package/dist/components/chat-message/chat-message.class.d.ts +37 -3
- package/dist/components/chat-message/chat-message.class.d.ts.map +1 -1
- package/dist/components/chat-message/chat-message.class.js +89 -7
- package/dist/components/chat-message/chat-message.class.js.map +1 -1
- package/dist/components/chat-message/chat-message.styles.d.ts.map +1 -1
- package/dist/components/chat-message/chat-message.styles.js +14 -0
- package/dist/components/chat-message/chat-message.styles.js.map +1 -1
- package/dist/components/context-inspector/context-inspector.class.d.ts +114 -0
- package/dist/components/context-inspector/context-inspector.class.d.ts.map +1 -0
- package/dist/components/context-inspector/context-inspector.class.js +222 -0
- package/dist/components/context-inspector/context-inspector.class.js.map +1 -0
- package/dist/components/context-inspector/context-inspector.d.ts +7 -0
- package/dist/components/context-inspector/context-inspector.d.ts.map +1 -0
- package/dist/components/context-inspector/context-inspector.js +10 -0
- package/dist/components/context-inspector/context-inspector.js.map +1 -0
- package/dist/components/context-inspector/context-inspector.styles.d.ts +2 -0
- package/dist/components/context-inspector/context-inspector.styles.d.ts.map +1 -0
- package/dist/components/context-inspector/context-inspector.styles.js +98 -0
- package/dist/components/context-inspector/context-inspector.styles.js.map +1 -0
- package/dist/components/dashboard-grid/dashboard-grid.class.d.ts +162 -0
- package/dist/components/dashboard-grid/dashboard-grid.class.d.ts.map +1 -0
- package/dist/components/dashboard-grid/dashboard-grid.class.js +570 -0
- package/dist/components/dashboard-grid/dashboard-grid.class.js.map +1 -0
- package/dist/components/dashboard-grid/dashboard-grid.d.ts +6 -0
- package/dist/components/dashboard-grid/dashboard-grid.d.ts.map +1 -0
- package/dist/components/dashboard-grid/dashboard-grid.js +9 -0
- package/dist/components/dashboard-grid/dashboard-grid.js.map +1 -0
- package/dist/components/dashboard-grid/dashboard-grid.styles.d.ts +2 -0
- package/dist/components/dashboard-grid/dashboard-grid.styles.d.ts.map +1 -0
- package/dist/components/dashboard-grid/dashboard-grid.styles.js +86 -0
- package/dist/components/dashboard-grid/dashboard-grid.styles.js.map +1 -0
- package/dist/components/dashboard-grid/layout.d.ts +103 -0
- package/dist/components/dashboard-grid/layout.d.ts.map +1 -0
- package/dist/components/dashboard-grid/layout.js +94 -0
- package/dist/components/dashboard-grid/layout.js.map +1 -0
- package/dist/components/date-picker/date-input.class.d.ts +8 -0
- package/dist/components/date-picker/date-input.class.d.ts.map +1 -1
- package/dist/components/date-picker/date-input.class.js +10 -0
- package/dist/components/date-picker/date-input.class.js.map +1 -1
- package/dist/components/date-picker/date-input.styles.d.ts.map +1 -1
- package/dist/components/date-picker/date-input.styles.js +39 -2
- package/dist/components/date-picker/date-input.styles.js.map +1 -1
- package/dist/components/document-compare/document-compare.class.d.ts +131 -0
- package/dist/components/document-compare/document-compare.class.d.ts.map +1 -0
- package/dist/components/document-compare/document-compare.class.js +214 -0
- package/dist/components/document-compare/document-compare.class.js.map +1 -0
- package/dist/components/document-compare/document-compare.d.ts +2 -0
- package/dist/components/document-compare/document-compare.d.ts.map +1 -0
- package/dist/components/document-compare/document-compare.js +5 -0
- package/dist/components/document-compare/document-compare.js.map +1 -0
- package/dist/components/document-compare/document-compare.styles.d.ts +2 -0
- package/dist/components/document-compare/document-compare.styles.d.ts.map +1 -0
- package/dist/components/document-compare/document-compare.styles.js +65 -0
- package/dist/components/document-compare/document-compare.styles.js.map +1 -0
- package/dist/components/document-library/document-library.class.d.ts +154 -0
- package/dist/components/document-library/document-library.class.d.ts.map +1 -0
- package/dist/components/document-library/document-library.class.js +399 -0
- package/dist/components/document-library/document-library.class.js.map +1 -0
- package/dist/components/document-library/document-library.d.ts +9 -0
- package/dist/components/document-library/document-library.d.ts.map +1 -0
- package/dist/components/document-library/document-library.js +12 -0
- package/dist/components/document-library/document-library.js.map +1 -0
- package/dist/components/document-library/document-library.styles.d.ts +2 -0
- package/dist/components/document-library/document-library.styles.d.ts.map +1 -0
- package/dist/components/document-library/document-library.styles.js +77 -0
- package/dist/components/document-library/document-library.styles.js.map +1 -0
- package/dist/components/drilldown-panel/drilldown-panel.class.d.ts +148 -0
- package/dist/components/drilldown-panel/drilldown-panel.class.d.ts.map +1 -0
- package/dist/components/drilldown-panel/drilldown-panel.class.js +241 -0
- package/dist/components/drilldown-panel/drilldown-panel.class.js.map +1 -0
- package/dist/components/drilldown-panel/drilldown-panel.d.ts +9 -0
- package/dist/components/drilldown-panel/drilldown-panel.d.ts.map +1 -0
- package/dist/components/drilldown-panel/drilldown-panel.js +12 -0
- package/dist/components/drilldown-panel/drilldown-panel.js.map +1 -0
- package/dist/components/drilldown-panel/drilldown-panel.styles.d.ts +2 -0
- package/dist/components/drilldown-panel/drilldown-panel.styles.d.ts.map +1 -0
- package/dist/components/drilldown-panel/drilldown-panel.styles.js +49 -0
- package/dist/components/drilldown-panel/drilldown-panel.styles.js.map +1 -0
- package/dist/components/entity-dossier/entity-dossier.class.d.ts +132 -0
- package/dist/components/entity-dossier/entity-dossier.class.d.ts.map +1 -0
- package/dist/components/entity-dossier/entity-dossier.class.js +187 -0
- package/dist/components/entity-dossier/entity-dossier.class.js.map +1 -0
- package/dist/components/entity-dossier/entity-dossier.d.ts +9 -0
- package/dist/components/entity-dossier/entity-dossier.d.ts.map +1 -0
- package/dist/components/entity-dossier/entity-dossier.js +12 -0
- package/dist/components/entity-dossier/entity-dossier.js.map +1 -0
- package/dist/components/entity-dossier/entity-dossier.styles.d.ts +2 -0
- package/dist/components/entity-dossier/entity-dossier.styles.d.ts.map +1 -0
- package/dist/components/entity-dossier/entity-dossier.styles.js +30 -0
- package/dist/components/entity-dossier/entity-dossier.styles.js.map +1 -0
- package/dist/components/eval-dataset/eval-dataset.class.d.ts +145 -0
- package/dist/components/eval-dataset/eval-dataset.class.d.ts.map +1 -0
- package/dist/components/eval-dataset/eval-dataset.class.js +307 -0
- package/dist/components/eval-dataset/eval-dataset.class.js.map +1 -0
- package/dist/components/eval-dataset/eval-dataset.d.ts +7 -0
- package/dist/components/eval-dataset/eval-dataset.d.ts.map +1 -0
- package/dist/components/eval-dataset/eval-dataset.js +10 -0
- package/dist/components/eval-dataset/eval-dataset.js.map +1 -0
- package/dist/components/eval-dataset/eval-dataset.styles.d.ts +2 -0
- package/dist/components/eval-dataset/eval-dataset.styles.d.ts.map +1 -0
- package/dist/components/eval-dataset/eval-dataset.styles.js +76 -0
- package/dist/components/eval-dataset/eval-dataset.styles.js.map +1 -0
- package/dist/components/eval-result/eval-result.class.d.ts +115 -0
- package/dist/components/eval-result/eval-result.class.d.ts.map +1 -0
- package/dist/components/eval-result/eval-result.class.js +165 -0
- package/dist/components/eval-result/eval-result.class.js.map +1 -0
- package/dist/components/eval-result/eval-result.d.ts +5 -0
- package/dist/components/eval-result/eval-result.d.ts.map +1 -0
- package/dist/components/eval-result/eval-result.js +8 -0
- package/dist/components/eval-result/eval-result.js.map +1 -0
- package/dist/components/eval-result/eval-result.styles.d.ts +2 -0
- package/dist/components/eval-result/eval-result.styles.d.ts.map +1 -0
- package/dist/components/eval-result/eval-result.styles.js +47 -0
- package/dist/components/eval-result/eval-result.styles.js.map +1 -0
- package/dist/components/evaluation-run/evaluation-run.class.d.ts +168 -0
- package/dist/components/evaluation-run/evaluation-run.class.d.ts.map +1 -0
- package/dist/components/evaluation-run/evaluation-run.class.js +329 -0
- package/dist/components/evaluation-run/evaluation-run.class.js.map +1 -0
- package/dist/components/evaluation-run/evaluation-run.d.ts +2 -0
- package/dist/components/evaluation-run/evaluation-run.d.ts.map +1 -0
- package/dist/components/evaluation-run/evaluation-run.js +5 -0
- package/dist/components/evaluation-run/evaluation-run.js.map +1 -0
- package/dist/components/evaluation-run/evaluation-run.styles.d.ts +2 -0
- package/dist/components/evaluation-run/evaluation-run.styles.d.ts.map +1 -0
- package/dist/components/evaluation-run/evaluation-run.styles.js +73 -0
- package/dist/components/evaluation-run/evaluation-run.styles.js.map +1 -0
- package/dist/components/filter-bar/filter-bar.class.d.ts +200 -0
- package/dist/components/filter-bar/filter-bar.class.d.ts.map +1 -0
- package/dist/components/filter-bar/filter-bar.class.js +322 -0
- package/dist/components/filter-bar/filter-bar.class.js.map +1 -0
- package/dist/components/filter-bar/filter-bar.d.ts +10 -0
- package/dist/components/filter-bar/filter-bar.d.ts.map +1 -0
- package/dist/components/filter-bar/filter-bar.js +13 -0
- package/dist/components/filter-bar/filter-bar.js.map +1 -0
- package/dist/components/filter-bar/filter-bar.styles.d.ts +2 -0
- package/dist/components/filter-bar/filter-bar.styles.d.ts.map +1 -0
- package/dist/components/filter-bar/filter-bar.styles.js +37 -0
- package/dist/components/filter-bar/filter-bar.styles.js.map +1 -0
- package/dist/components/graph-query-builder/graph-query-builder.class.d.ts +242 -0
- package/dist/components/graph-query-builder/graph-query-builder.class.d.ts.map +1 -0
- package/dist/components/graph-query-builder/graph-query-builder.class.js +511 -0
- package/dist/components/graph-query-builder/graph-query-builder.class.js.map +1 -0
- package/dist/components/graph-query-builder/graph-query-builder.d.ts +7 -0
- package/dist/components/graph-query-builder/graph-query-builder.d.ts.map +1 -0
- package/dist/components/graph-query-builder/graph-query-builder.js +10 -0
- package/dist/components/graph-query-builder/graph-query-builder.js.map +1 -0
- package/dist/components/graph-query-builder/graph-query-builder.styles.d.ts +2 -0
- package/dist/components/graph-query-builder/graph-query-builder.styles.d.ts.map +1 -0
- package/dist/components/graph-query-builder/graph-query-builder.styles.js +170 -0
- package/dist/components/graph-query-builder/graph-query-builder.styles.js.map +1 -0
- package/dist/components/grounding-summary/grounding-summary.class.d.ts +80 -0
- package/dist/components/grounding-summary/grounding-summary.class.d.ts.map +1 -0
- package/dist/components/grounding-summary/grounding-summary.class.js +182 -0
- package/dist/components/grounding-summary/grounding-summary.class.js.map +1 -0
- package/dist/components/grounding-summary/grounding-summary.d.ts +5 -0
- package/dist/components/grounding-summary/grounding-summary.d.ts.map +1 -0
- package/dist/components/grounding-summary/grounding-summary.js +8 -0
- package/dist/components/grounding-summary/grounding-summary.js.map +1 -0
- package/dist/components/grounding-summary/grounding-summary.styles.d.ts +2 -0
- package/dist/components/grounding-summary/grounding-summary.styles.d.ts.map +1 -0
- package/dist/components/grounding-summary/grounding-summary.styles.js +88 -0
- package/dist/components/grounding-summary/grounding-summary.styles.js.map +1 -0
- package/dist/components/ingestion-queue/ingestion-queue.class.d.ts +125 -0
- package/dist/components/ingestion-queue/ingestion-queue.class.d.ts.map +1 -0
- package/dist/components/ingestion-queue/ingestion-queue.class.js +276 -0
- package/dist/components/ingestion-queue/ingestion-queue.class.js.map +1 -0
- package/dist/components/ingestion-queue/ingestion-queue.d.ts +2 -0
- package/dist/components/ingestion-queue/ingestion-queue.d.ts.map +1 -0
- package/dist/components/ingestion-queue/ingestion-queue.js +5 -0
- package/dist/components/ingestion-queue/ingestion-queue.js.map +1 -0
- package/dist/components/ingestion-queue/ingestion-queue.styles.d.ts +2 -0
- package/dist/components/ingestion-queue/ingestion-queue.styles.d.ts.map +1 -0
- package/dist/components/ingestion-queue/ingestion-queue.styles.js +138 -0
- package/dist/components/ingestion-queue/ingestion-queue.styles.js.map +1 -0
- package/dist/components/knowledge-base/knowledge-base.class.d.ts +136 -0
- package/dist/components/knowledge-base/knowledge-base.class.d.ts.map +1 -0
- package/dist/components/knowledge-base/knowledge-base.class.js +360 -0
- package/dist/components/knowledge-base/knowledge-base.class.js.map +1 -0
- package/dist/components/knowledge-base/knowledge-base.d.ts +7 -0
- package/dist/components/knowledge-base/knowledge-base.d.ts.map +1 -0
- package/dist/components/knowledge-base/knowledge-base.js +10 -0
- package/dist/components/knowledge-base/knowledge-base.js.map +1 -0
- package/dist/components/knowledge-base/knowledge-base.styles.d.ts +2 -0
- package/dist/components/knowledge-base/knowledge-base.styles.d.ts.map +1 -0
- package/dist/components/knowledge-base/knowledge-base.styles.js +94 -0
- package/dist/components/knowledge-base/knowledge-base.styles.js.map +1 -0
- package/dist/components/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +196 -0
- package/dist/components/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts.map +1 -0
- package/dist/components/knowledge-graph-explorer/knowledge-graph-explorer.class.js +477 -0
- package/dist/components/knowledge-graph-explorer/knowledge-graph-explorer.class.js.map +1 -0
- package/dist/components/knowledge-graph-explorer/knowledge-graph-explorer.d.ts +11 -0
- package/dist/components/knowledge-graph-explorer/knowledge-graph-explorer.d.ts.map +1 -0
- package/dist/components/knowledge-graph-explorer/knowledge-graph-explorer.js +14 -0
- package/dist/components/knowledge-graph-explorer/knowledge-graph-explorer.js.map +1 -0
- package/dist/components/knowledge-graph-explorer/knowledge-graph-explorer.styles.d.ts +2 -0
- package/dist/components/knowledge-graph-explorer/knowledge-graph-explorer.styles.d.ts.map +1 -0
- package/dist/components/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +76 -0
- package/dist/components/knowledge-graph-explorer/knowledge-graph-explorer.styles.js.map +1 -0
- package/dist/components/memory-panel/memory-panel.class.d.ts +146 -0
- package/dist/components/memory-panel/memory-panel.class.d.ts.map +1 -0
- package/dist/components/memory-panel/memory-panel.class.js +303 -0
- package/dist/components/memory-panel/memory-panel.class.js.map +1 -0
- package/dist/components/memory-panel/memory-panel.d.ts +5 -0
- package/dist/components/memory-panel/memory-panel.d.ts.map +1 -0
- package/dist/components/memory-panel/memory-panel.js +8 -0
- package/dist/components/memory-panel/memory-panel.js.map +1 -0
- package/dist/components/memory-panel/memory-panel.styles.d.ts +2 -0
- package/dist/components/memory-panel/memory-panel.styles.d.ts.map +1 -0
- package/dist/components/memory-panel/memory-panel.styles.js +139 -0
- package/dist/components/memory-panel/memory-panel.styles.js.map +1 -0
- package/dist/components/overlay/popover.class.d.ts +39 -0
- package/dist/components/overlay/popover.class.d.ts.map +1 -1
- package/dist/components/overlay/popover.class.js +53 -3
- package/dist/components/overlay/popover.class.js.map +1 -1
- package/dist/components/overlay/tooltip.class.d.ts +43 -0
- package/dist/components/overlay/tooltip.class.d.ts.map +1 -1
- package/dist/components/overlay/tooltip.class.js +66 -4
- package/dist/components/overlay/tooltip.class.js.map +1 -1
- package/dist/components/policy-summary/policy-summary.class.d.ts +76 -0
- package/dist/components/policy-summary/policy-summary.class.d.ts.map +1 -0
- package/dist/components/policy-summary/policy-summary.class.js +125 -0
- package/dist/components/policy-summary/policy-summary.class.js.map +1 -0
- package/dist/components/policy-summary/policy-summary.d.ts +6 -0
- package/dist/components/policy-summary/policy-summary.d.ts.map +1 -0
- package/dist/components/policy-summary/policy-summary.js +9 -0
- package/dist/components/policy-summary/policy-summary.js.map +1 -0
- package/dist/components/policy-summary/policy-summary.styles.d.ts +2 -0
- package/dist/components/policy-summary/policy-summary.styles.d.ts.map +1 -0
- package/dist/components/policy-summary/policy-summary.styles.js +68 -0
- package/dist/components/policy-summary/policy-summary.styles.js.map +1 -0
- package/dist/components/query-builder/query-builder.class.d.ts +180 -0
- package/dist/components/query-builder/query-builder.class.d.ts.map +1 -0
- package/dist/components/query-builder/query-builder.class.js +415 -0
- package/dist/components/query-builder/query-builder.class.js.map +1 -0
- package/dist/components/query-builder/query-builder.d.ts +9 -0
- package/dist/components/query-builder/query-builder.d.ts.map +1 -0
- package/dist/components/query-builder/query-builder.js +12 -0
- package/dist/components/query-builder/query-builder.js.map +1 -0
- package/dist/components/query-builder/query-builder.styles.d.ts +2 -0
- package/dist/components/query-builder/query-builder.styles.d.ts.map +1 -0
- package/dist/components/query-builder/query-builder.styles.js +77 -0
- package/dist/components/query-builder/query-builder.styles.js.map +1 -0
- package/dist/components/retrieval-results/retrieval-results.class.d.ts +151 -0
- package/dist/components/retrieval-results/retrieval-results.class.d.ts.map +1 -0
- package/dist/components/retrieval-results/retrieval-results.class.js +340 -0
- package/dist/components/retrieval-results/retrieval-results.class.js.map +1 -0
- package/dist/components/retrieval-results/retrieval-results.d.ts +7 -0
- package/dist/components/retrieval-results/retrieval-results.d.ts.map +1 -0
- package/dist/components/retrieval-results/retrieval-results.js +10 -0
- package/dist/components/retrieval-results/retrieval-results.js.map +1 -0
- package/dist/components/retrieval-results/retrieval-results.styles.d.ts +2 -0
- package/dist/components/retrieval-results/retrieval-results.styles.d.ts.map +1 -0
- package/dist/components/retrieval-results/retrieval-results.styles.js +94 -0
- package/dist/components/retrieval-results/retrieval-results.styles.js.map +1 -0
- package/dist/components/retrieval-search/retrieval-search.class.d.ts +127 -0
- package/dist/components/retrieval-search/retrieval-search.class.d.ts.map +1 -0
- package/dist/components/retrieval-search/retrieval-search.class.js +266 -0
- package/dist/components/retrieval-search/retrieval-search.class.js.map +1 -0
- package/dist/components/retrieval-search/retrieval-search.d.ts +8 -0
- package/dist/components/retrieval-search/retrieval-search.d.ts.map +1 -0
- package/dist/components/retrieval-search/retrieval-search.js +11 -0
- package/dist/components/retrieval-search/retrieval-search.js.map +1 -0
- package/dist/components/retrieval-search/retrieval-search.styles.d.ts +2 -0
- package/dist/components/retrieval-search/retrieval-search.styles.d.ts.map +1 -0
- package/dist/components/retrieval-search/retrieval-search.styles.js +75 -0
- package/dist/components/retrieval-search/retrieval-search.styles.js.map +1 -0
- package/dist/components/retrieval-trace/retrieval-trace.class.d.ts +101 -0
- package/dist/components/retrieval-trace/retrieval-trace.class.d.ts.map +1 -0
- package/dist/components/retrieval-trace/retrieval-trace.class.js +215 -0
- package/dist/components/retrieval-trace/retrieval-trace.class.js.map +1 -0
- package/dist/components/retrieval-trace/retrieval-trace.d.ts +4 -0
- package/dist/components/retrieval-trace/retrieval-trace.d.ts.map +1 -0
- package/dist/components/retrieval-trace/retrieval-trace.js +7 -0
- package/dist/components/retrieval-trace/retrieval-trace.js.map +1 -0
- package/dist/components/retrieval-trace/retrieval-trace.styles.d.ts +2 -0
- package/dist/components/retrieval-trace/retrieval-trace.styles.d.ts.map +1 -0
- package/dist/components/retrieval-trace/retrieval-trace.styles.js +116 -0
- package/dist/components/retrieval-trace/retrieval-trace.styles.js.map +1 -0
- package/dist/components/thread-list/thread-list.class.d.ts +19 -1
- package/dist/components/thread-list/thread-list.class.d.ts.map +1 -1
- package/dist/components/thread-list/thread-list.class.js +9 -2
- package/dist/components/thread-list/thread-list.class.js.map +1 -1
- package/dist/components/tool-timeline/tool-timeline.class.d.ts +140 -0
- package/dist/components/tool-timeline/tool-timeline.class.d.ts.map +1 -0
- package/dist/components/tool-timeline/tool-timeline.class.js +293 -0
- package/dist/components/tool-timeline/tool-timeline.class.js.map +1 -0
- package/dist/components/tool-timeline/tool-timeline.d.ts +2 -0
- package/dist/components/tool-timeline/tool-timeline.d.ts.map +1 -0
- package/dist/components/tool-timeline/tool-timeline.js +5 -0
- package/dist/components/tool-timeline/tool-timeline.js.map +1 -0
- package/dist/components/tool-timeline/tool-timeline.styles.d.ts +2 -0
- package/dist/components/tool-timeline/tool-timeline.styles.d.ts.map +1 -0
- package/dist/components/tool-timeline/tool-timeline.styles.js +148 -0
- package/dist/components/tool-timeline/tool-timeline.styles.js.map +1 -0
- package/dist/internal/localization.d.ts +1 -1
- package/dist/internal/localization.d.ts.map +1 -1
- package/dist/internal/localization.js +224 -0
- package/dist/internal/localization.js.map +1 -1
- package/dist/internal/positioner.d.ts +28 -1
- package/dist/internal/positioner.d.ts.map +1 -1
- package/dist/internal/positioner.js +12 -1
- package/dist/internal/positioner.js.map +1 -1
- package/dist/internal/root-registration-allowlist.d.ts +2 -2
- package/dist/internal/root-registration-allowlist.d.ts.map +1 -1
- package/dist/internal/root-registration-allowlist.js +24 -0
- package/dist/internal/root-registration-allowlist.js.map +1 -1
- package/dist/internal/tokens.styles.d.ts.map +1 -1
- package/dist/internal/tokens.styles.js +2 -0
- package/dist/internal/tokens.styles.js.map +1 -1
- package/dist/lyra.d.ts +48 -1
- package/dist/lyra.d.ts.map +1 -1
- package/dist/lyra.js +47 -0
- package/dist/lyra.js.map +1 -1
- package/llms-full.txt +462 -9
- package/llms.txt +7 -0
- package/package.json +50 -1
- package/vscode-css-data.json +21 -0
- package/vscode-html-data.json +1103 -47
- package/web-types.json +1131 -47
|
@@ -29,18 +29,57 @@ export declare class LyraPopover extends LyraElement<LyraPopoverEventMap> {
|
|
|
29
29
|
/** Semantic role used by the popup. Dropdown subclasses set this to `menu`. */
|
|
30
30
|
popupRole: 'dialog' | 'menu';
|
|
31
31
|
private trigger?;
|
|
32
|
+
/** The virtual anchor set by `showAt()`, taking priority over `trigger` for positioning while
|
|
33
|
+
* set. Cleared whenever the popover closes, so a later `open = true` with no fresh `showAt()`
|
|
34
|
+
* call reverts to plain trigger-based behavior. */
|
|
35
|
+
private virtualAnchor?;
|
|
36
|
+
/** `options.returnFocusTo` from the `showAt()` call that opened the popover, if any -- see
|
|
37
|
+
* `showAt()`'s doc comment and `onVirtualAnchorKeyDown`. */
|
|
38
|
+
private returnFocusTo?;
|
|
32
39
|
private cleanup?;
|
|
33
40
|
private readonly popupId;
|
|
34
41
|
private firstUpdate;
|
|
35
42
|
protected updated(changed: PropertyValues): void;
|
|
36
43
|
connectedCallback(): void;
|
|
37
44
|
disconnectedCallback(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Opens the popover anchored to an arbitrary rectangle instead of the slotted `trigger` -- for
|
|
47
|
+
* anchoring to a graph node, a canvas pixel, a chart datum, or any other non-DOM location.
|
|
48
|
+
* `width`/`height` default to `0` (a point). Positions exactly as `place()` would against a real
|
|
49
|
+
* element (flip/shift/RTL all apply unchanged).
|
|
50
|
+
*
|
|
51
|
+
* A virtual anchor has no DOM node, so `autoUpdate()` can't track it moving on its own -- call
|
|
52
|
+
* `showAt()` again with fresh coordinates to re-anchor an already-open popover (e.g. on a graph
|
|
53
|
+
* pan/zoom tick); the popover stays open across such a call, it does not toggle. Pass
|
|
54
|
+
* `rect.contextElement` (a real, still-connected element near the virtual point) when available
|
|
55
|
+
* so `autoUpdate()` has something to observe for ancestor-scroll/resize tracking; omitting it
|
|
56
|
+
* still works, it just means only explicit re-`showAt()` calls keep the popover anchored.
|
|
57
|
+
*
|
|
58
|
+
* A virtual anchor also has no `.focus()`. Escape and light-dismiss return focus to
|
|
59
|
+
* `options.returnFocusTo` when supplied, or skip focus-return entirely otherwise -- refocusing
|
|
60
|
+
* the right place after a virtual anchor closes is the host's responsibility, since Lyra can't
|
|
61
|
+
* assume how e.g. a graph node's own keyboard model wants focus back.
|
|
62
|
+
*/
|
|
63
|
+
showAt(rect: {
|
|
64
|
+
x: number;
|
|
65
|
+
y: number;
|
|
66
|
+
width?: number;
|
|
67
|
+
height?: number;
|
|
68
|
+
contextElement?: Element;
|
|
69
|
+
}, options?: {
|
|
70
|
+
returnFocusTo?: HTMLElement;
|
|
71
|
+
}): void;
|
|
38
72
|
private position;
|
|
39
73
|
private syncTriggerA11y;
|
|
40
74
|
private onTriggerSlotChange;
|
|
41
75
|
private onTriggerClick;
|
|
42
76
|
private onTriggerKeyDown;
|
|
43
77
|
private onPopupKeyDown;
|
|
78
|
+
/** Escape handling for a popover opened via `showAt()` -- bound at the document level (not
|
|
79
|
+
* scoped to the trigger/popup elements) while such a popover is open, since a virtual anchor
|
|
80
|
+
* has no slotted trigger or (typically) focused popup content for `onTriggerKeyDown`/
|
|
81
|
+
* `onPopupKeyDown` above to catch Escape through. */
|
|
82
|
+
private onVirtualAnchorKeyDown;
|
|
44
83
|
private onDocumentPointer;
|
|
45
84
|
render(): TemplateResult;
|
|
46
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.class.d.ts","sourceRoot":"","sources":["../../../src/components/overlay/popover.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAErE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAU7D,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAClC,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAY,SAAQ,WAAW,CAAC,mBAAmB,CAAC;IAC/D,MAAM,CAAC,MAAM,iCAAgC;IACD,IAAI,UAAS;IAC5B,SAAS,EAAE,SAAS,CAAkB;IACnE;uGACmG;IACvE,QAAQ,SAAoB;IACjB,eAAe,SAAM;IAC5D,+EAA+E;IACxC,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAY;IACtE,OAAO,CAAC,OAAO,CAAC,CAAc;IACvC,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,WAAW,CAAQ;IAE3B,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"popover.class.d.ts","sourceRoot":"","sources":["../../../src/components/overlay/popover.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAErE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAU7D,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAClC,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAY,SAAQ,WAAW,CAAC,mBAAmB,CAAC;IAC/D,MAAM,CAAC,MAAM,iCAAgC;IACD,IAAI,UAAS;IAC5B,SAAS,EAAE,SAAS,CAAkB;IACnE;uGACmG;IACvE,QAAQ,SAAoB;IACjB,eAAe,SAAM;IAC5D,+EAA+E;IACxC,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAY;IACtE,OAAO,CAAC,OAAO,CAAC,CAAc;IACvC;;wDAEoD;IACpD,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC;iEAC6D;IAC7D,OAAO,CAAC,aAAa,CAAC,CAAc;IACpC,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,WAAW,CAAQ;IAE3B,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CA4B/C;IACD,iBAAiB,IAAI,IAAI,CAYxB;IACD,oBAAoB,IAAI,IAAI,CAM3B;IACD;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CACJ,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,EACzF,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,WAAW,CAAA;KAAE,GACxC,IAAI,CAKN;IACD,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,mBAAmB,CAIzB;IACF,OAAO,CAAC,cAAc,CAA2C;IACjE,OAAO,CAAC,gBAAgB,CAEtB;IACF,OAAO,CAAC,cAAc,CAEpB;IACF;;;0DAGsD;IACtD,OAAO,CAAC,sBAAsB,CAM5B;IACF,OAAO,CAAC,iBAAiB,CAEvB;IACF,MAAM,IAAI,cAAc,CAiBvB;CACF;AACD,OAAO,CAAC,MAAM,CAAC;IAAE,UAAU,qBAAqB;QAAG,YAAY,EAAE,WAAW,CAAC;KAAE;CAAE"}
|
|
@@ -8,7 +8,7 @@ import { html } from 'lit';
|
|
|
8
8
|
import { property, state } from 'lit/decorators.js';
|
|
9
9
|
import { LyraElement } from '../../internal/lyra-element.js';
|
|
10
10
|
import { nextId } from '../../internal/a11y.js';
|
|
11
|
-
import { place } from '../../internal/positioner.js';
|
|
11
|
+
import { place, virtualAnchorFromRect } from '../../internal/positioner.js';
|
|
12
12
|
import { rtlAwarePlacement } from '../../internal/rtl.js';
|
|
13
13
|
import { finiteNumber } from '../../internal/numbers.js';
|
|
14
14
|
import { styles } from './overlay.styles.js';
|
|
@@ -61,6 +61,18 @@ export class LyraPopover extends LyraElement {
|
|
|
61
61
|
this.trigger?.focus();
|
|
62
62
|
}
|
|
63
63
|
};
|
|
64
|
+
/** Escape handling for a popover opened via `showAt()` -- bound at the document level (not
|
|
65
|
+
* scoped to the trigger/popup elements) while such a popover is open, since a virtual anchor
|
|
66
|
+
* has no slotted trigger or (typically) focused popup content for `onTriggerKeyDown`/
|
|
67
|
+
* `onPopupKeyDown` above to catch Escape through. */
|
|
68
|
+
this.onVirtualAnchorKeyDown = (event) => {
|
|
69
|
+
if (event.key !== 'Escape')
|
|
70
|
+
return;
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
const returnFocusTarget = this.returnFocusTo;
|
|
73
|
+
this.open = false;
|
|
74
|
+
returnFocusTarget?.focus();
|
|
75
|
+
};
|
|
64
76
|
this.onDocumentPointer = (event) => {
|
|
65
77
|
if (!event.composedPath().includes(this))
|
|
66
78
|
this.open = false;
|
|
@@ -80,11 +92,19 @@ export class LyraPopover extends LyraElement {
|
|
|
80
92
|
if (changed.has('open')) {
|
|
81
93
|
if (this.open) {
|
|
82
94
|
document.addEventListener('pointerdown', this.onDocumentPointer);
|
|
95
|
+
// A virtual anchor has no slotted trigger and (typically) no focused popup content for
|
|
96
|
+
// the existing trigger-/popup-scoped keydown handlers below to catch Escape through --
|
|
97
|
+
// bind a document-level Escape listener for that path specifically.
|
|
98
|
+
if (this.virtualAnchor)
|
|
99
|
+
document.addEventListener('keydown', this.onVirtualAnchorKeyDown);
|
|
83
100
|
if (!this.firstUpdate)
|
|
84
101
|
this.emit('lr-show');
|
|
85
102
|
}
|
|
86
103
|
else {
|
|
87
104
|
document.removeEventListener('pointerdown', this.onDocumentPointer);
|
|
105
|
+
document.removeEventListener('keydown', this.onVirtualAnchorKeyDown);
|
|
106
|
+
this.virtualAnchor = undefined;
|
|
107
|
+
this.returnFocusTo = undefined;
|
|
88
108
|
if (!this.firstUpdate)
|
|
89
109
|
this.emit('lr-hide');
|
|
90
110
|
}
|
|
@@ -102,6 +122,8 @@ export class LyraPopover extends LyraElement {
|
|
|
102
122
|
// the Floating UI positioner subscription it dropped.
|
|
103
123
|
if (this.hasUpdated && this.open) {
|
|
104
124
|
document.addEventListener('pointerdown', this.onDocumentPointer);
|
|
125
|
+
if (this.virtualAnchor)
|
|
126
|
+
document.addEventListener('keydown', this.onVirtualAnchorKeyDown);
|
|
105
127
|
this.position();
|
|
106
128
|
}
|
|
107
129
|
}
|
|
@@ -109,13 +131,41 @@ export class LyraPopover extends LyraElement {
|
|
|
109
131
|
this.cleanup?.();
|
|
110
132
|
this.cleanup = undefined;
|
|
111
133
|
document.removeEventListener('pointerdown', this.onDocumentPointer);
|
|
134
|
+
document.removeEventListener('keydown', this.onVirtualAnchorKeyDown);
|
|
112
135
|
super.disconnectedCallback();
|
|
113
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Opens the popover anchored to an arbitrary rectangle instead of the slotted `trigger` -- for
|
|
139
|
+
* anchoring to a graph node, a canvas pixel, a chart datum, or any other non-DOM location.
|
|
140
|
+
* `width`/`height` default to `0` (a point). Positions exactly as `place()` would against a real
|
|
141
|
+
* element (flip/shift/RTL all apply unchanged).
|
|
142
|
+
*
|
|
143
|
+
* A virtual anchor has no DOM node, so `autoUpdate()` can't track it moving on its own -- call
|
|
144
|
+
* `showAt()` again with fresh coordinates to re-anchor an already-open popover (e.g. on a graph
|
|
145
|
+
* pan/zoom tick); the popover stays open across such a call, it does not toggle. Pass
|
|
146
|
+
* `rect.contextElement` (a real, still-connected element near the virtual point) when available
|
|
147
|
+
* so `autoUpdate()` has something to observe for ancestor-scroll/resize tracking; omitting it
|
|
148
|
+
* still works, it just means only explicit re-`showAt()` calls keep the popover anchored.
|
|
149
|
+
*
|
|
150
|
+
* A virtual anchor also has no `.focus()`. Escape and light-dismiss return focus to
|
|
151
|
+
* `options.returnFocusTo` when supplied, or skip focus-return entirely otherwise -- refocusing
|
|
152
|
+
* the right place after a virtual anchor closes is the host's responsibility, since Lyra can't
|
|
153
|
+
* assume how e.g. a graph node's own keyboard model wants focus back.
|
|
154
|
+
*/
|
|
155
|
+
showAt(rect, options) {
|
|
156
|
+
this.virtualAnchor = virtualAnchorFromRect(rect);
|
|
157
|
+
this.returnFocusTo = options?.returnFocusTo;
|
|
158
|
+
if (this.open)
|
|
159
|
+
this.position();
|
|
160
|
+
else
|
|
161
|
+
this.open = true;
|
|
162
|
+
}
|
|
114
163
|
position() {
|
|
115
164
|
const popup = this.renderRoot.querySelector('[part="popup"]');
|
|
116
|
-
|
|
165
|
+
const anchor = this.virtualAnchor ?? this.trigger;
|
|
166
|
+
if (!this.open || !anchor || !popup)
|
|
117
167
|
return;
|
|
118
|
-
this.cleanup = place(
|
|
168
|
+
this.cleanup = place(anchor, popup, {
|
|
119
169
|
placement: rtlAwarePlacement(this.placement, this),
|
|
120
170
|
offset: finiteNumber(this.distance, DEFAULT_DISTANCE),
|
|
121
171
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.class.js","sourceRoot":"","sources":["../../../src/components/overlay/popover.class.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAA4C,MAAM,KAAK,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"popover.class.js","sourceRoot":"","sources":["../../../src/components/overlay/popover.class.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,12 +27,49 @@ export declare class LyraTooltip extends LyraElement {
|
|
|
27
27
|
content: string;
|
|
28
28
|
accessibleLabel: string;
|
|
29
29
|
private trigger?;
|
|
30
|
+
/** The virtual anchor set by `showAt()`, taking priority over `trigger` for positioning while
|
|
31
|
+
* set. Cleared whenever the tooltip closes, so a later `open = true` with no fresh `showAt()`
|
|
32
|
+
* call reverts to plain trigger-based behavior. */
|
|
33
|
+
private virtualAnchor?;
|
|
34
|
+
/** `options.returnFocusTo` from the `showAt()` call that opened the tooltip, if any -- see
|
|
35
|
+
* `showAt()`'s doc comment and `onVirtualAnchorKeyDown`. */
|
|
36
|
+
private returnFocusTo?;
|
|
30
37
|
private cleanup?;
|
|
31
38
|
private timer?;
|
|
32
39
|
private readonly tooltipId;
|
|
33
40
|
protected updated(changed: PropertyValues): void;
|
|
34
41
|
connectedCallback(): void;
|
|
35
42
|
disconnectedCallback(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Opens the tooltip anchored to an arbitrary rectangle instead of the slotted `trigger` -- for
|
|
45
|
+
* anchoring to a graph node, a canvas pixel, a chart datum, or any other non-DOM location.
|
|
46
|
+
* `width`/`height` default to `0` (a point). Positions exactly as `place()` would against a real
|
|
47
|
+
* element (flip/shift/RTL all apply unchanged). Opens immediately, bypassing `delay`/`manual`
|
|
48
|
+
* (both are hover-debounce concerns for a slotted trigger, not relevant to a deliberate
|
|
49
|
+
* programmatic `showAt()` call).
|
|
50
|
+
*
|
|
51
|
+
* A virtual anchor has no DOM node, so `autoUpdate()` can't track it moving on its own -- call
|
|
52
|
+
* `showAt()` again with fresh coordinates to re-anchor an already-open tooltip (e.g. on a graph
|
|
53
|
+
* pan/zoom tick); the tooltip stays open across such a call, it does not toggle. Close it the
|
|
54
|
+
* same way any tooltip closes: set `open = false` (there is no separate `hide()`). Pass
|
|
55
|
+
* `rect.contextElement` (a real, still-connected element near the virtual point) when available
|
|
56
|
+
* so `autoUpdate()` has something to observe for ancestor-scroll/resize tracking; omitting it
|
|
57
|
+
* still works, it just means only explicit re-`showAt()` calls keep the tooltip anchored.
|
|
58
|
+
*
|
|
59
|
+
* A virtual anchor also has no `.focus()`. Escape returns focus to `options.returnFocusTo` when
|
|
60
|
+
* supplied, or skips focus-return entirely otherwise -- refocusing the right place after a
|
|
61
|
+
* virtual anchor closes is the host's responsibility, since Lyra can't assume how e.g. a graph
|
|
62
|
+
* node's own keyboard model wants focus back.
|
|
63
|
+
*/
|
|
64
|
+
showAt(rect: {
|
|
65
|
+
x: number;
|
|
66
|
+
y: number;
|
|
67
|
+
width?: number;
|
|
68
|
+
height?: number;
|
|
69
|
+
contextElement?: Element;
|
|
70
|
+
}, options?: {
|
|
71
|
+
returnFocusTo?: HTMLElement;
|
|
72
|
+
}): void;
|
|
36
73
|
private position;
|
|
37
74
|
private syncTriggerA11y;
|
|
38
75
|
private setOpen;
|
|
@@ -42,6 +79,12 @@ export declare class LyraTooltip extends LyraElement {
|
|
|
42
79
|
private onEnter;
|
|
43
80
|
private onLeave;
|
|
44
81
|
private onTriggerKeyDown;
|
|
82
|
+
/** Escape handling for a tooltip opened via `showAt()` -- bound at the document level while
|
|
83
|
+
* such a tooltip is open, since a virtual anchor has no slotted trigger for `onTriggerKeyDown`
|
|
84
|
+
* above to catch Escape through (that listener is only ever bound to a real trigger element via
|
|
85
|
+
* `bindTrigger()`). Only ever attached while `virtualAnchor` is set, so this never runs for a
|
|
86
|
+
* normal trigger-driven tooltip. */
|
|
87
|
+
private onVirtualAnchorKeyDown;
|
|
45
88
|
render(): TemplateResult;
|
|
46
89
|
}
|
|
47
90
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.class.d.ts","sourceRoot":"","sources":["../../../src/components/overlay/tooltip.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAa7D;;;;;;;;;;;GAWG;AACH,qBAAa,WAAY,SAAQ,WAAW;IAC1C,MAAM,CAAC,MAAM,iCAAuC;IACR,IAAI,UAAS;IAC5B,MAAM,UAAS;IAC5C;4BACwB;IACI,KAAK,SAAiB;IACrB,SAAS,EAAE,SAAS,CAAS;IAC1D;2FACuF;IAC3D,QAAQ,SAAoB;IAC5C,OAAO,SAAM;IACc,eAAe,SAAM;IACnD,OAAO,CAAC,OAAO,CAAC,CAAc;IACvC,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAgC;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAE/C,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"tooltip.class.d.ts","sourceRoot":"","sources":["../../../src/components/overlay/tooltip.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAa7D;;;;;;;;;;;GAWG;AACH,qBAAa,WAAY,SAAQ,WAAW;IAC1C,MAAM,CAAC,MAAM,iCAAuC;IACR,IAAI,UAAS;IAC5B,MAAM,UAAS;IAC5C;4BACwB;IACI,KAAK,SAAiB;IACrB,SAAS,EAAE,SAAS,CAAS;IAC1D;2FACuF;IAC3D,QAAQ,SAAoB;IAC5C,OAAO,SAAM;IACc,eAAe,SAAM;IACnD,OAAO,CAAC,OAAO,CAAC,CAAc;IACvC;;wDAEoD;IACpD,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC;iEAC6D;IAC7D,OAAO,CAAC,aAAa,CAAC,CAAc;IACpC,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAgC;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAE/C,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAoB/C;IACD,iBAAiB,IAAI,IAAI,CAaxB;IACD,oBAAoB,IAAI,IAAI,CAM3B;IACD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CACJ,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,EACzF,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,WAAW,CAAA;KAAE,GACxC,IAAI,CAKN;IACD,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,mBAAmB,CAYzB;IACF,OAAO,CAAC,OAAO,CAAyD;IACxE,OAAO,CAAC,OAAO,CAA0D;IACzE,OAAO,CAAC,gBAAgB,CAStB;IACF;;;;yCAIqC;IACrC,OAAO,CAAC,sBAAsB,CAM5B;IACF,MAAM,IAAI,cAAc,CAQvB;CACF;AACD,OAAO,CAAC,MAAM,CAAC;IAAE,UAAU,qBAAqB;QAAG,YAAY,EAAE,WAAW,CAAC;KAAE;CAAE"}
|
|
@@ -8,7 +8,7 @@ import { html, nothing } from 'lit';
|
|
|
8
8
|
import { property, state } from 'lit/decorators.js';
|
|
9
9
|
import { LyraElement } from '../../internal/lyra-element.js';
|
|
10
10
|
import { nextId } from '../../internal/a11y.js';
|
|
11
|
-
import { place } from '../../internal/positioner.js';
|
|
11
|
+
import { place, virtualAnchorFromRect } from '../../internal/positioner.js';
|
|
12
12
|
import { rtlAwarePlacement } from '../../internal/rtl.js';
|
|
13
13
|
import { finiteDuration, finiteNumber } from '../../internal/numbers.js';
|
|
14
14
|
import { tooltipStyles } from './overlay.styles.js';
|
|
@@ -75,6 +75,19 @@ export class LyraTooltip extends LyraElement {
|
|
|
75
75
|
clearTimeout(this.timer);
|
|
76
76
|
this.open = false;
|
|
77
77
|
};
|
|
78
|
+
/** Escape handling for a tooltip opened via `showAt()` -- bound at the document level while
|
|
79
|
+
* such a tooltip is open, since a virtual anchor has no slotted trigger for `onTriggerKeyDown`
|
|
80
|
+
* above to catch Escape through (that listener is only ever bound to a real trigger element via
|
|
81
|
+
* `bindTrigger()`). Only ever attached while `virtualAnchor` is set, so this never runs for a
|
|
82
|
+
* normal trigger-driven tooltip. */
|
|
83
|
+
this.onVirtualAnchorKeyDown = (event) => {
|
|
84
|
+
if (event.key !== 'Escape')
|
|
85
|
+
return;
|
|
86
|
+
event.preventDefault();
|
|
87
|
+
const returnFocusTarget = this.returnFocusTo;
|
|
88
|
+
this.open = false;
|
|
89
|
+
returnFocusTarget?.focus();
|
|
90
|
+
};
|
|
78
91
|
}
|
|
79
92
|
static { this.styles = [LyraElement.styles, tooltipStyles]; }
|
|
80
93
|
updated(changed) {
|
|
@@ -83,6 +96,21 @@ export class LyraTooltip extends LyraElement {
|
|
|
83
96
|
this.cleanup = undefined;
|
|
84
97
|
if (this.open)
|
|
85
98
|
this.position();
|
|
99
|
+
if (changed.has('open')) {
|
|
100
|
+
// A virtual anchor has no slotted trigger to bind hover/focus/keydown listeners to (see
|
|
101
|
+
// bindTrigger()) -- bind a document-level Escape listener for that path specifically
|
|
102
|
+
// while such a tooltip is open, and clear the virtual-anchor state on close so a later
|
|
103
|
+
// `open = true` with no fresh `showAt()` call reverts to plain trigger-based behavior.
|
|
104
|
+
if (this.open) {
|
|
105
|
+
if (this.virtualAnchor)
|
|
106
|
+
document.addEventListener('keydown', this.onVirtualAnchorKeyDown);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
document.removeEventListener('keydown', this.onVirtualAnchorKeyDown);
|
|
110
|
+
this.virtualAnchor = undefined;
|
|
111
|
+
this.returnFocusTo = undefined;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
86
114
|
this.syncTriggerA11y();
|
|
87
115
|
}
|
|
88
116
|
}
|
|
@@ -95,19 +123,53 @@ export class LyraTooltip extends LyraElement {
|
|
|
95
123
|
// subscription it dropped. The trigger's own listeners are untouched by
|
|
96
124
|
// (dis)connect since they live on a light-DOM element the reconnect
|
|
97
125
|
// doesn't move independently of this host.
|
|
98
|
-
if (this.hasUpdated && this.open)
|
|
126
|
+
if (this.hasUpdated && this.open) {
|
|
99
127
|
this.position();
|
|
128
|
+
if (this.virtualAnchor)
|
|
129
|
+
document.addEventListener('keydown', this.onVirtualAnchorKeyDown);
|
|
130
|
+
}
|
|
100
131
|
}
|
|
101
132
|
disconnectedCallback() {
|
|
102
133
|
clearTimeout(this.timer);
|
|
103
134
|
this.cleanup?.();
|
|
104
135
|
this.cleanup = undefined;
|
|
136
|
+
document.removeEventListener('keydown', this.onVirtualAnchorKeyDown);
|
|
105
137
|
super.disconnectedCallback();
|
|
106
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Opens the tooltip anchored to an arbitrary rectangle instead of the slotted `trigger` -- for
|
|
141
|
+
* anchoring to a graph node, a canvas pixel, a chart datum, or any other non-DOM location.
|
|
142
|
+
* `width`/`height` default to `0` (a point). Positions exactly as `place()` would against a real
|
|
143
|
+
* element (flip/shift/RTL all apply unchanged). Opens immediately, bypassing `delay`/`manual`
|
|
144
|
+
* (both are hover-debounce concerns for a slotted trigger, not relevant to a deliberate
|
|
145
|
+
* programmatic `showAt()` call).
|
|
146
|
+
*
|
|
147
|
+
* A virtual anchor has no DOM node, so `autoUpdate()` can't track it moving on its own -- call
|
|
148
|
+
* `showAt()` again with fresh coordinates to re-anchor an already-open tooltip (e.g. on a graph
|
|
149
|
+
* pan/zoom tick); the tooltip stays open across such a call, it does not toggle. Close it the
|
|
150
|
+
* same way any tooltip closes: set `open = false` (there is no separate `hide()`). Pass
|
|
151
|
+
* `rect.contextElement` (a real, still-connected element near the virtual point) when available
|
|
152
|
+
* so `autoUpdate()` has something to observe for ancestor-scroll/resize tracking; omitting it
|
|
153
|
+
* still works, it just means only explicit re-`showAt()` calls keep the tooltip anchored.
|
|
154
|
+
*
|
|
155
|
+
* A virtual anchor also has no `.focus()`. Escape returns focus to `options.returnFocusTo` when
|
|
156
|
+
* supplied, or skips focus-return entirely otherwise -- refocusing the right place after a
|
|
157
|
+
* virtual anchor closes is the host's responsibility, since Lyra can't assume how e.g. a graph
|
|
158
|
+
* node's own keyboard model wants focus back.
|
|
159
|
+
*/
|
|
160
|
+
showAt(rect, options) {
|
|
161
|
+
this.virtualAnchor = virtualAnchorFromRect(rect);
|
|
162
|
+
this.returnFocusTo = options?.returnFocusTo;
|
|
163
|
+
if (this.open)
|
|
164
|
+
this.position();
|
|
165
|
+
else
|
|
166
|
+
this.open = true;
|
|
167
|
+
}
|
|
107
168
|
position() {
|
|
108
169
|
const popup = this.renderRoot.querySelector('[part="popup"]');
|
|
109
|
-
|
|
110
|
-
|
|
170
|
+
const anchor = this.virtualAnchor ?? this.trigger;
|
|
171
|
+
if (this.open && anchor && popup) {
|
|
172
|
+
this.cleanup = place(anchor, popup, {
|
|
111
173
|
placement: rtlAwarePlacement(this.placement, this),
|
|
112
174
|
offset: finiteNumber(this.distance, DEFAULT_DISTANCE),
|
|
113
175
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.class.js","sourceRoot":"","sources":["../../../src/components/overlay/tooltip.class.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAA4C,MAAM,KAAK,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"tooltip.class.js","sourceRoot":"","sources":["../../../src/components/overlay/tooltip.class.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAA4C,MAAM,KAAK,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAsB,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,0CAA0C;AAC1C,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B;iGACiG;AACjG,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,WAAY,SAAQ,WAAW;IAA5C;;QAE8C,SAAI,GAAG,KAAK,CAAC;QAC5B,WAAM,GAAG,KAAK,CAAC;QAC5C;gCACwB;QACI,UAAK,GAAG,aAAa,CAAC;QACrB,cAAS,GAAc,KAAK,CAAC;QAC1D;+FACuF;QAC3D,aAAQ,GAAG,gBAAgB,CAAC;QAC5C,YAAO,GAAG,EAAE,CAAC;QACc,oBAAe,GAAG,EAAE,CAAC;QAW3C,cAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QA8GvC,wBAAmB,GAAG,CAAC,KAAY,EAAQ,EAAE;YACnD,MAAM,IAAI,GAAI,KAAK,CAAC,MAA0B,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAA4B,CAAC;YACjH,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO;gBAAE,OAAO;YAClC,2EAA2E;YAC3E,yEAAyE;YACzE,2EAA2E;YAC3E,gEAAgE;YAChE,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC;QACM,YAAO,GAAG,GAAS,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,YAAO,GAAG,GAAS,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,qBAAgB,GAAG,CAAC,KAAoB,EAAQ,EAAE;YACxD,wEAAwE;YACxE,2EAA2E;YAC3E,0EAA0E;YAC1E,kEAAkE;YAClE,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;gBAAE,OAAO;YAChE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QACpB,CAAC,CAAC;QACF;;;;6CAIqC;QAC7B,2BAAsB,GAAG,CAAC,KAAoB,EAAQ,EAAE;YAC9D,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;gBAAE,OAAO;YACnC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC;YAC7C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,iBAAiB,EAAE,KAAK,EAAE,CAAC;QAC7B,CAAC,CAAC;IAUJ,CAAC;aAlLQ,WAAM,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,AAAtC,CAAuC;IAwB1C,OAAO,CAAC,OAAuB;QACvC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/E,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxB,wFAAwF;gBACxF,qFAAqF;gBACrF,uFAAuF;gBACvF,uFAAuF;gBACvF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,IAAI,IAAI,CAAC,aAAa;wBAAE,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAC5F,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBACrE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;oBAC/B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;gBACjC,CAAC;YACH,CAAC;YACD,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IACD,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,uEAAuE;QACvE,8DAA8D;QAC9D,wEAAwE;QACxE,oEAAoE;QACpE,wEAAwE;QACxE,oEAAoE;QACpE,2CAA2C;QAC3C,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,aAAa;gBAAE,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IACD,oBAAoB;QAClB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrE,KAAK,CAAC,oBAAoB,EAAE,CAAC;IAC/B,CAAC;IACD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CACJ,IAAyF,EACzF,OAAyC;QAEzC,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC;QAC5C,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;;YAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACxB,CAAC;IACO,QAAQ;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAuB,CAAC;QACpF,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC;QAClD,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE;gBAClC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;gBAClD,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;aACtD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACO,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACnE,CAAC;IACO,OAAO,CAAC,IAAa;QAC3B,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACxD,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC;YAAE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;;YAC9E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACxB,CAAC;IACO,WAAW,CAAC,OAAoB;QACtC,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7D,CAAC;IACO,aAAa,CAAC,OAAoB;QACxC,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9D,OAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;IAC9C,CAAC;IAsCD,MAAM;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,eAAe,IAAI,OAAO,CAAC;QACjF,OAAO,IAAI,CAAA;8DAC+C,IAAI,CAAC,mBAAmB;gBACtE,IAAI,CAAC,SAAS,2CAA2C,KAAK,iBAAiB,CAAC,IAAI,CAAC,IAAI;gBACzF,IAAI,CAAC,OAAO;;KAEvB,CAAC;IACJ,CAAC;CACF;AAjL6C;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yCAAc;AAC5B;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;2CAAgB;AAGhB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAuB;AACrB;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CAA8B;AAG9B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAA6B;AAC5C;IAAX,QAAQ,EAAE;4CAAc;AACc;IAAtC,QAAQ,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;oDAAsB;AAC3C;IAAhB,KAAK,EAAE;4CAA+B"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { type TemplateResult } from 'lit';
|
|
2
|
+
import { LyraElement } from '../../internal/lyra-element.js';
|
|
3
|
+
import '../badge/badge.class.js';
|
|
4
|
+
import '../callout/callout.class.js';
|
|
5
|
+
import '../details/details.class.js';
|
|
6
|
+
import '../empty/empty.class.js';
|
|
7
|
+
/** Outcome of one guardrail/permission/privacy/tool-policy decision. */
|
|
8
|
+
export type PolicyDecisionState = 'allow' | 'deny' | 'needs-review';
|
|
9
|
+
/** The domain a decision came from — the four kinds this component is built to summarize. */
|
|
10
|
+
export type PolicyDecisionCategory = 'guardrail' | 'permission' | 'privacy' | 'tool';
|
|
11
|
+
/**
|
|
12
|
+
* One resolved policy decision. Read-only, display-only data -- this component never mutates a
|
|
13
|
+
* decision or offers a "resolve"/"acknowledge" action; see `<lr-tool-approval-dialog>`/
|
|
14
|
+
* `<lr-confirm-bar>` for an actual approve/deny gate.
|
|
15
|
+
*/
|
|
16
|
+
export interface PolicyDecision {
|
|
17
|
+
id: string;
|
|
18
|
+
category: PolicyDecisionCategory;
|
|
19
|
+
/** The rule/policy's display name, e.g. "Read customer records" or a tool name for `category:
|
|
20
|
+
* 'tool'`. Rendered as-is, not localized (host-supplied data). */
|
|
21
|
+
label: string;
|
|
22
|
+
state: PolicyDecisionState;
|
|
23
|
+
/** Always-visible plain-text reason for the decision -- never conveyed by `state`'s color alone. */
|
|
24
|
+
explanation: string;
|
|
25
|
+
/** Optional richer detail (matched rule text, policy id, cited evidence), revealed through
|
|
26
|
+
* progressive disclosure instead of always rendering alongside `explanation`. */
|
|
27
|
+
detail?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* `<lr-policy-summary>` — a read-only list of guardrail, permission, privacy, and tool-policy
|
|
31
|
+
* decisions, each carrying an `allow` / `deny` / `needs-review` state and an always-visible,
|
|
32
|
+
* accessible explanation of why that decision was made -- never conveyed by color alone.
|
|
33
|
+
*
|
|
34
|
+
* Composes `<lr-badge>` for the compact per-decision state indicator and `<lr-callout inline>`
|
|
35
|
+
* for the explanation text: the callout's own `role="alert"`/`role="status"` semantics already
|
|
36
|
+
* carry the right urgency per state (`deny` renders as an alert, `allow`/`needs-review` as
|
|
37
|
+
* status), so this component only needs to pick the matching `variant` rather than re-implement
|
|
38
|
+
* that wiring. `<lr-details>` renders a decision's optional richer `detail` (matched rule text,
|
|
39
|
+
* policy id, cited evidence) behind progressive disclosure, collapsed by default, instead of
|
|
40
|
+
* always showing it alongside the shorter `explanation`.
|
|
41
|
+
*
|
|
42
|
+
* `decisions` is controlled and never mutated by this component -- pass a new array (e.g. as a
|
|
43
|
+
* guardrail pipeline resolves) to update it. This is a summary surface, not an approval gate:
|
|
44
|
+
* there is no per-decision action here, and a decision's `state` is fixed data, not something a
|
|
45
|
+
* viewer can change from this component.
|
|
46
|
+
*
|
|
47
|
+
* @customElement lr-policy-summary
|
|
48
|
+
* @csspart base - The root wrapper, only rendered while `decisions` is non-empty.
|
|
49
|
+
* @csspart summary - The always-visible allow/deny/needs-review count row.
|
|
50
|
+
* @csspart count - One state's localized count text; carries `data-state`.
|
|
51
|
+
* @csspart list - The `role="list"` wrapper around every decision row.
|
|
52
|
+
* @csspart decision - One decision row (`role="listitem"`); carries `data-state` and `data-category`.
|
|
53
|
+
* @csspart decision-header - The row's category/label/state-badge line.
|
|
54
|
+
* @csspart category - The decision's localized category text.
|
|
55
|
+
* @csspart label - The decision's `label` text.
|
|
56
|
+
* @csspart state-badge - The resolved `<lr-badge>` state indicator.
|
|
57
|
+
* @csspart explanation - The `<lr-callout inline>` wrapping the always-visible `explanation` text.
|
|
58
|
+
* @csspart detail - The `<lr-details>` progressive-disclosure panel for `detail`, only rendered
|
|
59
|
+
* when a decision defines one.
|
|
60
|
+
* @csspart empty - The `<lr-empty>` shown when `decisions` is empty.
|
|
61
|
+
*/
|
|
62
|
+
export declare class LyraPolicySummary extends LyraElement {
|
|
63
|
+
static styles: import("lit").CSSResultGroup[];
|
|
64
|
+
/** The decisions to render, in the given order. Controlled and never mutated by this component
|
|
65
|
+
* -- pass a new array to update it. */
|
|
66
|
+
decisions: PolicyDecision[];
|
|
67
|
+
private countOf;
|
|
68
|
+
private renderDecision;
|
|
69
|
+
render(): TemplateResult;
|
|
70
|
+
}
|
|
71
|
+
declare global {
|
|
72
|
+
interface HTMLElementTagNameMap {
|
|
73
|
+
'lr-policy-summary': LyraPolicySummary;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=policy-summary.class.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-summary.class.d.ts","sourceRoot":"","sources":["../../../src/components/policy-summary/policy-summary.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,yBAAyB,CAAC;AACjC,OAAO,6BAA6B,CAAC;AACrC,OAAO,6BAA6B,CAAC;AACrC,OAAO,yBAAyB,CAAC;AAGjC,wEAAwE;AACxE,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC;AAEpE,6FAA6F;AAC7F,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAErF;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,sBAAsB,CAAC;IACjC;uEACmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,mBAAmB,CAAC;IAC3B,oGAAoG;IACpG,WAAW,EAAE,MAAM,CAAC;IACpB;sFACkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,MAAM,CAAC,MAAM,iCAAgC;IAE7C;4CACwC;IACR,SAAS,EAAE,cAAc,EAAE,CAAM;IAEjE,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,cAAc;IAmBtB,MAAM,IAAI,cAAc,CAmBvB;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,iBAAiB,CAAC;KACxC;CACF"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html, nothing } from 'lit';
|
|
8
|
+
import { property } from 'lit/decorators.js';
|
|
9
|
+
import { LyraElement } from '../../internal/lyra-element.js';
|
|
10
|
+
import '../badge/badge.class.js';
|
|
11
|
+
import '../callout/callout.class.js';
|
|
12
|
+
import '../details/details.class.js';
|
|
13
|
+
import '../empty/empty.class.js';
|
|
14
|
+
import { styles } from './policy-summary.styles.js';
|
|
15
|
+
/** `allow` -> success, `deny` -> danger, `needs-review` -> warning -- shared by the state badge
|
|
16
|
+
* and the explanation callout so both always agree on a decision's visual weight. */
|
|
17
|
+
const STATE_VARIANT = {
|
|
18
|
+
allow: 'success',
|
|
19
|
+
deny: 'danger',
|
|
20
|
+
'needs-review': 'warning',
|
|
21
|
+
};
|
|
22
|
+
const STATE_LABEL_KEY = {
|
|
23
|
+
allow: 'policySummaryStateAllow',
|
|
24
|
+
deny: 'policySummaryStateDeny',
|
|
25
|
+
'needs-review': 'policySummaryStateNeedsReview',
|
|
26
|
+
};
|
|
27
|
+
const STATE_COUNT_KEY = {
|
|
28
|
+
allow: 'policySummaryAllowCount',
|
|
29
|
+
deny: 'policySummaryDenyCount',
|
|
30
|
+
'needs-review': 'policySummaryNeedsReviewCount',
|
|
31
|
+
};
|
|
32
|
+
const CATEGORY_LABEL_KEY = {
|
|
33
|
+
guardrail: 'policySummaryCategoryGuardrail',
|
|
34
|
+
permission: 'policySummaryCategoryPermission',
|
|
35
|
+
privacy: 'policySummaryCategoryPrivacy',
|
|
36
|
+
tool: 'policySummaryCategoryTool',
|
|
37
|
+
};
|
|
38
|
+
const STATES = ['allow', 'deny', 'needs-review'];
|
|
39
|
+
/**
|
|
40
|
+
* `<lr-policy-summary>` — a read-only list of guardrail, permission, privacy, and tool-policy
|
|
41
|
+
* decisions, each carrying an `allow` / `deny` / `needs-review` state and an always-visible,
|
|
42
|
+
* accessible explanation of why that decision was made -- never conveyed by color alone.
|
|
43
|
+
*
|
|
44
|
+
* Composes `<lr-badge>` for the compact per-decision state indicator and `<lr-callout inline>`
|
|
45
|
+
* for the explanation text: the callout's own `role="alert"`/`role="status"` semantics already
|
|
46
|
+
* carry the right urgency per state (`deny` renders as an alert, `allow`/`needs-review` as
|
|
47
|
+
* status), so this component only needs to pick the matching `variant` rather than re-implement
|
|
48
|
+
* that wiring. `<lr-details>` renders a decision's optional richer `detail` (matched rule text,
|
|
49
|
+
* policy id, cited evidence) behind progressive disclosure, collapsed by default, instead of
|
|
50
|
+
* always showing it alongside the shorter `explanation`.
|
|
51
|
+
*
|
|
52
|
+
* `decisions` is controlled and never mutated by this component -- pass a new array (e.g. as a
|
|
53
|
+
* guardrail pipeline resolves) to update it. This is a summary surface, not an approval gate:
|
|
54
|
+
* there is no per-decision action here, and a decision's `state` is fixed data, not something a
|
|
55
|
+
* viewer can change from this component.
|
|
56
|
+
*
|
|
57
|
+
* @customElement lr-policy-summary
|
|
58
|
+
* @csspart base - The root wrapper, only rendered while `decisions` is non-empty.
|
|
59
|
+
* @csspart summary - The always-visible allow/deny/needs-review count row.
|
|
60
|
+
* @csspart count - One state's localized count text; carries `data-state`.
|
|
61
|
+
* @csspart list - The `role="list"` wrapper around every decision row.
|
|
62
|
+
* @csspart decision - One decision row (`role="listitem"`); carries `data-state` and `data-category`.
|
|
63
|
+
* @csspart decision-header - The row's category/label/state-badge line.
|
|
64
|
+
* @csspart category - The decision's localized category text.
|
|
65
|
+
* @csspart label - The decision's `label` text.
|
|
66
|
+
* @csspart state-badge - The resolved `<lr-badge>` state indicator.
|
|
67
|
+
* @csspart explanation - The `<lr-callout inline>` wrapping the always-visible `explanation` text.
|
|
68
|
+
* @csspart detail - The `<lr-details>` progressive-disclosure panel for `detail`, only rendered
|
|
69
|
+
* when a decision defines one.
|
|
70
|
+
* @csspart empty - The `<lr-empty>` shown when `decisions` is empty.
|
|
71
|
+
*/
|
|
72
|
+
export class LyraPolicySummary extends LyraElement {
|
|
73
|
+
constructor() {
|
|
74
|
+
super(...arguments);
|
|
75
|
+
/** The decisions to render, in the given order. Controlled and never mutated by this component
|
|
76
|
+
* -- pass a new array to update it. */
|
|
77
|
+
this.decisions = [];
|
|
78
|
+
}
|
|
79
|
+
static { this.styles = [LyraElement.styles, styles]; }
|
|
80
|
+
countOf(state) {
|
|
81
|
+
return this.decisions.filter((decision) => decision.state === state).length;
|
|
82
|
+
}
|
|
83
|
+
renderDecision(decision) {
|
|
84
|
+
const variant = STATE_VARIANT[decision.state];
|
|
85
|
+
return html `
|
|
86
|
+
<div part="decision" role="listitem" data-state=${decision.state} data-category=${decision.category}>
|
|
87
|
+
<div part="decision-header">
|
|
88
|
+
<span part="category">${this.localize(CATEGORY_LABEL_KEY[decision.category])}</span>
|
|
89
|
+
<span part="label">${decision.label}</span>
|
|
90
|
+
<lr-badge part="state-badge" variant=${variant}>${this.localize(STATE_LABEL_KEY[decision.state])}</lr-badge>
|
|
91
|
+
</div>
|
|
92
|
+
<lr-callout part="explanation" variant=${variant} inline>${decision.explanation}</lr-callout>
|
|
93
|
+
${decision.detail
|
|
94
|
+
? html `<lr-details part="detail" summary=${this.localize('policySummaryDetailLabel')}
|
|
95
|
+
>${decision.detail}</lr-details
|
|
96
|
+
>`
|
|
97
|
+
: nothing}
|
|
98
|
+
</div>
|
|
99
|
+
`;
|
|
100
|
+
}
|
|
101
|
+
render() {
|
|
102
|
+
if (this.decisions.length === 0) {
|
|
103
|
+
return html `<lr-empty part="empty" heading=${this.localize('noData')}></lr-empty>`;
|
|
104
|
+
}
|
|
105
|
+
return html `
|
|
106
|
+
<div part="base">
|
|
107
|
+
<div part="summary">
|
|
108
|
+
${STATES.map((state) => {
|
|
109
|
+
const count = this.countOf(state);
|
|
110
|
+
return html `<span part="count" data-state=${state}
|
|
111
|
+
>${this.localize(STATE_COUNT_KEY[state], undefined, { count })}</span
|
|
112
|
+
>`;
|
|
113
|
+
})}
|
|
114
|
+
</div>
|
|
115
|
+
<div part="list" role="list" aria-label=${this.localize('policySummaryLabel')}>
|
|
116
|
+
${this.decisions.map((decision) => this.renderDecision(decision))}
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
`;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
__decorate([
|
|
123
|
+
property({ attribute: false })
|
|
124
|
+
], LyraPolicySummary.prototype, "decisions", void 0);
|
|
125
|
+
//# sourceMappingURL=policy-summary.class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-summary.class.js","sourceRoot":"","sources":["../../../src/components/policy-summary/policy-summary.class.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-summary.d.ts","sourceRoot":"","sources":["../../../src/components/policy-summary/policy-summary.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAG1C,OAAO,mBAAmB,CAAC;AAC3B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,mBAAmB,CAAC"}
|