@dynatrace/strato-components 3.5.2 → 3.6.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/buttons/button/Button.css +15 -15
- package/buttons/button/Button.sty.js +4 -4
- package/buttons/intent-button/IntentButton.css +1 -1
- package/buttons/intent-button/IntentButton.sty.js +1 -1
- package/buttons/notify-button/NotifyButton.css +2 -2
- package/buttons/notify-button/NotifyButton.sty.js +2 -2
- package/charts/annotations-chart/AnnotationsChart.js +9 -1
- package/charts/annotations-chart/components/AnnotationsDisplay.d.ts +1 -0
- package/charts/annotations-chart/constants.js +2 -1
- package/charts/annotations-chart/types/annotations-chart-config-props.d.ts +9 -0
- package/charts/annotations-chart/types/annotations-chart-props.d.ts +8 -0
- package/charts/annotations-chart/utils/annotations-chart-config.js +1 -0
- package/charts/annotations-chart/utils/populate-missing-tooltip-props.d.ts +5 -5
- package/charts/annotations-chart/utils/populate-missing-tooltip-props.js +8 -3
- package/charts/categorical-bar/components/interactions/overlays/CategoricalBarChartInspectOverlay.css +2 -2
- package/charts/categorical-bar/components/interactions/overlays/CategoricalBarChartInspectOverlay.sty.js +2 -2
- package/charts/core/components/annotations/AnnotationsAtom.css +1 -1
- package/charts/core/components/annotations/AnnotationsAtom.sty.js +1 -1
- package/charts/core/components/annotations/components/AnnotationsRenderer.d.ts +0 -2
- package/charts/core/components/annotations/components/AnnotationsRenderer.js +4 -3
- package/charts/core/components/annotations/components/canvas/AnnotationsCanvasLayout.css +1 -1
- package/charts/core/components/annotations/components/canvas/AnnotationsCanvasLayout.sty.js +1 -1
- package/charts/core/components/annotations/components/displays/AnnotationsContainer.d.ts +14 -0
- package/charts/core/components/annotations/components/displays/AnnotationsContainer.js +30 -0
- package/charts/core/components/annotations/components/displays/AnnotationsNumericalDisplay.d.ts +1 -0
- package/charts/core/components/annotations/components/displays/AnnotationsNumericalDisplay.js +13 -18
- package/charts/core/components/annotations/components/displays/AnnotationsTimeDisplay.d.ts +1 -0
- package/charts/core/components/annotations/components/displays/AnnotationsTimeDisplay.js +13 -18
- package/charts/core/components/annotations/components/overlays/AnnotationsOverlays.css +1 -1
- package/charts/core/components/annotations/components/overlays/AnnotationsOverlays.sty.js +1 -1
- package/charts/core/components/annotations/components/overlays/AnnotationsScrollWrapper.css +1 -1
- package/charts/core/components/annotations/components/overlays/AnnotationsScrollWrapper.sty.js +1 -1
- package/charts/core/components/annotations/components/tooltip/AnnotationsCustomizedTooltip.js +2 -1
- package/charts/core/components/annotations/components/tooltip/AnnotationsDefaultTooltipContent.d.ts +20 -0
- package/charts/core/components/annotations/components/tooltip/AnnotationsDefaultTooltipContent.js +145 -0
- package/charts/core/components/annotations/components/tooltip/AnnotationsOverlayTooltip.d.ts +24 -0
- package/charts/core/components/annotations/components/tooltip/AnnotationsOverlayTooltip.js +136 -0
- package/charts/core/components/annotations/components/tooltip/types/annotations-tooltip-props.d.ts +1 -1
- package/charts/core/components/annotations/components/tooltip/utils/prepare-custom-tooltip-data.js +8 -11
- package/charts/core/components/annotations/constants.d.ts +1 -0
- package/charts/core/components/annotations/constants.js +2 -0
- package/charts/core/components/annotations/hooks/useOverlayEvents.js +15 -0
- package/charts/core/components/axes/Axis.css +1 -1
- package/charts/core/components/axes/Axis.sty.js +1 -1
- package/charts/core/components/axes/components/PanningControls/PanningControls.css +16 -16
- package/charts/core/components/axes/components/PanningControls/PanningControls.sty.js +2 -2
- package/charts/core/components/axes/utils/calculate-axis-size.d.ts +1 -1
- package/charts/core/components/axes/utils/calculate-axis-size.js +3 -1
- package/charts/core/components/axes/utils/get-tick-label-props.d.ts +34 -0
- package/charts/core/components/axes/utils/get-tick-label-props.js +47 -1
- package/charts/core/components/axes/utils/tick-formatters.js +9 -1
- package/charts/core/components/chart-grid/ChartGrid.css +3 -3
- package/charts/core/components/chart-grid/ChartGrid.sty.js +3 -3
- package/charts/core/components/chart-layout/components/styles.css +15 -15
- package/charts/core/components/chart-layout/components/styles.sty.js +4 -4
- package/charts/core/components/chart-states/ChartState.css +4 -4
- package/charts/core/components/chart-states/ChartState.sty.js +4 -4
- package/charts/core/components/crosshair/components/Magnifier.css +7 -7
- package/charts/core/components/crosshair/components/Magnifier.sty.js +7 -7
- package/charts/core/components/interactions-overlay/InteractionsOverlay.css +5 -5
- package/charts/core/components/interactions-overlay/InteractionsOverlay.sty.js +2 -2
- package/charts/core/components/legend/categorical/ChartLegend.css +1 -1
- package/charts/core/components/legend/categorical/ChartLegend.sty.js +1 -1
- package/charts/core/components/legend/categorical/components/ChartLegendIcon/ChartLegendIcon.css +3 -3
- package/charts/core/components/legend/categorical/components/ChartLegendIcon/ChartLegendIcon.sty.js +3 -3
- package/charts/core/components/legend/categorical/components/ChartLegendItem/ChartLegendItem.css +17 -17
- package/charts/core/components/legend/categorical/components/ChartLegendItem/ChartLegendItem.sty.js +6 -6
- package/charts/core/components/legend/categorical/components/ChartLegendSeriesActions/ChartLegendSeriesActions.css +3 -3
- package/charts/core/components/legend/categorical/components/ChartLegendSeriesActions/ChartLegendSeriesActions.sty.js +1 -1
- package/charts/core/components/legend/categorical/components/ChartVirtualizedLegendGrid.css +8 -8
- package/charts/core/components/legend/categorical/components/ChartVirtualizedLegendGrid.sty.js +4 -4
- package/charts/core/components/legend/range/RangeLegend.css +3 -3
- package/charts/core/components/legend/range/RangeLegend.sty.js +1 -1
- package/charts/core/components/legend/range/components/RangeLegendBoundaryLabel/RangeLegendBoundaryLabel.css +2 -2
- package/charts/core/components/legend/range/components/RangeLegendBoundaryLabel/RangeLegendBoundaryLabel.sty.js +1 -1
- package/charts/core/components/legend/range/components/RangeLegendItemLabel/RangeLegendItemLabel.css +1 -1
- package/charts/core/components/legend/range/components/RangeLegendItemLabel/RangeLegendItemLabel.sty.js +1 -1
- package/charts/core/components/legend/range/components/RangeLegendItemMarker/RangeLegendItemMarker.css +3 -3
- package/charts/core/components/legend/range/components/RangeLegendItemMarker/RangeLegendItemMarker.sty.js +1 -1
- package/charts/core/components/legend/range/components/RangeLegendMarkers/RangeLegendMarkers.css +3 -3
- package/charts/core/components/legend/range/components/RangeLegendMarkers/RangeLegendMarkers.sty.js +1 -1
- package/charts/core/components/legend/range/components/RangeLegendSegments/RangeLegendSegments.css +5 -5
- package/charts/core/components/legend/range/components/RangeLegendSegments/RangeLegendSegments.sty.js +1 -1
- package/charts/core/components/loader-overlay/LoaderOverlay.css +2 -2
- package/charts/core/components/loader-overlay/LoaderOverlay.sty.js +2 -2
- package/charts/core/components/overlay-tooltip/OverlayTooltip.d.ts +3 -0
- package/charts/core/components/overlay-tooltip/OverlayTooltip.js +4 -0
- package/charts/core/components/overlay-tooltip/_to-be-removed/DummyInteractionsOverlay.js +8 -5
- package/charts/core/components/overlay-tooltip/_to-be-removed/_OverlayTooltipWIPStory.js +2 -2
- package/charts/core/components/overlay-tooltip/components/DynamicTooltipRenderer.js +7 -6
- package/charts/core/components/overlay-tooltip/components/Footer.d.ts +13 -0
- package/charts/core/components/overlay-tooltip/components/{TooltipFooter.js → Footer.js} +5 -8
- package/charts/core/components/overlay-tooltip/components/global-actions/Action.js +6 -0
- package/charts/core/components/overlay-tooltip/components/global-actions/GlobalActions.d.ts +2 -2
- package/charts/core/components/overlay-tooltip/components/global-actions/GlobalActions.js +4 -14
- package/charts/core/components/overlay-tooltip/components/global-actions/actions.css +4 -4
- package/charts/core/components/overlay-tooltip/components/global-actions/actions.sty.js +2 -2
- package/charts/core/components/overlay-tooltip/components/header/Header.css +6 -6
- package/charts/core/components/overlay-tooltip/components/header/Header.d.ts +1 -0
- package/charts/core/components/overlay-tooltip/components/header/Header.sty.js +6 -6
- package/charts/core/components/overlay-tooltip/components/header/types/header.d.ts +3 -3
- package/charts/core/components/overlay-tooltip/components/series/SeriesItem.js +31 -8
- package/charts/core/components/overlay-tooltip/components/series/SeriesItemContent.d.ts +5 -0
- package/charts/core/components/overlay-tooltip/components/series/SeriesItemContent.js +35 -3
- package/charts/core/components/overlay-tooltip/components/series/SeriesSymbol.js +1 -1
- package/charts/core/components/overlay-tooltip/components/series/hooks/use-series-item-display-state.d.ts +5 -0
- package/charts/core/components/overlay-tooltip/components/series/hooks/use-series-item-display-state.js +58 -6
- package/charts/core/components/overlay-tooltip/components/series/seriesSymbol.css +2 -2
- package/charts/core/components/overlay-tooltip/components/series/seriesSymbol.sty.js +2 -2
- package/charts/core/components/overlay-tooltip/components/series/utils/get-name-text-style.d.ts +1 -1
- package/charts/core/components/overlay-tooltip/components/series/utils/get-name-text-style.js +4 -3
- package/charts/core/components/overlay-tooltip/hooks/useTooltipImperativeHandle.js +3 -11
- package/charts/core/components/overlay-tooltip/overlay.js +8 -8
- package/charts/core/components/overlay-tooltip/tooltip.css +92 -44
- package/charts/core/components/overlay-tooltip/tooltip.sty.d.ts +22 -0
- package/charts/core/components/overlay-tooltip/tooltip.sty.js +46 -34
- package/charts/core/components/overlay-tooltip/types/series.d.ts +2 -0
- package/charts/core/components/overlay-tooltip/types.d.ts +11 -32
- package/charts/core/components/overlay-tooltip/useTooltipActions.d.ts +21 -0
- package/charts/core/components/overlay-tooltip/useTooltipActions.js +85 -0
- package/charts/core/components/overlay-tooltip/useTooltipReducer.d.ts +1 -4
- package/charts/core/components/overlay-tooltip/useTooltipReducer.js +9 -11
- package/charts/core/components/overlay-tooltip/utils/build-content.d.ts +1 -0
- package/charts/core/components/overlay-tooltip/utils/build-content.js +41 -36
- package/charts/core/components/overlay-tooltip/utils/estimate-series-item-size.js +19 -3
- package/charts/core/components/overlays/ChartOverlaysBorder.css +5 -5
- package/charts/core/components/overlays/ChartOverlaysBorder.sty.js +5 -5
- package/charts/core/components/selection-area/SelectionArea.css +9 -9
- package/charts/core/components/selection-area/SelectionArea.sty.js +4 -4
- package/charts/core/components/shape/BubbleShape/BubbleShape.css +5 -5
- package/charts/core/components/shape/BubbleShape/BubbleShape.sty.js +3 -3
- package/charts/core/components/shape/EmojiShape/EmojiShape.css +3 -3
- package/charts/core/components/shape/EmojiShape/EmojiShape.sty.js +1 -1
- package/charts/core/components/shape/IconShape/IconShape.css +3 -3
- package/charts/core/components/shape/IconShape/IconShape.sty.js +1 -1
- package/charts/core/components/shape/styles/DataPointShape.css +8 -8
- package/charts/core/components/shape/styles/DataPointShape.sty.js +4 -4
- package/charts/core/components/shared-chart-interactions/SharedChartInteractions.css +1 -1
- package/charts/core/components/shared-chart-interactions/SharedChartInteractions.sty.js +1 -1
- package/charts/core/components/single-value-renderer/SingleValueRenderer.css +5 -5
- package/charts/core/components/single-value-renderer/SingleValueRenderer.sty.js +5 -5
- package/charts/core/components/single-value-renderer/components/ContentGrid.css +1 -1
- package/charts/core/components/single-value-renderer/components/ContentGrid.sty.js +1 -1
- package/charts/core/components/single-value-renderer/components/Icon.css +3 -3
- package/charts/core/components/single-value-renderer/components/Icon.sty.js +2 -2
- package/charts/core/components/single-value-renderer/components/Label.css +1 -1
- package/charts/core/components/single-value-renderer/components/Label.sty.js +1 -1
- package/charts/core/components/single-value-renderer/components/SingleValueToolbar.css +1 -1
- package/charts/core/components/single-value-renderer/components/SingleValueToolbar.sty.js +1 -1
- package/charts/core/components/single-value-renderer/components/Value.css +5 -5
- package/charts/core/components/single-value-renderer/components/Value.sty.js +3 -3
- package/charts/core/components/single-value-renderer/components/trend/Trend.css +3 -3
- package/charts/core/components/single-value-renderer/components/trend/Trend.sty.js +3 -3
- package/charts/core/components/single-value-renderer/components/trend/components/Icon.css +2 -2
- package/charts/core/components/single-value-renderer/components/trend/components/Icon.sty.js +1 -1
- package/charts/core/components/single-value-renderer/types/single-value-base-props.d.ts +4 -0
- package/charts/core/components/sparkline-display/Sparkline.css +6 -6
- package/charts/core/components/sparkline-display/Sparkline.sty.js +2 -2
- package/charts/core/components/text-ellipsis/ChartTextEllipsis.css +7 -7
- package/charts/core/components/text-ellipsis/ChartTextEllipsis.sty.js +3 -3
- package/charts/core/components/threshold-bar/styles.css +9 -9
- package/charts/core/components/threshold-bar/styles.sty.js +2 -2
- package/charts/core/components/toolbar/ChartToolbarRenderer.css +16 -16
- package/charts/core/components/toolbar/ChartToolbarRenderer.sty.js +8 -8
- package/charts/core/components/toolbar/components/ChartDataMenu.css +2 -2
- package/charts/core/components/toolbar/components/ChartDataMenu.sty.js +1 -1
- package/charts/core/components/toolbar/components/Control.css +17 -17
- package/charts/core/components/toolbar/components/Control.sty.js +5 -5
- package/charts/core/components/toolbar/components/ToolbarMenu.css +4 -4
- package/charts/core/components/toolbar/components/ToolbarMenu.sty.js +2 -2
- package/charts/core/components/tooltip/ChartTooltip/ChartTooltip.css +6 -6
- package/charts/core/components/tooltip/ChartTooltip/ChartTooltip.sty.js +2 -2
- package/charts/core/components/tooltip/ChartTooltip/components/ActionItem/ActionItem.css +8 -8
- package/charts/core/components/tooltip/ChartTooltip/components/ActionItem/ActionItem.sty.js +3 -3
- package/charts/core/components/tooltip/ChartTooltip/components/SeriesItem/SeriesItem.css +2 -2
- package/charts/core/components/tooltip/ChartTooltip/components/SeriesItem/SeriesItem.sty.js +1 -1
- package/charts/core/components/tooltip/ChartTooltip/components/TimeFrameHeader/TimeFrameHeader.css +1 -1
- package/charts/core/components/tooltip/ChartTooltip/components/TimeFrameHeader/TimeFrameHeader.sty.js +1 -1
- package/charts/core/components/tooltip/InteractiveChartTooltip/components/BasicChartTooltip/BasicChartTooltip.css +6 -6
- package/charts/core/components/tooltip/InteractiveChartTooltip/components/BasicChartTooltip/BasicChartTooltip.sty.js +2 -2
- package/charts/core/components/tooltip/InteractiveChartTooltip/components/InteractiveChartTooltip.css +7 -7
- package/charts/core/components/tooltip/InteractiveChartTooltip/components/InteractiveChartTooltip.sty.js +6 -6
- package/charts/core/components/tooltip/InteractiveChartTooltip/headers/HeaderTooltip.css +1 -1
- package/charts/core/components/tooltip/InteractiveChartTooltip/headers/HeaderTooltip.sty.js +1 -1
- package/charts/core/components/tooltip/section-components/TooltipFooter/TooltipFooter.css +1 -1
- package/charts/core/components/tooltip/section-components/TooltipFooter/TooltipFooter.sty.js +1 -1
- package/charts/core/components/tooltip/section-components/TooltipHeader/TooltipHeader.css +2 -2
- package/charts/core/components/tooltip/section-components/TooltipHeader/TooltipHeader.sty.js +1 -1
- package/charts/core/components/tooltip/section-components/TooltipInfoContent/TooltipInfoContent.css +1 -1
- package/charts/core/components/tooltip/section-components/TooltipInfoContent/TooltipInfoContent.sty.js +1 -1
- package/charts/core/components/tooltip/section-components/TooltipItem/TooltipItem.css +3 -3
- package/charts/core/components/tooltip/section-components/TooltipItem/TooltipItem.sty.js +2 -2
- package/charts/core/components/tooltip/section-components/TooltipSymbolContent/TooltipSymbolContent.css +1 -1
- package/charts/core/components/tooltip/section-components/TooltipSymbolContent/TooltipSymbolContent.sty.js +1 -1
- package/charts/core/components/tooltip/section-components/VirtualizedTooltipBody/VirtualizedTooltipBody.css +2 -2
- package/charts/core/components/tooltip/section-components/VirtualizedTooltipBody/VirtualizedTooltipBody.sty.js +2 -2
- package/charts/core/components/tooltip/section-components/atoms/styles.css +3 -3
- package/charts/core/components/tooltip/section-components/atoms/styles.sty.js +3 -3
- package/charts/core/components/tooltip/shared/styles/SeriesBasedContent.css +12 -12
- package/charts/core/components/tooltip/shared/styles/SeriesBasedContent.sty.js +7 -7
- package/charts/core/components/tooltip/shared/styles/TooltipBody.css +1 -1
- package/charts/core/components/tooltip/shared/styles/TooltipBody.sty.js +1 -1
- package/charts/core/components/tooltip-atoms/components/HeaderChipAtom/HeaderChipAtom.css +1 -1
- package/charts/core/components/tooltip-atoms/components/HeaderChipAtom/HeaderChipAtom.sty.js +1 -1
- package/charts/core/components/tooltip-atoms/components/styles.css +4 -4
- package/charts/core/components/tooltip-atoms/components/styles.sty.js +4 -4
- package/charts/core/components/zoom/ZoomCursors.css +2 -2
- package/charts/core/components/zoom/ZoomCursors.sty.js +3 -3
- package/charts/core/hooks/useOverlayEventHandlers.js +8 -25
- package/charts/core/typographyStyles.css +1 -1
- package/charts/core/typographyStyles.sty.js +1 -1
- package/charts/core/utils/adaptively-reduce-horizontal-ticks.d.ts +32 -0
- package/charts/core/utils/adaptively-reduce-horizontal-ticks.js +61 -0
- package/charts/core/utils/has-horizontal-label-collision.d.ts +29 -0
- package/charts/core/utils/has-horizontal-label-collision.js +75 -0
- package/charts/core/utils/is-feature-enabled.d.ts +1 -0
- package/charts/core/utils/is-feature-enabled.js +2 -1
- package/charts/gantt-chart/GanttChartLine.css +1 -1
- package/charts/gantt-chart/GanttChartLine.sty.js +1 -1
- package/charts/gantt-chart/components/GanttChartLineRenderer.css +1 -1
- package/charts/gantt-chart/components/GanttChartLineRenderer.sty.js +1 -1
- package/charts/gantt-chart/components/tooltip/GanttChartTooltip.css +1 -1
- package/charts/gantt-chart/components/tooltip/GanttChartTooltip.sty.js +1 -1
- package/charts/gauge/GaugeChart.d.ts +1 -1
- package/charts/gauge/components/GaugeChartLayout/GaugeChartLayout.css +1 -1
- package/charts/gauge/components/GaugeChartLayout/GaugeChartLayout.sty.js +1 -1
- package/charts/gauge/components/GaugeChartTooltip/GaugeOverlayTooltip.js +12 -2
- package/charts/gauge/components/GaugeLabel/GaugeLabel.css +6 -6
- package/charts/gauge/components/GaugeLabel/GaugeLabel.sty.js +3 -3
- package/charts/gauge/components/GaugeLabels.js +3 -4
- package/charts/gauge/components/GaugeLabelsWrapper/GaugeLabelsWrapper.css +3 -3
- package/charts/gauge/components/GaugeLabelsWrapper/GaugeLabelsWrapper.sty.js +1 -1
- package/charts/gauge/components/GaugeLayoutOverlay/GaugeLayoutOverlay.css +4 -4
- package/charts/gauge/components/GaugeLayoutOverlay/GaugeLayoutOverlay.js +12 -11
- package/charts/gauge/components/GaugeLayoutOverlay/GaugeLayoutOverlay.sty.js +3 -3
- package/charts/gauge/components/GaugeResponsiveLabel/GaugeResponsiveLabel.css +2 -2
- package/charts/gauge/components/GaugeResponsiveLabel/GaugeResponsiveLabel.sty.js +2 -2
- package/charts/gauge/constants.d.ts +1 -0
- package/charts/gauge/constants.js +2 -0
- package/charts/gauge/contexts/GaugeChartTooltipContext.d.ts +9 -0
- package/charts/gauge/contexts/GaugeChartTooltipContext.js +27 -0
- package/charts/gauge/hooks/useGaugeChartMinMaxLabelsPosition.d.ts +1 -0
- package/charts/gauge/hooks/useGaugeChartMinMaxLabelsPosition.js +12 -1
- package/charts/gauge/providers/GaugeChartProviders.js +11 -3
- package/charts/gauge/slots/Tooltip.d.ts +58 -1
- package/charts/gauge/slots/Tooltip.js +1 -1
- package/charts/histogram/components/axes/HistogramValueBottomAxisArea/HistogramValueBottomAxisArea.css +1 -1
- package/charts/histogram/components/axes/HistogramValueBottomAxisArea/HistogramValueBottomAxisArea.sty.js +1 -1
- package/charts/histogram/components/overlays/HistogramExplore/HistogramTooltip.css +1 -1
- package/charts/histogram/components/overlays/HistogramExplore/HistogramTooltip.sty.js +1 -1
- package/charts/histogram/components/overlays/HistogramOverlays.css +2 -2
- package/charts/histogram/components/overlays/HistogramOverlays.sty.js +2 -2
- package/charts/histogram/types/histogram-props.d.ts +5 -4
- package/charts/honeycomb/HoneycombChart.css +1 -1
- package/charts/honeycomb/HoneycombChart.d.ts +4 -0
- package/charts/honeycomb/HoneycombChart.js +3 -1
- package/charts/honeycomb/HoneycombChart.sty.js +1 -1
- package/charts/honeycomb/components/HiveOverlay.css +1 -1
- package/charts/honeycomb/components/HiveOverlay.sty.js +1 -1
- package/charts/honeycomb/components/canvas/HiveCanvasLayout.css +1 -1
- package/charts/honeycomb/components/canvas/HiveCanvasLayout.sty.js +1 -1
- package/charts/honeycomb/components/tooltip/HoneycombOverlayTooltip.js +16 -1
- package/charts/honeycomb/context/honeycomb-custom-tooltip.context.d.ts +2 -0
- package/charts/honeycomb/context/honeycomb-custom-tooltip.context.js +24 -0
- package/charts/honeycomb/hooks/use-honeycomb-custom-tooltip.d.ts +1 -0
- package/charts/{gauge/contexts/GaugeChartTooltipNameContext.js → honeycomb/hooks/use-honeycomb-custom-tooltip.js} +6 -9
- package/charts/honeycomb/providers/honeycomb-configuration.provider.js +2 -1
- package/charts/honeycomb/slots/Tooltip.d.ts +5 -0
- package/charts/{core/components/annotations/components/tooltip/AnnotationsTooltip.sty.js → honeycomb/slots/Tooltip.js} +6 -6
- package/charts/honeycomb/types/honeycomb-config-properties.d.ts +4 -1
- package/charts/honeycomb/types/honeycomb-internal.d.ts +36 -0
- package/charts/honeycomb/utils/build-honeycomb-config.js +2 -1
- package/charts/honeycomb/utils/build-overlay-tooltip-data.js +5 -1
- package/charts/honeycomb/utils/iterate-honeycomb-slots.js +11 -1
- package/charts/index.d.ts +10 -7
- package/charts/index.js +5 -3
- package/charts/meter-bar/multi-meter-bar/MultiMeterBarChart.js +1 -1
- package/charts/meter-bar/multi-meter-bar/components/MultiMeterBarChartOverlay/MultiMeterBarChartOverlay.js +1 -1
- package/charts/meter-bar/multi-meter-bar/components/MultiMeterBarChartOverlay/MultiMeterBarChartOverlayWithTooltip.js +34 -8
- package/charts/meter-bar/multi-meter-bar/default.d.ts +1 -1
- package/charts/meter-bar/multi-meter-bar/default.js +1 -1
- package/charts/meter-bar/multi-meter-bar/hooks/useMultiMeterBarChartTooltipHandlers.js +10 -37
- package/charts/meter-bar/multi-meter-bar/types/multi-meter-bar-chart-config.d.ts +2 -2
- package/charts/meter-bar/multi-meter-bar/types/multi-meter-bar-chart-internal.d.ts +5 -3
- package/charts/meter-bar/multi-meter-bar/types/multi-meter-bar-chart.d.ts +39 -0
- package/charts/meter-bar/multi-meter-bar/utils/build-multi-meter-bar-chart-config.js +10 -7
- package/charts/meter-bar/multi-meter-bar/utils/iterate-slots.js +5 -1
- package/charts/meter-bar/shared/components/meter-bar-layout/MeterBarLayout.css +15 -15
- package/charts/meter-bar/shared/components/meter-bar-layout/MeterBarLayout.sty.js +10 -10
- package/charts/meter-bar/shared/components/meter-bar-layout/slots/Icon/Icon.css +2 -2
- package/charts/meter-bar/shared/components/meter-bar-layout/slots/Icon/Icon.sty.js +1 -1
- package/charts/meter-bar/shared/components/meter-bar-layout/slots/Label/Label.css +1 -1
- package/charts/meter-bar/shared/components/meter-bar-layout/slots/Label/Label.sty.js +1 -1
- package/charts/meter-bar/shared/components/meter-bar-layout/slots/Max/Max.css +1 -1
- package/charts/meter-bar/shared/components/meter-bar-layout/slots/Max/Max.sty.js +1 -1
- package/charts/meter-bar/shared/components/meter-bar-layout/slots/Min/Min.css +1 -1
- package/charts/meter-bar/shared/components/meter-bar-layout/slots/Min/Min.sty.js +1 -1
- package/charts/meter-bar/shared/components/meter-bar-layout/slots/Value/Value.css +1 -1
- package/charts/meter-bar/shared/components/meter-bar-layout/slots/Value/Value.sty.js +1 -1
- package/charts/meter-bar/shared/components/meter-bar-plot/MeterBarPlot.css +1 -1
- package/charts/meter-bar/shared/components/meter-bar-plot/MeterBarPlot.sty.js +1 -1
- package/charts/meter-bar/shared/components/meter-bar-toolbar/MeterBarToolbar.js +3 -3
- package/charts/meter-bar/shared/components/meter-bar-tooltip/MeterBarTooltipItem/MeterBarTooltipItem.css +1 -1
- package/charts/meter-bar/shared/components/meter-bar-tooltip/MeterBarTooltipItem/MeterBarTooltipItem.sty.js +1 -1
- package/charts/meter-bar/shared/styles/element-size.css +4 -4
- package/charts/meter-bar/shared/styles/element-size.sty.js +1 -1
- package/charts/meter-bar/shared/styles.css +1 -1
- package/charts/meter-bar/shared/styles.sty.js +1 -1
- package/charts/meter-bar/shared/utils/slot-handlers.d.ts +0 -2
- package/charts/meter-bar/shared/utils/slot-handlers.js +0 -10
- package/charts/meter-bar/single-meter-bar/MeterBarChart.js +1 -1
- package/charts/meter-bar/single-meter-bar/components/MeterBarChartOverlay/MeterBarChartOverlay.js +1 -1
- package/charts/meter-bar/single-meter-bar/components/MeterBarChartOverlay/MeterBarChartOverlayWithTooltip.js +61 -16
- package/charts/meter-bar/single-meter-bar/components/MeterBarChartThresholds/MeterBarChartThresholds.css +1 -1
- package/charts/meter-bar/single-meter-bar/components/MeterBarChartThresholds/MeterBarChartThresholds.sty.js +1 -1
- package/charts/meter-bar/single-meter-bar/context/MeterBarChartInternalConfigContext.d.ts +1 -1
- package/charts/meter-bar/single-meter-bar/types/default.d.ts +3 -0
- package/charts/meter-bar/single-meter-bar/types/default.js +2 -1
- package/charts/meter-bar/single-meter-bar/types/meter-bar-chart-internal.d.ts +4 -2
- package/charts/meter-bar/single-meter-bar/types/meter-bar-chart.d.ts +37 -0
- package/charts/meter-bar/single-meter-bar/utils/build-meter-bar-chart-config.js +5 -1
- package/charts/meter-bar/single-meter-bar/utils/iterate-slots.js +5 -1
- package/charts/pie/components/InnerWrapper/components/InnerContainer/InnerContainer.css +1 -1
- package/charts/pie/components/InnerWrapper/components/InnerContainer/InnerContainer.sty.js +1 -1
- package/charts/pie/components/InnerWrapper/components/InnerDonut/InnerDonut.css +1 -1
- package/charts/pie/components/InnerWrapper/components/InnerDonut/InnerDonut.sty.js +1 -1
- package/charts/pie/components/PieChartOverlays/PieChartOverlays.css +1 -1
- package/charts/pie/components/PieChartOverlays/PieChartOverlays.sty.js +1 -1
- package/charts/pie/components/PieChartPlot/PieChartPlot.css +1 -1
- package/charts/pie/components/PieChartPlot/PieChartPlot.sty.js +1 -1
- package/charts/pie/hooks/usePieHandlers.js +3 -3
- package/charts/pie/hooks/useSliceHandlers.js +7 -41
- package/charts/single-value/SingleValue.css +1 -1
- package/charts/single-value/SingleValue.js +4 -1
- package/charts/single-value/SingleValue.sty.js +1 -1
- package/charts/single-value-grid/SingleValueGrid.css +2 -2
- package/charts/single-value-grid/SingleValueGrid.js +4 -1
- package/charts/single-value-grid/SingleValueGrid.sty.js +1 -1
- package/charts/single-value-grid/components/GlobalFontSizeVariables.css +1 -1
- package/charts/single-value-grid/components/GlobalFontSizeVariables.sty.js +1 -1
- package/charts/single-value-grid/types/single-value-grid.d.ts +5 -1
- package/charts/timeseries/TimeseriesChart.d.ts +99 -5
- package/charts/timeseries/TimeseriesChart.js +63 -126
- package/charts/timeseries/TimeseriesChartInternal.d.ts +8 -0
- package/charts/timeseries/TimeseriesChartInternal.js +151 -0
- package/charts/timeseries/TimeseriesChartRoot.d.ts +3 -92
- package/charts/timeseries/TimeseriesChartRoot.js +3 -55
- package/charts/timeseries/components/axes/TimeseriesTimeBottomAxisArea/TimeseriesTimeBottomAxisArea.css +2 -2
- package/charts/timeseries/components/axes/TimeseriesTimeBottomAxisArea/TimeseriesTimeBottomAxisArea.js +4 -2
- package/charts/timeseries/components/axes/TimeseriesTimeBottomAxisArea/TimeseriesTimeBottomAxisArea.sty.js +1 -1
- package/charts/timeseries/components/overlays/TimeseriesOverlays.css +4 -4
- package/charts/timeseries/components/overlays/TimeseriesOverlays.sty.js +4 -4
- package/charts/timeseries/components/thresholds/ThresholdIndicators.css +2 -2
- package/charts/timeseries/components/thresholds/ThresholdIndicators.sty.js +2 -2
- package/charts/tree-map/TreeMap.d.ts +1 -1
- package/charts/tree-map/components/TreeMapOverlay/TreeMapOverlay.css +1 -1
- package/charts/tree-map/components/TreeMapOverlay/TreeMapOverlay.sty.js +1 -1
- package/charts/tree-map/components/TreeMapTooltip/TreeMapOverlayTooltip.js +12 -1
- package/charts/tree-map/components/canvas/TreeMapSquareRenderer.js +3 -2
- package/charts/tree-map/components/canvas/utils/canvas-label-utils.d.ts +3 -1
- package/charts/tree-map/components/canvas/utils/canvas-label-utils.js +7 -7
- package/charts/tree-map/constants.js +1 -0
- package/charts/tree-map/contexts/TreeMapCustomTooltipContext.d.ts +3 -0
- package/charts/tree-map/contexts/TreeMapCustomTooltipContext.js +28 -0
- package/charts/tree-map/hooks/useTreeMapCustomTooltip.d.ts +1 -0
- package/charts/tree-map/hooks/useTreeMapCustomTooltip.js +25 -0
- package/charts/tree-map/providers/TreeMapChartProviders.d.ts +2 -0
- package/charts/tree-map/providers/TreeMapChartProviders.js +10 -2
- package/charts/tree-map/slots/Tooltip.d.ts +2 -1
- package/charts/tree-map/slots/Tooltip.js +1 -1
- package/charts/tree-map/types/canvas.d.ts +1 -1
- package/charts/tree-map/types/treemap-chart.config.d.ts +34 -2
- package/charts/tree-map/utils/build-overlay-tooltip-data.js +3 -1
- package/charts/tree-map/utils/build-tree-map-chart-config.js +2 -1
- package/charts/tree-map/utils/iterate-slots.js +8 -2
- package/charts/xy-chart/XYChart.js +2 -0
- package/charts/xy-chart/XYChartRoot.d.ts +1 -4
- package/charts/xy-chart/XYChartRoot.js +55 -39
- package/charts/xy-chart/components/axes/AxisArea.css +1 -1
- package/charts/xy-chart/components/axes/AxisArea.sty.js +1 -1
- package/charts/xy-chart/components/axes/AxisTickWithTruncation.css +3 -3
- package/charts/xy-chart/components/axes/AxisTickWithTruncation.sty.js +3 -3
- package/charts/xy-chart/components/axes/XYChartBottomAxisArea.js +77 -59
- package/charts/xy-chart/components/axes/XYChartTopAxisArea.js +77 -59
- package/charts/xy-chart/components/axes/utils/compute-collision-aware-max-space.d.ts +14 -0
- package/charts/xy-chart/components/axes/utils/compute-collision-aware-max-space.js +50 -0
- package/charts/xy-chart/components/displays/{BarDisplay.d.ts → BarDisplay/BarDisplay.d.ts} +3 -3
- package/charts/xy-chart/components/displays/{BarDisplay.js → BarDisplay/BarDisplay.js} +10 -10
- package/charts/xy-chart/components/displays/BarDisplay/BarLabelLayout.d.ts +10 -0
- package/charts/xy-chart/components/displays/BarDisplay/BarLabelLayout.js +64 -0
- package/charts/xy-chart/components/displays/BarDisplay/BarLabelOverlay.css +19 -0
- package/charts/xy-chart/components/displays/BarDisplay/BarLabelOverlay.d.ts +24 -0
- package/charts/xy-chart/components/displays/BarDisplay/BarLabelOverlay.js +170 -0
- package/charts/xy-chart/components/displays/BarDisplay/BarLabelOverlay.sty.d.ts +3 -0
- package/charts/xy-chart/components/displays/BarDisplay/BarLabelOverlay.sty.js +28 -0
- package/charts/xy-chart/components/displays/BarDisplay/HorizontalBarLabel.d.ts +34 -0
- package/charts/xy-chart/components/displays/BarDisplay/HorizontalBarLabel.js +81 -0
- package/charts/xy-chart/components/displays/BarDisplay/VerticalBarLabel.d.ts +34 -0
- package/charts/xy-chart/components/displays/BarDisplay/VerticalBarLabel.js +82 -0
- package/charts/xy-chart/components/displays/BarDisplay/label-utils.d.ts +8 -0
- package/charts/xy-chart/components/displays/BarDisplay/label-utils.js +25 -0
- package/charts/xy-chart/components/displays/bar-accessors.js +7 -6
- package/charts/xy-chart/components/legend/XYLegend/xy-legend.css +1 -1
- package/charts/xy-chart/components/legend/XYLegend/xy-legend.sty.js +1 -1
- package/charts/xy-chart/components/overlay/explore/XYChartCrosshair.css +1 -1
- package/charts/xy-chart/components/overlay/explore/XYChartCrosshair.sty.js +1 -1
- package/charts/xy-chart/components/overlay/explore/XYChartExplore.css +2 -2
- package/charts/xy-chart/components/overlay/explore/XYChartExplore.sty.js +2 -2
- package/charts/xy-chart/components/overlay/hooks/useApplyPanDelta.js +3 -3
- package/charts/xy-chart/components/overlay/hooks/useApplyZoomDelta.js +3 -3
- package/charts/xy-chart/components/overlay/hooks/useOverlayEvents.d.ts +1 -1
- package/charts/xy-chart/components/overlay/hooks/useOverlayEvents.js +27 -39
- package/charts/xy-chart/components/overlay/hooks/useResetInteractions.js +3 -3
- package/charts/xy-chart/components/overlay/utils/get-selected-datapoints.js +1 -1
- package/charts/xy-chart/components/overlay/utils/serialize-rectangle-series-values.js +1 -1
- package/charts/xy-chart/components/selection/TooltipHeader.css +2 -2
- package/charts/xy-chart/components/selection/TooltipHeader.sty.js +2 -2
- package/charts/xy-chart/components/thresholds/XYChartThresholdIndicators.css +1 -1
- package/charts/xy-chart/components/thresholds/XYChartThresholdIndicators.sty.js +1 -1
- package/charts/xy-chart/components/tooltip/BarSeriesTooltip.js +11 -0
- package/charts/xy-chart/components/tooltip/TopListTooltip.d.ts +7 -0
- package/charts/xy-chart/components/tooltip/TopListTooltip.js +84 -0
- package/charts/xy-chart/components/tooltip/XYChartTooltipTemplate/XYChartTooltipTemplate.css +1 -1
- package/charts/xy-chart/components/tooltip/XYChartTooltipTemplate/XYChartTooltipTemplate.sty.js +1 -1
- package/charts/xy-chart/components/tooltip/utils/tooltip-styles.css +5 -5
- package/charts/xy-chart/components/tooltip/utils/tooltip-styles.sty.js +4 -4
- package/charts/xy-chart/context/XYChartLegendHidden.context.d.ts +2 -0
- package/charts/xy-chart/context/XYChartLegendHidden.context.js +27 -0
- package/charts/xy-chart/layout/XYChartLayout.css +2 -2
- package/charts/xy-chart/layout/XYChartLayout.sty.js +2 -2
- package/charts/xy-chart/layout/XYChartShiftedDisplay.js +1 -1
- package/charts/xy-chart/processing-strategies/strategies/area-series.js +2 -1
- package/charts/xy-chart/processing-strategies/strategies/bar-series.d.ts +2 -0
- package/charts/xy-chart/processing-strategies/strategies/bar-series.js +9 -3
- package/charts/xy-chart/processing-strategies/strategies/groupable-series.d.ts +13 -3
- package/charts/xy-chart/processing-strategies/strategies/groupable-series.js +38 -4
- package/charts/xy-chart/processing-strategies/strategies/stackable-series.d.ts +14 -4
- package/charts/xy-chart/processing-strategies/strategies/stackable-series.js +38 -4
- package/charts/xy-chart/processing-strategies/utils/access-datapoint/get-bar-datapoints.d.ts +1 -0
- package/charts/xy-chart/processing-strategies/utils/access-datapoint/get-bar-datapoints.js +13 -1
- package/charts/xy-chart/providers/XYChartAxesTicksProvider.js +9 -2
- package/charts/xy-chart/slots/Tooltip.d.ts +2 -6
- package/charts/xy-chart/types/xy-chart-internals.d.ts +2 -0
- package/charts/xy-chart/types/xy-chart-props.d.ts +14 -0
- package/charts/xy-chart/types/xy-chart.d.ts +4 -0
- package/charts/xy-chart/utils/generate-nice-unit-ticks.d.ts +13 -1
- package/charts/xy-chart/utils/generate-nice-unit-ticks.js +39 -8
- package/charts/xy-chart/utils/get-ticks-formatted-by-config.d.ts +21 -1
- package/charts/xy-chart/utils/get-ticks-formatted-by-config.js +93 -11
- package/charts/xy-chart/utils/query-hovered.d.ts +1 -1
- package/charts/xy-chart-adoption/timeseries/TimeseriesToXY.d.ts +6 -0
- package/charts/xy-chart-adoption/timeseries/TimeseriesToXY.js +79 -0
- package/charts/xy-chart-adoption/timeseries/iterate-slots.d.ts +11 -0
- package/charts/xy-chart-adoption/timeseries/iterate-slots.js +78 -0
- package/charts/xy-chart-adoption/timeseries/transformer-data-to-xy.d.ts +16 -6
- package/charts/xy-chart-adoption/timeseries/transformer-data-to-xy.js +54 -18
- package/charts/xy-chart-adoption/timeseries/types/timeseries.d.ts +41 -0
- package/charts/xy-chart-adoption/timeseries/types/timeseries.js +25 -0
- package/charts/xy-chart-adoption/timeseries/utils/render-series.d.ts +8 -0
- package/charts/xy-chart-adoption/timeseries/utils/render-series.js +60 -0
- package/content/accordion/Accordion.css +14 -14
- package/content/accordion/Accordion.sty.js +8 -8
- package/content/ai-loading-indicator/AiLoadingIndicator.css +12 -12
- package/content/ai-loading-indicator/AiLoadingIndicator.sty.js +4 -4
- package/content/ai-response/AiResponse.css +5 -5
- package/content/ai-response/AiResponse.sty.js +2 -2
- package/content/avatar/Avatar.css +13 -13
- package/content/avatar/Avatar.sty.js +4 -4
- package/content/avatar-group/AvatarGroup.css +3 -3
- package/content/avatar-group/AvatarGroup.sty.js +2 -2
- package/content/chip/BaseChip.css +40 -40
- package/content/chip/BaseChip.sty.js +5 -5
- package/content/chip/ChipContent.css +11 -11
- package/content/chip/ChipContent.sty.js +2 -2
- package/content/chip/ChipDeleteButton.css +19 -19
- package/content/chip/ChipDeleteButton.sty.js +4 -4
- package/content/chip/ChipKey.css +6 -6
- package/content/chip/ChipKey.sty.js +1 -1
- package/content/chip/GroupedChip.css +3 -3
- package/content/chip/GroupedChip.sty.js +3 -3
- package/content/chip-group/ChipGroup.css +4 -4
- package/content/chip-group/ChipGroup.sty.js +1 -1
- package/content/chip-group/Control.css +4 -4
- package/content/chip-group/Control.sty.js +1 -1
- package/content/code-snippet/CodeHighlight.css +25 -25
- package/content/code-snippet/CodeHighlight.sty.js +5 -5
- package/content/code-snippet/CodeSnippet.css +5 -5
- package/content/code-snippet/CodeSnippet.sty.js +2 -2
- package/content/code-snippet/prism-dql-language.d.ts +4 -0
- package/content/code-snippet/prism-dql-language.js +8 -5
- package/content/empty-state/EmptyState.css +28 -28
- package/content/empty-state/EmptyState.sty.js +7 -7
- package/content/empty-state/slot-components/Footer.css +1 -1
- package/content/empty-state/slot-components/Footer.sty.js +1 -1
- package/content/empty-state/slot-components/Visual.css +3 -3
- package/content/empty-state/slot-components/Visual.sty.js +1 -1
- package/content/expandable-text/ExpandableText.css +7 -7
- package/content/expandable-text/ExpandableText.sty.js +2 -2
- package/content/feature-highlight/FeatureHighlight.css +12 -12
- package/content/feature-highlight/FeatureHighlight.sty.js +3 -3
- package/content/health-indicator/styles.css +23 -23
- package/content/health-indicator/styles.sty.js +1 -1
- package/content/information-overlay/InformationOverlay.css +25 -25
- package/content/information-overlay/InformationOverlay.sty.js +5 -5
- package/content/information-overlay/Trigger.d.ts +2 -3
- package/content/keyboard-shortcut/KeyboardShortcut.css +14 -14
- package/content/keyboard-shortcut/KeyboardShortcut.sty.js +2 -2
- package/content/markdown/Markdown.css +3 -3
- package/content/markdown/Markdown.sty.js +1 -1
- package/content/markdown/transformers/typography-mapping.css +9 -9
- package/content/markdown/transformers/typography-mapping.sty.js +6 -6
- package/content/microguide/Microguide.css +11 -11
- package/content/microguide/Microguide.sty.js +7 -7
- package/content/progress/ProgressBar.css +71 -71
- package/content/progress/ProgressBar.sty.js +5 -5
- package/content/progress/ProgressBarIcon.css +2 -2
- package/content/progress/ProgressBarIcon.sty.js +1 -1
- package/content/progress/ProgressBarLabel.css +3 -3
- package/content/progress/ProgressBarLabel.sty.js +1 -1
- package/content/progress/ProgressBarValue.css +5 -5
- package/content/progress/ProgressBarValue.sty.js +1 -1
- package/content/progress/ProgressCircle.css +40 -40
- package/content/progress/ProgressCircle.sty.js +5 -5
- package/content/shared-components/Visual.css +3 -3
- package/content/shared-components/Visual.sty.js +1 -1
- package/content/skeleton/Skeleton.css +7 -7
- package/content/skeleton/Skeleton.sty.js +5 -5
- package/content/terminology-overlay/TerminologyOverlay.css +4 -4
- package/content/terminology-overlay/TerminologyOverlay.js +16 -4
- package/content/terminology-overlay/TerminologyOverlay.sty.js +1 -1
- package/content/terminology-overlay/Trigger.d.ts +2 -1
- package/content/terminology-overlay/Trigger.js +5 -1
- package/core/components/app-root/AppRoot.css +2 -2
- package/core/components/app-root/AppRoot.sty.js +1 -1
- package/core/components/visually-hidden/VisuallyHidden.css +1 -1
- package/core/components/visually-hidden/VisuallyHidden.sty.js +1 -1
- package/core/contexts/PermissionsContext.d.ts +15 -0
- package/core/contexts/PermissionsContext.js +35 -0
- package/core/dql/dql-common.d.ts +6 -0
- package/core/dql/dql-common.js +2 -0
- package/core/external-links.d.ts +15 -0
- package/core/external-links.js +29 -0
- package/core/hooks/usePermissions.d.ts +24 -0
- package/core/hooks/usePermissions.js +55 -0
- package/core/index.d.ts +1 -0
- package/core/index.js +2 -0
- package/core/sdk/sdk-logger.js +2 -2
- package/core/styles/defaultChartValues.css +1 -1
- package/core/styles/defaultChartValues.sty.js +1 -1
- package/core/styles/focusRing.css +66 -66
- package/core/styles/focusRing.sty.js +2 -2
- package/core/styles/focusRingStatic.css +34 -34
- package/core/styles/focusRingStatic.sty.js +1 -1
- package/core/styles/virtualFocus.css +2 -2
- package/core/styles/virtualFocus.sty.js +1 -1
- package/core/time/timeframeStore/actions/dateTimePicker.js +4 -5
- package/core/time/timeframeStore/actions/dateTimeRangePicker.js +4 -6
- package/core/time/timeframeStore/actions/timeframeSelector.js +9 -9
- package/core/time/timeframeStore/timeframeSelector.types.d.ts +5 -1
- package/core/time/useDateTimeMessages.js +1 -1
- package/core/time/validation.js +2 -2
- package/core/utils/colorUtils.css +60 -60
- package/core/utils/colorUtils.sty.js +2 -2
- package/core/utils/permissionsQueryClient.d.ts +7 -0
- package/core/utils/permissionsQueryClient.js +33 -0
- package/editors/base-code-editor/BaseCodeEditor.css +133 -133
- package/editors/base-code-editor/BaseCodeEditor.sty.js +2 -2
- package/editors/dql-editor/DQLEditor.d.ts +55 -22
- package/editors/dql-editor/DQLEditor.js +122 -73
- package/editors/dql-editor/actions-menu/ActionsMenu.css +28 -0
- package/editors/dql-editor/actions-menu/ActionsMenu.d.ts +27 -0
- package/editors/dql-editor/actions-menu/ActionsMenu.js +100 -0
- package/editors/dql-editor/actions-menu/ActionsMenu.sty.d.ts +28 -0
- package/editors/dql-editor/actions-menu/ActionsMenu.sty.js +29 -0
- package/editors/dql-editor/actions-menu/actions-menu-messages.d.ts +17 -0
- package/editors/dql-editor/actions-menu/actions-menu-messages.js +40 -0
- package/editors/dql-editor/dql/DocumentationLink.d.ts +0 -1
- package/editors/dql-editor/dql/DocumentationLink.js +2 -3
- package/editors/dql-editor/dql/SuggestionPart.css +1 -1
- package/editors/dql-editor/dql/SuggestionPart.sty.js +1 -1
- package/editors/dql-editor/dql/dql-language.js +23 -5
- package/editors/dql-editor/dql/dql.js +7 -2
- package/esm/buttons/button/Button.css +15 -15
- package/esm/buttons/button/Button.sty.js +4 -4
- package/esm/buttons/button/Button.sty.js.map +1 -1
- package/esm/buttons/intent-button/IntentButton.css +1 -1
- package/esm/buttons/intent-button/IntentButton.sty.js +1 -1
- package/esm/buttons/intent-button/IntentButton.sty.js.map +1 -1
- package/esm/buttons/notify-button/NotifyButton.css +2 -2
- package/esm/buttons/notify-button/NotifyButton.sty.js +2 -2
- package/esm/buttons/notify-button/NotifyButton.sty.js.map +1 -1
- package/esm/charts/annotations-chart/AnnotationsChart.js +9 -1
- package/esm/charts/annotations-chart/AnnotationsChart.js.map +2 -2
- package/esm/charts/annotations-chart/components/AnnotationsDisplay.js.map +2 -2
- package/esm/charts/annotations-chart/constants.js +3 -1
- package/esm/charts/annotations-chart/constants.js.map +2 -2
- package/esm/charts/annotations-chart/utils/annotations-chart-config.js +2 -0
- package/esm/charts/annotations-chart/utils/annotations-chart-config.js.map +2 -2
- package/esm/charts/annotations-chart/utils/populate-missing-tooltip-props.js +8 -3
- package/esm/charts/annotations-chart/utils/populate-missing-tooltip-props.js.map +2 -2
- package/esm/charts/categorical-bar/components/interactions/overlays/CategoricalBarChartInspectOverlay.css +2 -2
- package/esm/charts/categorical-bar/components/interactions/overlays/CategoricalBarChartInspectOverlay.sty.js +2 -2
- package/esm/charts/categorical-bar/components/interactions/overlays/CategoricalBarChartInspectOverlay.sty.js.map +1 -1
- package/esm/charts/core/components/annotations/AnnotationsAtom.css +1 -1
- package/esm/charts/core/components/annotations/AnnotationsAtom.sty.js +1 -1
- package/esm/charts/core/components/annotations/AnnotationsAtom.sty.js.map +1 -1
- package/esm/charts/core/components/annotations/components/AnnotationsRenderer.js +4 -3
- package/esm/charts/core/components/annotations/components/AnnotationsRenderer.js.map +2 -2
- package/esm/charts/core/components/annotations/components/canvas/AnnotationsCanvasLayout.css +1 -1
- package/esm/charts/core/components/annotations/components/canvas/AnnotationsCanvasLayout.sty.js +1 -1
- package/esm/charts/core/components/annotations/components/canvas/AnnotationsCanvasLayout.sty.js.map +1 -1
- package/esm/charts/core/components/annotations/components/displays/AnnotationsContainer.js +12 -0
- package/esm/charts/core/components/annotations/components/displays/AnnotationsContainer.js.map +7 -0
- package/esm/charts/core/components/annotations/components/displays/AnnotationsNumericalDisplay.js +13 -18
- package/esm/charts/core/components/annotations/components/displays/AnnotationsNumericalDisplay.js.map +2 -2
- package/esm/charts/core/components/annotations/components/displays/AnnotationsTimeDisplay.js +13 -18
- package/esm/charts/core/components/annotations/components/displays/AnnotationsTimeDisplay.js.map +2 -2
- package/esm/charts/core/components/annotations/components/overlays/AnnotationsOverlays.css +1 -1
- package/esm/charts/core/components/annotations/components/overlays/AnnotationsOverlays.sty.js +1 -1
- package/esm/charts/core/components/annotations/components/overlays/AnnotationsOverlays.sty.js.map +1 -1
- package/esm/charts/core/components/annotations/components/overlays/AnnotationsScrollWrapper.css +1 -1
- package/esm/charts/core/components/annotations/components/overlays/AnnotationsScrollWrapper.sty.js +1 -1
- package/esm/charts/core/components/annotations/components/overlays/AnnotationsScrollWrapper.sty.js.map +1 -1
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsCustomizedTooltip.js +3 -2
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsCustomizedTooltip.js.map +2 -2
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsDefaultTooltipContent.js +131 -0
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsDefaultTooltipContent.js.map +7 -0
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsOverlayTooltip.js +121 -0
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsOverlayTooltip.js.map +7 -0
- package/esm/charts/core/components/annotations/components/tooltip/utils/prepare-custom-tooltip-data.js +8 -11
- package/esm/charts/core/components/annotations/components/tooltip/utils/prepare-custom-tooltip-data.js.map +2 -2
- package/esm/charts/core/components/annotations/constants.js +2 -0
- package/esm/charts/core/components/annotations/constants.js.map +2 -2
- package/esm/charts/core/components/annotations/hooks/useOverlayEvents.js +18 -0
- package/esm/charts/core/components/annotations/hooks/useOverlayEvents.js.map +2 -2
- package/esm/charts/core/components/axes/Axis.css +1 -1
- package/esm/charts/core/components/axes/Axis.sty.js +1 -1
- package/esm/charts/core/components/axes/Axis.sty.js.map +1 -1
- package/esm/charts/core/components/axes/components/PanningControls/PanningControls.css +16 -16
- package/esm/charts/core/components/axes/components/PanningControls/PanningControls.sty.js +2 -2
- package/esm/charts/core/components/axes/components/PanningControls/PanningControls.sty.js.map +1 -1
- package/esm/charts/core/components/axes/utils/calculate-axis-size.js +4 -2
- package/esm/charts/core/components/axes/utils/calculate-axis-size.js.map +2 -2
- package/esm/charts/core/components/axes/utils/get-tick-label-props.js +47 -1
- package/esm/charts/core/components/axes/utils/get-tick-label-props.js.map +2 -2
- package/esm/charts/core/components/axes/utils/tick-formatters.js +9 -1
- package/esm/charts/core/components/axes/utils/tick-formatters.js.map +2 -2
- package/esm/charts/core/components/chart-grid/ChartGrid.css +3 -3
- package/esm/charts/core/components/chart-grid/ChartGrid.sty.js +3 -3
- package/esm/charts/core/components/chart-grid/ChartGrid.sty.js.map +1 -1
- package/esm/charts/core/components/chart-layout/components/styles.css +15 -15
- package/esm/charts/core/components/chart-layout/components/styles.sty.js +4 -4
- package/esm/charts/core/components/chart-layout/components/styles.sty.js.map +1 -1
- package/esm/charts/core/components/chart-states/ChartState.css +4 -4
- package/esm/charts/core/components/chart-states/ChartState.sty.js +4 -4
- package/esm/charts/core/components/chart-states/ChartState.sty.js.map +1 -1
- package/esm/charts/core/components/crosshair/components/Magnifier.css +7 -7
- package/esm/charts/core/components/crosshair/components/Magnifier.sty.js +7 -7
- package/esm/charts/core/components/crosshair/components/Magnifier.sty.js.map +1 -1
- package/esm/charts/core/components/interactions-overlay/InteractionsOverlay.css +5 -5
- package/esm/charts/core/components/interactions-overlay/InteractionsOverlay.sty.js +2 -2
- package/esm/charts/core/components/interactions-overlay/InteractionsOverlay.sty.js.map +1 -1
- package/esm/charts/core/components/legend/categorical/ChartLegend.css +1 -1
- package/esm/charts/core/components/legend/categorical/ChartLegend.sty.js +1 -1
- package/esm/charts/core/components/legend/categorical/ChartLegend.sty.js.map +1 -1
- package/esm/charts/core/components/legend/categorical/components/ChartLegendIcon/ChartLegendIcon.css +3 -3
- package/esm/charts/core/components/legend/categorical/components/ChartLegendIcon/ChartLegendIcon.sty.js +3 -3
- package/esm/charts/core/components/legend/categorical/components/ChartLegendIcon/ChartLegendIcon.sty.js.map +1 -1
- package/esm/charts/core/components/legend/categorical/components/ChartLegendItem/ChartLegendItem.css +17 -17
- package/esm/charts/core/components/legend/categorical/components/ChartLegendItem/ChartLegendItem.sty.js +6 -6
- package/esm/charts/core/components/legend/categorical/components/ChartLegendItem/ChartLegendItem.sty.js.map +1 -1
- package/esm/charts/core/components/legend/categorical/components/ChartLegendSeriesActions/ChartLegendSeriesActions.css +3 -3
- package/esm/charts/core/components/legend/categorical/components/ChartLegendSeriesActions/ChartLegendSeriesActions.sty.js +1 -1
- package/esm/charts/core/components/legend/categorical/components/ChartLegendSeriesActions/ChartLegendSeriesActions.sty.js.map +1 -1
- package/esm/charts/core/components/legend/categorical/components/ChartVirtualizedLegendGrid.css +8 -8
- package/esm/charts/core/components/legend/categorical/components/ChartVirtualizedLegendGrid.sty.js +4 -4
- package/esm/charts/core/components/legend/categorical/components/ChartVirtualizedLegendGrid.sty.js.map +1 -1
- package/esm/charts/core/components/legend/range/RangeLegend.css +3 -3
- package/esm/charts/core/components/legend/range/RangeLegend.sty.js +1 -1
- package/esm/charts/core/components/legend/range/RangeLegend.sty.js.map +1 -1
- package/esm/charts/core/components/legend/range/components/RangeLegendBoundaryLabel/RangeLegendBoundaryLabel.css +2 -2
- package/esm/charts/core/components/legend/range/components/RangeLegendBoundaryLabel/RangeLegendBoundaryLabel.sty.js +1 -1
- package/esm/charts/core/components/legend/range/components/RangeLegendBoundaryLabel/RangeLegendBoundaryLabel.sty.js.map +1 -1
- package/esm/charts/core/components/legend/range/components/RangeLegendItemLabel/RangeLegendItemLabel.css +1 -1
- package/esm/charts/core/components/legend/range/components/RangeLegendItemLabel/RangeLegendItemLabel.sty.js +1 -1
- package/esm/charts/core/components/legend/range/components/RangeLegendItemLabel/RangeLegendItemLabel.sty.js.map +1 -1
- package/esm/charts/core/components/legend/range/components/RangeLegendItemMarker/RangeLegendItemMarker.css +3 -3
- package/esm/charts/core/components/legend/range/components/RangeLegendItemMarker/RangeLegendItemMarker.sty.js +1 -1
- package/esm/charts/core/components/legend/range/components/RangeLegendItemMarker/RangeLegendItemMarker.sty.js.map +1 -1
- package/esm/charts/core/components/legend/range/components/RangeLegendMarkers/RangeLegendMarkers.css +3 -3
- package/esm/charts/core/components/legend/range/components/RangeLegendMarkers/RangeLegendMarkers.sty.js +1 -1
- package/esm/charts/core/components/legend/range/components/RangeLegendMarkers/RangeLegendMarkers.sty.js.map +1 -1
- package/esm/charts/core/components/legend/range/components/RangeLegendSegments/RangeLegendSegments.css +5 -5
- package/esm/charts/core/components/legend/range/components/RangeLegendSegments/RangeLegendSegments.sty.js +1 -1
- package/esm/charts/core/components/legend/range/components/RangeLegendSegments/RangeLegendSegments.sty.js.map +1 -1
- package/esm/charts/core/components/loader-overlay/LoaderOverlay.css +2 -2
- package/esm/charts/core/components/loader-overlay/LoaderOverlay.sty.js +2 -2
- package/esm/charts/core/components/loader-overlay/LoaderOverlay.sty.js.map +1 -1
- package/esm/charts/core/components/overlay-tooltip/OverlayTooltip.js +4 -0
- package/esm/charts/core/components/overlay-tooltip/OverlayTooltip.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/_to-be-removed/DummyInteractionsOverlay.js +8 -5
- package/esm/charts/core/components/overlay-tooltip/_to-be-removed/DummyInteractionsOverlay.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/_to-be-removed/_OverlayTooltipWIPStory.js +2 -2
- package/esm/charts/core/components/overlay-tooltip/_to-be-removed/_OverlayTooltipWIPStory.js.map +1 -1
- package/esm/charts/core/components/overlay-tooltip/components/DynamicTooltipRenderer.js +7 -6
- package/esm/charts/core/components/overlay-tooltip/components/DynamicTooltipRenderer.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/components/{TooltipFooter.js → Footer.js} +3 -6
- package/esm/charts/core/components/overlay-tooltip/components/Footer.js.map +7 -0
- package/esm/charts/core/components/overlay-tooltip/components/global-actions/Action.js +6 -0
- package/esm/charts/core/components/overlay-tooltip/components/global-actions/Action.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/components/global-actions/GlobalActions.js +4 -14
- package/esm/charts/core/components/overlay-tooltip/components/global-actions/GlobalActions.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/components/global-actions/actions.css +4 -4
- package/esm/charts/core/components/overlay-tooltip/components/global-actions/actions.sty.js +2 -2
- package/esm/charts/core/components/overlay-tooltip/components/global-actions/actions.sty.js.map +1 -1
- package/esm/charts/core/components/overlay-tooltip/components/header/Header.css +6 -6
- package/esm/charts/core/components/overlay-tooltip/components/header/Header.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/components/header/Header.sty.js +6 -6
- package/esm/charts/core/components/overlay-tooltip/components/header/Header.sty.js.map +1 -1
- package/esm/charts/core/components/overlay-tooltip/components/series/SeriesItem.js +31 -8
- package/esm/charts/core/components/overlay-tooltip/components/series/SeriesItem.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/components/series/SeriesItemContent.js +38 -3
- package/esm/charts/core/components/overlay-tooltip/components/series/SeriesItemContent.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/components/series/SeriesSymbol.js +1 -1
- package/esm/charts/core/components/overlay-tooltip/components/series/SeriesSymbol.js.map +1 -1
- package/esm/charts/core/components/overlay-tooltip/components/series/hooks/use-series-item-display-state.js +58 -6
- package/esm/charts/core/components/overlay-tooltip/components/series/hooks/use-series-item-display-state.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/components/series/seriesSymbol.css +2 -2
- package/esm/charts/core/components/overlay-tooltip/components/series/seriesSymbol.sty.js +2 -2
- package/esm/charts/core/components/overlay-tooltip/components/series/seriesSymbol.sty.js.map +1 -1
- package/esm/charts/core/components/overlay-tooltip/components/series/utils/get-name-text-style.js +6 -4
- package/esm/charts/core/components/overlay-tooltip/components/series/utils/get-name-text-style.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/hooks/useTooltipImperativeHandle.js +3 -11
- package/esm/charts/core/components/overlay-tooltip/hooks/useTooltipImperativeHandle.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/overlay.js +8 -8
- package/esm/charts/core/components/overlay-tooltip/overlay.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/tooltip.css +92 -44
- package/esm/charts/core/components/overlay-tooltip/tooltip.sty.js +46 -34
- package/esm/charts/core/components/overlay-tooltip/tooltip.sty.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/types.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/useTooltipActions.js +67 -0
- package/esm/charts/core/components/overlay-tooltip/useTooltipActions.js.map +7 -0
- package/esm/charts/core/components/overlay-tooltip/useTooltipReducer.js +9 -11
- package/esm/charts/core/components/overlay-tooltip/useTooltipReducer.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/utils/build-content.js +41 -36
- package/esm/charts/core/components/overlay-tooltip/utils/build-content.js.map +2 -2
- package/esm/charts/core/components/overlay-tooltip/utils/estimate-series-item-size.js +19 -3
- package/esm/charts/core/components/overlay-tooltip/utils/estimate-series-item-size.js.map +2 -2
- package/esm/charts/core/components/overlays/ChartOverlaysBorder.css +5 -5
- package/esm/charts/core/components/overlays/ChartOverlaysBorder.sty.js +5 -5
- package/esm/charts/core/components/overlays/ChartOverlaysBorder.sty.js.map +1 -1
- package/esm/charts/core/components/selection-area/SelectionArea.css +9 -9
- package/esm/charts/core/components/selection-area/SelectionArea.sty.js +4 -4
- package/esm/charts/core/components/selection-area/SelectionArea.sty.js.map +1 -1
- package/esm/charts/core/components/shape/BubbleShape/BubbleShape.css +5 -5
- package/esm/charts/core/components/shape/BubbleShape/BubbleShape.sty.js +3 -3
- package/esm/charts/core/components/shape/BubbleShape/BubbleShape.sty.js.map +1 -1
- package/esm/charts/core/components/shape/EmojiShape/EmojiShape.css +3 -3
- package/esm/charts/core/components/shape/EmojiShape/EmojiShape.sty.js +1 -1
- package/esm/charts/core/components/shape/EmojiShape/EmojiShape.sty.js.map +1 -1
- package/esm/charts/core/components/shape/IconShape/IconShape.css +3 -3
- package/esm/charts/core/components/shape/IconShape/IconShape.sty.js +1 -1
- package/esm/charts/core/components/shape/IconShape/IconShape.sty.js.map +1 -1
- package/esm/charts/core/components/shape/styles/DataPointShape.css +8 -8
- package/esm/charts/core/components/shape/styles/DataPointShape.sty.js +4 -4
- package/esm/charts/core/components/shape/styles/DataPointShape.sty.js.map +1 -1
- package/esm/charts/core/components/shared-chart-interactions/SharedChartInteractions.css +1 -1
- package/esm/charts/core/components/shared-chart-interactions/SharedChartInteractions.sty.js +1 -1
- package/esm/charts/core/components/shared-chart-interactions/SharedChartInteractions.sty.js.map +1 -1
- package/esm/charts/core/components/single-value-renderer/SingleValueRenderer.css +5 -5
- package/esm/charts/core/components/single-value-renderer/SingleValueRenderer.sty.js +5 -5
- package/esm/charts/core/components/single-value-renderer/SingleValueRenderer.sty.js.map +1 -1
- package/esm/charts/core/components/single-value-renderer/components/ContentGrid.css +1 -1
- package/esm/charts/core/components/single-value-renderer/components/ContentGrid.sty.js +1 -1
- package/esm/charts/core/components/single-value-renderer/components/ContentGrid.sty.js.map +1 -1
- package/esm/charts/core/components/single-value-renderer/components/Icon.css +3 -3
- package/esm/charts/core/components/single-value-renderer/components/Icon.sty.js +2 -2
- package/esm/charts/core/components/single-value-renderer/components/Icon.sty.js.map +1 -1
- package/esm/charts/core/components/single-value-renderer/components/Label.css +1 -1
- package/esm/charts/core/components/single-value-renderer/components/Label.sty.js +1 -1
- package/esm/charts/core/components/single-value-renderer/components/Label.sty.js.map +1 -1
- package/esm/charts/core/components/single-value-renderer/components/SingleValueToolbar.css +1 -1
- package/esm/charts/core/components/single-value-renderer/components/SingleValueToolbar.sty.js +1 -1
- package/esm/charts/core/components/single-value-renderer/components/SingleValueToolbar.sty.js.map +1 -1
- package/esm/charts/core/components/single-value-renderer/components/Value.css +5 -5
- package/esm/charts/core/components/single-value-renderer/components/Value.sty.js +3 -3
- package/esm/charts/core/components/single-value-renderer/components/Value.sty.js.map +1 -1
- package/esm/charts/core/components/single-value-renderer/components/trend/Trend.css +3 -3
- package/esm/charts/core/components/single-value-renderer/components/trend/Trend.sty.js +3 -3
- package/esm/charts/core/components/single-value-renderer/components/trend/Trend.sty.js.map +1 -1
- package/esm/charts/core/components/single-value-renderer/components/trend/components/Icon.css +2 -2
- package/esm/charts/core/components/single-value-renderer/components/trend/components/Icon.sty.js +1 -1
- package/esm/charts/core/components/single-value-renderer/components/trend/components/Icon.sty.js.map +1 -1
- package/esm/charts/core/components/sparkline-display/Sparkline.css +6 -6
- package/esm/charts/core/components/sparkline-display/Sparkline.sty.js +2 -2
- package/esm/charts/core/components/sparkline-display/Sparkline.sty.js.map +1 -1
- package/esm/charts/core/components/text-ellipsis/ChartTextEllipsis.css +7 -7
- package/esm/charts/core/components/text-ellipsis/ChartTextEllipsis.sty.js +3 -3
- package/esm/charts/core/components/text-ellipsis/ChartTextEllipsis.sty.js.map +1 -1
- package/esm/charts/core/components/threshold-bar/styles.css +9 -9
- package/esm/charts/core/components/threshold-bar/styles.sty.js +2 -2
- package/esm/charts/core/components/threshold-bar/styles.sty.js.map +1 -1
- package/esm/charts/core/components/toolbar/ChartToolbarRenderer.css +16 -16
- package/esm/charts/core/components/toolbar/ChartToolbarRenderer.sty.js +8 -8
- package/esm/charts/core/components/toolbar/ChartToolbarRenderer.sty.js.map +1 -1
- package/esm/charts/core/components/toolbar/components/ChartDataMenu.css +2 -2
- package/esm/charts/core/components/toolbar/components/ChartDataMenu.sty.js +1 -1
- package/esm/charts/core/components/toolbar/components/ChartDataMenu.sty.js.map +1 -1
- package/esm/charts/core/components/toolbar/components/Control.css +17 -17
- package/esm/charts/core/components/toolbar/components/Control.sty.js +5 -5
- package/esm/charts/core/components/toolbar/components/Control.sty.js.map +1 -1
- package/esm/charts/core/components/toolbar/components/ToolbarMenu.css +4 -4
- package/esm/charts/core/components/toolbar/components/ToolbarMenu.sty.js +2 -2
- package/esm/charts/core/components/toolbar/components/ToolbarMenu.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/ChartTooltip/ChartTooltip.css +6 -6
- package/esm/charts/core/components/tooltip/ChartTooltip/ChartTooltip.sty.js +2 -2
- package/esm/charts/core/components/tooltip/ChartTooltip/ChartTooltip.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/ChartTooltip/components/ActionItem/ActionItem.css +8 -8
- package/esm/charts/core/components/tooltip/ChartTooltip/components/ActionItem/ActionItem.sty.js +3 -3
- package/esm/charts/core/components/tooltip/ChartTooltip/components/ActionItem/ActionItem.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/ChartTooltip/components/SeriesItem/SeriesItem.css +2 -2
- package/esm/charts/core/components/tooltip/ChartTooltip/components/SeriesItem/SeriesItem.sty.js +1 -1
- package/esm/charts/core/components/tooltip/ChartTooltip/components/SeriesItem/SeriesItem.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/ChartTooltip/components/TimeFrameHeader/TimeFrameHeader.css +1 -1
- package/esm/charts/core/components/tooltip/ChartTooltip/components/TimeFrameHeader/TimeFrameHeader.sty.js +1 -1
- package/esm/charts/core/components/tooltip/ChartTooltip/components/TimeFrameHeader/TimeFrameHeader.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/InteractiveChartTooltip/components/BasicChartTooltip/BasicChartTooltip.css +6 -6
- package/esm/charts/core/components/tooltip/InteractiveChartTooltip/components/BasicChartTooltip/BasicChartTooltip.sty.js +2 -2
- package/esm/charts/core/components/tooltip/InteractiveChartTooltip/components/BasicChartTooltip/BasicChartTooltip.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/InteractiveChartTooltip/components/InteractiveChartTooltip.css +7 -7
- package/esm/charts/core/components/tooltip/InteractiveChartTooltip/components/InteractiveChartTooltip.sty.js +6 -6
- package/esm/charts/core/components/tooltip/InteractiveChartTooltip/components/InteractiveChartTooltip.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/InteractiveChartTooltip/headers/HeaderTooltip.css +1 -1
- package/esm/charts/core/components/tooltip/InteractiveChartTooltip/headers/HeaderTooltip.sty.js +1 -1
- package/esm/charts/core/components/tooltip/InteractiveChartTooltip/headers/HeaderTooltip.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/section-components/TooltipFooter/TooltipFooter.css +1 -1
- package/esm/charts/core/components/tooltip/section-components/TooltipFooter/TooltipFooter.sty.js +1 -1
- package/esm/charts/core/components/tooltip/section-components/TooltipFooter/TooltipFooter.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/section-components/TooltipHeader/TooltipHeader.css +2 -2
- package/esm/charts/core/components/tooltip/section-components/TooltipHeader/TooltipHeader.sty.js +1 -1
- package/esm/charts/core/components/tooltip/section-components/TooltipHeader/TooltipHeader.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/section-components/TooltipInfoContent/TooltipInfoContent.css +1 -1
- package/esm/charts/core/components/tooltip/section-components/TooltipInfoContent/TooltipInfoContent.sty.js +1 -1
- package/esm/charts/core/components/tooltip/section-components/TooltipInfoContent/TooltipInfoContent.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/section-components/TooltipItem/TooltipItem.css +3 -3
- package/esm/charts/core/components/tooltip/section-components/TooltipItem/TooltipItem.sty.js +2 -2
- package/esm/charts/core/components/tooltip/section-components/TooltipItem/TooltipItem.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/section-components/TooltipSymbolContent/TooltipSymbolContent.css +1 -1
- package/esm/charts/core/components/tooltip/section-components/TooltipSymbolContent/TooltipSymbolContent.sty.js +1 -1
- package/esm/charts/core/components/tooltip/section-components/TooltipSymbolContent/TooltipSymbolContent.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/section-components/VirtualizedTooltipBody/VirtualizedTooltipBody.css +2 -2
- package/esm/charts/core/components/tooltip/section-components/VirtualizedTooltipBody/VirtualizedTooltipBody.sty.js +2 -2
- package/esm/charts/core/components/tooltip/section-components/VirtualizedTooltipBody/VirtualizedTooltipBody.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/section-components/atoms/styles.css +3 -3
- package/esm/charts/core/components/tooltip/section-components/atoms/styles.sty.js +3 -3
- package/esm/charts/core/components/tooltip/section-components/atoms/styles.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/shared/styles/SeriesBasedContent.css +12 -12
- package/esm/charts/core/components/tooltip/shared/styles/SeriesBasedContent.sty.js +7 -7
- package/esm/charts/core/components/tooltip/shared/styles/SeriesBasedContent.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip/shared/styles/TooltipBody.css +1 -1
- package/esm/charts/core/components/tooltip/shared/styles/TooltipBody.sty.js +1 -1
- package/esm/charts/core/components/tooltip/shared/styles/TooltipBody.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip-atoms/components/HeaderChipAtom/HeaderChipAtom.css +1 -1
- package/esm/charts/core/components/tooltip-atoms/components/HeaderChipAtom/HeaderChipAtom.sty.js +1 -1
- package/esm/charts/core/components/tooltip-atoms/components/HeaderChipAtom/HeaderChipAtom.sty.js.map +1 -1
- package/esm/charts/core/components/tooltip-atoms/components/styles.css +4 -4
- package/esm/charts/core/components/tooltip-atoms/components/styles.sty.js +4 -4
- package/esm/charts/core/components/tooltip-atoms/components/styles.sty.js.map +1 -1
- package/esm/charts/core/components/zoom/ZoomCursors.css +2 -2
- package/esm/charts/core/components/zoom/ZoomCursors.sty.js +3 -3
- package/esm/charts/core/components/zoom/ZoomCursors.sty.js.map +1 -1
- package/esm/charts/core/hooks/useOverlayEventHandlers.js +8 -25
- package/esm/charts/core/hooks/useOverlayEventHandlers.js.map +2 -2
- package/esm/charts/core/typographyStyles.css +1 -1
- package/esm/charts/core/typographyStyles.sty.js +1 -1
- package/esm/charts/core/typographyStyles.sty.js.map +1 -1
- package/esm/charts/core/utils/adaptively-reduce-horizontal-ticks.js +45 -0
- package/esm/charts/core/utils/adaptively-reduce-horizontal-ticks.js.map +7 -0
- package/esm/charts/core/utils/has-horizontal-label-collision.js +57 -0
- package/esm/charts/core/utils/has-horizontal-label-collision.js.map +7 -0
- package/esm/charts/core/utils/is-feature-enabled.js +2 -1
- package/esm/charts/core/utils/is-feature-enabled.js.map +2 -2
- package/esm/charts/gantt-chart/GanttChartLine.css +1 -1
- package/esm/charts/gantt-chart/GanttChartLine.sty.js +1 -1
- package/esm/charts/gantt-chart/GanttChartLine.sty.js.map +1 -1
- package/esm/charts/gantt-chart/components/GanttChartLineRenderer.css +1 -1
- package/esm/charts/gantt-chart/components/GanttChartLineRenderer.sty.js +1 -1
- package/esm/charts/gantt-chart/components/GanttChartLineRenderer.sty.js.map +1 -1
- package/esm/charts/gantt-chart/components/tooltip/GanttChartTooltip.css +1 -1
- package/esm/charts/gantt-chart/components/tooltip/GanttChartTooltip.sty.js +1 -1
- package/esm/charts/gantt-chart/components/tooltip/GanttChartTooltip.sty.js.map +1 -1
- package/esm/charts/gauge/components/GaugeChartLayout/GaugeChartLayout.css +1 -1
- package/esm/charts/gauge/components/GaugeChartLayout/GaugeChartLayout.sty.js +1 -1
- package/esm/charts/gauge/components/GaugeChartLayout/GaugeChartLayout.sty.js.map +1 -1
- package/esm/charts/gauge/components/GaugeChartTooltip/GaugeOverlayTooltip.js +12 -2
- package/esm/charts/gauge/components/GaugeChartTooltip/GaugeOverlayTooltip.js.map +2 -2
- package/esm/charts/gauge/components/GaugeLabel/GaugeLabel.css +6 -6
- package/esm/charts/gauge/components/GaugeLabel/GaugeLabel.sty.js +3 -3
- package/esm/charts/gauge/components/GaugeLabel/GaugeLabel.sty.js.map +1 -1
- package/esm/charts/gauge/components/GaugeLabels.js +3 -4
- package/esm/charts/gauge/components/GaugeLabels.js.map +2 -2
- package/esm/charts/gauge/components/GaugeLabelsWrapper/GaugeLabelsWrapper.css +3 -3
- package/esm/charts/gauge/components/GaugeLabelsWrapper/GaugeLabelsWrapper.sty.js +1 -1
- package/esm/charts/gauge/components/GaugeLabelsWrapper/GaugeLabelsWrapper.sty.js.map +1 -1
- package/esm/charts/gauge/components/GaugeLayoutOverlay/GaugeLayoutOverlay.css +4 -4
- package/esm/charts/gauge/components/GaugeLayoutOverlay/GaugeLayoutOverlay.js +12 -11
- package/esm/charts/gauge/components/GaugeLayoutOverlay/GaugeLayoutOverlay.js.map +2 -2
- package/esm/charts/gauge/components/GaugeLayoutOverlay/GaugeLayoutOverlay.sty.js +3 -3
- package/esm/charts/gauge/components/GaugeLayoutOverlay/GaugeLayoutOverlay.sty.js.map +1 -1
- package/esm/charts/gauge/components/GaugeResponsiveLabel/GaugeResponsiveLabel.css +2 -2
- package/esm/charts/gauge/components/GaugeResponsiveLabel/GaugeResponsiveLabel.sty.js +2 -2
- package/esm/charts/gauge/components/GaugeResponsiveLabel/GaugeResponsiveLabel.sty.js.map +1 -1
- package/esm/charts/gauge/constants.js +2 -0
- package/esm/charts/gauge/constants.js.map +2 -2
- package/esm/charts/gauge/contexts/GaugeChartTooltipContext.js +9 -0
- package/esm/charts/gauge/contexts/GaugeChartTooltipContext.js.map +7 -0
- package/esm/charts/gauge/hooks/useGaugeChartMinMaxLabelsPosition.js +20 -2
- package/esm/charts/gauge/hooks/useGaugeChartMinMaxLabelsPosition.js.map +2 -2
- package/esm/charts/gauge/providers/GaugeChartProviders.js +11 -3
- package/esm/charts/gauge/providers/GaugeChartProviders.js.map +2 -2
- package/esm/charts/gauge/slots/Tooltip.js +1 -1
- package/esm/charts/gauge/slots/Tooltip.js.map +2 -2
- package/esm/charts/histogram/components/axes/HistogramValueBottomAxisArea/HistogramValueBottomAxisArea.css +1 -1
- package/esm/charts/histogram/components/axes/HistogramValueBottomAxisArea/HistogramValueBottomAxisArea.sty.js +1 -1
- package/esm/charts/histogram/components/axes/HistogramValueBottomAxisArea/HistogramValueBottomAxisArea.sty.js.map +1 -1
- package/esm/charts/histogram/components/overlays/HistogramExplore/HistogramTooltip.css +1 -1
- package/esm/charts/histogram/components/overlays/HistogramExplore/HistogramTooltip.sty.js +1 -1
- package/esm/charts/histogram/components/overlays/HistogramExplore/HistogramTooltip.sty.js.map +1 -1
- package/esm/charts/histogram/components/overlays/HistogramOverlays.css +2 -2
- package/esm/charts/histogram/components/overlays/HistogramOverlays.sty.js +2 -2
- package/esm/charts/histogram/components/overlays/HistogramOverlays.sty.js.map +1 -1
- package/esm/charts/honeycomb/HoneycombChart.css +1 -1
- package/esm/charts/honeycomb/HoneycombChart.js +3 -1
- package/esm/charts/honeycomb/HoneycombChart.js.map +2 -2
- package/esm/charts/honeycomb/HoneycombChart.sty.js +1 -1
- package/esm/charts/honeycomb/HoneycombChart.sty.js.map +1 -1
- package/esm/charts/honeycomb/components/HiveOverlay.css +1 -1
- package/esm/charts/honeycomb/components/HiveOverlay.sty.js +1 -1
- package/esm/charts/honeycomb/components/HiveOverlay.sty.js.map +1 -1
- package/esm/charts/honeycomb/components/canvas/HiveCanvasLayout.css +1 -1
- package/esm/charts/honeycomb/components/canvas/HiveCanvasLayout.sty.js +1 -1
- package/esm/charts/honeycomb/components/canvas/HiveCanvasLayout.sty.js.map +1 -1
- package/esm/charts/honeycomb/components/tooltip/HoneycombOverlayTooltip.js +16 -1
- package/esm/charts/honeycomb/components/tooltip/HoneycombOverlayTooltip.js.map +2 -2
- package/esm/charts/honeycomb/context/honeycomb-custom-tooltip.context.js +6 -0
- package/esm/charts/honeycomb/context/honeycomb-custom-tooltip.context.js.map +7 -0
- package/esm/charts/honeycomb/hooks/use-honeycomb-custom-tooltip.js +7 -0
- package/esm/charts/honeycomb/hooks/use-honeycomb-custom-tooltip.js.map +7 -0
- package/esm/charts/honeycomb/providers/honeycomb-configuration.provider.js +2 -1
- package/esm/charts/honeycomb/providers/honeycomb-configuration.provider.js.map +2 -2
- package/esm/charts/honeycomb/slots/Tooltip.js +6 -0
- package/esm/charts/honeycomb/slots/Tooltip.js.map +7 -0
- package/esm/charts/honeycomb/utils/build-honeycomb-config.js +2 -1
- package/esm/charts/honeycomb/utils/build-honeycomb-config.js.map +2 -2
- package/esm/charts/honeycomb/utils/build-overlay-tooltip-data.js +5 -1
- package/esm/charts/honeycomb/utils/build-overlay-tooltip-data.js.map +2 -2
- package/esm/charts/honeycomb/utils/iterate-honeycomb-slots.js +11 -1
- package/esm/charts/honeycomb/utils/iterate-honeycomb-slots.js.map +2 -2
- package/esm/charts/index.js +5 -1
- package/esm/charts/index.js.map +2 -2
- package/esm/charts/meter-bar/multi-meter-bar/MultiMeterBarChart.js +1 -1
- package/esm/charts/meter-bar/multi-meter-bar/MultiMeterBarChart.js.map +2 -2
- package/esm/charts/meter-bar/multi-meter-bar/components/MultiMeterBarChartOverlay/MultiMeterBarChartOverlay.js +1 -1
- package/esm/charts/meter-bar/multi-meter-bar/components/MultiMeterBarChartOverlay/MultiMeterBarChartOverlay.js.map +2 -2
- package/esm/charts/meter-bar/multi-meter-bar/components/MultiMeterBarChartOverlay/MultiMeterBarChartOverlayWithTooltip.js +34 -8
- package/esm/charts/meter-bar/multi-meter-bar/components/MultiMeterBarChartOverlay/MultiMeterBarChartOverlayWithTooltip.js.map +2 -2
- package/esm/charts/meter-bar/multi-meter-bar/default.js +1 -1
- package/esm/charts/meter-bar/multi-meter-bar/default.js.map +2 -2
- package/esm/charts/meter-bar/multi-meter-bar/hooks/useMultiMeterBarChartTooltipHandlers.js +10 -37
- package/esm/charts/meter-bar/multi-meter-bar/hooks/useMultiMeterBarChartTooltipHandlers.js.map +2 -2
- package/esm/charts/meter-bar/multi-meter-bar/types/multi-meter-bar-chart.js.map +1 -1
- package/esm/charts/meter-bar/multi-meter-bar/utils/build-multi-meter-bar-chart-config.js +10 -7
- package/esm/charts/meter-bar/multi-meter-bar/utils/build-multi-meter-bar-chart-config.js.map +2 -2
- package/esm/charts/meter-bar/multi-meter-bar/utils/iterate-slots.js +4 -1
- package/esm/charts/meter-bar/multi-meter-bar/utils/iterate-slots.js.map +2 -2
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/MeterBarLayout.css +15 -15
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/MeterBarLayout.sty.js +10 -10
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/MeterBarLayout.sty.js.map +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Icon/Icon.css +2 -2
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Icon/Icon.sty.js +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Icon/Icon.sty.js.map +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Label/Label.css +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Label/Label.sty.js +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Label/Label.sty.js.map +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Max/Max.css +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Max/Max.sty.js +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Max/Max.sty.js.map +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Min/Min.css +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Min/Min.sty.js +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Min/Min.sty.js.map +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Value/Value.css +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Value/Value.sty.js +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-layout/slots/Value/Value.sty.js.map +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-plot/MeterBarPlot.css +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-plot/MeterBarPlot.sty.js +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-plot/MeterBarPlot.sty.js.map +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-toolbar/MeterBarToolbar.js +3 -3
- package/esm/charts/meter-bar/shared/components/meter-bar-toolbar/MeterBarToolbar.js.map +2 -2
- package/esm/charts/meter-bar/shared/components/meter-bar-tooltip/MeterBarTooltipItem/MeterBarTooltipItem.css +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-tooltip/MeterBarTooltipItem/MeterBarTooltipItem.sty.js +1 -1
- package/esm/charts/meter-bar/shared/components/meter-bar-tooltip/MeterBarTooltipItem/MeterBarTooltipItem.sty.js.map +1 -1
- package/esm/charts/meter-bar/shared/styles/element-size.css +4 -4
- package/esm/charts/meter-bar/shared/styles/element-size.sty.js +1 -1
- package/esm/charts/meter-bar/shared/styles/element-size.sty.js.map +1 -1
- package/esm/charts/meter-bar/shared/styles.css +1 -1
- package/esm/charts/meter-bar/shared/styles.sty.js +1 -1
- package/esm/charts/meter-bar/shared/styles.sty.js.map +1 -1
- package/esm/charts/meter-bar/shared/utils/slot-handlers.js +0 -10
- package/esm/charts/meter-bar/shared/utils/slot-handlers.js.map +2 -2
- package/esm/charts/meter-bar/single-meter-bar/MeterBarChart.js +1 -1
- package/esm/charts/meter-bar/single-meter-bar/MeterBarChart.js.map +2 -2
- package/esm/charts/meter-bar/single-meter-bar/components/MeterBarChartOverlay/MeterBarChartOverlay.js +1 -1
- package/esm/charts/meter-bar/single-meter-bar/components/MeterBarChartOverlay/MeterBarChartOverlay.js.map +2 -2
- package/esm/charts/meter-bar/single-meter-bar/components/MeterBarChartOverlay/MeterBarChartOverlayWithTooltip.js +61 -16
- package/esm/charts/meter-bar/single-meter-bar/components/MeterBarChartOverlay/MeterBarChartOverlayWithTooltip.js.map +2 -2
- package/esm/charts/meter-bar/single-meter-bar/components/MeterBarChartThresholds/MeterBarChartThresholds.css +1 -1
- package/esm/charts/meter-bar/single-meter-bar/components/MeterBarChartThresholds/MeterBarChartThresholds.sty.js +1 -1
- package/esm/charts/meter-bar/single-meter-bar/components/MeterBarChartThresholds/MeterBarChartThresholds.sty.js.map +1 -1
- package/esm/charts/meter-bar/single-meter-bar/context/MeterBarChartInternalConfigContext.js.map +1 -1
- package/esm/charts/meter-bar/single-meter-bar/types/default.js +2 -1
- package/esm/charts/meter-bar/single-meter-bar/types/default.js.map +2 -2
- package/esm/charts/meter-bar/single-meter-bar/utils/build-meter-bar-chart-config.js +5 -1
- package/esm/charts/meter-bar/single-meter-bar/utils/build-meter-bar-chart-config.js.map +2 -2
- package/esm/charts/meter-bar/single-meter-bar/utils/iterate-slots.js +4 -1
- package/esm/charts/meter-bar/single-meter-bar/utils/iterate-slots.js.map +2 -2
- package/esm/charts/pie/components/InnerWrapper/components/InnerContainer/InnerContainer.css +1 -1
- package/esm/charts/pie/components/InnerWrapper/components/InnerContainer/InnerContainer.sty.js +1 -1
- package/esm/charts/pie/components/InnerWrapper/components/InnerContainer/InnerContainer.sty.js.map +1 -1
- package/esm/charts/pie/components/InnerWrapper/components/InnerDonut/InnerDonut.css +1 -1
- package/esm/charts/pie/components/InnerWrapper/components/InnerDonut/InnerDonut.sty.js +1 -1
- package/esm/charts/pie/components/InnerWrapper/components/InnerDonut/InnerDonut.sty.js.map +1 -1
- package/esm/charts/pie/components/PieChartOverlays/PieChartOverlays.css +1 -1
- package/esm/charts/pie/components/PieChartOverlays/PieChartOverlays.sty.js +1 -1
- package/esm/charts/pie/components/PieChartOverlays/PieChartOverlays.sty.js.map +1 -1
- package/esm/charts/pie/components/PieChartPlot/PieChartPlot.css +1 -1
- package/esm/charts/pie/components/PieChartPlot/PieChartPlot.sty.js +1 -1
- package/esm/charts/pie/components/PieChartPlot/PieChartPlot.sty.js.map +1 -1
- package/esm/charts/pie/hooks/usePieHandlers.js +3 -3
- package/esm/charts/pie/hooks/usePieHandlers.js.map +2 -2
- package/esm/charts/pie/hooks/useSliceHandlers.js +7 -41
- package/esm/charts/pie/hooks/useSliceHandlers.js.map +2 -2
- package/esm/charts/single-value/SingleValue.css +1 -1
- package/esm/charts/single-value/SingleValue.js +4 -1
- package/esm/charts/single-value/SingleValue.js.map +2 -2
- package/esm/charts/single-value/SingleValue.sty.js +1 -1
- package/esm/charts/single-value/SingleValue.sty.js.map +1 -1
- package/esm/charts/single-value-grid/SingleValueGrid.css +2 -2
- package/esm/charts/single-value-grid/SingleValueGrid.js +4 -1
- package/esm/charts/single-value-grid/SingleValueGrid.js.map +2 -2
- package/esm/charts/single-value-grid/SingleValueGrid.sty.js +1 -1
- package/esm/charts/single-value-grid/SingleValueGrid.sty.js.map +1 -1
- package/esm/charts/single-value-grid/components/GlobalFontSizeVariables.css +1 -1
- package/esm/charts/single-value-grid/components/GlobalFontSizeVariables.sty.js +1 -1
- package/esm/charts/single-value-grid/components/GlobalFontSizeVariables.sty.js.map +1 -1
- package/esm/charts/timeseries/TimeseriesChart.js +65 -131
- package/esm/charts/timeseries/TimeseriesChart.js.map +2 -2
- package/esm/charts/timeseries/TimeseriesChartInternal.js +136 -0
- package/esm/charts/timeseries/TimeseriesChartInternal.js.map +7 -0
- package/esm/charts/timeseries/TimeseriesChartRoot.js +2 -54
- package/esm/charts/timeseries/TimeseriesChartRoot.js.map +2 -2
- package/esm/charts/timeseries/components/axes/TimeseriesTimeBottomAxisArea/TimeseriesTimeBottomAxisArea.css +2 -2
- package/esm/charts/timeseries/components/axes/TimeseriesTimeBottomAxisArea/TimeseriesTimeBottomAxisArea.js +4 -2
- package/esm/charts/timeseries/components/axes/TimeseriesTimeBottomAxisArea/TimeseriesTimeBottomAxisArea.js.map +2 -2
- package/esm/charts/timeseries/components/axes/TimeseriesTimeBottomAxisArea/TimeseriesTimeBottomAxisArea.sty.js +1 -1
- package/esm/charts/timeseries/components/axes/TimeseriesTimeBottomAxisArea/TimeseriesTimeBottomAxisArea.sty.js.map +1 -1
- package/esm/charts/timeseries/components/overlays/TimeseriesOverlays.css +4 -4
- package/esm/charts/timeseries/components/overlays/TimeseriesOverlays.sty.js +4 -4
- package/esm/charts/timeseries/components/overlays/TimeseriesOverlays.sty.js.map +1 -1
- package/esm/charts/timeseries/components/thresholds/ThresholdIndicators.css +2 -2
- package/esm/charts/timeseries/components/thresholds/ThresholdIndicators.sty.js +2 -2
- package/esm/charts/timeseries/components/thresholds/ThresholdIndicators.sty.js.map +1 -1
- package/esm/charts/tree-map/components/TreeMapOverlay/TreeMapOverlay.css +1 -1
- package/esm/charts/tree-map/components/TreeMapOverlay/TreeMapOverlay.sty.js +1 -1
- package/esm/charts/tree-map/components/TreeMapOverlay/TreeMapOverlay.sty.js.map +1 -1
- package/esm/charts/tree-map/components/TreeMapTooltip/TreeMapOverlayTooltip.js +12 -1
- package/esm/charts/tree-map/components/TreeMapTooltip/TreeMapOverlayTooltip.js.map +2 -2
- package/esm/charts/tree-map/components/canvas/TreeMapSquareRenderer.js +3 -2
- package/esm/charts/tree-map/components/canvas/TreeMapSquareRenderer.js.map +2 -2
- package/esm/charts/tree-map/components/canvas/utils/canvas-label-utils.js +7 -7
- package/esm/charts/tree-map/components/canvas/utils/canvas-label-utils.js.map +2 -2
- package/esm/charts/tree-map/constants.js +1 -0
- package/esm/charts/tree-map/constants.js.map +2 -2
- package/esm/charts/tree-map/contexts/TreeMapCustomTooltipContext.js +10 -0
- package/esm/charts/tree-map/contexts/TreeMapCustomTooltipContext.js.map +7 -0
- package/esm/charts/tree-map/hooks/useTreeMapCustomTooltip.js +7 -0
- package/esm/charts/tree-map/hooks/useTreeMapCustomTooltip.js.map +7 -0
- package/esm/charts/tree-map/providers/TreeMapChartProviders.js +13 -2
- package/esm/charts/tree-map/providers/TreeMapChartProviders.js.map +2 -2
- package/esm/charts/tree-map/slots/Tooltip.js +1 -1
- package/esm/charts/tree-map/slots/Tooltip.js.map +2 -2
- package/esm/charts/tree-map/utils/build-overlay-tooltip-data.js +3 -1
- package/esm/charts/tree-map/utils/build-overlay-tooltip-data.js.map +2 -2
- package/esm/charts/tree-map/utils/build-tree-map-chart-config.js +2 -1
- package/esm/charts/tree-map/utils/build-tree-map-chart-config.js.map +2 -2
- package/esm/charts/tree-map/utils/iterate-slots.js +8 -2
- package/esm/charts/tree-map/utils/iterate-slots.js.map +2 -2
- package/esm/charts/xy-chart/XYChart.js +2 -0
- package/esm/charts/xy-chart/XYChart.js.map +2 -2
- package/esm/charts/xy-chart/XYChartRoot.js +55 -39
- package/esm/charts/xy-chart/XYChartRoot.js.map +2 -2
- package/esm/charts/xy-chart/components/axes/AxisArea.css +1 -1
- package/esm/charts/xy-chart/components/axes/AxisArea.sty.js +1 -1
- package/esm/charts/xy-chart/components/axes/AxisArea.sty.js.map +1 -1
- package/esm/charts/xy-chart/components/axes/AxisTickWithTruncation.css +3 -3
- package/esm/charts/xy-chart/components/axes/AxisTickWithTruncation.sty.js +3 -3
- package/esm/charts/xy-chart/components/axes/AxisTickWithTruncation.sty.js.map +1 -1
- package/esm/charts/xy-chart/components/axes/XYChartBottomAxisArea.js +78 -63
- package/esm/charts/xy-chart/components/axes/XYChartBottomAxisArea.js.map +2 -2
- package/esm/charts/xy-chart/components/axes/XYChartTopAxisArea.js +78 -63
- package/esm/charts/xy-chart/components/axes/XYChartTopAxisArea.js.map +2 -2
- package/esm/charts/xy-chart/components/axes/utils/compute-collision-aware-max-space.js +35 -0
- package/esm/charts/xy-chart/components/axes/utils/compute-collision-aware-max-space.js.map +7 -0
- package/esm/charts/xy-chart/components/displays/{BarDisplay.js → BarDisplay/BarDisplay.js} +13 -10
- package/esm/charts/xy-chart/components/displays/BarDisplay/BarDisplay.js.map +7 -0
- package/esm/charts/xy-chart/components/displays/BarDisplay/BarLabelLayout.js +46 -0
- package/esm/charts/xy-chart/components/displays/BarDisplay/BarLabelLayout.js.map +7 -0
- package/esm/charts/xy-chart/components/displays/BarDisplay/BarLabelOverlay.css +19 -0
- package/esm/charts/xy-chart/components/displays/BarDisplay/BarLabelOverlay.js +150 -0
- package/esm/charts/xy-chart/components/displays/BarDisplay/BarLabelOverlay.js.map +7 -0
- package/esm/charts/xy-chart/components/displays/BarDisplay/BarLabelOverlay.sty.js +10 -0
- package/esm/charts/xy-chart/components/displays/BarDisplay/BarLabelOverlay.sty.js.map +7 -0
- package/esm/charts/xy-chart/components/displays/BarDisplay/HorizontalBarLabel.js +63 -0
- package/esm/charts/xy-chart/components/displays/BarDisplay/HorizontalBarLabel.js.map +7 -0
- package/esm/charts/xy-chart/components/displays/BarDisplay/VerticalBarLabel.js +64 -0
- package/esm/charts/xy-chart/components/displays/BarDisplay/VerticalBarLabel.js.map +7 -0
- package/esm/charts/xy-chart/components/displays/BarDisplay/label-utils.js +7 -0
- package/esm/charts/xy-chart/components/displays/BarDisplay/label-utils.js.map +7 -0
- package/esm/charts/xy-chart/components/displays/bar-accessors.js +7 -6
- package/esm/charts/xy-chart/components/displays/bar-accessors.js.map +2 -2
- package/esm/charts/xy-chart/components/legend/XYLegend/xy-legend.css +1 -1
- package/esm/charts/xy-chart/components/legend/XYLegend/xy-legend.sty.js +1 -1
- package/esm/charts/xy-chart/components/legend/XYLegend/xy-legend.sty.js.map +1 -1
- package/esm/charts/xy-chart/components/overlay/explore/XYChartCrosshair.css +1 -1
- package/esm/charts/xy-chart/components/overlay/explore/XYChartCrosshair.sty.js +1 -1
- package/esm/charts/xy-chart/components/overlay/explore/XYChartCrosshair.sty.js.map +1 -1
- package/esm/charts/xy-chart/components/overlay/explore/XYChartExplore.css +2 -2
- package/esm/charts/xy-chart/components/overlay/explore/XYChartExplore.sty.js +2 -2
- package/esm/charts/xy-chart/components/overlay/explore/XYChartExplore.sty.js.map +1 -1
- package/esm/charts/xy-chart/components/overlay/hooks/useApplyPanDelta.js +3 -3
- package/esm/charts/xy-chart/components/overlay/hooks/useApplyPanDelta.js.map +2 -2
- package/esm/charts/xy-chart/components/overlay/hooks/useApplyZoomDelta.js +3 -3
- package/esm/charts/xy-chart/components/overlay/hooks/useApplyZoomDelta.js.map +2 -2
- package/esm/charts/xy-chart/components/overlay/hooks/useOverlayEvents.js +27 -39
- package/esm/charts/xy-chart/components/overlay/hooks/useOverlayEvents.js.map +2 -2
- package/esm/charts/xy-chart/components/overlay/hooks/useResetInteractions.js +3 -3
- package/esm/charts/xy-chart/components/overlay/hooks/useResetInteractions.js.map +2 -2
- package/esm/charts/xy-chart/components/overlay/utils/get-selected-datapoints.js +1 -1
- package/esm/charts/xy-chart/components/overlay/utils/get-selected-datapoints.js.map +1 -1
- package/esm/charts/xy-chart/components/overlay/utils/serialize-rectangle-series-values.js +1 -1
- package/esm/charts/xy-chart/components/overlay/utils/serialize-rectangle-series-values.js.map +1 -1
- package/esm/charts/xy-chart/components/selection/TooltipHeader.css +2 -2
- package/esm/charts/xy-chart/components/selection/TooltipHeader.sty.js +2 -2
- package/esm/charts/xy-chart/components/selection/TooltipHeader.sty.js.map +1 -1
- package/esm/charts/xy-chart/components/thresholds/XYChartThresholdIndicators.css +1 -1
- package/esm/charts/xy-chart/components/thresholds/XYChartThresholdIndicators.sty.js +1 -1
- package/esm/charts/xy-chart/components/thresholds/XYChartThresholdIndicators.sty.js.map +1 -1
- package/esm/charts/xy-chart/components/tooltip/BarSeriesTooltip.js +11 -0
- package/esm/charts/xy-chart/components/tooltip/BarSeriesTooltip.js.map +2 -2
- package/esm/charts/xy-chart/components/tooltip/TopListTooltip.js +66 -0
- package/esm/charts/xy-chart/components/tooltip/TopListTooltip.js.map +7 -0
- package/esm/charts/xy-chart/components/tooltip/XYChartTooltipTemplate/XYChartTooltipTemplate.css +1 -1
- package/esm/charts/xy-chart/components/tooltip/XYChartTooltipTemplate/XYChartTooltipTemplate.sty.js +1 -1
- package/esm/charts/xy-chart/components/tooltip/XYChartTooltipTemplate/XYChartTooltipTemplate.sty.js.map +1 -1
- package/esm/charts/xy-chart/components/tooltip/utils/tooltip-styles.css +5 -5
- package/esm/charts/xy-chart/components/tooltip/utils/tooltip-styles.sty.js +4 -4
- package/esm/charts/xy-chart/components/tooltip/utils/tooltip-styles.sty.js.map +1 -1
- package/esm/charts/xy-chart/context/XYChartLegendHidden.context.js +9 -0
- package/esm/charts/xy-chart/context/XYChartLegendHidden.context.js.map +7 -0
- package/esm/charts/xy-chart/layout/XYChartLayout.css +2 -2
- package/esm/charts/xy-chart/layout/XYChartLayout.sty.js +2 -2
- package/esm/charts/xy-chart/layout/XYChartLayout.sty.js.map +1 -1
- package/esm/charts/xy-chart/layout/XYChartShiftedDisplay.js +1 -1
- package/esm/charts/xy-chart/layout/XYChartShiftedDisplay.js.map +1 -1
- package/esm/charts/xy-chart/processing-strategies/strategies/area-series.js +2 -1
- package/esm/charts/xy-chart/processing-strategies/strategies/area-series.js.map +2 -2
- package/esm/charts/xy-chart/processing-strategies/strategies/bar-series.js +9 -3
- package/esm/charts/xy-chart/processing-strategies/strategies/bar-series.js.map +2 -2
- package/esm/charts/xy-chart/processing-strategies/strategies/groupable-series.js +42 -5
- package/esm/charts/xy-chart/processing-strategies/strategies/groupable-series.js.map +2 -2
- package/esm/charts/xy-chart/processing-strategies/strategies/stackable-series.js +39 -4
- package/esm/charts/xy-chart/processing-strategies/strategies/stackable-series.js.map +2 -2
- package/esm/charts/xy-chart/processing-strategies/utils/access-datapoint/get-bar-datapoints.js +14 -2
- package/esm/charts/xy-chart/processing-strategies/utils/access-datapoint/get-bar-datapoints.js.map +2 -2
- package/esm/charts/xy-chart/providers/XYChartAxesTicksProvider.js +9 -2
- package/esm/charts/xy-chart/providers/XYChartAxesTicksProvider.js.map +2 -2
- package/esm/charts/xy-chart/slots/Tooltip.js.map +2 -2
- package/esm/charts/xy-chart/types/xy-chart-internals.js.map +2 -2
- package/esm/charts/xy-chart/types/xy-chart.js.map +1 -1
- package/esm/charts/xy-chart/utils/generate-nice-unit-ticks.js +39 -8
- package/esm/charts/xy-chart/utils/generate-nice-unit-ticks.js.map +2 -2
- package/esm/charts/xy-chart/utils/get-ticks-formatted-by-config.js +93 -11
- package/esm/charts/xy-chart/utils/get-ticks-formatted-by-config.js.map +2 -2
- package/esm/charts/xy-chart-adoption/timeseries/TimeseriesToXY.js +70 -0
- package/esm/charts/xy-chart-adoption/timeseries/TimeseriesToXY.js.map +7 -0
- package/esm/charts/xy-chart-adoption/timeseries/iterate-slots.js +60 -0
- package/esm/charts/xy-chart-adoption/timeseries/iterate-slots.js.map +7 -0
- package/esm/charts/xy-chart-adoption/timeseries/transformer-data-to-xy.js +54 -18
- package/esm/charts/xy-chart-adoption/timeseries/transformer-data-to-xy.js.map +2 -2
- package/esm/charts/xy-chart-adoption/timeseries/types/timeseries.js +7 -0
- package/esm/charts/xy-chart-adoption/timeseries/types/timeseries.js.map +7 -0
- package/esm/charts/xy-chart-adoption/timeseries/utils/render-series.js +42 -0
- package/esm/charts/xy-chart-adoption/timeseries/utils/render-series.js.map +7 -0
- package/esm/content/accordion/Accordion.css +14 -14
- package/esm/content/accordion/Accordion.sty.js +8 -8
- package/esm/content/accordion/Accordion.sty.js.map +1 -1
- package/esm/content/ai-loading-indicator/AiLoadingIndicator.css +12 -12
- package/esm/content/ai-loading-indicator/AiLoadingIndicator.sty.js +4 -4
- package/esm/content/ai-loading-indicator/AiLoadingIndicator.sty.js.map +1 -1
- package/esm/content/ai-response/AiResponse.css +5 -5
- package/esm/content/ai-response/AiResponse.sty.js +2 -2
- package/esm/content/ai-response/AiResponse.sty.js.map +1 -1
- package/esm/content/avatar/Avatar.css +13 -13
- package/esm/content/avatar/Avatar.sty.js +4 -4
- package/esm/content/avatar/Avatar.sty.js.map +1 -1
- package/esm/content/avatar-group/AvatarGroup.css +3 -3
- package/esm/content/avatar-group/AvatarGroup.sty.js +2 -2
- package/esm/content/avatar-group/AvatarGroup.sty.js.map +1 -1
- package/esm/content/chip/BaseChip.css +40 -40
- package/esm/content/chip/BaseChip.sty.js +5 -5
- package/esm/content/chip/BaseChip.sty.js.map +1 -1
- package/esm/content/chip/ChipContent.css +11 -11
- package/esm/content/chip/ChipContent.sty.js +2 -2
- package/esm/content/chip/ChipContent.sty.js.map +1 -1
- package/esm/content/chip/ChipDeleteButton.css +19 -19
- package/esm/content/chip/ChipDeleteButton.sty.js +4 -4
- package/esm/content/chip/ChipDeleteButton.sty.js.map +1 -1
- package/esm/content/chip/ChipKey.css +6 -6
- package/esm/content/chip/ChipKey.sty.js +1 -1
- package/esm/content/chip/ChipKey.sty.js.map +1 -1
- package/esm/content/chip/GroupedChip.css +3 -3
- package/esm/content/chip/GroupedChip.sty.js +3 -3
- package/esm/content/chip/GroupedChip.sty.js.map +1 -1
- package/esm/content/chip-group/ChipGroup.css +4 -4
- package/esm/content/chip-group/ChipGroup.sty.js +1 -1
- package/esm/content/chip-group/ChipGroup.sty.js.map +1 -1
- package/esm/content/chip-group/Control.css +4 -4
- package/esm/content/chip-group/Control.sty.js +1 -1
- package/esm/content/chip-group/Control.sty.js.map +1 -1
- package/esm/content/code-snippet/CodeHighlight.css +25 -25
- package/esm/content/code-snippet/CodeHighlight.sty.js +5 -5
- package/esm/content/code-snippet/CodeHighlight.sty.js.map +1 -1
- package/esm/content/code-snippet/CodeSnippet.css +5 -5
- package/esm/content/code-snippet/CodeSnippet.sty.js +2 -2
- package/esm/content/code-snippet/CodeSnippet.sty.js.map +1 -1
- package/esm/content/code-snippet/prism-dql-language.js +9 -5
- package/esm/content/code-snippet/prism-dql-language.js.map +2 -2
- package/esm/content/empty-state/EmptyState.css +28 -28
- package/esm/content/empty-state/EmptyState.sty.js +7 -7
- package/esm/content/empty-state/EmptyState.sty.js.map +1 -1
- package/esm/content/empty-state/slot-components/Footer.css +1 -1
- package/esm/content/empty-state/slot-components/Footer.sty.js +1 -1
- package/esm/content/empty-state/slot-components/Footer.sty.js.map +1 -1
- package/esm/content/empty-state/slot-components/Visual.css +3 -3
- package/esm/content/empty-state/slot-components/Visual.sty.js +1 -1
- package/esm/content/empty-state/slot-components/Visual.sty.js.map +1 -1
- package/esm/content/expandable-text/ExpandableText.css +7 -7
- package/esm/content/expandable-text/ExpandableText.sty.js +2 -2
- package/esm/content/expandable-text/ExpandableText.sty.js.map +1 -1
- package/esm/content/feature-highlight/FeatureHighlight.css +12 -12
- package/esm/content/feature-highlight/FeatureHighlight.sty.js +3 -3
- package/esm/content/feature-highlight/FeatureHighlight.sty.js.map +1 -1
- package/esm/content/health-indicator/styles.css +23 -23
- package/esm/content/health-indicator/styles.sty.js +1 -1
- package/esm/content/health-indicator/styles.sty.js.map +1 -1
- package/esm/content/information-overlay/InformationOverlay.css +25 -25
- package/esm/content/information-overlay/InformationOverlay.sty.js +5 -5
- package/esm/content/information-overlay/InformationOverlay.sty.js.map +1 -1
- package/esm/content/information-overlay/Trigger.js +2 -2
- package/esm/content/information-overlay/Trigger.js.map +2 -2
- package/esm/content/keyboard-shortcut/KeyboardShortcut.css +14 -14
- package/esm/content/keyboard-shortcut/KeyboardShortcut.sty.js +2 -2
- package/esm/content/keyboard-shortcut/KeyboardShortcut.sty.js.map +1 -1
- package/esm/content/markdown/Markdown.css +3 -3
- package/esm/content/markdown/Markdown.sty.js +1 -1
- package/esm/content/markdown/Markdown.sty.js.map +1 -1
- package/esm/content/markdown/transformers/typography-mapping.css +9 -9
- package/esm/content/markdown/transformers/typography-mapping.sty.js +6 -6
- package/esm/content/markdown/transformers/typography-mapping.sty.js.map +1 -1
- package/esm/content/microguide/Microguide.css +11 -11
- package/esm/content/microguide/Microguide.sty.js +7 -7
- package/esm/content/microguide/Microguide.sty.js.map +1 -1
- package/esm/content/progress/ProgressBar.css +71 -71
- package/esm/content/progress/ProgressBar.sty.js +5 -5
- package/esm/content/progress/ProgressBar.sty.js.map +1 -1
- package/esm/content/progress/ProgressBarIcon.css +2 -2
- package/esm/content/progress/ProgressBarIcon.sty.js +1 -1
- package/esm/content/progress/ProgressBarIcon.sty.js.map +1 -1
- package/esm/content/progress/ProgressBarLabel.css +3 -3
- package/esm/content/progress/ProgressBarLabel.sty.js +1 -1
- package/esm/content/progress/ProgressBarLabel.sty.js.map +1 -1
- package/esm/content/progress/ProgressBarValue.css +5 -5
- package/esm/content/progress/ProgressBarValue.sty.js +1 -1
- package/esm/content/progress/ProgressBarValue.sty.js.map +1 -1
- package/esm/content/progress/ProgressCircle.css +40 -40
- package/esm/content/progress/ProgressCircle.sty.js +5 -5
- package/esm/content/progress/ProgressCircle.sty.js.map +1 -1
- package/esm/content/shared-components/Visual.css +3 -3
- package/esm/content/shared-components/Visual.sty.js +1 -1
- package/esm/content/shared-components/Visual.sty.js.map +1 -1
- package/esm/content/skeleton/Skeleton.css +7 -7
- package/esm/content/skeleton/Skeleton.sty.js +5 -5
- package/esm/content/skeleton/Skeleton.sty.js.map +1 -1
- package/esm/content/terminology-overlay/TerminologyOverlay.css +4 -4
- package/esm/content/terminology-overlay/TerminologyOverlay.js +16 -4
- package/esm/content/terminology-overlay/TerminologyOverlay.js.map +2 -2
- package/esm/content/terminology-overlay/TerminologyOverlay.sty.js +1 -1
- package/esm/content/terminology-overlay/TerminologyOverlay.sty.js.map +1 -1
- package/esm/content/terminology-overlay/Trigger.js +5 -1
- package/esm/content/terminology-overlay/Trigger.js.map +2 -2
- package/esm/core/components/app-root/AppRoot.css +2 -2
- package/esm/core/components/app-root/AppRoot.sty.js +1 -1
- package/esm/core/components/app-root/AppRoot.sty.js.map +1 -1
- package/esm/core/components/visually-hidden/VisuallyHidden.css +1 -1
- package/esm/core/components/visually-hidden/VisuallyHidden.sty.js +1 -1
- package/esm/core/components/visually-hidden/VisuallyHidden.sty.js.map +1 -1
- package/esm/core/contexts/PermissionsContext.js +17 -0
- package/esm/core/contexts/PermissionsContext.js.map +7 -0
- package/esm/core/dql/dql-common.js +2 -0
- package/esm/core/dql/dql-common.js.map +2 -2
- package/esm/core/external-links.js +11 -0
- package/esm/core/external-links.js.map +7 -0
- package/esm/core/hooks/usePermissions.js +37 -0
- package/esm/core/hooks/usePermissions.js.map +7 -0
- package/esm/core/index.js +4 -0
- package/esm/core/index.js.map +2 -2
- package/esm/core/sdk/sdk-logger.js +2 -2
- package/esm/core/styles/defaultChartValues.css +1 -1
- package/esm/core/styles/defaultChartValues.sty.js +1 -1
- package/esm/core/styles/defaultChartValues.sty.js.map +1 -1
- package/esm/core/styles/focusRing.css +66 -66
- package/esm/core/styles/focusRing.sty.js +2 -2
- package/esm/core/styles/focusRing.sty.js.map +1 -1
- package/esm/core/styles/focusRingStatic.css +34 -34
- package/esm/core/styles/focusRingStatic.sty.js +1 -1
- package/esm/core/styles/focusRingStatic.sty.js.map +1 -1
- package/esm/core/styles/virtualFocus.css +2 -2
- package/esm/core/styles/virtualFocus.sty.js +1 -1
- package/esm/core/styles/virtualFocus.sty.js.map +1 -1
- package/esm/core/time/timeframeStore/actions/dateTimePicker.js +5 -6
- package/esm/core/time/timeframeStore/actions/dateTimePicker.js.map +2 -2
- package/esm/core/time/timeframeStore/actions/dateTimeRangePicker.js +5 -7
- package/esm/core/time/timeframeStore/actions/dateTimeRangePicker.js.map +2 -2
- package/esm/core/time/timeframeStore/actions/timeframeSelector.js +10 -10
- package/esm/core/time/timeframeStore/actions/timeframeSelector.js.map +2 -2
- package/esm/core/time/useDateTimeMessages.js +6 -6
- package/esm/core/time/useDateTimeMessages.js.map +2 -2
- package/esm/core/time/validation.js +2 -2
- package/esm/core/time/validation.js.map +2 -2
- package/esm/core/utils/colorUtils.css +60 -60
- package/esm/core/utils/colorUtils.sty.js +2 -2
- package/esm/core/utils/colorUtils.sty.js.map +1 -1
- package/esm/core/utils/permissionsQueryClient.js +15 -0
- package/esm/core/utils/permissionsQueryClient.js.map +7 -0
- package/esm/editors/base-code-editor/BaseCodeEditor.css +133 -133
- package/esm/editors/base-code-editor/BaseCodeEditor.sty.js +2 -2
- package/esm/editors/base-code-editor/BaseCodeEditor.sty.js.map +1 -1
- package/esm/editors/dql-editor/DQLEditor.js +124 -75
- package/esm/editors/dql-editor/DQLEditor.js.map +2 -2
- package/esm/editors/dql-editor/actions-menu/ActionsMenu.css +28 -0
- package/esm/editors/dql-editor/actions-menu/ActionsMenu.js +76 -0
- package/esm/editors/dql-editor/actions-menu/ActionsMenu.js.map +7 -0
- package/esm/editors/dql-editor/actions-menu/ActionsMenu.sty.js +11 -0
- package/esm/editors/dql-editor/actions-menu/ActionsMenu.sty.js.map +7 -0
- package/esm/editors/dql-editor/actions-menu/actions-menu-messages.js +22 -0
- package/esm/editors/dql-editor/actions-menu/actions-menu-messages.js.map +7 -0
- package/esm/editors/dql-editor/dql/DocumentationLink.js +2 -3
- package/esm/editors/dql-editor/dql/DocumentationLink.js.map +2 -2
- package/esm/editors/dql-editor/dql/SuggestionPart.css +1 -1
- package/esm/editors/dql-editor/dql/SuggestionPart.sty.js +1 -1
- package/esm/editors/dql-editor/dql/SuggestionPart.sty.js.map +1 -1
- package/esm/editors/dql-editor/dql/dql-language.js +25 -7
- package/esm/editors/dql-editor/dql/dql-language.js.map +2 -2
- package/esm/editors/dql-editor/dql/dql.js +8 -2
- package/esm/editors/dql-editor/dql/dql.js.map +2 -2
- package/esm/filters/filter-field/FilterField.css +117 -117
- package/esm/filters/filter-field/FilterField.js +89 -68
- package/esm/filters/filter-field/FilterField.js.map +2 -2
- package/esm/filters/filter-field/FilterField.sty.js +28 -28
- package/esm/filters/filter-field/FilterField.sty.js.map +1 -1
- package/esm/filters/filter-field/components/FilterFieldSuffixButtons.css +3 -3
- package/esm/filters/filter-field/components/FilterFieldSuffixButtons.js +1 -0
- package/esm/filters/filter-field/components/FilterFieldSuffixButtons.js.map +2 -2
- package/esm/filters/filter-field/components/FilterFieldSuffixButtons.sty.js +3 -3
- package/esm/filters/filter-field/components/FilterFieldSuffixButtons.sty.js.map +1 -1
- package/esm/filters/filter-field/components/FilterStatement.css +13 -13
- package/esm/filters/filter-field/components/FilterStatement.sty.js +6 -6
- package/esm/filters/filter-field/components/FilterStatement.sty.js.map +1 -1
- package/esm/filters/filter-field/hooks/useSuggestions.js +7 -1
- package/esm/filters/filter-field/hooks/useSuggestions.js.map +2 -2
- package/esm/filters/filter-field/suggestions/RecentPinnedSuggestionItem.css +9 -9
- package/esm/filters/filter-field/suggestions/RecentPinnedSuggestionItem.sty.js +2 -2
- package/esm/filters/filter-field/suggestions/RecentPinnedSuggestionItem.sty.js.map +1 -1
- package/esm/filters/filter-field/suggestions/Suggestion.css +24 -24
- package/esm/filters/filter-field/suggestions/Suggestion.js +10 -1
- package/esm/filters/filter-field/suggestions/Suggestion.js.map +2 -2
- package/esm/filters/filter-field/suggestions/Suggestion.sty.js +17 -15
- package/esm/filters/filter-field/suggestions/Suggestion.sty.js.map +2 -2
- package/esm/filters/filter-field/suggestions/SuggestionDetails.css +2 -2
- package/esm/filters/filter-field/suggestions/SuggestionDetails.sty.js +2 -2
- package/esm/filters/filter-field/suggestions/SuggestionDetails.sty.js.map +1 -1
- package/esm/filters/filter-field/suggestions/SuggestionGroup.css +6 -6
- package/esm/filters/filter-field/suggestions/SuggestionGroup.sty.js +3 -3
- package/esm/filters/filter-field/suggestions/SuggestionGroup.sty.js.map +1 -1
- package/esm/filters/filter-field/suggestions/SuggestionGroupLabel.css +1 -1
- package/esm/filters/filter-field/suggestions/SuggestionGroupLabel.sty.js +1 -1
- package/esm/filters/filter-field/suggestions/SuggestionGroupLabel.sty.js.map +1 -1
- package/esm/filters/filter-field/suggestions/SuggestionTips.css +7 -7
- package/esm/filters/filter-field/suggestions/SuggestionTips.sty.js +5 -5
- package/esm/filters/filter-field/suggestions/SuggestionTips.sty.js.map +1 -1
- package/esm/filters/filter-field/suggestions/Suggestions.js +1 -1
- package/esm/filters/filter-field/suggestions/Suggestions.js.map +2 -2
- package/esm/filters/filter-field/suggestions/SuggestionsOverlay.css +7 -7
- package/esm/filters/filter-field/suggestions/SuggestionsOverlay.sty.js +5 -5
- package/esm/filters/filter-field/suggestions/SuggestionsOverlay.sty.js.map +1 -1
- package/esm/filters/filter-field/utils/get-suggestion-transaction.js +1 -1
- package/esm/filters/filter-field/utils/get-suggestion-transaction.js.map +2 -2
- package/esm/filters/filter-field/utils/suggestions-utils/get-suggestions.js +15 -18
- package/esm/filters/filter-field/utils/suggestions-utils/get-suggestions.js.map +2 -2
- package/esm/filters/filter-field/utils/suggestions-utils/operator-suggestions.js +4 -2
- package/esm/filters/filter-field/utils/suggestions-utils/operator-suggestions.js.map +2 -2
- package/esm/filters/filter-field/utils/suggestions-utils/suggestion-matching.js +46 -0
- package/esm/filters/filter-field/utils/suggestions-utils/suggestion-matching.js.map +7 -0
- package/esm/filters/segment-selector/SegmentSelector.css +4 -4
- package/esm/filters/segment-selector/SegmentSelector.js +4 -4
- package/esm/filters/segment-selector/SegmentSelector.js.map +2 -2
- package/esm/filters/segment-selector/SegmentSelector.sty.js +4 -4
- package/esm/filters/segment-selector/SegmentSelector.sty.js.map +1 -1
- package/esm/filters/segment-selector/parts/EmptySegments.css +1 -1
- package/esm/filters/segment-selector/parts/EmptySegments.js +7 -3
- package/esm/filters/segment-selector/parts/EmptySegments.js.map +2 -2
- package/esm/filters/segment-selector/parts/EmptySegments.sty.js +1 -1
- package/esm/filters/segment-selector/parts/EmptySegments.sty.js.map +1 -1
- package/esm/filters/segment-selector/parts/Overlay.css +8 -8
- package/esm/filters/segment-selector/parts/Overlay.js +8 -4
- package/esm/filters/segment-selector/parts/Overlay.js.map +2 -2
- package/esm/filters/segment-selector/parts/Overlay.sty.js +8 -8
- package/esm/filters/segment-selector/parts/Overlay.sty.js.map +1 -1
- package/esm/filters/segment-selector/parts/SegmentFooter.js +7 -3
- package/esm/filters/segment-selector/parts/SegmentFooter.js.map +2 -2
- package/esm/filters/segment-selector/parts/ShowMorePanel/ShowMorePanel.css +4 -4
- package/esm/filters/segment-selector/parts/ShowMorePanel/ShowMorePanel.sty.js +4 -4
- package/esm/filters/segment-selector/parts/ShowMorePanel/ShowMorePanel.sty.js.map +1 -1
- package/esm/filters/segment-selector/parts/noAccessRights/CopyPermissionsButton.js +3 -5
- package/esm/filters/segment-selector/parts/noAccessRights/CopyPermissionsButton.js.map +2 -2
- package/esm/filters/segment-selector/parts/noAccessRights/NoAccessWithoutSelection.js +2 -1
- package/esm/filters/segment-selector/parts/noAccessRights/NoAccessWithoutSelection.js.map +2 -2
- package/esm/filters/segment-selector/parts/segmentManagementHref.js +8 -0
- package/esm/filters/segment-selector/parts/segmentManagementHref.js.map +7 -0
- package/esm/filters/segment-selector/parts/segmentsPresets/SegmentsPresets.css +32 -32
- package/esm/filters/segment-selector/parts/segmentsPresets/SegmentsPresets.sty.js +10 -10
- package/esm/filters/segment-selector/parts/segmentsPresets/SegmentsPresets.sty.js.map +1 -1
- package/esm/filters/segment-selector/parts/selectionBar/SegmentSelect.css +22 -22
- package/esm/filters/segment-selector/parts/selectionBar/SegmentSelect.js +8 -4
- package/esm/filters/segment-selector/parts/selectionBar/SegmentSelect.js.map +2 -2
- package/esm/filters/segment-selector/parts/selectionBar/SegmentSelect.sty.js +7 -7
- package/esm/filters/segment-selector/parts/selectionBar/SegmentSelect.sty.js.map +1 -1
- package/esm/filters/segment-selector/parts/selectionBar/SegmentSelectorTrigger.css +1 -1
- package/esm/filters/segment-selector/parts/selectionBar/SegmentSelectorTrigger.sty.js +1 -1
- package/esm/filters/segment-selector/parts/selectionBar/SegmentSelectorTrigger.sty.js.map +1 -1
- package/esm/filters/segment-selector/parts/selectionBar/ValueSelect.js +39 -14
- package/esm/filters/segment-selector/parts/selectionBar/ValueSelect.js.map +2 -2
- package/esm/filters/timeframe-selector/TimeframeSelector.css +5 -1
- package/esm/filters/timeframe-selector/TimeframeSelector.js +3 -10
- package/esm/filters/timeframe-selector/TimeframeSelector.js.map +2 -2
- package/esm/filters/timeframe-selector/TimeframeSelector.sty.js +4 -2
- package/esm/filters/timeframe-selector/TimeframeSelector.sty.js.map +2 -2
- package/esm/filters/timeframe-selector/TimeframeSelectorRoot.js +5 -3
- package/esm/filters/timeframe-selector/TimeframeSelectorRoot.js.map +2 -2
- package/esm/filters/timeframe-selector/components/TimeframeSelectorTooltip.js +1 -1
- package/esm/filters/timeframe-selector/components/TimeframeSelectorTooltip.js.map +2 -2
- package/esm/filters/timeframe-selector/components/custom-timeframe-selector/CustomTimeframeSelector.css +4 -4
- package/esm/filters/timeframe-selector/components/custom-timeframe-selector/CustomTimeframeSelector.js +4 -0
- package/esm/filters/timeframe-selector/components/custom-timeframe-selector/CustomTimeframeSelector.js.map +2 -2
- package/esm/filters/timeframe-selector/components/custom-timeframe-selector/CustomTimeframeSelector.sty.js +3 -3
- package/esm/filters/timeframe-selector/components/custom-timeframe-selector/CustomTimeframeSelector.sty.js.map +1 -1
- package/esm/filters/timeframe-selector/components/overlay/TimeframeSelectorOverlay.css +4 -4
- package/esm/filters/timeframe-selector/components/overlay/TimeframeSelectorOverlay.sty.js +4 -4
- package/esm/filters/timeframe-selector/components/overlay/TimeframeSelectorOverlay.sty.js.map +1 -1
- package/esm/filters/timeframe-selector/components/overlay/TimeframeSelectorOverlayFooter.js +6 -7
- package/esm/filters/timeframe-selector/components/overlay/TimeframeSelectorOverlayFooter.js.map +2 -2
- package/esm/filters/timeframe-selector/components/presets/Presets.css +27 -27
- package/esm/filters/timeframe-selector/components/presets/Presets.sty.js +11 -11
- package/esm/filters/timeframe-selector/components/presets/Presets.sty.js.map +1 -1
- package/esm/filters/timeframe-selector/components/stepper/StepperButton.js +1 -1
- package/esm/filters/timeframe-selector/components/stepper/StepperButton.js.map +2 -2
- package/esm/filters/timeframe-selector/components/trigger/Trigger.css +11 -11
- package/esm/filters/timeframe-selector/components/trigger/Trigger.js +1 -0
- package/esm/filters/timeframe-selector/components/trigger/Trigger.js.map +2 -2
- package/esm/filters/timeframe-selector/components/trigger/Trigger.sty.js +4 -4
- package/esm/filters/timeframe-selector/components/trigger/Trigger.sty.js.map +1 -1
- package/esm/filters/timeframe-selector/utils/getTimeframeDisplayValueProps.js.map +2 -2
- package/esm/forms/_base-input/BaseInput.css +99 -99
- package/esm/forms/_base-input/BaseInput.js +35 -20
- package/esm/forms/_base-input/BaseInput.js.map +2 -2
- package/esm/forms/_base-input/BaseInput.sty.js +12 -12
- package/esm/forms/_base-input/BaseInput.sty.js.map +2 -2
- package/esm/forms/_base-input/BaseInputContent.css +7 -7
- package/esm/forms/_base-input/BaseInputContent.js +2 -0
- package/esm/forms/_base-input/BaseInputContent.js.map +2 -2
- package/esm/forms/_base-input/BaseInputContent.sty.js +1 -1
- package/esm/forms/_base-input/BaseInputContent.sty.js.map +1 -1
- package/esm/forms/_base-input/ClearButton.js +25 -0
- package/esm/forms/_base-input/ClearButton.js.map +7 -0
- package/esm/forms/calendar/Calendar.css +47 -47
- package/esm/forms/calendar/Calendar.sty.js +11 -11
- package/esm/forms/calendar/Calendar.sty.js.map +1 -1
- package/esm/forms/calendar/components/CalendarItem.css +7 -7
- package/esm/forms/calendar/components/CalendarItem.sty.js +4 -4
- package/esm/forms/calendar/components/CalendarItem.sty.js.map +1 -1
- package/esm/forms/calendar/components/CalendarOutlineIcon.css +8 -8
- package/esm/forms/calendar/components/CalendarOutlineIcon.sty.js +5 -5
- package/esm/forms/calendar/components/CalendarOutlineIcon.sty.js.map +1 -1
- package/esm/forms/calendar/variables.sty.js +2 -2
- package/esm/forms/calendar/variables.sty.js.map +1 -1
- package/esm/forms/checkbox/Checkbox.css +20 -20
- package/esm/forms/checkbox/Checkbox.sty.js +3 -3
- package/esm/forms/checkbox/Checkbox.sty.js.map +1 -1
- package/esm/forms/date-time-picker/DateTimePicker.css +75 -75
- package/esm/forms/date-time-picker/DateTimePicker.sty.js +6 -6
- package/esm/forms/date-time-picker/DateTimePicker.sty.js.map +1 -1
- package/esm/forms/date-time-picker/DateTimePickerRoot.js +4 -0
- package/esm/forms/date-time-picker/DateTimePickerRoot.js.map +2 -2
- package/esm/forms/date-time-picker/hooks/useDateTimePicker.js +4 -5
- package/esm/forms/date-time-picker/hooks/useDateTimePicker.js.map +2 -2
- package/esm/forms/date-time-picker/utils/focusDateTimeInput.js +23 -0
- package/esm/forms/date-time-picker/utils/focusDateTimeInput.js.map +2 -2
- package/esm/forms/date-time-range-picker/DateRangeSelector.css +1 -1
- package/esm/forms/date-time-range-picker/DateRangeSelector.sty.js +1 -1
- package/esm/forms/date-time-range-picker/DateRangeSelector.sty.js.map +1 -1
- package/esm/forms/date-time-range-picker/DateTimeInput.css +11 -11
- package/esm/forms/date-time-range-picker/DateTimeInput.js +4 -0
- package/esm/forms/date-time-range-picker/DateTimeInput.js.map +2 -2
- package/esm/forms/date-time-range-picker/DateTimeInput.sty.js +3 -3
- package/esm/forms/date-time-range-picker/DateTimeInput.sty.js.map +1 -1
- package/esm/forms/date-time-range-picker/DateTimeRangePicker.css +27 -27
- package/esm/forms/date-time-range-picker/DateTimeRangePicker.js +3 -7
- package/esm/forms/date-time-range-picker/DateTimeRangePicker.js.map +2 -2
- package/esm/forms/date-time-range-picker/DateTimeRangePicker.sty.js +4 -4
- package/esm/forms/date-time-range-picker/DateTimeRangePicker.sty.js.map +1 -1
- package/esm/forms/date-time-range-picker/DateTimeRangePickerRoot.js +24 -8
- package/esm/forms/date-time-range-picker/DateTimeRangePickerRoot.js.map +2 -2
- package/esm/forms/date-time-range-picker/helpers.js +56 -17
- package/esm/forms/date-time-range-picker/helpers.js.map +2 -2
- package/esm/forms/date-time-range-picker/hooks/useDateTimeInput.js +95 -58
- package/esm/forms/date-time-range-picker/hooks/useDateTimeInput.js.map +3 -3
- package/esm/forms/date-time-range-picker/hooks/useDateTimeRangePicker.js +60 -19
- package/esm/forms/date-time-range-picker/hooks/useDateTimeRangePicker.js.map +2 -2
- package/esm/forms/date-time-range-picker/selection-copy-helpers.js +53 -24
- package/esm/forms/date-time-range-picker/selection-copy-helpers.js.map +2 -2
- package/esm/forms/date-time-range-picker/selection-helpers.js +146 -48
- package/esm/forms/date-time-range-picker/selection-helpers.js.map +2 -2
- package/esm/forms/date-time-range-picker/useSelectionInteractionHandlers.js +5 -47
- package/esm/forms/date-time-range-picker/useSelectionInteractionHandlers.js.map +2 -2
- package/esm/forms/forms-core/components/field-set/FieldSet.css +2 -2
- package/esm/forms/forms-core/components/field-set/FieldSet.sty.js +2 -2
- package/esm/forms/forms-core/components/field-set/FieldSet.sty.js.map +1 -1
- package/esm/forms/forms-core/components/form-field/FormField.sty.js +1 -1
- package/esm/forms/forms-core/components/form-field/FormField.sty.js.map +1 -1
- package/esm/forms/forms-core/components/form-field-messages/FormFieldMessageItem.css +5 -5
- package/esm/forms/forms-core/components/form-field-messages/FormFieldMessageItem.sty.js +2 -2
- package/esm/forms/forms-core/components/form-field-messages/FormFieldMessageItem.sty.js.map +1 -1
- package/esm/forms/forms-core/components/form-field-messages/FormFieldMessages.sty.js +1 -1
- package/esm/forms/forms-core/components/form-field-messages/FormFieldMessages.sty.js.map +1 -1
- package/esm/forms/forms-core/components/label/Label.css +5 -5
- package/esm/forms/forms-core/components/label/Label.sty.js +2 -2
- package/esm/forms/forms-core/components/label/Label.sty.js.map +1 -1
- package/esm/forms/forms-core/time/helpers.js +1 -1
- package/esm/forms/forms-core/time/helpers.js.map +2 -2
- package/esm/forms/hooks/useAutofillEvent.css +8 -8
- package/esm/forms/hooks/useAutofillEvent.sty.js +4 -4
- package/esm/forms/hooks/useAutofillEvent.sty.js.map +1 -1
- package/esm/forms/index.js.map +2 -2
- package/esm/forms/number-input/NumberInputBase.js +2 -2
- package/esm/forms/number-input/NumberInputBase.js.map +2 -2
- package/esm/forms/number-input-v2/NumberInput.js +3 -3
- package/esm/forms/number-input-v2/NumberInput.js.map +2 -2
- package/esm/forms/radio/styles.css +18 -18
- package/esm/forms/radio/styles.sty.js +8 -8
- package/esm/forms/radio/styles.sty.js.map +1 -1
- package/esm/forms/search-input/SearchInput.css +4 -1
- package/esm/forms/search-input/SearchInput.js +35 -3
- package/esm/forms/search-input/SearchInput.js.map +2 -2
- package/esm/forms/search-input/SearchInput.sty.js +2 -1
- package/esm/forms/search-input/SearchInput.sty.js.map +2 -2
- package/esm/forms/search-input/Stepper.css +21 -0
- package/esm/forms/search-input/Stepper.js +92 -0
- package/esm/forms/search-input/Stepper.js.map +7 -0
- package/esm/forms/search-input/Stepper.sty.js +16 -0
- package/esm/forms/search-input/Stepper.sty.js.map +7 -0
- package/esm/forms/select/Select.js +6 -2
- package/esm/forms/select/Select.js.map +2 -2
- package/esm/forms/select/components/Control.js +1 -0
- package/esm/forms/select/components/Control.js.map +2 -2
- package/esm/forms/select/components/MenuList.js +1 -0
- package/esm/forms/select/components/MenuList.js.map +2 -2
- package/esm/forms/select/components/Option.js +2 -0
- package/esm/forms/select/components/Option.js.map +2 -2
- package/esm/forms/select/hooks/use-select-options.js +0 -3
- package/esm/forms/select/hooks/use-select-options.js.map +2 -2
- package/esm/forms/select/styles/Select.css +47 -47
- package/esm/forms/select/styles/Select.sty.js +24 -24
- package/esm/forms/select/styles/Select.sty.js.map +1 -1
- package/esm/forms/spin-buttons/SpinButton.css +8 -8
- package/esm/forms/spin-buttons/SpinButton.sty.js +2 -2
- package/esm/forms/spin-buttons/SpinButton.sty.js.map +1 -1
- package/esm/forms/spin-buttons/spin-button-group/hooks/useNavigateSpinButton.js +1 -1
- package/esm/forms/spin-buttons/spin-button-group/hooks/useNavigateSpinButton.js.map +2 -2
- package/esm/forms/switch/Switch.css +36 -36
- package/esm/forms/switch/Switch.sty.js +5 -5
- package/esm/forms/switch/Switch.sty.js.map +1 -1
- package/esm/forms/text-area/TextArea.css +59 -59
- package/esm/forms/text-area/TextArea.sty.js +3 -3
- package/esm/forms/text-area/TextArea.sty.js.map +1 -1
- package/esm/forms/toggle-button-group/styles.css +58 -58
- package/esm/forms/toggle-button-group/styles.sty.js +15 -15
- package/esm/forms/toggle-button-group/styles.sty.js.map +1 -1
- package/esm/layouts/app-header/AppHeader.css +1 -1
- package/esm/layouts/app-header/AppHeader.sty.js +1 -1
- package/esm/layouts/app-header/AppHeader.sty.js.map +1 -1
- package/esm/layouts/app-header/Navigation.css +9 -9
- package/esm/layouts/app-header/Navigation.sty.js +5 -5
- package/esm/layouts/app-header/Navigation.sty.js.map +1 -1
- package/esm/layouts/app-header/action-group/ActionButton.css +17 -17
- package/esm/layouts/app-header/action-group/ActionButton.sty.js +3 -3
- package/esm/layouts/app-header/action-group/ActionButton.sty.js.map +1 -1
- package/esm/layouts/app-header/action-group/ActionGroup.css +1 -1
- package/esm/layouts/app-header/action-group/ActionGroup.sty.js +1 -1
- package/esm/layouts/app-header/action-group/ActionGroup.sty.js.map +1 -1
- package/esm/layouts/app-header/action-group/NavItem.css +4 -4
- package/esm/layouts/app-header/action-group/NavItem.sty.js +3 -3
- package/esm/layouts/app-header/action-group/NavItem.sty.js.map +1 -1
- package/esm/layouts/app-header/app-icon/AppIcon.css +4 -4
- package/esm/layouts/app-header/app-icon/AppIcon.sty.js +1 -1
- package/esm/layouts/app-header/app-icon/AppIcon.sty.js.map +1 -1
- package/esm/layouts/container/Container.css +5 -5
- package/esm/layouts/container/Container.sty.js +1 -1
- package/esm/layouts/container/Container.sty.js.map +1 -1
- package/esm/layouts/divider/Divider.css +6 -6
- package/esm/layouts/divider/Divider.sty.js +1 -1
- package/esm/layouts/divider/Divider.sty.js.map +1 -1
- package/esm/layouts/input-group/InputGroup.css +23 -23
- package/esm/layouts/input-group/InputGroup.sty.js +1 -1
- package/esm/layouts/input-group/InputGroup.sty.js.map +1 -1
- package/esm/layouts/page/DetailView.css +3 -3
- package/esm/layouts/page/DetailView.sty.js +2 -2
- package/esm/layouts/page/DetailView.sty.js.map +1 -1
- package/esm/layouts/page/Header.css +2 -2
- package/esm/layouts/page/Header.sty.js +1 -1
- package/esm/layouts/page/Header.sty.js.map +1 -1
- package/esm/layouts/page/Main.css +6 -6
- package/esm/layouts/page/Main.sty.js +4 -4
- package/esm/layouts/page/Main.sty.js.map +1 -1
- package/esm/layouts/page/Page.css +2 -2
- package/esm/layouts/page/Page.sty.js +1 -1
- package/esm/layouts/page/Page.sty.js.map +1 -1
- package/esm/layouts/page/Sidebar.css +22 -22
- package/esm/layouts/page/Sidebar.sty.js +8 -8
- package/esm/layouts/page/Sidebar.sty.js.map +1 -1
- package/esm/layouts/page/panel.css +18 -18
- package/esm/layouts/page/panel.sty.js +10 -10
- package/esm/layouts/page/panel.sty.js.map +1 -1
- package/esm/layouts/page-layout/PageLayout.css +10 -10
- package/esm/layouts/page-layout/PageLayout.sty.js +6 -6
- package/esm/layouts/page-layout/PageLayout.sty.js.map +1 -1
- package/esm/layouts/page-layout/details-layout/DetailsControlBar.css +3 -3
- package/esm/layouts/page-layout/details-layout/DetailsControlBar.sty.js +3 -3
- package/esm/layouts/page-layout/details-layout/DetailsControlBar.sty.js.map +1 -1
- package/esm/layouts/page-layout/details-layout/DetailsLayout.css +6 -6
- package/esm/layouts/page-layout/details-layout/DetailsLayout.sty.js +5 -5
- package/esm/layouts/page-layout/details-layout/DetailsLayout.sty.js.map +1 -1
- package/esm/layouts/page-layout/details-layout/Overlay.css +21 -21
- package/esm/layouts/page-layout/details-layout/Overlay.sty.js +4 -4
- package/esm/layouts/page-layout/details-layout/Overlay.sty.js.map +1 -1
- package/esm/layouts/page-layout/sidebar-layout/SidebarLayout.css +38 -38
- package/esm/layouts/page-layout/sidebar-layout/SidebarLayout.sty.js +15 -15
- package/esm/layouts/page-layout/sidebar-layout/SidebarLayout.sty.js.map +1 -1
- package/esm/layouts/split-layout/SplitLayout.css +17 -17
- package/esm/layouts/split-layout/SplitLayout.sty.js +7 -7
- package/esm/layouts/split-layout/SplitLayout.sty.js.map +1 -1
- package/esm/layouts/surface/Surface.css +39 -39
- package/esm/layouts/surface/Surface.sty.js +2 -2
- package/esm/layouts/surface/Surface.sty.js.map +1 -1
- package/esm/layouts/surface/variables.sty.js +1 -1
- package/esm/layouts/surface/variables.sty.js.map +1 -1
- package/esm/layouts/title-bar/TitleBar.css +5 -5
- package/esm/layouts/title-bar/TitleBar.sty.js +4 -4
- package/esm/layouts/title-bar/TitleBar.sty.js.map +1 -1
- package/esm/navigation/breadcrumbs/Breadcrumbs.css +9 -9
- package/esm/navigation/breadcrumbs/Breadcrumbs.sty.js +5 -5
- package/esm/navigation/breadcrumbs/Breadcrumbs.sty.js.map +1 -1
- package/esm/navigation/menu/Content.js +0 -2
- package/esm/navigation/menu/Content.js.map +2 -2
- package/esm/navigation/menu/ItemTooltip.js.map +2 -2
- package/esm/navigation/menu/Menu.css +15 -15
- package/esm/navigation/menu/Menu.js +2 -15
- package/esm/navigation/menu/Menu.js.map +2 -2
- package/esm/navigation/menu/Menu.sty.js +8 -8
- package/esm/navigation/menu/Menu.sty.js.map +1 -1
- package/esm/navigation/menu/Sub.js +2 -15
- package/esm/navigation/menu/Sub.js.map +2 -2
- package/esm/navigation/menu/hooks/useMenuAutoClose.js +33 -0
- package/esm/navigation/menu/hooks/useMenuAutoClose.js.map +7 -0
- package/esm/navigation/tabs/RenderTab.css +14 -14
- package/esm/navigation/tabs/RenderTab.sty.js +3 -3
- package/esm/navigation/tabs/RenderTab.sty.js.map +1 -1
- package/esm/navigation/tabs/TabPanel.css +3 -3
- package/esm/navigation/tabs/TabPanel.sty.js +2 -2
- package/esm/navigation/tabs/TabPanel.sty.js.map +1 -1
- package/esm/navigation/tabs/Tabs.css +9 -9
- package/esm/navigation/tabs/Tabs.sty.js +5 -5
- package/esm/navigation/tabs/Tabs.sty.js.map +1 -1
- package/esm/notifications/notification-settings/NotificationSettings.css +1 -1
- package/esm/notifications/notification-settings/NotificationSettings.sty.js +1 -1
- package/esm/notifications/notification-settings/NotificationSettings.sty.js.map +1 -1
- package/esm/notifications/toast/Toast.css +5 -5
- package/esm/notifications/toast/Toast.sty.js +4 -4
- package/esm/notifications/toast/Toast.sty.js.map +1 -1
- package/esm/notifications/toast/ToastContainer.css +17 -17
- package/esm/notifications/toast/ToastContainer.sty.js +1 -1
- package/esm/notifications/toast/ToastContainer.sty.js.map +1 -1
- package/esm/overlays/drawer/Drawer.css +9 -9
- package/esm/overlays/drawer/Drawer.sty.js +5 -5
- package/esm/overlays/drawer/Drawer.sty.js.map +1 -1
- package/esm/overlays/hooks/useOverlay.js +21 -0
- package/esm/overlays/hooks/useOverlay.js.map +2 -2
- package/esm/overlays/modal/Modal.css +7 -7
- package/esm/overlays/modal/Modal.sty.js +4 -4
- package/esm/overlays/modal/Modal.sty.js.map +1 -1
- package/esm/overlays/overlay/Overlay.css +1 -1
- package/esm/overlays/overlay/Overlay.sty.js +1 -1
- package/esm/overlays/overlay/Overlay.sty.js.map +1 -1
- package/esm/overlays/sheet/Sheet.css +6 -6
- package/esm/overlays/sheet/Sheet.sty.js +5 -5
- package/esm/overlays/sheet/Sheet.sty.js.map +1 -1
- package/esm/overlays/tooltip/tooltip.css +18 -18
- package/esm/overlays/tooltip/tooltip.sty.js +3 -3
- package/esm/overlays/tooltip/tooltip.sty.js.map +1 -1
- package/esm/styles/colorUtils.css +60 -60
- package/esm/styles/colorUtils.sty.js +2 -2
- package/esm/styles/colorUtils.sty.js.map +1 -1
- package/esm/styles/container.css +47 -47
- package/esm/styles/container.sty.js +2 -2
- package/esm/styles/container.sty.js.map +1 -1
- package/esm/styles/ellipsis.css +1 -1
- package/esm/styles/ellipsis.sty.js +1 -1
- package/esm/styles/ellipsis.sty.js.map +1 -1
- package/esm/styles/field.css +290 -290
- package/esm/styles/field.sty.js +2 -2
- package/esm/styles/field.sty.js.map +1 -1
- package/esm/styles/screen-reader-only.css +1 -1
- package/esm/styles/screen-reader-only.sty.js +1 -1
- package/esm/styles/screen-reader-only.sty.js.map +1 -1
- package/esm/styles/sprinkles.css +262 -262
- package/esm/styles/sprinkles.sty.js +1 -1
- package/esm/styles/sprinkles.sty.js.map +1 -1
- package/esm/styles/textStyle.css +8 -8
- package/esm/styles/textStyle.sty.js +1 -1
- package/esm/styles/textStyle.sty.js.map +1 -1
- package/esm/tables/DataTable/DataTable.css +2 -2
- package/esm/tables/DataTable/DataTable.sty.js +7 -7
- package/esm/tables/DataTable/DataTable.sty.js.map +1 -1
- package/esm/tables/DataTable/components/Alignment.css +6 -6
- package/esm/tables/DataTable/components/Alignment.sty.js +2 -2
- package/esm/tables/DataTable/components/Alignment.sty.js.map +1 -1
- package/esm/tables/DataTable/components/ColumnPinning/DataTablePinningShadowCells.css +6 -6
- package/esm/tables/DataTable/components/ColumnPinning/DataTablePinningShadowCells.sty.js +3 -3
- package/esm/tables/DataTable/components/ColumnPinning/DataTablePinningShadowCells.sty.js.map +1 -1
- package/esm/tables/DataTable/components/DataTableBody.css +2 -2
- package/esm/tables/DataTable/components/DataTableBody.sty.js +2 -2
- package/esm/tables/DataTable/components/DataTableBody.sty.js.map +1 -1
- package/esm/tables/DataTable/components/DataTableCell.css +99 -99
- package/esm/tables/DataTable/components/DataTableCell.sty.js +5 -5
- package/esm/tables/DataTable/components/DataTableCell.sty.js.map +1 -1
- package/esm/tables/DataTable/components/DataTableDefaultCell.css +21 -21
- package/esm/tables/DataTable/components/DataTableDefaultCell.sty.js +1 -1
- package/esm/tables/DataTable/components/DataTableDefaultCell.sty.js.map +1 -1
- package/esm/tables/DataTable/components/DataTableEmptyState.css +2 -2
- package/esm/tables/DataTable/components/DataTableEmptyState.sty.js +1 -1
- package/esm/tables/DataTable/components/DataTableEmptyState.sty.js.map +1 -1
- package/esm/tables/DataTable/components/DataTableHeader.css +2 -2
- package/esm/tables/DataTable/components/DataTableHeader.sty.js +2 -2
- package/esm/tables/DataTable/components/DataTableHeader.sty.js.map +1 -1
- package/esm/tables/DataTable/components/DataTableHeaderCell.css +64 -64
- package/esm/tables/DataTable/components/DataTableHeaderCell.js +4 -3
- package/esm/tables/DataTable/components/DataTableHeaderCell.js.map +2 -2
- package/esm/tables/DataTable/components/DataTableHeaderCell.sty.js +23 -23
- package/esm/tables/DataTable/components/DataTableHeaderCell.sty.js.map +1 -1
- package/esm/tables/DataTable/components/DataTableRow.css +13 -13
- package/esm/tables/DataTable/components/DataTableRow.sty.js +1 -1
- package/esm/tables/DataTable/components/DataTableRow.sty.js.map +1 -1
- package/esm/tables/DataTable/components/DataTableScrollShadow.css +10 -10
- package/esm/tables/DataTable/components/DataTableScrollShadow.sty.js +2 -2
- package/esm/tables/DataTable/components/DataTableScrollShadow.sty.js.map +1 -1
- package/esm/tables/DataTable/components/DataTableVirtualizationContainer.css +20 -20
- package/esm/tables/DataTable/components/DataTableVirtualizationContainer.sty.js +1 -1
- package/esm/tables/DataTable/components/DataTableVirtualizationContainer.sty.js.map +1 -1
- package/esm/tables/DataTable/components/TableActions/DataTableSelectionChip.css +5 -5
- package/esm/tables/DataTable/components/TableActions/DataTableSelectionChip.sty.js +2 -2
- package/esm/tables/DataTable/components/TableActions/DataTableSelectionChip.sty.js.map +1 -1
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/ColumnOrderSettings/ColumnOrderSettingsDragAndDrop.css +7 -7
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/ColumnOrderSettings/ColumnOrderSettingsDragAndDrop.sty.js +3 -3
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/ColumnOrderSettings/ColumnOrderSettingsDragAndDrop.sty.js.map +1 -1
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnOrderSettings.js.map +2 -2
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnSettingsModal.js +21 -7
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnSettingsModal.js.map +2 -2
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnsList.css +5 -5
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnsList.sty.js +3 -3
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnsList.sty.js.map +1 -1
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnsListItem.css +7 -7
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnsListItem.sty.js +3 -3
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnsListItem.sty.js.map +1 -1
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/DataTableVisibilityFilterControls.css +5 -5
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/DataTableVisibilityFilterControls.sty.js +3 -3
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/DataTableVisibilityFilterControls.sty.js.map +1 -1
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/column-settings-utils.js +8 -0
- package/esm/tables/DataTable/components/Toolbar/ColumnSettings/column-settings-utils.js.map +2 -2
- package/esm/tables/DataTable/components/Toolbar/Download/DataTableDownloadData.css +3 -3
- package/esm/tables/DataTable/components/Toolbar/Download/DataTableDownloadData.sty.js +2 -2
- package/esm/tables/DataTable/components/Toolbar/Download/DataTableDownloadData.sty.js.map +1 -1
- package/esm/tables/DataTable/features/ColumnOrder/ColumnOrder.css +8 -8
- package/esm/tables/DataTable/features/ColumnOrder/ColumnOrder.sty.js +4 -4
- package/esm/tables/DataTable/features/ColumnOrder/ColumnOrder.sty.js.map +1 -1
- package/esm/tables/DataTable/features/ColumnSizing/ColumnSizing.css +3 -3
- package/esm/tables/DataTable/features/ColumnSizing/ColumnSizing.sty.js +1 -1
- package/esm/tables/DataTable/features/ColumnSizing/ColumnSizing.sty.js.map +1 -1
- package/esm/tables/DataTable/features/ColumnTypes/ColumnTypes.css +1 -1
- package/esm/tables/DataTable/features/ColumnTypes/ColumnTypes.sty.js +1 -1
- package/esm/tables/DataTable/features/ColumnTypes/ColumnTypes.sty.js.map +1 -1
- package/esm/tables/DataTable/features/GanttChart/DataTableGanttAnnotationsIndicators.css +1 -1
- package/esm/tables/DataTable/features/GanttChart/DataTableGanttAnnotationsIndicators.sty.js +1 -1
- package/esm/tables/DataTable/features/GanttChart/DataTableGanttAnnotationsIndicators.sty.js.map +1 -1
- package/esm/tables/DataTable/features/GanttChart/DataTableGanttChartCell.css +3 -3
- package/esm/tables/DataTable/features/GanttChart/DataTableGanttChartCell.sty.js +2 -2
- package/esm/tables/DataTable/features/GanttChart/DataTableGanttChartCell.sty.js.map +1 -1
- package/esm/tables/DataTable/features/GanttChart/DataTableGanttChartGrid.css +1 -1
- package/esm/tables/DataTable/features/GanttChart/DataTableGanttChartGrid.sty.js +1 -1
- package/esm/tables/DataTable/features/GanttChart/DataTableGanttChartGrid.sty.js.map +1 -1
- package/esm/tables/DataTable/features/GanttChart/DataTableGanttChartHeader.css +4 -4
- package/esm/tables/DataTable/features/GanttChart/DataTableGanttChartHeader.sty.js +1 -1
- package/esm/tables/DataTable/features/GanttChart/DataTableGanttChartHeader.sty.js.map +1 -1
- package/esm/tables/DataTable/features/LoadingState/LoadingState.css +2 -2
- package/esm/tables/DataTable/features/LoadingState/LoadingState.sty.js +2 -2
- package/esm/tables/DataTable/features/LoadingState/LoadingState.sty.js.map +1 -1
- package/esm/tables/DataTable/features/MeterBarChart/MeterBarChart.js +8 -2
- package/esm/tables/DataTable/features/MeterBarChart/MeterBarChart.js.map +2 -2
- package/esm/tables/DataTable/features/RowDetails/RowDetails.css +13 -13
- package/esm/tables/DataTable/features/RowDetails/RowDetails.sty.js +3 -3
- package/esm/tables/DataTable/features/RowDetails/RowDetails.sty.js.map +1 -1
- package/esm/tables/DataTable/features/RowInteractivity/RowInteractivity.css +14 -14
- package/esm/tables/DataTable/features/RowInteractivity/RowInteractivity.sty.js +1 -1
- package/esm/tables/DataTable/features/RowInteractivity/RowInteractivity.sty.js.map +1 -1
- package/esm/tables/DataTable/features/RowOrder/RowOrder.css +8 -8
- package/esm/tables/DataTable/features/RowOrder/RowOrder.sty.js +3 -3
- package/esm/tables/DataTable/features/RowOrder/RowOrder.sty.js.map +1 -1
- package/esm/tables/DataTable/features/Sorting/Sorting.css +34 -34
- package/esm/tables/DataTable/features/Sorting/Sorting.sty.js +3 -3
- package/esm/tables/DataTable/features/Sorting/Sorting.sty.js.map +1 -1
- package/esm/tables/DataTable/features/SubRows/SubRows.css +19 -19
- package/esm/tables/DataTable/features/SubRows/SubRows.sty.js +5 -5
- package/esm/tables/DataTable/features/SubRows/SubRows.sty.js.map +1 -1
- package/esm/tables/DataTable/features/Thresholds/Thresholds.css +2 -2
- package/esm/tables/DataTable/features/Thresholds/Thresholds.sty.js +3 -3
- package/esm/tables/DataTable/features/Thresholds/Thresholds.sty.js.map +1 -1
- package/esm/tables/DataTable/features/UserActions/RowActions.css +4 -4
- package/esm/tables/DataTable/features/UserActions/RowActions.sty.js +1 -1
- package/esm/tables/DataTable/features/UserActions/RowActions.sty.js.map +1 -1
- package/esm/tables/DataTable/features/UserActions/UserActions.css +18 -18
- package/esm/tables/DataTable/features/UserActions/UserActions.sty.js +2 -2
- package/esm/tables/DataTable/features/UserActions/UserActions.sty.js.map +1 -1
- package/esm/tables/DataTable/hooks/useHeaderCellInteractions.js +38 -15
- package/esm/tables/DataTable/hooks/useHeaderCellInteractions.js.map +2 -2
- package/esm/tables/SimpleTable/SimpleTable.css +27 -27
- package/esm/tables/SimpleTable/SimpleTable.sty.js +1 -1
- package/esm/tables/SimpleTable/SimpleTable.sty.js.map +1 -1
- package/esm/tables/index.js.map +2 -2
- package/esm/typography/block-quote/Blockquote.css +2 -2
- package/esm/typography/block-quote/Blockquote.sty.js +1 -1
- package/esm/typography/block-quote/Blockquote.sty.js.map +1 -1
- package/esm/typography/code/Code.css +1 -1
- package/esm/typography/code/Code.sty.js +1 -1
- package/esm/typography/code/Code.sty.js.map +1 -1
- package/esm/typography/emphasis/Emphasis.css +1 -1
- package/esm/typography/emphasis/Emphasis.sty.js +1 -1
- package/esm/typography/emphasis/Emphasis.sty.js.map +1 -1
- package/esm/typography/external-link/ExternalLink.css +6 -6
- package/esm/typography/external-link/ExternalLink.sty.js +1 -1
- package/esm/typography/external-link/ExternalLink.sty.js.map +1 -1
- package/esm/typography/heading/Heading.css +7 -7
- package/esm/typography/heading/Heading.sty.js +1 -1
- package/esm/typography/heading/Heading.sty.js.map +1 -1
- package/esm/typography/highlight/Highlight.css +2 -2
- package/esm/typography/highlight/Highlight.sty.js +1 -1
- package/esm/typography/highlight/Highlight.sty.js.map +1 -1
- package/esm/typography/link/Link.css +4 -4
- package/esm/typography/link/Link.sty.js +1 -1
- package/esm/typography/link/Link.sty.js.map +1 -1
- package/esm/typography/list/List.css +4 -4
- package/esm/typography/list/List.sty.js +2 -2
- package/esm/typography/list/List.sty.js.map +1 -1
- package/esm/typography/paragraph/Paragraph.css +3 -3
- package/esm/typography/paragraph/Paragraph.sty.js +1 -1
- package/esm/typography/paragraph/Paragraph.sty.js.map +1 -1
- package/esm/typography/strikethrough/Strikethrough.css +1 -1
- package/esm/typography/strikethrough/Strikethrough.sty.js +1 -1
- package/esm/typography/strikethrough/Strikethrough.sty.js.map +1 -1
- package/esm/typography/strong/Strong.css +1 -1
- package/esm/typography/strong/Strong.sty.js +1 -1
- package/esm/typography/strong/Strong.sty.js.map +1 -1
- package/esm/typography/text/Text.css +3 -3
- package/esm/typography/text/Text.sty.js +1 -1
- package/esm/typography/text/Text.sty.js.map +1 -1
- package/esm/typography/text-ellipsis/TextEllipsis.css +6 -6
- package/esm/typography/text-ellipsis/TextEllipsis.js +2 -6
- package/esm/typography/text-ellipsis/TextEllipsis.js.map +2 -2
- package/esm/typography/text-ellipsis/TextEllipsis.sty.js +2 -2
- package/esm/typography/text-ellipsis/TextEllipsis.sty.js.map +1 -1
- package/filters/filter-field/FilterField.css +117 -117
- package/filters/filter-field/FilterField.js +89 -68
- package/filters/filter-field/FilterField.sty.js +28 -28
- package/filters/filter-field/components/FilterFieldSuffixButtons.css +3 -3
- package/filters/filter-field/components/FilterFieldSuffixButtons.js +1 -0
- package/filters/filter-field/components/FilterFieldSuffixButtons.sty.js +3 -3
- package/filters/filter-field/components/FilterStatement.css +13 -13
- package/filters/filter-field/components/FilterStatement.sty.js +6 -6
- package/filters/filter-field/hooks/useSuggestions.js +7 -1
- package/filters/filter-field/suggestions/RecentPinnedSuggestionItem.css +9 -9
- package/filters/filter-field/suggestions/RecentPinnedSuggestionItem.sty.js +2 -2
- package/filters/filter-field/suggestions/Suggestion.css +24 -24
- package/filters/filter-field/suggestions/Suggestion.js +9 -1
- package/filters/filter-field/suggestions/Suggestion.sty.d.ts +7 -0
- package/filters/filter-field/suggestions/Suggestion.sty.js +17 -15
- package/filters/filter-field/suggestions/SuggestionDetails.css +2 -2
- package/filters/filter-field/suggestions/SuggestionDetails.sty.js +2 -2
- package/filters/filter-field/suggestions/SuggestionGroup.css +6 -6
- package/filters/filter-field/suggestions/SuggestionGroup.sty.js +3 -3
- package/filters/filter-field/suggestions/SuggestionGroupLabel.css +1 -1
- package/filters/filter-field/suggestions/SuggestionGroupLabel.sty.js +1 -1
- package/filters/filter-field/suggestions/SuggestionTips.css +7 -7
- package/filters/filter-field/suggestions/SuggestionTips.sty.js +5 -5
- package/filters/filter-field/suggestions/Suggestions.js +1 -1
- package/filters/filter-field/suggestions/SuggestionsOverlay.css +7 -7
- package/filters/filter-field/suggestions/SuggestionsOverlay.sty.js +5 -5
- package/filters/filter-field/utils/get-suggestion-transaction.js +1 -1
- package/filters/filter-field/utils/suggestions-utils/get-suggestions.d.ts +8 -1
- package/filters/filter-field/utils/suggestions-utils/get-suggestions.js +11 -18
- package/filters/filter-field/utils/suggestions-utils/operator-suggestions.js +4 -2
- package/filters/filter-field/utils/suggestions-utils/suggestion-matching.d.ts +43 -0
- package/filters/filter-field/utils/suggestions-utils/suggestion-matching.js +64 -0
- package/filters/segment-selector/SegmentSelector.css +4 -4
- package/filters/segment-selector/SegmentSelector.js +4 -4
- package/filters/segment-selector/SegmentSelector.sty.js +4 -4
- package/filters/segment-selector/parts/EmptySegments.css +1 -1
- package/filters/segment-selector/parts/EmptySegments.js +7 -3
- package/filters/segment-selector/parts/EmptySegments.sty.js +1 -1
- package/filters/segment-selector/parts/Overlay.css +8 -8
- package/filters/segment-selector/parts/Overlay.js +8 -4
- package/filters/segment-selector/parts/Overlay.sty.js +8 -8
- package/filters/segment-selector/parts/SegmentFooter.js +7 -3
- package/filters/segment-selector/parts/ShowMorePanel/ShowMorePanel.css +4 -4
- package/filters/segment-selector/parts/ShowMorePanel/ShowMorePanel.sty.js +4 -4
- package/filters/segment-selector/parts/noAccessRights/CopyPermissionsButton.js +3 -5
- package/filters/segment-selector/parts/noAccessRights/NoAccessWithoutSelection.js +2 -1
- package/filters/segment-selector/parts/segmentManagementHref.d.ts +2 -0
- package/filters/segment-selector/parts/segmentManagementHref.js +26 -0
- package/filters/segment-selector/parts/segmentsPresets/SegmentsPresets.css +32 -32
- package/filters/segment-selector/parts/segmentsPresets/SegmentsPresets.sty.js +10 -10
- package/filters/segment-selector/parts/selectionBar/SegmentSelect.css +22 -22
- package/filters/segment-selector/parts/selectionBar/SegmentSelect.js +8 -4
- package/filters/segment-selector/parts/selectionBar/SegmentSelect.sty.js +7 -7
- package/filters/segment-selector/parts/selectionBar/SegmentSelectorTrigger.css +1 -1
- package/filters/segment-selector/parts/selectionBar/SegmentSelectorTrigger.sty.js +1 -1
- package/filters/segment-selector/parts/selectionBar/ValueSelect.js +39 -14
- package/filters/timeframe-selector/TimeframeSelector.css +5 -1
- package/filters/timeframe-selector/TimeframeSelector.js +6 -13
- package/filters/timeframe-selector/TimeframeSelector.sty.d.ts +1 -0
- package/filters/timeframe-selector/TimeframeSelector.sty.js +4 -2
- package/filters/timeframe-selector/TimeframeSelectorRoot.js +15 -3
- package/filters/timeframe-selector/components/TimeframeSelectorTooltip.d.ts +2 -2
- package/filters/timeframe-selector/components/TimeframeSelectorTooltip.js +1 -1
- package/filters/timeframe-selector/components/custom-timeframe-selector/CustomTimeframeSelector.css +4 -4
- package/filters/timeframe-selector/components/custom-timeframe-selector/CustomTimeframeSelector.js +4 -0
- package/filters/timeframe-selector/components/custom-timeframe-selector/CustomTimeframeSelector.sty.js +3 -3
- package/filters/timeframe-selector/components/overlay/TimeframeSelectorOverlay.css +4 -4
- package/filters/timeframe-selector/components/overlay/TimeframeSelectorOverlay.sty.js +4 -4
- package/filters/timeframe-selector/components/overlay/TimeframeSelectorOverlayFooter.js +5 -3
- package/filters/timeframe-selector/components/presets/Presets.css +27 -27
- package/filters/timeframe-selector/components/presets/Presets.sty.js +11 -11
- package/filters/timeframe-selector/components/stepper/StepperButton.js +1 -1
- package/filters/timeframe-selector/components/trigger/Trigger.css +11 -11
- package/filters/timeframe-selector/components/trigger/Trigger.js +1 -0
- package/filters/timeframe-selector/components/trigger/Trigger.sty.js +4 -4
- package/filters/timeframe-selector/utils/getTimeframeDisplayValueProps.d.ts +2 -2
- package/forms/_base-input/BaseInput.css +99 -99
- package/forms/_base-input/BaseInput.d.ts +1 -0
- package/forms/_base-input/BaseInput.js +30 -19
- package/forms/_base-input/BaseInput.sty.d.ts +1 -1
- package/forms/_base-input/BaseInput.sty.js +12 -12
- package/forms/_base-input/BaseInputContent.css +7 -7
- package/forms/_base-input/BaseInputContent.d.ts +5 -0
- package/forms/_base-input/BaseInputContent.js +2 -0
- package/forms/_base-input/BaseInputContent.sty.js +1 -1
- package/forms/_base-input/ClearButton.d.ts +3 -0
- package/forms/_base-input/ClearButton.js +53 -0
- package/forms/_base-input/base-input.types.d.ts +1 -0
- package/forms/calendar/Calendar.css +47 -47
- package/forms/calendar/Calendar.sty.js +11 -11
- package/forms/calendar/components/CalendarItem.css +7 -7
- package/forms/calendar/components/CalendarItem.sty.js +4 -4
- package/forms/calendar/components/CalendarOutlineIcon.css +8 -8
- package/forms/calendar/components/CalendarOutlineIcon.sty.js +5 -5
- package/forms/calendar/variables.sty.js +2 -2
- package/forms/checkbox/Checkbox.css +20 -20
- package/forms/checkbox/Checkbox.sty.js +3 -3
- package/forms/date-time-picker/DateTimePicker.css +75 -75
- package/forms/date-time-picker/DateTimePicker.sty.js +6 -6
- package/forms/date-time-picker/DateTimePickerRoot.js +4 -0
- package/forms/date-time-picker/hooks/useDateTimePicker.d.ts +1 -1
- package/forms/date-time-picker/hooks/useDateTimePicker.js +4 -5
- package/forms/date-time-picker/utils/focusDateTimeInput.d.ts +9 -0
- package/forms/date-time-picker/utils/focusDateTimeInput.js +23 -0
- package/forms/date-time-range-picker/DateRangeSelector.css +1 -1
- package/forms/date-time-range-picker/DateRangeSelector.sty.js +1 -1
- package/forms/date-time-range-picker/DateTimeInput.css +11 -11
- package/forms/date-time-range-picker/DateTimeInput.js +4 -0
- package/forms/date-time-range-picker/DateTimeInput.sty.js +3 -3
- package/forms/date-time-range-picker/DateTimeRangePicker.css +27 -27
- package/forms/date-time-range-picker/DateTimeRangePicker.js +6 -10
- package/forms/date-time-range-picker/DateTimeRangePicker.sty.js +4 -4
- package/forms/date-time-range-picker/DateTimeRangePickerRoot.js +22 -8
- package/forms/date-time-range-picker/helpers.d.ts +22 -4
- package/forms/date-time-range-picker/helpers.js +52 -13
- package/forms/date-time-range-picker/hooks/useDateTimeInput.d.ts +2 -0
- package/forms/date-time-range-picker/hooks/useDateTimeInput.js +91 -58
- package/forms/date-time-range-picker/hooks/useDateTimeRangePicker.js +56 -19
- package/forms/date-time-range-picker/selection-copy-helpers.js +53 -24
- package/forms/date-time-range-picker/selection-helpers.d.ts +19 -4
- package/forms/date-time-range-picker/selection-helpers.js +146 -48
- package/forms/date-time-range-picker/types.d.ts +17 -0
- package/forms/date-time-range-picker/useSelectionInteractionHandlers.js +4 -44
- package/forms/forms-core/components/field-set/FieldSet.css +2 -2
- package/forms/forms-core/components/field-set/FieldSet.sty.js +2 -2
- package/forms/forms-core/components/form-field/FormField.sty.js +1 -1
- package/forms/forms-core/components/form-field-messages/FormFieldMessageItem.css +5 -5
- package/forms/forms-core/components/form-field-messages/FormFieldMessageItem.sty.js +2 -2
- package/forms/forms-core/components/form-field-messages/FormFieldMessages.sty.js +1 -1
- package/forms/forms-core/components/label/Label.css +5 -5
- package/forms/forms-core/components/label/Label.sty.js +2 -2
- package/forms/forms-core/time/helpers.js +1 -1
- package/forms/hooks/useAutofillEvent.css +8 -8
- package/forms/hooks/useAutofillEvent.sty.js +4 -4
- package/forms/index.d.ts +1 -0
- package/forms/number-input/NumberInputBase.js +2 -2
- package/forms/number-input-v2/NumberInput.js +3 -3
- package/forms/radio/styles.css +18 -18
- package/forms/radio/styles.sty.js +8 -8
- package/forms/search-input/SearchInput.css +4 -1
- package/forms/search-input/SearchInput.d.ts +1 -0
- package/forms/search-input/SearchInput.js +35 -3
- package/forms/search-input/SearchInput.sty.d.ts +7 -1
- package/forms/search-input/SearchInput.sty.js +2 -1
- package/forms/search-input/Stepper.css +21 -0
- package/forms/search-input/Stepper.d.ts +13 -0
- package/forms/search-input/Stepper.js +120 -0
- package/forms/search-input/Stepper.sty.d.ts +3 -0
- package/forms/search-input/Stepper.sty.js +34 -0
- package/forms/select/Select.js +6 -2
- package/forms/select/components/Control.js +1 -0
- package/forms/select/components/MenuList.js +1 -0
- package/forms/select/components/Option.js +2 -0
- package/forms/select/hooks/use-select-options.js +0 -3
- package/forms/select/styles/Select.css +47 -47
- package/forms/select/styles/Select.sty.js +24 -24
- package/forms/spin-buttons/SpinButton.css +8 -8
- package/forms/spin-buttons/SpinButton.sty.js +2 -2
- package/forms/spin-buttons/spin-button-group/hooks/useNavigateSpinButton.js +1 -1
- package/forms/switch/Switch.css +36 -36
- package/forms/switch/Switch.sty.js +5 -5
- package/forms/text-area/TextArea.css +59 -59
- package/forms/text-area/TextArea.sty.js +3 -3
- package/forms/toggle-button-group/styles.css +58 -58
- package/forms/toggle-button-group/styles.sty.js +15 -15
- package/lang/en.json +507 -485
- package/lang/ja.json +542 -560
- package/lang/uncompiled/en.json +24 -4
- package/lang/uncompiled/ja.json +68 -71
- package/layouts/app-header/AppHeader.css +1 -1
- package/layouts/app-header/AppHeader.sty.js +1 -1
- package/layouts/app-header/Navigation.css +9 -9
- package/layouts/app-header/Navigation.sty.js +5 -5
- package/layouts/app-header/action-group/ActionButton.css +17 -17
- package/layouts/app-header/action-group/ActionButton.sty.js +3 -3
- package/layouts/app-header/action-group/ActionGroup.css +1 -1
- package/layouts/app-header/action-group/ActionGroup.sty.js +1 -1
- package/layouts/app-header/action-group/NavItem.css +4 -4
- package/layouts/app-header/action-group/NavItem.sty.js +3 -3
- package/layouts/app-header/app-icon/AppIcon.css +4 -4
- package/layouts/app-header/app-icon/AppIcon.sty.js +1 -1
- package/layouts/container/Container.css +5 -5
- package/layouts/container/Container.sty.js +1 -1
- package/layouts/divider/Divider.css +6 -6
- package/layouts/divider/Divider.sty.js +1 -1
- package/layouts/input-group/InputGroup.css +23 -23
- package/layouts/input-group/InputGroup.sty.js +1 -1
- package/layouts/page/DetailView.css +3 -3
- package/layouts/page/DetailView.sty.js +2 -2
- package/layouts/page/Header.css +2 -2
- package/layouts/page/Header.sty.js +1 -1
- package/layouts/page/Main.css +6 -6
- package/layouts/page/Main.sty.js +4 -4
- package/layouts/page/Page.css +2 -2
- package/layouts/page/Page.sty.js +1 -1
- package/layouts/page/Sidebar.css +22 -22
- package/layouts/page/Sidebar.sty.js +8 -8
- package/layouts/page/panel.css +18 -18
- package/layouts/page/panel.sty.js +10 -10
- package/layouts/page-layout/PageLayout.css +10 -10
- package/layouts/page-layout/PageLayout.sty.js +6 -6
- package/layouts/page-layout/details-layout/DetailsControlBar.css +3 -3
- package/layouts/page-layout/details-layout/DetailsControlBar.sty.js +3 -3
- package/layouts/page-layout/details-layout/DetailsLayout.css +6 -6
- package/layouts/page-layout/details-layout/DetailsLayout.sty.js +5 -5
- package/layouts/page-layout/details-layout/Overlay.css +21 -21
- package/layouts/page-layout/details-layout/Overlay.sty.js +4 -4
- package/layouts/page-layout/sidebar-layout/SidebarLayout.css +38 -38
- package/layouts/page-layout/sidebar-layout/SidebarLayout.sty.js +15 -15
- package/layouts/split-layout/SplitLayout.css +17 -17
- package/layouts/split-layout/SplitLayout.sty.js +7 -7
- package/layouts/surface/Surface.css +39 -39
- package/layouts/surface/Surface.sty.js +2 -2
- package/layouts/surface/variables.sty.js +1 -1
- package/layouts/title-bar/TitleBar.css +5 -5
- package/layouts/title-bar/TitleBar.sty.js +4 -4
- package/navigation/breadcrumbs/Breadcrumbs.css +9 -9
- package/navigation/breadcrumbs/Breadcrumbs.sty.js +5 -5
- package/navigation/menu/Content.js +0 -2
- package/navigation/menu/Menu.css +15 -15
- package/navigation/menu/Menu.js +2 -13
- package/navigation/menu/Menu.sty.js +8 -8
- package/navigation/menu/Sub.js +2 -13
- package/navigation/menu/hooks/useMenuAutoClose.d.ts +16 -0
- package/navigation/menu/hooks/useMenuAutoClose.js +48 -0
- package/navigation/tabs/RenderTab.css +14 -14
- package/navigation/tabs/RenderTab.sty.js +3 -3
- package/navigation/tabs/TabPanel.css +3 -3
- package/navigation/tabs/TabPanel.sty.js +2 -2
- package/navigation/tabs/Tabs.css +9 -9
- package/navigation/tabs/Tabs.sty.js +5 -5
- package/notifications/notification-settings/NotificationSettings.css +1 -1
- package/notifications/notification-settings/NotificationSettings.sty.js +1 -1
- package/notifications/toast/Toast.css +5 -5
- package/notifications/toast/Toast.sty.js +4 -4
- package/notifications/toast/ToastContainer.css +17 -17
- package/notifications/toast/ToastContainer.sty.js +1 -1
- package/overlays/drawer/Drawer.css +9 -9
- package/overlays/drawer/Drawer.sty.js +5 -5
- package/overlays/hooks/useOverlay.d.ts +18 -0
- package/overlays/hooks/useOverlay.js +21 -0
- package/overlays/modal/Modal.css +7 -7
- package/overlays/modal/Modal.sty.js +4 -4
- package/overlays/overlay/Overlay.css +1 -1
- package/overlays/overlay/Overlay.sty.js +1 -1
- package/overlays/sheet/Sheet.css +6 -6
- package/overlays/sheet/Sheet.sty.js +5 -5
- package/overlays/tooltip/tooltip.css +18 -18
- package/overlays/tooltip/tooltip.sty.js +3 -3
- package/package.json +1 -1
- package/styles/colorUtils.css +60 -60
- package/styles/colorUtils.sty.js +2 -2
- package/styles/container.css +47 -47
- package/styles/container.sty.js +2 -2
- package/styles/ellipsis.css +1 -1
- package/styles/ellipsis.sty.js +1 -1
- package/styles/field.css +290 -290
- package/styles/field.sty.js +2 -2
- package/styles/screen-reader-only.css +1 -1
- package/styles/screen-reader-only.sty.js +1 -1
- package/styles/sprinkles.css +262 -262
- package/styles/sprinkles.sty.js +1 -1
- package/styles/textStyle.css +8 -8
- package/styles/textStyle.sty.js +1 -1
- package/tables/DataTable/DataTable.css +2 -2
- package/tables/DataTable/DataTable.sty.js +7 -7
- package/tables/DataTable/components/Alignment.css +6 -6
- package/tables/DataTable/components/Alignment.sty.js +2 -2
- package/tables/DataTable/components/ColumnPinning/DataTablePinningShadowCells.css +6 -6
- package/tables/DataTable/components/ColumnPinning/DataTablePinningShadowCells.sty.js +3 -3
- package/tables/DataTable/components/DataTableBody.css +2 -2
- package/tables/DataTable/components/DataTableBody.sty.js +2 -2
- package/tables/DataTable/components/DataTableCell.css +99 -99
- package/tables/DataTable/components/DataTableCell.sty.js +5 -5
- package/tables/DataTable/components/DataTableDefaultCell.css +21 -21
- package/tables/DataTable/components/DataTableDefaultCell.sty.js +1 -1
- package/tables/DataTable/components/DataTableEmptyState.css +2 -2
- package/tables/DataTable/components/DataTableEmptyState.sty.js +1 -1
- package/tables/DataTable/components/DataTableHeader.css +2 -2
- package/tables/DataTable/components/DataTableHeader.sty.js +2 -2
- package/tables/DataTable/components/DataTableHeaderCell.css +64 -64
- package/tables/DataTable/components/DataTableHeaderCell.js +4 -3
- package/tables/DataTable/components/DataTableHeaderCell.sty.js +23 -23
- package/tables/DataTable/components/DataTableRow.css +13 -13
- package/tables/DataTable/components/DataTableRow.sty.js +1 -1
- package/tables/DataTable/components/DataTableScrollShadow.css +10 -10
- package/tables/DataTable/components/DataTableScrollShadow.sty.js +2 -2
- package/tables/DataTable/components/DataTableVirtualizationContainer.css +20 -20
- package/tables/DataTable/components/DataTableVirtualizationContainer.sty.js +1 -1
- package/tables/DataTable/components/TableActions/DataTableSelectionChip.css +5 -5
- package/tables/DataTable/components/TableActions/DataTableSelectionChip.sty.js +2 -2
- package/tables/DataTable/components/Toolbar/ColumnSettings/ColumnOrderSettings/ColumnOrderSettingsDragAndDrop.css +7 -7
- package/tables/DataTable/components/Toolbar/ColumnSettings/ColumnOrderSettings/ColumnOrderSettingsDragAndDrop.sty.js +3 -3
- package/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnOrderSettings.d.ts +1 -11
- package/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnSettingsModal.js +18 -6
- package/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnsList.css +5 -5
- package/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnsList.sty.js +3 -3
- package/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnsListItem.css +7 -7
- package/tables/DataTable/components/Toolbar/ColumnSettings/DataTableColumnsListItem.sty.js +3 -3
- package/tables/DataTable/components/Toolbar/ColumnSettings/DataTableVisibilityFilterControls.css +5 -5
- package/tables/DataTable/components/Toolbar/ColumnSettings/DataTableVisibilityFilterControls.sty.js +3 -3
- package/tables/DataTable/components/Toolbar/ColumnSettings/column-settings-types.d.ts +24 -13
- package/tables/DataTable/components/Toolbar/ColumnSettings/column-settings-utils.d.ts +21 -0
- package/tables/DataTable/components/Toolbar/ColumnSettings/column-settings-utils.js +8 -0
- package/tables/DataTable/components/Toolbar/Download/DataTableDownloadData.css +3 -3
- package/tables/DataTable/components/Toolbar/Download/DataTableDownloadData.sty.js +2 -2
- package/tables/DataTable/features/ColumnOrder/ColumnOrder.css +8 -8
- package/tables/DataTable/features/ColumnOrder/ColumnOrder.sty.js +4 -4
- package/tables/DataTable/features/ColumnSizing/ColumnSizing.css +3 -3
- package/tables/DataTable/features/ColumnSizing/ColumnSizing.sty.js +1 -1
- package/tables/DataTable/features/ColumnTypes/ColumnTypes.css +1 -1
- package/tables/DataTable/features/ColumnTypes/ColumnTypes.sty.js +1 -1
- package/tables/DataTable/features/GanttChart/DataTableGanttAnnotationsIndicators.css +1 -1
- package/tables/DataTable/features/GanttChart/DataTableGanttAnnotationsIndicators.sty.js +1 -1
- package/tables/DataTable/features/GanttChart/DataTableGanttChartCell.css +3 -3
- package/tables/DataTable/features/GanttChart/DataTableGanttChartCell.sty.js +2 -2
- package/tables/DataTable/features/GanttChart/DataTableGanttChartGrid.css +1 -1
- package/tables/DataTable/features/GanttChart/DataTableGanttChartGrid.sty.js +1 -1
- package/tables/DataTable/features/GanttChart/DataTableGanttChartHeader.css +4 -4
- package/tables/DataTable/features/GanttChart/DataTableGanttChartHeader.sty.js +1 -1
- package/tables/DataTable/features/LoadingState/LoadingState.css +2 -2
- package/tables/DataTable/features/LoadingState/LoadingState.sty.js +2 -2
- package/tables/DataTable/features/MeterBarChart/MeterBarChart.js +8 -2
- package/tables/DataTable/features/RowDetails/RowDetails.css +13 -13
- package/tables/DataTable/features/RowDetails/RowDetails.sty.js +3 -3
- package/tables/DataTable/features/RowInteractivity/RowInteractivity.css +14 -14
- package/tables/DataTable/features/RowInteractivity/RowInteractivity.sty.js +1 -1
- package/tables/DataTable/features/RowOrder/RowOrder.css +8 -8
- package/tables/DataTable/features/RowOrder/RowOrder.sty.js +3 -3
- package/tables/DataTable/features/Sorting/Sorting.css +34 -34
- package/tables/DataTable/features/Sorting/Sorting.sty.js +3 -3
- package/tables/DataTable/features/SubRows/SubRows.css +19 -19
- package/tables/DataTable/features/SubRows/SubRows.sty.js +5 -5
- package/tables/DataTable/features/Thresholds/Thresholds.css +2 -2
- package/tables/DataTable/features/Thresholds/Thresholds.sty.js +3 -3
- package/tables/DataTable/features/UserActions/RowActions.css +4 -4
- package/tables/DataTable/features/UserActions/RowActions.sty.js +1 -1
- package/tables/DataTable/features/UserActions/UserActions.css +18 -18
- package/tables/DataTable/features/UserActions/UserActions.sty.js +2 -2
- package/tables/DataTable/hooks/useHeaderCellInteractions.d.ts +3 -2
- package/tables/DataTable/hooks/useHeaderCellInteractions.js +33 -14
- package/tables/DataTable/public.api.d.ts +20 -5
- package/tables/SimpleTable/SimpleTable.css +27 -27
- package/tables/SimpleTable/SimpleTable.sty.js +1 -1
- package/tables/index.d.ts +2 -3
- package/typography/block-quote/Blockquote.css +2 -2
- package/typography/block-quote/Blockquote.sty.js +1 -1
- package/typography/code/Code.css +1 -1
- package/typography/code/Code.sty.js +1 -1
- package/typography/emphasis/Emphasis.css +1 -1
- package/typography/emphasis/Emphasis.sty.js +1 -1
- package/typography/external-link/ExternalLink.css +6 -6
- package/typography/external-link/ExternalLink.sty.js +1 -1
- package/typography/heading/Heading.css +7 -7
- package/typography/heading/Heading.sty.js +1 -1
- package/typography/highlight/Highlight.css +2 -2
- package/typography/highlight/Highlight.sty.js +1 -1
- package/typography/link/Link.css +4 -4
- package/typography/link/Link.sty.js +1 -1
- package/typography/list/List.css +4 -4
- package/typography/list/List.sty.js +2 -2
- package/typography/paragraph/Paragraph.css +3 -3
- package/typography/paragraph/Paragraph.sty.js +1 -1
- package/typography/strikethrough/Strikethrough.css +1 -1
- package/typography/strikethrough/Strikethrough.sty.js +1 -1
- package/typography/strong/Strong.css +1 -1
- package/typography/strong/Strong.sty.js +1 -1
- package/typography/text/Text.css +3 -3
- package/typography/text/Text.sty.js +1 -1
- package/typography/text-ellipsis/TextEllipsis.css +6 -6
- package/typography/text-ellipsis/TextEllipsis.js +2 -6
- package/typography/text-ellipsis/TextEllipsis.sty.js +2 -2
- package/charts/core/components/annotations/components/tooltip/AnnotationsDefaultTooltip.d.ts +0 -7
- package/charts/core/components/annotations/components/tooltip/AnnotationsDefaultTooltip.js +0 -61
- package/charts/core/components/annotations/components/tooltip/AnnotationsTooltip.css +0 -4
- package/charts/core/components/annotations/components/tooltip/AnnotationsTooltip.d.ts +0 -13
- package/charts/core/components/annotations/components/tooltip/AnnotationsTooltip.js +0 -113
- package/charts/core/components/annotations/components/tooltip/AnnotationsTooltip.sty.d.ts +0 -1
- package/charts/core/components/annotations/components/tooltip/AnnotationsTooltipHeaders.d.ts +0 -7
- package/charts/core/components/annotations/components/tooltip/AnnotationsTooltipHeaders.js +0 -43
- package/charts/core/components/annotations/components/tooltip/AnnotationsTooltipItem.d.ts +0 -9
- package/charts/core/components/annotations/components/tooltip/AnnotationsTooltipItem.js +0 -95
- package/charts/core/components/annotations/components/tooltip/hooks/useRegisterTooltipHandlerCallbacks.d.ts +0 -10
- package/charts/core/components/annotations/components/tooltip/hooks/useRegisterTooltipHandlerCallbacks.js +0 -49
- package/charts/core/components/overlay-tooltip/components/TooltipFooter.d.ts +0 -7
- package/charts/gauge/contexts/GaugeChartTooltipNameContext.d.ts +0 -8
- package/charts/gauge/hooks/useGaugeChartOverlayEvents.d.ts +0 -12
- package/charts/gauge/hooks/useGaugeChartOverlayEvents.js +0 -66
- package/charts/meter-bar/single-meter-bar/hooks/useMeterBarChartTooltipHandlers.d.ts +0 -7
- package/charts/meter-bar/single-meter-bar/hooks/useMeterBarChartTooltipHandlers.js +0 -61
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsDefaultTooltip.js +0 -46
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsDefaultTooltip.js.map +0 -7
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsTooltip.css +0 -4
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsTooltip.js +0 -100
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsTooltip.js.map +0 -7
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsTooltip.sty.js +0 -6
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsTooltip.sty.js.map +0 -7
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsTooltipHeaders.js +0 -25
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsTooltipHeaders.js.map +0 -7
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsTooltipItem.js +0 -67
- package/esm/charts/core/components/annotations/components/tooltip/AnnotationsTooltipItem.js.map +0 -7
- package/esm/charts/core/components/annotations/components/tooltip/hooks/useRegisterTooltipHandlerCallbacks.js +0 -31
- package/esm/charts/core/components/annotations/components/tooltip/hooks/useRegisterTooltipHandlerCallbacks.js.map +0 -7
- package/esm/charts/core/components/overlay-tooltip/components/TooltipFooter.js.map +0 -7
- package/esm/charts/gauge/contexts/GaugeChartTooltipNameContext.js +0 -10
- package/esm/charts/gauge/contexts/GaugeChartTooltipNameContext.js.map +0 -7
- package/esm/charts/gauge/hooks/useGaugeChartOverlayEvents.js +0 -48
- package/esm/charts/gauge/hooks/useGaugeChartOverlayEvents.js.map +0 -7
- package/esm/charts/meter-bar/single-meter-bar/hooks/useMeterBarChartTooltipHandlers.js +0 -43
- package/esm/charts/meter-bar/single-meter-bar/hooks/useMeterBarChartTooltipHandlers.js.map +0 -7
- package/esm/charts/xy-chart/components/displays/BarDisplay.js.map +0 -7
- package/esm/filters/segment-selector/parts/sendSegmentManagementAddOnIntent.js +0 -27
- package/esm/filters/segment-selector/parts/sendSegmentManagementAddOnIntent.js.map +0 -7
- package/filters/segment-selector/parts/sendSegmentManagementAddOnIntent.d.ts +0 -2
- package/filters/segment-selector/parts/sendSegmentManagementAddOnIntent.js +0 -43
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/forms/date-time-range-picker/selection-helpers.ts"],
|
|
4
|
-
"sourcesContent": ["import type { RefObject } from 'react';\n\nimport * as styles from './DateTimeInput.sty.js';\nimport type { DateTimeInputRef } from './types.js';\nimport { getStratoLogger } from '../../core/sdk/sdk-logger.js';\nimport type { SpinButtonHandler } from '../spin-buttons/spin-button-group/types.js';\n\nfunction warnSelectionFailed(message: string, error: unknown): void {\n getStratoLogger('DateTimeRangePicker').warn(message, error);\n}\n\n/** @internal */\nexport function checkIfValueTypeAlignment(textNode: Node): boolean {\n // Skip hidden text nodes in DateTimeInput by checking parent value types.\n const closestDateTimeInput = textNode.parentElement?.closest(\n `.${styles.dateTimeInput}`,\n );\n const currentValueType = closestDateTimeInput?.getAttribute('data-valuetype');\n const closestValueTypeElement =\n textNode.parentElement?.closest('[data-valuetype]');\n\n // No more specific parent \u2014 likely a placeholder, separator, or other node.\n if (closestDateTimeInput === closestValueTypeElement) {\n return true;\n }\n\n const nodeValueType = closestValueTypeElement?.getAttribute('data-valuetype');\n\n return nodeValueType === currentValueType;\n}\n\n/** Helper to walk backwards through text nodes. */\nfunction previousTextNode(root: HTMLElement, node: Node): Node | null {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null);\n\n let current = walker.lastChild();\n let found = false;\n while (current) {\n if (found) {\n // Skip hidden text nodes by checking parent value types.\n if (checkIfValueTypeAlignment(current)) {\n return current;\n }\n }\n\n if (current === node) {\n found = true;\n }\n\n current = walker.previousNode();\n }\n\n return null;\n}\n\n/** Helper to walk forwards through text nodes. */\nfunction nextTextNode(root: HTMLElement, node: Node): Node | null {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null);\n\n let current = walker.nextNode();\n let found = false;\n\n while (current) {\n if (found) {\n // Skip hidden text nodes by checking parent value types.\n if (checkIfValueTypeAlignment(current)) {\n return current;\n }\n }\n if (current === node) {\n found = true;\n }\n current = walker.nextNode();\n }\n\n return null;\n}\n\n/** Helper that finds the next character position to adjust the global selection. */\nfunction findNextCharacterPosition(\n root: HTMLElement,\n node: Node,\n offset: number,\n): { node: Node; offset: number } | null {\n if (\n node.nodeType === Node.TEXT_NODE &&\n node.nodeValue &&\n offset < node.nodeValue.length &&\n checkIfValueTypeAlignment(node)\n ) {\n return { node, offset: offset + 1 };\n }\n\n // Element node: offset is a child index \u2014 walk into that child to find the first text node.\n if (node.nodeType !== Node.TEXT_NODE) {\n const childAtOffset = node.childNodes[offset];\n if (childAtOffset) {\n const walker = document.createTreeWalker(\n childAtOffset,\n NodeFilter.SHOW_TEXT,\n null,\n );\n const firstText =\n walker.firstChild() ??\n (childAtOffset.nodeType === Node.TEXT_NODE ? childAtOffset : null);\n if (\n firstText &&\n (checkIfValueTypeAlignment(firstText) ||\n getClosestContentEditable(firstText) !== null)\n ) {\n return { node: firstText, offset: 1 };\n }\n }\n\n // At element's end boundary: find the last text node inside and step to the next.\n if (offset > 0) {\n const previousChild = node.childNodes[offset - 1];\n if (previousChild) {\n const walker = document.createTreeWalker(\n previousChild,\n NodeFilter.SHOW_TEXT,\n null,\n );\n const lastText =\n walker.lastChild() ??\n (previousChild.nodeType === Node.TEXT_NODE ? previousChild : null);\n if (lastText) {\n let nextFromBoundary: Node | null = nextTextNode(root, lastText);\n while (\n nextFromBoundary !== null &&\n getClosestContentEditable(nextFromBoundary) === null\n ) {\n nextFromBoundary = nextTextNode(root, nextFromBoundary);\n }\n if (nextFromBoundary) {\n return { node: nextFromBoundary, offset: 1 };\n }\n }\n }\n }\n }\n\n // Keep separator text nodes as valid step targets for Shift+Arrow.\n let next: Node | null = nextTextNode(root, node);\n\n // Skip separator nodes between two expression textboxes for one-step crossing.\n if (\n isExpressionNode(node) &&\n next &&\n getClosestContentEditable(next) === null\n ) {\n const nextEditableNode: Node | null = nextTextNode(root, next);\n if (isExpressionNode(nextEditableNode)) {\n next = nextEditableNode;\n }\n }\n\n if (!next) {\n return null;\n }\n\n return { node: next, offset: 1 };\n}\n\n/** Helper that finds the previous character position to adjust the global selection. */\nfunction findPreviousCharacterPosition(\n root: HTMLElement,\n node: Node,\n offset: number,\n): { node: Node; offset: number } | null {\n if (\n node.nodeType === Node.TEXT_NODE &&\n offset > 0 &&\n checkIfValueTypeAlignment(node)\n ) {\n return { node, offset: offset - 1 };\n }\n\n // Element node: offset is a child index \u2014 walk into offset-1 child to find the last text node (mirrors forward logic).\n if (node.nodeType !== Node.TEXT_NODE && offset > 0) {\n const childAtOffset = node.childNodes[offset - 1];\n if (childAtOffset) {\n const walker = document.createTreeWalker(\n childAtOffset,\n NodeFilter.SHOW_TEXT,\n null,\n );\n const lastText =\n walker.lastChild() ??\n (childAtOffset.nodeType === Node.TEXT_NODE ? childAtOffset : null);\n if (\n lastText?.nodeValue &&\n (checkIfValueTypeAlignment(lastText) ||\n getClosestContentEditable(lastText) !== null)\n ) {\n return { node: lastText, offset: lastText.nodeValue.length - 1 };\n }\n }\n }\n\n // Keep separator text nodes as valid backward step targets for Shift+Arrow.\n let prev: Node | null = previousTextNode(root, node);\n if (\n isExpressionNode(node) &&\n prev &&\n getClosestContentEditable(prev) === null\n ) {\n const previousEditableNode: Node | null = previousTextNode(root, prev);\n if (isExpressionNode(previousEditableNode)) {\n prev = previousEditableNode;\n }\n }\n if (!prev || prev?.nodeValue === null) {\n return null;\n }\n\n return { node: prev, offset: prev.nodeValue.length - 1 };\n}\n\n/** Helper to find the first textNode to apply selection */\nfunction findFirstCharacterPosition(\n root: HTMLElement,\n): { node: Node; offset: number } | null {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null);\n let current = walker.firstChild();\n while (current !== null) {\n // Skip hidden text nodes (e.g. relative date expression values when in absolute mode).\n if (checkIfValueTypeAlignment(current)) {\n return { node: current, offset: 0 };\n }\n current = walker.nextNode();\n }\n return null;\n}\n\n/** Helper to find the last textNode to apply selection */\nfunction findLastCharacterPosition(\n root: HTMLElement,\n): { node: Node; offset: number } | null {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null);\n let current = walker.lastChild();\n while (current !== null) {\n // Skip hidden text nodes (e.g. relative date expression values when in absolute mode).\n if (checkIfValueTypeAlignment(current)) {\n return { node: current, offset: current.nodeValue?.length ?? 0 };\n }\n current = walker.previousNode();\n }\n return null;\n}\n\nfunction compareSelectionPoints(\n firstNode: Node,\n firstOffset: number,\n secondNode: Node,\n secondOffset: number,\n): number {\n if (firstNode === secondNode) {\n return firstOffset - secondOffset;\n }\n\n const firstRange = document.createRange();\n firstRange.setStart(firstNode, firstOffset);\n firstRange.collapse(true);\n\n const secondRange = document.createRange();\n secondRange.setStart(secondNode, secondOffset);\n secondRange.collapse(true);\n\n return firstRange.compareBoundaryPoints(Range.START_TO_START, secondRange);\n}\n\nfunction selectionOverlapsSpinButton(\n selectionStartNode: Node,\n selectionStartOffset: number,\n selectionEndNode: Node,\n selectionEndOffset: number,\n spinButton: HTMLElement,\n): boolean {\n const spinButtonStart = findFirstCharacterPosition(spinButton);\n const spinButtonEnd = findLastCharacterPosition(spinButton);\n\n if (!spinButtonStart || !spinButtonEnd) {\n return false;\n }\n\n return (\n compareSelectionPoints(\n selectionStartNode,\n selectionStartOffset,\n spinButtonEnd.node,\n spinButtonEnd.offset,\n ) < 0 &&\n compareSelectionPoints(\n selectionEndNode,\n selectionEndOffset,\n spinButtonStart.node,\n spinButtonStart.offset,\n ) > 0\n );\n}\n\n/**\n * Restores [contenteditable] and tabindex to all elements inside `root` that\n * had those attributes temporarily stripped (marked with [data-wascontenteditable]\n * / [data-wastabindex]).\n */\nfunction restoreContentEditableAttributes(root: HTMLElement): void {\n for (const editable of root.querySelectorAll<HTMLElement>(\n '[data-wascontenteditable]',\n )) {\n const previousValue = editable.getAttribute('data-wascontenteditable');\n if (previousValue !== null) {\n editable.setAttribute('contenteditable', previousValue);\n }\n editable.removeAttribute('data-wascontenteditable');\n\n const wasTabIndex = editable.getAttribute('data-wastabindex');\n if (wasTabIndex !== null) {\n editable.setAttribute('tabindex', wasTabIndex);\n editable.removeAttribute('data-wastabindex');\n }\n }\n // Clear drag-selected marks when CE is restored \u2014 :focus or native selection takes over.\n for (const el of root.querySelectorAll<HTMLElement>('[data-drag-selected]')) {\n el.removeAttribute('data-drag-selected');\n }\n}\n\n/**\n * Marks elements intersected by `range` with [data-drag-selected] for element-level accent styling.\n * Textboxes are excluded during live drags (native ::selection shows char-level highlight) and\n * included only for snapped post-mouseup ranges when `includeTextboxes` is true.\n * Element-level styling is used because Safari doesn't resolve CSS vars inside ::selection\n * on non-contenteditable elements.\n */\nfunction markDragSelectedElements(\n rootElement: HTMLElement,\n range: Range,\n { includeTextboxes = false }: { includeTextboxes?: boolean } = {},\n): void {\n for (const el of rootElement.querySelectorAll<HTMLElement>(\n '[data-drag-selected]',\n )) {\n el.removeAttribute('data-drag-selected');\n }\n\n // (a) Direct children of SpinButtonGroups: spinbuttons + separators\n for (const group of rootElement.querySelectorAll(\n '[data-valuetype=\"iso8601\"]',\n )) {\n for (const child of group.children) {\n if (range.intersectsNode(child)) {\n child.setAttribute('data-drag-selected', '');\n }\n }\n }\n\n // (b) Expression textbox inputs \u2014 only for snapped post-mouseup ranges\n if (includeTextboxes) {\n for (const textbox of rootElement.querySelectorAll('[role=\"textbox\"]')) {\n if (range.intersectsNode(textbox)) {\n textbox.setAttribute('data-drag-selected', '');\n }\n }\n }\n}\n\n// Tracks pending CE-restore AbortControllers per picker root.\n// CE is stripped during multi-element drags (Safari clips cross-element addRange to the active CE host)\n// and restored on the next real interaction. WeakMap avoids retaining roots after unmount.\nconst pendingRestoreSignals = new WeakMap<HTMLElement, AbortController>();\n\n/**\n * Endpoints captured by `deferContentEditableRestore` before re-attaching CE.\n * Safari clips the live selection to the active CE host after CE re-attachment,\n * so a bubble-phase Backspace/Delete handler can no longer see the full\n * multi-element range. Consumers read these to feed `planBulkClear`.\n * @internal\n */\nexport type SelectionEndpoints = {\n anchorNode: Node;\n anchorOffset: number;\n focusNode: Node;\n focusOffset: number;\n};\nconst lastPreRestoreEndpoints = new WeakMap<HTMLElement, SelectionEndpoints>();\n\n/**\n * Returns and clears the multi-element selection endpoints captured for `root`\n * by `deferContentEditableRestore` just before the most recent CE re-attach.\n * Returns `undefined` when no stash exists (no preceding multi-element\n * selection, or already consumed).\n * @internal\n */\nexport function consumePreRestoreEndpoints(\n root: HTMLElement,\n): SelectionEndpoints | undefined {\n const stash = lastPreRestoreEndpoints.get(root);\n lastPreRestoreEndpoints.delete(root);\n return stash;\n}\n\n/**\n * Restores [contenteditable] on the next real user interaction (mousedown or non-modifier keydown).\n * Listens on `document` (not rootElement) so clicks outside the picker still trigger the restore.\n * Modifier-only keys and Cmd/Ctrl+C are skipped to allow selection extension and copy.\n */\nfunction deferContentEditableRestore(root: HTMLElement): void {\n // Cancel any pending restore for this root before registering a new one.\n pendingRestoreSignals.get(root)?.abort();\n\n const restoreSignal = new AbortController();\n pendingRestoreSignals.set(root, restoreSignal);\n\n function handler(e: Event): void {\n if (e instanceof KeyboardEvent) {\n if (['Meta', 'Control', 'Alt', 'Shift'].includes(e.key)) {\n return;\n }\n if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === 'c') {\n return;\n }\n // Shift+Arrow/Home/End extends the current selection \u2014 keep CE stripped\n // so each subsequent step can cross spinbutton boundaries in Safari.\n if (\n e.shiftKey &&\n [\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n ].includes(e.key)\n ) {\n return;\n }\n // Plain ArrowLeft/Right with a live multi-element selection: collapse to\n // the directional boundary before CE is restored. Firefox's default would\n // shrink the directional selection one step at a time (mirror of Shift+\n // Arrow extension), forcing the user to press Arrow N times to \"use up\" a\n // previous Shift+Arrow selection of N steps before the cursor moves.\n // Chrome/Safari already collapse natively; this normalizes Firefox.\n // Done here (capture phase) because Firefox discards cross-element\n // selections as soon as [contenteditable] is added back.\n if (\n !e.shiftKey &&\n !e.metaKey &&\n !e.ctrlKey &&\n !e.altKey &&\n (e.key === 'ArrowLeft' || e.key === 'ArrowRight')\n ) {\n const collapsed = collapseMultiElementSelection(\n root,\n e.key === 'ArrowLeft' ? 'left' : 'right',\n );\n if (collapsed) {\n e.preventDefault();\n // Stop the event so the boundary spinbutton's own keydown handler\n // doesn't immediately step further (handleArrowLeft would see\n // selection.start === 0 after onFocus \u2192 selectAll and move past it).\n e.stopPropagation();\n // collapseMultiElementSelection already restored CE and aborted the\n // signal \u2014 nothing left to do.\n return;\n }\n }\n }\n // Firefox discards cross-element selections the moment [contenteditable]\n // is re-added. Snapshot the current selection endpoints before restoring\n // CE, then recreate the range via setBaseAndExtent so that subsequent\n // bubble-phase handlers (Backspace/Delete bulkClear, Cmd+X, type-to-replace)\n // still see the multi-element selection. Same trick used at mouseup time\n // in removeContentEditable.\n const selection = globalThis.getSelection();\n const anchorNode = selection?.anchorNode ?? null;\n const anchorOffset = selection?.anchorOffset ?? 0;\n const focusNode = selection?.focusNode ?? null;\n const focusOffset = selection?.focusOffset ?? 0;\n const hasMultiElementSelection =\n selection !== null &&\n anchorNode !== null &&\n focusNode !== null &&\n anchorNode !== focusNode &&\n selection.toString().length > 0;\n\n // Stash the pre-restore endpoints for bubble-phase consumers (Safari only\n // truly needs them, but stashing unconditionally keeps the code path\n // browser-agnostic). Bubble handlers fall back to the live selection when\n // no stash is present.\n if (hasMultiElementSelection && anchorNode && focusNode) {\n lastPreRestoreEndpoints.set(root, {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n });\n }\n\n restoreContentEditableAttributes(root);\n pendingRestoreSignals.delete(root);\n restoreSignal.abort();\n\n if (hasMultiElementSelection && anchorNode && focusNode) {\n try {\n selection?.setBaseAndExtent(\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n );\n } catch (error) {\n warnSelectionFailed(\n 'setBaseAndExtent failed when restoring selection after CE re-attach',\n error,\n );\n }\n }\n }\n document.addEventListener('mousedown', handler, {\n signal: restoreSignal.signal,\n capture: true,\n });\n document.addEventListener('keydown', handler, {\n signal: restoreSignal.signal,\n capture: true,\n });\n}\n\n/**\n * Strips [contenteditable] to allow cross-element selection, then restores it on the next `eventType`.\n * `initialAnchorSpinButton` is the spinbutton resolved from bounding-box geometry before CE is stripped \u2014\n * used when Safari misreports anchorNode as a container element on far-right clicks.\n * @internal\n */\nexport function removeContentEditable(\n rootElement: HTMLElement,\n removeEventTarget: Document | HTMLElement,\n eventType: 'mouseup' | 'keyup',\n customRemovalFn?: (event: Event, hasMultiElementSelection: boolean) => void,\n initialAnchorSpinButton?: HTMLElement | null,\n): void {\n // Guard against focus-side effects (e.g. spinbutton onFocus selectAll)\n // while cross-element selection is restored.\n rootElement.setAttribute('data-restoring-selection', '');\n\n const contentEditables =\n rootElement.querySelectorAll<HTMLElement>('[contenteditable]');\n for (const editable of contentEditables) {\n const previousValue = editable.getAttribute('contenteditable') ?? undefined;\n editable.removeAttribute('contenteditable');\n editable.dataset.wascontenteditable = previousValue;\n\n // Also strip tabindex to prevent auto-focus on mousedown during drag.\n if (editable.hasAttribute('tabindex')) {\n editable.dataset.wastabindex = editable.getAttribute('tabindex') ?? '';\n editable.removeAttribute('tabindex');\n }\n }\n\n const signal = new AbortController();\n\n // Safari reports the container element (not a text node) as anchorNode when the click lands in empty\n // space. Correct the drag anchor on mousemove using the pre-resolved spinbutton's last char position.\n // Subsequent moves no-op once anchorNode becomes a text node; Chrome/Firefox already report text nodes.\n if (initialAnchorSpinButton) {\n const anchorPos = findLastCharacterPosition(initialAnchorSpinButton);\n if (anchorPos) {\n rootElement.addEventListener(\n 'mousemove',\n () => {\n const sel = globalThis.getSelection();\n if (!sel || !sel.anchorNode) {\n return;\n }\n // Already corrected.\n if (sel.anchorNode.nodeType === Node.TEXT_NODE) {\n return;\n }\n const focusNode = sel.focusNode;\n const focusOffset = sel.focusOffset ?? 0;\n if (!focusNode) {\n return;\n }\n const anchorBeforeFocus =\n compareSelectionPoints(\n anchorPos.node,\n anchorPos.offset,\n focusNode,\n focusOffset,\n ) <= 0;\n try {\n sel.removeAllRanges();\n\n if (anchorBeforeFocus) {\n sel.setBaseAndExtent(\n anchorPos.node,\n anchorPos.offset,\n focusNode,\n focusOffset,\n );\n } else {\n sel.setBaseAndExtent(\n focusNode,\n focusOffset,\n anchorPos.node,\n anchorPos.offset,\n );\n }\n } catch (error) {\n warnSelectionFailed(\n 'selection anchor correction during drag failed',\n error,\n );\n }\n },\n { signal: signal.signal, capture: true },\n );\n }\n }\n\n // Update [data-drag-selected] on mousemove for element-level accent styling (Safari ::selection workaround).\n rootElement.addEventListener(\n 'mousemove',\n () => {\n const sel = globalThis.getSelection();\n if (!sel || sel.rangeCount === 0) {\n return;\n }\n const range = sel.getRangeAt(0);\n markDragSelectedElements(rootElement, range);\n },\n { signal: signal.signal, capture: true },\n );\n\n removeEventTarget.addEventListener(\n eventType,\n (event: Event) => {\n // Snapshot before restoring CE \u2014 Firefox discards cross-element selections when CE is re-added.\n const selectionBeforeRestore = globalThis.getSelection();\n const snapshotAnchorNode = selectionBeforeRestore?.anchorNode ?? null;\n const snapshotAnchorOffset = selectionBeforeRestore?.anchorOffset ?? 0;\n const snapshotFocusNode = selectionBeforeRestore?.focusNode ?? null;\n const snapshotFocusOffset = selectionBeforeRestore?.focusOffset ?? 0;\n\n const hasMultiElementSelection =\n selectionBeforeRestore !== null &&\n selectionBeforeRestore.toString().length > 0 &&\n (snapshotAnchorNode !== snapshotFocusNode ||\n (snapshotAnchorNode !== null &&\n snapshotAnchorNode === snapshotFocusNode &&\n snapshotAnchorOffset !== snapshotFocusOffset &&\n snapshotAnchorNode.nodeType === Node.ELEMENT_NODE));\n\n if (hasMultiElementSelection && snapshotAnchorNode && snapshotFocusNode) {\n // Multi-element path: keep CE stripped so Safari's setBaseAndExtent isn't clipped to the active\n // editing host. CE is restored lazily on the next real user interaction.\n\n // Safari may report a container element as anchorNode on empty-space clicks; use initialAnchorSpinButton instead.\n const anchorIsElementNode =\n snapshotAnchorNode.nodeType !== Node.TEXT_NODE;\n\n // Resolve anchor spinbutton: element-node \u2192 use precomputed; text in SB \u2192 resolve; text outside \u2192 null.\n const anchorNodeWasInContent = anchorIsElementNode\n ? initialAnchorSpinButton !== null\n : isEndpointInsideSpinButtonContent(\n snapshotAnchorNode,\n snapshotAnchorOffset,\n );\n\n let anchorSpinButton: HTMLElement | null;\n if (anchorIsElementNode) {\n anchorSpinButton = initialAnchorSpinButton ?? null;\n } else if (anchorNodeWasInContent) {\n anchorSpinButton = resolveSpinButton(\n snapshotAnchorNode,\n rootElement,\n snapshotAnchorOffset,\n );\n } else {\n anchorSpinButton = null;\n }\n\n // When anchor is an element node, derive a text-node position for direction detection.\n let anchorNodeForComparison: Node = snapshotAnchorNode;\n let anchorOffsetForComparison: number = snapshotAnchorOffset;\n if (anchorIsElementNode && anchorSpinButton) {\n const lastPos = findLastCharacterPosition(anchorSpinButton);\n if (lastPos) {\n anchorNodeForComparison = lastPos.node;\n anchorOffsetForComparison = lastPos.offset;\n }\n }\n\n const focusNodeWasInContent = isEndpointInsideSpinButtonContent(\n snapshotFocusNode,\n snapshotFocusOffset,\n );\n const focusSpinButton =\n focusNodeWasInContent || snapshotFocusNode.nodeType !== Node.TEXT_NODE\n ? resolveSpinButton(\n snapshotFocusNode,\n rootElement,\n snapshotFocusOffset,\n )\n : null;\n\n const anchorBeforeFocus =\n compareSelectionPoints(\n anchorNodeForComparison,\n anchorOffsetForComparison,\n snapshotFocusNode,\n snapshotFocusOffset,\n ) <= 0;\n\n let anchorPos: { node: Node; offset: number } | null;\n if (anchorSpinButton?.getAttribute('role') === 'spinbutton') {\n anchorPos = anchorBeforeFocus\n ? findFirstCharacterPosition(anchorSpinButton)\n : findLastCharacterPosition(anchorSpinButton);\n } else {\n anchorPos = {\n node: anchorNodeForComparison,\n offset: anchorOffsetForComparison,\n };\n }\n let focusPos: { node: Node; offset: number } | null;\n if (focusSpinButton?.getAttribute('role') === 'spinbutton') {\n focusPos = anchorBeforeFocus\n ? findLastCharacterPosition(focusSpinButton)\n : findFirstCharacterPosition(focusSpinButton);\n } else {\n focusPos = { node: snapshotFocusNode, offset: snapshotFocusOffset };\n }\n\n if (anchorPos && focusPos) {\n try {\n const range = document.createRange();\n if (anchorBeforeFocus) {\n range.setStart(anchorPos.node, anchorPos.offset);\n range.setEnd(focusPos.node, focusPos.offset);\n } else {\n range.setStart(focusPos.node, focusPos.offset);\n range.setEnd(anchorPos.node, anchorPos.offset);\n }\n const sel = globalThis.getSelection();\n sel?.setBaseAndExtent(\n anchorPos.node,\n anchorPos.offset,\n focusPos.node,\n focusPos.offset,\n );\n // Mark intersected elements for accent styling. Exclude textboxes \u2014 they need char-level selection.\n markDragSelectedElements(rootElement, range);\n } catch (error) {\n warnSelectionFailed(\n 'setBaseAndExtent failed when restoring drag selection',\n error,\n );\n }\n }\n\n customRemovalFn?.(event, hasMultiElementSelection);\n rootElement.removeAttribute('data-restoring-selection');\n\n // Restore CE on the next user interaction (mousedown / non-modifier keydown).\n deferContentEditableRestore(rootElement);\n } else {\n // Single-element path: restore CE immediately \u2014 both endpoints share the same editing host.\n restoreContentEditableAttributes(rootElement);\n\n if (snapshotAnchorNode && snapshotFocusNode) {\n try {\n globalThis\n .getSelection()\n ?.setBaseAndExtent(\n snapshotAnchorNode,\n snapshotAnchorOffset,\n snapshotFocusNode,\n snapshotFocusOffset,\n );\n } catch (error) {\n warnSelectionFailed(\n 'setBaseAndExtent failed when restoring single-element selection',\n error,\n );\n }\n }\n\n customRemovalFn?.(event, hasMultiElementSelection);\n rootElement.removeAttribute('data-restoring-selection');\n }\n\n signal.abort();\n },\n { signal: signal.signal },\n );\n}\n\n/**\n * For Shift+Arrow on absolute spinbuttons, snaps the focus endpoint to a spinbutton boundary\n * rather than stepping character by character (intra-spinbutton steps are visually silent).\n * Growing forward/backward includes the adjacent spinbutton fully; shrinking excludes the current one.\n * Returns null when focus is outside a spinbutton, falling through to char-by-char logic.\n */\nfunction findSpinButtonSnappedPosition(\n root: HTMLElement,\n anchorNode: Node,\n anchorOffset: number,\n focusNode: Node,\n focusOffset: number,\n direction: 'forward' | 'backward',\n): { node: Node; offset: number } | null {\n let spinButton: HTMLElement | null = null;\n\n if (focusNode.nodeType === Node.TEXT_NODE) {\n spinButton =\n (focusNode as Text).parentElement?.closest<HTMLElement>(\n '[role=\"spinbutton\"]',\n ) ?? null;\n } else if (\n focusNode instanceof HTMLElement &&\n focusNode.getAttribute('role') === 'spinbutton'\n ) {\n // selectNodeContents(el) sets focusNode to the element itself.\n spinButton = focusNode;\n }\n\n if (!spinButton) {\n return null;\n }\n\n const allSBs = Array.from(\n root.querySelectorAll<HTMLElement>('[role=\"spinbutton\"]'),\n );\n const idx = allSBs.indexOf(spinButton);\n\n // Determine whether the selection is growing or shrinking.\n const focusIsBeforeAnchor =\n compareSelectionPoints(focusNode, focusOffset, anchorNode, anchorOffset) <\n 0;\n const isGrowing =\n direction === 'forward' ? !focusIsBeforeAnchor : focusIsBeforeAnchor;\n\n if (direction === 'forward') {\n const nextSB = allSBs[idx + 1] ?? null;\n if (!nextSB) {\n return null;\n }\n // Growing: snap to far end of next SB. Shrinking: snap to near end (exclude current).\n return isGrowing\n ? findLastCharacterPosition(nextSB)\n : findFirstCharacterPosition(nextSB);\n }\n\n const prevSB = allSBs[idx - 1] ?? null;\n if (!prevSB) {\n return null;\n }\n return isGrowing\n ? findFirstCharacterPosition(prevSB)\n : findLastCharacterPosition(prevSB);\n}\n\nexport function extendSelection(\n key: 'ArrowLeft' | 'ArrowRight' | 'Home' | 'End',\n): void {\n const selection = globalThis.getSelection();\n if (\n selection === null ||\n selection.anchorNode === null ||\n selection.focusNode === null ||\n selection.rangeCount < 1\n ) {\n return;\n }\n\n const anchorNode = selection.anchorNode;\n const anchorOffset = selection.anchorOffset;\n const focusNode = selection.focusNode;\n const focusOffset = selection.focusOffset;\n\n let nextPos: { node: Node; offset: number } | null = null;\n\n const root =\n focusNode.nodeType === Node.TEXT_NODE\n ? (focusNode as Text).parentElement?.closest<HTMLDivElement>(\n '.strato-inputgroup',\n )\n : focusNode instanceof HTMLElement\n ? focusNode.closest<HTMLDivElement>('.strato-inputgroup')\n : null;\n if (root === null || root === undefined) {\n return;\n }\n\n if (key === 'ArrowLeft') {\n nextPos =\n findSpinButtonSnappedPosition(\n root,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n 'backward',\n ) ?? findPreviousCharacterPosition(root, focusNode, focusOffset);\n } else if (key === 'ArrowRight') {\n nextPos =\n findSpinButtonSnappedPosition(\n root,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n 'forward',\n ) ?? findNextCharacterPosition(root, focusNode, focusOffset);\n } else if (key === 'Home') {\n nextPos = findFirstCharacterPosition(root);\n } else if (key === 'End') {\n nextPos = findLastCharacterPosition(root);\n }\n\n // Skip the \"\u2192\" separator (outside any CE) so Shift+Arrow crosses it in one keypress.\n let crossedSeparator = false;\n while (nextPos && getClosestContentEditable(nextPos.node) === null) {\n crossedSeparator = true;\n const skipped =\n key === 'ArrowLeft' || key === 'Home'\n ? findPreviousCharacterPosition(root, nextPos.node, nextPos.offset)\n : findNextCharacterPosition(root, nextPos.node, nextPos.offset);\n if (!skipped) {\n break;\n }\n nextPos = skipped;\n }\n\n // After crossing a separator, snap to the boundary of the landing text node rather\n // than stepping one character into it (which is what findNext/PreviousCharacterPosition does).\n if (crossedSeparator && nextPos?.node.nodeType === Node.TEXT_NODE) {\n if (key === 'ArrowRight') {\n nextPos = { node: nextPos.node, offset: 0 };\n } else if (key === 'ArrowLeft') {\n nextPos = {\n node: nextPos.node,\n offset: nextPos.node.nodeValue?.length ?? 0,\n };\n }\n }\n\n if (!nextPos) {\n return;\n }\n\n // SPIN_BUTTON_SELECTOR covers both live [contenteditable] and temporarily stripped [data-wascontenteditable].\n const spinButtonFromNode = (node: Node): HTMLElement | null => {\n const el =\n node.nodeType === Node.TEXT_NODE\n ? (node as Text).parentElement\n : node instanceof HTMLElement\n ? node\n : null;\n const sb = el?.closest<HTMLElement>(SPIN_BUTTON_SELECTOR) ?? null;\n return sb?.getAttribute('role') === 'spinbutton' ? sb : null;\n };\n\n const anchorSB = spinButtonFromNode(anchorNode);\n\n // Strip CE when the new focus crosses into a different editing host \u2014 Safari clips setBaseAndExtent to the active one.\n const anchorCE = getClosestContentEditable(anchorNode);\n const nextCE = getClosestContentEditable(nextPos.node);\n const crossesBoundary = anchorCE !== null && anchorCE !== nextCE;\n\n if (crossesBoundary) {\n // selectNodeContents sets anchorNode to the element itself; resolve to a text-node position instead.\n let resolvedAnchorNode = anchorNode;\n let resolvedAnchorOffset = anchorOffset;\n if (anchorNode.nodeType !== Node.TEXT_NODE && anchorSB) {\n // Use the spinbutton boundary that covers the full anchor SB in the extension direction.\n const anchorBeforeFocus =\n compareSelectionPoints(\n anchorNode,\n anchorOffset,\n nextPos.node,\n nextPos.offset,\n ) <= 0;\n const resolved = anchorBeforeFocus\n ? findFirstCharacterPosition(anchorSB)\n : findLastCharacterPosition(anchorSB);\n if (resolved) {\n resolvedAnchorNode = resolved.node;\n resolvedAnchorOffset = resolved.offset;\n }\n }\n\n // Strip CE so Safari's addRange is not clipped to the editing host.\n root.setAttribute('data-restoring-selection', '');\n for (const editable of root.querySelectorAll<HTMLElement>(\n '[contenteditable]',\n )) {\n const prev = editable.getAttribute('contenteditable') ?? '';\n editable.removeAttribute('contenteditable');\n editable.dataset.wascontenteditable = prev;\n }\n\n try {\n // setBaseAndExtent preserves anchor/focus direction (addRange would flip them, reversing all subsequent steps).\n selection.setBaseAndExtent(\n resolvedAnchorNode,\n resolvedAnchorOffset,\n nextPos.node,\n nextPos.offset,\n );\n // Build a document-ordered Range for markDragSelectedElements.\n const anchorBeforeFocus =\n compareSelectionPoints(\n resolvedAnchorNode,\n resolvedAnchorOffset,\n nextPos.node,\n nextPos.offset,\n ) <= 0;\n const range = document.createRange();\n if (anchorBeforeFocus) {\n range.setStart(resolvedAnchorNode, resolvedAnchorOffset);\n range.setEnd(nextPos.node, nextPos.offset);\n } else {\n range.setStart(nextPos.node, nextPos.offset);\n range.setEnd(resolvedAnchorNode, resolvedAnchorOffset);\n }\n markDragSelectedElements(root, range);\n } catch (error) {\n warnSelectionFailed(\n 'setBaseAndExtent failed when extending cross-boundary selection',\n error,\n );\n }\n\n root.removeAttribute('data-restoring-selection');\n deferContentEditableRestore(root);\n } else {\n // Same editing host: setBaseAndExtent is safe. Guard prevents Chrome's implicit focus from triggering selectAll().\n root.setAttribute('data-restoring-selection', '');\n try {\n selection.setBaseAndExtent(\n anchorNode,\n anchorOffset,\n nextPos.node,\n nextPos.offset,\n );\n } catch (error) {\n warnSelectionFailed(\n 'setBaseAndExtent failed when extending selection',\n error,\n );\n }\n root.removeAttribute('data-restoring-selection');\n // Refresh [data-drag-selected] to clear stale marks when the selection shrinks.\n // Build the range from known positions rather than re-querying getSelection() to work with mocked Selection in tests.\n const updatedRange = new Range();\n const cmp = anchorNode.compareDocumentPosition(nextPos.node);\n if (\n cmp & Node.DOCUMENT_POSITION_FOLLOWING ||\n (cmp === 0 && anchorOffset <= nextPos.offset)\n ) {\n updatedRange.setStart(anchorNode, anchorOffset);\n updatedRange.setEnd(nextPos.node, nextPos.offset);\n } else {\n updatedRange.setStart(nextPos.node, nextPos.offset);\n updatedRange.setEnd(anchorNode, anchorOffset);\n }\n markDragSelectedElements(root, updatedRange);\n }\n // [data-shift-selection] suppresses :focus background while a Shift+Arrow selection is active; cleared in onFocus.\n root.setAttribute('data-shift-selection', '');\n}\n\n/**\n * Helper function that allows to expand the selection to the entire range.\n * @internal\n */\nexport function extendSelectionToAll(): void {\n const selection = globalThis.getSelection();\n if (\n selection === null ||\n selection.focusNode === null ||\n selection.rangeCount < 1\n ) {\n return;\n }\n\n const root =\n selection.focusNode.parentElement?.closest<HTMLDivElement>(\n '.strato-inputgroup',\n );\n if (root === null || root === undefined) {\n return;\n }\n\n const firstPosition = findFirstCharacterPosition(root);\n const lastPosition = findLastCharacterPosition(root);\n\n if (!firstPosition || !lastPosition) {\n return;\n }\n\n // Strip CE so Safari cannot clip addRange to the focused editing host (same pattern as removeContentEditable).\n root.setAttribute('data-restoring-selection', '');\n for (const editable of root.querySelectorAll<HTMLElement>(\n '[contenteditable]',\n )) {\n const prev = editable.getAttribute('contenteditable') ?? '';\n editable.removeAttribute('contenteditable');\n editable.dataset.wascontenteditable = prev;\n }\n\n try {\n const range = document.createRange();\n range.setStart(firstPosition.node, firstPosition.offset);\n range.setEnd(lastPosition.node, lastPosition.offset);\n selection.setBaseAndExtent(\n firstPosition.node,\n firstPosition.offset,\n lastPosition.node,\n lastPosition.offset,\n );\n // Mark all elements in the full range for element-level accent styling.\n markDragSelectedElements(root, range, { includeTextboxes: true });\n } catch (error) {\n warnSelectionFailed(\n 'setBaseAndExtent failed when extending selection to all',\n error,\n );\n }\n\n root.removeAttribute('data-restoring-selection');\n // Move focus to the container so that subsequent plain ArrowUp/ArrowDown keydowns\n // fire with event.target === container, enabling the container-level handler to\n // forward them to the anchor (first) spin button \u2014 the same mechanism used after\n // a drag-select. Without this, the previously-focused spin button keeps element\n // focus and increments the wrong field.\n root.focus();\n deferContentEditableRestore(root);\n}\n\nfunction getBoundaryNodes(\n direction: 'left' | 'right',\n anchorNode: Node,\n anchorOffset: number,\n focusNode: Node,\n focusOffset: number,\n) {\n const anchorBeforeFocus =\n compareSelectionPoints(anchorNode, anchorOffset, focusNode, focusOffset) <=\n 0;\n if (direction === 'left' && anchorBeforeFocus) {\n return { boundaryNode: anchorNode, boundaryOffset: anchorOffset };\n }\n return { boundaryNode: focusNode, boundaryOffset: focusOffset };\n}\n\n/**\n * Collapses a multi-element selection (anchorNode !== focusNode) to one of its\n * boundaries and focuses the spinbutton or expression input at that boundary.\n *\n * Mirrors the natural Chrome/Safari behaviour of plain ArrowLeft/ArrowRight on a\n * non-collapsed selection: ArrowLeft \u2192 collapse to start, ArrowRight \u2192 collapse\n * to end. Firefox does not collapse \u2014 it shrinks the selection one step at a\n * time \u2014 so without this helper a Shift+Arrow extension followed by plain\n * arrows would require N presses before the cursor finally moves on Firefox.\n *\n * Returns true when a collapse was performed (callers should preventDefault),\n * false when the selection does not need handling here.\n * @internal\n */\nexport function collapseMultiElementSelection(\n rootElement: HTMLElement,\n direction: 'left' | 'right',\n): boolean {\n const selection = globalThis.getSelection();\n if (selection === null || selection.rangeCount < 1 || selection.isCollapsed) {\n return false;\n }\n const anchorNode = selection.anchorNode;\n const focusNode = selection.focusNode;\n if (anchorNode === null || focusNode === null || anchorNode === focusNode) {\n return false;\n }\n if (!rootElement.contains(anchorNode) && !rootElement.contains(focusNode)) {\n return false;\n }\n\n const anchorOffset = selection.anchorOffset;\n const focusOffset = selection.focusOffset;\n\n const { boundaryNode, boundaryOffset } = getBoundaryNodes(\n direction,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n );\n\n // Cancel any deferred CE-restore (set up by Shift+Arrow / drag-select) and\n // restore [contenteditable] synchronously so .focus() below lands on a live\n // editable element. Also clears stale [data-drag-selected] marks.\n pendingRestoreSignals.get(rootElement)?.abort();\n pendingRestoreSignals.delete(rootElement);\n restoreContentEditableAttributes(rootElement);\n rootElement.removeAttribute('data-shift-selection');\n\n const target = resolveSpinButton(boundaryNode, rootElement, boundaryOffset);\n\n selection.removeAllRanges();\n\n if (target === null) {\n return false;\n }\n target.focus();\n return true;\n}\n\n// Matches spinbuttons in both normal ([contenteditable]) and temporarily stripped ([data-wascontenteditable]) states.\nconst SPIN_BUTTON_SELECTOR = '[contenteditable], [data-wascontenteditable]';\n\nfunction getClosestContentEditable(node: Node): HTMLElement | null {\n return node.nodeType === Node.TEXT_NODE\n ? (node as Text).parentElement?.closest<HTMLElement>(\n SPIN_BUTTON_SELECTOR,\n ) ?? null\n : (node as Element).closest?.(SPIN_BUTTON_SELECTOR) ?? null;\n}\n\nfunction isExpressionNode(node: Node | null): boolean {\n return (\n node !== null &&\n getClosestContentEditable(node)?.getAttribute('role') === 'textbox'\n );\n}\n\n/**\n * Resolve a selection endpoint node to its containing spinbutton or, when the\n * endpoint lies on a separator between spinbuttons, to the nearest spinbutton.\n * Uses `[data-wascontenteditable]` to identify spinbuttons while contenteditable\n * is temporarily stripped during the drag, and falls back to the restored\n * `[contenteditable]` attribute afterwards.\n *\n * @param offset - When `node` is an element node (not a text node), this is\n * the child index from the Selection API. The child just before this position\n * is used as the starting point for the reverse spinbutton search, so that a\n * click on empty space after the last spinbutton resolves to that spinbutton\n * rather than falling back to the first one.\n */\nfunction resolveSpinButton(\n node: Node,\n root: HTMLElement,\n offset?: number,\n): HTMLElement | null {\n // Happy path: the node is inside a spinbutton.\n const direct = getClosestContentEditable(node);\n if (direct !== null) {\n return direct;\n }\n\n // Element node: offset is a child index. Walk back from offset-1 to find the nearest spinbutton.\n if (node.nodeType !== Node.TEXT_NODE && offset !== undefined && offset > 0) {\n const childBefore = node.childNodes[offset - 1];\n if (childBefore) {\n const nearest = getNearestPrecedingSpinButton(childBefore, root);\n if (nearest) {\n return nearest;\n }\n }\n }\n\n // Separator or offset-0 element: fall back to nearest preceding spinbutton.\n return getNearestPrecedingSpinButton(node, root);\n}\n\n/**\n * When a drag ends on a separator (e.g. \"/\" or \".\"), the selection endpoint is\n * outside any spinbutton. Walk the contenteditable spinbuttons in document order\n * and return the one that immediately precedes the given node in document order.\n * Falls back to the first spinbutton when the node comes before all of them.\n */\nfunction getNearestPrecedingSpinButton(\n node: Node,\n root: HTMLElement,\n): HTMLElement | null {\n const spinButtons = Array.from(\n root.querySelectorAll<HTMLElement>(SPIN_BUTTON_SELECTOR),\n );\n if (spinButtons.length === 0) {\n return null;\n }\n\n let nearest: HTMLElement | null = null;\n for (const spinButton of spinButtons) {\n // DOCUMENT_POSITION_FOLLOWING is set for both \"after\" and \"contained by\" \u2014 both mean the node comes after this spinButton.\n const position = spinButton.compareDocumentPosition(node);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n nearest = spinButton;\n }\n }\n\n // If node precedes all spinbuttons, return the first one\n return nearest ?? spinButtons[0] ?? null;\n}\n\n/**\n * Determines whether a captured endpoint is truly inside spinbutton content.\n * Separator nodes and caret positions at spinbutton edges must preserve their\n * exact boundary instead of snapping to the whole spinbutton.\n */\nfunction isEndpointInsideSpinButtonContent(\n node: Node,\n offset: number,\n): boolean {\n const closest = getClosestContentEditable(node);\n if (!closest || closest.getAttribute('role') !== 'spinbutton') {\n return false;\n }\n\n const firstChild = closest.childNodes[0] ?? null;\n const leadingTextNode =\n firstChild?.nodeType === Node.TEXT_NODE\n ? firstChild\n : firstChild?.firstChild?.nodeType === Node.TEXT_NODE\n ? firstChild.firstChild\n : null;\n const isLeadingContentNode =\n node === firstChild ||\n node === leadingTextNode ||\n (node instanceof Element &&\n leadingTextNode !== null &&\n node.contains(leadingTextNode)) ||\n (node.nodeType === Node.TEXT_NODE &&\n firstChild instanceof Element &&\n firstChild.contains(node));\n const nodeLength =\n node.nodeType === Node.TEXT_NODE\n ? node.nodeValue?.length ?? 0\n : node.textContent?.length ?? 0;\n const isBoundaryOffset = offset === 0 || offset === nodeLength;\n\n return !(isLeadingContentNode && isBoundaryOffset);\n}\n\n/**\n * One entry in a spin-button undo snapshot.\n * Uses a stable inputRef + Map key pair instead of a direct handler reference\n * so that the undo step always resolves the *current* (post-re-render) handler.\n * @internal\n */\nexport type SpinButtonSnapshotEntry = {\n inputRef: RefObject<DateTimeInputRef>;\n key: Intl.DateTimeFormatPartTypes;\n previousText: string | null;\n};\n\ntype Entry = {\n inputRef: RefObject<DateTimeInputRef>;\n key: Intl.DateTimeFormatPartTypes;\n element: HTMLSpanElement;\n};\n\n/**\n * Inspects the spin buttons of the supplied inputs and returns a snapshot for\n * every spin button whose content overlaps the selected range.\n *\n * The snapshot captures the current `textContent` of each covered element so\n * it can later be passed to.\n * @internal\n */\nexport function buildSpinButtonSnapshot(\n anchorNode: Node | null,\n anchorOffset: number,\n focusNode: Node | null,\n focusOffset: number,\n inputRefs: RefObject<DateTimeInputRef>[],\n): SpinButtonSnapshotEntry[] {\n if (!anchorNode || !focusNode) {\n return [];\n }\n\n const anchorBeforeFocus =\n compareSelectionPoints(anchorNode, anchorOffset, focusNode, focusOffset) <=\n 0;\n const selectionStartNode = anchorBeforeFocus ? anchorNode : focusNode;\n const selectionStartOffset = anchorBeforeFocus ? anchorOffset : focusOffset;\n const selectionEndNode = anchorBeforeFocus ? focusNode : anchorNode;\n const selectionEndOffset = anchorBeforeFocus ? focusOffset : anchorOffset;\n\n const entries: Entry[] = [];\n for (const inputRef of inputRefs) {\n if (!inputRef.current) {\n continue;\n }\n\n for (const [\n key,\n handler,\n ] of inputRef.current.spinButtonHandlers.entries()) {\n const el = handler?.element.current;\n if (el) {\n entries.push({ inputRef, key, element: el });\n }\n }\n }\n\n return entries\n .filter(({ element }) =>\n selectionOverlapsSpinButton(\n selectionStartNode,\n selectionStartOffset,\n selectionEndNode,\n selectionEndOffset,\n element,\n ),\n )\n .map(({ inputRef, key, element }) => ({\n inputRef,\n key,\n previousText: element.textContent ?? null,\n }));\n}\n\n/**\n * Restores spin-button values from a previously captured snapshot.\n * For each entry the current handler is resolved via the stable `inputRef` +\n * Map key, so stale handler references from before a React re-render are never\n * used.\n * @internal\n */\nexport function restoreSpinButtonSnapshot(\n snapshot: SpinButtonSnapshotEntry[],\n): void {\n for (const { inputRef, key, previousText } of snapshot) {\n const handler = inputRef.current?.spinButtonHandlers.get(key);\n if (!handler) {\n continue;\n }\n\n if (handler.type === 'number') {\n // applyText updates DOM, internal state, and fires onChange atomically.\n handler.applyText(previousText ?? '', true);\n } else if (previousText !== null && previousText.length > 0) {\n // Write to DOM immediately to avoid a visual flash before re-render.\n if (handler.element.current) {\n handler.element.current.textContent = previousText;\n }\n // searchValue updates internal state and fires onChange.\n handler.searchValue(previousText.charAt(0), true);\n } else {\n handler.clearValue(true);\n }\n }\n}\n\n/**\n * After a bulk-clear, determines the expression value to apply for each affected input:\n * - **0 survivors** (all spin buttons cleared): resets the input to an empty expression (`\"\"`).\n * - **1 survivor** (exactly one spin button was outside the selection): carries its value\n * into expression mode via `setExpressionValue` rather than leaving a partial date.\n * - **2+ survivors** (partial deletion): leaves the remaining spin buttons as-is.\n *\n * **Must be called BEFORE the clear loop** so that textContent is read while\n * the DOM is still intact (TextSpinButton clears its DOM only on next render).\n * Returns a Map of inputRef \u2192 expression text for every input that qualifies.\n * After clearing, iterate the map and call `inputRef.current.setExpressionValue(text)`.\n * @internal\n */\nexport function findExpressionFallbacks(\n snapshot: SpinButtonSnapshotEntry[],\n): Map<RefObject<DateTimeInputRef>, string> {\n const result = new Map<RefObject<DateTimeInputRef>, string>();\n\n for (const inputRef of new Set(snapshot.map((e) => e.inputRef))) {\n if (!inputRef.current) {\n continue;\n }\n\n const clearedKeys = new Set(\n snapshot.filter((e) => e.inputRef === inputRef).map((e) => e.key),\n );\n\n // Collect the spin buttons that were NOT part of the deletion.\n const survivors = [...inputRef.current.spinButtonHandlers.entries()].filter(\n ([key]) => !clearedKeys.has(key),\n );\n\n if (survivors.length === 0) {\n // Everything was cleared \u2014 reset the input to an empty expression.\n result.set(inputRef, '');\n } else if (survivors.length === 1) {\n // Exactly one spin button survived \u2014 carry its value into expression mode.\n const [, handler] = survivors[0];\n const text = handler?.element.current?.textContent ?? '';\n if (text.length > 0) {\n result.set(inputRef, text);\n }\n }\n // 2+ survivors: partial deletion within the input, leave the spin buttons as-is.\n }\n\n return result;\n}\n\n/** Returns the spin-button handler for the first entry in a snapshot, or `undefined`.\n * Returns `undefined` when that entry is the first or second spin button in its\n * group \u2014 in those cases callers should fall back to expression-input focus.\n * @internal\n */\nexport function getFirstSnapshotHandler(snapshot: SpinButtonSnapshotEntry[]) {\n const first = snapshot[0];\n if (!first) {\n return undefined;\n }\n const spinButtonHandlers = first.inputRef.current?.spinButtonHandlers;\n if (!spinButtonHandlers) {\n return undefined;\n }\n\n // Count only entries belonging to the first inputRef so that a snapshot\n // spanning two inputs does not inflate the count and return a wrong result.\n const clearedInFirstInput = snapshot.filter(\n (e) => e.inputRef === first.inputRef,\n ).length;\n // It switches to relative input either when everything is cleared or when only the first spinbutton remains.\n const switchedToRelative = clearedInFirstInput >= spinButtonHandlers.size - 1;\n\n if (switchedToRelative) {\n return undefined;\n }\n\n return spinButtonHandlers.get(first.key);\n}\n\n/** Returns the spin-button handler for the last entry in a snapshot, or `undefined`.\n * Returns `undefined` when the last input's cleared count means it switched to\n * relative mode \u2014 callers should fall back to expression-input focus in that case.\n * @internal\n */\nexport function getLastSnapshotHandler(snapshot: SpinButtonSnapshotEntry[]) {\n const last = snapshot[snapshot.length - 1];\n if (!last) {\n return undefined;\n }\n const spinButtonHandlers = last.inputRef.current?.spinButtonHandlers;\n if (!spinButtonHandlers) {\n return undefined;\n }\n\n // Count only entries belonging to the last inputRef so that a snapshot\n // spanning two inputs does not inflate the count and return a wrong result.\n const clearedInLastInput = snapshot.filter(\n (e) => e.inputRef === last.inputRef,\n ).length;\n // It switches to relative input either when everything is cleared or when only the first spinbutton remains.\n const switchedToRelative = clearedInLastInput >= spinButtonHandlers.size - 1;\n\n if (switchedToRelative) {\n return undefined;\n }\n\n return spinButtonHandlers.get(last.key);\n}\n\n/**\n * Returns the first ref in `inputRefs` order that has an expression input to\n * focus after a bulk clear, considering both directly cleared expression inputs\n * and inputs that transitioned to expression mode via expressionFallbacks.\n * Using `inputRefs` order ensures focus lands on the leftmost affected input\n * even when the selection's anchor is in an already-empty expression input.\n * @internal\n */\nexport function findFirstExpressionFocusTarget(\n inputRefs: RefObject<DateTimeInputRef>[],\n affectedExpressionRefs: RefObject<DateTimeInputRef>[],\n expressionFallbacks: Map<RefObject<DateTimeInputRef>, string>,\n): RefObject<DateTimeInputRef> | undefined {\n const allAffected = new Set<RefObject<DateTimeInputRef>>([\n ...affectedExpressionRefs,\n ...expressionFallbacks.keys(),\n ]);\n return inputRefs.find((ref) => allAffected.has(ref));\n}\n\n/**\n * Returns the expression input element when the selection is non-collapsed but\n * covers only part of the text within a single expression input. In that case\n * the caller should handle the deletion explicitly rather than relying on the\n * bulk-clear path or native browser behaviour.\n * Returns null when the selection is not a partial single-expression selection.\n * @internal\n */\nexport function getPartialExpressionElement(\n selection: Selection,\n inputRefs: RefObject<DateTimeInputRef>[],\n): HTMLSpanElement | null {\n for (const ref of inputRefs) {\n const expressionElement = ref.current?.expressionInputRef;\n if (\n expressionElement &&\n expressionElement.contains(selection.anchorNode) &&\n expressionElement.contains(selection.focusNode) &&\n selection.toString().length < (expressionElement.textContent?.length ?? 0)\n ) {\n return expressionElement;\n }\n }\n return null;\n}\n\n/**\n * Returns expression boundaries touched by the current selection.\n * - Two different expressions: `[firstExpressionElement, lastExpressionElement]` in document order.\n * - Mixed boundary (one expression + one non-expression boundary): `[expressionElement, expressionElement]`.\n * - Otherwise: `null`.\n * @internal\n */\nexport function getCrossExpressionElements(\n selection: Selection,\n inputRefs: RefObject<DateTimeInputRef>[],\n): [HTMLSpanElement, HTMLSpanElement] | null {\n if (selection.rangeCount < 1) {\n return null;\n }\n\n const range = selection.getRangeAt(0);\n const startEl = inputRefs.find((ref) =>\n ref.current?.expressionInputRef?.contains(range.startContainer),\n )?.current?.expressionInputRef;\n const endEl = inputRefs.find((ref) =>\n ref.current?.expressionInputRef?.contains(range.endContainer),\n )?.current?.expressionInputRef;\n\n if (!startEl && !endEl) {\n return null;\n }\n\n if (startEl && !endEl) {\n return [startEl, startEl];\n }\n if (!startEl && endEl) {\n return [endEl, endEl];\n }\n\n if (!startEl || !endEl) {\n return null;\n }\n\n // A selection fully inside one expression is handled by the existing\n // single-expression paths (partial deletion or full bulk clear).\n if (startEl === endEl) {\n return null;\n }\n\n // Return in document order.\n const startFirst = !!(\n startEl.compareDocumentPosition(endEl) & Node.DOCUMENT_POSITION_FOLLOWING\n );\n return startFirst ? [startEl, endEl] : [endEl, startEl];\n}\n\n/**\n * Focuses an expression element and places the cursor at the given range,\n * or at the end of the element when no range is provided.\n * The data-restoring-selection guard tells the focus handler to skip selectAll().\n * @internal\n */\nexport function focusExpression(\n expressionElement: HTMLSpanElement,\n range?: Range,\n): void {\n const root = expressionElement.closest<HTMLElement>('.strato-inputgroup');\n root?.setAttribute('data-restoring-selection', '');\n expressionElement.focus();\n const sel = globalThis.getSelection();\n if (sel) {\n if (!range) {\n range = document.createRange();\n range.selectNodeContents(expressionElement);\n range.collapse(false);\n }\n sel.setBaseAndExtent(\n range.startContainer,\n range.startOffset,\n range.endContainer,\n range.endOffset,\n );\n }\n root?.removeAttribute('data-restoring-selection');\n}\n\nfunction getOffsetWithinExpression(\n expressionElement: HTMLSpanElement,\n container: Node,\n offset: number,\n): number {\n const range = document.createRange();\n range.selectNodeContents(expressionElement);\n range.setEnd(container, offset);\n return range.toString().length;\n}\n\n/**\n * Deletes the selected range within a single expression input, collapses the\n * cursor to the deletion point, and fires an input event so the expression\n * handler can update React state.\n * @internal\n */\nexport function deletePartialExpression(\n selection: Selection,\n expressionElement: HTMLSpanElement,\n): void {\n const range = selection.getRangeAt(0);\n const text = expressionElement.textContent ?? '';\n\n const start = expressionElement.contains(range.startContainer)\n ? getOffsetWithinExpression(\n expressionElement,\n range.startContainer,\n range.startOffset,\n )\n : 0;\n const end = expressionElement.contains(range.endContainer)\n ? getOffsetWithinExpression(\n expressionElement,\n range.endContainer,\n range.endOffset,\n )\n : text.length;\n\n const from = Math.min(start, end);\n const to = Math.max(start, end);\n const nextText = `${text.slice(0, from)}${text.slice(to)}`;\n expressionElement.textContent = nextText;\n\n const nextRange = document.createRange();\n const node = expressionElement.firstChild;\n if (node?.nodeType === Node.TEXT_NODE) {\n nextRange.setStart(node, Math.min(from, nextText.length));\n } else {\n nextRange.setStart(expressionElement, 0);\n }\n nextRange.collapse(true);\n\n focusExpression(expressionElement, nextRange);\n expressionElement.dispatchEvent(new InputEvent('input', { bubbles: true }));\n}\n\n/**\n * Plans a bulk clear operation by analyzing the current selection\n * and computing everything needed to clear affected spin buttons and expression inputs.\n * Must be called before any DOM writes so that textContent is still intact.\n * @internal\n */\nexport function planBulkClear(\n selection: Selection,\n inputRefs: RefObject<DateTimeInputRef>[],\n endpointsOverride?: SelectionEndpoints,\n): {\n snapshot: SpinButtonSnapshotEntry[];\n affectedExpressionRefs: RefObject<DateTimeInputRef>[];\n expressionFallbacks: Map<RefObject<DateTimeInputRef>, string>;\n clearedExpressions: Array<{\n inputRef: RefObject<DateTimeInputRef>;\n previousText: string;\n }>;\n} {\n // Safari clips a freshly restored cross-CE selection to the active editing\n // host, so callers may pass the pre-restore endpoints captured by\n // `deferContentEditableRestore`. Fall back to the live selection otherwise.\n const anchorNode = endpointsOverride?.anchorNode ?? selection.anchorNode;\n const anchorOffset =\n endpointsOverride?.anchorOffset ?? selection.anchorOffset;\n const focusNode = endpointsOverride?.focusNode ?? selection.focusNode;\n const focusOffset = endpointsOverride?.focusOffset ?? selection.focusOffset;\n\n const affectedExpressionRefs = inputRefs.filter((ref) => {\n const expressionInputRef = ref.current?.expressionInputRef;\n return (\n expressionInputRef &&\n (expressionInputRef.contains(anchorNode) ||\n expressionInputRef.contains(focusNode))\n );\n });\n\n // Capture raw expression (inputRef.value e.g. \"now()-2h\", not display text) for correct undo via setExpressionValue.\n const clearedExpressions = affectedExpressionRefs.map((ref) => ({\n inputRef: ref,\n previousText:\n ref.current?.inputRef?.value ??\n ref.current?.expressionInputRef?.textContent ??\n '',\n }));\n\n const anchorInExpression = affectedExpressionRefs.some((ref) =>\n ref.current?.expressionInputRef?.contains(anchorNode),\n );\n const focusInExpression = affectedExpressionRefs.some((ref) =>\n ref.current?.expressionInputRef?.contains(focusNode),\n );\n\n // Skip buildSpinButtonSnapshot only when BOTH boundaries are inside expression inputs.\n const snapshot =\n anchorInExpression && focusInExpression\n ? []\n : buildSpinButtonSnapshot(\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n inputRefs,\n );\n\n return {\n snapshot,\n affectedExpressionRefs,\n expressionFallbacks: findExpressionFallbacks(snapshot),\n clearedExpressions,\n };\n}\n\n/**\n * Deletes the selected portion across two expression inputs using two separate\n * single-element ranges. Using one cross-element range with deleteContents()\n * does not modify text inside contenteditable boundaries; splitting into two\n * intra-element ranges avoids that limitation entirely.\n * Focus is placed at the end of whatever text remains in the first expression.\n * @internal\n */\nexport function deleteCrossExpressionPartial(\n selection: Selection,\n [firstExpressionElement, lastExpressionElement]: [\n HTMLSpanElement,\n HTMLSpanElement,\n ],\n): void {\n if (firstExpressionElement === lastExpressionElement) {\n deletePartialExpression(selection, firstExpressionElement);\n return;\n }\n\n const { startContainer, startOffset, endContainer, endOffset } =\n selection.getRangeAt(0);\n\n // Delete from the selection start to the end of firstExpressionElement.\n const fromRange = document.createRange();\n fromRange.setStart(startContainer, startOffset);\n fromRange.setEnd(\n firstExpressionElement,\n firstExpressionElement.childNodes.length,\n );\n fromRange.deleteContents();\n\n // Delete from the start of lastExpressionElement to the selection end.\n const toRange = document.createRange();\n toRange.setStart(lastExpressionElement, 0);\n toRange.setEnd(endContainer, endOffset);\n toRange.deleteContents();\n\n // Place cursor at the end of whatever text remains in the first expression.\n selection.removeAllRanges();\n focusExpression(firstExpressionElement);\n\n firstExpressionElement.dispatchEvent(\n new InputEvent('input', { bubbles: true }),\n );\n lastExpressionElement.dispatchEvent(\n new InputEvent('input', { bubbles: true }),\n );\n}\n\n/**\n * Returns the keyup callback passed to `removeContentEditable` after a\n * bulk-clear (cut or delete). Once the key is released and contenteditable\n * is restored, it decides where focus lands:\n * - If `firstElement` is `undefined` (the selection started at a leading spin\n * button), focus the first affected expression input.\n * - Otherwise keep focus on that spin button.\n * @internal\n */\nexport function restoreFocusAfterBulkClear(\n firstSpinButtonHandler: SpinButtonHandler | null | undefined,\n focusTarget: RefObject<DateTimeInputRef> | undefined,\n) {\n if (firstSpinButtonHandler) {\n firstSpinButtonHandler.element.current?.focus();\n firstSpinButtonHandler.selectAll();\n return;\n }\n\n const expressionElement = focusTarget?.current?.expressionInputRef;\n if (expressionElement) {\n requestAnimationFrame(() => {\n focusExpression(expressionElement);\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "AAEA,YAAY,YAAY;AAExB,SAAS,uBAAuB;AAGhC,SAAS,oBAAoB,SAAiB,OAAsB;AAClE,kBAAgB,qBAAqB,EAAE,KAAK,SAAS,KAAK;AAC5D;AAGO,SAAS,0BAA0B,UAAyB;AAEjE,QAAM,uBAAuB,SAAS,eAAe;AAAA,IACnD,IAAI,OAAO,aAAa;AAAA,EAC1B;AACA,QAAM,mBAAmB,sBAAsB,aAAa,gBAAgB;AAC5E,QAAM,0BACJ,SAAS,eAAe,QAAQ,kBAAkB;AAGpD,MAAI,yBAAyB,yBAAyB;AACpD,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB,yBAAyB,aAAa,gBAAgB;AAE5E,SAAO,kBAAkB;AAC3B;AAGA,SAAS,iBAAiB,MAAmB,MAAyB;AACpE,QAAM,SAAS,SAAS,iBAAiB,MAAM,WAAW,WAAW,IAAI;AAEzE,MAAI,UAAU,OAAO,UAAU;AAC/B,MAAI,QAAQ;AACZ,SAAO,SAAS;AACd,QAAI,OAAO;AAET,UAAI,0BAA0B,OAAO,GAAG;AACtC,eAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAI,YAAY,MAAM;AACpB,cAAQ;AAAA,IACV;AAEA,cAAU,OAAO,aAAa;AAAA,EAChC;AAEA,SAAO;AACT;AAGA,SAAS,aAAa,MAAmB,MAAyB;AAChE,QAAM,SAAS,SAAS,iBAAiB,MAAM,WAAW,WAAW,IAAI;AAEzE,MAAI,UAAU,OAAO,SAAS;AAC9B,MAAI,QAAQ;AAEZ,SAAO,SAAS;AACd,QAAI,OAAO;AAET,UAAI,0BAA0B,OAAO,GAAG;AACtC,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAI,YAAY,MAAM;AACpB,cAAQ;AAAA,IACV;AACA,cAAU,OAAO,SAAS;AAAA,EAC5B;AAEA,SAAO;AACT;AAGA,SAAS,0BACP,MACA,MACA,QACuC;AACvC,MACE,KAAK,aAAa,KAAK,aACvB,KAAK,aACL,SAAS,KAAK,UAAU,UACxB,0BAA0B,IAAI,GAC9B;AACA,WAAO,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,EACpC;AAGA,MAAI,KAAK,aAAa,KAAK,WAAW;AACpC,UAAM,gBAAgB,KAAK,WAAW,MAAM;AAC5C,QAAI,eAAe;AACjB,YAAM,SAAS,SAAS;AAAA,QACtB;AAAA,QACA,WAAW;AAAA,QACX;AAAA,MACF;AACA,YAAM,YACJ,OAAO,WAAW,MACjB,cAAc,aAAa,KAAK,YAAY,gBAAgB;AAC/D,UACE,cACC,0BAA0B,SAAS,KAClC,0BAA0B,SAAS,MAAM,OAC3C;AACA,eAAO,EAAE,MAAM,WAAW,QAAQ,EAAE;AAAA,MACtC;AAAA,IACF;AAGA,QAAI,SAAS,GAAG;AACd,YAAM,gBAAgB,KAAK,WAAW,SAAS,CAAC;AAChD,UAAI,eAAe;AACjB,cAAM,SAAS,SAAS;AAAA,UACtB;AAAA,UACA,WAAW;AAAA,UACX;AAAA,QACF;AACA,cAAM,WACJ,OAAO,UAAU,MAChB,cAAc,aAAa,KAAK,YAAY,gBAAgB;AAC/D,YAAI,UAAU;AACZ,cAAI,mBAAgC,aAAa,MAAM,QAAQ;AAC/D,iBACE,qBAAqB,QACrB,0BAA0B,gBAAgB,MAAM,MAChD;AACA,+BAAmB,aAAa,MAAM,gBAAgB;AAAA,UACxD;AACA,cAAI,kBAAkB;AACpB,mBAAO,EAAE,MAAM,kBAAkB,QAAQ,EAAE;AAAA,UAC7C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,MAAI,OAAoB,aAAa,MAAM,IAAI;AAG/C,MACE,iBAAiB,IAAI,KACrB,QACA,0BAA0B,IAAI,MAAM,MACpC;AACA,UAAM,mBAAgC,aAAa,MAAM,IAAI;AAC7D,QAAI,iBAAiB,gBAAgB,GAAG;AACtC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,SAAO,EAAE,MAAM,MAAM,QAAQ,EAAE;AACjC;AAGA,SAAS,8BACP,MACA,MACA,QACuC;AACvC,MACE,KAAK,aAAa,KAAK,aACvB,SAAS,KACT,0BAA0B,IAAI,GAC9B;AACA,WAAO,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,EACpC;AAGA,MAAI,KAAK,aAAa,KAAK,aAAa,SAAS,GAAG;AAClD,UAAM,gBAAgB,KAAK,WAAW,SAAS,CAAC;AAChD,QAAI,eAAe;AACjB,YAAM,SAAS,SAAS;AAAA,QACtB;AAAA,QACA,WAAW;AAAA,QACX;AAAA,MACF;AACA,YAAM,WACJ,OAAO,UAAU,MAChB,cAAc,aAAa,KAAK,YAAY,gBAAgB;AAC/D,UACE,UAAU,cACT,0BAA0B,QAAQ,KACjC,0BAA0B,QAAQ,MAAM,OAC1C;AACA,eAAO,EAAE,MAAM,UAAU,QAAQ,SAAS,UAAU,SAAS,EAAE;AAAA,MACjE;AAAA,IACF;AAAA,EACF;AAGA,MAAI,OAAoB,iBAAiB,MAAM,IAAI;AACnD,MACE,iBAAiB,IAAI,KACrB,QACA,0BAA0B,IAAI,MAAM,MACpC;AACA,UAAM,uBAAoC,iBAAiB,MAAM,IAAI;AACrE,QAAI,iBAAiB,oBAAoB,GAAG;AAC1C,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI,CAAC,QAAQ,MAAM,cAAc,MAAM;AACrC,WAAO;AAAA,EACT;AAEA,SAAO,EAAE,MAAM,MAAM,QAAQ,KAAK,UAAU,SAAS,EAAE;AACzD;AAGA,SAAS,2BACP,MACuC;AACvC,QAAM,SAAS,SAAS,iBAAiB,MAAM,WAAW,WAAW,IAAI;AACzE,MAAI,UAAU,OAAO,WAAW;AAChC,SAAO,YAAY,MAAM;AAEvB,QAAI,0BAA0B,OAAO,GAAG;AACtC,aAAO,EAAE,MAAM,SAAS,QAAQ,EAAE;AAAA,IACpC;AACA,cAAU,OAAO,SAAS;AAAA,EAC5B;AACA,SAAO;AACT;AAGA,SAAS,0BACP,MACuC;AACvC,QAAM,SAAS,SAAS,iBAAiB,MAAM,WAAW,WAAW,IAAI;AACzE,MAAI,UAAU,OAAO,UAAU;AAC/B,SAAO,YAAY,MAAM;AAEvB,QAAI,0BAA0B,OAAO,GAAG;AACtC,aAAO,EAAE,MAAM,SAAS,QAAQ,QAAQ,WAAW,UAAU,EAAE;AAAA,IACjE;AACA,cAAU,OAAO,aAAa;AAAA,EAChC;AACA,SAAO;AACT;AAEA,SAAS,uBACP,WACA,aACA,YACA,cACQ;AACR,MAAI,cAAc,YAAY;AAC5B,WAAO,cAAc;AAAA,EACvB;AAEA,QAAM,aAAa,SAAS,YAAY;AACxC,aAAW,SAAS,WAAW,WAAW;AAC1C,aAAW,SAAS,IAAI;AAExB,QAAM,cAAc,SAAS,YAAY;AACzC,cAAY,SAAS,YAAY,YAAY;AAC7C,cAAY,SAAS,IAAI;AAEzB,SAAO,WAAW,sBAAsB,MAAM,gBAAgB,WAAW;AAC3E;AAEA,SAAS,4BACP,oBACA,sBACA,kBACA,oBACA,YACS;AACT,QAAM,kBAAkB,2BAA2B,UAAU;AAC7D,QAAM,gBAAgB,0BAA0B,UAAU;AAE1D,MAAI,CAAC,mBAAmB,CAAC,eAAe;AACtC,WAAO;AAAA,EACT;AAEA,SACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,cAAc;AAAA,EAChB,IAAI,KACJ;AAAA,IACE;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB,IAAI;AAER;AAOA,SAAS,iCAAiC,MAAyB;AACjE,aAAW,YAAY,KAAK;AAAA,IAC1B;AAAA,EACF,GAAG;AACD,UAAM,gBAAgB,SAAS,aAAa,yBAAyB;AACrE,QAAI,kBAAkB,MAAM;AAC1B,eAAS,aAAa,mBAAmB,aAAa;AAAA,IACxD;AACA,aAAS,gBAAgB,yBAAyB;AAElD,UAAM,cAAc,SAAS,aAAa,kBAAkB;AAC5D,QAAI,gBAAgB,MAAM;AACxB,eAAS,aAAa,YAAY,WAAW;AAC7C,eAAS,gBAAgB,kBAAkB;AAAA,IAC7C;AAAA,EACF;AAEA,aAAW,MAAM,KAAK,iBAA8B,sBAAsB,GAAG;AAC3E,OAAG,gBAAgB,oBAAoB;AAAA,EACzC;AACF;AASA,SAAS,yBACP,aACA,OACA,EAAE,mBAAmB,MAAM,IAAoC,CAAC,GAC1D;AACN,aAAW,MAAM,YAAY;AAAA,IAC3B;AAAA,EACF,GAAG;AACD,OAAG,gBAAgB,oBAAoB;AAAA,EACzC;AAGA,aAAW,SAAS,YAAY;AAAA,IAC9B;AAAA,EACF,GAAG;AACD,eAAW,SAAS,MAAM,UAAU;AAClC,UAAI,MAAM,eAAe,KAAK,GAAG;AAC/B,cAAM,aAAa,sBAAsB,EAAE;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAGA,MAAI,kBAAkB;AACpB,eAAW,WAAW,YAAY,iBAAiB,kBAAkB,GAAG;AACtE,UAAI,MAAM,eAAe,OAAO,GAAG;AACjC,gBAAQ,aAAa,sBAAsB,EAAE;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;AACF;AAKA,MAAM,wBAAwB,oBAAI,QAAsC;AAexE,MAAM,0BAA0B,oBAAI,QAAyC;AAStE,SAAS,2BACd,MACgC;AAChC,QAAM,QAAQ,wBAAwB,IAAI,IAAI;AAC9C,0BAAwB,OAAO,IAAI;AACnC,SAAO;AACT;AAOA,SAAS,4BAA4B,MAAyB;AAE5D,wBAAsB,IAAI,IAAI,GAAG,MAAM;AAEvC,QAAM,gBAAgB,IAAI,gBAAgB;AAC1C,wBAAsB,IAAI,MAAM,aAAa;AAE7C,WAAS,QAAQ,GAAgB;AAC/B,QAAI,aAAa,eAAe;AAC9B,UAAI,CAAC,QAAQ,WAAW,OAAO,OAAO,EAAE,SAAS,EAAE,GAAG,GAAG;AACvD;AAAA,MACF;AACA,WAAK,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,YAAY,MAAM,KAAK;AAC3D;AAAA,MACF;AAGA,UACE,EAAE,YACF;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,SAAS,EAAE,GAAG,GAChB;AACA;AAAA,MACF;AASA,UACE,CAAC,EAAE,YACH,CAAC,EAAE,WACH,CAAC,EAAE,WACH,CAAC,EAAE,WACF,EAAE,QAAQ,eAAe,EAAE,QAAQ,eACpC;AACA,cAAM,YAAY;AAAA,UAChB;AAAA,UACA,EAAE,QAAQ,cAAc,SAAS;AAAA,QACnC;AACA,YAAI,WAAW;AACb,YAAE,eAAe;AAIjB,YAAE,gBAAgB;AAGlB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAOA,UAAM,YAAY,WAAW,aAAa;AAC1C,UAAM,aAAa,WAAW,cAAc;AAC5C,UAAM,eAAe,WAAW,gBAAgB;AAChD,UAAM,YAAY,WAAW,aAAa;AAC1C,UAAM,cAAc,WAAW,eAAe;AAC9C,UAAM,2BACJ,cAAc,QACd,eAAe,QACf,cAAc,QACd,eAAe,aACf,UAAU,SAAS,EAAE,SAAS;AAMhC,QAAI,4BAA4B,cAAc,WAAW;AACvD,8BAAwB,IAAI,MAAM;AAAA,QAChC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAEA,qCAAiC,IAAI;AACrC,0BAAsB,OAAO,IAAI;AACjC,kBAAc,MAAM;AAEpB,QAAI,4BAA4B,cAAc,WAAW;AACvD,UAAI;AACF,mBAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF,SAAS,OAAO;AACd;AAAA,UACE;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAAS,iBAAiB,aAAa,SAAS;AAAA,IAC9C,QAAQ,cAAc;AAAA,IACtB,SAAS;AAAA,EACX,CAAC;AACD,WAAS,iBAAiB,WAAW,SAAS;AAAA,IAC5C,QAAQ,cAAc;AAAA,IACtB,SAAS;AAAA,EACX,CAAC;AACH;AAQO,SAAS,sBACd,aACA,mBACA,WACA,iBACA,yBACM;AAGN,cAAY,aAAa,4BAA4B,EAAE;AAEvD,QAAM,mBACJ,YAAY,iBAA8B,mBAAmB;AAC/D,aAAW,YAAY,kBAAkB;AACvC,UAAM,gBAAgB,SAAS,aAAa,iBAAiB,KAAK;AAClE,aAAS,gBAAgB,iBAAiB;AAC1C,aAAS,QAAQ,qBAAqB;AAGtC,QAAI,SAAS,aAAa,UAAU,GAAG;AACrC,eAAS,QAAQ,cAAc,SAAS,aAAa,UAAU,KAAK;AACpE,eAAS,gBAAgB,UAAU;AAAA,IACrC;AAAA,EACF;AAEA,QAAM,SAAS,IAAI,gBAAgB;AAKnC,MAAI,yBAAyB;AAC3B,UAAM,YAAY,0BAA0B,uBAAuB;AACnE,QAAI,WAAW;AACb,kBAAY;AAAA,QACV;AAAA,QACA,MAAM;AACJ,gBAAM,MAAM,WAAW,aAAa;AACpC,cAAI,CAAC,OAAO,CAAC,IAAI,YAAY;AAC3B;AAAA,UACF;AAEA,cAAI,IAAI,WAAW,aAAa,KAAK,WAAW;AAC9C;AAAA,UACF;AACA,gBAAM,YAAY,IAAI;AACtB,gBAAM,cAAc,IAAI,eAAe;AACvC,cAAI,CAAC,WAAW;AACd;AAAA,UACF;AACA,gBAAM,oBACJ;AAAA,YACE,UAAU;AAAA,YACV,UAAU;AAAA,YACV;AAAA,YACA;AAAA,UACF,KAAK;AACP,cAAI;AACF,gBAAI,gBAAgB;AAEpB,gBAAI,mBAAmB;AACrB,kBAAI;AAAA,gBACF,UAAU;AAAA,gBACV,UAAU;AAAA,gBACV;AAAA,gBACA;AAAA,cACF;AAAA,YACF,OAAO;AACL,kBAAI;AAAA,gBACF;AAAA,gBACA;AAAA,gBACA,UAAU;AAAA,gBACV,UAAU;AAAA,cACZ;AAAA,YACF;AAAA,UACF,SAAS,OAAO;AACd;AAAA,cACE;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA,EAAE,QAAQ,OAAO,QAAQ,SAAS,KAAK;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAGA,cAAY;AAAA,IACV;AAAA,IACA,MAAM;AACJ,YAAM,MAAM,WAAW,aAAa;AACpC,UAAI,CAAC,OAAO,IAAI,eAAe,GAAG;AAChC;AAAA,MACF;AACA,YAAM,QAAQ,IAAI,WAAW,CAAC;AAC9B,+BAAyB,aAAa,KAAK;AAAA,IAC7C;AAAA,IACA,EAAE,QAAQ,OAAO,QAAQ,SAAS,KAAK;AAAA,EACzC;AAEA,oBAAkB;AAAA,IAChB;AAAA,IACA,CAAC,UAAiB;AAEhB,YAAM,yBAAyB,WAAW,aAAa;AACvD,YAAM,qBAAqB,wBAAwB,cAAc;AACjE,YAAM,uBAAuB,wBAAwB,gBAAgB;AACrE,YAAM,oBAAoB,wBAAwB,aAAa;AAC/D,YAAM,sBAAsB,wBAAwB,eAAe;AAEnE,YAAM,2BACJ,2BAA2B,QAC3B,uBAAuB,SAAS,EAAE,SAAS,MAC1C,uBAAuB,qBACrB,uBAAuB,QACtB,uBAAuB,qBACvB,yBAAyB,uBACzB,mBAAmB,aAAa,KAAK;AAE3C,UAAI,4BAA4B,sBAAsB,mBAAmB;AAKvE,cAAM,sBACJ,mBAAmB,aAAa,KAAK;AAGvC,cAAM,yBAAyB,sBAC3B,4BAA4B,OAC5B;AAAA,UACE;AAAA,UACA;AAAA,QACF;AAEJ,YAAI;AACJ,YAAI,qBAAqB;AACvB,6BAAmB,2BAA2B;AAAA,QAChD,WAAW,wBAAwB;AACjC,6BAAmB;AAAA,YACjB;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,QACF,OAAO;AACL,6BAAmB;AAAA,QACrB;AAGA,YAAI,0BAAgC;AACpC,YAAI,4BAAoC;AACxC,YAAI,uBAAuB,kBAAkB;AAC3C,gBAAM,UAAU,0BAA0B,gBAAgB;AAC1D,cAAI,SAAS;AACX,sCAA0B,QAAQ;AAClC,wCAA4B,QAAQ;AAAA,UACtC;AAAA,QACF;AAEA,cAAM,wBAAwB;AAAA,UAC5B;AAAA,UACA;AAAA,QACF;AACA,cAAM,kBACJ,yBAAyB,kBAAkB,aAAa,KAAK,YACzD;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,QACF,IACA;AAEN,cAAM,oBACJ;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,KAAK;AAEP,YAAI;AACJ,YAAI,kBAAkB,aAAa,MAAM,MAAM,cAAc;AAC3D,sBAAY,oBACR,2BAA2B,gBAAgB,IAC3C,0BAA0B,gBAAgB;AAAA,QAChD,OAAO;AACL,sBAAY;AAAA,YACV,MAAM;AAAA,YACN,QAAQ;AAAA,UACV;AAAA,QACF;AACA,YAAI;AACJ,YAAI,iBAAiB,aAAa,MAAM,MAAM,cAAc;AAC1D,qBAAW,oBACP,0BAA0B,eAAe,IACzC,2BAA2B,eAAe;AAAA,QAChD,OAAO;AACL,qBAAW,EAAE,MAAM,mBAAmB,QAAQ,oBAAoB;AAAA,QACpE;AAEA,YAAI,aAAa,UAAU;AACzB,cAAI;AACF,kBAAM,QAAQ,SAAS,YAAY;AACnC,gBAAI,mBAAmB;AACrB,oBAAM,SAAS,UAAU,MAAM,UAAU,MAAM;AAC/C,oBAAM,OAAO,SAAS,MAAM,SAAS,MAAM;AAAA,YAC7C,OAAO;AACL,oBAAM,SAAS,SAAS,MAAM,SAAS,MAAM;AAC7C,oBAAM,OAAO,UAAU,MAAM,UAAU,MAAM;AAAA,YAC/C;AACA,kBAAM,MAAM,WAAW,aAAa;AACpC,iBAAK;AAAA,cACH,UAAU;AAAA,cACV,UAAU;AAAA,cACV,SAAS;AAAA,cACT,SAAS;AAAA,YACX;AAEA,qCAAyB,aAAa,KAAK;AAAA,UAC7C,SAAS,OAAO;AACd;AAAA,cACE;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,0BAAkB,OAAO,wBAAwB;AACjD,oBAAY,gBAAgB,0BAA0B;AAGtD,oCAA4B,WAAW;AAAA,MACzC,OAAO;AAEL,yCAAiC,WAAW;AAE5C,YAAI,sBAAsB,mBAAmB;AAC3C,cAAI;AACF,uBACG,aAAa,GACZ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACJ,SAAS,OAAO;AACd;AAAA,cACE;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,0BAAkB,OAAO,wBAAwB;AACjD,oBAAY,gBAAgB,0BAA0B;AAAA,MACxD;AAEA,aAAO,MAAM;AAAA,IACf;AAAA,IACA,EAAE,QAAQ,OAAO,OAAO;AAAA,EAC1B;AACF;AAQA,SAAS,8BACP,MACA,YACA,cACA,WACA,aACA,WACuC;AACvC,MAAI,aAAiC;AAErC,MAAI,UAAU,aAAa,KAAK,WAAW;AACzC,iBACG,UAAmB,eAAe;AAAA,MACjC;AAAA,IACF,KAAK;AAAA,EACT,WACE,qBAAqB,eACrB,UAAU,aAAa,MAAM,MAAM,cACnC;AAEA,iBAAa;AAAA,EACf;AAEA,MAAI,CAAC,YAAY;AACf,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,MAAM;AAAA,IACnB,KAAK,iBAA8B,qBAAqB;AAAA,EAC1D;AACA,QAAM,MAAM,OAAO,QAAQ,UAAU;AAGrC,QAAM,sBACJ,uBAAuB,WAAW,aAAa,YAAY,YAAY,IACvE;AACF,QAAM,YACJ,cAAc,YAAY,CAAC,sBAAsB;AAEnD,MAAI,cAAc,WAAW;AAC3B,UAAM,SAAS,OAAO,MAAM,CAAC,KAAK;AAClC,QAAI,CAAC,QAAQ;AACX,aAAO;AAAA,IACT;AAEA,WAAO,YACH,0BAA0B,MAAM,IAChC,2BAA2B,MAAM;AAAA,EACvC;AAEA,QAAM,SAAS,OAAO,MAAM,CAAC,KAAK;AAClC,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA,EACT;AACA,SAAO,YACH,2BAA2B,MAAM,IACjC,0BAA0B,MAAM;AACtC;AAEO,SAAS,gBACd,KACM;AACN,QAAM,YAAY,WAAW,aAAa;AAC1C,MACE,cAAc,QACd,UAAU,eAAe,QACzB,UAAU,cAAc,QACxB,UAAU,aAAa,GACvB;AACA;AAAA,EACF;AAEA,QAAM,aAAa,UAAU;AAC7B,QAAM,eAAe,UAAU;AAC/B,QAAM,YAAY,UAAU;AAC5B,QAAM,cAAc,UAAU;AAE9B,MAAI,UAAiD;AAErD,QAAM,OACJ,UAAU,aAAa,KAAK,YACvB,UAAmB,eAAe;AAAA,IACjC;AAAA,EACF,IACA,qBAAqB,cACrB,UAAU,QAAwB,oBAAoB,IACtD;AACN,MAAI,SAAS,QAAQ,SAAS,QAAW;AACvC;AAAA,EACF;AAEA,MAAI,QAAQ,aAAa;AACvB,cACE;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,KAAK,8BAA8B,MAAM,WAAW,WAAW;AAAA,EACnE,WAAW,QAAQ,cAAc;AAC/B,cACE;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,KAAK,0BAA0B,MAAM,WAAW,WAAW;AAAA,EAC/D,WAAW,QAAQ,QAAQ;AACzB,cAAU,2BAA2B,IAAI;AAAA,EAC3C,WAAW,QAAQ,OAAO;AACxB,cAAU,0BAA0B,IAAI;AAAA,EAC1C;AAGA,MAAI,mBAAmB;AACvB,SAAO,WAAW,0BAA0B,QAAQ,IAAI,MAAM,MAAM;AAClE,uBAAmB;AACnB,UAAM,UACJ,QAAQ,eAAe,QAAQ,SAC3B,8BAA8B,MAAM,QAAQ,MAAM,QAAQ,MAAM,IAChE,0BAA0B,MAAM,QAAQ,MAAM,QAAQ,MAAM;AAClE,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AACA,cAAU;AAAA,EACZ;AAIA,MAAI,oBAAoB,SAAS,KAAK,aAAa,KAAK,WAAW;AACjE,QAAI,QAAQ,cAAc;AACxB,gBAAU,EAAE,MAAM,QAAQ,MAAM,QAAQ,EAAE;AAAA,IAC5C,WAAW,QAAQ,aAAa;AAC9B,gBAAU;AAAA,QACR,MAAM,QAAQ;AAAA,QACd,QAAQ,QAAQ,KAAK,WAAW,UAAU;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,SAAS;AACZ;AAAA,EACF;AAGA,QAAM,qBAAqB,CAAC,SAAmC;AAC7D,UAAM,KACJ,KAAK,aAAa,KAAK,YAClB,KAAc,gBACf,gBAAgB,cAChB,OACA;AACN,UAAM,KAAK,IAAI,QAAqB,oBAAoB,KAAK;AAC7D,WAAO,IAAI,aAAa,MAAM,MAAM,eAAe,KAAK;AAAA,EAC1D;AAEA,QAAM,WAAW,mBAAmB,UAAU;AAG9C,QAAM,WAAW,0BAA0B,UAAU;AACrD,QAAM,SAAS,0BAA0B,QAAQ,IAAI;AACrD,QAAM,kBAAkB,aAAa,QAAQ,aAAa;AAE1D,MAAI,iBAAiB;AAEnB,QAAI,qBAAqB;AACzB,QAAI,uBAAuB;AAC3B,QAAI,WAAW,aAAa,KAAK,aAAa,UAAU;AAEtD,YAAM,oBACJ;AAAA,QACE;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV,KAAK;AACP,YAAM,WAAW,oBACb,2BAA2B,QAAQ,IACnC,0BAA0B,QAAQ;AACtC,UAAI,UAAU;AACZ,6BAAqB,SAAS;AAC9B,+BAAuB,SAAS;AAAA,MAClC;AAAA,IACF;AAGA,SAAK,aAAa,4BAA4B,EAAE;AAChD,eAAW,YAAY,KAAK;AAAA,MAC1B;AAAA,IACF,GAAG;AACD,YAAM,OAAO,SAAS,aAAa,iBAAiB,KAAK;AACzD,eAAS,gBAAgB,iBAAiB;AAC1C,eAAS,QAAQ,qBAAqB;AAAA,IACxC;AAEA,QAAI;AAEF,gBAAU;AAAA,QACR;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAEA,YAAM,oBACJ;AAAA,QACE;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV,KAAK;AACP,YAAM,QAAQ,SAAS,YAAY;AACnC,UAAI,mBAAmB;AACrB,cAAM,SAAS,oBAAoB,oBAAoB;AACvD,cAAM,OAAO,QAAQ,MAAM,QAAQ,MAAM;AAAA,MAC3C,OAAO;AACL,cAAM,SAAS,QAAQ,MAAM,QAAQ,MAAM;AAC3C,cAAM,OAAO,oBAAoB,oBAAoB;AAAA,MACvD;AACA,+BAAyB,MAAM,KAAK;AAAA,IACtC,SAAS,OAAO;AACd;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,SAAK,gBAAgB,0BAA0B;AAC/C,gCAA4B,IAAI;AAAA,EAClC,OAAO;AAEL,SAAK,aAAa,4BAA4B,EAAE;AAChD,QAAI;AACF,gBAAU;AAAA,QACR;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,IACF,SAAS,OAAO;AACd;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,SAAK,gBAAgB,0BAA0B;AAG/C,UAAM,eAAe,IAAI,MAAM;AAC/B,UAAM,MAAM,WAAW,wBAAwB,QAAQ,IAAI;AAC3D,QACE,MAAM,KAAK,+BACV,QAAQ,KAAK,gBAAgB,QAAQ,QACtC;AACA,mBAAa,SAAS,YAAY,YAAY;AAC9C,mBAAa,OAAO,QAAQ,MAAM,QAAQ,MAAM;AAAA,IAClD,OAAO;AACL,mBAAa,SAAS,QAAQ,MAAM,QAAQ,MAAM;AAClD,mBAAa,OAAO,YAAY,YAAY;AAAA,IAC9C;AACA,6BAAyB,MAAM,YAAY;AAAA,EAC7C;AAEA,OAAK,aAAa,wBAAwB,EAAE;AAC9C;AAMO,SAAS,uBAA6B;AAC3C,QAAM,YAAY,WAAW,aAAa;AAC1C,MACE,cAAc,QACd,UAAU,cAAc,QACxB,UAAU,aAAa,GACvB;AACA;AAAA,EACF;AAEA,QAAM,OACJ,UAAU,UAAU,eAAe;AAAA,IACjC;AAAA,EACF;AACF,MAAI,SAAS,QAAQ,SAAS,QAAW;AACvC;AAAA,EACF;AAEA,QAAM,gBAAgB,2BAA2B,IAAI;AACrD,QAAM,eAAe,0BAA0B,IAAI;AAEnD,MAAI,CAAC,iBAAiB,CAAC,cAAc;AACnC;AAAA,EACF;AAGA,OAAK,aAAa,4BAA4B,EAAE;AAChD,aAAW,YAAY,KAAK;AAAA,IAC1B;AAAA,EACF,GAAG;AACD,UAAM,OAAO,SAAS,aAAa,iBAAiB,KAAK;AACzD,aAAS,gBAAgB,iBAAiB;AAC1C,aAAS,QAAQ,qBAAqB;AAAA,EACxC;AAEA,MAAI;AACF,UAAM,QAAQ,SAAS,YAAY;AACnC,UAAM,SAAS,cAAc,MAAM,cAAc,MAAM;AACvD,UAAM,OAAO,aAAa,MAAM,aAAa,MAAM;AACnD,cAAU;AAAA,MACR,cAAc;AAAA,MACd,cAAc;AAAA,MACd,aAAa;AAAA,MACb,aAAa;AAAA,IACf;AAEA,6BAAyB,MAAM,OAAO,EAAE,kBAAkB,KAAK,CAAC;AAAA,EAClE,SAAS,OAAO;AACd;AAAA,MACE;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,OAAK,gBAAgB,0BAA0B;AAM/C,OAAK,MAAM;AACX,8BAA4B,IAAI;AAClC;AAEA,SAAS,iBACP,WACA,YACA,cACA,WACA,aACA;AACA,QAAM,oBACJ,uBAAuB,YAAY,cAAc,WAAW,WAAW,KACvE;AACF,MAAI,cAAc,UAAU,mBAAmB;AAC7C,WAAO,EAAE,cAAc,YAAY,gBAAgB,aAAa;AAAA,EAClE;AACA,SAAO,EAAE,cAAc,WAAW,gBAAgB,YAAY;AAChE;AAgBO,SAAS,8BACd,aACA,WACS;AACT,QAAM,YAAY,WAAW,aAAa;AAC1C,MAAI,cAAc,QAAQ,UAAU,aAAa,KAAK,UAAU,aAAa;AAC3E,WAAO;AAAA,EACT;AACA,QAAM,aAAa,UAAU;AAC7B,QAAM,YAAY,UAAU;AAC5B,MAAI,eAAe,QAAQ,cAAc,QAAQ,eAAe,WAAW;AACzE,WAAO;AAAA,EACT;AACA,MAAI,CAAC,YAAY,SAAS,UAAU,KAAK,CAAC,YAAY,SAAS,SAAS,GAAG;AACzE,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,UAAU;AAC/B,QAAM,cAAc,UAAU;AAE9B,QAAM,EAAE,cAAc,eAAe,IAAI;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAKA,wBAAsB,IAAI,WAAW,GAAG,MAAM;AAC9C,wBAAsB,OAAO,WAAW;AACxC,mCAAiC,WAAW;AAC5C,cAAY,gBAAgB,sBAAsB;AAElD,QAAM,SAAS,kBAAkB,cAAc,aAAa,cAAc;AAE1E,YAAU,gBAAgB;AAE1B,MAAI,WAAW,MAAM;AACnB,WAAO;AAAA,EACT;AACA,SAAO,MAAM;AACb,SAAO;AACT;AAGA,MAAM,uBAAuB;AAE7B,SAAS,0BAA0B,MAAgC;AACjE,SAAO,KAAK,aAAa,KAAK,YACzB,KAAc,eAAe;AAAA,IAC5B;AAAA,EACF,KAAK,OACJ,KAAiB,UAAU,oBAAoB,KAAK;AAC3D;AAEA,SAAS,iBAAiB,MAA4B;AACpD,SACE,SAAS,QACT,0BAA0B,IAAI,GAAG,aAAa,MAAM,MAAM;AAE9D;AAeA,SAAS,kBACP,MACA,MACA,QACoB;AAEpB,QAAM,SAAS,0BAA0B,IAAI;AAC7C,MAAI,WAAW,MAAM;AACnB,WAAO;AAAA,EACT;AAGA,MAAI,KAAK,aAAa,KAAK,aAAa,WAAW,UAAa,SAAS,GAAG;AAC1E,UAAM,cAAc,KAAK,WAAW,SAAS,CAAC;AAC9C,QAAI,aAAa;AACf,YAAM,UAAU,8BAA8B,aAAa,IAAI;AAC/D,UAAI,SAAS;AACX,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAGA,SAAO,8BAA8B,MAAM,IAAI;AACjD;AAQA,SAAS,8BACP,MACA,MACoB;AACpB,QAAM,cAAc,MAAM;AAAA,IACxB,KAAK,iBAA8B,oBAAoB;AAAA,EACzD;AACA,MAAI,YAAY,WAAW,GAAG;AAC5B,WAAO;AAAA,EACT;AAEA,MAAI,UAA8B;AAClC,aAAW,cAAc,aAAa;AAEpC,UAAM,WAAW,WAAW,wBAAwB,IAAI;AACxD,QAAI,WAAW,KAAK,6BAA6B;AAC/C,gBAAU;AAAA,IACZ;AAAA,EACF;AAGA,SAAO,WAAW,YAAY,CAAC,KAAK;AACtC;AAOA,SAAS,kCACP,MACA,QACS;AACT,QAAM,UAAU,0BAA0B,IAAI;AAC9C,MAAI,CAAC,WAAW,QAAQ,aAAa,MAAM,MAAM,cAAc;AAC7D,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,QAAQ,WAAW,CAAC,KAAK;AAC5C,QAAM,kBACJ,YAAY,aAAa,KAAK,YAC1B,aACA,YAAY,YAAY,aAAa,KAAK,YAC1C,WAAW,aACX;AACN,QAAM,uBACJ,SAAS,cACT,SAAS,mBACR,gBAAgB,WACf,oBAAoB,QACpB,KAAK,SAAS,eAAe,KAC9B,KAAK,aAAa,KAAK,aACtB,sBAAsB,WACtB,WAAW,SAAS,IAAI;AAC5B,QAAM,aACJ,KAAK,aAAa,KAAK,YACnB,KAAK,WAAW,UAAU,IAC1B,KAAK,aAAa,UAAU;AAClC,QAAM,mBAAmB,WAAW,KAAK,WAAW;AAEpD,SAAO,EAAE,wBAAwB;AACnC;AA4BO,SAAS,wBACd,YACA,cACA,WACA,aACA,WAC2B;AAC3B,MAAI,CAAC,cAAc,CAAC,WAAW;AAC7B,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,oBACJ,uBAAuB,YAAY,cAAc,WAAW,WAAW,KACvE;AACF,QAAM,qBAAqB,oBAAoB,aAAa;AAC5D,QAAM,uBAAuB,oBAAoB,eAAe;AAChE,QAAM,mBAAmB,oBAAoB,YAAY;AACzD,QAAM,qBAAqB,oBAAoB,cAAc;AAE7D,QAAM,UAAmB,CAAC;AAC1B,aAAW,YAAY,WAAW;AAChC,QAAI,CAAC,SAAS,SAAS;AACrB;AAAA,IACF;AAEA,eAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF,KAAK,SAAS,QAAQ,mBAAmB,QAAQ,GAAG;AAClD,YAAM,KAAK,SAAS,QAAQ;AAC5B,UAAI,IAAI;AACN,gBAAQ,KAAK,EAAE,UAAU,KAAK,SAAS,GAAG,CAAC;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAEA,SAAO,QACJ;AAAA,IAAO,CAAC,EAAE,QAAQ,MACjB;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC,IAAI,CAAC,EAAE,UAAU,KAAK,QAAQ,OAAO;AAAA,IACpC;AAAA,IACA;AAAA,IACA,cAAc,QAAQ,eAAe;AAAA,EACvC,EAAE;AACN;AASO,SAAS,0BACd,UACM;AACN,aAAW,EAAE,UAAU,KAAK,aAAa,KAAK,UAAU;AACtD,UAAM,UAAU,SAAS,SAAS,mBAAmB,IAAI,GAAG;AAC5D,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,UAAU;AAE7B,cAAQ,UAAU,gBAAgB,IAAI,IAAI;AAAA,IAC5C,WAAW,iBAAiB,QAAQ,aAAa,SAAS,GAAG;AAE3D,UAAI,QAAQ,QAAQ,SAAS;AAC3B,gBAAQ,QAAQ,QAAQ,cAAc;AAAA,MACxC;AAEA,cAAQ,YAAY,aAAa,OAAO,CAAC,GAAG,IAAI;AAAA,IAClD,OAAO;AACL,cAAQ,WAAW,IAAI;AAAA,IACzB;AAAA,EACF;AACF;AAeO,SAAS,wBACd,UAC0C;AAC1C,QAAM,SAAS,oBAAI,IAAyC;AAE5D,aAAW,YAAY,IAAI,IAAI,SAAS,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG;AAC/D,QAAI,CAAC,SAAS,SAAS;AACrB;AAAA,IACF;AAEA,UAAM,cAAc,IAAI;AAAA,MACtB,SAAS,OAAO,CAAC,MAAM,EAAE,aAAa,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG;AAAA,IAClE;AAGA,UAAM,YAAY,CAAC,GAAG,SAAS,QAAQ,mBAAmB,QAAQ,CAAC,EAAE;AAAA,MACnE,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,IAAI,GAAG;AAAA,IACjC;AAEA,QAAI,UAAU,WAAW,GAAG;AAE1B,aAAO,IAAI,UAAU,EAAE;AAAA,IACzB,WAAW,UAAU,WAAW,GAAG;AAEjC,YAAM,CAAC,EAAE,OAAO,IAAI,UAAU,CAAC;AAC/B,YAAM,OAAO,SAAS,QAAQ,SAAS,eAAe;AACtD,UAAI,KAAK,SAAS,GAAG;AACnB,eAAO,IAAI,UAAU,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,EAEF;AAEA,SAAO;AACT;AAOO,SAAS,wBAAwB,UAAqC;AAC3E,QAAM,QAAQ,SAAS,CAAC;AACxB,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AACA,QAAM,qBAAqB,MAAM,SAAS,SAAS;AACnD,MAAI,CAAC,oBAAoB;AACvB,WAAO;AAAA,EACT;AAIA,QAAM,sBAAsB,SAAS;AAAA,IACnC,CAAC,MAAM,EAAE,aAAa,MAAM;AAAA,EAC9B,EAAE;AAEF,QAAM,qBAAqB,uBAAuB,mBAAmB,OAAO;AAE5E,MAAI,oBAAoB;AACtB,WAAO;AAAA,EACT;AAEA,SAAO,mBAAmB,IAAI,MAAM,GAAG;AACzC;AAOO,SAAS,uBAAuB,UAAqC;AAC1E,QAAM,OAAO,SAAS,SAAS,SAAS,CAAC;AACzC,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AACA,QAAM,qBAAqB,KAAK,SAAS,SAAS;AAClD,MAAI,CAAC,oBAAoB;AACvB,WAAO;AAAA,EACT;AAIA,QAAM,qBAAqB,SAAS;AAAA,IAClC,CAAC,MAAM,EAAE,aAAa,KAAK;AAAA,EAC7B,EAAE;AAEF,QAAM,qBAAqB,sBAAsB,mBAAmB,OAAO;AAE3E,MAAI,oBAAoB;AACtB,WAAO;AAAA,EACT;AAEA,SAAO,mBAAmB,IAAI,KAAK,GAAG;AACxC;AAUO,SAAS,+BACd,WACA,wBACA,qBACyC;AACzC,QAAM,cAAc,oBAAI,IAAiC;AAAA,IACvD,GAAG;AAAA,IACH,GAAG,oBAAoB,KAAK;AAAA,EAC9B,CAAC;AACD,SAAO,UAAU,KAAK,CAAC,QAAQ,YAAY,IAAI,GAAG,CAAC;AACrD;AAUO,SAAS,4BACd,WACA,WACwB;AACxB,aAAW,OAAO,WAAW;AAC3B,UAAM,oBAAoB,IAAI,SAAS;AACvC,QACE,qBACA,kBAAkB,SAAS,UAAU,UAAU,KAC/C,kBAAkB,SAAS,UAAU,SAAS,KAC9C,UAAU,SAAS,EAAE,UAAU,kBAAkB,aAAa,UAAU,IACxE;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AASO,SAAS,2BACd,WACA,WAC2C;AAC3C,MAAI,UAAU,aAAa,GAAG;AAC5B,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,UAAU,WAAW,CAAC;AACpC,QAAM,UAAU,UAAU;AAAA,IAAK,CAAC,QAC9B,IAAI,SAAS,oBAAoB,SAAS,MAAM,cAAc;AAAA,EAChE,GAAG,SAAS;AACZ,QAAM,QAAQ,UAAU;AAAA,IAAK,CAAC,QAC5B,IAAI,SAAS,oBAAoB,SAAS,MAAM,YAAY;AAAA,EAC9D,GAAG,SAAS;AAEZ,MAAI,CAAC,WAAW,CAAC,OAAO;AACtB,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,CAAC,OAAO;AACrB,WAAO,CAAC,SAAS,OAAO;AAAA,EAC1B;AACA,MAAI,CAAC,WAAW,OAAO;AACrB,WAAO,CAAC,OAAO,KAAK;AAAA,EACtB;AAEA,MAAI,CAAC,WAAW,CAAC,OAAO;AACtB,WAAO;AAAA,EACT;AAIA,MAAI,YAAY,OAAO;AACrB,WAAO;AAAA,EACT;AAGA,QAAM,aAAa,CAAC,EAClB,QAAQ,wBAAwB,KAAK,IAAI,KAAK;AAEhD,SAAO,aAAa,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,OAAO;AACxD;AAQO,SAAS,gBACd,mBACA,OACM;AACN,QAAM,OAAO,kBAAkB,QAAqB,oBAAoB;AACxE,QAAM,aAAa,4BAA4B,EAAE;AACjD,oBAAkB,MAAM;AACxB,QAAM,MAAM,WAAW,aAAa;AACpC,MAAI,KAAK;AACP,QAAI,CAAC,OAAO;AACV,cAAQ,SAAS,YAAY;AAC7B,YAAM,mBAAmB,iBAAiB;AAC1C,YAAM,SAAS,KAAK;AAAA,IACtB;AACA,QAAI;AAAA,MACF,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AACA,QAAM,gBAAgB,0BAA0B;AAClD;AAEA,SAAS,0BACP,mBACA,WACA,QACQ;AACR,QAAM,QAAQ,SAAS,YAAY;AACnC,QAAM,mBAAmB,iBAAiB;AAC1C,QAAM,OAAO,WAAW,MAAM;AAC9B,SAAO,MAAM,SAAS,EAAE;AAC1B;AAQO,SAAS,wBACd,WACA,mBACM;AACN,QAAM,QAAQ,UAAU,WAAW,CAAC;AACpC,QAAM,OAAO,kBAAkB,eAAe;AAE9C,QAAM,QAAQ,kBAAkB,SAAS,MAAM,cAAc,IACzD;AAAA,IACE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR,IACA;AACJ,QAAM,MAAM,kBAAkB,SAAS,MAAM,YAAY,IACrD;AAAA,IACE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR,IACA,KAAK;AAET,QAAM,OAAO,KAAK,IAAI,OAAO,GAAG;AAChC,QAAM,KAAK,KAAK,IAAI,OAAO,GAAG;AAC9B,QAAM,WAAW,GAAG,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;AACxD,oBAAkB,cAAc;AAEhC,QAAM,YAAY,SAAS,YAAY;AACvC,QAAM,OAAO,kBAAkB;AAC/B,MAAI,MAAM,aAAa,KAAK,WAAW;AACrC,cAAU,SAAS,MAAM,KAAK,IAAI,MAAM,SAAS,MAAM,CAAC;AAAA,EAC1D,OAAO;AACL,cAAU,SAAS,mBAAmB,CAAC;AAAA,EACzC;AACA,YAAU,SAAS,IAAI;AAEvB,kBAAgB,mBAAmB,SAAS;AAC5C,oBAAkB,cAAc,IAAI,WAAW,SAAS,EAAE,SAAS,KAAK,CAAC,CAAC;AAC5E;AAQO,SAAS,cACd,WACA,WACA,mBASA;AAIA,QAAM,aAAa,mBAAmB,cAAc,UAAU;AAC9D,QAAM,eACJ,mBAAmB,gBAAgB,UAAU;AAC/C,QAAM,YAAY,mBAAmB,aAAa,UAAU;AAC5D,QAAM,cAAc,mBAAmB,eAAe,UAAU;AAEhE,QAAM,yBAAyB,UAAU,OAAO,CAAC,QAAQ;AACvD,UAAM,qBAAqB,IAAI,SAAS;AACxC,WACE,uBACC,mBAAmB,SAAS,UAAU,KACrC,mBAAmB,SAAS,SAAS;AAAA,EAE3C,CAAC;AAGD,QAAM,qBAAqB,uBAAuB,IAAI,CAAC,SAAS;AAAA,IAC9D,UAAU;AAAA,IACV,cACE,IAAI,SAAS,UAAU,SACvB,IAAI,SAAS,oBAAoB,eACjC;AAAA,EACJ,EAAE;AAEF,QAAM,qBAAqB,uBAAuB;AAAA,IAAK,CAAC,QACtD,IAAI,SAAS,oBAAoB,SAAS,UAAU;AAAA,EACtD;AACA,QAAM,oBAAoB,uBAAuB;AAAA,IAAK,CAAC,QACrD,IAAI,SAAS,oBAAoB,SAAS,SAAS;AAAA,EACrD;AAGA,QAAM,WACJ,sBAAsB,oBAClB,CAAC,IACD;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEN,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,qBAAqB,wBAAwB,QAAQ;AAAA,IACrD;AAAA,EACF;AACF;AAUO,SAAS,6BACd,WACA,CAAC,wBAAwB,qBAAqB,GAIxC;AACN,MAAI,2BAA2B,uBAAuB;AACpD,4BAAwB,WAAW,sBAAsB;AACzD;AAAA,EACF;AAEA,QAAM,EAAE,gBAAgB,aAAa,cAAc,UAAU,IAC3D,UAAU,WAAW,CAAC;AAGxB,QAAM,YAAY,SAAS,YAAY;AACvC,YAAU,SAAS,gBAAgB,WAAW;AAC9C,YAAU;AAAA,IACR;AAAA,IACA,uBAAuB,WAAW;AAAA,EACpC;AACA,YAAU,eAAe;AAGzB,QAAM,UAAU,SAAS,YAAY;AACrC,UAAQ,SAAS,uBAAuB,CAAC;AACzC,UAAQ,OAAO,cAAc,SAAS;AACtC,UAAQ,eAAe;AAGvB,YAAU,gBAAgB;AAC1B,kBAAgB,sBAAsB;AAEtC,yBAAuB;AAAA,IACrB,IAAI,WAAW,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,EAC3C;AACA,wBAAsB;AAAA,IACpB,IAAI,WAAW,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,EAC3C;AACF;AAWO,SAAS,2BACd,wBACA,aACA;AACA,MAAI,wBAAwB;AAC1B,2BAAuB,QAAQ,SAAS,MAAM;AAC9C,2BAAuB,UAAU;AACjC;AAAA,EACF;AAEA,QAAM,oBAAoB,aAAa,SAAS;AAChD,MAAI,mBAAmB;AACrB,0BAAsB,MAAM;AAC1B,sBAAgB,iBAAiB;AAAA,IACnC,CAAC;AAAA,EACH;AACF;",
|
|
4
|
+
"sourcesContent": ["import type { RefObject } from 'react';\n\nimport * as styles from './DateTimeInput.sty.js';\nimport type { DateTimeInputRef } from './types.js';\nimport { getStratoLogger } from '../../core/sdk/sdk-logger.js';\nimport type { SpinButtonHandler } from '../spin-buttons/spin-button-group/types.js';\n\nfunction warnSelectionFailed(message: string, error: unknown): void {\n getStratoLogger('DateTimeRangePicker').warn(message, error);\n}\n\n/** @internal */\nexport function checkIfValueTypeAlignment(textNode: Node): boolean {\n // Skip hidden text nodes in DateTimeInput by checking parent value types.\n const closestDateTimeInput = textNode.parentElement?.closest(\n `.${styles.dateTimeInput}`,\n );\n const currentValueType = closestDateTimeInput?.getAttribute('data-valuetype');\n const closestValueTypeElement =\n textNode.parentElement?.closest('[data-valuetype]');\n\n // No more specific parent \u2014 likely a placeholder, separator, or other node.\n if (closestDateTimeInput === closestValueTypeElement) {\n return true;\n }\n\n const nodeValueType = closestValueTypeElement?.getAttribute('data-valuetype');\n\n return nodeValueType === currentValueType;\n}\n\n/** Helper to walk backwards through text nodes. */\nfunction previousTextNode(root: HTMLElement, node: Node): Node | null {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null);\n\n let current = walker.lastChild();\n let found = false;\n while (current) {\n if (found) {\n // Skip hidden text nodes by checking parent value types.\n if (checkIfValueTypeAlignment(current)) {\n return current;\n }\n }\n\n if (current === node) {\n found = true;\n }\n\n current = walker.previousNode();\n }\n\n return null;\n}\n\n/** Helper to walk forwards through text nodes. */\nfunction nextTextNode(root: HTMLElement, node: Node): Node | null {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null);\n\n let current = walker.nextNode();\n let found = false;\n\n while (current) {\n if (found) {\n // Skip hidden text nodes by checking parent value types.\n if (checkIfValueTypeAlignment(current)) {\n return current;\n }\n }\n if (current === node) {\n found = true;\n }\n current = walker.nextNode();\n }\n\n return null;\n}\n\n/** Helper that finds the next character position to adjust the global selection. */\nfunction findNextCharacterPosition(\n root: HTMLElement,\n node: Node,\n offset: number,\n): { node: Node; offset: number } | null {\n if (\n node.nodeType === Node.TEXT_NODE &&\n node.nodeValue &&\n offset < node.nodeValue.length &&\n checkIfValueTypeAlignment(node)\n ) {\n return { node, offset: offset + 1 };\n }\n\n // Element node: offset is a child index \u2014 walk into that child to find the first text node.\n if (node.nodeType !== Node.TEXT_NODE) {\n const childAtOffset = node.childNodes[offset];\n if (childAtOffset) {\n const walker = document.createTreeWalker(\n childAtOffset,\n NodeFilter.SHOW_TEXT,\n null,\n );\n const firstText =\n walker.firstChild() ??\n (childAtOffset.nodeType === Node.TEXT_NODE ? childAtOffset : null);\n if (\n firstText &&\n (checkIfValueTypeAlignment(firstText) ||\n getClosestContentEditable(firstText) !== null)\n ) {\n return { node: firstText, offset: 1 };\n }\n }\n\n // At element's end boundary: find the last text node inside and step to the next.\n if (offset > 0) {\n const previousChild = node.childNodes[offset - 1];\n if (previousChild) {\n const walker = document.createTreeWalker(\n previousChild,\n NodeFilter.SHOW_TEXT,\n null,\n );\n const lastText =\n walker.lastChild() ??\n (previousChild.nodeType === Node.TEXT_NODE ? previousChild : null);\n if (lastText) {\n let nextFromBoundary: Node | null = nextTextNode(root, lastText);\n while (\n nextFromBoundary !== null &&\n getClosestContentEditable(nextFromBoundary) === null\n ) {\n nextFromBoundary = nextTextNode(root, nextFromBoundary);\n }\n if (nextFromBoundary) {\n return { node: nextFromBoundary, offset: 1 };\n }\n }\n }\n }\n }\n\n // Keep separator text nodes as valid step targets for Shift+Arrow.\n let next: Node | null = nextTextNode(root, node);\n\n // Skip separator nodes between two expression textboxes for one-step crossing.\n if (\n isExpressionNode(node) &&\n next &&\n getClosestContentEditable(next) === null\n ) {\n const nextEditableNode: Node | null = nextTextNode(root, next);\n if (isExpressionNode(nextEditableNode)) {\n next = nextEditableNode;\n }\n }\n\n if (!next) {\n return null;\n }\n\n return { node: next, offset: 1 };\n}\n\n/** Helper that finds the previous character position to adjust the global selection. */\nfunction findPreviousCharacterPosition(\n root: HTMLElement,\n node: Node,\n offset: number,\n): { node: Node; offset: number } | null {\n if (\n node.nodeType === Node.TEXT_NODE &&\n offset > 0 &&\n checkIfValueTypeAlignment(node)\n ) {\n return { node, offset: offset - 1 };\n }\n\n // Element node: offset is a child index \u2014 walk into offset-1 child to find the last text node (mirrors forward logic).\n if (node.nodeType !== Node.TEXT_NODE && offset > 0) {\n const childAtOffset = node.childNodes[offset - 1];\n if (childAtOffset) {\n const walker = document.createTreeWalker(\n childAtOffset,\n NodeFilter.SHOW_TEXT,\n null,\n );\n const lastText =\n walker.lastChild() ??\n (childAtOffset.nodeType === Node.TEXT_NODE ? childAtOffset : null);\n if (\n lastText?.nodeValue &&\n (checkIfValueTypeAlignment(lastText) ||\n getClosestContentEditable(lastText) !== null)\n ) {\n return { node: lastText, offset: lastText.nodeValue.length - 1 };\n }\n }\n }\n\n // Keep separator text nodes as valid backward step targets for Shift+Arrow.\n let prev: Node | null = previousTextNode(root, node);\n if (\n isExpressionNode(node) &&\n prev &&\n getClosestContentEditable(prev) === null\n ) {\n const previousEditableNode: Node | null = previousTextNode(root, prev);\n if (isExpressionNode(previousEditableNode)) {\n prev = previousEditableNode;\n }\n }\n if (!prev || prev?.nodeValue === null) {\n return null;\n }\n\n return { node: prev, offset: prev.nodeValue.length - 1 };\n}\n\n/**\n * Empty spin buttons render their placeholder via CSS `:empty::before`, so they\n * have no text-node child. We still want them inside selections produced by\n * Ctrl/Cmd+A so the copy handler can substitute the placeholder text.\n */\nfunction isEmptyPlaceholderSpinButton(node: Node): boolean {\n return (\n node instanceof Element &&\n node.getAttribute('role') === 'spinbutton' &&\n node.childNodes.length === 0\n );\n}\n\n/** Visits text nodes plus empty placeholder spin-button elements in document order. */\nfunction createSelectionPositionWalker(root: HTMLElement): TreeWalker {\n return document.createTreeWalker(\n root,\n NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT,\n {\n acceptNode: (node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n return NodeFilter.FILTER_ACCEPT;\n }\n return isEmptyPlaceholderSpinButton(node)\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_SKIP;\n },\n },\n );\n}\n\n/** Helper to find the first selection-anchor position to apply selection. */\nfunction findFirstCharacterPosition(\n root: HTMLElement,\n): { node: Node; offset: number } | null {\n const walker = createSelectionPositionWalker(root);\n let current = walker.firstChild();\n while (current !== null) {\n // Skip hidden nodes (e.g. relative date expression values when in absolute mode).\n if (checkIfValueTypeAlignment(current)) {\n return { node: current, offset: 0 };\n }\n current = walker.nextNode();\n }\n return null;\n}\n\n/** Helper to find the last selection-anchor position to apply selection. */\nfunction findLastCharacterPosition(\n root: HTMLElement,\n): { node: Node; offset: number } | null {\n const walker = createSelectionPositionWalker(root);\n let current = walker.lastChild();\n while (current !== null) {\n // Skip hidden nodes (e.g. relative date expression values when in absolute mode).\n if (checkIfValueTypeAlignment(current)) {\n const offset =\n current.nodeType === Node.TEXT_NODE\n ? current.nodeValue?.length ?? 0\n : 0;\n return { node: current, offset };\n }\n current = walker.previousNode();\n }\n return null;\n}\n\nfunction compareSelectionPoints(\n firstNode: Node,\n firstOffset: number,\n secondNode: Node,\n secondOffset: number,\n): number {\n if (firstNode === secondNode) {\n return firstOffset - secondOffset;\n }\n\n // Guard: compareBoundaryPoints throws WrongDocumentError when nodes belong\n // to different document trees (e.g. a stale detached text node that the\n // browser's Selection still references after a DOM mutation).\n if (firstNode.getRootNode() !== secondNode.getRootNode()) {\n return 0;\n }\n\n const firstRange = document.createRange();\n firstRange.setStart(firstNode, firstOffset);\n firstRange.collapse(true);\n\n const secondRange = document.createRange();\n secondRange.setStart(secondNode, secondOffset);\n secondRange.collapse(true);\n\n try {\n return firstRange.compareBoundaryPoints(Range.START_TO_START, secondRange);\n } catch {\n // compareBoundaryPoints throws a WrongDocumentError when one of the nodes\n // is detached from the document (its root is itself, not `document`).\n // Fall back to compareDocumentPosition which works with detached nodes.\n const pos = firstNode.compareDocumentPosition(secondNode);\n if (pos & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1;\n }\n if (pos & Node.DOCUMENT_POSITION_PRECEDING) {\n return 1;\n }\n return 0;\n }\n}\n\nfunction selectionOverlapsSpinButton(\n selectionStartNode: Node,\n selectionStartOffset: number,\n selectionEndNode: Node,\n selectionEndOffset: number,\n spinButton: HTMLElement,\n): boolean {\n const spinButtonStart = findFirstCharacterPosition(spinButton);\n const spinButtonEnd = findLastCharacterPosition(spinButton);\n\n if (!spinButtonStart || !spinButtonEnd) {\n return false;\n }\n\n return (\n compareSelectionPoints(\n selectionStartNode,\n selectionStartOffset,\n spinButtonEnd.node,\n spinButtonEnd.offset,\n ) < 0 &&\n compareSelectionPoints(\n selectionEndNode,\n selectionEndOffset,\n spinButtonStart.node,\n spinButtonStart.offset,\n ) > 0\n );\n}\n\n/**\n * Restores [contenteditable] and tabindex to all elements inside `root` that\n * had those attributes temporarily stripped (marked with [data-wascontenteditable]\n * / [data-wastabindex]).\n */\nfunction restoreContentEditableAttributes(root: HTMLElement): void {\n for (const editable of root.querySelectorAll<HTMLElement>(\n '[data-wascontenteditable]',\n )) {\n const previousValue = editable.getAttribute('data-wascontenteditable');\n if (previousValue !== null) {\n editable.setAttribute('contenteditable', previousValue);\n }\n editable.removeAttribute('data-wascontenteditable');\n\n const wasTabIndex = editable.getAttribute('data-wastabindex');\n if (wasTabIndex !== null) {\n editable.setAttribute('tabindex', wasTabIndex);\n editable.removeAttribute('data-wastabindex');\n }\n }\n // Clear drag-selected marks when CE is restored \u2014 :focus or native selection takes over.\n for (const el of root.querySelectorAll<HTMLElement>('[data-drag-selected]')) {\n el.removeAttribute('data-drag-selected');\n }\n}\n\n/**\n * Marks elements intersected by `range` with [data-drag-selected] for element-level accent styling.\n * Textboxes are excluded during live drags (native ::selection shows char-level highlight) and\n * included only for snapped post-mouseup ranges when `includeTextboxes` is true.\n * Element-level styling is used because Safari doesn't resolve CSS vars inside ::selection\n * on non-contenteditable elements.\n */\nfunction markDragSelectedElements(\n rootElement: HTMLElement,\n range: Range,\n { includeTextboxes = false }: { includeTextboxes?: boolean } = {},\n): void {\n for (const el of rootElement.querySelectorAll<HTMLElement>(\n '[data-drag-selected]',\n )) {\n el.removeAttribute('data-drag-selected');\n }\n\n // (a) Direct children of SpinButtonGroups: spinbuttons + separators\n for (const group of rootElement.querySelectorAll(\n '[data-valuetype=\"iso8601\"]',\n )) {\n for (const child of group.children) {\n if (range.intersectsNode(child)) {\n child.setAttribute('data-drag-selected', '');\n }\n }\n }\n\n // (b) Expression textbox inputs \u2014 only for snapped post-mouseup ranges\n if (includeTextboxes) {\n for (const textbox of rootElement.querySelectorAll('[role=\"textbox\"]')) {\n if (range.intersectsNode(textbox)) {\n textbox.setAttribute('data-drag-selected', '');\n }\n }\n }\n}\n\n// Tracks pending CE-restore AbortControllers per picker root.\n// CE is stripped during multi-element drags (Safari clips cross-element addRange to the active CE host)\n// and restored on the next real interaction. WeakMap avoids retaining roots after unmount.\nconst pendingRestoreSignals = new WeakMap<HTMLElement, AbortController>();\n\n/**\n * Endpoints captured by `deferContentEditableRestore` before re-attaching CE.\n * Safari clips the live selection to the active CE host after CE re-attachment,\n * so a bubble-phase Backspace/Delete handler can no longer see the full\n * multi-element range. Consumers read these to feed `planBulkClear`.\n * @internal\n */\nexport type SelectionEndpoints = {\n anchorNode: Node;\n anchorOffset: number;\n focusNode: Node;\n focusOffset: number;\n};\nconst lastPreRestoreEndpoints = new WeakMap<HTMLElement, SelectionEndpoints>();\n\n/**\n * Returns and clears the multi-element selection endpoints captured for `root`\n * by `deferContentEditableRestore` just before the most recent CE re-attach.\n * Returns `undefined` when no stash exists (no preceding multi-element\n * selection, or already consumed).\n * @internal\n */\nexport function consumePreRestoreEndpoints(\n root: HTMLElement,\n): SelectionEndpoints | undefined {\n const stash = lastPreRestoreEndpoints.get(root);\n lastPreRestoreEndpoints.delete(root);\n return stash;\n}\n\n// Returns true when the keyboard event should keep CE stripped (selection extension / copy).\nfunction shouldBypassRestore(e: KeyboardEvent): boolean {\n if (['Meta', 'Control', 'Alt', 'Shift'].includes(e.key)) {\n return true;\n }\n if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === 'c') {\n return true;\n }\n // Shift+Arrow/Home/End extends the current selection \u2014 keep CE stripped\n // so each subsequent step can cross spinbutton boundaries in Safari.\n return (\n e.shiftKey &&\n ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(\n e.key,\n )\n );\n}\n\n// Plain ArrowLeft/Right with a live multi-element selection: collapse to the directional\n// boundary before CE is restored. Firefox's default would shrink the selection one step at\n// a time (mirror of Shift+Arrow extension), forcing the user to press Arrow N times to\n// \"use up\" a previous Shift+Arrow selection of N steps before the cursor moves.\n// Chrome/Safari already collapse natively; this normalises Firefox.\n// Done here (capture phase) because Firefox discards cross-element selections as soon as\n// [contenteditable] is added back. Returns true when the event was consumed.\nfunction tryCollapseArrow(e: KeyboardEvent, root: HTMLElement): boolean {\n if (\n e.shiftKey ||\n e.metaKey ||\n e.ctrlKey ||\n e.altKey ||\n (e.key !== 'ArrowLeft' && e.key !== 'ArrowRight')\n ) {\n return false;\n }\n const collapsed = collapseMultiElementSelection(\n root,\n e.key === 'ArrowLeft' ? 'left' : 'right',\n );\n if (collapsed) {\n e.preventDefault();\n // Stop the event so the boundary spinbutton's own keydown handler\n // doesn't immediately step further (handleArrowLeft would see\n // selection.start === 0 after onFocus \u2192 selectAll and move past it).\n e.stopPropagation();\n }\n return collapsed;\n}\n\n/**\n * Reads but does not consume the pre-restore endpoints for `root`.\n * Use when you need to inspect the stash without preventing a later consumer\n * (e.g. planBulkClear via consumePreRestoreEndpoints) from reading it.\n * @internal\n */\nexport function peekPreRestoreEndpoints(\n root: HTMLElement,\n): SelectionEndpoints | undefined {\n return lastPreRestoreEndpoints.get(root);\n}\n\n/**\n * Restores [contenteditable] on the next real user interaction (mousedown or non-modifier keydown).\n * Listens on `document` (not rootElement) so clicks outside the picker still trigger the restore.\n * Modifier-only keys and Cmd/Ctrl+C are skipped to allow selection extension and copy.\n */\nfunction deferContentEditableRestore(root: HTMLElement): void {\n // Cancel any pending restore for this root before registering a new one.\n pendingRestoreSignals.get(root)?.abort();\n\n const restoreSignal = new AbortController();\n pendingRestoreSignals.set(root, restoreSignal);\n\n function handler(e: Event): void {\n if (e instanceof KeyboardEvent) {\n if (shouldBypassRestore(e)) {\n return;\n }\n if (tryCollapseArrow(e, root)) {\n return;\n }\n }\n\n // Firefox discards cross-element selections the moment [contenteditable]\n // is re-added. Snapshot the current selection endpoints before restoring\n // CE, then recreate the range via setBaseAndExtent so that subsequent\n // bubble-phase handlers (Backspace/Delete bulkClear, Cmd+X, type-to-replace)\n // still see the multi-element selection. Same trick used at mouseup time\n // in removeContentEditable.\n const selection = globalThis.getSelection();\n const anchorNode = selection?.anchorNode ?? null;\n const anchorOffset = selection?.anchorOffset ?? 0;\n const focusNode = selection?.focusNode ?? null;\n const focusOffset = selection?.focusOffset ?? 0;\n const hasMultiElementSelection =\n selection !== null &&\n anchorNode !== null &&\n focusNode !== null &&\n anchorNode !== focusNode &&\n selection.toString().length > 0;\n\n // Stash the pre-restore endpoints for bubble-phase consumers (Safari only\n // truly needs them, but stashing unconditionally keeps the code path\n // browser-agnostic). Bubble handlers fall back to the live selection when\n // no stash is present.\n // Only stashes keyboard events: a click collapses the selection before Backspace fires,\n // making any stash set during mousedown stale and causing bulk-clear to clear the wrong fields.\n if (\n hasMultiElementSelection &&\n anchorNode &&\n focusNode &&\n e instanceof KeyboardEvent\n ) {\n lastPreRestoreEndpoints.set(root, {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n });\n }\n\n restoreContentEditableAttributes(root);\n pendingRestoreSignals.delete(root);\n restoreSignal.abort();\n\n if (hasMultiElementSelection && anchorNode && focusNode) {\n try {\n // After CE is restored, Safari clips setBaseAndExtent to the anchor's\n // editing host. When that host is an empty placeholder spinbutton (no\n // text children), the result is a collapsed selection \u2014 causing the\n // bubble-phase Cmd+X / Delete handler to bail out via isCollapsed.\n // The stash already holds the correct endpoints for bulkClear; this\n // setBaseAndExtent call is purely for maintaining a visible, non-\n // collapsed highlight. Resolve empty-element endpoints to real text\n // positions so Safari always produces a non-collapsed visual selection.\n const anchorIsEmpty = isEmptyPlaceholderSpinButton(anchorNode);\n const focusIsEmpty = isEmptyPlaceholderSpinButton(focusNode);\n\n if (\n anchorIsEmpty &&\n !focusIsEmpty &&\n focusNode.nodeType === Node.TEXT_NODE\n ) {\n // Anchor is in an empty spinbutton: show the focus spinbutton highlighted.\n selection?.setBaseAndExtent(focusNode, 0, focusNode, focusOffset);\n } else if (\n focusIsEmpty &&\n !anchorIsEmpty &&\n anchorNode.nodeType === Node.TEXT_NODE\n ) {\n // Focus is in an empty spinbutton: show the anchor spinbutton highlighted.\n const anchorTextLength =\n (anchorNode as Text).nodeValue?.length ?? anchorOffset;\n selection?.setBaseAndExtent(\n anchorNode,\n anchorOffset,\n anchorNode,\n anchorTextLength,\n );\n } else if (!anchorIsEmpty && !focusIsEmpty) {\n selection?.setBaseAndExtent(\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n );\n }\n // Both endpoints empty: no meaningful text to highlight, skip the call.\n } catch (error) {\n warnSelectionFailed(\n 'setBaseAndExtent failed when restoring selection after CE re-attach',\n error,\n );\n }\n }\n }\n document.addEventListener('mousedown', handler, {\n signal: restoreSignal.signal,\n capture: true,\n });\n document.addEventListener('keydown', handler, {\n signal: restoreSignal.signal,\n capture: true,\n });\n}\n\n/**\n * Strips [contenteditable] to allow cross-element selection, then restores it on the next `eventType`.\n * `initialAnchorSpinButton` is the spinbutton resolved from bounding-box geometry before CE is stripped \u2014\n * used when Safari misreports anchorNode as a container element on far-right clicks.\n * @internal\n */\nexport function removeContentEditable(\n rootElement: HTMLElement,\n removeEventTarget: Document | HTMLElement,\n eventType: 'mouseup' | 'keyup',\n customRemovalFn?: (event: Event, hasMultiElementSelection: boolean) => void,\n initialAnchorSpinButton?: HTMLElement | null,\n): void {\n // Guard against focus-side effects (e.g. spinbutton onFocus selectAll)\n // while cross-element selection is restored.\n rootElement.setAttribute('data-restoring-selection', '');\n\n const contentEditables =\n rootElement.querySelectorAll<HTMLElement>('[contenteditable]');\n for (const editable of contentEditables) {\n const previousValue = editable.getAttribute('contenteditable') ?? undefined;\n editable.removeAttribute('contenteditable');\n editable.dataset.wascontenteditable = previousValue;\n\n // Also strip tabindex to prevent auto-focus on mousedown during drag.\n if (editable.hasAttribute('tabindex')) {\n editable.dataset.wastabindex = editable.getAttribute('tabindex') ?? '';\n editable.removeAttribute('tabindex');\n }\n }\n\n const signal = new AbortController();\n\n // Safari reports the container element (not a text node) as anchorNode when the click lands in empty\n // space. Correct the drag anchor on mousemove using the pre-resolved spinbutton's last char position.\n // Subsequent moves no-op once anchorNode becomes a text node; Chrome/Firefox already report text nodes.\n if (initialAnchorSpinButton) {\n const anchorPos = findLastCharacterPosition(initialAnchorSpinButton);\n if (anchorPos) {\n rootElement.addEventListener(\n 'mousemove',\n () => {\n const sel = globalThis.getSelection();\n if (!sel || !sel.anchorNode) {\n return;\n }\n // Already corrected.\n if (sel.anchorNode.nodeType === Node.TEXT_NODE) {\n return;\n }\n const focusNode = sel.focusNode;\n const focusOffset = sel.focusOffset ?? 0;\n if (!focusNode) {\n return;\n }\n const anchorBeforeFocus =\n compareSelectionPoints(\n anchorPos.node,\n anchorPos.offset,\n focusNode,\n focusOffset,\n ) <= 0;\n try {\n sel.removeAllRanges();\n\n if (anchorBeforeFocus) {\n sel.setBaseAndExtent(\n anchorPos.node,\n anchorPos.offset,\n focusNode,\n focusOffset,\n );\n } else {\n sel.setBaseAndExtent(\n focusNode,\n focusOffset,\n anchorPos.node,\n anchorPos.offset,\n );\n }\n } catch (error) {\n warnSelectionFailed(\n 'selection anchor correction during drag failed',\n error,\n );\n }\n },\n { signal: signal.signal, capture: true },\n );\n }\n }\n\n // Update [data-drag-selected] on mousemove for element-level accent styling (Safari ::selection workaround).\n rootElement.addEventListener(\n 'mousemove',\n () => {\n const sel = globalThis.getSelection();\n if (!sel || sel.rangeCount === 0) {\n return;\n }\n const range = sel.getRangeAt(0);\n markDragSelectedElements(rootElement, range);\n },\n { signal: signal.signal, capture: true },\n );\n\n removeEventTarget.addEventListener(\n eventType,\n (event: Event) => {\n // Snapshot before restoring CE \u2014 Firefox discards cross-element selections when CE is re-added.\n const selectionBeforeRestore = globalThis.getSelection();\n const snapshotAnchorNode = selectionBeforeRestore?.anchorNode ?? null;\n const snapshotAnchorOffset = selectionBeforeRestore?.anchorOffset ?? 0;\n const snapshotFocusNode = selectionBeforeRestore?.focusNode ?? null;\n const snapshotFocusOffset = selectionBeforeRestore?.focusOffset ?? 0;\n\n const hasMultiElementSelection =\n selectionBeforeRestore !== null &&\n selectionBeforeRestore.toString().length > 0 &&\n (snapshotAnchorNode !== snapshotFocusNode ||\n (snapshotAnchorNode !== null &&\n snapshotAnchorNode === snapshotFocusNode &&\n snapshotAnchorOffset !== snapshotFocusOffset &&\n snapshotAnchorNode.nodeType === Node.ELEMENT_NODE));\n\n if (hasMultiElementSelection && snapshotAnchorNode && snapshotFocusNode) {\n // Multi-element path: keep CE stripped so Safari's setBaseAndExtent isn't clipped to the active\n // editing host. CE is restored lazily on the next real user interaction.\n\n // Safari may report a container element as anchorNode on empty-space clicks; use initialAnchorSpinButton instead.\n const anchorIsElementNode =\n snapshotAnchorNode.nodeType !== Node.TEXT_NODE;\n\n // Resolve anchor spinbutton: element-node \u2192 use precomputed; text in SB \u2192 resolve; text outside \u2192 null.\n const anchorNodeWasInContent = anchorIsElementNode\n ? initialAnchorSpinButton !== null\n : isEndpointInsideSpinButtonContent(\n snapshotAnchorNode,\n snapshotAnchorOffset,\n );\n\n let anchorSpinButton: HTMLElement | null;\n if (anchorIsElementNode) {\n anchorSpinButton = initialAnchorSpinButton ?? null;\n } else if (anchorNodeWasInContent) {\n anchorSpinButton = resolveSpinButton(\n snapshotAnchorNode,\n rootElement,\n snapshotAnchorOffset,\n );\n } else {\n anchorSpinButton = null;\n }\n\n // When anchor is an element node, derive a text-node position for direction detection.\n let anchorNodeForComparison: Node = snapshotAnchorNode;\n let anchorOffsetForComparison: number = snapshotAnchorOffset;\n if (anchorIsElementNode && anchorSpinButton) {\n const lastPos = findLastCharacterPosition(anchorSpinButton);\n if (lastPos) {\n anchorNodeForComparison = lastPos.node;\n anchorOffsetForComparison = lastPos.offset;\n }\n }\n\n const focusNodeWasInContent = isEndpointInsideSpinButtonContent(\n snapshotFocusNode,\n snapshotFocusOffset,\n );\n const focusSpinButton =\n focusNodeWasInContent || snapshotFocusNode.nodeType !== Node.TEXT_NODE\n ? resolveSpinButton(\n snapshotFocusNode,\n rootElement,\n snapshotFocusOffset,\n )\n : null;\n\n const anchorBeforeFocus =\n compareSelectionPoints(\n anchorNodeForComparison,\n anchorOffsetForComparison,\n snapshotFocusNode,\n snapshotFocusOffset,\n ) <= 0;\n\n let anchorPos: { node: Node; offset: number } | null;\n if (anchorSpinButton?.getAttribute('role') === 'spinbutton') {\n anchorPos = anchorBeforeFocus\n ? findFirstCharacterPosition(anchorSpinButton)\n : findLastCharacterPosition(anchorSpinButton);\n } else {\n anchorPos = {\n node: anchorNodeForComparison,\n offset: anchorOffsetForComparison,\n };\n }\n let focusPos: { node: Node; offset: number } | null;\n if (focusSpinButton?.getAttribute('role') === 'spinbutton') {\n focusPos = anchorBeforeFocus\n ? findLastCharacterPosition(focusSpinButton)\n : findFirstCharacterPosition(focusSpinButton);\n } else {\n focusPos = { node: snapshotFocusNode, offset: snapshotFocusOffset };\n }\n\n if (anchorPos && focusPos) {\n try {\n const range = document.createRange();\n if (anchorBeforeFocus) {\n range.setStart(anchorPos.node, anchorPos.offset);\n range.setEnd(focusPos.node, focusPos.offset);\n } else {\n range.setStart(focusPos.node, focusPos.offset);\n range.setEnd(anchorPos.node, anchorPos.offset);\n }\n const sel = globalThis.getSelection();\n sel?.setBaseAndExtent(\n anchorPos.node,\n anchorPos.offset,\n focusPos.node,\n focusPos.offset,\n );\n // Mark intersected elements for accent styling. Exclude textboxes \u2014 they need char-level selection.\n markDragSelectedElements(rootElement, range);\n } catch (error) {\n warnSelectionFailed(\n 'setBaseAndExtent failed when restoring drag selection',\n error,\n );\n }\n }\n\n customRemovalFn?.(event, hasMultiElementSelection);\n rootElement.removeAttribute('data-restoring-selection');\n\n // Restore CE on the next user interaction (mousedown / non-modifier keydown).\n deferContentEditableRestore(rootElement);\n } else {\n // Single-element path: restore CE immediately \u2014 both endpoints share the same editing host.\n restoreContentEditableAttributes(rootElement);\n\n if (snapshotAnchorNode && snapshotFocusNode) {\n try {\n globalThis\n .getSelection()\n ?.setBaseAndExtent(\n snapshotAnchorNode,\n snapshotAnchorOffset,\n snapshotFocusNode,\n snapshotFocusOffset,\n );\n } catch (error) {\n warnSelectionFailed(\n 'setBaseAndExtent failed when restoring single-element selection',\n error,\n );\n }\n }\n\n customRemovalFn?.(event, hasMultiElementSelection);\n rootElement.removeAttribute('data-restoring-selection');\n }\n\n signal.abort();\n },\n { signal: signal.signal },\n );\n}\n\n/**\n * For Shift+Arrow on absolute spinbuttons, snaps the focus endpoint to a spinbutton boundary\n * rather than stepping character by character (intra-spinbutton steps are visually silent).\n * Growing forward/backward includes the adjacent spinbutton fully; shrinking excludes the current one.\n * Returns null when focus is outside a spinbutton, falling through to char-by-char logic.\n */\nfunction findSpinButtonSnappedPosition(\n root: HTMLElement,\n anchorNode: Node,\n anchorOffset: number,\n focusNode: Node,\n focusOffset: number,\n direction: 'forward' | 'backward',\n): { node: Node; offset: number } | null {\n let spinButton: HTMLElement | null = null;\n\n if (focusNode.nodeType === Node.TEXT_NODE) {\n spinButton =\n (focusNode as Text).parentElement?.closest<HTMLElement>(\n '[role=\"spinbutton\"]',\n ) ?? null;\n } else if (\n focusNode instanceof HTMLElement &&\n focusNode.getAttribute('role') === 'spinbutton'\n ) {\n // selectNodeContents(el) sets focusNode to the element itself.\n spinButton = focusNode;\n }\n\n if (!spinButton) {\n return null;\n }\n\n const allSBs = Array.from(\n root.querySelectorAll<HTMLElement>('[role=\"spinbutton\"]'),\n );\n const idx = allSBs.indexOf(spinButton);\n\n // Determine whether the selection is growing or shrinking.\n const focusIsBeforeAnchor =\n compareSelectionPoints(focusNode, focusOffset, anchorNode, anchorOffset) <\n 0;\n const isGrowing =\n direction === 'forward' ? !focusIsBeforeAnchor : focusIsBeforeAnchor;\n\n if (direction === 'forward') {\n const nextSB = allSBs[idx + 1] ?? null;\n if (!nextSB) {\n return null;\n }\n // Growing: snap to far end of next SB. Shrinking: snap to near end (exclude current).\n // Empty placeholder spinbuttons have no text-node children, so findLastCharacterPosition\n // returns null for them. Fall back to the element itself at offset 0, which is a valid\n // and stable selection position for setBaseAndExtent.\n if (isGrowing) {\n return findLastCharacterPosition(nextSB) ?? { node: nextSB, offset: 0 };\n }\n return findFirstCharacterPosition(nextSB) ?? { node: nextSB, offset: 0 };\n }\n\n const prevSB = allSBs[idx - 1] ?? null;\n if (!prevSB) {\n return null;\n }\n if (isGrowing) {\n return findFirstCharacterPosition(prevSB) ?? { node: prevSB, offset: 0 };\n }\n return findLastCharacterPosition(prevSB) ?? { node: prevSB, offset: 0 };\n}\n\nexport function extendSelection(\n key: 'ArrowLeft' | 'ArrowRight' | 'Home' | 'End',\n): void {\n const selection = globalThis.getSelection();\n if (selection === null) {\n return;\n }\n\n // Safari does not always register a selection anchor when selectAll() calls\n // addRange() with a collapsed range on an empty (placeholder) spinbutton\n // element that has no text-node children. Recover by treating the focused\n // element itself as both anchor and focus so Shift+Arrow can still start\n // a selection from that spinbutton.\n const activeElement = globalThis.document?.activeElement;\n const hasMissingEndpoints =\n selection.anchorNode === null || selection.focusNode === null;\n if (\n hasMissingEndpoints &&\n isEmptyPlaceholderSpinButton(activeElement as Node)\n ) {\n selection.setBaseAndExtent(\n activeElement as Node,\n 0,\n activeElement as Node,\n 0,\n );\n }\n\n if (\n selection.anchorNode === null ||\n selection.focusNode === null ||\n selection.rangeCount < 1\n ) {\n return;\n }\n\n const anchorNode = selection.anchorNode;\n const anchorOffset = selection.anchorOffset;\n const focusNode = selection.focusNode;\n const focusOffset = selection.focusOffset;\n\n let nextPos: { node: Node; offset: number } | null = null;\n\n const root =\n focusNode.nodeType === Node.TEXT_NODE\n ? (focusNode as Text).parentElement?.closest<HTMLDivElement>(\n '.strato-inputgroup',\n )\n : focusNode instanceof HTMLElement\n ? focusNode.closest<HTMLDivElement>('.strato-inputgroup')\n : null;\n if (root === null || root === undefined) {\n return;\n }\n\n if (key === 'ArrowLeft') {\n nextPos =\n findSpinButtonSnappedPosition(\n root,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n 'backward',\n ) ?? findPreviousCharacterPosition(root, focusNode, focusOffset);\n } else if (key === 'ArrowRight') {\n nextPos =\n findSpinButtonSnappedPosition(\n root,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n 'forward',\n ) ?? findNextCharacterPosition(root, focusNode, focusOffset);\n } else if (key === 'Home') {\n nextPos = findFirstCharacterPosition(root);\n } else if (key === 'End') {\n nextPos = findLastCharacterPosition(root);\n }\n\n // Skip the \"\u2192\" separator (outside any CE) so Shift+Arrow crosses it in one keypress.\n let crossedSeparator = false;\n while (nextPos && getClosestContentEditable(nextPos.node) === null) {\n crossedSeparator = true;\n const skipped =\n key === 'ArrowLeft' || key === 'Home'\n ? findPreviousCharacterPosition(root, nextPos.node, nextPos.offset)\n : findNextCharacterPosition(root, nextPos.node, nextPos.offset);\n if (!skipped) {\n break;\n }\n nextPos = skipped;\n }\n\n // After crossing a separator, snap to the boundary of the landing text node rather\n // than stepping one character into it (which is what findNext/PreviousCharacterPosition does).\n if (crossedSeparator && nextPos?.node.nodeType === Node.TEXT_NODE) {\n if (key === 'ArrowRight') {\n nextPos = { node: nextPos.node, offset: 0 };\n } else if (key === 'ArrowLeft') {\n nextPos = {\n node: nextPos.node,\n offset: nextPos.node.nodeValue?.length ?? 0,\n };\n }\n }\n\n if (!nextPos) {\n return;\n }\n\n // SPIN_BUTTON_SELECTOR covers both live [contenteditable] and temporarily stripped [data-wascontenteditable].\n const spinButtonFromNode = (node: Node): HTMLElement | null => {\n const el =\n node.nodeType === Node.TEXT_NODE\n ? (node as Text).parentElement\n : node instanceof HTMLElement\n ? node\n : null;\n const sb = el?.closest<HTMLElement>(SPIN_BUTTON_SELECTOR) ?? null;\n return sb?.getAttribute('role') === 'spinbutton' ? sb : null;\n };\n\n const anchorSB = spinButtonFromNode(anchorNode);\n\n // Strip CE when the new focus crosses into a different editing host \u2014 Safari clips setBaseAndExtent to the active one.\n const anchorCE = getClosestContentEditable(anchorNode);\n const nextCE = getClosestContentEditable(nextPos.node);\n const crossesBoundary = anchorCE !== null && anchorCE !== nextCE;\n\n if (crossesBoundary) {\n // selectNodeContents sets anchorNode to the element itself; resolve to a text-node position instead.\n // For empty placeholder spinbuttons (no children), skip re-resolution \u2014 the element at offset 0 is\n // already the correct and stable anchor. Re-resolving would return the element itself anyway and\n // would cause the selection to appear stuck across successive Shift+Arrow presses.\n let resolvedAnchorNode = anchorNode;\n let resolvedAnchorOffset = anchorOffset;\n const anchorSpinButtonHasContent =\n anchorSB !== null && anchorSB.childNodes.length > 0;\n if (anchorNode.nodeType !== Node.TEXT_NODE && anchorSpinButtonHasContent) {\n // Use the spinbutton boundary that covers the full anchor SB in the extension direction.\n const anchorBeforeFocus =\n compareSelectionPoints(\n anchorNode,\n anchorOffset,\n nextPos.node,\n nextPos.offset,\n ) <= 0;\n const resolved = anchorBeforeFocus\n ? findFirstCharacterPosition(anchorSB)\n : findLastCharacterPosition(anchorSB);\n if (resolved) {\n resolvedAnchorNode = resolved.node;\n resolvedAnchorOffset = resolved.offset;\n }\n }\n\n // Strip CE so Safari's addRange is not clipped to the editing host.\n root.setAttribute('data-restoring-selection', '');\n for (const editable of root.querySelectorAll<HTMLElement>(\n '[contenteditable]',\n )) {\n const prev = editable.getAttribute('contenteditable') ?? '';\n editable.removeAttribute('contenteditable');\n editable.dataset.wascontenteditable = prev;\n }\n\n try {\n // setBaseAndExtent preserves anchor/focus direction (addRange would flip them, reversing all subsequent steps).\n selection.setBaseAndExtent(\n resolvedAnchorNode,\n resolvedAnchorOffset,\n nextPos.node,\n nextPos.offset,\n );\n // Build a document-ordered Range for markDragSelectedElements.\n const anchorBeforeFocus =\n compareSelectionPoints(\n resolvedAnchorNode,\n resolvedAnchorOffset,\n nextPos.node,\n nextPos.offset,\n ) <= 0;\n const range = document.createRange();\n if (anchorBeforeFocus) {\n range.setStart(resolvedAnchorNode, resolvedAnchorOffset);\n range.setEnd(nextPos.node, nextPos.offset);\n } else {\n range.setStart(nextPos.node, nextPos.offset);\n range.setEnd(resolvedAnchorNode, resolvedAnchorOffset);\n }\n markDragSelectedElements(root, range);\n } catch (error) {\n warnSelectionFailed(\n 'setBaseAndExtent failed when extending cross-boundary selection',\n error,\n );\n }\n\n root.removeAttribute('data-restoring-selection');\n deferContentEditableRestore(root);\n } else {\n // Same editing host: setBaseAndExtent is safe. Guard prevents Chrome's implicit focus from triggering selectAll().\n root.setAttribute('data-restoring-selection', '');\n try {\n selection.setBaseAndExtent(\n anchorNode,\n anchorOffset,\n nextPos.node,\n nextPos.offset,\n );\n } catch (error) {\n warnSelectionFailed(\n 'setBaseAndExtent failed when extending selection',\n error,\n );\n }\n root.removeAttribute('data-restoring-selection');\n // Refresh [data-drag-selected] to clear stale marks when the selection shrinks.\n // Build the range from known positions rather than re-querying getSelection() to work with mocked Selection in tests.\n const updatedRange = new Range();\n const cmp = anchorNode.compareDocumentPosition(nextPos.node);\n if (\n cmp & Node.DOCUMENT_POSITION_FOLLOWING ||\n (cmp === 0 && anchorOffset <= nextPos.offset)\n ) {\n updatedRange.setStart(anchorNode, anchorOffset);\n updatedRange.setEnd(nextPos.node, nextPos.offset);\n } else {\n updatedRange.setStart(nextPos.node, nextPos.offset);\n updatedRange.setEnd(anchorNode, anchorOffset);\n }\n markDragSelectedElements(root, updatedRange);\n }\n // [data-shift-selection] suppresses :focus background while a Shift+Arrow selection is active; cleared in onFocus.\n root.setAttribute('data-shift-selection', '');\n}\n\n/**\n * Helper function that allows to expand the selection to the entire range.\n * @internal\n */\nexport function extendSelectionToAll(): void {\n const selection = globalThis.getSelection();\n if (\n selection === null ||\n selection.focusNode === null ||\n selection.rangeCount < 1\n ) {\n return;\n }\n\n const root =\n selection.focusNode.parentElement?.closest<HTMLDivElement>(\n '.strato-inputgroup',\n );\n if (root === null || root === undefined) {\n return;\n }\n\n const firstPosition = findFirstCharacterPosition(root);\n const lastPosition = findLastCharacterPosition(root);\n\n if (!firstPosition || !lastPosition) {\n return;\n }\n\n // Strip CE so Safari cannot clip addRange to the focused editing host (same pattern as removeContentEditable).\n root.setAttribute('data-restoring-selection', '');\n for (const editable of root.querySelectorAll<HTMLElement>(\n '[contenteditable]',\n )) {\n const prev = editable.getAttribute('contenteditable') ?? '';\n editable.removeAttribute('contenteditable');\n editable.dataset.wascontenteditable = prev;\n }\n\n try {\n const range = document.createRange();\n range.setStart(firstPosition.node, firstPosition.offset);\n range.setEnd(lastPosition.node, lastPosition.offset);\n selection.setBaseAndExtent(\n firstPosition.node,\n firstPosition.offset,\n lastPosition.node,\n lastPosition.offset,\n );\n // Mark all elements in the full range for element-level accent styling.\n markDragSelectedElements(root, range, { includeTextboxes: true });\n } catch (error) {\n warnSelectionFailed(\n 'setBaseAndExtent failed when extending selection to all',\n error,\n );\n }\n\n root.removeAttribute('data-restoring-selection');\n // Move focus to the container so that subsequent plain ArrowUp/ArrowDown keydowns\n // fire with event.target === container, enabling the container-level handler to\n // forward them to the anchor (first) spin button \u2014 the same mechanism used after\n // a drag-select. Without this, the previously-focused spin button keeps element\n // focus and increments the wrong field.\n root.focus();\n deferContentEditableRestore(root);\n}\n\nfunction getBoundaryNodes(\n direction: 'left' | 'right',\n anchorNode: Node,\n anchorOffset: number,\n focusNode: Node,\n focusOffset: number,\n) {\n const anchorBeforeFocus =\n compareSelectionPoints(anchorNode, anchorOffset, focusNode, focusOffset) <=\n 0;\n if (direction === 'left' && anchorBeforeFocus) {\n return { boundaryNode: anchorNode, boundaryOffset: anchorOffset };\n }\n return { boundaryNode: focusNode, boundaryOffset: focusOffset };\n}\n\n/**\n * Collapses a multi-element selection (anchorNode !== focusNode) to one of its\n * boundaries and focuses the spinbutton or expression input at that boundary.\n *\n * Mirrors the natural Chrome/Safari behaviour of plain ArrowLeft/ArrowRight on a\n * non-collapsed selection: ArrowLeft \u2192 collapse to start, ArrowRight \u2192 collapse\n * to end. Firefox does not collapse \u2014 it shrinks the selection one step at a\n * time \u2014 so without this helper a Shift+Arrow extension followed by plain\n * arrows would require N presses before the cursor finally moves on Firefox.\n *\n * Returns true when a collapse was performed (callers should preventDefault),\n * false when the selection does not need handling here.\n * @internal\n */\nexport function collapseMultiElementSelection(\n rootElement: HTMLElement,\n direction: 'left' | 'right',\n): boolean {\n const selection = globalThis.getSelection();\n if (selection === null || selection.rangeCount < 1 || selection.isCollapsed) {\n return false;\n }\n const anchorNode = selection.anchorNode;\n const focusNode = selection.focusNode;\n if (anchorNode === null || focusNode === null || anchorNode === focusNode) {\n return false;\n }\n if (!rootElement.contains(anchorNode) && !rootElement.contains(focusNode)) {\n return false;\n }\n\n const anchorOffset = selection.anchorOffset;\n const focusOffset = selection.focusOffset;\n\n const { boundaryNode, boundaryOffset } = getBoundaryNodes(\n direction,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n );\n\n // Cancel any deferred CE-restore (set up by Shift+Arrow / drag-select) and\n // restore [contenteditable] synchronously so .focus() below lands on a live\n // editable element. Also clears stale [data-drag-selected] marks.\n pendingRestoreSignals.get(rootElement)?.abort();\n pendingRestoreSignals.delete(rootElement);\n restoreContentEditableAttributes(rootElement);\n rootElement.removeAttribute('data-shift-selection');\n\n const target = resolveSpinButton(boundaryNode, rootElement, boundaryOffset);\n\n selection.removeAllRanges();\n\n if (target === null) {\n return false;\n }\n target.focus();\n return true;\n}\n\n// Matches spinbuttons in both normal ([contenteditable]) and temporarily stripped ([data-wascontenteditable]) states.\nconst SPIN_BUTTON_SELECTOR = '[contenteditable], [data-wascontenteditable]';\n\nfunction getClosestContentEditable(node: Node): HTMLElement | null {\n return node.nodeType === Node.TEXT_NODE\n ? (node as Text).parentElement?.closest<HTMLElement>(\n SPIN_BUTTON_SELECTOR,\n ) ?? null\n : (node as Element).closest?.(SPIN_BUTTON_SELECTOR) ?? null;\n}\n\nfunction isExpressionNode(node: Node | null): boolean {\n return (\n node !== null &&\n getClosestContentEditable(node)?.getAttribute('role') === 'textbox'\n );\n}\n\n/**\n * Resolve a selection endpoint node to its containing spinbutton or, when the\n * endpoint lies on a separator between spinbuttons, to the nearest spinbutton.\n * Uses `[data-wascontenteditable]` to identify spinbuttons while contenteditable\n * is temporarily stripped during the drag, and falls back to the restored\n * `[contenteditable]` attribute afterwards.\n *\n * @param offset - When `node` is an element node (not a text node), this is\n * the child index from the Selection API. The child just before this position\n * is used as the starting point for the reverse spinbutton search, so that a\n * click on empty space after the last spinbutton resolves to that spinbutton\n * rather than falling back to the first one.\n */\nfunction resolveSpinButton(\n node: Node,\n root: HTMLElement,\n offset?: number,\n): HTMLElement | null {\n // Happy path: the node is inside a spinbutton.\n const direct = getClosestContentEditable(node);\n if (direct !== null) {\n return direct;\n }\n\n // Element node: offset is a child index. Walk back from offset-1 to find the nearest spinbutton.\n if (node.nodeType !== Node.TEXT_NODE && offset !== undefined && offset > 0) {\n const childBefore = node.childNodes[offset - 1];\n if (childBefore) {\n const nearest = getNearestPrecedingSpinButton(childBefore, root);\n if (nearest) {\n return nearest;\n }\n }\n }\n\n // Separator or offset-0 element: fall back to nearest preceding spinbutton.\n return getNearestPrecedingSpinButton(node, root);\n}\n\n/**\n * When a drag ends on a separator (e.g. \"/\" or \".\"), the selection endpoint is\n * outside any spinbutton. Walk the contenteditable spinbuttons in document order\n * and return the one that immediately precedes the given node in document order.\n * Falls back to the first spinbutton when the node comes before all of them.\n */\nfunction getNearestPrecedingSpinButton(\n node: Node,\n root: HTMLElement,\n): HTMLElement | null {\n const spinButtons = Array.from(\n root.querySelectorAll<HTMLElement>(SPIN_BUTTON_SELECTOR),\n );\n if (spinButtons.length === 0) {\n return null;\n }\n\n let nearest: HTMLElement | null = null;\n for (const spinButton of spinButtons) {\n // DOCUMENT_POSITION_FOLLOWING is set for both \"after\" and \"contained by\" \u2014 both mean the node comes after this spinButton.\n const position = spinButton.compareDocumentPosition(node);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n nearest = spinButton;\n }\n }\n\n // If node precedes all spinbuttons, return the first one\n return nearest ?? spinButtons[0] ?? null;\n}\n\n/**\n * Determines whether a captured endpoint is truly inside spinbutton content.\n * Separator nodes and caret positions at spinbutton edges must preserve their\n * exact boundary instead of snapping to the whole spinbutton.\n */\nfunction isEndpointInsideSpinButtonContent(\n node: Node,\n offset: number,\n): boolean {\n const closest = getClosestContentEditable(node);\n if (!closest || closest.getAttribute('role') !== 'spinbutton') {\n return false;\n }\n\n const firstChild = closest.childNodes[0] ?? null;\n const leadingTextNode =\n firstChild?.nodeType === Node.TEXT_NODE\n ? firstChild\n : firstChild?.firstChild?.nodeType === Node.TEXT_NODE\n ? firstChild.firstChild\n : null;\n const isLeadingContentNode =\n node === firstChild ||\n node === leadingTextNode ||\n (node instanceof Element &&\n leadingTextNode !== null &&\n node.contains(leadingTextNode)) ||\n (node.nodeType === Node.TEXT_NODE &&\n firstChild instanceof Element &&\n firstChild.contains(node));\n const nodeLength =\n node.nodeType === Node.TEXT_NODE\n ? node.nodeValue?.length ?? 0\n : node.textContent?.length ?? 0;\n const isBoundaryOffset = offset === 0 || offset === nodeLength;\n\n return !(isLeadingContentNode && isBoundaryOffset);\n}\n\n/**\n * One entry in a spin-button undo snapshot.\n * Uses a stable inputRef + Map key pair instead of a direct handler reference\n * so that the undo step always resolves the *current* (post-re-render) handler.\n * @internal\n */\nexport type SpinButtonSnapshotEntry = {\n inputRef: RefObject<DateTimeInputRef>;\n key: Intl.DateTimeFormatPartTypes;\n previousText: string | null;\n};\n\ntype Entry = {\n inputRef: RefObject<DateTimeInputRef>;\n key: Intl.DateTimeFormatPartTypes;\n element: HTMLSpanElement;\n};\n\n/**\n * Inspects the spin buttons of the supplied inputs and returns a snapshot for\n * every spin button whose content overlaps the selected range.\n *\n * The snapshot captures the current `textContent` of each covered element so\n * it can later be passed to.\n * @internal\n */\nexport function buildSpinButtonSnapshot(\n anchorNode: Node | null,\n anchorOffset: number,\n focusNode: Node | null,\n focusOffset: number,\n inputRefs: RefObject<DateTimeInputRef>[],\n): SpinButtonSnapshotEntry[] {\n if (!anchorNode || !focusNode) {\n return [];\n }\n\n const anchorBeforeFocus =\n compareSelectionPoints(anchorNode, anchorOffset, focusNode, focusOffset) <=\n 0;\n const selectionStartNode = anchorBeforeFocus ? anchorNode : focusNode;\n const selectionStartOffset = anchorBeforeFocus ? anchorOffset : focusOffset;\n const selectionEndNode = anchorBeforeFocus ? focusNode : anchorNode;\n const selectionEndOffset = anchorBeforeFocus ? focusOffset : anchorOffset;\n\n const entries: Entry[] = [];\n for (const inputRef of inputRefs) {\n if (!inputRef.current) {\n continue;\n }\n\n for (const [\n key,\n handler,\n ] of inputRef.current.spinButtonHandlers.entries()) {\n const el = handler?.element.current;\n if (el) {\n entries.push({ inputRef, key, element: el });\n }\n }\n }\n\n return entries\n .filter(({ element }) =>\n selectionOverlapsSpinButton(\n selectionStartNode,\n selectionStartOffset,\n selectionEndNode,\n selectionEndOffset,\n element,\n ),\n )\n .map(({ inputRef, key, element }) => ({\n inputRef,\n key,\n previousText: element.textContent ?? null,\n }));\n}\n\n/**\n * Restores spin-button values from a previously captured snapshot.\n * For each entry the current handler is resolved via the stable `inputRef` +\n * Map key, so stale handler references from before a React re-render are never\n * used.\n * @internal\n */\nexport function restoreSpinButtonSnapshot(\n snapshot: SpinButtonSnapshotEntry[],\n): void {\n for (const { inputRef, key, previousText } of snapshot) {\n const handler = inputRef.current?.spinButtonHandlers.get(key);\n if (!handler) {\n continue;\n }\n\n if (handler.type === 'number') {\n // applyText updates DOM, internal state, and fires onChange atomically.\n handler.applyText(previousText ?? '', true);\n } else if (previousText !== null && previousText.length > 0) {\n // Write to DOM immediately to avoid a visual flash before re-render.\n if (handler.element.current) {\n handler.element.current.textContent = previousText;\n }\n // searchValue updates internal state and fires onChange.\n handler.searchValue(previousText.charAt(0), true);\n } else {\n handler.clearValue(true);\n }\n }\n}\n\n/**\n * After a bulk-clear, determines the expression value to apply for each affected input:\n * - **0 survivors** (all spin buttons cleared): resets the input to an empty expression (`\"\"`).\n * - **1 survivor** (exactly one spin button was outside the selection): carries its value\n * into expression mode via `setExpressionValue` rather than leaving a partial date.\n * - **2+ survivors** (partial deletion): leaves the remaining spin buttons as-is.\n *\n * **Must be called BEFORE the clear loop** so that textContent is read while\n * the DOM is still intact (TextSpinButton clears its DOM only on next render).\n * Returns a Map of inputRef \u2192 expression text for every input that qualifies.\n * After clearing, iterate the map and call `inputRef.current.setExpressionValue(text)`.\n * @internal\n */\nexport function findExpressionFallbacks(\n snapshot: SpinButtonSnapshotEntry[],\n): Map<RefObject<DateTimeInputRef>, string> {\n const result = new Map<RefObject<DateTimeInputRef>, string>();\n\n for (const inputRef of new Set(snapshot.map((e) => e.inputRef))) {\n if (!inputRef.current) {\n continue;\n }\n\n const clearedKeys = new Set(\n snapshot.filter((e) => e.inputRef === inputRef).map((e) => e.key),\n );\n\n // Collect the spin buttons that were NOT part of the deletion.\n const survivors = [...inputRef.current.spinButtonHandlers.entries()].filter(\n ([key]) => !clearedKeys.has(key),\n );\n\n if (survivors.length === 0) {\n // Everything was cleared \u2014 reset the input to an empty expression.\n result.set(inputRef, '');\n } else if (survivors.length === 1) {\n // Exactly one spin button survived \u2014 carry its value into expression mode.\n const [, handler] = survivors[0];\n const text = handler?.element.current?.textContent ?? '';\n if (text.length > 0) {\n result.set(inputRef, text);\n }\n }\n // 2+ survivors: partial deletion within the input, leave the spin buttons as-is.\n }\n\n return result;\n}\n\n/** Returns the spin-button handler for the first entry in a snapshot, or `undefined`.\n * Returns `undefined` when that entry is the first or second spin button in its\n * group \u2014 in those cases callers should fall back to expression-input focus.\n * @internal\n */\nexport function getFirstSnapshotHandler(snapshot: SpinButtonSnapshotEntry[]) {\n const first = snapshot[0];\n if (!first) {\n return undefined;\n }\n const spinButtonHandlers = first.inputRef.current?.spinButtonHandlers;\n if (!spinButtonHandlers) {\n return undefined;\n }\n\n // Count only entries belonging to the first inputRef so that a snapshot\n // spanning two inputs does not inflate the count and return a wrong result.\n const clearedInFirstInput = snapshot.filter(\n (e) => e.inputRef === first.inputRef,\n ).length;\n // It switches to relative input either when everything is cleared or when only the first spinbutton remains.\n const switchedToRelative = clearedInFirstInput >= spinButtonHandlers.size - 1;\n\n if (switchedToRelative) {\n return undefined;\n }\n\n return spinButtonHandlers.get(first.key);\n}\n\n/** Returns the spin-button handler for the last entry in a snapshot, or `undefined`.\n * Returns `undefined` when the last input's cleared count means it switched to\n * relative mode \u2014 callers should fall back to expression-input focus in that case.\n * @internal\n */\nexport function getLastSnapshotHandler(snapshot: SpinButtonSnapshotEntry[]) {\n const last = snapshot[snapshot.length - 1];\n if (!last) {\n return undefined;\n }\n const spinButtonHandlers = last.inputRef.current?.spinButtonHandlers;\n if (!spinButtonHandlers) {\n return undefined;\n }\n\n // Count only entries belonging to the last inputRef so that a snapshot\n // spanning two inputs does not inflate the count and return a wrong result.\n const clearedInLastInput = snapshot.filter(\n (e) => e.inputRef === last.inputRef,\n ).length;\n // It switches to relative input either when everything is cleared or when only the first spinbutton remains.\n const switchedToRelative = clearedInLastInput >= spinButtonHandlers.size - 1;\n\n if (switchedToRelative) {\n return undefined;\n }\n\n return spinButtonHandlers.get(last.key);\n}\n\n/**\n * Returns the first ref in `inputRefs` order that has an expression input to\n * focus after a bulk clear, considering both directly cleared expression inputs\n * and inputs that transitioned to expression mode via expressionFallbacks.\n * Using `inputRefs` order ensures focus lands on the leftmost affected input\n * even when the selection's anchor is in an already-empty expression input.\n * @internal\n */\nexport function findFirstExpressionFocusTarget(\n inputRefs: RefObject<DateTimeInputRef>[],\n affectedExpressionRefs: RefObject<DateTimeInputRef>[],\n expressionFallbacks: Map<RefObject<DateTimeInputRef>, string>,\n): RefObject<DateTimeInputRef> | undefined {\n const allAffected = new Set<RefObject<DateTimeInputRef>>([\n ...affectedExpressionRefs,\n ...expressionFallbacks.keys(),\n ]);\n return inputRefs.find((ref) => allAffected.has(ref));\n}\n\n/**\n * Returns the expression input element when the selection is non-collapsed but\n * covers only part of the text within a single expression input. In that case\n * the caller should handle the deletion explicitly rather than relying on the\n * bulk-clear path or native browser behaviour.\n * Returns null when the selection is not a partial single-expression selection.\n * @internal\n */\nexport function getPartialExpressionElement(\n selection: Selection,\n inputRefs: RefObject<DateTimeInputRef>[],\n): HTMLSpanElement | null {\n for (const ref of inputRefs) {\n const expressionElement = ref.current?.expressionInputRef;\n if (\n expressionElement &&\n expressionElement.contains(selection.anchorNode) &&\n expressionElement.contains(selection.focusNode) &&\n selection.toString().length < (expressionElement.textContent?.length ?? 0)\n ) {\n return expressionElement;\n }\n }\n return null;\n}\n\n/**\n * Returns expression boundaries touched by the current selection.\n * - Two different expressions: `[firstExpressionElement, lastExpressionElement]` in document order.\n * - Mixed boundary (one expression + one non-expression boundary): `[expressionElement, expressionElement]`.\n * - Otherwise: `null`.\n * @internal\n */\nexport function getCrossExpressionElements(\n selection: Selection,\n inputRefs: RefObject<DateTimeInputRef>[],\n): [HTMLSpanElement, HTMLSpanElement] | null {\n if (selection.rangeCount < 1) {\n return null;\n }\n\n const range = selection.getRangeAt(0);\n const startEl = inputRefs.find((ref) =>\n ref.current?.expressionInputRef?.contains(range.startContainer),\n )?.current?.expressionInputRef;\n const endEl = inputRefs.find((ref) =>\n ref.current?.expressionInputRef?.contains(range.endContainer),\n )?.current?.expressionInputRef;\n\n if (!startEl && !endEl) {\n return null;\n }\n\n if (startEl && !endEl) {\n return [startEl, startEl];\n }\n if (!startEl && endEl) {\n return [endEl, endEl];\n }\n\n if (!startEl || !endEl) {\n return null;\n }\n\n // A selection fully inside one expression is handled by the existing\n // single-expression paths (partial deletion or full bulk clear).\n if (startEl === endEl) {\n return null;\n }\n\n // Return in document order.\n const startFirst = !!(\n startEl.compareDocumentPosition(endEl) & Node.DOCUMENT_POSITION_FOLLOWING\n );\n return startFirst ? [startEl, endEl] : [endEl, startEl];\n}\n\n/**\n * Focuses an expression element and places the cursor at the given range,\n * or at the end of the element when no range is provided.\n * The data-restoring-selection guard tells the focus handler to skip selectAll().\n * @internal\n */\nexport function focusExpression(\n expressionElement: HTMLSpanElement,\n range?: Range,\n): void {\n const root = expressionElement.closest<HTMLElement>('.strato-inputgroup');\n root?.setAttribute('data-restoring-selection', '');\n expressionElement.focus();\n const sel = globalThis.getSelection();\n if (sel) {\n if (!range) {\n range = document.createRange();\n range.selectNodeContents(expressionElement);\n range.collapse(false);\n }\n sel.setBaseAndExtent(\n range.startContainer,\n range.startOffset,\n range.endContainer,\n range.endOffset,\n );\n }\n root?.removeAttribute('data-restoring-selection');\n}\n\nfunction getOffsetWithinExpression(\n expressionElement: Element,\n container: Node,\n offset: number,\n): number {\n const range = document.createRange();\n range.selectNodeContents(expressionElement);\n range.setEnd(container, offset);\n return range.toString().length;\n}\n\n/**\n * Returns the character offset of the cursor within `expressionElement`, or\n * `undefined` when no selection is active inside the element.\n * @internal\n */\nexport function getExpressionCursorOffset(\n expressionElement: Element,\n): number | undefined {\n const sel = window.getSelection();\n if (!sel?.rangeCount) {\n return undefined;\n }\n const range = sel.getRangeAt(0);\n if (!expressionElement.contains(range.endContainer)) {\n return undefined;\n }\n return getOffsetWithinExpression(\n expressionElement,\n range.endContainer,\n range.endOffset,\n );\n}\n\n/**\n * Places the cursor at `offset` characters into `expressionElement`.\n * Clamps to the element's text length when `offset` exceeds it.\n * @internal\n */\nexport function restoreExpressionCursorOffset(\n expressionElement: HTMLSpanElement,\n offset: number,\n): void {\n const textNode = expressionElement.firstChild;\n const sel = window.getSelection();\n if (textNode instanceof Text && sel) {\n const range = document.createRange();\n range.setStart(textNode, Math.min(offset, textNode.length));\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n}\n\n/**\n * Deletes the selected range within a single expression input, collapses the\n * cursor to the deletion point, and fires an input event so the expression\n * handler can update React state.\n * @internal\n */\nexport function deletePartialExpression(\n selection: Selection,\n expressionElement: HTMLSpanElement,\n): void {\n const range = selection.getRangeAt(0);\n const text = expressionElement.textContent ?? '';\n\n const start = expressionElement.contains(range.startContainer)\n ? getOffsetWithinExpression(\n expressionElement,\n range.startContainer,\n range.startOffset,\n )\n : 0;\n const end = expressionElement.contains(range.endContainer)\n ? getOffsetWithinExpression(\n expressionElement,\n range.endContainer,\n range.endOffset,\n )\n : text.length;\n\n const from = Math.min(start, end);\n const to = Math.max(start, end);\n const nextText = `${text.slice(0, from)}${text.slice(to)}`;\n expressionElement.textContent = nextText;\n\n const nextRange = document.createRange();\n const node = expressionElement.firstChild;\n if (node?.nodeType === Node.TEXT_NODE) {\n nextRange.setStart(node, Math.min(from, nextText.length));\n } else {\n nextRange.setStart(expressionElement, 0);\n }\n nextRange.collapse(true);\n\n focusExpression(expressionElement, nextRange);\n expressionElement.dispatchEvent(new InputEvent('input', { bubbles: true }));\n}\n\n/**\n * Plans a bulk clear operation by analyzing the current selection\n * and computing everything needed to clear affected spin buttons and expression inputs.\n * Must be called before any DOM writes so that textContent is still intact.\n * @internal\n */\nexport function planBulkClear(\n selection: Selection,\n inputRefs: RefObject<DateTimeInputRef>[],\n endpointsOverride?: SelectionEndpoints,\n): {\n snapshot: SpinButtonSnapshotEntry[];\n affectedExpressionRefs: RefObject<DateTimeInputRef>[];\n expressionFallbacks: Map<RefObject<DateTimeInputRef>, string>;\n} {\n // Safari clips a freshly restored cross-CE selection to the active editing\n // host, so callers may pass the pre-restore endpoints captured by\n // `deferContentEditableRestore`. Fall back to the live selection otherwise.\n // Discard the override when either node is no longer connected to the\n // document \u2014 this can happen when a paste operation replaces spin-button\n // text nodes between the CE-restore keydown and a subsequent Delete press.\n const validOverride =\n endpointsOverride?.anchorNode.isConnected &&\n endpointsOverride?.focusNode.isConnected\n ? endpointsOverride\n : undefined;\n const anchorNode = validOverride?.anchorNode ?? selection.anchorNode;\n const anchorOffset = validOverride?.anchorOffset ?? selection.anchorOffset;\n const focusNode = validOverride?.focusNode ?? selection.focusNode;\n const focusOffset = validOverride?.focusOffset ?? selection.focusOffset;\n\n const affectedExpressionRefs = inputRefs.filter((ref) => {\n const expressionInputRef = ref.current?.expressionInputRef;\n return (\n expressionInputRef &&\n (expressionInputRef.contains(anchorNode) ||\n expressionInputRef.contains(focusNode))\n );\n });\n\n const anchorInExpression = affectedExpressionRefs.some((ref) =>\n ref.current?.expressionInputRef?.contains(anchorNode),\n );\n const focusInExpression = affectedExpressionRefs.some((ref) =>\n ref.current?.expressionInputRef?.contains(focusNode),\n );\n\n // Skip buildSpinButtonSnapshot only when BOTH boundaries are inside expression inputs.\n const snapshot =\n anchorInExpression && focusInExpression\n ? []\n : buildSpinButtonSnapshot(\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n inputRefs,\n );\n\n return {\n snapshot,\n affectedExpressionRefs,\n expressionFallbacks: findExpressionFallbacks(snapshot),\n };\n}\n\n/**\n * Deletes the selected portion across two expression inputs using two separate\n * single-element ranges. Using one cross-element range with deleteContents()\n * does not modify text inside contenteditable boundaries; splitting into two\n * intra-element ranges avoids that limitation entirely.\n * Focus is placed at the end of whatever text remains in the first expression.\n * @internal\n */\nexport function deleteCrossExpressionPartial(\n selection: Selection,\n [firstExpressionElement, lastExpressionElement]: [\n HTMLSpanElement,\n HTMLSpanElement,\n ],\n): void {\n if (firstExpressionElement === lastExpressionElement) {\n deletePartialExpression(selection, firstExpressionElement);\n return;\n }\n\n const { startContainer, startOffset, endContainer, endOffset } =\n selection.getRangeAt(0);\n\n // Delete from the selection start to the end of firstExpressionElement.\n const fromRange = document.createRange();\n fromRange.setStart(startContainer, startOffset);\n fromRange.setEnd(\n firstExpressionElement,\n firstExpressionElement.childNodes.length,\n );\n fromRange.deleteContents();\n\n // Delete from the start of lastExpressionElement to the selection end.\n const toRange = document.createRange();\n toRange.setStart(lastExpressionElement, 0);\n toRange.setEnd(endContainer, endOffset);\n toRange.deleteContents();\n\n // Place cursor at the end of whatever text remains in the first expression.\n selection.removeAllRanges();\n focusExpression(firstExpressionElement);\n\n firstExpressionElement.dispatchEvent(\n new InputEvent('input', { bubbles: true }),\n );\n lastExpressionElement.dispatchEvent(\n new InputEvent('input', { bubbles: true }),\n );\n}\n\n/**\n * Returns the keyup callback passed to `removeContentEditable` after a\n * bulk-clear (cut or delete). Once the key is released and contenteditable\n * is restored, it decides where focus lands:\n * - If `firstElement` is `undefined` (the selection started at a leading spin\n * button), focus the first affected expression input.\n * - Otherwise keep focus on that spin button.\n * @internal\n */\nexport function restoreFocusAfterBulkClear(\n firstSpinButtonHandler: SpinButtonHandler | null | undefined,\n focusTarget: RefObject<DateTimeInputRef> | undefined,\n) {\n if (firstSpinButtonHandler) {\n firstSpinButtonHandler.element.current?.focus();\n firstSpinButtonHandler.selectAll();\n return;\n }\n\n const expressionElement = focusTarget?.current?.expressionInputRef;\n if (expressionElement) {\n requestAnimationFrame(() => {\n focusExpression(expressionElement);\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
useCallback
|
|
3
|
-
useRef
|
|
2
|
+
useCallback
|
|
4
3
|
} from "react";
|
|
5
4
|
import { isExpressionTriggerKey } from "./expression-trigger-helpers.js";
|
|
6
5
|
import { buildTimeframeClipboardText } from "./selection-copy-helpers.js";
|
|
@@ -8,7 +7,6 @@ import {
|
|
|
8
7
|
extendSelection,
|
|
9
8
|
extendSelectionToAll,
|
|
10
9
|
removeContentEditable,
|
|
11
|
-
restoreSpinButtonSnapshot,
|
|
12
10
|
getFirstSnapshotHandler,
|
|
13
11
|
findFirstExpressionFocusTarget,
|
|
14
12
|
restoreFocusAfterBulkClear,
|
|
@@ -70,10 +68,8 @@ function useSelectionInteractionHandlers(touchedContainerRef, onFocusInput, date
|
|
|
70
68
|
},
|
|
71
69
|
[onFocusInput]
|
|
72
70
|
);
|
|
73
|
-
const lastClearedSnapshotRef = useRef([]);
|
|
74
|
-
const lastClearedExpressionsRef = useRef([]);
|
|
75
71
|
const onKeyDown = useCallback(
|
|
76
|
-
|
|
72
|
+
(event) => {
|
|
77
73
|
const hasModifierKey = event.metaKey === true || event.ctrlKey === true;
|
|
78
74
|
const pickerRoot = event.currentTarget;
|
|
79
75
|
if (event.key === "Shift" || event.key === "Control" || event.key === "Meta" || event.key === "Alt" || event.key === "Command") {
|
|
@@ -81,14 +77,7 @@ function useSelectionInteractionHandlers(touchedContainerRef, onFocusInput, date
|
|
|
81
77
|
return;
|
|
82
78
|
}
|
|
83
79
|
function applyBulkClear(plan, selection) {
|
|
84
|
-
const {
|
|
85
|
-
snapshot,
|
|
86
|
-
affectedExpressionRefs,
|
|
87
|
-
expressionFallbacks,
|
|
88
|
-
clearedExpressions
|
|
89
|
-
} = plan;
|
|
90
|
-
lastClearedSnapshotRef.current = snapshot;
|
|
91
|
-
lastClearedExpressionsRef.current = clearedExpressions;
|
|
80
|
+
const { snapshot, affectedExpressionRefs, expressionFallbacks } = plan;
|
|
92
81
|
for (const { inputRef, key } of snapshot) {
|
|
93
82
|
inputRef.current?.spinButtonHandlers.get(key)?.clearValue(true);
|
|
94
83
|
}
|
|
@@ -127,8 +116,6 @@ function useSelectionInteractionHandlers(touchedContainerRef, onFocusInput, date
|
|
|
127
116
|
inputRefs,
|
|
128
117
|
consumePreRestoreEndpoints(pickerRoot)
|
|
129
118
|
);
|
|
130
|
-
lastClearedSnapshotRef.current = plan2.snapshot;
|
|
131
|
-
lastClearedExpressionsRef.current = plan2.clearedExpressions;
|
|
132
119
|
const firstSpinButtonHandler = getFirstSnapshotHandler(plan2.snapshot);
|
|
133
120
|
const expressionFocusTarget2 = findFirstExpressionFocusTarget(
|
|
134
121
|
inputRefs,
|
|
@@ -168,7 +155,6 @@ function useSelectionInteractionHandlers(touchedContainerRef, onFocusInput, date
|
|
|
168
155
|
);
|
|
169
156
|
}
|
|
170
157
|
function onBeforeExpressionDelete(expressionElements, inputRefs) {
|
|
171
|
-
lastClearedSnapshotRef.current = [];
|
|
172
158
|
const expressionSnapshots = [];
|
|
173
159
|
for (const exprEl of expressionElements) {
|
|
174
160
|
let matchingRef;
|
|
@@ -185,7 +171,6 @@ function useSelectionInteractionHandlers(touchedContainerRef, onFocusInput, date
|
|
|
185
171
|
});
|
|
186
172
|
}
|
|
187
173
|
}
|
|
188
|
-
lastClearedExpressionsRef.current = expressionSnapshots;
|
|
189
174
|
}
|
|
190
175
|
if (hasModifierKey && event.key === "a") {
|
|
191
176
|
event.preventDefault();
|
|
@@ -201,29 +186,6 @@ function useSelectionInteractionHandlers(touchedContainerRef, onFocusInput, date
|
|
|
201
186
|
}
|
|
202
187
|
return;
|
|
203
188
|
}
|
|
204
|
-
if (hasModifierKey && event.key === "z") {
|
|
205
|
-
const snapshot = lastClearedSnapshotRef.current;
|
|
206
|
-
const expressionEntries = lastClearedExpressionsRef.current;
|
|
207
|
-
if (snapshot.length === 0 && expressionEntries.length === 0) {
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
event.preventDefault();
|
|
211
|
-
restoreSpinButtonSnapshot(snapshot);
|
|
212
|
-
lastClearedSnapshotRef.current = [];
|
|
213
|
-
for (const { inputRef, previousText } of expressionEntries) {
|
|
214
|
-
inputRef.current?.setExpressionValue(previousText);
|
|
215
|
-
inputRef.current?.validate();
|
|
216
|
-
}
|
|
217
|
-
lastClearedExpressionsRef.current = [];
|
|
218
|
-
if (snapshot.length > 0) {
|
|
219
|
-
getFirstSnapshotHandler(snapshot)?.element.current?.focus();
|
|
220
|
-
} else {
|
|
221
|
-
requestAnimationFrame(() => {
|
|
222
|
-
expressionEntries[0]?.inputRef.current?.expressionInputRef?.focus();
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
189
|
const isCut = hasModifierKey && event.key === "x";
|
|
228
190
|
const isDelete = event.key === "Backspace" || event.key === "Delete";
|
|
229
191
|
const direction = isCut || event.key === "Backspace" ? "backward" : "forward";
|
|
@@ -235,10 +197,8 @@ function useSelectionInteractionHandlers(touchedContainerRef, onFocusInput, date
|
|
|
235
197
|
bulkClear(selection, direction);
|
|
236
198
|
if (isCut) {
|
|
237
199
|
if (clipboardText !== null) {
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
} catch {
|
|
241
|
-
}
|
|
200
|
+
navigator.clipboard.writeText(clipboardText).catch(() => {
|
|
201
|
+
});
|
|
242
202
|
}
|
|
243
203
|
}
|
|
244
204
|
return;
|
|
@@ -276,8 +236,6 @@ function useSelectionInteractionHandlers(touchedContainerRef, onFocusInput, date
|
|
|
276
236
|
);
|
|
277
237
|
return;
|
|
278
238
|
}
|
|
279
|
-
lastClearedSnapshotRef.current = plan.snapshot;
|
|
280
|
-
lastClearedExpressionsRef.current = plan.clearedExpressions;
|
|
281
239
|
for (const { inputRef, key } of plan.snapshot) {
|
|
282
240
|
inputRef.current?.spinButtonHandlers.get(key)?.clearValue(true);
|
|
283
241
|
}
|