@aceshooting/lyra-ui 14.0.0 → 14.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/CHANGELOG.md +149 -19
- package/custom-elements.json +1 -1
- package/dist/components/agent-tools/commit-card/commit-card.class.d.ts +3 -1
- package/dist/components/agent-tools/commit-card/commit-card.class.js +2 -2
- package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +2 -1
- package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +1 -1
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts +6 -2
- package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +4 -4
- package/dist/components/agent-tools/result-card/result-card.class.d.ts +1 -1
- package/dist/components/agent-tools/result-card/result-card.class.js +1 -1
- package/dist/components/agent-tools/result-card/result-field.class.d.ts +1 -1
- package/dist/components/agent-tools/result-card/result-field.class.js +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js +1 -1
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +1 -1
- package/dist/components/agent-tools/terminal/terminal.class.js +2 -2
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +2 -2
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +1 -1
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +1 -1
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +2 -2
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +4 -4
- package/dist/components/agent-tools/trace-tree/span.d.ts +3 -1
- package/dist/components/agent-tools/trace-tree/span.js +1 -1
- package/dist/components/charts/chart/box-plot.class.d.ts +2 -0
- package/dist/components/charts/chart/box-plot.class.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +6 -1
- package/dist/components/charts/chart/chart.class.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +20 -11
- package/dist/components/charts/chart/lite-chart.class.js +10 -8
- package/dist/components/conversation/chat-message/chat-message.class.d.ts +4 -3
- package/dist/components/conversation/code-block/code-block-core.class.d.ts +4 -3
- package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-shared.d.ts +3 -3
- package/dist/components/conversation/code-block/code-block-shared.js +2 -2
- package/dist/components/conversation/code-block/code-block.class.d.ts +4 -3
- package/dist/components/conversation/code-block/code-block.class.js +1 -1
- package/dist/components/conversation/code-block/shiki-types.d.ts +2 -0
- package/dist/components/conversation/code-block/shiki-types.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-core.class.d.ts +1 -1
- package/dist/components/conversation/markdown/markdown.class.d.ts +1 -1
- package/dist/components/conversation/message-actions/message-actions.class.d.ts +2 -0
- package/dist/components/conversation/message-actions/message-actions.class.js +1 -1
- package/dist/components/conversation/message-feedback/message-feedback.class.d.ts +3 -1
- package/dist/components/conversation/message-feedback/message-feedback.class.js +2 -2
- package/dist/components/conversation/message-parts/message-parts.class.d.ts +3 -0
- package/dist/components/conversation/model-select/model-select.class.js +3 -3
- package/dist/components/conversation/thread-list/thread-list.class.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +2 -0
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
- package/dist/components/conversation/typing-indicator/typing-indicator.class.d.ts +2 -1
- package/dist/components/conversation/typing-indicator/typing-indicator.class.js +1 -1
- package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.d.ts +3 -0
- package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.js +1 -0
- package/dist/components/conversation/usage-badge/usage-badge.class.d.ts +4 -2
- package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
- package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -3
- package/dist/components/conversation/widget-renderer/resolve.d.ts +4 -6
- package/dist/components/conversation/widget-renderer/resolve.js +1 -1
- package/dist/components/data/calendar/calendar.class.d.ts +6 -3
- package/dist/components/data/calendar/calendar.class.js +1 -1
- package/dist/components/data/calendar/calendar.styles.js +1 -1
- package/dist/components/data/condition-builder/condition-builder.class.d.ts +3 -1
- package/dist/components/data/condition-builder/condition-builder.class.js +15 -1
- package/dist/components/data/context-meter/context-meter.class.js +2 -2
- package/dist/components/data/data-grid/data-grid.class.d.ts +6 -2
- package/dist/components/data/data-grid/data-grid.class.js +1 -1
- package/dist/components/data/document-library/document-library.class.d.ts +5 -2
- package/dist/components/data/document-library/document-library.class.js +1 -1
- package/dist/components/data/file-tree/file-tree.class.d.ts +2 -1
- package/dist/components/data/file-tree/file-tree.class.js +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +5 -2
- package/dist/components/data/flow-canvas/flow-canvas.styles.js +1 -1
- package/dist/components/data/flow-canvas/flow-model.js +1 -1
- package/dist/components/data/flow-canvas/flow-types.d.ts +2 -1
- package/dist/components/data/funnel/funnel.class.d.ts +1 -0
- package/dist/components/data/funnel/funnel.class.js +1 -1
- package/dist/components/data/gauge/gauge.class.d.ts +4 -1
- package/dist/components/data/gauge/gauge.class.js +6 -6
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +5 -2
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +15 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +7 -4
- package/dist/components/data/heatmap/heatmap.class.js +1 -1
- package/dist/components/data/sparkline/sparkline.class.d.ts +2 -1
- package/dist/components/data/sparkline/sparkline.class.js +1 -1
- package/dist/components/data/stat/stat.class.d.ts +6 -2
- package/dist/components/data/stat/stat.class.js +1 -1
- package/dist/components/data/table/table.class.d.ts +5 -2
- package/dist/components/data/table/table.class.js +2 -2
- package/dist/components/data/timeline/timeline.class.d.ts +7 -2
- package/dist/components/data/timeline/timeline.class.js +1 -1
- package/dist/components/data/timeline/timeline.styles.js +1 -1
- package/dist/components/data/tree/tree-item.class.d.ts +3 -1
- package/dist/components/data/tree/tree-item.class.js +1 -1
- package/dist/components/data/tree/tree.class.d.ts +4 -1
- package/dist/components/data/tree/tree.class.js +1 -1
- package/dist/components/data/word-cloud/word-cloud-layout.d.ts +2 -1
- package/dist/components/data/word-cloud/word-cloud-layout.js +1 -1
- package/dist/components/data/word-cloud/word-cloud.class.d.ts +2 -1
- package/dist/components/forms/button/button.class.d.ts +5 -3
- package/dist/components/forms/button/button.class.js +1 -1
- package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
- package/dist/components/forms/checkbox/checkbox.class.js +1 -1
- package/dist/components/forms/code-editor/code-editor.class.d.ts +11 -3
- package/dist/components/forms/code-editor/code-editor.class.js +6 -7
- package/dist/components/forms/code-editor/code-editor.styles.js +1 -1
- package/dist/components/forms/color-picker/color-picker.class.d.ts +5 -1
- package/dist/components/forms/color-picker/color-picker.class.js +4 -4
- package/dist/components/forms/combobox/combobox.class.d.ts +19 -8
- package/dist/components/forms/combobox/combobox.class.js +3 -3
- package/dist/components/forms/combobox/option.class.d.ts +4 -0
- package/dist/components/forms/combobox/option.class.js +2 -2
- package/dist/components/forms/date-picker/calendar-core.d.ts +1 -1
- package/dist/components/forms/date-picker/calendar-core.js +1 -1
- package/dist/components/forms/date-picker/date-input.class.d.ts +20 -10
- package/dist/components/forms/date-picker/date-input.class.js +4 -4
- package/dist/components/forms/date-picker/date-picker.class.d.ts +24 -13
- package/dist/components/forms/date-picker/date-picker.class.js +7 -7
- package/dist/components/forms/date-picker/date-picker.styles.js +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +11 -3
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +3 -3
- package/dist/components/forms/emoji-picker/emoji-types.d.ts +2 -2
- package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -2
- package/dist/components/forms/icon-button/icon-button.class.js +1 -1
- package/dist/components/forms/input/input.class.d.ts +5 -1
- package/dist/components/forms/input/input.class.js +1 -1
- package/dist/components/forms/input/native-time-input.class.d.ts +3 -0
- package/dist/components/forms/input/number-input.class.d.ts +3 -0
- package/dist/components/forms/input/time-input.class.d.ts +3 -0
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +5 -1
- package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
- package/dist/components/forms/otp-input/otp-input.class.d.ts +5 -1
- package/dist/components/forms/otp-input/otp-input.class.js +1 -1
- package/dist/components/forms/phone-input/phone-input.class.d.ts +21 -8
- package/dist/components/forms/phone-input/phone-input.class.js +1 -1
- package/dist/components/forms/radio/radio-button.class.d.ts +4 -0
- package/dist/components/forms/radio/radio-group.class.d.ts +4 -1
- package/dist/components/forms/radio/radio-group.class.js +1 -1
- package/dist/components/forms/radio/radio.class.d.ts +6 -2
- package/dist/components/forms/radio/radio.class.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +7 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +3 -3
- package/dist/components/forms/select/select.class.d.ts +8 -2
- package/dist/components/forms/select/select.class.js +2 -2
- package/dist/components/forms/slider/slider.class.d.ts +12 -6
- package/dist/components/forms/slider/slider.class.js +2 -2
- package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +4 -0
- package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
- package/dist/components/forms/switch/switch.class.d.ts +5 -1
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/textarea/textarea.class.d.ts +3 -0
- package/dist/components/forms/textarea/textarea.class.js +1 -1
- package/dist/components/forms/time-range/time-range.class.d.ts +3 -0
- package/dist/components/forms/time-range/time-range.class.js +1 -1
- package/dist/components/forms/token-input/token-input.class.d.ts +8 -2
- package/dist/components/forms/token-input/token-input.class.js +2 -2
- package/dist/components/forms/token-input/token-input.styles.js +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +3 -1
- package/dist/components/layout/app-rail/app-rail.class.js +1 -1
- package/dist/components/layout/carousel/carousel.class.d.ts +3 -2
- package/dist/components/layout/carousel/carousel.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.class.js +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +2 -0
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
- package/dist/components/layout/details/details.class.d.ts +3 -3
- package/dist/components/layout/filter-bar/filter-bar.class.d.ts +3 -1
- package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
- package/dist/components/layout/menu/menu-label.class.d.ts +3 -3
- package/dist/components/layout/menu/menu.class.d.ts +4 -1
- package/dist/components/layout/menu/menu.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.class.d.ts +9 -3
- package/dist/components/layout/multi-split/multi-split.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.styles.js +1 -1
- package/dist/components/layout/reorder-list/reorder-item.class.d.ts +2 -1
- package/dist/components/layout/reorder-list/reorder-item.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-owner.js +1 -1
- package/dist/components/layout/split-panel/split-panel.class.d.ts +2 -1
- package/dist/components/layout/split-panel/split-panel.class.js +1 -1
- package/dist/components/layout/tab-group/tab-group.class.d.ts +3 -1
- package/dist/components/layout/tab-group/tab-group.class.js +1 -1
- package/dist/components/layout/widget/widget.class.d.ts +6 -2
- package/dist/components/layout/widget/widget.class.js +1 -1
- package/dist/components/media/animation/animation.class.d.ts +3 -2
- package/dist/components/media/animation/animation.class.js +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +4 -3
- package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
- package/dist/components/media/av-player/av-metadata.d.ts +3 -2
- package/dist/components/media/av-player/av-player.class.d.ts +4 -3
- package/dist/components/media/av-player/av-player.class.js +3 -3
- package/dist/components/media/av-player/av-player.styles.js +1 -1
- package/dist/components/media/avatar/avatar.class.d.ts +2 -1
- package/dist/components/media/avatar/avatar.class.js +1 -1
- package/dist/components/media/file-input/file-input.class.d.ts +4 -2
- package/dist/components/media/file-input/file-input.class.js +1 -1
- package/dist/components/media/file-input/file-input.styles.js +1 -1
- package/dist/components/media/image-viewer/image-viewer.class.d.ts +2 -1
- package/dist/components/media/image-viewer/image-viewer.class.js +1 -1
- package/dist/components/media/image-viewer/image-viewer.styles.js +1 -1
- package/dist/components/media/map/map.class.d.ts +5 -3
- package/dist/components/media/map/map.class.js +1 -1
- package/dist/components/media/map/map.styles.js +1 -1
- package/dist/components/media/media-card/media-card.class.d.ts +1 -1
- package/dist/components/media/media-card/media-card.class.js +1 -1
- package/dist/components/media/pan-zoom/pan-zoom.class.js +1 -1
- package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +1 -1
- package/dist/components/media/sequence-playback/sequence-playback.styles.js +1 -1
- package/dist/components/media/video/video.class.d.ts +2 -1
- package/dist/components/media/video/video.styles.js +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
- package/dist/components/overlays/chip/chip-group.class.d.ts +2 -0
- package/dist/components/overlays/chip/chip-group.class.js +1 -1
- package/dist/components/overlays/dialog/dialog.class.d.ts +2 -0
- package/dist/components/overlays/dialog/dialog.class.js +1 -1
- package/dist/components/overlays/empty/empty.class.d.ts +2 -0
- package/dist/components/overlays/empty/empty.class.js +1 -1
- package/dist/components/overlays/kbd/kbd.class.d.ts +2 -0
- package/dist/components/overlays/kbd/kbd.class.js +1 -1
- package/dist/components/overlays/overlay/popover.class.d.ts +3 -1
- package/dist/components/overlays/overlay/popover.class.js +1 -1
- package/dist/components/overlays/overlay/tooltip.class.d.ts +3 -1
- package/dist/components/overlays/overlay/tooltip.class.js +1 -1
- package/dist/components/overlays/rating/rating.class.d.ts +2 -0
- package/dist/components/overlays/rating/rating.class.js +1 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +2 -2
- package/dist/components/retrieval/entity-card/entity-card.class.d.ts +5 -2
- package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +4 -2
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
- package/dist/components/retrieval/graph/graph-canvas.js +1 -1
- package/dist/components/retrieval/graph/graph.class.d.ts +9 -7
- package/dist/components/retrieval/graph/graph.class.js +1 -1
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +1 -3
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +2 -0
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +3 -2
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +7 -3
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +2 -1
- package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +1 -1
- package/dist/components/retrieval/source-picker/source-picker.class.d.ts +2 -1
- package/dist/components/retrieval/source-picker/source-picker.class.js +1 -1
- package/dist/components/utility/format/format-number.class.d.ts +3 -1
- package/dist/components/utility/format/format-options.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.class.d.ts +3 -2
- package/dist/components/utility/json-viewer/json-viewer.class.js +2 -2
- package/dist/components/utility/known-date/known-date.class.d.ts +9 -5
- package/dist/components/utility/known-date/known-date.class.js +2 -2
- package/dist/components/utility/known-date/known-date.styles.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.d.ts +3 -1
- package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
- package/dist/components/utility/poll-status/poll-status.class.d.ts +3 -0
- package/dist/components/utility/poll-status/poll-status.styles.js +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +1 -0
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +2 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.d.ts +4 -2
- package/dist/components/viewers/document-preview/document-preview.class.js +1 -1
- package/dist/components/viewers/document-preview/document-preview.styles.js +1 -1
- package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +3 -2
- package/dist/components/viewers/document-viewer/document-viewer.class.js +2 -2
- package/dist/components/viewers/document-viewer/registry-ownership.d.ts +1 -0
- package/dist/components/viewers/document-viewer/registry-ownership.js +1 -0
- package/dist/components/viewers/document-viewer/registry.js +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts +7 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +2 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -2
- package/dist/components/viewers/include/include-resource.js +1 -1
- package/dist/components/viewers/include/include.class.d.ts +3 -1
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts +4 -2
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +4 -4
- package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +1 -1
- package/dist/components/viewers/passive-markup.js +1 -1
- package/dist/components/viewers/svg-viewer/svg-viewer.class.d.ts +2 -1
- package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +2 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.class.js +1 -1
- package/dist/components/viewers/xml-viewer/xml-viewer.js +1 -1
- package/dist/custom-elements-jsx.d.ts +1 -1
- package/dist/internal/aria-reflection.js +1 -1
- package/dist/internal/catalog-picker.js +1 -1
- package/dist/internal/default-strings.generated.d.ts +1 -1
- package/dist/internal/default-strings.generated.js +1 -1
- package/dist/internal/dev-mode-attribute-warning.d.ts +3 -0
- package/dist/internal/dev-mode-attribute-warning.js +1 -1
- package/dist/internal/form-associated.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +1 -1
- package/dist/internal/lyra-element.js +1 -1
- package/dist/internal/native-control-description.d.ts +7 -0
- package/dist/internal/native-control-description.js +1 -0
- package/dist/internal/option-selection.js +1 -1
- package/dist/internal/overlay-order.d.ts +6 -0
- package/dist/internal/overlay-order.js +1 -0
- package/dist/internal/overlay-stack.d.ts +1 -1
- package/dist/internal/overlay-stack.js +1 -1
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/positioner.d.ts +5 -4
- package/dist/internal/reactive-property-writes.d.ts +1 -0
- package/dist/internal/reactive-property-writes.js +1 -0
- package/dist/internal/svg-title.d.ts +3 -0
- package/dist/internal/svg-title.js +1 -0
- package/dist/svelte.d.ts +1 -1
- package/dist/translations/ar.js +1 -1
- package/dist/translations/de.js +1 -1
- package/dist/translations/es.js +1 -1
- package/dist/translations/fa.js +1 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/he.js +1 -1
- package/dist/translations/ja.js +1 -1
- package/dist/translations/pt-BR.js +1 -1
- package/dist/translations/ru.js +1 -1
- package/dist/translations/zh-CN.js +1 -1
- package/dist/vue.d.ts +1 -1
- package/llms/components/lr-accordion-item.md +4 -0
- package/llms/components/lr-accordion.md +4 -0
- package/llms/components/lr-agent-trace.md +3 -0
- package/llms/components/lr-animation.md +4 -0
- package/llms/components/lr-app-rail-item.md +4 -2
- package/llms/components/lr-app-rail.md +4 -2
- package/llms/components/lr-attachment-chip.md +6 -0
- package/llms/components/lr-av-player.md +14 -0
- package/llms/components/lr-avatar.md +4 -0
- package/llms/components/lr-box-plot.md +6 -0
- package/llms/components/lr-button.md +11 -3
- package/llms/components/lr-calendar-viewer.md +4 -0
- package/llms/components/lr-calendar.md +5 -0
- package/llms/components/lr-carousel.md +5 -0
- package/llms/components/lr-chart.md +13 -4
- package/llms/components/lr-chat-message.md +4 -0
- package/llms/components/lr-checkbox.md +3 -0
- package/llms/components/lr-chip-group.md +3 -0
- package/llms/components/lr-chip.md +3 -0
- package/llms/components/lr-code-block-core.md +16 -4
- package/llms/components/lr-code-block.md +7 -0
- package/llms/components/lr-code-editor.md +18 -5
- package/llms/components/lr-color-picker.md +9 -0
- package/llms/components/lr-combobox.md +35 -4
- package/llms/components/lr-command-palette.md +4 -0
- package/llms/components/lr-commit-card.md +3 -0
- package/llms/components/lr-compare-panel.md +7 -0
- package/llms/components/lr-condition-builder.md +5 -0
- package/llms/components/lr-conversation-item.md +3 -0
- package/llms/components/lr-copy-button.md +6 -0
- package/llms/components/lr-dashboard-grid.md +5 -0
- package/llms/components/lr-data-grid.md +11 -1
- package/llms/components/lr-dataset-viewer.md +3 -2
- package/llms/components/lr-date-input.md +46 -6
- package/llms/components/lr-date-picker.md +46 -6
- package/llms/components/lr-details.md +4 -0
- package/llms/components/lr-dialog.md +4 -0
- package/llms/components/lr-document-library.md +4 -0
- package/llms/components/lr-document-preview.md +7 -1
- package/llms/components/lr-document-viewer.md +9 -3
- package/llms/components/lr-dropdown-item.md +4 -0
- package/llms/components/lr-dropdown.md +3 -0
- package/llms/components/lr-ebook-viewer.md +4 -0
- package/llms/components/lr-email-viewer.md +5 -0
- package/llms/components/lr-emoji-picker.md +17 -3
- package/llms/components/lr-empty.md +3 -0
- package/llms/components/lr-entity-card.md +3 -0
- package/llms/components/lr-entity-chip.md +4 -0
- package/llms/components/lr-file-input.md +7 -0
- package/llms/components/lr-file-tree.md +5 -1
- package/llms/components/lr-filter-bar.md +5 -0
- package/llms/components/lr-flow-canvas.md +8 -1
- package/llms/components/lr-flow-node.md +2 -1
- package/llms/components/lr-flow-run-status.md +1 -1
- package/llms/components/lr-format-number.md +4 -0
- package/llms/components/lr-funnel.md +4 -0
- package/llms/components/lr-gauge.md +4 -0
- package/llms/components/lr-generation-metrics.md +5 -0
- package/llms/components/lr-graph-query-builder.md +6 -0
- package/llms/components/lr-graph.md +8 -2
- package/llms/components/lr-heatmap.md +13 -0
- package/llms/components/lr-icon-button.md +7 -0
- package/llms/components/lr-image-viewer.md +9 -0
- package/llms/components/lr-include.md +5 -0
- package/llms/components/lr-ingestion-queue.md +4 -0
- package/llms/components/lr-input.md +22 -8
- package/llms/components/lr-json-viewer.md +4 -0
- package/llms/components/lr-kbd.md +3 -0
- package/llms/components/lr-knowledge-graph-explorer.md +7 -0
- package/llms/components/lr-known-date.md +7 -0
- package/llms/components/lr-lite-chart.md +21 -4
- package/llms/components/lr-live-region.md +3 -0
- package/llms/components/lr-locale-picker.md +6 -0
- package/llms/components/lr-map.md +8 -0
- package/llms/components/lr-markdown-core.md +4 -0
- package/llms/components/lr-markdown.md +8 -4
- package/llms/components/lr-media-card.md +5 -2
- package/llms/components/lr-mention-popover.md +5 -0
- package/llms/components/lr-menu-item.md +4 -0
- package/llms/components/lr-menu-label.md +4 -3
- package/llms/components/lr-menu.md +4 -0
- package/llms/components/lr-message-actions.md +3 -0
- package/llms/components/lr-message-feedback.md +4 -0
- package/llms/components/lr-message-parts.md +3 -2
- package/llms/components/lr-model-select.md +8 -0
- package/llms/components/lr-multi-split.md +15 -6
- package/llms/components/lr-native-time-input.md +10 -0
- package/llms/components/lr-node-palette.md +3 -0
- package/llms/components/lr-notebook-viewer.md +4 -1
- package/llms/components/lr-number-input.md +12 -1
- package/llms/components/lr-option.md +35 -4
- package/llms/components/lr-otp-input.md +10 -0
- package/llms/components/lr-pan-zoom.md +1 -2
- package/llms/components/lr-phone-input.md +20 -5
- package/llms/components/lr-poll-status.md +4 -0
- package/llms/components/lr-popover.md +3 -0
- package/llms/components/lr-popup.md +3 -2
- package/llms/components/lr-prompt-studio.md +7 -0
- package/llms/components/lr-provenance-panel.md +3 -0
- package/llms/components/lr-push-to-talk.md +3 -0
- package/llms/components/lr-radio-button.md +13 -4
- package/llms/components/lr-radio-group.md +5 -0
- package/llms/components/lr-radio.md +9 -0
- package/llms/components/lr-rating.md +3 -0
- package/llms/components/lr-reorder-item.md +6 -0
- package/llms/components/lr-reorder-list.md +6 -0
- package/llms/components/lr-result-card.md +3 -0
- package/llms/components/lr-result-field.md +3 -0
- package/llms/components/lr-rubric-form.md +12 -0
- package/llms/components/lr-select.md +9 -0
- package/llms/components/lr-sequence-playback.md +4 -0
- package/llms/components/lr-slider.md +16 -4
- package/llms/components/lr-source-picker.md +4 -0
- package/llms/components/lr-span-waterfall.md +3 -0
- package/llms/components/lr-sparkline.md +4 -0
- package/llms/components/lr-split-panel.md +4 -0
- package/llms/components/lr-stack-trace.md +3 -0
- package/llms/components/lr-stat.md +10 -0
- package/llms/components/lr-subagent-panel.md +3 -2
- package/llms/components/lr-svg-viewer.md +3 -0
- package/llms/components/lr-swatch-picker.md +4 -0
- package/llms/components/lr-switch.md +6 -0
- package/llms/components/lr-tab-group.md +4 -0
- package/llms/components/lr-table.md +10 -2
- package/llms/components/lr-terminal.md +3 -0
- package/llms/components/lr-textarea.md +9 -0
- package/llms/components/lr-thread-list.md +6 -3
- package/llms/components/lr-time-input.md +3 -0
- package/llms/components/lr-time-range.md +5 -0
- package/llms/components/lr-timeline-item.md +6 -0
- package/llms/components/lr-timeline.md +6 -0
- package/llms/components/lr-token-input.md +14 -0
- package/llms/components/lr-tool-call-chip.md +5 -3
- package/llms/components/lr-tool-param-form.md +4 -0
- package/llms/components/lr-tool-result-dialog.md +4 -0
- package/llms/components/lr-tool-select-dialog.md +4 -0
- package/llms/components/lr-tooltip.md +6 -0
- package/llms/components/lr-trace-tree.md +3 -0
- package/llms/components/lr-transcript-feed.md +3 -0
- package/llms/components/lr-tree-item.md +12 -5
- package/llms/components/lr-tree.md +12 -5
- package/llms/components/lr-typing-indicator.md +3 -0
- package/llms/components/lr-usage-badge.md +4 -0
- package/llms/components/lr-video.md +8 -2
- package/llms/components/lr-virtual-list.md +5 -3
- package/llms/components/lr-voice-picker.md +8 -0
- package/llms/components/lr-widget-renderer.md +9 -0
- package/llms/components/lr-widget.md +4 -2
- package/llms/components/lr-word-cloud.md +4 -0
- package/llms/components/lr-xml-viewer.md +9 -2
- package/llms/components/lr-zoomable-frame.md +6 -3
- package/llms-full.txt +4080 -2711
- package/package.json +2 -2
- package/vscode-css-data.json +1 -1
- package/vscode-html-data.json +1 -1
- package/web-types.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{inline-size:100%;block-size:var(--lr-canvas-reserved-height,var(--lr-size-24rem));min-block-size:0;min-inline-size:0;display:block;position:relative;overflow:hidden}[part=base]{block-size:100%;inline-size:100%;position:relative}[part=viewport]{touch-action:none;cursor:grab;outline:none;block-size:100%;inline-size:100%;position:relative;overflow:hidden}[part=viewport]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(-1 * var(--lr-focus-ring-width))}[part=background],[part=edges]{position:absolute;inset:0}[part=edges]{pointer-events:none;block-size:100%;inline-size:100%;overflow:visible}[part=empty]{pointer-events:none;block-size:100%;inline-size:100%}[part=overlay-rail]{inset-inline:var(--lr-space-s);z-index:var(--lr-layer-content);align-items:flex-end;gap:var(--lr-space-s);pointer-events:none;flex-wrap:wrap;display:flex;position:absolute}[part=overlay-rail][data-edge=top]{inset-block-start:var(--lr-space-s)}[part=overlay-rail][data-edge=bottom]{inset-block-end:var(--lr-space-s)}.overlay-group{gap:var(--lr-space-s);pointer-events:auto;flex-wrap:wrap;max-inline-size:100%;display:flex}.overlay-group[data-align=end]{margin-inline-start:auto}[part=node]{will-change:transform;min-inline-size:var(--lr-size-1-5rem);min-block-size:var(--lr-size-1-5rem);position:absolute;inset-block-start:0;inset-inline-start:0}[part=node-control]{min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size)}.portable-node-card{align-items:stretch;gap:var(--lr-space-xs);min-inline-size:calc(var(--lr-size-10rem) + var(--lr-size-1rem));padding:var(--lr-space-s);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);box-shadow:var(--lr-shadow-s);display:flex}.portable-node-content{overflow-wrap:anywhere;flex-direction:column;flex:auto;min-inline-size:0;display:flex}.portable-handles{flex-direction:column;justify-content:space-around;display:flex}.portable-handles>span{inline-size:var(--lr-size-0-5rem);block-size:var(--lr-size-0-5rem);border-radius:var(--lr-radius-pill);background:var(--lr-color-border-strong)}[part=node]:focus-within{z-index:var(--lr-layer-content)}[part=edge]{fill:none;stroke:var(--lr-flow-canvas-edge-neutral-color,var(--lr-color-border));stroke-width:1.5px;pointer-events:stroke;cursor:pointer}[part=edge-hit-area]{fill:none;stroke:#0000;stroke-width:var(--lr-icon-button-size);pointer-events:stroke;cursor:pointer}[part=edge][data-tone=brand]{stroke:var(--lr-flow-canvas-edge-brand-color,var(--lr-color-brand))}[part=edge][data-tone=success]{stroke:var(--lr-flow-canvas-edge-success-color,var(--lr-color-success))}[part=edge][data-tone=warning]{stroke:var(--lr-flow-canvas-edge-warning-color,var(--lr-color-warning))}[part=edge][data-tone=danger]{stroke:var(--lr-flow-canvas-edge-danger-color,var(--lr-color-danger))}[part=arrowhead]{fill:var(--lr-flow-canvas-edge-neutral-color,var(--lr-color-border))}[part=arrowhead][data-tone=brand]{fill:var(--lr-flow-canvas-edge-brand-color,var(--lr-color-brand))}[part=arrowhead][data-tone=success]{fill:var(--lr-flow-canvas-edge-success-color,var(--lr-color-success))}[part=arrowhead][data-tone=warning]{fill:var(--lr-flow-canvas-edge-warning-color,var(--lr-color-warning))}[part=arrowhead][data-tone=danger]{fill:var(--lr-flow-canvas-edge-danger-color,var(--lr-color-danger))}[part=stub]{stroke:var(--lr-color-border);stroke-width:1.5px;stroke-dasharray:3 3;opacity:.6}[part=edge-label]{fill:var(--lr-color-text);font:var(--lr-font-size-xs) / 1 var(--lr-font);text-anchor:middle;stroke:var(--lr-color-surface);stroke-width:var(--lr-size-3px)}[part=layout-limit]{inset-inline:var(--lr-space-s);z-index:var(--lr-layer-content);max-inline-size:calc(100% - 2 * var(--lr-space-s));padding:var(--lr-space-2xs) var(--lr-space-s);border:var(--lr-border-width-thin) solid var(--lr-color-warning);border-radius:var(--lr-radius);background:var(--lr-color-surface);color:var(--lr-color-text);font-size:var(--lr-font-size-xs);overflow-wrap:anywhere;position:absolute;inset-block-end:var(--lr-space-s)}.world{transform-origin:0 0;will-change:transform;block-size:100%;inline-size:100%;position:absolute;inset-block-start:0;inset-inline-start:0}[part=background]{background-image:radial-gradient(circle, var(--lr-color-border) var(--lr-size-1px), transparent var(--lr-size-1px));background-size:var(--lr-flow-canvas-grid-size,var(--_lr-flow-canvas-grid-size,var(--lr-size-0-5rem))) var(--lr-flow-canvas-grid-size,var(--_lr-flow-canvas-grid-size,var(--lr-size-0-5rem)));cursor:grab;block-size:500%;inline-size:500%;position:absolute;inset-block-start:-200%;inset-inline-start:-200%}[part=viewport][data-panning] [part=background]{cursor:grabbing}[part=viewport][data-empty] .world{pointer-events:none}:host([locked]) [part=background]{cursor:default}:host([orientation=horizontal]:dir(rtl)) [part=viewport],:host([orientation=horizontal]:dir(rtl)) [part=node] ::slotted(*){transform:scaleX(-1)}[part=node][data-selected]{outline:var(--lr-size-2px) solid var(--lr-flow-canvas-node-selected-outline-color,var(--lr-color-brand));outline-offset:var(--lr-size-2px);border-radius:var(--lr-radius)}[part=node]:hover{outline:var(--lr-size-1px) solid var(--lr-flow-canvas-node-hover-outline-color,var(--lr-color-border-strong));outline-offset:var(--lr-size-2px)}[part=node]:active{outline:var(--lr-size-2px) solid var(--lr-flow-canvas-node-hover-outline-color,var(--lr-color-border-strong));outline-offset:var(--lr-size-2px)}[part=edge][aria-pressed=true],[part=edge]:hover,[part=edge-hit-area]:hover+[part=edge]{stroke-width:2.5px}[part=edge]:active,[part=edge-hit-area]:active+[part=edge]{stroke-width:3.5px}[part=node]:has([part=node-control]:focus-visible),[part=edge]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=connection-line]{fill:none;stroke:var(--lr-color-brand);stroke-width:1.5px;stroke-dasharray:4 4;pointer-events:none}[part=node][data-connect-invalid]{outline:var(--lr-size-2px) solid var(--lr-flow-canvas-node-connect-invalid-outline-color,var(--lr-color-danger));outline-offset:var(--lr-size-2px)}[part=node][data-connect-target]{outline:var(--lr-size-2px) dashed var(--lr-flow-canvas-node-connect-target-outline-color,var(--lr-color-brand));outline-offset:var(--lr-size-2px)}[part=viewport][data-drop-active]{outline:var(--lr-size-2px) dashed var(--lr-flow-canvas-drop-active-outline-color,var(--lr-color-brand));outline-offset:calc(-1 * var(--lr-size-2px))}[part=viewport][data-drop-active]:focus-visible{box-shadow:inset 0 0 0 var(--lr-focus-ring-width) var(--lr-focus-ring-color)}[part=edge][data-running]{stroke-dasharray:6 4;animation:lr-flow-canvas-march var(--lr-flow-canvas-march-duration,var(--lr-duration-ambient)) linear infinite}[part=edge][data-running-static]{stroke-dasharray:6 4}@media (prefers-reduced-motion:reduce){[part=edge][data-running]{animation:none}}@keyframes lr-flow-canvas-march{to{stroke-dashoffset:-20px}}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{inline-size:100%;block-size:var(--lr-canvas-reserved-height,var(--lr-size-24rem));min-block-size:0;min-inline-size:0;display:block;position:relative;overflow:hidden}[part=base]{block-size:100%;inline-size:100%;position:relative}[part=viewport]{touch-action:none;cursor:grab;outline:none;block-size:100%;inline-size:100%;position:relative;overflow:hidden}[part=viewport]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(-1 * var(--lr-focus-ring-width))}[part=background],[part=edges]{position:absolute;inset:0}[part=edges]{pointer-events:none;block-size:100%;inline-size:100%;overflow:visible}[part=empty]{pointer-events:none;block-size:100%;inline-size:100%}[part=overlay-rail]{inset-inline:var(--lr-space-s);z-index:var(--lr-layer-content);align-items:flex-end;gap:var(--lr-space-s);pointer-events:none;flex-wrap:wrap;display:flex;position:absolute}[part=overlay-rail][data-edge=top]{inset-block-start:var(--lr-space-s)}[part=overlay-rail][data-edge=bottom]{inset-block-end:var(--lr-space-s)}.overlay-group{gap:var(--lr-space-s);pointer-events:auto;flex-wrap:wrap;max-inline-size:100%;display:flex}.overlay-group[data-align=end]{margin-inline-start:auto}[part=node]{will-change:transform;min-inline-size:var(--lr-size-1-5rem);min-block-size:var(--lr-size-1-5rem);position:absolute;inset-block-start:0;inset-inline-start:0}[part=node-control]{min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size)}.portable-node-card{align-items:stretch;gap:var(--lr-space-xs);min-inline-size:calc(var(--lr-size-10rem) + var(--lr-size-1rem));padding:var(--lr-space-s);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);box-shadow:var(--lr-shadow-s);display:flex}.portable-node-content{overflow-wrap:anywhere;flex-direction:column;flex:auto;min-inline-size:0;display:flex}.portable-handles{flex-direction:column;justify-content:space-around;display:flex}.portable-handles>span{inline-size:var(--lr-size-0-5rem);block-size:var(--lr-size-0-5rem);border-radius:var(--lr-radius-pill);background:var(--lr-color-border-strong)}[part=node]:focus-within{z-index:var(--lr-layer-content)}[part=edge]{fill:none;stroke:var(--lr-flow-canvas-edge-neutral-color,var(--lr-color-border));stroke-width:1.5px;pointer-events:stroke;cursor:pointer}[part=edge-hit-area]{fill:none;stroke:#0000;stroke-width:var(--lr-icon-button-size);pointer-events:stroke;cursor:pointer}[part=edge][data-tone=brand]{stroke:var(--lr-flow-canvas-edge-brand-color,var(--lr-color-brand))}[part=edge][data-tone=success]{stroke:var(--lr-flow-canvas-edge-success-color,var(--lr-color-success))}[part=edge][data-tone=warning]{stroke:var(--lr-flow-canvas-edge-warning-color,var(--lr-color-warning))}[part=edge][data-tone=danger]{stroke:var(--lr-flow-canvas-edge-danger-color,var(--lr-color-danger))}[part=arrowhead]{fill:var(--lr-flow-canvas-edge-neutral-color,var(--lr-color-border))}[part=arrowhead][data-tone=brand]{fill:var(--lr-flow-canvas-edge-brand-color,var(--lr-color-brand))}[part=arrowhead][data-tone=success]{fill:var(--lr-flow-canvas-edge-success-color,var(--lr-color-success))}[part=arrowhead][data-tone=warning]{fill:var(--lr-flow-canvas-edge-warning-color,var(--lr-color-warning))}[part=arrowhead][data-tone=danger]{fill:var(--lr-flow-canvas-edge-danger-color,var(--lr-color-danger))}[part=stub]{stroke:var(--lr-color-border);stroke-width:1.5px;stroke-dasharray:3 3;opacity:.6}[part=edge-label]{fill:var(--lr-color-text);font:var(--lr-font-size-xs) / 1 var(--lr-font);text-anchor:middle;stroke:var(--lr-color-surface);stroke-width:var(--lr-size-3px)}[part=layout-limit]{inset-inline:var(--lr-space-s);z-index:var(--lr-layer-content);max-inline-size:calc(100% - 2 * var(--lr-space-s));padding:var(--lr-space-2xs) var(--lr-space-s);border:var(--lr-border-width-thin) solid var(--lr-color-warning);border-radius:var(--lr-radius);background:var(--lr-color-surface);color:var(--lr-color-text);font-size:var(--lr-font-size-xs);overflow-wrap:anywhere;position:absolute;inset-block-end:var(--lr-space-s)}.world{transform-origin:0 0;will-change:transform;block-size:100%;inline-size:100%;position:absolute;inset-block-start:0;inset-inline-start:0}[part=background]{background-image:radial-gradient(circle, var(--lr-color-border) var(--lr-size-1px), transparent var(--lr-size-1px));background-size:var(--lr-flow-canvas-grid-size,var(--_lr-flow-canvas-grid-size,var(--lr-size-0-5rem))) var(--lr-flow-canvas-grid-size,var(--_lr-flow-canvas-grid-size,var(--lr-size-0-5rem)));cursor:grab;block-size:500%;inline-size:500%;position:absolute;inset-block-start:-200%;inset-inline-start:-200%}[part=viewport][data-panning] [part=background]{cursor:grabbing}[part=viewport][data-empty] .world{pointer-events:none}:host([locked]) [part=background]{cursor:default}:host([orientation=horizontal]:dir(rtl)) [part=viewport],:host([orientation=horizontal]:dir(rtl)) [part=node] ::slotted(*),:host([orientation=horizontal]:dir(rtl)) [part=node] [data-flow-canvas-default-card]{transform:scaleX(-1)}[part=node][data-selected]{outline:var(--lr-size-2px) solid var(--lr-flow-canvas-node-selected-outline-color,var(--lr-color-brand));outline-offset:var(--lr-size-2px);border-radius:var(--lr-radius)}[part=node]:hover{outline:var(--lr-size-1px) solid var(--lr-flow-canvas-node-hover-outline-color,var(--lr-color-border-strong));outline-offset:var(--lr-size-2px)}[part=node]:active{outline:var(--lr-size-2px) solid var(--lr-flow-canvas-node-hover-outline-color,var(--lr-color-border-strong));outline-offset:var(--lr-size-2px)}[part=edge][aria-pressed=true],[part=edge]:hover,[part=edge-hit-area]:hover+[part=edge]{stroke-width:2.5px}[part=edge]:active,[part=edge-hit-area]:active+[part=edge]{stroke-width:3.5px}[part=node]:has([part=node-control]:focus-visible),[part=edge]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=connection-line]{fill:none;stroke:var(--lr-color-brand);stroke-width:1.5px;stroke-dasharray:4 4;pointer-events:none}[part=node][data-connect-invalid]{outline:var(--lr-size-2px) solid var(--lr-flow-canvas-node-connect-invalid-outline-color,var(--lr-color-danger));outline-offset:var(--lr-size-2px)}[part=node][data-connect-target]{outline:var(--lr-size-2px) dashed var(--lr-flow-canvas-node-connect-target-outline-color,var(--lr-color-brand));outline-offset:var(--lr-size-2px)}[part=viewport][data-drop-active]{outline:var(--lr-size-2px) dashed var(--lr-flow-canvas-drop-active-outline-color,var(--lr-color-brand));outline-offset:calc(-1 * var(--lr-size-2px))}[part=viewport][data-drop-active]:focus-visible{box-shadow:inset 0 0 0 var(--lr-focus-ring-width) var(--lr-focus-ring-color)}[part=edge][data-running]{stroke-dasharray:6 4;animation:lr-flow-canvas-march var(--lr-flow-canvas-march-duration,var(--lr-duration-ambient)) linear infinite}[part=edge][data-running-static]{stroke-dasharray:6 4}@media (prefers-reduced-motion:reduce){[part=edge][data-running]{animation:none}}@keyframes lr-flow-canvas-march{to{stroke-dashoffset:-20px}}`;export{styles};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const FLOW_STATUSES=new Set(["pending","running","success","error","denied"]),FLOW_VARIANTS=new Set(["neutral","brand","success","warning","danger"]),MAX_FLOW_COLLECTION_ENTRIES=1e4,MAX_FLOW_COLLECTION_NODES=5e4,MAX_FLOW_COLLECTION_DEPTH=16;function isRecord(value){if(typeof value!="object"||value===null||Array.isArray(value))return!1;try{const prototype=Object.getPrototypeOf(value);return prototype===Object.prototype||prototype===null}catch{return!1}}function snapshotFlowPosition(value){if(!isRecord(value))return;const x=value.x,y=value.y;if(!(typeof x!="number"||typeof y!="number"||!Number.isFinite(x)||!Number.isFinite(y)))return Object.freeze({x,y})}function snapshotFlowData(value){const root={},seen=new WeakMap,work=[{source:value,target:root,depth:0}],owned=[root];seen.set(value,root);let remaining=MAX_FLOW_COLLECTION_NODES;for(;work.length>0&&remaining>0;){const{source,target,depth}=work.pop();let descriptors;try{descriptors=Object.getOwnPropertyDescriptors(source)}catch{continue}let retainedEntries=0;for(const[key,descriptor]of Object.entries(descriptors)){if(!descriptor.enumerable||!("value"in descriptor))continue;if(retainedEntries>=MAX_FLOW_COLLECTION_ENTRIES||remaining<=0)break;retainedEntries+=1,remaining-=1;const item=descriptor.value;if(Array.isArray(item)||isRecord(item)){if(depth>=MAX_FLOW_COLLECTION_DEPTH)continue;let clone=seen.get(item);clone||(clone=Array.isArray(item)?[]:{},seen.set(item,clone),owned.push(clone),work.push({source:item,target:clone,depth:depth+1})),target[key]=clone}else target[key]=item}}for(let index=owned.length-1;index>=0;index--)Object.freeze(owned[index]);return root}function normalizeFlowStatus(value){return typeof value=="string"&&FLOW_STATUSES.has(value)?value:null}function normalizeFlowVariant(value){return typeof value=="string"&&FLOW_VARIANTS.has(value)?value:void 0}function snapshotFlowHandles(value){if(!Array.isArray(value))return;const result=[],seen=new Set;for(const handle of value.slice(0,MAX_FLOW_COLLECTION_ENTRIES))try{const id=handle?.id;if(typeof id!="string"||id.trim()===""||seen.has(id))continue;
|
|
1
|
+
const FLOW_STATUSES=new Set(["pending","running","success","error","denied"]),FLOW_VARIANTS=new Set(["neutral","brand","success","warning","danger"]),MAX_FLOW_COLLECTION_ENTRIES=1e4,MAX_FLOW_COLLECTION_NODES=5e4,MAX_FLOW_COLLECTION_DEPTH=16;function isRecord(value){if(typeof value!="object"||value===null||Array.isArray(value))return!1;try{const prototype=Object.getPrototypeOf(value);return prototype===Object.prototype||prototype===null}catch{return!1}}function snapshotFlowPosition(value){if(!isRecord(value))return;const x=value.x,y=value.y;if(!(typeof x!="number"||typeof y!="number"||!Number.isFinite(x)||!Number.isFinite(y)))return Object.freeze({x,y})}function snapshotFlowData(value){const root={},seen=new WeakMap,work=[{source:value,target:root,depth:0}],owned=[root];seen.set(value,root);let remaining=MAX_FLOW_COLLECTION_NODES;for(;work.length>0&&remaining>0;){const{source,target,depth}=work.pop();let descriptors;try{descriptors=Object.getOwnPropertyDescriptors(source)}catch{continue}let retainedEntries=0;for(const[key,descriptor]of Object.entries(descriptors)){if(!descriptor.enumerable||!("value"in descriptor))continue;if(retainedEntries>=MAX_FLOW_COLLECTION_ENTRIES||remaining<=0)break;retainedEntries+=1,remaining-=1;const item=descriptor.value;if(Array.isArray(item)||isRecord(item)){if(depth>=MAX_FLOW_COLLECTION_DEPTH)continue;let clone=seen.get(item);clone||(clone=Array.isArray(item)?[]:{},seen.set(item,clone),owned.push(clone),work.push({source:item,target:clone,depth:depth+1})),target[key]=clone}else target[key]=item}}for(let index=owned.length-1;index>=0;index--)Object.freeze(owned[index]);return root}function normalizeFlowStatus(value){return typeof value=="string"&&FLOW_STATUSES.has(value)?value:null}function normalizeFlowVariant(value){return typeof value=="string"&&FLOW_VARIANTS.has(value)?value:void 0}function snapshotFlowHandles(value){if(!Array.isArray(value))return;const result=[],seen=new Set;for(const handle of value.slice(0,MAX_FLOW_COLLECTION_ENTRIES))try{const id=handle?.id;if(typeof id!="string"||id.trim()===""||seen.has(id))continue;const label=handle?.label;result.push(Object.freeze({id,...typeof label=="string"?{label}:{}})),seen.add(id)}catch{}return Object.freeze(result)}function snapshotFlowNodes(value){if(!Array.isArray(value))return Object.freeze([]);const nodes=[],seen=new Set;for(const node of value.slice(0,MAX_FLOW_COLLECTION_ENTRIES))try{const id=node?.id;if(typeof id!="string"||id.trim().length===0||seen.has(id))continue;const data=isRecord(node?.data)?snapshotFlowData(node.data):void 0,position=snapshotFlowPosition(node?.position),inputs=snapshotFlowHandles(node?.inputs),outputs=snapshotFlowHandles(node?.outputs),snapshot=Object.freeze({id,...typeof node?.type=="string"?{type:node.type}:{},...position?{position}:{},...data?{data}:{},...typeof node?.accessibleLabel=="string"?{accessibleLabel:node.accessibleLabel}:{},...inputs?{inputs}:{},...outputs?{outputs}:{}});seen.add(id),nodes.push(snapshot)}catch{}return Object.freeze(nodes)}function snapshotFlowEdges(value){if(!Array.isArray(value))return Object.freeze([]);const edges=[],seen=new Set;for(const edge of value.slice(0,MAX_FLOW_COLLECTION_ENTRIES))try{const id=edge?.id;if(typeof id!="string"||id.trim().length===0||seen.has(id))continue;const tone=normalizeFlowVariant(edge?.tone),snapshot=Object.freeze({id,source:typeof edge?.source=="string"?edge.source:"",target:typeof edge?.target=="string"?edge.target:"",...typeof edge?.sourceHandle=="string"?{sourceHandle:edge.sourceHandle}:{},...typeof edge?.targetHandle=="string"?{targetHandle:edge.targetHandle}:{},...typeof edge?.label=="string"?{label:edge.label}:{},...tone?{tone}:{}});seen.add(id),edges.push(snapshot)}catch{}return Object.freeze(edges)}function snapshotFlowDecorations(value){if(!isRecord(value))return Object.freeze({});const entries=[];let keys;try{keys=Object.keys(value).slice(0,MAX_FLOW_COLLECTION_ENTRIES)}catch{return Object.freeze({})}for(const id of keys){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,id)}catch{continue}if(!descriptor||!("value"in descriptor))continue;const candidate=descriptor.value;try{if(!isRecord(candidate))continue;const status=normalizeFlowStatus(candidate.status);if(!status)continue;const progress=candidate.progress,durationMs=candidate.durationMs,detail=candidate.detail;entries.push([id,Object.freeze({status,...typeof progress=="number"?{progress}:{},...typeof durationMs=="number"?{durationMs}:{},...typeof detail=="string"?{detail}:{}})])}catch{}}return Object.freeze(Object.fromEntries(entries))}export{MAX_FLOW_COLLECTION_ENTRIES,normalizeFlowStatus,normalizeFlowVariant,snapshotFlowDecorations,snapshotFlowEdges,snapshotFlowHandles,snapshotFlowNodes};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type{LyraOrientation,LyraToolStatus}from'../../../internal/shared-unions.js';import type{LyraVariant}from'../../../internal/variants.js';
|
|
2
|
-
/** A named input/output connection point on a flow node.
|
|
2
|
+
/** A named input/output connection point on a flow node. Collections retain the first valid
|
|
3
|
+
* occurrence of each id; an unreadable optional label does not reserve that id. */
|
|
3
4
|
export interface FlowHandle{readonly id:string;readonly label?:string;}
|
|
4
5
|
/** A controlled node in a flow canvas. `id` must be nonempty and unique within `nodes`; the
|
|
5
6
|
* first valid occurrence wins. Reassign the collection to publish model changes. */
|
|
@@ -29,6 +29,7 @@ readonly color?:string;}
|
|
|
29
29
|
* omitted, every bar is zero-length, and the absolute values still render.
|
|
30
30
|
* - A stage larger than its predecessor (funnel re-entry) reports its true share above 100% in
|
|
31
31
|
* text while its bar clamps to the track, carrying the extra bar-overflow part token.
|
|
32
|
+
* Finite values whose positive ratio overflows also fill the main or comparison track.
|
|
32
33
|
* - A comparison series of a different length pairs by index: extra comparison entries are
|
|
33
34
|
* ignored, and stages past its end simply get no comparison bar.
|
|
34
35
|
* - Malformed/non-record entries and records without a string `label` are omitted while later
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteInteger,finiteNumber}from"../../../internal/numbers.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{styles}from"./funnel.styles.js";import{LYRA_DEFAULT_chart,LYRA_DEFAULT_comparePanel,LYRA_DEFAULT_contextMeterLabeledSummary,LYRA_DEFAULT_noData,LYRA_DEFAULT_statTrendDecreased,LYRA_DEFAULT_statTrendIncreased,LYRA_DEFAULT_trendUnchanged}from"../../../internal/default-strings.generated.js";const MAX_SHARE_PRECISION=20;class LyraFunnel extends LyraElement{constructor(){super(...arguments),this.stages=[],this.comparison=[],this.comparisonLabel="",this.label="",this.dropoff=!0,this.sharePrecision=0}static{this.defaultStrings={...super.defaultStrings,chart:LYRA_DEFAULT_chart,comparePanel:LYRA_DEFAULT_comparePanel,contextMeterLabeledSummary:LYRA_DEFAULT_contextMeterLabeledSummary,noData:LYRA_DEFAULT_noData,statTrendDecreased:LYRA_DEFAULT_statTrendDecreased,statTrendIncreased:LYRA_DEFAULT_statTrendIncreased,trendUnchanged:LYRA_DEFAULT_trendUnchanged}}static{this.styles=[LyraElement.styles,styles]}get precision(){return finiteInteger(this.sharePrecision,0,0,MAX_SHARE_PRECISION)}formatValue(value){return getNumberFormat(this.effectiveLocale).format(value)}formatShare(ratio){const precision=this.precision;return getNumberFormat(this.effectiveLocale,{style:"percent",minimumFractionDigits:precision,maximumFractionDigits:precision}).format(ratio)}validStages(value){if(!Array.isArray(value))return[];const stages=[];for(let index=0;index<value.length;index+=1)try{const stage=value[index];if(!stage||typeof stage!="object"||Array.isArray(stage))continue;const record=stage;if(typeof record.label!="string")continue;stages.push(Object.freeze({label:record.label,value:typeof record.value=="number"?finiteNumber(record.value,0):0,...typeof record.color=="string"?{color:record.color}:{}}))}catch{}return stages}resolveStages(){const stages=this.validStages(this.stages),comparison=this.validStages(this.comparison),values=stages.map(stage=>finiteNumber(stage.value,0)),base=values[0]??0,hasBase=base>0,comparisonValues=comparison.map(stage=>finiteNumber(stage.value,0)),comparisonBase=comparisonValues[0]??0,hasComparisonBase=comparisonBase>0;return stages.map((stage,index)=>{const value=values[index]??0,previous=values[index-1],comparisonValue=comparisonValues[index];return{stage,value,share:hasBase?value/base:null,change:index>0&&previous!==void 0&&previous>0?(value-previous)/previous:null,comparisonShare:hasComparisonBase&&comparisonValue!==void 0?comparisonValue/comparisonBase:null}})}barLength(share){return`${(share===null?0:Math.min(1,Math.max(0,
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hostAriaLabel}from"../../../internal/a11y.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteInteger,finiteNumber}from"../../../internal/numbers.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{styles}from"./funnel.styles.js";import{LYRA_DEFAULT_chart,LYRA_DEFAULT_comparePanel,LYRA_DEFAULT_contextMeterLabeledSummary,LYRA_DEFAULT_noData,LYRA_DEFAULT_statTrendDecreased,LYRA_DEFAULT_statTrendIncreased,LYRA_DEFAULT_trendUnchanged}from"../../../internal/default-strings.generated.js";const MAX_SHARE_PRECISION=20;class LyraFunnel extends LyraElement{constructor(){super(...arguments),this.stages=[],this.comparison=[],this.comparisonLabel="",this.label="",this.dropoff=!0,this.sharePrecision=0}static{this.defaultStrings={...super.defaultStrings,chart:LYRA_DEFAULT_chart,comparePanel:LYRA_DEFAULT_comparePanel,contextMeterLabeledSummary:LYRA_DEFAULT_contextMeterLabeledSummary,noData:LYRA_DEFAULT_noData,statTrendDecreased:LYRA_DEFAULT_statTrendDecreased,statTrendIncreased:LYRA_DEFAULT_statTrendIncreased,trendUnchanged:LYRA_DEFAULT_trendUnchanged}}static{this.styles=[LyraElement.styles,styles]}get precision(){return finiteInteger(this.sharePrecision,0,0,MAX_SHARE_PRECISION)}formatValue(value){return getNumberFormat(this.effectiveLocale).format(value)}formatShare(ratio){const precision=this.precision;return getNumberFormat(this.effectiveLocale,{style:"percent",minimumFractionDigits:precision,maximumFractionDigits:precision}).format(ratio)}validStages(value){if(!Array.isArray(value))return[];const stages=[];for(let index=0;index<value.length;index+=1)try{const stage=value[index];if(!stage||typeof stage!="object"||Array.isArray(stage))continue;const record=stage;if(typeof record.label!="string")continue;stages.push(Object.freeze({label:record.label,value:typeof record.value=="number"?finiteNumber(record.value,0):0,...typeof record.color=="string"?{color:record.color}:{}}))}catch{}return stages}resolveStages(){const stages=this.validStages(this.stages),comparison=this.validStages(this.comparison),values=stages.map(stage=>finiteNumber(stage.value,0)),base=values[0]??0,hasBase=base>0,comparisonValues=comparison.map(stage=>finiteNumber(stage.value,0)),comparisonBase=comparisonValues[0]??0,hasComparisonBase=comparisonBase>0;return stages.map((stage,index)=>{const value=values[index]??0,previous=values[index-1],comparisonValue=comparisonValues[index];return{stage,value,share:hasBase?value/base:null,change:index>0&&previous!==void 0&&previous>0?(value-previous)/previous:null,comparisonShare:hasComparisonBase&&comparisonValue!==void 0?comparisonValue/comparisonBase:null}})}barLength(share){return`${(share===null?0:finiteNumber(Math.min(1,Math.max(0,share)),0))*100}%`}changeText(change){return change===0?this.localize("trendUnchanged"):this.localize(change>0?"statTrendIncreased":"statTrendDecreased",void 0,{value:this.formatShare(Math.abs(change))})}renderStage(resolved){const{stage,value,share,change,comparisonShare}=resolved,barColor=sanitizeCssColor(stage.color),barPart=share!==null&&share>1?"bar bar-overflow":"bar",comparisonName=this.comparisonLabel||this.localize("comparePanel");return html`<li part="stage">
|
|
2
2
|
${this.dropoff&&change!==null?html`<span part="dropoff">${this.changeText(change)}</span>`:nothing}
|
|
3
3
|
<span part="stage-header">
|
|
4
4
|
<span part="stage-label">${stage.label}</span>
|
|
@@ -20,7 +20,10 @@ export type GaugeShape='radial'|'ring'|'linear';
|
|
|
20
20
|
*/
|
|
21
21
|
export declare class LyraGauge extends LyraElement{static styles:import("lit").CSSResultGroup[];static get observedAttributes():string[];value:number;min:number;max:number;
|
|
22
22
|
/** Visual geometry. Named `shape` because this Lyra-original component is not a native input. */
|
|
23
|
-
shape:GaugeShape;
|
|
23
|
+
shape:GaugeShape;
|
|
24
|
+
/** Optional visible label. Attribute removal omits the SVG label and restores the localized
|
|
25
|
+
* gauge name unless an author supplied aria-label; the property retains null readback. */
|
|
26
|
+
label:string;
|
|
24
27
|
/** Displayed/announced value text, e.g. `'72°F'` for a raw `value` of `72`.
|
|
25
28
|
* An empty string is treated the same as unset and falls back to the numeric `value`. */
|
|
26
29
|
valueText?:string;private appliedAriaLabel;private explicitAriaLabel;private authorRole;private syncingGeneratedRole;attributeChangedCallback(name:string,oldValue:string|null,value:string|null):void;private get domain();private get ratio();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteNumber,finiteRatio}from"../../../internal/numbers.js";import{styles}from"./gauge.styles.js";import{LYRA_DEFAULT_gaugeLabel,LYRA_DEFAULT_gaugeValueLabel}from"../../../internal/default-strings.generated.js";const SWEEP_DEG=270,START_DEG=135,RADIUS=40,CENTER=50,STROKE=10,LINEAR_STROKE=6,LINEAR_BAR_Y=15,LINEAR_TEXT_Y=8,LINEAR_LENGTH=100,RADIAL_VALUE_CHARACTERS=9,RADIAL_LABEL_CHARACTERS=12,LINEAR_VALUE_CHARACTERS=10,LINEAR_LABEL_CHARACTERS=10;function abbreviateSvgText(value,maxCharacters){const characters=Array.from(value);return characters.length<=maxCharacters?value:`${characters.slice(0,maxCharacters-1).join("")}…`}function polarToCartesian(angleDeg){const rad=angleDeg*Math.PI/180;return[CENTER+RADIUS*Math.cos(rad),CENTER+RADIUS*Math.sin(rad)]}function arcPath(startDeg,endDeg){const[sx,sy]=polarToCartesian(startDeg),[ex,ey]=polarToCartesian(endDeg),largeArc=endDeg-startDeg>180?1:0;return`M ${sx} ${sy} A ${RADIUS} ${RADIUS} 0 ${largeArc} 1 ${ex} ${ey}`}const RADIAL_ARC_D=arcPath(START_DEG,START_DEG+SWEEP_DEG),RADIAL_ARC_LENGTH=SWEEP_DEG/360*2*Math.PI*RADIUS,RING_CIRCUMFERENCE=2*Math.PI*RADIUS;class LyraGauge extends LyraElement{constructor(){super(...arguments),this.value=0,this.min=0,this.max=100,this.shape="radial",this.label="",this.appliedAriaLabel=null,this.explicitAriaLabel=null,this.authorRole=null,this.syncingGeneratedRole=!1}static{this.defaultStrings={...super.defaultStrings,gaugeLabel:LYRA_DEFAULT_gaugeLabel,gaugeValueLabel:LYRA_DEFAULT_gaugeValueLabel}}static{this.styles=[LyraElement.styles,styles]}static get observedAttributes(){return[...new Set([...super.observedAttributes,"role"])]}attributeChangedCallback(name,oldValue,value){super.attributeChangedCallback(name,oldValue,value),!(name!=="role"||oldValue===value||this.syncingGeneratedRole)&&(this.authorRole=value,this.requestUpdate())}get domain(){const min=finiteNumber(this.min,0),max=finiteNumber(this.max,100);return{lo:Math.min(min,max),hi:Math.max(min,max)}}get ratio(){if(!Number.isFinite(this.value))return 0;const{lo,hi}=this.domain;return finiteRatio(this.value,lo,hi)}get displayText(){return this.valueText||(Number.isFinite(this.value)?getNumberFormat(this.effectiveLocale).format(this.value):"")}truncatedTooltip(fullText,renderedText,renderedLabel){return renderedText===fullText&&renderedLabel===this.label?"":this.label&&fullText?this.localize("gaugeValueLabel",void 0,{label:this.label,value:fullText}):this.label||fullText}willUpdate(changed){super.willUpdate(changed);const{lo,hi}=this.domain,finiteTrio=Number.isFinite(this.value)&&Number.isFinite(lo)&&Number.isFinite(hi)&&lo!==hi;if(this.authorRole===null){this.syncingGeneratedRole=!0;try{this.setAttribute("role",finiteTrio?"meter":"img")}finally{this.syncingGeneratedRole=!1}}if(finiteTrio){const clamped=Math.min(hi,Math.max(lo,this.value));this.setAttribute("aria-valuenow",String(clamped)),this.setAttribute("aria-valuemin",String(lo)),this.setAttribute("aria-valuemax",String(hi))}else this.removeAttribute("aria-valuenow"),this.removeAttribute("aria-valuemin"),this.removeAttribute("aria-valuemax");const currentAriaLabel=this.getAttribute("aria-label");currentAriaLabel!==this.appliedAriaLabel&&(this.explicitAriaLabel=currentAriaLabel);const defaultName=this.label||this.localize("gaugeLabel"),fallbackValueLabel=this.displayText&&(!Number.isFinite(this.value)||lo===hi)?this.localize("gaugeValueLabel",void 0,{label:defaultName,value:this.displayText}):defaultName,nextAriaLabel=this.explicitAriaLabel||(finiteTrio?defaultName:fallbackValueLabel);this.setAttribute("aria-label",nextAriaLabel),this.appliedAriaLabel=nextAriaLabel,finiteTrio&&this.valueText?this.setAttribute("aria-valuetext",this.valueText):this.removeAttribute("aria-valuetext")}renderRadial(){const fullText=this.displayText,text=abbreviateSvgText(fullText,RADIAL_VALUE_CHARACTERS),label=abbreviateSvgText(this.label,RADIAL_LABEL_CHARACTERS),tooltip=this.truncatedTooltip(fullText,text,label),dashoffset=RADIAL_ARC_LENGTH*(1-this.ratio);return html`<svg
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{nativeSvgTitle}from"../../../internal/svg-title.js";import{html,nothing,svg}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteNumber,finiteRatio}from"../../../internal/numbers.js";import{styles}from"./gauge.styles.js";import{LYRA_DEFAULT_gaugeLabel,LYRA_DEFAULT_gaugeValueLabel}from"../../../internal/default-strings.generated.js";const SWEEP_DEG=270,START_DEG=135,RADIUS=40,CENTER=50,STROKE=10,LINEAR_STROKE=6,LINEAR_BAR_Y=15,LINEAR_TEXT_Y=8,LINEAR_LENGTH=100,RADIAL_VALUE_CHARACTERS=9,RADIAL_LABEL_CHARACTERS=12,LINEAR_VALUE_CHARACTERS=10,LINEAR_LABEL_CHARACTERS=10;function abbreviateSvgText(value,maxCharacters){const characters=Array.from(value);return characters.length<=maxCharacters?value:`${characters.slice(0,maxCharacters-1).join("")}…`}function polarToCartesian(angleDeg){const rad=angleDeg*Math.PI/180;return[CENTER+RADIUS*Math.cos(rad),CENTER+RADIUS*Math.sin(rad)]}function arcPath(startDeg,endDeg){const[sx,sy]=polarToCartesian(startDeg),[ex,ey]=polarToCartesian(endDeg),largeArc=endDeg-startDeg>180?1:0;return`M ${sx} ${sy} A ${RADIUS} ${RADIUS} 0 ${largeArc} 1 ${ex} ${ey}`}const RADIAL_ARC_D=arcPath(START_DEG,START_DEG+SWEEP_DEG),RADIAL_ARC_LENGTH=SWEEP_DEG/360*2*Math.PI*RADIUS,RING_CIRCUMFERENCE=2*Math.PI*RADIUS;class LyraGauge extends LyraElement{constructor(){super(...arguments),this.value=0,this.min=0,this.max=100,this.shape="radial",this.label="",this.appliedAriaLabel=null,this.explicitAriaLabel=null,this.authorRole=null,this.syncingGeneratedRole=!1}static{this.defaultStrings={...super.defaultStrings,gaugeLabel:LYRA_DEFAULT_gaugeLabel,gaugeValueLabel:LYRA_DEFAULT_gaugeValueLabel}}static{this.styles=[LyraElement.styles,styles]}static get observedAttributes(){return[...new Set([...super.observedAttributes,"role"])]}attributeChangedCallback(name,oldValue,value){super.attributeChangedCallback(name,oldValue,value),!(name!=="role"||oldValue===value||this.syncingGeneratedRole)&&(this.authorRole=value,this.requestUpdate())}get domain(){const min=finiteNumber(this.min,0),max=finiteNumber(this.max,100);return{lo:Math.min(min,max),hi:Math.max(min,max)}}get ratio(){if(!Number.isFinite(this.value))return 0;const{lo,hi}=this.domain;return finiteRatio(this.value,lo,hi)}get displayText(){return this.valueText||(Number.isFinite(this.value)?getNumberFormat(this.effectiveLocale).format(this.value):"")}truncatedTooltip(fullText,renderedText,renderedLabel){return renderedText===fullText&&renderedLabel===(this.label??"")?"":this.label&&fullText?this.localize("gaugeValueLabel",void 0,{label:this.label,value:fullText}):this.label||fullText}willUpdate(changed){super.willUpdate(changed);const{lo,hi}=this.domain,finiteTrio=Number.isFinite(this.value)&&Number.isFinite(lo)&&Number.isFinite(hi)&&lo!==hi;if(this.authorRole===null){this.syncingGeneratedRole=!0;try{this.setAttribute("role",finiteTrio?"meter":"img")}finally{this.syncingGeneratedRole=!1}}if(finiteTrio){const clamped=Math.min(hi,Math.max(lo,this.value));this.setAttribute("aria-valuenow",String(clamped)),this.setAttribute("aria-valuemin",String(lo)),this.setAttribute("aria-valuemax",String(hi))}else this.removeAttribute("aria-valuenow"),this.removeAttribute("aria-valuemin"),this.removeAttribute("aria-valuemax");const currentAriaLabel=this.getAttribute("aria-label");currentAriaLabel!==this.appliedAriaLabel&&(this.explicitAriaLabel=currentAriaLabel);const defaultName=this.label||this.localize("gaugeLabel"),fallbackValueLabel=this.displayText&&(!Number.isFinite(this.value)||lo===hi)?this.localize("gaugeValueLabel",void 0,{label:defaultName,value:this.displayText}):defaultName,nextAriaLabel=this.explicitAriaLabel||(finiteTrio?defaultName:fallbackValueLabel);this.setAttribute("aria-label",nextAriaLabel),this.appliedAriaLabel=nextAriaLabel,finiteTrio&&this.valueText?this.setAttribute("aria-valuetext",this.valueText):this.removeAttribute("aria-valuetext")}renderRadial(){const fullText=this.displayText,text=abbreviateSvgText(fullText,RADIAL_VALUE_CHARACTERS),label=abbreviateSvgText(this.label??"",RADIAL_LABEL_CHARACTERS),tooltip=this.truncatedTooltip(fullText,text,label),dashoffset=RADIAL_ARC_LENGTH*(1-this.ratio);return html`<svg
|
|
2
2
|
part="base"
|
|
3
3
|
viewBox="0 0 100 100"
|
|
4
4
|
aria-hidden="true"
|
|
5
5
|
>
|
|
6
|
-
${tooltip?
|
|
6
|
+
${tooltip?nativeSvgTitle(tooltip):nothing}
|
|
7
7
|
<path part="track" stroke-width=${STROKE} d=${RADIAL_ARC_D}></path>
|
|
8
8
|
<path
|
|
9
9
|
part="fill"
|
|
@@ -24,13 +24,13 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
24
24
|
y="68"
|
|
25
25
|
aria-hidden="true"
|
|
26
26
|
>${label}</text>`:nothing}
|
|
27
|
-
</svg>`}renderLinear(){const fullText=this.displayText,text=abbreviateSvgText(fullText,LINEAR_VALUE_CHARACTERS),label=abbreviateSvgText(this.label,LINEAR_LABEL_CHARACTERS),tooltip=this.truncatedTooltip(fullText,text,label),dashoffset=LINEAR_LENGTH*(1-this.ratio),rtl=this.effectiveDirection==="rtl",startX=rtl?LINEAR_LENGTH:0,endX=rtl?0:LINEAR_LENGTH;return html`<svg
|
|
27
|
+
</svg>`}renderLinear(){const fullText=this.displayText,text=abbreviateSvgText(fullText,LINEAR_VALUE_CHARACTERS),label=abbreviateSvgText(this.label??"",LINEAR_LABEL_CHARACTERS),tooltip=this.truncatedTooltip(fullText,text,label),dashoffset=LINEAR_LENGTH*(1-this.ratio),rtl=this.effectiveDirection==="rtl",startX=rtl?LINEAR_LENGTH:0,endX=rtl?0:LINEAR_LENGTH;return html`<svg
|
|
28
28
|
part="base"
|
|
29
29
|
viewBox="0 0 100 20"
|
|
30
30
|
preserveAspectRatio="none"
|
|
31
31
|
aria-hidden="true"
|
|
32
32
|
>
|
|
33
|
-
${tooltip?
|
|
33
|
+
${tooltip?nativeSvgTitle(tooltip):nothing}
|
|
34
34
|
<line part="track" x1=${startX} y1=${LINEAR_BAR_Y} x2=${endX} y2=${LINEAR_BAR_Y} stroke-width=${LINEAR_STROKE}></line>
|
|
35
35
|
<line
|
|
36
36
|
part="fill"
|
|
@@ -54,12 +54,12 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
54
54
|
y=${LINEAR_TEXT_Y}
|
|
55
55
|
aria-hidden="true"
|
|
56
56
|
>${text}</text>
|
|
57
|
-
</svg>`}renderRing(){const fullText=this.displayText,text=abbreviateSvgText(fullText,RADIAL_VALUE_CHARACTERS),label=abbreviateSvgText(this.label,RADIAL_LABEL_CHARACTERS),tooltip=this.truncatedTooltip(fullText,text,label),dashoffset=RING_CIRCUMFERENCE*(1-this.ratio);return html`<svg
|
|
57
|
+
</svg>`}renderRing(){const fullText=this.displayText,text=abbreviateSvgText(fullText,RADIAL_VALUE_CHARACTERS),label=abbreviateSvgText(this.label??"",RADIAL_LABEL_CHARACTERS),tooltip=this.truncatedTooltip(fullText,text,label),dashoffset=RING_CIRCUMFERENCE*(1-this.ratio);return html`<svg
|
|
58
58
|
part="base"
|
|
59
59
|
viewBox="0 0 100 100"
|
|
60
60
|
aria-hidden="true"
|
|
61
61
|
>
|
|
62
|
-
${tooltip?
|
|
62
|
+
${tooltip?nativeSvgTitle(tooltip):nothing}
|
|
63
63
|
<circle part="track" cx=${CENTER} cy=${CENTER} r=${RADIUS} stroke-width=${STROKE}></circle>
|
|
64
64
|
<circle
|
|
65
65
|
part="fill"
|
|
@@ -92,6 +92,8 @@ export interface GraphQueryDeleteDetail{readonly queryId:string;}export interfac
|
|
|
92
92
|
* The start-entity input carries native `required`, matching the aggregate builder's
|
|
93
93
|
* `valueMissing` rule. Host `focus()`/`click()` reach the first rendered field, and `blur()`
|
|
94
94
|
* releases whichever nested field owns deep focus.
|
|
95
|
+
* An unavailable DOM focus getter skips restoration without preventing chip removal or saved-query
|
|
96
|
+
* updates. Ordinary focused removal still follows the adjacent control and leaves outside focus alone.
|
|
95
97
|
*
|
|
96
98
|
* Run, save, load, and delete use the same two-phase action contract: a cancelable
|
|
97
99
|
* `lr-before-query-*` request precedes any local effect, followed by a non-cancelable
|
|
@@ -108,7 +110,8 @@ export interface GraphQueryDeleteDetail{readonly queryId:string;}export interfac
|
|
|
108
110
|
* @slot label - Visible label for the complete form control.
|
|
109
111
|
* @slot hint - Supporting text for the complete form control.
|
|
110
112
|
* @slot error - Error text for the complete form control.
|
|
111
|
-
* @event lr-input - `detail: { value }` — any field changed; the full current query.
|
|
113
|
+
* @event lr-input - `detail: { value }` — any field changed; the full current query. Hop select
|
|
114
|
+
* choices emit it once; child native/prefixed value and listbox lifecycle aliases are contained.
|
|
112
115
|
* @event lr-validity-change - Frozen `detail: { valid, errors }` from effective native validity,
|
|
113
116
|
* including custom errors and validation barring; fired only on an actual change.
|
|
114
117
|
* @event lr-before-query-run - Cancelable request emitted after `reportValidity()` passes, before
|
|
@@ -270,4 +273,4 @@ focus(options?:FocusOptions):void;
|
|
|
270
273
|
blur():void;
|
|
271
274
|
/** Forwards host clicks to the first rendered control so callers can interact with this wrapper
|
|
272
275
|
* as if it exposed a single root control. */
|
|
273
|
-
click():void;private setValue;private addRelationshipType;private removeRelationshipType;private addNodeType;private removeNodeType;private captureChipRemovalFocus;private markTouched;private runQuery;private saveQuery;private loadQuery;private deleteQuery;protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;private hopOptions;private onChromeSlotChange;private labelForType;private renderTypeFilter;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-graph-query-builder':LyraGraphQueryBuilder;}}
|
|
276
|
+
click():void;private setValue;private addRelationshipType;private removeRelationshipType;private addNodeType;private removeNodeType;private captureChipRemovalFocus;private markTouched;private runQuery;private saveQuery;private loadQuery;private deleteQuery;protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;private hopOptions;private onChromeSlotChange;private labelForType;private containSelectEvent;private renderTypeFilter;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-graph-query-builder':LyraGraphQueryBuilder;}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{installFormControlLabelSupport}from"../../../internal/form-control-labels.js";installFormControlLabelSupport();import{closeIcon}from"../../../internal/icons.js";import{AnchoredValidityController,VALIDITY_ANCHOR}from"../../../internal/anchored-validity.js";import{syncValidityStates}from"../../../internal/custom-states.js";import{finiteInteger}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{nextId}from"../../../internal/a11y.js";import{deepActiveElementIn}from"../../../internal/active-element.js";import{styles}from"./graph-query-builder.styles.js";import{attachInternalsSafely}from"../../../internal/element-internals.js";import{getFormOwner,installCustomErrorProperty,isBarredFromValidation,setFormOwner}from"../../../internal/form-associated.js";import{installInvalidEventAlias}from"../../../internal/invalid-event-alias.js";import{LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_graphQueryBuilderLabel,LYRA_DEFAULT_graphQueryDeleteWithContext,LYRA_DEFAULT_graphQueryDirectionLabel,LYRA_DEFAULT_graphQueryEndLabel,LYRA_DEFAULT_graphQueryHopRangeInvalid,LYRA_DEFAULT_graphQueryLoadWithContext,LYRA_DEFAULT_graphQueryMaxHopsLabel,LYRA_DEFAULT_graphQueryMinHopsLabel,LYRA_DEFAULT_graphQueryNodeTypeLabel,LYRA_DEFAULT_graphQueryRelationshipTypeLabel,LYRA_DEFAULT_graphQueryRun,LYRA_DEFAULT_graphQuerySaveButton,LYRA_DEFAULT_graphQuerySaveNameLabel,LYRA_DEFAULT_graphQuerySavedQueriesLabel,LYRA_DEFAULT_graphQueryStartLabel,LYRA_DEFAULT_neighborDirectionBoth,LYRA_DEFAULT_neighborDirectionIn,LYRA_DEFAULT_neighborDirectionOut,LYRA_DEFAULT_noData,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const MAX_TYPES=500,MAX_SAVED_QUERIES=200,MAX_TEXT=256,EMPTY_STRINGS=Object.freeze([]),EMPTY_VALUE=Object.freeze({startId:"",endId:"",relationshipTypes:EMPTY_STRINGS,nodeTypes:EMPTY_STRINGS,direction:"both",minHops:1,maxHops:1}),EMPTY_OPTIONS=Object.freeze([]),EMPTY_SAVED=Object.freeze([]);function ownValue(record,key){try{const descriptor=Object.getOwnPropertyDescriptor(record,key);return descriptor&&"value"in descriptor?descriptor.value:void 0}catch{return}}function boundedString(value){return typeof value=="string"?value.slice(0,MAX_TEXT):""}function stringArray(value){return Array.isArray(value)?Object.freeze([...new Set(value.slice(0,MAX_TYPES).filter(entry=>typeof entry=="string").map(entry=>boundedString(entry)).filter(Boolean))]):EMPTY_STRINGS}function normalizeGraphQuery(value){const record=value!==null&&typeof value=="object"&&!Array.isArray(value)?value:EMPTY_VALUE,direction=ownValue(record,"direction");return Object.freeze({startId:boundedString(ownValue(record,"startId")),endId:boundedString(ownValue(record,"endId")),relationshipTypes:stringArray(ownValue(record,"relationshipTypes")),nodeTypes:stringArray(ownValue(record,"nodeTypes")),direction:direction==="out"||direction==="in"||direction==="both"?direction:"both",minHops:finiteInteger(typeof ownValue(record,"minHops")=="number"?ownValue(record,"minHops"):EMPTY_VALUE.minHops,EMPTY_VALUE.minHops,1,20),maxHops:finiteInteger(typeof ownValue(record,"maxHops")=="number"?ownValue(record,"maxHops"):EMPTY_VALUE.maxHops,EMPTY_VALUE.maxHops,1,20)})}function normalizeTypeOptions(value){if(!Array.isArray(value))return EMPTY_OPTIONS;const values=new Set,result=[];for(const candidate of value.slice(0,MAX_TYPES)){if(candidate===null||typeof candidate!="object"||Array.isArray(candidate))continue;const optionValue=boundedString(ownValue(candidate,"value"));if(optionValue.trim().length===0||values.has(optionValue))continue;values.add(optionValue);const label=boundedString(ownValue(candidate,"label"));result.push(Object.freeze({value:optionValue,...label?{label}:{}}))}return Object.freeze(result)}function normalizeSavedQueries(value){if(!Array.isArray(value))return EMPTY_SAVED;const ids=new Set,result=[];for(const candidate of value.slice(0,MAX_SAVED_QUERIES)){if(candidate===null||typeof candidate!="object"||Array.isArray(candidate))continue;const id=boundedString(ownValue(candidate,"id"));id.trim().length===0||ids.has(id)||(ids.add(id),result.push(Object.freeze({id,name:boundedString(ownValue(candidate,"name")),query:normalizeGraphQuery(ownValue(candidate,"query"))})))}return Object.freeze(result)}class LyraGraphQueryBuilder extends LyraElement{static{this.defaultStrings={...super.defaultStrings,fieldRequired:LYRA_DEFAULT_fieldRequired,graphQueryBuilderLabel:LYRA_DEFAULT_graphQueryBuilderLabel,graphQueryDeleteWithContext:LYRA_DEFAULT_graphQueryDeleteWithContext,graphQueryDirectionLabel:LYRA_DEFAULT_graphQueryDirectionLabel,graphQueryEndLabel:LYRA_DEFAULT_graphQueryEndLabel,graphQueryHopRangeInvalid:LYRA_DEFAULT_graphQueryHopRangeInvalid,graphQueryLoadWithContext:LYRA_DEFAULT_graphQueryLoadWithContext,graphQueryMaxHopsLabel:LYRA_DEFAULT_graphQueryMaxHopsLabel,graphQueryMinHopsLabel:LYRA_DEFAULT_graphQueryMinHopsLabel,graphQueryNodeTypeLabel:LYRA_DEFAULT_graphQueryNodeTypeLabel,graphQueryRelationshipTypeLabel:LYRA_DEFAULT_graphQueryRelationshipTypeLabel,graphQueryRun:LYRA_DEFAULT_graphQueryRun,graphQuerySaveButton:LYRA_DEFAULT_graphQuerySaveButton,graphQuerySaveNameLabel:LYRA_DEFAULT_graphQuerySaveNameLabel,graphQuerySavedQueriesLabel:LYRA_DEFAULT_graphQuerySavedQueriesLabel,graphQueryStartLabel:LYRA_DEFAULT_graphQueryStartLabel,neighborDirectionBoth:LYRA_DEFAULT_neighborDirectionBoth,neighborDirectionIn:LYRA_DEFAULT_neighborDirectionIn,neighborDirectionOut:LYRA_DEFAULT_neighborDirectionOut,noData:LYRA_DEFAULT_noData,select:LYRA_DEFAULT_select}}static{this.formAssociated=!0}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-input","lr-before-query-run","lr-query-run","lr-before-query-save","lr-query-save","lr-before-query-load","lr-query-load"])}static{this.properties={customError:{attribute:"custom-error",reflect:!0,noAccessor:!0},name:{reflect:!0,noAccessor:!0},value:{attribute:!1,noAccessor:!0},disabled:{type:Boolean,reflect:!0,noAccessor:!0}}}get relationshipTypeOptions(){return this._relationshipTypeOptions}set relationshipTypeOptions(value){const previous=this._relationshipTypeOptions;this._relationshipTypeOptions=normalizeTypeOptions(value),this.requestUpdate("relationshipTypeOptions",previous)}get nodeTypeOptions(){return this._nodeTypeOptions}set nodeTypeOptions(value){const previous=this._nodeTypeOptions;this._nodeTypeOptions=normalizeTypeOptions(value),this.requestUpdate("nodeTypeOptions",previous)}get savedQueries(){return this._savedQueries}set savedQueries(value){const previous=this._savedQueries;this._savedQueries=normalizeSavedQueries(value),this.requestUpdate("savedQueries",previous)}constructor(){super(),this._relationshipTypeOptions=EMPTY_OPTIONS,this._nodeTypeOptions=EMPTY_OPTIONS,this._savedQueries=EMPTY_SAVED,this.hopLimit=6,this.label="",this.hint="",this.errorText="",this._errors={},this.touchedFields=new Set,this.saveName="",this.hasHintSlot=!1,this.hasErrorSlot=!1,this.labelId=nextId("graph-query-builder-label"),this.hintId=nextId("graph-query-builder-hint"),this.errorId=nextId("graph-query-builder-error"),this._fieldsetDisabled=!1,this._name="",this._value=EMPTY_VALUE,this.defaultValue=normalizeGraphQuery(EMPTY_VALUE),this.defaultValueCaptured=!1,this._disabled=!1,this.hasInteracted=!1,this.removalFocusGeneration=0,this.onChromeSlotChange=event=>{const slot=event.currentTarget,hasContent=slot.assignedNodes({flatten:!0}).some(node=>node.nodeType===Node.TEXT_NODE?!!node.textContent?.trim():!0);slot.name==="hint"?this.hasHintSlot=hasContent:slot.name==="error"&&(this.hasErrorSlot=hasContent)},this.internals=attachInternalsSafely(this),this.validityController=new AnchoredValidityController(this,this.internals,()=>this[VALIDITY_ANCHOR]()),installCustomErrorProperty(this,()=>this.validityController.customValidityMessage),installInvalidEventAlias(this,init=>this.emit("lr-invalid",null,init)),this.syncFormState()}disconnectedCallback(){this.removalFocusGeneration++,this.pendingRemovalFocus=void 0,super.disconnectedCallback()}get form(){return getFormOwner(this.internals)}set form(owner){setFormOwner(this,owner)}getForm(){return getFormOwner(this.internals)}get labels(){return this.internals.labels}get validity(){return this.internals.validity}get validationMessage(){return this.internals.validationMessage}get willValidate(){return this.internals.willValidate}get value(){return this._value}set value(next){const old=this._value;this._value=normalizeGraphQuery(next),this.syncFormState(),this.requestUpdate("value",old)}get name(){return this._name}set name(next){const old=this._name;this._name=next??"",this._name?this.setAttribute("name",this._name):this.removeAttribute("name"),this.requestUpdate("name",old)}get disabled(){return this._disabled}set disabled(next){const old=this._disabled;this._disabled=!!next,this.toggleAttribute("disabled",this._disabled),this.validityController&&this.syncFormState(),this.requestUpdate("disabled",old)}get effectiveDisabled(){return this.disabled||this._fieldsetDisabled}get errors(){return this.publicValidityErrors()}publicValidityErrors(){const errors={...this._errors};return this.willValidate&&this.validity.customError&&(errors.base=this.validationMessage),Object.freeze(errors)}publishValiditySnapshot(){if(!this.isConnected)return;const valid=!this.willValidate||this.validity.valid,errors=valid?Object.freeze({}):this.publicValidityErrors(),key=JSON.stringify({valid,errors});key!==this.lastValidityKey&&(this.lastValidityKey=key,this.emit("lr-validity-change",Object.freeze({valid,errors})))}[VALIDITY_ANCHOR](){const firstInvalidPart=Object.keys(this._errors)[0];if(!(!firstInvalidPart||!this.renderRoot))return this.renderRoot.querySelector(`[part="${firstInvalidPart}"]`)??void 0}computeValidation(){const errors={},flags={};return this._value.startId.trim()||(errors["start-input"]=this.localize("fieldRequired"),flags.valueMissing=!0),this._value.minHops>this._value.maxHops&&(errors["max-hops"]=this.localize("graphQueryHopRangeInvalid"),flags.rangeUnderflow=!0),{errors,flags}}syncFormState(){const{errors,flags}=this.computeValidation();this._errors=errors;let formValue=null;try{formValue=JSON.stringify(this._value)}catch{formValue=null}if(this.internals.setFormValue(formValue,formValue),this.barredFromValidation||Object.keys(flags).length===0)this.validityController.setValidity({});else{const message=Object.values(errors)[0]??"";this.validityController.setValidity(flags,message)}this.syncValidityCustomStates(),this.publishValiditySnapshot()}get barredFromValidation(){return isBarredFromValidation(this,this.internals)}syncValidityCustomStates(){syncValidityStates(this.internals,{required:!0,hasInteracted:this.hasInteracted,barred:this.barredFromValidation})}checkValidity(){return this.syncFormState(),this.internals.checkValidity()}reportValidity(){return this.hasInteracted=!0,this.syncFormState(),Object.keys(this._errors).length>0&&(this.touchedFields=new Set([...this.touchedFields,...Object.keys(this._errors)])),this.internals.reportValidity()}setCustomValidity(message){this.validityController.setCustomValidity(message??""),this.syncValidityCustomStates(),this.publishValiditySnapshot(),this.requestUpdate()}formResetCallback(){this.hasInteracted=!1,this.captureDefaultValue(),this.value=this.defaultValue,this.touchedFields=new Set,this.saveName=""}captureDefaultValue(){this.defaultValueCaptured||(this.defaultValue=normalizeGraphQuery(this._value),this.defaultValueCaptured=!0)}formStateRestoreCallback(state2,_mode){let restored=EMPTY_VALUE;if(typeof state2=="string")try{const parsed=JSON.parse(state2);parsed!==null&&typeof parsed=="object"&&!Array.isArray(parsed)&&(restored=normalizeGraphQuery(parsed))}catch{}this.value=restored}formDisabledCallback(disabled){this._fieldsetDisabled=disabled,this.syncFormState(),this.requestUpdate()}get liveDisabled(){return this.effectiveDisabled||this.matches(":disabled")}focusFirstControl(options){if(!this.renderRoot||this.liveDisabled)return;(this.renderRoot.querySelector('[part="start-input"]')||this.renderRoot.querySelector('[part="end-input"]')||this.renderRoot.querySelector('[part="min-hops"]')||this.renderRoot.querySelector('[part="max-hops"]')||this.renderRoot.querySelector('[part="direction"]')||this.renderRoot.querySelector('[part="save-name-input"]'))?.focus(options)}focus(options){this.focusFirstControl(options)}blur(){const active=deepActiveElementIn(this.shadowRoot);active&&typeof active.blur=="function"&&active.blur()}click(){this.focusFirstControl()}setValue(next){this.effectiveDisabled||(this.hasInteracted=!0,this.value=next,this.emit("lr-input",Object.freeze({value:this._value})))}addRelationshipType(type){!type||this._value.relationshipTypes.includes(type)||this.setValue({...this._value,relationshipTypes:[...this._value.relationshipTypes,type]})}removeRelationshipType(type){this.captureChipRemovalFocus("relationship",type,this._value.relationshipTypes),this.setValue({...this._value,relationshipTypes:this._value.relationshipTypes.filter(t=>t!==type)})}addNodeType(type){!type||this._value.nodeTypes.includes(type)||this.setValue({...this._value,nodeTypes:[...this._value.nodeTypes,type]})}removeNodeType(type){this.captureChipRemovalFocus("node-type",type,this._value.nodeTypes),this.setValue({...this._value,nodeTypes:this._value.nodeTypes.filter(t=>t!==type)})}captureChipRemovalFocus(group,value,selected){const active=this.shadowRoot?.activeElement,expectedPart=group==="relationship"?"relationship-chips":"node-type-chips";if(active?.localName!=="lr-chip"||active.getAttribute("value")!==value||active.closest("lr-chip-group")?.getAttribute("part")!==expectedPart)return;const index=selected.indexOf(value),survivors=selected.filter(candidate=>candidate!==value),targetValue=survivors[Math.min(Math.max(index,0),survivors.length-1)];this.pendingRemovalFocus={kind:"chip",group,targetValue},this.removalFocusGeneration++}markTouched(part){this.hasInteracted=!0,this.syncValidityCustomStates(),!this.touchedFields.has(part)&&(this.touchedFields=new Set(this.touchedFields).add(part))}runQuery(){if(this.effectiveDisabled||!this.reportValidity())return;const detail=()=>Object.freeze({query:normalizeGraphQuery(this._value)});this.emit("lr-before-query-run",detail(),{cancelable:!0}).defaultPrevented||this.emit("lr-query-run",detail())}saveQuery(){if(this.effectiveDisabled)return;const name=this.saveName.trim();if(!name)return;const detail=()=>Object.freeze({name,query:normalizeGraphQuery(this._value)});this.emit("lr-before-query-save",detail(),{cancelable:!0}).defaultPrevented||(this.saveName="",this.emit("lr-query-save",detail()))}loadQuery(item){if(this.effectiveDisabled)return;const detail=()=>Object.freeze({queryId:item.id,query:normalizeGraphQuery(item.query)});this.emit("lr-before-query-load",detail(),{cancelable:!0}).defaultPrevented||(this.setValue({...EMPTY_VALUE,...item.query}),this.emit("lr-query-load",detail()))}deleteQuery(item){if(this.effectiveDisabled)return;const detail=()=>Object.freeze({queryId:item.id});this.emit("lr-before-query-delete",detail(),{cancelable:!0}).defaultPrevented||this.emit("lr-query-delete",detail())}willUpdate(changed){if(super.willUpdate(changed),this.hasUpdated||this.captureDefaultValue(),!changed.has("savedQueries"))return;const active=this.shadowRoot?.activeElement;if(active?.getAttribute("part")!=="saved-delete-button")return;const focusedId=active.closest("[data-query-id]")?.dataset.queryId;if(!focusedId||this.savedQueries.some(item=>item.id===focusedId))return;const index=(changed.get("savedQueries")??[]).findIndex(item=>item.id===focusedId),target=this.savedQueries[Math.min(Math.max(index,0),this.savedQueries.length-1)];this.pendingRemovalFocus={kind:"saved",targetId:target?.id},this.removalFocusGeneration++}updated(changed){super.updated(changed),this.publishValiditySnapshot();const pending=this.pendingRemovalFocus;if(!pending)return;this.pendingRemovalFocus=void 0;const generation=this.removalFocusGeneration;this.scheduleAfterUpdate(()=>{if(!(generation!==this.removalFocusGeneration||!this.isConnected)){if(pending.kind==="chip"){if(pending.targetValue){const part=pending.group==="relationship"?"relationship-chips":"node-type-chips",chip=[...this.shadowRoot?.querySelectorAll(`[part="${part}"] lr-chip`)??[]].find(candidate=>candidate.getAttribute("value")===pending.targetValue);if(chip){chip.focus();return}}const pickerPart=pending.group==="relationship"?"relationship-picker":"node-type-picker";this.shadowRoot?.querySelector(`[part="${pickerPart}"]`)?.focus();return}if(pending.targetId){const action=[...this.shadowRoot?.querySelectorAll("[data-query-id]")??[]].find(candidate=>candidate.dataset.queryId===pending.targetId)?.querySelector('[part="saved-delete-button"]');if(action){action.focus();return}}this.shadowRoot?.querySelector('[part="save-name-input"]')?.focus()}},"graph-query-removal-focus")}hopOptions(){const limit=finiteInteger(this.hopLimit,6,1,20),options=new Set(Array.from({length:limit},(_,i)=>i+1));return options.add(this._value.minHops),options.add(this._value.maxHops),[...options].sort((a,b)=>a-b)}labelForType(options,value){return options.find(o=>o.value===value)?.label??value}renderTypeFilter(kind,options,selected,add,remove,disabled){const pickerPart=kind==="relationship"?"relationship-picker":"node-type-picker",chipsPart=kind==="relationship"?"relationship-chips":"node-type-chips",pickerLabel=kind==="relationship"?this.localize("graphQueryRelationshipTypeLabel"):this.localize("graphQueryNodeTypeLabel"),available=options.filter(o=>!selected.includes(o.value));return html`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{installFormControlLabelSupport}from"../../../internal/form-control-labels.js";installFormControlLabelSupport();import{closeIcon}from"../../../internal/icons.js";import{AnchoredValidityController,VALIDITY_ANCHOR}from"../../../internal/anchored-validity.js";import{syncValidityStates}from"../../../internal/custom-states.js";import{finiteInteger}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{nextId}from"../../../internal/a11y.js";import{activeElementIn,deepActiveElementIn}from"../../../internal/active-element.js";import{styles}from"./graph-query-builder.styles.js";import{attachInternalsSafely}from"../../../internal/element-internals.js";import{getFormOwner,installCustomErrorProperty,isBarredFromValidation,setFormOwner}from"../../../internal/form-associated.js";import{installInvalidEventAlias}from"../../../internal/invalid-event-alias.js";import{LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_graphQueryBuilderLabel,LYRA_DEFAULT_graphQueryDeleteWithContext,LYRA_DEFAULT_graphQueryDirectionLabel,LYRA_DEFAULT_graphQueryEndLabel,LYRA_DEFAULT_graphQueryHopRangeInvalid,LYRA_DEFAULT_graphQueryLoadWithContext,LYRA_DEFAULT_graphQueryMaxHopsLabel,LYRA_DEFAULT_graphQueryMinHopsLabel,LYRA_DEFAULT_graphQueryNodeTypeLabel,LYRA_DEFAULT_graphQueryRelationshipTypeLabel,LYRA_DEFAULT_graphQueryRun,LYRA_DEFAULT_graphQuerySaveButton,LYRA_DEFAULT_graphQuerySaveNameLabel,LYRA_DEFAULT_graphQuerySavedQueriesLabel,LYRA_DEFAULT_graphQueryStartLabel,LYRA_DEFAULT_neighborDirectionBoth,LYRA_DEFAULT_neighborDirectionIn,LYRA_DEFAULT_neighborDirectionOut,LYRA_DEFAULT_noData,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const MAX_TYPES=500,MAX_SAVED_QUERIES=200,MAX_TEXT=256,EMPTY_STRINGS=Object.freeze([]),EMPTY_VALUE=Object.freeze({startId:"",endId:"",relationshipTypes:EMPTY_STRINGS,nodeTypes:EMPTY_STRINGS,direction:"both",minHops:1,maxHops:1}),EMPTY_OPTIONS=Object.freeze([]),EMPTY_SAVED=Object.freeze([]);function ownValue(record,key){try{const descriptor=Object.getOwnPropertyDescriptor(record,key);return descriptor&&"value"in descriptor?descriptor.value:void 0}catch{return}}function boundedString(value){return typeof value=="string"?value.slice(0,MAX_TEXT):""}function stringArray(value){return Array.isArray(value)?Object.freeze([...new Set(value.slice(0,MAX_TYPES).filter(entry=>typeof entry=="string").map(entry=>boundedString(entry)).filter(Boolean))]):EMPTY_STRINGS}function normalizeGraphQuery(value){const record=value!==null&&typeof value=="object"&&!Array.isArray(value)?value:EMPTY_VALUE,direction=ownValue(record,"direction");return Object.freeze({startId:boundedString(ownValue(record,"startId")),endId:boundedString(ownValue(record,"endId")),relationshipTypes:stringArray(ownValue(record,"relationshipTypes")),nodeTypes:stringArray(ownValue(record,"nodeTypes")),direction:direction==="out"||direction==="in"||direction==="both"?direction:"both",minHops:finiteInteger(typeof ownValue(record,"minHops")=="number"?ownValue(record,"minHops"):EMPTY_VALUE.minHops,EMPTY_VALUE.minHops,1,20),maxHops:finiteInteger(typeof ownValue(record,"maxHops")=="number"?ownValue(record,"maxHops"):EMPTY_VALUE.maxHops,EMPTY_VALUE.maxHops,1,20)})}function normalizeTypeOptions(value){if(!Array.isArray(value))return EMPTY_OPTIONS;const values=new Set,result=[];for(const candidate of value.slice(0,MAX_TYPES)){if(candidate===null||typeof candidate!="object"||Array.isArray(candidate))continue;const optionValue=boundedString(ownValue(candidate,"value"));if(optionValue.trim().length===0||values.has(optionValue))continue;values.add(optionValue);const label=boundedString(ownValue(candidate,"label"));result.push(Object.freeze({value:optionValue,...label?{label}:{}}))}return Object.freeze(result)}function normalizeSavedQueries(value){if(!Array.isArray(value))return EMPTY_SAVED;const ids=new Set,result=[];for(const candidate of value.slice(0,MAX_SAVED_QUERIES)){if(candidate===null||typeof candidate!="object"||Array.isArray(candidate))continue;const id=boundedString(ownValue(candidate,"id"));id.trim().length===0||ids.has(id)||(ids.add(id),result.push(Object.freeze({id,name:boundedString(ownValue(candidate,"name")),query:normalizeGraphQuery(ownValue(candidate,"query"))})))}return Object.freeze(result)}class LyraGraphQueryBuilder extends LyraElement{static{this.defaultStrings={...super.defaultStrings,fieldRequired:LYRA_DEFAULT_fieldRequired,graphQueryBuilderLabel:LYRA_DEFAULT_graphQueryBuilderLabel,graphQueryDeleteWithContext:LYRA_DEFAULT_graphQueryDeleteWithContext,graphQueryDirectionLabel:LYRA_DEFAULT_graphQueryDirectionLabel,graphQueryEndLabel:LYRA_DEFAULT_graphQueryEndLabel,graphQueryHopRangeInvalid:LYRA_DEFAULT_graphQueryHopRangeInvalid,graphQueryLoadWithContext:LYRA_DEFAULT_graphQueryLoadWithContext,graphQueryMaxHopsLabel:LYRA_DEFAULT_graphQueryMaxHopsLabel,graphQueryMinHopsLabel:LYRA_DEFAULT_graphQueryMinHopsLabel,graphQueryNodeTypeLabel:LYRA_DEFAULT_graphQueryNodeTypeLabel,graphQueryRelationshipTypeLabel:LYRA_DEFAULT_graphQueryRelationshipTypeLabel,graphQueryRun:LYRA_DEFAULT_graphQueryRun,graphQuerySaveButton:LYRA_DEFAULT_graphQuerySaveButton,graphQuerySaveNameLabel:LYRA_DEFAULT_graphQuerySaveNameLabel,graphQuerySavedQueriesLabel:LYRA_DEFAULT_graphQuerySavedQueriesLabel,graphQueryStartLabel:LYRA_DEFAULT_graphQueryStartLabel,neighborDirectionBoth:LYRA_DEFAULT_neighborDirectionBoth,neighborDirectionIn:LYRA_DEFAULT_neighborDirectionIn,neighborDirectionOut:LYRA_DEFAULT_neighborDirectionOut,noData:LYRA_DEFAULT_noData,select:LYRA_DEFAULT_select}}static{this.formAssociated=!0}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-input","lr-before-query-run","lr-query-run","lr-before-query-save","lr-query-save","lr-before-query-load","lr-query-load"])}static{this.properties={customError:{attribute:"custom-error",reflect:!0,noAccessor:!0},name:{reflect:!0,noAccessor:!0},value:{attribute:!1,noAccessor:!0},disabled:{type:Boolean,reflect:!0,noAccessor:!0}}}get relationshipTypeOptions(){return this._relationshipTypeOptions}set relationshipTypeOptions(value){const previous=this._relationshipTypeOptions;this._relationshipTypeOptions=normalizeTypeOptions(value),this.requestUpdate("relationshipTypeOptions",previous)}get nodeTypeOptions(){return this._nodeTypeOptions}set nodeTypeOptions(value){const previous=this._nodeTypeOptions;this._nodeTypeOptions=normalizeTypeOptions(value),this.requestUpdate("nodeTypeOptions",previous)}get savedQueries(){return this._savedQueries}set savedQueries(value){const previous=this._savedQueries;this._savedQueries=normalizeSavedQueries(value),this.requestUpdate("savedQueries",previous)}constructor(){super(),this._relationshipTypeOptions=EMPTY_OPTIONS,this._nodeTypeOptions=EMPTY_OPTIONS,this._savedQueries=EMPTY_SAVED,this.hopLimit=6,this.label="",this.hint="",this.errorText="",this._errors={},this.touchedFields=new Set,this.saveName="",this.hasHintSlot=!1,this.hasErrorSlot=!1,this.labelId=nextId("graph-query-builder-label"),this.hintId=nextId("graph-query-builder-hint"),this.errorId=nextId("graph-query-builder-error"),this._fieldsetDisabled=!1,this._name="",this._value=EMPTY_VALUE,this.defaultValue=normalizeGraphQuery(EMPTY_VALUE),this.defaultValueCaptured=!1,this._disabled=!1,this.hasInteracted=!1,this.removalFocusGeneration=0,this.onChromeSlotChange=event=>{const slot=event.currentTarget,hasContent=slot.assignedNodes({flatten:!0}).some(node=>node.nodeType===Node.TEXT_NODE?!!node.textContent?.trim():!0);slot.name==="hint"?this.hasHintSlot=hasContent:slot.name==="error"&&(this.hasErrorSlot=hasContent)},this.internals=attachInternalsSafely(this),this.validityController=new AnchoredValidityController(this,this.internals,()=>this[VALIDITY_ANCHOR]()),installCustomErrorProperty(this,()=>this.validityController.customValidityMessage),installInvalidEventAlias(this,init=>this.emit("lr-invalid",null,init)),this.syncFormState()}disconnectedCallback(){this.removalFocusGeneration++,this.pendingRemovalFocus=void 0,super.disconnectedCallback()}get form(){return getFormOwner(this.internals)}set form(owner){setFormOwner(this,owner)}getForm(){return getFormOwner(this.internals)}get labels(){return this.internals.labels}get validity(){return this.internals.validity}get validationMessage(){return this.internals.validationMessage}get willValidate(){return this.internals.willValidate}get value(){return this._value}set value(next){const old=this._value;this._value=normalizeGraphQuery(next),this.syncFormState(),this.requestUpdate("value",old)}get name(){return this._name}set name(next){const old=this._name;this._name=next??"",this._name?this.setAttribute("name",this._name):this.removeAttribute("name"),this.requestUpdate("name",old)}get disabled(){return this._disabled}set disabled(next){const old=this._disabled;this._disabled=!!next,this.toggleAttribute("disabled",this._disabled),this.validityController&&this.syncFormState(),this.requestUpdate("disabled",old)}get effectiveDisabled(){return this.disabled||this._fieldsetDisabled}get errors(){return this.publicValidityErrors()}publicValidityErrors(){const errors={...this._errors};return this.willValidate&&this.validity.customError&&(errors.base=this.validationMessage),Object.freeze(errors)}publishValiditySnapshot(){if(!this.isConnected)return;const valid=!this.willValidate||this.validity.valid,errors=valid?Object.freeze({}):this.publicValidityErrors(),key=JSON.stringify({valid,errors});key!==this.lastValidityKey&&(this.lastValidityKey=key,this.emit("lr-validity-change",Object.freeze({valid,errors})))}[VALIDITY_ANCHOR](){const firstInvalidPart=Object.keys(this._errors)[0];if(!(!firstInvalidPart||!this.renderRoot))return this.renderRoot.querySelector(`[part="${firstInvalidPart}"]`)??void 0}computeValidation(){const errors={},flags={};return this._value.startId.trim()||(errors["start-input"]=this.localize("fieldRequired"),flags.valueMissing=!0),this._value.minHops>this._value.maxHops&&(errors["max-hops"]=this.localize("graphQueryHopRangeInvalid"),flags.rangeUnderflow=!0),{errors,flags}}syncFormState(){const{errors,flags}=this.computeValidation();this._errors=errors;let formValue=null;try{formValue=JSON.stringify(this._value)}catch{formValue=null}if(this.internals.setFormValue(formValue,formValue),this.barredFromValidation||Object.keys(flags).length===0)this.validityController.setValidity({});else{const message=Object.values(errors)[0]??"";this.validityController.setValidity(flags,message)}this.syncValidityCustomStates(),this.publishValiditySnapshot()}get barredFromValidation(){return isBarredFromValidation(this,this.internals)}syncValidityCustomStates(){syncValidityStates(this.internals,{required:!0,hasInteracted:this.hasInteracted,barred:this.barredFromValidation})}checkValidity(){return this.syncFormState(),this.internals.checkValidity()}reportValidity(){return this.hasInteracted=!0,this.syncFormState(),Object.keys(this._errors).length>0&&(this.touchedFields=new Set([...this.touchedFields,...Object.keys(this._errors)])),this.internals.reportValidity()}setCustomValidity(message){this.validityController.setCustomValidity(message??""),this.syncValidityCustomStates(),this.publishValiditySnapshot(),this.requestUpdate()}formResetCallback(){this.hasInteracted=!1,this.captureDefaultValue(),this.value=this.defaultValue,this.touchedFields=new Set,this.saveName=""}captureDefaultValue(){this.defaultValueCaptured||(this.defaultValue=normalizeGraphQuery(this._value),this.defaultValueCaptured=!0)}formStateRestoreCallback(state2,_mode){let restored=EMPTY_VALUE;if(typeof state2=="string")try{const parsed=JSON.parse(state2);parsed!==null&&typeof parsed=="object"&&!Array.isArray(parsed)&&(restored=normalizeGraphQuery(parsed))}catch{}this.value=restored}formDisabledCallback(disabled){this._fieldsetDisabled=disabled,this.syncFormState(),this.requestUpdate()}get liveDisabled(){return this.effectiveDisabled||this.matches(":disabled")}focusFirstControl(options){if(!this.renderRoot||this.liveDisabled)return;(this.renderRoot.querySelector('[part="start-input"]')||this.renderRoot.querySelector('[part="end-input"]')||this.renderRoot.querySelector('[part="min-hops"]')||this.renderRoot.querySelector('[part="max-hops"]')||this.renderRoot.querySelector('[part="direction"]')||this.renderRoot.querySelector('[part="save-name-input"]'))?.focus(options)}focus(options){this.focusFirstControl(options)}blur(){const active=deepActiveElementIn(this.shadowRoot);active&&typeof active.blur=="function"&&active.blur()}click(){this.focusFirstControl()}setValue(next){this.effectiveDisabled||(this.hasInteracted=!0,this.value=next,this.emit("lr-input",Object.freeze({value:this._value})))}addRelationshipType(type){!type||this._value.relationshipTypes.includes(type)||this.setValue({...this._value,relationshipTypes:[...this._value.relationshipTypes,type]})}removeRelationshipType(type){this.captureChipRemovalFocus("relationship",type,this._value.relationshipTypes),this.setValue({...this._value,relationshipTypes:this._value.relationshipTypes.filter(t=>t!==type)})}addNodeType(type){!type||this._value.nodeTypes.includes(type)||this.setValue({...this._value,nodeTypes:[...this._value.nodeTypes,type]})}removeNodeType(type){this.captureChipRemovalFocus("node-type",type,this._value.nodeTypes),this.setValue({...this._value,nodeTypes:this._value.nodeTypes.filter(t=>t!==type)})}captureChipRemovalFocus(group,value,selected){const active=activeElementIn(this.shadowRoot),expectedPart=group==="relationship"?"relationship-chips":"node-type-chips";if(active?.localName!=="lr-chip"||active.getAttribute("value")!==value||active.closest("lr-chip-group")?.getAttribute("part")!==expectedPart)return;const index=selected.indexOf(value),survivors=selected.filter(candidate=>candidate!==value),targetValue=survivors[Math.min(Math.max(index,0),survivors.length-1)];this.pendingRemovalFocus={kind:"chip",group,targetValue},this.removalFocusGeneration++}markTouched(part){this.hasInteracted=!0,this.syncValidityCustomStates(),!this.touchedFields.has(part)&&(this.touchedFields=new Set(this.touchedFields).add(part))}runQuery(){if(this.effectiveDisabled||!this.reportValidity())return;const detail=()=>Object.freeze({query:normalizeGraphQuery(this._value)});this.emit("lr-before-query-run",detail(),{cancelable:!0}).defaultPrevented||this.emit("lr-query-run",detail())}saveQuery(){if(this.effectiveDisabled)return;const name=this.saveName.trim();if(!name)return;const detail=()=>Object.freeze({name,query:normalizeGraphQuery(this._value)});this.emit("lr-before-query-save",detail(),{cancelable:!0}).defaultPrevented||(this.saveName="",this.emit("lr-query-save",detail()))}loadQuery(item){if(this.effectiveDisabled)return;const detail=()=>Object.freeze({queryId:item.id,query:normalizeGraphQuery(item.query)});this.emit("lr-before-query-load",detail(),{cancelable:!0}).defaultPrevented||(this.setValue({...EMPTY_VALUE,...item.query}),this.emit("lr-query-load",detail()))}deleteQuery(item){if(this.effectiveDisabled)return;const detail=()=>Object.freeze({queryId:item.id});this.emit("lr-before-query-delete",detail(),{cancelable:!0}).defaultPrevented||this.emit("lr-query-delete",detail())}willUpdate(changed){if(super.willUpdate(changed),this.hasUpdated||this.captureDefaultValue(),!changed.has("savedQueries"))return;const active=activeElementIn(this.shadowRoot);if(active?.getAttribute("part")!=="saved-delete-button")return;const focusedId=active.closest("[data-query-id]")?.dataset.queryId;if(!focusedId||this.savedQueries.some(item=>item.id===focusedId))return;const index=(changed.get("savedQueries")??[]).findIndex(item=>item.id===focusedId),target=this.savedQueries[Math.min(Math.max(index,0),this.savedQueries.length-1)];this.pendingRemovalFocus={kind:"saved",targetId:target?.id},this.removalFocusGeneration++}updated(changed){super.updated(changed),this.publishValiditySnapshot();const pending=this.pendingRemovalFocus;if(!pending)return;this.pendingRemovalFocus=void 0;const generation=this.removalFocusGeneration;this.scheduleAfterUpdate(()=>{if(!(generation!==this.removalFocusGeneration||!this.isConnected)){if(pending.kind==="chip"){if(pending.targetValue){const part=pending.group==="relationship"?"relationship-chips":"node-type-chips",chip=[...this.shadowRoot?.querySelectorAll(`[part="${part}"] lr-chip`)??[]].find(candidate=>candidate.getAttribute("value")===pending.targetValue);if(chip){chip.focus();return}}const pickerPart=pending.group==="relationship"?"relationship-picker":"node-type-picker";this.shadowRoot?.querySelector(`[part="${pickerPart}"]`)?.focus();return}if(pending.targetId){const action=[...this.shadowRoot?.querySelectorAll("[data-query-id]")??[]].find(candidate=>candidate.dataset.queryId===pending.targetId)?.querySelector('[part="saved-delete-button"]');if(action){action.focus();return}}this.shadowRoot?.querySelector('[part="save-name-input"]')?.focus()}},"graph-query-removal-focus")}hopOptions(){const limit=finiteInteger(this.hopLimit,6,1,20),options=new Set(Array.from({length:limit},(_,i)=>i+1));return options.add(this._value.minHops),options.add(this._value.maxHops),[...options].sort((a,b)=>a-b)}labelForType(options,value){return options.find(o=>o.value===value)?.label??value}containSelectEvent(event){event.stopPropagation()}renderTypeFilter(kind,options,selected,add,remove,disabled){const pickerPart=kind==="relationship"?"relationship-picker":"node-type-picker",chipsPart=kind==="relationship"?"relationship-chips":"node-type-chips",pickerLabel=kind==="relationship"?this.localize("graphQueryRelationshipTypeLabel"):this.localize("graphQueryNodeTypeLabel"),available=options.filter(o=>!selected.includes(o.value));return html`
|
|
2
2
|
<div part="filter-group" data-kind=${kind}>
|
|
3
3
|
<lr-select
|
|
4
4
|
part=${pickerPart}
|
|
@@ -62,6 +62,13 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
62
62
|
label=${this.localize("graphQueryMinHopsLabel")}
|
|
63
63
|
.value=${String(value.minHops)}
|
|
64
64
|
?disabled=${disabled}
|
|
65
|
+
@input=${this.containSelectEvent}
|
|
66
|
+
@lr-input=${this.containSelectEvent}
|
|
67
|
+
@lr-change=${this.containSelectEvent}
|
|
68
|
+
@lr-show=${this.containSelectEvent}
|
|
69
|
+
@lr-after-show=${this.containSelectEvent}
|
|
70
|
+
@lr-hide=${this.containSelectEvent}
|
|
71
|
+
@lr-after-hide=${this.containSelectEvent}
|
|
65
72
|
@change=${e=>{e.stopPropagation(),this.setValue({...value,minHops:Number(e.target.value)})}}
|
|
66
73
|
>
|
|
67
74
|
${hops.map(n=>html`<lr-option value=${String(n)}>${hopNumber.format(n)}</lr-option>`)}
|
|
@@ -72,6 +79,13 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
72
79
|
.value=${String(value.maxHops)}
|
|
73
80
|
error-text=${hasHopError?this._errors["max-hops"]:""}
|
|
74
81
|
?disabled=${disabled}
|
|
82
|
+
@input=${this.containSelectEvent}
|
|
83
|
+
@lr-input=${this.containSelectEvent}
|
|
84
|
+
@lr-change=${this.containSelectEvent}
|
|
85
|
+
@lr-show=${this.containSelectEvent}
|
|
86
|
+
@lr-after-show=${this.containSelectEvent}
|
|
87
|
+
@lr-hide=${this.containSelectEvent}
|
|
88
|
+
@lr-after-hide=${this.containSelectEvent}
|
|
75
89
|
@change=${e=>{e.stopPropagation(),this.setValue({...value,maxHops:Number(e.target.value)})}}
|
|
76
90
|
>
|
|
77
91
|
${hops.map(n=>html`<lr-option value=${String(n)}>${hopNumber.format(n)}</lr-option>`)}
|
|
@@ -119,7 +119,7 @@ export declare function normalizeBucketCount(bucketCount:number):number;
|
|
|
119
119
|
* normalizes through that instead. Assigning an unparsable string to
|
|
120
120
|
* `fillStyle` is a spec'd no-op (the previous value is kept, it never
|
|
121
121
|
* throws), so a sentinel round-trip is used to detect that case and fall
|
|
122
|
-
* back to `fallbackHex` (with a one-time
|
|
122
|
+
* back to `fallbackHex` (with a one-time development diagnostic) instead of
|
|
123
123
|
* silently drawing the wrong color.
|
|
124
124
|
*/
|
|
125
125
|
export declare function resolveRgb(color:string,fallbackHex:string,ownerDocument?:Document):[number,number,number,number];export type LyraHeatmapCellClickDetail={date:string;value:number;}|{row:number;col:number;value:number;};export type LyraHeatmapMatrixGeometryChangeDetail={padLeft:number;padTop:number;cellSize:number;};export interface LyraHeatmapEventMap{'lr-cell-click':CustomEvent<LyraHeatmapCellClickDetail>;'lr-matrix-geometry-change':CustomEvent<LyraHeatmapMatrixGeometryChangeDetail>;}
|
|
@@ -154,7 +154,8 @@ export declare function resolveRgb(color:string,fallbackHex:string,ownerDocument
|
|
|
154
154
|
* `heatmap.styles.ts`) so hosts can retheme it — canvas can't consume
|
|
155
155
|
* `var()` directly, so they're resolved once per draw via
|
|
156
156
|
* `getComputedStyle`, then normalized to RGB by `resolveRgb()` (any valid
|
|
157
|
-
* CSS color syntax, not just hex — see its doc comment).
|
|
157
|
+
* CSS color syntax, not just hex — see its doc comment). Invalid authored colors keep the
|
|
158
|
+
* default ramp endpoint and issue a deduplicated diagnostic only in development.
|
|
158
159
|
*
|
|
159
160
|
* Every cell is independently addressable: a `pointermove` hit test over the
|
|
160
161
|
* canvas shows `[part="tooltip"]` with that cell's label + value (hidden on
|
|
@@ -165,7 +166,8 @@ export declare function resolveRgb(color:string,fallbackHex:string,ownerDocument
|
|
|
165
166
|
* calendar); and a click, or Enter/Space on the focused cell, fires
|
|
166
167
|
* `lr-cell-click`. `annotations` additionally strokes a ring around
|
|
167
168
|
* specific cells (e.g. to call out an anomaly), each one optionally
|
|
168
|
-
* surfaced in the legend too via `[part="legend-annotation"]`.
|
|
169
|
+
* surfaced in the legend too via `[part="legend-annotation"]`. Focus-only updates restore
|
|
170
|
+
* intersected neighboring fills and overlays without redrawing the entire canvas.
|
|
169
171
|
*
|
|
170
172
|
* Both grid modes deliberately retain physical LTR geometry under `dir="rtl"`:
|
|
171
173
|
* matrix column 0 and calendar week 0 remain at the physical left. ArrowLeft
|
|
@@ -477,6 +479,7 @@ midpoint?:number;
|
|
|
477
479
|
* signed, at which point silently dropping the whole negative half (32.7% of cells in the report
|
|
478
480
|
* that prompted this) is the defect, not the feature. In signed mode only a non-finite value is
|
|
479
481
|
* no-data; an absent matrix cell reads as `NaN`, so it stays no-data in both modes.
|
|
482
|
+
* Live domain or midpoint changes refresh this sentinel without requiring replacement data.
|
|
480
483
|
*/
|
|
481
484
|
private get signedDomain();
|
|
482
485
|
/** Ramp position in `[0, 1]` for `value`, midpoint-anchored when `midpoint` is set. Every fill
|
|
@@ -868,7 +871,7 @@ private paintCalendarAxisLabels;private drawCalendar;
|
|
|
868
871
|
* below (`hitTestMatrix()`, `cellRect()`) so they always agree on exactly
|
|
869
872
|
* the same geometry as what's actually painted.
|
|
870
873
|
*/
|
|
871
|
-
private matrixCellSize;private paintMatrixCell;private paintMatrixFocusOverlays;private repaintMatrixFocusCell;private paintCalendarCell;private paintCalendarFocusOverlays;private repaintCalendarFocusCell;private drawMatrix;
|
|
874
|
+
private matrixCellSize;private paintMatrixCell;private paintMatrixFocusOverlays;private focusRepaintBounds;private repaintMatrixFocusCell;private paintCalendarCell;private paintCalendarFocusOverlays;private repaintCalendarFocusCell;private drawMatrix;
|
|
872
875
|
/** Paints the row-label gutter at `x = 0 .. padLeft`. Extracted so the cell canvas and a frozen
|
|
873
876
|
* `[part="row-labels"]` band paint from one routine and one set of geometry arguments — the
|
|
874
877
|
* band's own canvas shares the cell canvas's origin, so "aligned" is what the same coordinates
|