@aceshooting/lyra-ui 16.0.0 → 17.0.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 +504 -0
- package/custom-elements.json +1 -1
- package/dist/cli/migration-contract.json +1 -1
- package/dist/components/agent-tools/browser-frame/browser-frame.class.d.ts +3 -3
- package/dist/components/agent-tools/browser-frame/browser-frame.class.js +2 -2
- package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +2 -2
- package/dist/components/agent-tools/compare-panel/compare-panel.class.js +3 -3
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts +37 -13
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
- package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +4 -0
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +2 -2
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +3 -3
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +117 -17
- package/dist/components/charts/chart/chart.class.js +3 -3
- package/dist/components/charts/chart/histogram-bin.d.ts +5 -1
- package/dist/components/charts/chart/histogram-bin.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +9 -0
- package/dist/components/conversation/code-block/code-block.styles.js +1 -1
- package/dist/components/conversation/message-actions/message-actions.styles.js +1 -1
- package/dist/components/conversation/model-select/model-select.class.d.ts +13 -4
- package/dist/components/conversation/model-select/model-select.class.js +2 -1
- package/dist/components/conversation/model-select/model-select.styles.js +1 -1
- package/dist/components/conversation/streaming-text/streaming-text-base.class.d.ts +40 -2
- package/dist/components/conversation/streaming-text/streaming-text-base.class.js +2 -2
- package/dist/components/conversation/streaming-text/streaming-text-core.class.d.ts +5 -3
- package/dist/components/conversation/streaming-text/streaming-text-core.class.js +10 -0
- package/dist/components/conversation/streaming-text/streaming-text.class.d.ts +9 -3
- package/dist/components/conversation/streaming-text/streaming-text.class.js +10 -0
- package/dist/components/conversation/suggestion-chips/suggestion-chips.class.d.ts +30 -2
- package/dist/components/conversation/suggestion-chips/suggestion-chips.class.js +4 -3
- package/dist/components/conversation/suggestion-chips/suggestion-chips.styles.js +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
- package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.js +1 -1
- package/dist/components/conversation/usage-badge/usage-badge.class.d.ts +4 -0
- package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +16 -4
- package/dist/components/conversation/voice-picker/voice-picker.class.js +2 -1
- package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
- package/dist/components/data/context-meter/context-meter.class.d.ts +23 -4
- package/dist/components/data/context-meter/context-meter.class.js +10 -7
- package/dist/components/data/context-meter/context-meter.styles.js +1 -1
- package/dist/components/data/data-grid/data-grid.class.d.ts +5 -2
- package/dist/components/data/data-grid/data-grid.class.js +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +32 -5
- package/dist/components/data/flow-canvas/flow-canvas.class.js +3 -1
- 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 +10 -1
- package/dist/components/data/gauge/gauge.class.d.ts +15 -2
- package/dist/components/data/gauge/gauge.class.js +20 -20
- package/dist/components/data/gauge/gauge.styles.js +1 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +14 -5
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +2 -2
- package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +28 -2
- package/dist/components/data/sequence-strip/sequence-strip.class.js +3 -2
- package/dist/components/data/sequence-strip/sequence-strip.styles.js +1 -1
- package/dist/components/data/table/table.class.d.ts +155 -30
- package/dist/components/data/table/table.class.js +6 -4
- package/dist/components/data/table/table.styles.js +1 -1
- package/dist/components/data/timeline/timeline-item.class.d.ts +9 -1
- package/dist/components/data/timeline/timeline-item.class.js +2 -2
- package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
- package/dist/components/data/word-cloud/word-cloud.styles.js +1 -1
- package/dist/components/forms/button/button.class.d.ts +30 -1
- package/dist/components/forms/button/button.class.js +2 -2
- package/dist/components/forms/checkbox/checkbox.class.d.ts +8 -6
- package/dist/components/forms/checkbox/checkbox.class.js +2 -2
- package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +7 -5
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/color-picker/color-picker.class.d.ts +16 -2
- package/dist/components/forms/color-picker/color-picker.class.js +2 -2
- package/dist/components/forms/color-picker/color-picker.styles.js +1 -1
- package/dist/components/forms/combobox/combobox.class.d.ts +43 -8
- package/dist/components/forms/combobox/combobox.class.js +2 -2
- package/dist/components/forms/date-picker/date-input.class.d.ts +4 -0
- package/dist/components/forms/date-picker/date-input.class.js +1 -1
- package/dist/components/forms/icon-button/icon-button.class.d.ts +20 -3
- package/dist/components/forms/icon-button/icon-button.class.js +1 -1
- package/dist/components/forms/icon-button/icon-button.styles.js +1 -1
- package/dist/components/forms/input/input.class.d.ts +5 -2
- package/dist/components/forms/input/input.class.js +1 -1
- package/dist/components/forms/input/time-input.class.d.ts +4 -0
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +11 -5
- package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
- package/dist/components/forms/otp-input/otp-input.class.d.ts +7 -2
- package/dist/components/forms/otp-input/otp-input.class.js +2 -2
- package/dist/components/forms/radio/radio-button.class.d.ts +2 -1
- package/dist/components/forms/radio/radio-group.class.d.ts +9 -4
- package/dist/components/forms/radio/radio-group.class.js +1 -1
- package/dist/components/forms/radio/radio.class.d.ts +13 -7
- package/dist/components/forms/radio/radio.class.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +16 -6
- package/dist/components/forms/rubric-form/rubric-form.class.js +2 -2
- package/dist/components/forms/select/select.class.d.ts +19 -8
- package/dist/components/forms/select/select.class.js +2 -2
- package/dist/components/forms/slider/slider.class.d.ts +4 -2
- package/dist/components/forms/slider/slider.class.js +1 -1
- package/dist/components/forms/switch/switch.class.d.ts +8 -6
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/textarea/textarea.class.d.ts +5 -3
- package/dist/components/forms/textarea/textarea.class.js +1 -1
- package/dist/components/forms/time-range/time-range.class.d.ts +12 -7
- package/dist/components/forms/time-range/time-range.class.js +1 -1
- package/dist/components/forms/time-range/time-range.styles.js +1 -1
- package/dist/components/forms/token-input/token-input.class.d.ts +6 -4
- package/dist/components/forms/token-input/token-input.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail-item.class.d.ts +109 -4
- package/dist/components/layout/app-rail/app-rail-item.class.js +34 -29
- package/dist/components/layout/app-rail/app-rail-item.styles.js +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +25 -3
- package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
- package/dist/components/layout/app-rail-group/app-rail-group.class.d.ts +2 -2
- package/dist/components/layout/app-rail-group/app-rail-group.class.js +2 -2
- package/dist/components/layout/carousel/carousel.class.d.ts +1 -1
- package/dist/components/layout/carousel/carousel.class.js +1 -1
- package/dist/components/layout/details/accordion.class.d.ts +2 -2
- package/dist/components/layout/details/accordion.class.js +2 -2
- package/dist/components/layout/filter-bar/filter-bar-register.d.ts +1 -0
- package/dist/components/layout/filter-bar/filter-bar-register.js +1 -0
- package/dist/components/layout/filter-bar/filter-bar.class.d.ts +85 -10
- package/dist/components/layout/filter-bar/filter-bar.class.js +7 -4
- package/dist/components/layout/menu/menu-item.class.d.ts +3 -3
- package/dist/components/layout/menu/menu-item.class.js +3 -3
- package/dist/components/layout/menu/menu.class.d.ts +5 -1
- package/dist/components/layout/menu/menu.class.js +2 -2
- package/dist/components/layout/reorder-list/reorder-item.styles.js +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
- package/dist/components/media/attachment-trigger/attachment-trigger.styles.js +1 -1
- package/dist/components/media/avatar-group/avatar-group.class.d.ts +12 -1
- package/dist/components/media/avatar-group/avatar-group.class.js +2 -2
- package/dist/components/media/drop-zone/drop-zone.class.d.ts +32 -11
- package/dist/components/media/drop-zone/drop-zone.class.js +2 -2
- package/dist/components/media/file-input/file-input.class.d.ts +40 -19
- package/dist/components/media/file-input/file-input.class.js +2 -2
- package/dist/components/overlays/callout/callout.styles.js +1 -1
- package/dist/components/overlays/dialog/dialog.styles.js +1 -1
- package/dist/components/overlays/overlay/dropdown.class.d.ts +13 -3
- package/dist/components/overlays/overlay/dropdown.class.js +2 -2
- package/dist/components/overlays/overlay/popover.class.d.ts +12 -3
- package/dist/components/overlays/overlay/popover.class.js +2 -2
- package/dist/components/overlays/rating/rating.class.d.ts +9 -7
- package/dist/components/overlays/rating/rating.class.js +1 -1
- package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +5 -1
- package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
- package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +1 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +5 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
- package/dist/components/retrieval/graph-legend/graph-legend.styles.js +1 -1
- package/dist/components/retrieval/retrieval-value-format.js +1 -1
- package/dist/components/retrieval/source-list/source-list.styles.js +1 -1
- package/dist/components/utility/copy-button/copy-button.class.d.ts +23 -11
- package/dist/components/utility/copy-button/copy-button.class.js +2 -2
- package/dist/components/utility/copy-button/copy-button.styles.js +1 -1
- package/dist/components/utility/diff-view/diff-view.styles.js +1 -1
- package/dist/components/utility/export-button/export-button.class.d.ts +4 -0
- package/dist/components/utility/export-button/export-button.class.js +1 -1
- package/dist/components/utility/json-viewer/json-viewer.styles.js +1 -1
- package/dist/components/utility/known-date/known-date.class.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.d.ts +38 -3
- package/dist/components/utility/mention-popover/mention-popover.class.js +2 -1
- package/dist/components/utility/mention-popover/mention-popover.styles.js +1 -1
- package/dist/components/utility/poll-status/poll-status.styles.js +1 -1
- package/dist/components/utility/tour/tour.class.d.ts +4 -0
- package/dist/components/utility/tour/tour.class.js +1 -1
- package/dist/components/utility/tour/tour.styles.js +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.js +2 -2
- package/dist/components/viewers/docx-viewer/docx-viewer.class.js +2 -2
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +2 -2
- package/dist/components/viewers/highlight-layer/highlight-layer.class.js +2 -2
- package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +2 -2
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +2 -2
- package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +2 -2
- package/dist/components/viewers/xml-viewer/xml-viewer.class.js +2 -2
- package/dist/custom-elements-jsx.d.ts +2 -2
- package/dist/events.d.ts +13 -12
- package/dist/internal/aggregate-file-limits.d.ts +33 -0
- package/dist/internal/aggregate-file-limits.js +1 -0
- package/dist/internal/catalog-picker.d.ts +15 -2
- package/dist/internal/catalog-picker.js +1 -1
- package/dist/internal/debounce-controller.d.ts +14 -0
- package/dist/internal/debounce-controller.js +1 -1
- package/dist/internal/default-strings.generated.d.ts +1 -1
- package/dist/internal/default-strings.generated.js +2 -2
- package/dist/internal/focus-navigation.d.ts +45 -0
- package/dist/internal/focus-navigation.js +1 -1
- package/dist/internal/form-associated.js +1 -1
- package/dist/internal/initial-slot-collection.d.ts +30 -0
- package/dist/internal/initial-slot-collection.js +1 -0
- package/dist/internal/intl-cache.js +1 -1
- package/dist/internal/invalid-event-alias.d.ts +46 -0
- package/dist/internal/invalid-event-alias.js +1 -1
- package/dist/internal/localization-runtime.d.ts +24 -0
- package/dist/internal/localization-runtime.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +1 -1
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/positioning-strategy.d.ts +3 -1
- package/dist/internal/state-part.d.ts +49 -0
- package/dist/internal/state-part.js +1 -0
- package/dist/internal/variants.styles.js +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/svelte.d.ts +2 -2
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +1 -1
- package/dist/testing/lyra-tag-event-map.d.ts +2 -2
- package/dist/testing/lyra-tag-event-map.js +1 -1
- package/dist/testing/wait-for-mount.d.ts +46 -0
- package/dist/testing/wait-for-mount.js +1 -0
- package/dist/theme/theme-bootstrap.js +1 -1
- package/dist/theme/theme.d.ts +11 -2
- package/dist/theme/theme.js +1 -1
- package/dist/translations/ar/layout.js +1 -1
- package/dist/translations/de/layout.js +1 -1
- package/dist/translations/es/layout.js +1 -1
- package/dist/translations/fa/layout.js +1 -1
- package/dist/translations/fr/layout.js +1 -1
- package/dist/translations/he/layout.js +1 -1
- package/dist/translations/it/layout.js +1 -1
- package/dist/translations/ja/layout.js +1 -1
- package/dist/translations/pt-BR/layout.js +1 -1
- package/dist/translations/ru/layout.js +1 -1
- package/dist/translations/zh-CN/layout.js +1 -1
- package/dist/utilities/format.d.ts +17 -0
- package/dist/utilities/format.js +1 -1
- package/dist/vue.d.ts +2 -2
- package/llms/components/lr-app-rail-group.md +87 -10
- package/llms/components/lr-app-rail-item.md +88 -11
- package/llms/components/lr-app-rail.md +88 -11
- package/llms/components/lr-attachment-trigger.md +21 -0
- package/llms/components/lr-bar-chart.md +3 -2
- package/llms/components/lr-bubble-chart.md +3 -2
- package/llms/components/lr-callout.md +10 -0
- package/llms/components/lr-chart.md +43 -12
- package/llms/components/lr-citation-badge.md +7 -1
- package/llms/components/lr-code-block.md +21 -0
- package/llms/components/lr-color-picker.md +12 -7
- package/llms/components/lr-combobox.md +13 -1
- package/llms/components/lr-confirm-bar.md +36 -7
- package/llms/components/lr-context-meter.md +17 -4
- package/llms/components/lr-date-input.md +7 -1
- package/llms/components/lr-date-picker.md +6 -0
- package/llms/components/lr-dialog.md +21 -0
- package/llms/components/lr-doughnut-chart.md +3 -2
- package/llms/components/lr-drawer.md +10 -0
- package/llms/components/lr-drop-zone.md +16 -7
- package/llms/components/lr-dropdown-item.md +7 -0
- package/llms/components/lr-entity-chip.md +7 -1
- package/llms/components/lr-export-button.md +7 -1
- package/llms/components/lr-file-input.md +21 -10
- package/llms/components/lr-filter-bar.md +91 -15
- package/llms/components/lr-flow-canvas.md +16 -9
- package/llms/components/lr-gauge.md +22 -2
- package/llms/components/lr-histogram.md +7 -2
- package/llms/components/lr-icon-button.md +15 -7
- package/llms/components/lr-input.md +3 -1
- package/llms/components/lr-line-chart.md +3 -2
- package/llms/components/lr-lite-chart.md +13 -0
- package/llms/components/lr-locale-picker.md +7 -1
- package/llms/components/lr-mention-popover.md +16 -3
- package/llms/components/lr-menu-item.md +7 -0
- package/llms/components/lr-menu.md +8 -1
- package/llms/components/lr-message-actions.md +10 -0
- package/llms/components/lr-model-select.md +8 -3
- package/llms/components/lr-native-time-input.md +8 -1
- package/llms/components/lr-number-input.md +8 -1
- package/llms/components/lr-option.md +12 -0
- package/llms/components/lr-otp-input.md +6 -0
- package/llms/components/lr-pie-chart.md +3 -2
- package/llms/components/lr-polar-area-chart.md +3 -2
- package/llms/components/lr-prompt-input.md +2 -2
- package/llms/components/lr-radar-chart.md +3 -2
- package/llms/components/lr-reorder-item.md +12 -0
- package/llms/components/lr-reorder-list.md +12 -0
- package/llms/components/lr-scatter-chart.md +3 -2
- package/llms/components/lr-sequence-strip.md +10 -4
- package/llms/components/lr-streaming-text-core.md +21 -8
- package/llms/components/lr-streaming-text.md +34 -4
- package/llms/components/lr-suggestion-chips.md +8 -4
- package/llms/components/lr-table.md +47 -10
- package/llms/components/lr-textarea.md +1 -1
- package/llms/components/lr-time-input.md +7 -1
- package/llms/components/lr-tool-call-chip.md +7 -1
- package/llms/components/lr-tour.md +7 -1
- package/llms/components/lr-usage-badge.md +7 -1
- package/llms/components/lr-voice-picker.md +7 -3
- package/llms/shared.md +169 -16
- package/llms/tokens.md +17 -1
- package/llms-full.txt +941 -147
- package/package.json +16 -2
- package/registrations.json +1 -1
- package/vscode-css-data.json +1 -1
- package/vscode-html-data.json +1 -1
- package/web-types.json +1 -1
|
@@ -1,10 +1,11 @@
|
|
|
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{sizes}from"../../../internal/sizes.styles.js";import{hostAriaLabel,nextId}from"../../../internal/a11y.js";import{chevronIcon,playIcon,pauseIcon}from"../../../internal/icons.js";import{AnchoredValidityController,VALIDITY_ANCHOR}from"../../../internal/anchored-validity.js";import{attachInternalsSafely,getFormOwner,installCustomErrorProperty,isBarredFromValidation,setFormOwner}from"../../../internal/form-associated.js";import{installInvalidEventAlias}from"../../../internal/invalid-event-alias.js";import{syncValidityStates}from"../../../internal/custom-states.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{styles}from"./voice-picker.styles.js";import{trueDefaultBooleanConverter,trueDefaultSpellcheckConverter as spellcheckConverter}from"../../../internal/converters.js";import{CatalogPickerController}from"../../../internal/catalog-picker.js";import{activeElementIn}from"../../../internal/active-element.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_noMatches,LYRA_DEFAULT_notInCatalog,LYRA_DEFAULT_voice,LYRA_DEFAULT_voicePickerNoVoices,LYRA_DEFAULT_voicePickerPreview,LYRA_DEFAULT_voicePickerRequired,LYRA_DEFAULT_voicePickerStopPreview}from"../../../internal/default-strings.generated.js";const MAX_VOICE_CATALOG_ENTRIES=1e4;function ownString(value,key){try{const descriptor=Object.getOwnPropertyDescriptor(value,key);return descriptor&&"value"in descriptor&&typeof descriptor.value=="string"?descriptor.value:void 0}catch{return}}function snapshotVoiceCatalog(value){if(!Array.isArray(value))return;const stringSnapshot=[],entrySnapshot=[];let objectCatalog=!1,length=0;try{length=Math.min(value.length,MAX_VOICE_CATALOG_ENTRIES)}catch{return Object.freeze(stringSnapshot)}for(let index=0;index<length;index+=1){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{continue}if(!descriptor||!("value"in descriptor))continue;const candidate=descriptor.value;if(typeof candidate=="string"){objectCatalog?entrySnapshot.push(Object.freeze({id:candidate,label:candidate})):stringSnapshot.push(candidate);continue}if(candidate===null||typeof candidate!="object")continue;const id=ownString(candidate,"id"),label=ownString(candidate,"label");if(id===void 0||label===void 0)continue;objectCatalog||(entrySnapshot.push(...stringSnapshot.map(entry=>Object.freeze({id:entry,label:entry}))),objectCatalog=!0);const language=ownString(candidate,"language"),description=ownString(candidate,"description"),previewUrl=ownString(candidate,"previewUrl");entrySnapshot.push(Object.freeze({id,label,...language===void 0?{}:{language},...description===void 0?{}:{description},...previewUrl===void 0?{}:{previewUrl}}))}return Object.freeze(objectCatalog?entrySnapshot:stringSnapshot)}class LyraVoicePicker extends LyraElement{static{this.defaultStrings={...super.defaultStrings,fieldRequired:LYRA_DEFAULT_fieldRequired,noMatches:LYRA_DEFAULT_noMatches,notInCatalog:LYRA_DEFAULT_notInCatalog,voice:LYRA_DEFAULT_voice,voicePickerNoVoices:LYRA_DEFAULT_voicePickerNoVoices,voicePickerPreview:LYRA_DEFAULT_voicePickerPreview,voicePickerRequired:LYRA_DEFAULT_voicePickerRequired,voicePickerStopPreview:LYRA_DEFAULT_voicePickerStopPreview}}static{this.formAssociated=!0}static{this.styles=[LyraElement.styles,sizes,styles]}static{this.properties={customError:{attribute:"custom-error",reflect:!0,noAccessor:!0},disabled:{type:Boolean,reflect:!0,noAccessor:!0},required:{type:Boolean,reflect:!0,noAccessor:!0},value:{attribute:!1,noAccessor:!0},defaultValue:{attribute:"value",reflect:!1,useDefault:!0,noAccessor:!0},name:{reflect:!0,noAccessor:!0}}}get catalog(){return this._catalog}set catalog(next){const old=this._catalog;next!==old&&(this.internalPreviewTargetId!==null&&this.stopInternalPreview(),this._catalog=snapshotVoiceCatalog(next),this.requestUpdate("catalog",old))}get open(){return this.catalogPicker.open}set open(next){this.catalogPicker.setOpen(next)}get activeIndex(){return this.catalogPicker.activeIndex}get query(){return this.catalogPicker.query}constructor(){super(),this.provider="",this.allowCustom=!1,this.readonly=!1,this.preview=!0,this.label="",this.hint="",this.errorText="",this.placeholder="",this.spellcheck=!0,this.autocapitalize="",this.autoCorrect="",this.autocomplete="off",this.inputMode="",this.enterKeyHint="",this.size="m",this.touched=!1,this.slotPresence=new SlotPresenceController(this),this.previewingId=null,this.listId=nextId("voice-picker-list"),this.controlId=nextId("voice-picker-control"),this.pendingPreviewId=null,this.previewGeneration=0,this._fieldsetDisabled=!1,this._name="",this._disabled=!1,this._required=!1,this.transferControlFocus=!1,this.catalogPicker=new CatalogPickerController(this,{catalog:()=>this.catalog,allowCustom:()=>this.allowCustom,isReadonly:()=>this.readonly,locale:()=>this.effectiveLocale,searchableFields:entry=>[entry.id,entry.label,entry.language??"",entry.description??""],emitChange:detail=>this.emit("lr-change",detail),beforeValueChange:value=>{const previewTarget=this.internalPreviewTargetId;previewTarget!==null&&previewTarget!==value&&this.stopInternalPreview()},beforeActiveIndexChange:next=>this.reconcilePreviewForActiveIndex(next),afterQueryChange:()=>this.reconcilePreviewVisibility(this.open,this.catalogPicker.filteredEntries),onValueChange:(value,oldValue)=>{this.internals.setFormValue(value),this.updateValidity(),this.requestUpdate("value",oldValue)},onDefaultValueChange:(_value,oldValue)=>this.requestUpdate("defaultValue",oldValue),onStateChange:(state2,oldValue)=>{state2==="open"?(this.catalogPicker.open||this.reconcilePreviewVisibility(!1,[]),this.requestUpdate("open",oldValue)):this.requestUpdate()},onControlBlur:()=>{this.effectiveDisabled||(this.touched=!0)}}),this.onAudioEnded=event=>{event.currentTarget===this.audioEl&&this.stopInternalPreview()},this.onAudioLoadFailure=eventOrAudio=>{const direct=eventOrAudio,isDomErrorEvent=direct.localName!=="audio",audioLike=direct.localName==="audio"?eventOrAudio:eventOrAudio.currentTarget,failedAudio=audioLike?.localName==="audio"&&typeof audioLike.pause=="function"&&typeof audioLike.removeEventListener=="function"?audioLike:void 0;if(!failedAudio||(failedAudio.removeEventListener("ended",this.onAudioEnded),failedAudio.removeEventListener("error",this.onAudioLoadFailure),failedAudio.pause(),failedAudio!==this.audioEl))return;const pendingVoiceId=this.pendingPreviewId;this.previewGeneration++,this.audioEl=void 0,this.pendingPreviewId=null,isDomErrorEvent&&this.previewingId===null&&pendingVoiceId!==null&&(this.previewingId=pendingVoiceId,this.emit("lr-preview-change",{voiceId:pendingVoiceId})),this.previewingId!==null&&(this.previewingId=null,this.emit("lr-preview-change",{voiceId:null}))},this.onPreviewButtonClick=()=>{const candidate=this.previewCandidateId;candidate&&(this.internalPreviewTargetId===candidate?this.stopInternalPreview():this.requestPreview(candidate))},this.onOptionPreviewClick=(e,entry)=>{e.stopPropagation(),this.internalPreviewTargetId===entry.id?this.stopInternalPreview():this.requestPreview(entry.id)},this.onTriggerClick=()=>{this.effectiveDisabled||(this.open?this.hide():this.show())},this.onControlBlur=event=>{this.catalogPicker.handleControlBlur(event)},this.onControlFocus=event=>{this.catalogPicker.handleControlFocus(event)},this.onTriggerKeyDown=e=>{this.catalogPicker.handleTriggerKeyDown(e)},this.onComboMouseDown=e=>{this.catalogPicker.handleComboMouseDown(e)},this.onInputFocus=event=>{this.catalogPicker.handleInputFocus(event)},this.onInput=e=>{this.catalogPicker.handleInput(e)},this.onInputKeyDown=e=>{this.catalogPicker.handleInputKeyDown(e)},this.onListboxMouseDown=e=>{this.catalogPicker.handleListboxMouseDown(e)},this.onListboxClick=e=>{this.catalogPicker.handleListboxClick(e)},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.internals.setFormValue("")}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}[VALIDITY_ANCHOR](){return this.renderRoot?.querySelector('[part="trigger"], [part="combobox-input"]')??null}click(){this.catalogPicker.click()}focus(options){this.catalogPicker.focus(options)}blur(){this.catalogPicker.blur()}get input(){return this.catalogPicker.input}get selectionStart(){return this.input?.selectionStart??null}set selectionStart(value){this.input&&(this.input.selectionStart=value)}get selectionEnd(){return this.input?.selectionEnd??null}set selectionEnd(value){this.input&&(this.input.selectionEnd=value)}get selectionDirection(){return this.input?.selectionDirection??null}set selectionDirection(value){this.input&&(this.input.selectionDirection=value)}select(){this.catalogPicker.select()}setSelectionRange(start,end,direction){this.catalogPicker.setSelectionRange(start,end,direction)}setRangeText(replacement,start,end,selectMode){this.catalogPicker.setRangeText(replacement,start,end,selectMode)}connectedCallback(){super.connectedCallback(),this.updateValidity(),this.catalogPicker.connected(this.hasUpdated)}willUpdate(changed){if(super.willUpdate(changed),this.hasUpdated){const switchingMode=this.renderRoot.querySelector('[part="trigger"]')!==null!==this.closedMode,focused=activeElementIn(this.shadowRoot??this.ownerDocument);this.catalogPicker.suppressControlEvents=switchingMode,this.transferControlFocus=switchingMode&&focused?.nodeType===1&&focused.matches('[part="trigger"], [part="combobox-input"]')}if(this.hasUpdated&&(changed.has("catalog")||changed.has("allowCustom")||changed.has("value"))){const activeValue=this.renderRoot.querySelector('[part="option"][data-active]')?.dataset.value,rows=this.closedMode?this.effectiveEntries:this.filteredEntries;this.catalogPicker.reconcileRows(activeValue,!1),this.reconcilePreviewVisibility(this.open,rows)}changed.has("preview")&&!this.preview&&this.stopInternalPreview()}disconnectedCallback(){super.disconnectedCallback(),this.stopInternalPreview(),this.catalogPicker.disconnected()}adoptedCallback(){super.adoptedCallback(),this.stopInternalPreview(),this.catalogPicker.adopted()}get value(){return this.catalogPicker.value}set value(next){this.catalogPicker.value=next}get defaultValue(){return this.catalogPicker.defaultValue}set defaultValue(next){this.catalogPicker.defaultValue=next}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._disabled&&(this.hide(),this.stopInternalPreview()),this.updateValidity(),this.requestUpdate("disabled",old)}get required(){return this._required}set required(next){const old=this._required;this._required=!!next,this.toggleAttribute("required",this._required),this.updateValidity(),this.requestUpdate("required",old)}get effectiveDisabled(){return this.disabled||this._fieldsetDisabled}get barredFromValidation(){return isBarredFromValidation(this,this.internals)}updateValidity(){this.barredFromValidation?this.validityController.setValidity({}):this.required&&!this.value?this.validityController.setValidity({valueMissing:!0},this.localize("voicePickerRequired")):this.validityController.setValidity({}),this.publishValidityStates()}publishValidityStates(){syncValidityStates(this.internals,{required:this.required,hasInteracted:this.touched,barred:this.barredFromValidation})}formResetCallback(){this.touched=!1,this.catalogPicker.resetValue()}formStateRestoreCallback(state2,_mode){this.catalogPicker.restoreState(state2)}formDisabledCallback(disabled){this._fieldsetDisabled=disabled,disabled&&(this.hide(),this.stopInternalPreview()),this.updateValidity(),this.requestUpdate()}checkValidity(){return this.internals.checkValidity()}reportValidity(){return this.touched=!0,this.publishValidityStates(),this.internals.reportValidity()}setCustomValidity(message){this.validityController.setCustomValidity(message??""),this.publishValidityStates()}get closedMode(){return this.catalogPicker.closedMode}get effectiveEntries(){return this.catalogPicker.effectiveEntries}get filteredEntries(){return this.catalogPicker.filteredEntries}get malformedCatalogEntries(){const raw=this.catalog;if(!raw||raw.length===0)return[];const out=[];for(const item of raw){const record=typeof item=="string"?{id:item,label:item}:item;typeof record?.id=="string"&&record.id.trim()!==""||out.push({...record,id:"",synthetic:!1})}return out}labelFor(id){return this.catalogPicker.labelFor(id)}show(){this.catalogPicker.show()}hide(){this.catalogPicker.hide()}updated(changed){super.updated(changed);const reposition=changed.has("open")||this.open&&(changed.has("catalog")||changed.has("allowCustom"));this.catalogPicker.updated(reposition),(changed.has("required")||changed.has("readonly")||changed.has("touched")||changed.has("value"))&&(changed.has("readonly")&&this.updateValidity(),this.toggleAttribute("data-invalid",this.touched&&!this.internals.validity.valid)),this.publishValidityStates(),this.transferControlFocus&&(this.transferControlFocus=!1,this.renderRoot.querySelector('[part="trigger"], [part="combobox-input"]')?.focus()),this.catalogPicker.suppressControlEvents=!1}get internalPreviewTargetId(){return this.pendingPreviewId??this.previewingId}reconcilePreviewVisibility(open,rows){const target=this.internalPreviewTargetId;if(target===null)return;const standaloneCandidate=open&&this.activeIndex>=0?rows[this.activeIndex]?.id??this.value:this.value,hasVisibleRow=open&&rows.some(entry=>entry.id===target&&!!entry.previewUrl);target!==standaloneCandidate&&!hasVisibleRow&&this.stopInternalPreview()}reconcilePreviewForActiveIndex(next){const target=this.internalPreviewTargetId;if(target!==null){const rows=this.closedMode?this.effectiveEntries:this.filteredEntries,nextCandidate=this.open&&next>=0?rows[next]?.id??this.value:this.value;target!==nextCandidate&&this.stopInternalPreview()}}get previewCandidateId(){return this.open&&this.activeIndex>=0?(this.closedMode?this.effectiveEntries:this.filteredEntries)[this.activeIndex]?.id??this.value:this.value}requestPreview(voiceId){if(!voiceId)return;const currentTarget=this.internalPreviewTargetId;currentTarget!==null&¤tTarget!==voiceId&&this.stopInternalPreview();const previewUrl=this.effectiveEntries.find(e=>e.id===voiceId)?.previewUrl;!this.emit("lr-preview-request",{voiceId,previewUrl},{cancelable:!0}).defaultPrevented&&previewUrl&&this.playInternal(voiceId,previewUrl)}playInternal(voiceId,url){const safe=safeMediaSrc(url);if(!safe)return;this.stopInternalPreview();const audio=this.ownerDocument.createElement("audio");audio.src=safe,audio.addEventListener("ended",this.onAudioEnded),audio.addEventListener("error",this.onAudioLoadFailure);const generation=++this.previewGeneration;this.audioEl=audio,this.pendingPreviewId=voiceId;let playResult;try{playResult=audio.play()}catch{this.onAudioLoadFailure(audio);return}Promise.resolve(playResult).then(()=>{generation!==this.previewGeneration||audio!==this.audioEl||this.pendingPreviewId!==voiceId||(this.pendingPreviewId=null,this.previewingId=voiceId,this.emit("lr-preview-change",{voiceId}))},()=>this.onAudioLoadFailure(audio))}stopInternalPreview(){const hadTarget=this.internalPreviewTargetId!==null||this.audioEl!==void 0;this.audioEl&&(this.audioEl.removeEventListener("ended",this.onAudioEnded),this.audioEl.removeEventListener("error",this.onAudioLoadFailure),this.audioEl.pause(),this.audioEl=void 0),hadTarget&&this.previewGeneration++,this.pendingPreviewId=null,this.previewingId!==null&&(this.previewingId=null,this.emit("lr-preview-change",{voiceId:null}))}get previewButtonLabel(){const candidate=this.previewCandidateId,playing=this.previewingId!==null&&this.previewingId===candidate,name=this.labelFor(candidate)||candidate;return playing?this.localize("voicePickerStopPreview"):this.localize("voicePickerPreview",void 0,{name})}renderRows(rows,activeId){return rows.map((entry,i)=>{const id=`${this.listId}-opt-${i}`,selected=entry.id!==""&&entry.id===this.value,meta=[entry.language,entry.description].filter(Boolean).join(" · ");return html`<div
|
|
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{sizes}from"../../../internal/sizes.styles.js";import{hostAriaLabel,nextId}from"../../../internal/a11y.js";import{chevronIcon,playIcon,pauseIcon}from"../../../internal/icons.js";import{AnchoredValidityController,VALIDITY_ANCHOR}from"../../../internal/anchored-validity.js";import{attachInternalsSafely,getFormOwner,installCustomErrorProperty,isBarredFromValidation,setFormOwner}from"../../../internal/form-associated.js";import{installInteractionOnInvalid,installInvalidEventAlias,withStaticValidityCheck}from"../../../internal/invalid-event-alias.js";import{syncValidityStates}from"../../../internal/custom-states.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{styles}from"./voice-picker.styles.js";import{trueDefaultBooleanConverter,trueDefaultSpellcheckConverter as spellcheckConverter}from"../../../internal/converters.js";import{CatalogPickerController}from"../../../internal/catalog-picker.js";import{activeElementIn}from"../../../internal/active-element.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_noMatches,LYRA_DEFAULT_notInCatalog,LYRA_DEFAULT_voice,LYRA_DEFAULT_voicePickerNoVoices,LYRA_DEFAULT_voicePickerPreview,LYRA_DEFAULT_voicePickerRequired,LYRA_DEFAULT_voicePickerStopPreview}from"../../../internal/default-strings.generated.js";const MAX_VOICE_CATALOG_ENTRIES=1e4;function ownString(value,key){try{const descriptor=Object.getOwnPropertyDescriptor(value,key);return descriptor&&"value"in descriptor&&typeof descriptor.value=="string"?descriptor.value:void 0}catch{return}}function ownBoolean(value,key){try{const descriptor=Object.getOwnPropertyDescriptor(value,key);return descriptor&&"value"in descriptor&&typeof descriptor.value=="boolean"?descriptor.value:void 0}catch{return}}function snapshotVoiceCatalog(value){if(!Array.isArray(value))return;const stringSnapshot=[],entrySnapshot=[];let objectCatalog=!1,length=0;try{length=Math.min(value.length,MAX_VOICE_CATALOG_ENTRIES)}catch{return Object.freeze(stringSnapshot)}for(let index=0;index<length;index+=1){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{continue}if(!descriptor||!("value"in descriptor))continue;const candidate=descriptor.value;if(typeof candidate=="string"){objectCatalog?entrySnapshot.push(Object.freeze({id:candidate,label:candidate})):stringSnapshot.push(candidate);continue}if(candidate===null||typeof candidate!="object")continue;const id=ownString(candidate,"id"),label=ownString(candidate,"label");if(id===void 0||label===void 0)continue;objectCatalog||(entrySnapshot.push(...stringSnapshot.map(entry=>Object.freeze({id:entry,label:entry}))),objectCatalog=!0);const language=ownString(candidate,"language"),description=ownString(candidate,"description"),previewUrl=ownString(candidate,"previewUrl"),disabled=ownBoolean(candidate,"disabled");entrySnapshot.push(Object.freeze({id,label,...language===void 0?{}:{language},...description===void 0?{}:{description},...previewUrl===void 0?{}:{previewUrl},...disabled===void 0?{}:{disabled}}))}return Object.freeze(objectCatalog?entrySnapshot:stringSnapshot)}class LyraVoicePicker extends LyraElement{static{this.defaultStrings={...super.defaultStrings,fieldRequired:LYRA_DEFAULT_fieldRequired,noMatches:LYRA_DEFAULT_noMatches,notInCatalog:LYRA_DEFAULT_notInCatalog,voice:LYRA_DEFAULT_voice,voicePickerNoVoices:LYRA_DEFAULT_voicePickerNoVoices,voicePickerPreview:LYRA_DEFAULT_voicePickerPreview,voicePickerRequired:LYRA_DEFAULT_voicePickerRequired,voicePickerStopPreview:LYRA_DEFAULT_voicePickerStopPreview}}static{this.formAssociated=!0}static{this.styles=[LyraElement.styles,sizes,styles]}static{this.properties={customError:{attribute:"custom-error",reflect:!0,noAccessor:!0},disabled:{type:Boolean,reflect:!0,noAccessor:!0},required:{type:Boolean,reflect:!0,noAccessor:!0},value:{attribute:!1,noAccessor:!0},defaultValue:{attribute:"value",reflect:!1,useDefault:!0,noAccessor:!0},name:{reflect:!0,noAccessor:!0}}}get catalog(){return this._catalog}set catalog(next){const old=this._catalog;next!==old&&(this.internalPreviewTargetId!==null&&this.stopInternalPreview(),this._catalog=snapshotVoiceCatalog(next),this.requestUpdate("catalog",old))}get open(){return this.catalogPicker.open}set open(next){this.catalogPicker.setOpen(next)}get activeIndex(){return this.catalogPicker.activeIndex}get query(){return this.catalogPicker.query}constructor(){super(),this.provider="",this.allowCustom=!1,this.readonly=!1,this.preview=!0,this.label="",this.hint="",this.errorText="",this.placeholder="",this.spellcheck=!0,this.autocapitalize="",this.autoCorrect="",this.autocomplete="off",this.inputMode="",this.enterKeyHint="",this.size="m",this.touched=!1,this.slotPresence=new SlotPresenceController(this),this.previewingId=null,this.listId=nextId("voice-picker-list"),this.controlId=nextId("voice-picker-control"),this.pendingPreviewId=null,this.previewGeneration=0,this._fieldsetDisabled=!1,this._name="",this._disabled=!1,this._required=!1,this.transferControlFocus=!1,this.catalogPicker=new CatalogPickerController(this,{catalog:()=>this.catalog,allowCustom:()=>this.allowCustom,isReadonly:()=>this.readonly,locale:()=>this.effectiveLocale,searchableFields:entry=>[entry.id,entry.label,entry.language??"",entry.description??""],emitChange:detail=>this.emit("lr-change",detail),beforeValueChange:value=>{const previewTarget=this.internalPreviewTargetId;previewTarget!==null&&previewTarget!==value&&this.stopInternalPreview()},beforeActiveIndexChange:next=>this.reconcilePreviewForActiveIndex(next),afterQueryChange:()=>this.reconcilePreviewVisibility(this.open,this.catalogPicker.filteredEntries),onValueChange:(value,oldValue)=>{this.internals.setFormValue(value),this.updateValidity(),this.requestUpdate("value",oldValue)},onDefaultValueChange:(_value,oldValue)=>this.requestUpdate("defaultValue",oldValue),onStateChange:(state2,oldValue)=>{state2==="open"?(this.catalogPicker.open||this.reconcilePreviewVisibility(!1,[]),this.requestUpdate("open",oldValue)):this.requestUpdate()},onControlBlur:()=>{this.effectiveDisabled||(this.touched=!0)}}),this.markInteracted=()=>{this.touched||(this.touched=!0,this.publishValidityStates())},this.onAudioEnded=event=>{event.currentTarget===this.audioEl&&this.stopInternalPreview()},this.onAudioLoadFailure=eventOrAudio=>{const direct=eventOrAudio,isDomErrorEvent=direct.localName!=="audio",audioLike=direct.localName==="audio"?eventOrAudio:eventOrAudio.currentTarget,failedAudio=audioLike?.localName==="audio"&&typeof audioLike.pause=="function"&&typeof audioLike.removeEventListener=="function"?audioLike:void 0;if(!failedAudio||(failedAudio.removeEventListener("ended",this.onAudioEnded),failedAudio.removeEventListener("error",this.onAudioLoadFailure),failedAudio.pause(),failedAudio!==this.audioEl))return;const pendingVoiceId=this.pendingPreviewId;this.previewGeneration++,this.audioEl=void 0,this.pendingPreviewId=null,isDomErrorEvent&&this.previewingId===null&&pendingVoiceId!==null&&(this.previewingId=pendingVoiceId,this.emit("lr-preview-change",{voiceId:pendingVoiceId})),this.previewingId!==null&&(this.previewingId=null,this.emit("lr-preview-change",{voiceId:null}))},this.onPreviewButtonClick=()=>{const candidate=this.previewCandidateId;candidate&&(this.internalPreviewTargetId===candidate?this.stopInternalPreview():this.requestPreview(candidate))},this.onOptionPreviewClick=(e,entry)=>{e.stopPropagation(),this.internalPreviewTargetId===entry.id?this.stopInternalPreview():this.requestPreview(entry.id)},this.onTriggerClick=()=>{this.effectiveDisabled||(this.open?this.hide():this.show())},this.onControlBlur=event=>{this.catalogPicker.handleControlBlur(event)},this.onControlFocus=event=>{this.catalogPicker.handleControlFocus(event)},this.onTriggerKeyDown=e=>{this.catalogPicker.handleTriggerKeyDown(e)},this.onComboMouseDown=e=>{this.catalogPicker.handleComboMouseDown(e)},this.onInputFocus=event=>{this.catalogPicker.handleInputFocus(event)},this.onInput=e=>{this.catalogPicker.handleInput(e)},this.onInputKeyDown=e=>{this.catalogPicker.handleInputKeyDown(e)},this.onListboxMouseDown=e=>{this.catalogPicker.handleListboxMouseDown(e)},this.onListboxClick=e=>{this.catalogPicker.handleListboxClick(e)},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)),installInteractionOnInvalid(this,this.markInteracted),this.internals.setFormValue("")}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}[VALIDITY_ANCHOR](){return this.renderRoot?.querySelector('[part="trigger"], [part="combobox-input"]')??null}click(){this.catalogPicker.click()}focus(options){this.catalogPicker.focus(options)}blur(){this.catalogPicker.blur()}get input(){return this.catalogPicker.input}get selectionStart(){return this.input?.selectionStart??null}set selectionStart(value){this.input&&(this.input.selectionStart=value)}get selectionEnd(){return this.input?.selectionEnd??null}set selectionEnd(value){this.input&&(this.input.selectionEnd=value)}get selectionDirection(){return this.input?.selectionDirection??null}set selectionDirection(value){this.input&&(this.input.selectionDirection=value)}select(){this.catalogPicker.select()}setSelectionRange(start,end,direction){this.catalogPicker.setSelectionRange(start,end,direction)}setRangeText(replacement,start,end,selectMode){this.catalogPicker.setRangeText(replacement,start,end,selectMode)}connectedCallback(){super.connectedCallback(),this.updateValidity(),this.catalogPicker.connected(this.hasUpdated)}willUpdate(changed){if(super.willUpdate(changed),this.hasUpdated){const switchingMode=this.renderRoot.querySelector('[part="trigger"]')!==null!==this.closedMode,focused=activeElementIn(this.shadowRoot??this.ownerDocument);this.catalogPicker.suppressControlEvents=switchingMode,this.transferControlFocus=switchingMode&&focused?.nodeType===1&&focused.matches('[part="trigger"], [part="combobox-input"]')}if(this.hasUpdated&&(changed.has("catalog")||changed.has("allowCustom")||changed.has("value"))){const activeValue=this.renderRoot.querySelector('[part="option"][data-active]')?.dataset.value,rows=this.closedMode?this.effectiveEntries:this.filteredEntries;this.catalogPicker.reconcileRows(activeValue,!1),this.reconcilePreviewVisibility(this.open,rows)}changed.has("preview")&&!this.preview&&this.stopInternalPreview()}disconnectedCallback(){super.disconnectedCallback(),this.stopInternalPreview(),this.catalogPicker.disconnected()}adoptedCallback(){super.adoptedCallback(),this.stopInternalPreview(),this.catalogPicker.adopted()}get value(){return this.catalogPicker.value}set value(next){this.catalogPicker.value=next}get defaultValue(){return this.catalogPicker.defaultValue}set defaultValue(next){this.catalogPicker.defaultValue=next}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._disabled&&(this.hide(),this.stopInternalPreview()),this.updateValidity(),this.requestUpdate("disabled",old)}get required(){return this._required}set required(next){const old=this._required;this._required=!!next,this.toggleAttribute("required",this._required),this.updateValidity(),this.requestUpdate("required",old)}get effectiveDisabled(){return this.disabled||this._fieldsetDisabled}get barredFromValidation(){return isBarredFromValidation(this,this.internals)}updateValidity(){this.barredFromValidation?this.validityController.setValidity({}):this.required&&!this.value?this.validityController.setValidity({valueMissing:!0},this.localize("voicePickerRequired")):this.validityController.setValidity({}),this.publishValidityStates()}publishValidityStates(){syncValidityStates(this.internals,{required:this.required,hasInteracted:this.touched,barred:this.barredFromValidation})}formResetCallback(){this.touched=!1,this.catalogPicker.resetValue()}formStateRestoreCallback(state2,_mode){this.catalogPicker.restoreState(state2)}formDisabledCallback(disabled){this._fieldsetDisabled=disabled,disabled&&(this.hide(),this.stopInternalPreview()),this.updateValidity(),this.requestUpdate()}checkValidity(){return withStaticValidityCheck(this,()=>this.internals.checkValidity())}reportValidity(){return this.touched=!0,this.publishValidityStates(),this.internals.reportValidity()}setCustomValidity(message){this.validityController.setCustomValidity(message??""),this.publishValidityStates()}get closedMode(){return this.catalogPicker.closedMode}get effectiveEntries(){return this.catalogPicker.effectiveEntries}get filteredEntries(){return this.catalogPicker.filteredEntries}get malformedCatalogEntries(){const raw=this.catalog;if(!raw||raw.length===0)return[];const out=[];for(const item of raw){const record=typeof item=="string"?{id:item,label:item}:item;typeof record?.id=="string"&&record.id.trim()!==""||out.push({...record,id:"",synthetic:!1})}return out}labelFor(id){return this.catalogPicker.labelFor(id)}show(){this.catalogPicker.show()}hide(){this.catalogPicker.hide()}updated(changed){super.updated(changed);const reposition=changed.has("open")||this.open&&(changed.has("catalog")||changed.has("allowCustom"));this.catalogPicker.updated(reposition),(changed.has("required")||changed.has("readonly")||changed.has("touched")||changed.has("value"))&&(changed.has("readonly")&&this.updateValidity(),this.toggleAttribute("data-invalid",this.touched&&!this.internals.validity.valid)),this.publishValidityStates(),this.transferControlFocus&&(this.transferControlFocus=!1,this.renderRoot.querySelector('[part="trigger"], [part="combobox-input"]')?.focus()),this.catalogPicker.suppressControlEvents=!1}get internalPreviewTargetId(){return this.pendingPreviewId??this.previewingId}reconcilePreviewVisibility(open,rows){const target=this.internalPreviewTargetId;if(target===null)return;const standaloneCandidate=open&&this.activeIndex>=0?rows[this.activeIndex]?.id??this.value:this.value,hasVisibleRow=open&&rows.some(entry=>entry.id===target&&!!entry.previewUrl);target!==standaloneCandidate&&!hasVisibleRow&&this.stopInternalPreview()}reconcilePreviewForActiveIndex(next){const target=this.internalPreviewTargetId;if(target!==null){const rows=this.closedMode?this.effectiveEntries:this.filteredEntries,nextCandidate=this.open&&next>=0?rows[next]?.id??this.value:this.value;target!==nextCandidate&&this.stopInternalPreview()}}get previewCandidateId(){return this.open&&this.activeIndex>=0?(this.closedMode?this.effectiveEntries:this.filteredEntries)[this.activeIndex]?.id??this.value:this.value}requestPreview(voiceId){if(!voiceId)return;const currentTarget=this.internalPreviewTargetId;currentTarget!==null&¤tTarget!==voiceId&&this.stopInternalPreview();const previewUrl=this.effectiveEntries.find(e=>e.id===voiceId)?.previewUrl;!this.emit("lr-preview-request",{voiceId,previewUrl},{cancelable:!0}).defaultPrevented&&previewUrl&&this.playInternal(voiceId,previewUrl)}playInternal(voiceId,url){const safe=safeMediaSrc(url);if(!safe)return;this.stopInternalPreview();const audio=this.ownerDocument.createElement("audio");audio.src=safe,audio.addEventListener("ended",this.onAudioEnded),audio.addEventListener("error",this.onAudioLoadFailure);const generation=++this.previewGeneration;this.audioEl=audio,this.pendingPreviewId=voiceId;let playResult;try{playResult=audio.play()}catch{this.onAudioLoadFailure(audio);return}Promise.resolve(playResult).then(()=>{generation!==this.previewGeneration||audio!==this.audioEl||this.pendingPreviewId!==voiceId||(this.pendingPreviewId=null,this.previewingId=voiceId,this.emit("lr-preview-change",{voiceId}))},()=>this.onAudioLoadFailure(audio))}stopInternalPreview(){const hadTarget=this.internalPreviewTargetId!==null||this.audioEl!==void 0;this.audioEl&&(this.audioEl.removeEventListener("ended",this.onAudioEnded),this.audioEl.removeEventListener("error",this.onAudioLoadFailure),this.audioEl.pause(),this.audioEl=void 0),hadTarget&&this.previewGeneration++,this.pendingPreviewId=null,this.previewingId!==null&&(this.previewingId=null,this.emit("lr-preview-change",{voiceId:null}))}get previewButtonLabel(){const candidate=this.previewCandidateId,playing=this.previewingId!==null&&this.previewingId===candidate,name=this.labelFor(candidate)||candidate;return playing?this.localize("voicePickerStopPreview"):this.localize("voicePickerPreview",void 0,{name})}renderRows(rows,activeId){return rows.map((entry,i)=>{const id=`${this.listId}-opt-${i}`,selected=entry.id!==""&&entry.id===this.value,meta=[entry.language,entry.description].filter(Boolean).join(" · ");return html`<div
|
|
2
2
|
part="option"
|
|
3
3
|
id=${id}
|
|
4
4
|
role="option"
|
|
5
5
|
data-value=${entry.id}
|
|
6
6
|
?data-synthetic=${entry.synthetic}
|
|
7
7
|
aria-selected=${selected?"true":"false"}
|
|
8
|
+
aria-disabled=${entry.disabled===!0?"true":nothing}
|
|
8
9
|
?data-active=${id===activeId}
|
|
9
10
|
>
|
|
10
11
|
<span part="option-label">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";import{formControlRequiredMarker}from"../../../internal/form-control.styles.js";import{overlaySurfaceFill}from"../../../internal/overlay-surface.styles.js";const styles=css` :host { position: relative; display: inline-block; inline-size: 100%; min-inline-size: 0; max-inline-size: var(--lr-voice-picker-max-inline-size, var(--lr-size-24rem)); --_lr-voice-picker-gap-default: var(--lr-space-xs); --_lr-voice-picker-radius-default: var(--lr-form-control-radius); --_lr-voice-picker-trigger-min-height-default: var(--lr-form-control-height); } :host(:disabled) { cursor: not-allowed; } [part='form-control-label'] { display: block; margin-block-end: var(--lr-space-xs); overflow-wrap: anywhere; font-size: var(--lr-font-size-md-sm); font-weight: var(--lr-font-weight-semibold); } [part='form-control-label'][hidden] { display: none; } ${formControlRequiredMarker} .control-row { display: flex; align-items: stretch; gap: var(--lr-voice-picker-gap, var(--_lr-voice-picker-gap-default)); } [part='trigger'], [part='combobox'] { display: flex; align-items: center; gap: var(--lr-voice-picker-gap, var(--_lr-voice-picker-gap-default)); flex: 1 1 auto; min-inline-size: 0; min-block-size: var( --lr-voice-picker-trigger-height, var( --lr-voice-picker-trigger-min-height, var(--_lr-voice-picker-trigger-min-height-default) ) ); block-size: var(--lr-voice-picker-trigger-height, auto); box-sizing: border-box; padding: var(--lr-form-control-padding-block) var(--lr-form-control-padding-inline); border: var(--lr-border-width-thin) solid var(--lr-voice-picker-trigger-border-color, var(--lr-color-border)); border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); background: var(--lr-voice-picker-trigger-fill, var(--lr-color-surface)); color: inherit; font: inherit; font-size: var(--lr-form-control-font-size); } [part='trigger'] { cursor: pointer; text-align: start; } [part='combobox'] { cursor: text; } [part='trigger']:hover:not(:disabled) { border-color: var(--lr-color-brand); } [part='trigger']:active:not(:disabled) { border-color: var(--lr-color-brand); background: color-mix(in oklab, var(--lr-color-surface), var(--lr-color-mix-partner) var(--lr-color-mix-active)); } [part='trigger']:focus-visible, [part='combobox']:focus-within { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } :host([open]) [part='trigger'] { border-color: var(--lr-voice-picker-open-border-color, var(--lr-color-brand)); } :host(:disabled) [part='trigger'], :host(:disabled) [part='combobox'] { opacity: var(--lr-opacity-disabled); cursor: not-allowed; } [part='provider-badge'] { flex: 0 1 auto; min-inline-size: 0; max-inline-size: 40%; overflow: hidden; text-overflow: ellipsis; padding-inline-end: var(--lr-space-xs); margin-inline-end: var(--lr-space-xs); border-inline-end: var(--lr-border-width-thin) solid var(--lr-color-border); font-size: var(--lr-size-0-6875rem); font-weight: var(--lr-font-weight-bold); text-transform: uppercase; letter-spacing: var(--lr-size-0-04em); color: var(--lr-color-text-quiet); white-space: nowrap; } .trigger-label { flex: 1 1 auto; min-inline-size: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .trigger-label[data-placeholder] { color: var(--lr-color-text-quiet); } [part='combobox-input'] { flex: 1 1 auto; min-inline-size: 0; border: none; outline: none; background: transparent; color: inherit; font: inherit; } [part='combobox-input']::placeholder { color: var(--lr-color-text-quiet); } [part='expand-icon'] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; color: var(--lr-color-text-quiet); min-inline-size: min(var(--lr-icon-button-size), var(--lr-form-control-height)); min-block-size: min(var(--lr-icon-button-size), var(--lr-form-control-height)); line-height: var(--lr-line-height-none); } [part='expand-icon'] svg { transform: rotate(90deg); } [part='preview-button'] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; inline-size: max(var(--lr-icon-button-size), var(--lr-form-control-height)); block-size: var( --lr-voice-picker-trigger-height, var( --lr-voice-picker-trigger-min-height, max(var(--lr-icon-button-size), var(--lr-form-control-height)) ) ); min-inline-size: var(--lr-icon-button-size); min-block-size: var(--lr-icon-button-size); border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); background: var(--lr-color-surface); color: var(--lr-color-text); font: inherit; cursor: pointer; } [part='preview-button']:hover:not(:disabled) { background: var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='preview-button']:active:not(:disabled) { background: color-mix( in oklab, var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='preview-button']:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } [part='preview-button']:disabled { opacity: var(--lr-opacity-disabled); cursor: not-allowed; } [part='preview-button'][aria-pressed='true'] { border-color: var(--lr-voice-picker-preview-active-border, var(--lr-color-brand)); color: var(--lr-voice-picker-preview-active-color, var(--lr-color-brand)); } [part='listbox'] { position: fixed; z-index: var(--lr-layer-dropdown); box-sizing: border-box; max-block-size: min(var(--lr-size-18rem), var(--lr-positioner-available-block-size, var(--lr-size-18rem))); overflow-y: auto; overflow-x: hidden; inline-size: max-content; min-inline-size: min(var(--lr-size-12rem), var(--lr-positioner-available-inline-size, var(--lr-size-12rem))); max-inline-size: min(var(--lr-popover-viewport-clamp), var(--lr-size-28rem), var(--lr-positioner-available-inline-size, 100vw)); padding: var(--lr-space-xs); ${overlaySurfaceFill} border-radius: var( --lr-voice-picker-radius, var(--lr-overlay-radius, var(--_lr-voice-picker-radius-default)) ); box-shadow: var(--lr-overlay-shadow-anchored, var(--lr-shadow-m)); visibility: hidden; opacity: 0; transform: translateY(var(--lr-size-neg-0-25rem)); transition: opacity var(--lr-transition-fast), transform var(--lr-transition-fast), visibility var(--lr-transition-fast); } :host([open]) [part='listbox'] { visibility: visible; opacity: 1; transform: translateY(0); } @media (prefers-reduced-motion: reduce) { [part='listbox'] { transition: none !important; } } [part='option'] { display: flex; align-items: center; gap: var(--lr-voice-picker-gap, var(--_lr-voice-picker-gap-default)); inline-size: 100%; box-sizing: border-box; padding: var(--lr-space-xs) var(--lr-space-s); border: var(--lr-border-width-thin) solid transparent; border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); background: none; color: inherit; font: inherit; text-align: start; cursor: pointer; } [part='option'][aria-selected='true'] { border-color: var(--lr-voice-picker-option-selected-border, var(--lr-color-brand)); color: var(--lr-voice-picker-option-selected-color, var(--lr-color-brand)); background: var(--lr-voice-picker-option-selected-bg, transparent); font-weight: var( --lr-voice-picker-option-selected-font-weight, var(--lr-font-weight-semibold) ); } [part='option']:hover, [part='option'][data-active] { background: var(--lr-voice-picker-option-active-bg, var(--lr-color-brand-quiet)); } [part='option']:active { background: color-mix( in oklab, var(--lr-voice-picker-option-active-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part='option-label'] { flex: 1 1 auto; min-inline-size: 0; display: flex; flex-direction: column; overflow: hidden; } [part='option-label'] > :first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } [part='option-meta'] { font-size: var(--lr-size-0-6875rem); color: var(--lr-color-text-quiet); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } [part='option']:hover [part='option-meta'], [part='option'][data-active] [part='option-meta'] { color: var(--lr-color-text); } [part='option'][data-synthetic] { border-style: var(--lr-voice-picker-option-synthetic-border-style, dashed); border-color: var(--lr-voice-picker-option-synthetic-border-color, var(--lr-color-border)); } [part='option'][data-synthetic] [part='option-label'] { font-style: var(--lr-voice-picker-option-synthetic-font-style, italic); } [part='option-badge'] { flex: 0 0 auto; font-size: var(--lr-size-0-6875rem); font-style: normal; font-weight: var(--lr-font-weight-normal); color: var(--lr-color-text-quiet); white-space: nowrap; } [part='option-preview'] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; min-inline-size: var(--lr-icon-button-size); min-block-size: var(--lr-icon-button-size); border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); color: var(--lr-color-text-quiet); cursor: pointer; } [part='option-preview']:hover { background: var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='option-preview']:active { background: color-mix( in oklab, var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='empty'] { padding: var(--lr-space-m); color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-md-sm); } [part='hint'] { margin-block-start: var(--lr-space-xs); overflow-wrap: anywhere; font-size: var(--lr-font-size-sm); color: var(--lr-color-text-quiet); } [part='hint'][hidden] { display: none; } [part='error'] { margin-block-start: var(--lr-space-xs); overflow-wrap: anywhere; font-size: var(--lr-font-size-sm); color: var(--lr-color-danger); } [part='error'][hidden] { display: none; } `;export{styles};
|
|
1
|
+
import{css}from"lit";import{formControlRequiredMarker}from"../../../internal/form-control.styles.js";import{overlaySurfaceFill}from"../../../internal/overlay-surface.styles.js";const styles=css` :host { position: relative; display: inline-block; inline-size: 100%; min-inline-size: 0; max-inline-size: var(--lr-voice-picker-max-inline-size, var(--lr-size-24rem)); --_lr-voice-picker-gap-default: var(--lr-space-xs); --_lr-voice-picker-radius-default: var(--lr-form-control-radius); --_lr-voice-picker-trigger-min-height-default: var(--lr-form-control-height); } :host(:disabled) { cursor: not-allowed; } [part='form-control-label'] { display: block; margin-block-end: var(--lr-space-xs); overflow-wrap: anywhere; font-size: var(--lr-font-size-md-sm); font-weight: var(--lr-font-weight-semibold); } [part='form-control-label'][hidden] { display: none; } ${formControlRequiredMarker} .control-row { display: flex; align-items: stretch; gap: var(--lr-voice-picker-gap, var(--_lr-voice-picker-gap-default)); } [part='trigger'], [part='combobox'] { display: flex; align-items: center; gap: var(--lr-voice-picker-gap, var(--_lr-voice-picker-gap-default)); flex: 1 1 auto; min-inline-size: 0; min-block-size: var( --lr-voice-picker-trigger-height, var( --lr-voice-picker-trigger-min-height, var(--_lr-voice-picker-trigger-min-height-default) ) ); block-size: var(--lr-voice-picker-trigger-height, auto); box-sizing: border-box; padding: var(--lr-form-control-padding-block) var(--lr-form-control-padding-inline); border: var(--lr-border-width-thin) solid var(--lr-voice-picker-trigger-border-color, var(--lr-color-border)); border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); background: var(--lr-voice-picker-trigger-fill, var(--lr-color-surface)); color: inherit; font: inherit; font-size: var(--lr-form-control-font-size); } [part='trigger'] { cursor: pointer; text-align: start; } [part='combobox'] { cursor: text; } [part='trigger']:hover:not(:disabled) { border-color: var(--lr-color-brand); } [part='trigger']:active:not(:disabled) { border-color: var(--lr-color-brand); background: color-mix(in oklab, var(--lr-color-surface), var(--lr-color-mix-partner) var(--lr-color-mix-active)); } [part='trigger']:focus-visible, [part='combobox']:focus-within { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } :host([open]) [part='trigger'] { border-color: var(--lr-voice-picker-open-border-color, var(--lr-color-brand)); } :host(:disabled) [part='trigger'], :host(:disabled) [part='combobox'] { opacity: var(--lr-opacity-disabled); cursor: not-allowed; } [part='provider-badge'] { flex: 0 1 auto; min-inline-size: 0; max-inline-size: 40%; overflow: hidden; text-overflow: ellipsis; padding-inline-end: var(--lr-space-xs); margin-inline-end: var(--lr-space-xs); border-inline-end: var(--lr-border-width-thin) solid var(--lr-color-border); font-size: var(--lr-size-0-6875rem); font-weight: var(--lr-font-weight-bold); text-transform: uppercase; letter-spacing: var(--lr-size-0-04em); color: var(--lr-color-text-quiet); white-space: nowrap; } .trigger-label { flex: 1 1 auto; min-inline-size: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .trigger-label[data-placeholder] { color: var(--lr-color-text-quiet); } [part='combobox-input'] { flex: 1 1 auto; min-inline-size: 0; border: none; outline: none; background: transparent; color: inherit; font: inherit; } [part='combobox-input']::placeholder { color: var(--lr-color-text-quiet); } [part='expand-icon'] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; color: var(--lr-color-text-quiet); min-inline-size: min(var(--lr-icon-button-size), var(--lr-form-control-height)); min-block-size: min(var(--lr-icon-button-size), var(--lr-form-control-height)); line-height: var(--lr-line-height-none); } [part='expand-icon'] svg { transform: rotate(90deg); } [part='preview-button'] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; inline-size: max(var(--lr-icon-button-size), var(--lr-form-control-height)); block-size: var( --lr-voice-picker-trigger-height, var( --lr-voice-picker-trigger-min-height, max(var(--lr-icon-button-size), var(--lr-form-control-height)) ) ); min-inline-size: var(--lr-icon-button-size); min-block-size: var(--lr-icon-button-size); border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); background: var(--lr-color-surface); color: var(--lr-color-text); font: inherit; cursor: pointer; } [part='preview-button']:hover:not(:disabled) { background: var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='preview-button']:active:not(:disabled) { background: color-mix( in oklab, var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='preview-button']:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); } [part='preview-button']:disabled { opacity: var(--lr-opacity-disabled); cursor: not-allowed; } [part='preview-button'][aria-pressed='true'] { border-color: var(--lr-voice-picker-preview-active-border, var(--lr-color-brand)); color: var(--lr-voice-picker-preview-active-color, var(--lr-color-brand)); } [part='listbox'] { position: fixed; z-index: var(--lr-layer-dropdown); box-sizing: border-box; max-block-size: min(var(--lr-size-18rem), var(--lr-positioner-available-block-size, var(--lr-size-18rem))); overflow-y: auto; overflow-x: hidden; inline-size: max-content; min-inline-size: min(var(--lr-size-12rem), var(--lr-positioner-available-inline-size, var(--lr-size-12rem))); max-inline-size: min(var(--lr-popover-viewport-clamp), var(--lr-size-28rem), var(--lr-positioner-available-inline-size, 100vw)); padding: var(--lr-space-xs); ${overlaySurfaceFill} border-radius: var( --lr-voice-picker-radius, var(--lr-overlay-radius, var(--_lr-voice-picker-radius-default)) ); box-shadow: var(--lr-overlay-shadow-anchored, var(--lr-shadow-m)); visibility: hidden; opacity: 0; transform: translateY(var(--lr-size-neg-0-25rem)); transition: opacity var(--lr-transition-fast), transform var(--lr-transition-fast), visibility var(--lr-transition-fast); } :host([open]) [part='listbox'] { visibility: visible; opacity: 1; transform: translateY(0); } @media (prefers-reduced-motion: reduce) { [part='listbox'] { transition: none !important; } } [part='option'] { display: flex; align-items: center; gap: var(--lr-voice-picker-gap, var(--_lr-voice-picker-gap-default)); inline-size: 100%; box-sizing: border-box; padding: var(--lr-space-xs) var(--lr-space-s); border: var(--lr-border-width-thin) solid transparent; border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); background: none; color: inherit; font: inherit; text-align: start; cursor: pointer; } [part='option'][aria-selected='true'] { border-color: var(--lr-voice-picker-option-selected-border, var(--lr-color-brand)); color: var(--lr-voice-picker-option-selected-color, var(--lr-color-brand)); background: var(--lr-voice-picker-option-selected-bg, transparent); font-weight: var( --lr-voice-picker-option-selected-font-weight, var(--lr-font-weight-semibold) ); } [part='option']:where(:not([aria-disabled='true'])):hover, [part='option'][data-active] { background: var(--lr-voice-picker-option-active-bg, var(--lr-color-brand-quiet)); } [part='option']:where(:not([aria-disabled='true'])):active { background: color-mix( in oklab, var(--lr-voice-picker-option-active-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part='option'][aria-disabled='true'] { cursor: default; opacity: var(--lr-voice-picker-option-disabled-opacity, 0.5); } [part='option-label'] { flex: 1 1 auto; min-inline-size: 0; display: flex; flex-direction: column; overflow: hidden; } [part='option-label'] > :first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } [part='option-meta'] { font-size: var(--lr-size-0-6875rem); color: var(--lr-color-text-quiet); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } [part='option']:where(:not([aria-disabled='true'])):hover [part='option-meta'], [part='option'][data-active] [part='option-meta'] { color: var(--lr-color-text); } [part='option'][data-synthetic] { border-style: var(--lr-voice-picker-option-synthetic-border-style, dashed); border-color: var(--lr-voice-picker-option-synthetic-border-color, var(--lr-color-border)); } [part='option'][data-synthetic] [part='option-label'] { font-style: var(--lr-voice-picker-option-synthetic-font-style, italic); } [part='option-badge'] { flex: 0 0 auto; font-size: var(--lr-size-0-6875rem); font-style: normal; font-weight: var(--lr-font-weight-normal); color: var(--lr-color-text-quiet); white-space: nowrap; } [part='option-preview'] { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; min-inline-size: var(--lr-icon-button-size); min-block-size: var(--lr-icon-button-size); border-radius: var(--lr-voice-picker-radius, var(--_lr-voice-picker-radius-default)); color: var(--lr-color-text-quiet); cursor: pointer; } [part='option-preview']:hover { background: var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='option-preview']:active { background: color-mix( in oklab, var(--lr-voice-picker-preview-hover-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); color: var(--lr-voice-picker-preview-hover-color, var(--lr-color-brand)); } [part='empty'] { padding: var(--lr-space-m); color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-md-sm); } [part='hint'] { margin-block-start: var(--lr-space-xs); overflow-wrap: anywhere; font-size: var(--lr-font-size-sm); color: var(--lr-color-text-quiet); } [part='hint'][hidden] { display: none; } [part='error'] { margin-block-start: var(--lr-space-xs); overflow-wrap: anywhere; font-size: var(--lr-font-size-sm); color: var(--lr-color-danger); } [part='error'][hidden] { display: none; } `;export{styles};
|
|
@@ -20,7 +20,17 @@ readonly value:number;}export interface LyraContextMeterEventMap{'lr-segment-act
|
|
|
20
20
|
/** Absolute quantity (e.g. tokens), not a pre-computed percentage. */
|
|
21
21
|
value:number;tone?:ContextMeterTone;
|
|
22
22
|
/** Optional arbitrary CSS color. When set, it takes precedence over `tone`. */
|
|
23
|
-
color?:string;
|
|
23
|
+
color?:string;
|
|
24
|
+
/**
|
|
25
|
+
* Marks this band non-actionable while `interactive` is set: its control renders genuinely
|
|
26
|
+
* disabled (no tab stop, no hover/press affordance) and activating it emits no
|
|
27
|
+
* `lr-segment-activate`.
|
|
28
|
+
*
|
|
29
|
+
* Deliberately NOT inferred from `value === 0`. A zero band is legitimately clickable in a
|
|
30
|
+
* budget meter -- the original use for this component -- so inertness is declared, never
|
|
31
|
+
* guessed. For the derived signal, style the `segment-empty`/`legend-item-empty` part instead.
|
|
32
|
+
*/
|
|
33
|
+
disabled?:boolean;}
|
|
24
34
|
/**
|
|
25
35
|
* `<lr-context-meter>` — a segmented occupancy meter (bar or ring) for
|
|
26
36
|
* showing how a fixed capacity (a model's context window, a token budget,
|
|
@@ -42,6 +52,11 @@ color?:string;}
|
|
|
42
52
|
* `--lr-context-meter-segment-color` when `color` is set. While `interactive` is set it is a
|
|
43
53
|
* `<button>` (bar) or a `role="button"` arc (ring) carrying `aria-pressed`, and a second
|
|
44
54
|
* `segment-selected` part token while its index is in `selectedIndices`.
|
|
55
|
+
* @csspart segment-empty - A band whose `value` is 0. Derived, not declared, and carries no
|
|
56
|
+
* built-in treatment: it is the hook for a consumer's own "nothing in this bucket" styling. A
|
|
57
|
+
* zero band stays actionable unless its entry also sets `disabled`.
|
|
58
|
+
* @csspart segment-disabled - A band whose `segments` entry sets `disabled`. The control is
|
|
59
|
+
* genuinely disabled: no tab stop, no hover/press affordance, and activating it emits nothing.
|
|
45
60
|
* @csspart label - The visible caption, when `label` is set.
|
|
46
61
|
* @csspart semantic - The visually-hidden meter/group carrying aggregate range semantics.
|
|
47
62
|
* @csspart segment-list - The visually-hidden list exposing the segment breakdown.
|
|
@@ -50,6 +65,9 @@ color?:string;}
|
|
|
50
65
|
* `aria-hidden` in the default presentational mode, because `segment-list` already exposes the
|
|
51
66
|
* same names to assistive technology; reachable while `interactive` is set, where its rows are
|
|
52
67
|
* the filter controls themselves.
|
|
68
|
+
* @csspart legend-item-empty - The legend row of a band whose `value` is 0. Derived; no built-in
|
|
69
|
+
* treatment, exactly like `segment-empty`.
|
|
70
|
+
* @csspart legend-item-disabled - The legend row of a band whose entry sets `disabled`.
|
|
53
71
|
* @csspart legend-item - One swatch + label pair in the legend, one per `segments` entry. A
|
|
54
72
|
* `<button>` carrying `aria-pressed` while `interactive` is set, a plain `<span>` otherwise.
|
|
55
73
|
* @csspart legend-value - One legend row's absolute count, rendered by `legendDisplay`'s
|
|
@@ -67,6 +85,7 @@ color?:string;}
|
|
|
67
85
|
* @cssprop [--lr-context-meter-segment-seam-color=var(--lr-color-surface)] - Color of the hairline seam painted between adjacent `bar`-shape segments.
|
|
68
86
|
* @cssprop [--lr-context-meter-selected-ring-color=var(--lr-color-text)] - Colour of the inset ring marking a `bar`-shape band or a legend row whose index is in `selectedIndices`. Painted inside the shadow root because the state lives in the part name, and as a ring rather than an outline so it composes with the hover/press/focus outlines instead of being replaced by them.
|
|
69
87
|
* @cssprop [--lr-context-meter-selected-ring-width=var(--lr-border-width-thick)] - Width of that selected ring.
|
|
88
|
+
* @cssprop [--lr-context-meter-disabled-opacity=var(--lr-opacity-disabled)] - Opacity of a band or legend row whose `segments` entry sets `disabled`. The band keeps its own colour -- it is still the datum it always was -- and loses only the affordances that promise activation.
|
|
70
89
|
* @cssprop [--lr-context-meter-selected-arc-stroke=16] - Stroke width, in this component's `0 0 100 100` viewBox units, of a selected `ring`-shape arc. Arcs share one bounding box, so a selected arc reports itself by thickening in place rather than by an outline that would trace the whole ring.
|
|
71
90
|
* @event lr-segment-activate - A band or its legend row was activated while `interactive` is set.
|
|
72
91
|
* `detail: { index, label, value }`. Cancelable: the default action is this component toggling
|
|
@@ -173,9 +192,9 @@ private formatShare;
|
|
|
173
192
|
private activateSegment;
|
|
174
193
|
/** Enter/Space on the ring's `role="button"` arcs, which get none of a native button's keys. */
|
|
175
194
|
private onArcKeyDown;
|
|
176
|
-
/** The part token list for a band or legend row
|
|
177
|
-
*
|
|
178
|
-
private
|
|
195
|
+
/** The part token list for a band or legend row. `::part(segment)[data-selected]` is invalid
|
|
196
|
+
* CSS, so every state a consumer may need to style has to live in the part name itself. */
|
|
197
|
+
private segmentPart;private renderSemantics;private renderBar;private renderRing;
|
|
179
198
|
/** The visible category key. It repeats, in sighted form, exactly the label/count pairs the
|
|
180
199
|
* visually-hidden `segment-list` already exposes, so the whole subtree is `aria-hidden` — a
|
|
181
200
|
* screen reader announcing the same scheme twice is worse than not announcing the duplicate at
|
|
@@ -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{nativeSvgTitle}from"../../../internal/svg-title.js";import{html,svg,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{finiteNumber}from"../../../internal/numbers.js";import{getNumberFormat,resolveIntlLocale}from"../../../internal/intl-cache.js";import{requestThenCommit}from"../../../internal/request-commit.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{srOnly}from"../../../internal/a11y.js";import{styles}from"./context-meter.styles.js";import{LYRA_DEFAULT_contextMeterLabeledSummary,LYRA_DEFAULT_contextMeterSegmentLabel,LYRA_DEFAULT_contextMeterUsed,LYRA_DEFAULT_contextMeterUsedOfTotal}from"../../../internal/default-strings.generated.js";const CONTEXT_METER_LEGEND_DISPLAYS=Object.freeze(["label","label-value","label-percent","label-value-percent"]);function normalizeContextMeterLegendDisplay(value){return CONTEXT_METER_LEGEND_DISPLAYS.includes(value)?value:"label"}const RADIUS=40,CENTER=50,STROKE=12,CIRCUMFERENCE=2*Math.PI*RADIUS,MAX_CONTEXT_METER_SEGMENTS=1e4,EMPTY_CONTEXT_METER_SEGMENTS=Object.freeze([]);function projectContextMeterSegments(value){try{if(!Array.isArray(value))return EMPTY_CONTEXT_METER_SEGMENTS;const length=getOwnDataDescriptor(value,"length");if(length===MISSING_OWN_DATA_DESCRIPTOR||length===UNSAFE_OWN_DATA_DESCRIPTOR||typeof length.value!="number"||!Number.isSafeInteger(length.value)||length.value<0)return EMPTY_CONTEXT_METER_SEGMENTS;const segments=[];for(let index=0;index<Math.min(length.value,MAX_CONTEXT_METER_SEGMENTS);index+=1){const entry=getOwnDataDescriptor(value,String(index));if(entry===MISSING_OWN_DATA_DESCRIPTOR||entry===UNSAFE_OWN_DATA_DESCRIPTOR||entry.value===null||typeof entry.value!="object"||Array.isArray(entry.value))continue;const label=getOwnDataDescriptor(entry.value,"label"),segmentValue=getOwnDataDescriptor(entry.value,"value"),tone=getOwnDataDescriptor(entry.value,"tone"),color=getOwnDataDescriptor(entry.value,"color");if(label===MISSING_OWN_DATA_DESCRIPTOR||label===UNSAFE_OWN_DATA_DESCRIPTOR||segmentValue===MISSING_OWN_DATA_DESCRIPTOR||segmentValue===UNSAFE_OWN_DATA_DESCRIPTOR||tone===UNSAFE_OWN_DATA_DESCRIPTOR||color===UNSAFE_OWN_DATA_DESCRIPTOR||typeof label.value!="string"||typeof segmentValue.value!="number"||tone!==MISSING_OWN_DATA_DESCRIPTOR&&typeof tone.value!="string"||color!==MISSING_OWN_DATA_DESCRIPTOR&&typeof color.value!="string")continue;const toneValue=tone===MISSING_OWN_DATA_DESCRIPTOR?void 0:tone.value,colorValue=color===MISSING_OWN_DATA_DESCRIPTOR?void 0:color.value;segments.push(Object.freeze({label:label.value,value:segmentValue.value,...toneValue===void 0?{}:{tone:toneValue},...colorValue===void 0?{}:{color:colorValue}}))}return Object.freeze(segments)}catch{return EMPTY_CONTEXT_METER_SEGMENTS}}function formatCount(n,locale){return Math.round(finiteNumber(n,0)).toLocaleString(resolveIntlLocale(locale))}class LyraContextMeter extends LyraElement{constructor(){super(...arguments),this.segments=[],this.total=0,this._shape="bar",this.label="",this.showLegend=!1,this.legendDisplay="label",this.interactive=!1,this.selectedIndices=[],this.projectedSegments=EMPTY_CONTEXT_METER_SEGMENTS}static{this.defaultStrings={...super.defaultStrings,contextMeterLabeledSummary:LYRA_DEFAULT_contextMeterLabeledSummary,contextMeterSegmentLabel:LYRA_DEFAULT_contextMeterSegmentLabel,contextMeterUsed:LYRA_DEFAULT_contextMeterUsed,contextMeterUsedOfTotal:LYRA_DEFAULT_contextMeterUsedOfTotal}}static{this.ownedCollectionProperties=Object.freeze(["segments","selectedIndices"])}static{this.immutableEventDetails=Object.freeze(["lr-segment-activate"])}static{this.styles=[LyraElement.styles,srOnly,styles]}get shape(){return this._shape}set shape(value){const normalized=value==="ring"?"ring":"bar",previous=this._shape;if(previous===normalized){value!==normalized&&this.requestUpdate("shape",previous);return}this._shape=normalized,this.requestUpdate("shape",previous)}get effectiveSegments(){const source=this.segments;return source!==this.projectedSegmentsSource&&(this.projectedSegmentsSource=source,this.projectedSegments=projectContextMeterSegments(source)),this.projectedSegments}normalizedSegmentValue(segment){return Math.max(0,finiteNumber(segment.value,0))}get usedTotal(){return this.effectiveSegments.reduce((sum,segment)=>{const next=sum+this.normalizedSegmentValue(segment);return finiteNumber(next,Number.MAX_VALUE)},0)}ratios(){const total=Math.max(0,finiteNumber(this.total,0));if(total<=0)return[];const out=[];let cumulative=0;for(const segment of this.effectiveSegments){const raw=this.normalizedSegmentValue(segment),available=Math.max(0,1-cumulative),ratio=Math.min(raw/total,available);cumulative+=ratio,out.push({segment,value:raw,ratio})}return out}get clampedUsedTotal(){const total=Math.max(0,finiteNumber(this.total,0));return{used:total>0?Math.min(this.usedTotal,total):this.usedTotal,total}}get summary(){const{used:usedForSummary,total:totalValue}=this.clampedUsedTotal,used=formatCount(usedForSummary,this.effectiveLocale),phrase=totalValue>0?this.localize("contextMeterUsedOfTotal",void 0,{used,total:formatCount(totalValue,this.effectiveLocale)}):this.localize("contextMeterUsed",void 0,{used});return this.label?this.localize("contextMeterLabeledSummary",void 0,{label:this.label,summary:phrase}):phrase}segmentTitle(segment,value=this.normalizedSegmentValue(segment)){return this.localize("contextMeterSegmentLabel",void 0,{label:segment.label,count:formatCount(value,this.effectiveLocale)})}segmentColor(segment){return segment.color?sanitizeCssColor(segment.color):void 0}canonicalSelectedIndices(){const count=this.effectiveSegments.length;return[...new Set(this.selectedIndices.filter(candidate=>typeof candidate=="number"&&Number.isInteger(candidate)&&candidate>=0&&candidate<count))].sort((left,right)=>left-right)}isSelected(index){return this.canonicalSelectedIndices().includes(index)}formatShare(ratio){return getNumberFormat(this.effectiveLocale,{style:"percent",maximumFractionDigits:1}).format(ratio)}activateSegment(index){if(!this.interactive)return;const segment=this.effectiveSegments[index]
|
|
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,svg,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{finiteNumber}from"../../../internal/numbers.js";import{getNumberFormat,resolveIntlLocale}from"../../../internal/intl-cache.js";import{requestThenCommit}from"../../../internal/request-commit.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{srOnly}from"../../../internal/a11y.js";import{statePart}from"../../../internal/state-part.js";import{styles}from"./context-meter.styles.js";import{LYRA_DEFAULT_contextMeterLabeledSummary,LYRA_DEFAULT_contextMeterSegmentLabel,LYRA_DEFAULT_contextMeterUsed,LYRA_DEFAULT_contextMeterUsedOfTotal}from"../../../internal/default-strings.generated.js";const CONTEXT_METER_LEGEND_DISPLAYS=Object.freeze(["label","label-value","label-percent","label-value-percent"]);function normalizeContextMeterLegendDisplay(value){return CONTEXT_METER_LEGEND_DISPLAYS.includes(value)?value:"label"}const RADIUS=40,CENTER=50,STROKE=12,CIRCUMFERENCE=2*Math.PI*RADIUS,MAX_CONTEXT_METER_SEGMENTS=1e4,EMPTY_CONTEXT_METER_SEGMENTS=Object.freeze([]);function projectContextMeterSegments(value){try{if(!Array.isArray(value))return EMPTY_CONTEXT_METER_SEGMENTS;const length=getOwnDataDescriptor(value,"length");if(length===MISSING_OWN_DATA_DESCRIPTOR||length===UNSAFE_OWN_DATA_DESCRIPTOR||typeof length.value!="number"||!Number.isSafeInteger(length.value)||length.value<0)return EMPTY_CONTEXT_METER_SEGMENTS;const segments=[];for(let index=0;index<Math.min(length.value,MAX_CONTEXT_METER_SEGMENTS);index+=1){const entry=getOwnDataDescriptor(value,String(index));if(entry===MISSING_OWN_DATA_DESCRIPTOR||entry===UNSAFE_OWN_DATA_DESCRIPTOR||entry.value===null||typeof entry.value!="object"||Array.isArray(entry.value))continue;const label=getOwnDataDescriptor(entry.value,"label"),segmentValue=getOwnDataDescriptor(entry.value,"value"),tone=getOwnDataDescriptor(entry.value,"tone"),color=getOwnDataDescriptor(entry.value,"color"),disabled=getOwnDataDescriptor(entry.value,"disabled");if(label===MISSING_OWN_DATA_DESCRIPTOR||label===UNSAFE_OWN_DATA_DESCRIPTOR||segmentValue===MISSING_OWN_DATA_DESCRIPTOR||segmentValue===UNSAFE_OWN_DATA_DESCRIPTOR||tone===UNSAFE_OWN_DATA_DESCRIPTOR||color===UNSAFE_OWN_DATA_DESCRIPTOR||disabled===UNSAFE_OWN_DATA_DESCRIPTOR||typeof label.value!="string"||typeof segmentValue.value!="number"||tone!==MISSING_OWN_DATA_DESCRIPTOR&&typeof tone.value!="string"||color!==MISSING_OWN_DATA_DESCRIPTOR&&typeof color.value!="string"||disabled!==MISSING_OWN_DATA_DESCRIPTOR&&typeof disabled.value!="boolean")continue;const toneValue=tone===MISSING_OWN_DATA_DESCRIPTOR?void 0:tone.value,colorValue=color===MISSING_OWN_DATA_DESCRIPTOR?void 0:color.value,disabledValue=disabled===MISSING_OWN_DATA_DESCRIPTOR?void 0:disabled.value;segments.push(Object.freeze({label:label.value,value:segmentValue.value,...toneValue===void 0?{}:{tone:toneValue},...colorValue===void 0?{}:{color:colorValue},...disabledValue===void 0?{}:{disabled:disabledValue}}))}return Object.freeze(segments)}catch{return EMPTY_CONTEXT_METER_SEGMENTS}}function formatCount(n,locale){return Math.round(finiteNumber(n,0)).toLocaleString(resolveIntlLocale(locale))}class LyraContextMeter extends LyraElement{constructor(){super(...arguments),this.segments=[],this.total=0,this._shape="bar",this.label="",this.showLegend=!1,this.legendDisplay="label",this.interactive=!1,this.selectedIndices=[],this.projectedSegments=EMPTY_CONTEXT_METER_SEGMENTS}static{this.defaultStrings={...super.defaultStrings,contextMeterLabeledSummary:LYRA_DEFAULT_contextMeterLabeledSummary,contextMeterSegmentLabel:LYRA_DEFAULT_contextMeterSegmentLabel,contextMeterUsed:LYRA_DEFAULT_contextMeterUsed,contextMeterUsedOfTotal:LYRA_DEFAULT_contextMeterUsedOfTotal}}static{this.ownedCollectionProperties=Object.freeze(["segments","selectedIndices"])}static{this.immutableEventDetails=Object.freeze(["lr-segment-activate"])}static{this.styles=[LyraElement.styles,srOnly,styles]}get shape(){return this._shape}set shape(value){const normalized=value==="ring"?"ring":"bar",previous=this._shape;if(previous===normalized){value!==normalized&&this.requestUpdate("shape",previous);return}this._shape=normalized,this.requestUpdate("shape",previous)}get effectiveSegments(){const source=this.segments;return source!==this.projectedSegmentsSource&&(this.projectedSegmentsSource=source,this.projectedSegments=projectContextMeterSegments(source)),this.projectedSegments}normalizedSegmentValue(segment){return Math.max(0,finiteNumber(segment.value,0))}get usedTotal(){return this.effectiveSegments.reduce((sum,segment)=>{const next=sum+this.normalizedSegmentValue(segment);return finiteNumber(next,Number.MAX_VALUE)},0)}ratios(){const total=Math.max(0,finiteNumber(this.total,0));if(total<=0)return[];const out=[];let cumulative=0;for(const segment of this.effectiveSegments){const raw=this.normalizedSegmentValue(segment),available=Math.max(0,1-cumulative),ratio=Math.min(raw/total,available);cumulative+=ratio,out.push({segment,value:raw,ratio})}return out}get clampedUsedTotal(){const total=Math.max(0,finiteNumber(this.total,0));return{used:total>0?Math.min(this.usedTotal,total):this.usedTotal,total}}get summary(){const{used:usedForSummary,total:totalValue}=this.clampedUsedTotal,used=formatCount(usedForSummary,this.effectiveLocale),phrase=totalValue>0?this.localize("contextMeterUsedOfTotal",void 0,{used,total:formatCount(totalValue,this.effectiveLocale)}):this.localize("contextMeterUsed",void 0,{used});return this.label?this.localize("contextMeterLabeledSummary",void 0,{label:this.label,summary:phrase}):phrase}segmentTitle(segment,value=this.normalizedSegmentValue(segment)){return this.localize("contextMeterSegmentLabel",void 0,{label:segment.label,count:formatCount(value,this.effectiveLocale)})}segmentColor(segment){return segment.color?sanitizeCssColor(segment.color):void 0}canonicalSelectedIndices(){const count=this.effectiveSegments.length;return[...new Set(this.selectedIndices.filter(candidate=>typeof candidate=="number"&&Number.isInteger(candidate)&&candidate>=0&&candidate<count))].sort((left,right)=>left-right)}isSelected(index){return this.canonicalSelectedIndices().includes(index)}formatShare(ratio){return getNumberFormat(this.effectiveLocale,{style:"percent",maximumFractionDigits:1}).format(ratio)}activateSegment(index){if(!this.interactive)return;const segment=this.effectiveSegments[index];!segment||segment.disabled||requestThenCommit({requestDetail:{index,label:segment.label,value:this.normalizedSegmentValue(segment)},emitRequest:(detail,init)=>this.emit("lr-segment-activate",detail,init),commit:()=>{const selected=this.canonicalSelectedIndices();this.selectedIndices=selected.includes(index)?selected.filter(candidate=>candidate!==index):[...selected,index].sort((left,right)=>left-right)}})}onArcKeyDown(event,index){event.key!=="Enter"&&event.key!==" "||(event.preventDefault(),this.activateSegment(index))}segmentPart(base,index,segment){return statePart(base,{selected:this.isSelected(index),empty:this.normalizedSegmentValue(segment)===0,disabled:segment.disabled===!0})}renderSemantics(){const{used,total}=this.clampedUsedTotal,accessibleName=this.summary;return html`
|
|
2
2
|
<div
|
|
3
3
|
part="semantic"
|
|
4
4
|
class="sr-only"
|
|
@@ -16,9 +16,10 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
16
16
|
${this.label?html`<div part="label" aria-hidden="true">${this.label}</div>`:nothing}
|
|
17
17
|
<div part="track" aria-hidden=${this.interactive?nothing:"true"}>
|
|
18
18
|
${ratios.map(({segment,value,ratio},index)=>{const title=this.segmentTitle(segment,value),selected=this.isSelected(index),style=styleMap({flexBasis:`${(ratio*100).toFixed(4)}%`,...this.segmentColor(segment)?{"--lr-context-meter-segment-color":this.segmentColor(segment)}:{}});return this.interactive?html`<button
|
|
19
|
-
part=${this.
|
|
19
|
+
part=${this.segmentPart("segment",index,segment)}
|
|
20
20
|
type="button"
|
|
21
21
|
data-tone=${segment.tone??"neutral"}
|
|
22
|
+
?disabled=${segment.disabled===!0}
|
|
22
23
|
aria-pressed=${selected?"true":"false"}
|
|
23
24
|
aria-label=${title}
|
|
24
25
|
title=${title}
|
|
@@ -34,14 +35,15 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
34
35
|
</div>
|
|
35
36
|
`}renderRing(){const ratios=this.ratios();let cumulative=0;const arcs=ratios.map(({segment,value,ratio},index)=>{const segLen=ratio*CIRCUMFERENCE,dashoffset=-cumulative*CIRCUMFERENCE;cumulative+=ratio;const title=this.segmentTitle(segment,value),selected=this.isSelected(index);return svg`
|
|
36
37
|
<circle
|
|
37
|
-
part=${this.interactive?this.
|
|
38
|
+
part=${this.interactive?this.segmentPart("segment",index,segment):"segment"}
|
|
38
39
|
data-tone=${segment.tone??"neutral"}
|
|
39
40
|
role=${this.interactive?"button":nothing}
|
|
40
|
-
tabindex=${this.interactive?"0":nothing}
|
|
41
|
+
tabindex=${this.interactive&&!segment.disabled?"0":nothing}
|
|
42
|
+
aria-disabled=${this.interactive&&segment.disabled?"true":nothing}
|
|
41
43
|
aria-pressed=${this.interactive?selected?"true":"false":nothing}
|
|
42
44
|
aria-label=${this.interactive?title:nothing}
|
|
43
|
-
@click=${this.interactive?()=>this.activateSegment(index):nothing}
|
|
44
|
-
@keydown=${this.interactive?event=>this.onArcKeyDown(event,index):nothing}
|
|
45
|
+
@click=${this.interactive&&!segment.disabled?()=>this.activateSegment(index):nothing}
|
|
46
|
+
@keydown=${this.interactive&&!segment.disabled?event=>this.onArcKeyDown(event,index):nothing}
|
|
45
47
|
style=${styleMap(this.segmentColor(segment)?{"--lr-context-meter-segment-color":this.segmentColor(segment)}:{})}
|
|
46
48
|
cx=${CENTER}
|
|
47
49
|
cy=${CENTER}
|
|
@@ -75,8 +77,9 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
75
77
|
${showsPercent?html`<span part="legend-percent"
|
|
76
78
|
>${this.formatShare(ratios[index]?.ratio??0)}</span
|
|
77
79
|
>`:nothing}`;return this.interactive?html`<button
|
|
78
|
-
part=${this.
|
|
80
|
+
part=${this.segmentPart("legend-item",index,segment)}
|
|
79
81
|
type="button"
|
|
82
|
+
?disabled=${segment.disabled===!0}
|
|
80
83
|
aria-pressed=${selected?"true":"false"}
|
|
81
84
|
@click=${()=>this.activateSegment(index)}
|
|
82
85
|
>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{inline-size:100%;min-inline-size:0;display:block}:host([shape=ring]){inline-size:var(--lr-size-8em);block-size:var(--lr-size-8em);display:inline-block}[part=base]{gap:var(--lr-space-xs);flex-direction:column;display:flex}:host([shape=ring]) [part=base]{block-size:100%;inline-size:100%}[part=label]{overflow-wrap:anywhere;min-inline-size:0;font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);font-family:var(--lr-font)}[part=track]{block-size:var(--lr-context-meter-track-size,var(--lr-size-0-5rem));border-radius:var(--lr-context-meter-track-radius,calc(var(--lr-radius) * .5));background:var(--lr-context-meter-track-bg,color-mix(in srgb, var(--lr-color-border) 30%, transparent));align-items:stretch;display:flex;position:relative;overflow:hidden}[part~=segment]{min-inline-size:calc(var(--lr-border-width-thin) * 2);background:var(--lr-color-border);block-size:100%;transition:flex-basis var(--lr-transition-base);flex:none;display:block}[part~=segment]:not(:first-of-type){border-inline-start:var(--lr-border-width-thin) solid var(--lr-context-meter-segment-seam-color,var(--lr-color-surface))}[part~=segment][data-tone=brand]{background:var(--lr-color-brand)}[part~=segment][data-tone=success]{background:var(--lr-color-success)}[part~=segment][data-tone=warning]{background:var(--lr-color-warning)}[part~=segment][data-tone=danger]{background:var(--lr-color-danger)}[part~=segment][style*=--lr-context-meter-segment-color]{background:var(--lr-context-meter-segment-color)}[part=legend]{align-items:center;gap:var(--lr-space-2xs) var(--lr-space-s);font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);flex-wrap:wrap;margin-block-start:var(--lr-space-xs);display:flex}[part~=legend-item]{align-items:center;gap:var(--lr-space-2xs);min-inline-size:0;display:inline-flex}[part=legend-swatch]{inline-size:var(--lr-context-meter-legend-swatch-size,var(--lr-size-0-625rem));block-size:var(--lr-context-meter-legend-swatch-size,var(--lr-size-0-625rem));border-radius:var(--lr-radius-xs);background:var(--lr-color-border);flex:none}[part=legend-swatch][data-tone=brand]{background:var(--lr-color-brand)}[part=legend-swatch][data-tone=success]{background:var(--lr-color-success)}[part=legend-swatch][data-tone=warning]{background:var(--lr-color-warning)}[part=legend-swatch][data-tone=danger]{background:var(--lr-color-danger)}[part=legend-swatch][style*=--lr-context-meter-segment-color]{background:var(--lr-context-meter-segment-color)}[part=legend-label]{overflow-wrap:anywhere;min-inline-size:0}button[part~=segment]{appearance:none;font:inherit;color:inherit;cursor:pointer;border:0;padding:0}button[part~=segment]:where(:hover){outline:var(--lr-border-width-thin) solid var(--lr-color-text-quiet);outline-offset:calc(var(--lr-border-width-thin) * -1)}button[part~=segment]:where(:active){outline-color:var(--lr-color-text)}button[part~=segment]:where(:focus-visible){outline:var(--lr-focus-ring);outline-offset:calc(var(--lr-focus-ring-width) * -1)}:host([shape=ring]) [part~=segment]:where(:hover){opacity:.8}:host([shape=ring]) [part~=segment]:where(:active){opacity:.6}:host([shape=ring]) [part~=segment]:where(:focus-visible){opacity:.8;outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}button[part~=legend-item]{appearance:none;padding:var(--lr-space-2xs);border-radius:var(--lr-radius-xs);font:inherit;color:inherit;text-align:start;cursor:pointer;transition:var(--lr-transition-interactive);background:0 0;border:0}button[part~=legend-item]:where(:hover){background:var(--lr-color-brand-quiet)}button[part~=legend-item]:where(:active){background:var(--lr-color-border)}button[part~=legend-item]:where(:focus-visible){outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}button[part~=segment-selected],button[part~=legend-item-selected]{box-shadow:inset 0 0 0 var(--lr-context-meter-selected-ring-width,var(--lr-border-width-thick)) var(--lr-context-meter-selected-ring-color,var(--lr-color-text))}:host([shape=ring]) [part~=segment-selected]{stroke-width:var(--lr-context-meter-selected-arc-stroke,16)}:host([shape=ring][show-legend]){block-size:auto}:host([shape=ring][show-legend]) svg[part=base]{inline-size:var(--lr-size-8em);block-size:var(--lr-size-8em)}:host([shape=ring]) svg[part=base]{display:block;overflow:visible}:host([shape=ring]) [part=track]{fill:none;stroke:color-mix(in srgb, var(--lr-color-border) 30%, transparent)}:host([shape=ring]) [part~=segment]{fill:none;stroke:var(--lr-color-border);stroke-linecap:butt;transition:stroke-dasharray var(--lr-transition-base), stroke-dashoffset var(--lr-transition-base)}:host([shape=ring]) [part~=segment][data-tone=brand]{stroke:var(--lr-color-brand)}:host([shape=ring]) [part~=segment][data-tone=success]{stroke:var(--lr-color-success)}:host([shape=ring]) [part~=segment][data-tone=warning]{stroke:var(--lr-color-warning)}:host([shape=ring]) [part~=segment][data-tone=danger]{stroke:var(--lr-color-danger)}:host([shape=ring]) [part~=segment][style*=--lr-context-meter-segment-color]{stroke:var(--lr-context-meter-segment-color)}:host([shape=ring]) [part=label]{overflow:hidden}:host([shape=ring]) .ring-label{overflow-wrap:anywhere;block-size:100%;inline-size:100%;color:var(--lr-color-text-quiet);font-size:var(--lr-
|
|
1
|
+
import{css}from"lit";const styles=css`:host{inline-size:100%;min-inline-size:0;display:block}:host([shape=ring]){inline-size:var(--lr-size-8em);block-size:var(--lr-size-8em);display:inline-block}[part=base]{gap:var(--lr-space-xs);flex-direction:column;display:flex}:host([shape=ring]) [part=base]{block-size:100%;inline-size:100%}[part=label]{overflow-wrap:anywhere;min-inline-size:0;font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);font-family:var(--lr-font)}[part=track]{block-size:var(--lr-context-meter-track-size,var(--lr-size-0-5rem));border-radius:var(--lr-context-meter-track-radius,calc(var(--lr-radius) * .5));background:var(--lr-context-meter-track-bg,color-mix(in srgb, var(--lr-color-border) 30%, transparent));align-items:stretch;display:flex;position:relative;overflow:hidden}[part~=segment]{min-inline-size:calc(var(--lr-border-width-thin) * 2);background:var(--lr-color-border);block-size:100%;transition:flex-basis var(--lr-transition-base);flex:none;display:block}[part~=segment]:not(:first-of-type){border-inline-start:var(--lr-border-width-thin) solid var(--lr-context-meter-segment-seam-color,var(--lr-color-surface))}[part~=segment][data-tone=brand]{background:var(--lr-color-brand)}[part~=segment][data-tone=success]{background:var(--lr-color-success)}[part~=segment][data-tone=warning]{background:var(--lr-color-warning)}[part~=segment][data-tone=danger]{background:var(--lr-color-danger)}[part~=segment][style*=--lr-context-meter-segment-color]{background:var(--lr-context-meter-segment-color)}[part=legend]{align-items:center;gap:var(--lr-space-2xs) var(--lr-space-s);font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);flex-wrap:wrap;margin-block-start:var(--lr-space-xs);display:flex}[part~=legend-item]{align-items:center;gap:var(--lr-space-2xs);min-inline-size:0;display:inline-flex}[part=legend-swatch]{inline-size:var(--lr-context-meter-legend-swatch-size,var(--lr-size-0-625rem));block-size:var(--lr-context-meter-legend-swatch-size,var(--lr-size-0-625rem));border-radius:var(--lr-radius-xs);background:var(--lr-color-border);flex:none}[part=legend-swatch][data-tone=brand]{background:var(--lr-color-brand)}[part=legend-swatch][data-tone=success]{background:var(--lr-color-success)}[part=legend-swatch][data-tone=warning]{background:var(--lr-color-warning)}[part=legend-swatch][data-tone=danger]{background:var(--lr-color-danger)}[part=legend-swatch][style*=--lr-context-meter-segment-color]{background:var(--lr-context-meter-segment-color)}[part=legend-label]{overflow-wrap:anywhere;min-inline-size:0}button[part~=segment]{appearance:none;font:inherit;color:inherit;cursor:pointer;border:0;padding:0}button[part~=segment]:where(:not(:disabled)):where(:hover){outline:var(--lr-border-width-thin) solid var(--lr-color-text-quiet);outline-offset:calc(var(--lr-border-width-thin) * -1)}button[part~=segment]:where(:not(:disabled)):where(:active){outline-color:var(--lr-color-text)}button[part~=segment]:where(:focus-visible){outline:var(--lr-focus-ring);outline-offset:calc(var(--lr-focus-ring-width) * -1)}:host([shape=ring]) [part~=segment]:where(:not([aria-disabled=true])):where(:hover){opacity:.8}:host([shape=ring]) [part~=segment]:where(:not([aria-disabled=true])):where(:active){opacity:.6}:host([shape=ring]) [part~=segment]:where(:focus-visible){opacity:.8;outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}button[part~=legend-item]{appearance:none;padding:var(--lr-space-2xs);border-radius:var(--lr-radius-xs);font:inherit;color:inherit;text-align:start;cursor:pointer;transition:var(--lr-transition-interactive);background:0 0;border:0}button[part~=legend-item]:where(:not(:disabled)):where(:hover){background:var(--lr-color-brand-quiet)}button[part~=legend-item]:where(:not(:disabled)):where(:active){background:var(--lr-color-border)}button[part~=legend-item]:where(:focus-visible){outline:var(--lr-focus-ring);outline-offset:var(--lr-focus-ring-offset)}button[part~=segment-selected],button[part~=legend-item-selected]{box-shadow:inset 0 0 0 var(--lr-context-meter-selected-ring-width,var(--lr-border-width-thick)) var(--lr-context-meter-selected-ring-color,var(--lr-color-text))}:host([shape=ring]) [part~=segment-selected]{stroke-width:var(--lr-context-meter-selected-arc-stroke,16)}button[part~=segment]:where(:disabled),button[part~=legend-item]:where(:disabled),:host([shape=ring]) [part~=segment]:where([aria-disabled=true]){cursor:default;opacity:var(--lr-context-meter-disabled-opacity,var(--lr-opacity-disabled))}:host([shape=ring][show-legend]){block-size:auto}:host([shape=ring][show-legend]) svg[part=base]{inline-size:var(--lr-size-8em);block-size:var(--lr-size-8em)}:host([shape=ring]) svg[part=base]{display:block;overflow:visible}:host([shape=ring]) [part=track]{fill:none;stroke:color-mix(in srgb, var(--lr-color-border) 30%, transparent)}:host([shape=ring]) [part~=segment]{fill:none;stroke:var(--lr-color-border);stroke-linecap:butt;transition:stroke-dasharray var(--lr-transition-base), stroke-dashoffset var(--lr-transition-base)}:host([shape=ring]) [part~=segment][data-tone=brand]{stroke:var(--lr-color-brand)}:host([shape=ring]) [part~=segment][data-tone=success]{stroke:var(--lr-color-success)}:host([shape=ring]) [part~=segment][data-tone=warning]{stroke:var(--lr-color-warning)}:host([shape=ring]) [part~=segment][data-tone=danger]{stroke:var(--lr-color-danger)}:host([shape=ring]) [part~=segment][style*=--lr-context-meter-segment-color]{stroke:var(--lr-context-meter-segment-color)}:host([shape=ring]) [part=label]{font-size:var(--lr-size-1em);overflow:hidden}:host([shape=ring]) .ring-label{overflow-wrap:anywhere;block-size:100%;inline-size:100%;color:var(--lr-color-text-quiet);font-size:calc(var(--lr-size-1em) * .625);line-height:var(--lr-line-height-compact);text-align:center;text-transform:uppercase;justify-content:center;align-items:center;display:flex;overflow:hidden}@media (forced-colors:active){[part~=segment],[part=legend-swatch]{forced-color-adjust:none;border:var(--lr-border-width-thin) solid Canvas;background:canvastext}[part~=segment][data-tone=success],[part=legend-swatch][data-tone=success]{border-style:dashed}[part~=segment][data-tone=warning],[part=legend-swatch][data-tone=warning]{border-style:dotted}[part~=segment][data-tone=danger],[part=legend-swatch][data-tone=danger]{border-style:double}:host([shape=ring]) [part~=segment]{fill:none;stroke:canvastext}:host([shape=ring]) [part~=segment][data-tone=success]{stroke-dasharray:8 3}:host([shape=ring]) [part~=segment][data-tone=warning]{stroke-dasharray:2 3}:host([shape=ring]) [part~=segment][data-tone=danger]{stroke-dasharray:8 2 2 2}button[part~=segment-selected]{box-shadow:inset 0 0 0 var(--lr-border-width-thick) Highlight}button[part~=legend-item-selected]{outline:var(--lr-border-width-thick) solid Highlight;outline-offset:calc(var(--lr-border-width-thick) * -1)}:host([shape=ring]) [part~=segment-selected]{stroke:highlight}}@media (prefers-reduced-motion:reduce){[part~=segment],button[part~=legend-item]{transition:none!important}}`;export{styles};
|
|
@@ -219,7 +219,9 @@ filterDebounce:number;
|
|
|
219
219
|
get filteredCount():number;
|
|
220
220
|
/** Keeps matching descendants and their ancestors during tree filtering. */
|
|
221
221
|
filterFromLeafRows:boolean;private _filters;
|
|
222
|
-
/** Clone-owned controlled per-column filters.
|
|
222
|
+
/** Clone-owned controlled per-column filters. Re-binding an equal value is not a change: the
|
|
223
|
+
* held value and its reference survive, nothing re-renders, and no server request is
|
|
224
|
+
* rescheduled, so a host that re-binds on every render cannot postpone the request forever. */
|
|
223
225
|
get filters():readonly DataGridFilter[];set filters(value:readonly DataGridFilter[]);private _groupBy;
|
|
224
226
|
/** One or more field/column identifiers used to group client rows.
|
|
225
227
|
* @default null */
|
|
@@ -295,7 +297,8 @@ get selectedRows():readonly Row[];set selectedRows(next:readonly Row[]);private
|
|
|
295
297
|
server:boolean;
|
|
296
298
|
/** Density on the shared Lyra size ladder. */
|
|
297
299
|
size:DataGridSize;private _sort;
|
|
298
|
-
/** Clone-owned controlled multi-column sorting state.
|
|
300
|
+
/** Clone-owned controlled multi-column sorting state. Like `filters`, re-binding an equal value
|
|
301
|
+
* is not a change and reschedules nothing. */
|
|
299
302
|
get sort():SortingState;set sort(value:SortingState);
|
|
300
303
|
/** Starts new sort cycles descending. */
|
|
301
304
|
sortDescFirst:boolean;
|