@levi-gemcommerce/analytics 0.0.1-dev.8 → 1.0.0-dev.11
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/dist/esm/components/AnalyticMode/AnalyticModeSelector.d.ts +13 -0
- package/dist/esm/components/AnalyticMode/index.d.ts +2 -0
- package/dist/esm/components/CurrencySelector/CurrencySelector.d.ts +10 -0
- package/dist/esm/components/CurrencySelector/index.d.ts +2 -0
- package/dist/esm/components/index.d.ts +2 -0
- package/dist/esm/constants/campaign.d.ts +1 -0
- package/dist/esm/constants/currency.d.ts +2 -0
- package/dist/esm/constants/index.d.ts +2 -0
- package/dist/esm/core/gemxql/utils/dayjs.d.ts +2 -0
- package/dist/esm/gemxql.js +3 -3
- package/dist/esm/gemxql.mjs +3 -3
- package/dist/esm/hooks/index.d.ts +3 -0
- package/dist/esm/hooks/useEnhancedEffect.d.ts +2 -0
- package/dist/esm/hooks/usePopoverResizeObserver.d.ts +7 -0
- package/dist/esm/hooks/useToggle.d.ts +12 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1585 -34
- package/dist/esm/index.mjs +1585 -34
- package/dist/esm/shared/charts/components/ComboChart.d.ts +1 -0
- package/dist/esm/shared/charts/components/GBarChart.d.ts +13 -0
- package/dist/esm/shared/charts/components/GComboChart.d.ts +5 -0
- package/dist/esm/shared/charts/components/GDonutChart.d.ts +5 -0
- package/dist/esm/shared/charts/components/GFunnelChart/GFunnelChart.d.ts +10 -0
- package/dist/esm/shared/charts/components/GFunnelChart/components/FunnelChartAction.d.ts +7 -0
- package/dist/esm/shared/charts/components/GFunnelChart/components/FunnelChartActionIcon.d.ts +9 -0
- package/dist/esm/shared/charts/components/GFunnelChart/components/FunnelChartActionWrapper.d.ts +16 -0
- package/dist/esm/shared/charts/components/GFunnelChart/components/FunnelSelection/FunnelSelectionContent.d.ts +6 -0
- package/dist/esm/shared/charts/components/GFunnelChart/components/FunnelSelection/FunnelSelectionHeader.d.ts +1 -0
- package/dist/esm/shared/charts/components/GFunnelChart/components/FunnelSelection/FunnelSelectionItem.d.ts +9 -0
- package/dist/esm/shared/charts/components/GFunnelChart/components/FunnelSelection/FunnelSelectionPopover.d.ts +22 -0
- package/dist/esm/shared/charts/components/GFunnelChart/components/FunnelSelection/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GFunnelChart/components/FunnelSelection/type.d.ts +7 -0
- package/dist/esm/shared/charts/components/GFunnelChart/components/types.d.ts +23 -0
- package/dist/esm/shared/charts/components/GFunnelChart/index.d.ts +3 -0
- package/dist/esm/shared/charts/components/GFunnelChart/types.d.ts +11 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Arc/Arc.d.ts +16 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Arc/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartContainer/ChartContainer.d.ts +17 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartContainer/hooks/useContainerBounds.d.ts +11 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartContainer/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartElements/ChartDiv.d.ts +9 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartElements/ChartSVG.d.ts +12 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartElements/index.d.ts +6 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartErrorBoundary/ChartErrorBoundary.d.ts +25 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartErrorBoundary/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartErrorBoundary/utilities/checkForMismatchedData.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/ChartSkeleton.d.ts +31 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/DonutSkeleton/DonutSkeleton.d.ts +7 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/DonutSkeleton/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/ErrorText/ErrorText.d.ts +7 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/ErrorText/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/FunnelSkeleton/FunnelSkeleton.d.ts +7 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/FunnelSkeleton/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/GridSkeleton/GridSkeleton.d.ts +7 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/GridSkeleton/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/Shimmer/Shimmer.d.ts +3 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/Shimmer/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/SimpleBarSkeleton/SimpleBarSkeleton.d.ts +7 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/SimpleBarSkeleton/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/SimpleNormalizedSkeleton/SimpleNormalizedSkeleton.d.ts +10 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/SimpleNormalizedSkeleton/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/SparkSkeleton/SparkSkeleton.d.ts +7 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/SparkSkeleton/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/index.d.ts +8 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/index.d.ts +3 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ConicGradientWithStops/ConicGradientWithStops.d.ts +9 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/ConicGradientWithStops/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/DefaultPreview/DefaultPreview.d.ts +5 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/DefaultPreview/index.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChart/Chart.d.ts +9 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChart/FunnelChart.d.ts +12 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChart/components/FunnelChartXAxisArrows.d.ts +10 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChart/components/FunnelChartXAxisLabels.d.ts +13 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChart/components/FunnelSegment.d.ts +17 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChart/components/Label.d.ts +14 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChart/components/index.d.ts +4 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChart/index.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/Chart.d.ts +20 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/FunnelChartNext.d.ts +25 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/FunnelChartLabels/FunnelChartLabels.d.ts +29 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/FunnelChartLabels/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/FunnelTooltip/FunnelTooltip.d.ts +8 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/FunnelTooltip/index.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/ScaleIcon.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/ScaleIconTooltip.d.ts +6 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/Tooltip/CustomTooltip.d.ts +10 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/Tooltip/Tooltip.d.ts +16 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/Tooltip/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/TooltipOverlay.d.ts +30 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/TooltipWithPortal.d.ts +4 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/index.d.ts +7 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/constants.d.ts +19 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/hooks/useTooltipInteraction.d.ts +12 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/hooks/useTooltipPlacement.d.ts +27 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/index.d.ts +4 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/types.d.ts +9 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/utilities/calculate-dropoff.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/utilities/useBuildFunnelTrends.d.ts +10 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/HorizontalGridLines/HorizontalGridLines.d.ts +10 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/HorizontalGridLines/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/SingleTextLine.d.ts +14 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/hooks/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/hooks/useLabels.d.ts +19 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/index.d.ts +3 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/endLineTruncate.d.ts +9 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/endWordTruncate.d.ts +8 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/estimateTextHeight.d.ts +8 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/formatAndAddEllipsis.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/getDiagonalLabels.d.ts +14 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/getHorizontalLabels.d.ts +15 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/getVerticalLabels.d.ts +13 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/getWidestLabel.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/shouldSkipLabel.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/tests/endWordTruncate.test.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/tests/estimateTextHeight.test.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/tests/formatAndAddEllipsis.test.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/tests/truncateLastLine.test.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/tests/truncateSingleLine.test.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/truncateLabels.d.ts +11 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/truncateLastLine.d.ts +9 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/truncateSingleLine.d.ts +8 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/LinePreview/LinePreview.d.ts +8 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/LinePreview/constants.d.ts +3 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/LinePreview/index.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/SwallowErrors/SwallowErrors.d.ts +16 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/SwallowErrors/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TextLine/TextLine.d.ts +8 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TextLine/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/TooltipContent.d.ts +8 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipContentContainer/TooltipContentContainer.d.ts +13 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipContentContainer/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipRow/TooltipRow.d.ts +11 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipRow/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipSeries/TooltipSeries.d.ts +7 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipSeries/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipSeriesName/TooltipSeriesName.d.ts +5 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipSeriesName/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipTitle/TooltipTitle.d.ts +6 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipTitle/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/index.d.ts +5 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/constants.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/hooks/useGetLongestLabelFromData.d.ts +5 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/index.d.ts +4 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/utilities/get-tooltip-template-content-column-count.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipContent/utilities/tests/get-tooltip-template-content-column-count.test.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/TooltipWrapper.d.ts +27 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/components/TooltipAnimatedContainer.d.ts +17 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/constants.d.ts +9 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/index.d.ts +5 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/types.d.ts +53 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/eventPoint.d.ts +15 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/getAlteredHorizontalBarPosition.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/getAlteredLineChartPosition.d.ts +9 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/getAlteredVerticalBarPosition.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/getDonutChartTooltipPosition.d.ts +8 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/getHorizontalBarChartTooltipPosition.d.ts +7 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/getLineChartTooltipPosition.d.ts +11 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/getVerticalBarChartTooltipPosition.d.ts +10 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/shouldBlockTooltipEvents.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities.d.ts +13 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/TrendIndicator.d.ts +6 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/components/Arrows/ArrowDown.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/components/Arrows/ArrowUp.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/components/Arrows/index.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/components/Svg/Svg.d.ts +10 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/components/Svg/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/components/index.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/constants.d.ts +8 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/index.d.ts +6 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/utilities/estimateTrendIndicatorWidth.d.ts +4 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/VerticalBarChart/utilities/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/VerticalBarChart/utilities/sortBarChartData.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/VerticalGridLines/VerticalGridLines.d.ts +9 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/VerticalGridLines/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/components/index.d.ts +6 -0
- package/dist/esm/shared/charts/components/GPolarisViz/constants.d.ts +21 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/index.d.ts +5 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useBarSpringConfig.d.ts +12 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useBrowserCheck.d.ts +5 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useCallbackRef.d.ts +3 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useDataForHorizontalChart.d.ts +15 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useDebouncedCallback.d.ts +27 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useFormattedLabels.d.ts +10 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useFunnelBarScaling.d.ts +12 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useHorizontalBarSizes.d.ts +15 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useHorizontalStackedValues.d.ts +13 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useHorizontalTicksAndScale.d.ts +15 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useHorizontalXScale.d.ts +21 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useIndexForLabels.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/usePrefersReducedMotion.d.ts +3 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/usePrintResizing.d.ts +11 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useReducedLabelIndexes.d.ts +5 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useResizeObserver.d.ts +6 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useRootContainer.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/hooks/useWatchColorVisionEvents.d.ts +8 -0
- package/dist/esm/shared/charts/components/GPolarisViz/index.d.ts +7 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/Bar/Bar.d.ts +14 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/Bar/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/FunnelChartConnector/FunnelChartConnector.d.ts +11 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/FunnelChartConnector/FunnelChartConnectorGradient.d.ts +6 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/FunnelChartConnector/constants.d.ts +5 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/FunnelChartConnector/index.d.ts +3 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/FunnelChartSegment/FunnelChartSegment.d.ts +17 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/FunnelChartSegment/components/AnimatedSegment.d.ts +13 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/FunnelChartSegment/components/InteractiveOverlay.d.ts +11 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/FunnelChartSegment/components/ScaledSegment.d.ts +17 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/FunnelChartSegment/constants.d.ts +4 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/FunnelChartSegment/index.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/SeriesIcon/SeriesIcon.d.ts +8 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/SeriesIcon/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/ZeroValueLine/ZeroValueLine.d.ts +9 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/ZeroValueLine/index.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/shared/index.d.ts +3 -0
- package/dist/esm/shared/charts/components/GPolarisViz/types.d.ts +209 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/base.d.ts +3 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/classnames.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/createCssConicGradient.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/createCssGradient.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/estimateStringWidthWithOffset.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/getAxisOptions.d.ts +3 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/getCSSBackgroundFromColor.d.ts +2 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/getChartId.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/getFontSize.d.ts +1 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/getStackedMinMax.d.ts +10 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/getStackedValues.d.ts +10 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/getStackedValuesFromDataSeries.d.ts +7 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/getTrendIndicatorData.d.ts +8 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/hasHiddenComparisonSeries.d.ts +9 -0
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/index.d.ts +6 -0
- package/dist/esm/shared/charts/components/GSimpleBarChart.d.ts +5 -0
- package/dist/esm/shared/charts/components/index.d.ts +7 -0
- package/dist/esm/shared/charts/constants/chart.d.ts +2 -0
- package/dist/esm/shared/charts/constants/index.d.ts +1 -0
- package/dist/esm/shared/charts/contexts/GChartProvider.d.ts +9 -0
- package/dist/esm/shared/charts/contexts/index.d.ts +1 -0
- package/dist/esm/shared/charts/index.d.ts +4 -0
- package/dist/esm/shared/charts/types/chart.d.ts +35 -0
- package/dist/esm/shared/charts/types/index.d.ts +1 -0
- package/dist/esm/shared/components/GActivatorPopover/GActivatorPopover.d.ts +23 -0
- package/dist/esm/shared/components/GActivatorPopover/index.d.ts +1 -0
- package/dist/esm/shared/components/GButton/GButton.d.ts +19 -0
- package/dist/esm/shared/components/GButton/index.d.ts +1 -0
- package/dist/esm/shared/components/GCheckbox/GCheckbox.d.ts +39 -0
- package/dist/esm/shared/components/GCheckbox/index.d.ts +1 -0
- package/dist/esm/shared/components/GChoice/ChoiceHelpText.d.ts +4 -0
- package/dist/esm/shared/components/GChoice/GChoice.d.ts +44 -0
- package/dist/esm/shared/components/GChoice/index.d.ts +2 -0
- package/dist/esm/shared/components/GClickable/GClickable.d.ts +10 -0
- package/dist/esm/shared/components/GClickable/index.d.ts +1 -0
- package/dist/esm/shared/components/GDiv/GDiv.d.ts +7 -0
- package/dist/esm/shared/components/GDiv/index.d.ts +1 -0
- package/dist/esm/shared/components/GI18NText/GI18NText.d.ts +2 -0
- package/dist/esm/shared/components/GI18NText/index.d.ts +2 -0
- package/dist/esm/shared/components/GI18NText/types.d.ts +6 -0
- package/dist/esm/shared/components/GOptionList/GOptionList.d.ts +11 -0
- package/dist/esm/shared/components/GOptionList/index.d.ts +1 -0
- package/dist/esm/shared/components/GSelector/GSelector.d.ts +27 -0
- package/dist/esm/shared/components/GSelector/index.d.ts +1 -0
- package/dist/esm/shared/components/GTextLink/GTextLink.d.ts +9 -0
- package/dist/esm/shared/components/GTextLink/index.d.ts +1 -0
- package/dist/esm/shared/components/GTimePicker/GTimePicker.d.ts +17 -0
- package/dist/esm/shared/components/GTimePicker/components/BaseTimePicker.d.ts +10 -0
- package/dist/esm/shared/components/GTimePicker/components/CompareTimePicker.d.ts +5 -0
- package/dist/esm/shared/components/GTimePicker/components/DateTimeFilterAddition.d.ts +2 -0
- package/dist/esm/shared/components/GTimePicker/components/DateTimeFilterInputs.d.ts +9 -0
- package/dist/esm/shared/components/GTimePicker/components/DateTimeFilters.d.ts +15 -0
- package/dist/esm/shared/components/GTimePicker/components/MainTimePicker.d.ts +3 -0
- package/dist/esm/shared/components/GTimePicker/components/index.d.ts +2 -0
- package/dist/esm/shared/components/GTimePicker/constants/compareDateTimePicker.d.ts +12 -0
- package/dist/esm/shared/components/GTimePicker/constants/datePicker.d.ts +14 -0
- package/dist/esm/shared/components/GTimePicker/constants/index.d.ts +2 -0
- package/dist/esm/shared/components/GTimePicker/constants/mainDataTimePicker.d.ts +14 -0
- package/dist/esm/shared/components/GTimePicker/contexts/DateTimePickerProvider.d.ts +15 -0
- package/dist/esm/shared/components/GTimePicker/contexts/index.d.ts +1 -0
- package/dist/esm/shared/components/GTimePicker/helpers/date-range-info.d.ts +16 -0
- package/dist/esm/shared/components/GTimePicker/helpers/index.d.ts +4 -0
- package/dist/esm/shared/components/GTimePicker/helpers/parse-date.d.ts +24 -0
- package/dist/esm/shared/components/GTimePicker/helpers/time-picker.d.ts +76 -0
- package/dist/esm/shared/components/GTimePicker/helpers/version.d.ts +2 -0
- package/dist/esm/shared/components/GTimePicker/hooks/index.d.ts +3 -0
- package/dist/esm/shared/components/GTimePicker/hooks/useCompareDateTimePicker.d.ts +26 -0
- package/dist/esm/shared/components/GTimePicker/hooks/useDateTimeFilter.d.ts +18 -0
- package/dist/esm/shared/components/GTimePicker/hooks/useDateTimePicker.d.ts +30 -0
- package/dist/esm/shared/components/GTimePicker/hooks/useVersionDateTimeFilters.d.ts +9 -0
- package/dist/esm/shared/components/GTimePicker/index.d.ts +7 -0
- package/dist/esm/shared/components/GTimePicker/types/index.d.ts +38 -0
- package/dist/esm/shared/components/GTooltip/GTooltip.d.ts +22 -0
- package/dist/esm/shared/components/GTooltip/index.d.ts +2 -0
- package/dist/esm/shared/components/GViewBySelector/GViewBySelector.d.ts +17 -0
- package/dist/esm/shared/components/GViewBySelector/index.d.ts +1 -0
- package/dist/esm/shared/components/index.d.ts +14 -1
- package/dist/esm/types/analytic-mode.d.ts +5 -0
- package/dist/esm/types/currency.d.ts +329 -0
- package/dist/esm/types/index.d.ts +2 -0
- package/dist/esm/types/metric.d.ts +27 -0
- package/dist/esm/types.js +8 -1
- package/dist/esm/types.mjs +8 -1
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/number.d.ts +1 -0
- package/dist/esm/utils/sort.d.ts +13 -0
- package/dist/style.css +1 -1
- package/dist/umd/esm/components/AnalyticMode/AnalyticModeSelector.d.ts +13 -0
- package/dist/umd/esm/components/AnalyticMode/index.d.ts +2 -0
- package/dist/umd/esm/components/CurrencySelector/CurrencySelector.d.ts +10 -0
- package/dist/umd/esm/components/CurrencySelector/index.d.ts +2 -0
- package/dist/umd/esm/components/index.d.ts +2 -0
- package/dist/umd/esm/constants/campaign.d.ts +1 -0
- package/dist/umd/esm/constants/currency.d.ts +2 -0
- package/dist/umd/esm/constants/index.d.ts +2 -0
- package/dist/umd/esm/core/gemxql/utils/dayjs.d.ts +2 -0
- package/dist/umd/esm/hooks/index.d.ts +3 -0
- package/dist/umd/esm/hooks/useEnhancedEffect.d.ts +2 -0
- package/dist/umd/esm/hooks/usePopoverResizeObserver.d.ts +7 -0
- package/dist/umd/esm/hooks/useToggle.d.ts +12 -0
- package/dist/umd/esm/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/ComboChart.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GBarChart.d.ts +13 -0
- package/dist/umd/esm/shared/charts/components/GComboChart.d.ts +5 -0
- package/dist/umd/esm/shared/charts/components/GDonutChart.d.ts +5 -0
- package/dist/umd/esm/shared/charts/components/GFunnelChart/GFunnelChart.d.ts +10 -0
- package/dist/umd/esm/shared/charts/components/GFunnelChart/components/FunnelChartAction.d.ts +7 -0
- package/dist/umd/esm/shared/charts/components/GFunnelChart/components/FunnelChartActionIcon.d.ts +9 -0
- package/dist/umd/esm/shared/charts/components/GFunnelChart/components/FunnelChartActionWrapper.d.ts +16 -0
- package/dist/umd/esm/shared/charts/components/GFunnelChart/components/FunnelSelection/FunnelSelectionContent.d.ts +6 -0
- package/dist/umd/esm/shared/charts/components/GFunnelChart/components/FunnelSelection/FunnelSelectionHeader.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GFunnelChart/components/FunnelSelection/FunnelSelectionItem.d.ts +9 -0
- package/dist/umd/esm/shared/charts/components/GFunnelChart/components/FunnelSelection/FunnelSelectionPopover.d.ts +22 -0
- package/dist/umd/esm/shared/charts/components/GFunnelChart/components/FunnelSelection/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GFunnelChart/components/FunnelSelection/type.d.ts +7 -0
- package/dist/umd/esm/shared/charts/components/GFunnelChart/components/types.d.ts +23 -0
- package/dist/umd/esm/shared/charts/components/GFunnelChart/index.d.ts +3 -0
- package/dist/umd/esm/shared/charts/components/GFunnelChart/types.d.ts +11 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Arc/Arc.d.ts +16 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Arc/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartContainer/ChartContainer.d.ts +17 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartContainer/hooks/useContainerBounds.d.ts +11 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartContainer/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartElements/ChartDiv.d.ts +9 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartElements/ChartSVG.d.ts +12 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartElements/index.d.ts +6 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartErrorBoundary/ChartErrorBoundary.d.ts +25 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartErrorBoundary/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartErrorBoundary/utilities/checkForMismatchedData.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/ChartSkeleton.d.ts +31 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/DonutSkeleton/DonutSkeleton.d.ts +7 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/DonutSkeleton/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/ErrorText/ErrorText.d.ts +7 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/ErrorText/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/FunnelSkeleton/FunnelSkeleton.d.ts +7 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/FunnelSkeleton/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/GridSkeleton/GridSkeleton.d.ts +7 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/GridSkeleton/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/Shimmer/Shimmer.d.ts +3 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/Shimmer/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/SimpleBarSkeleton/SimpleBarSkeleton.d.ts +7 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/SimpleBarSkeleton/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/SimpleNormalizedSkeleton/SimpleNormalizedSkeleton.d.ts +10 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/SimpleNormalizedSkeleton/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/SparkSkeleton/SparkSkeleton.d.ts +7 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/SparkSkeleton/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/components/index.d.ts +8 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ChartSkeleton/index.d.ts +3 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ConicGradientWithStops/ConicGradientWithStops.d.ts +9 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/ConicGradientWithStops/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/DefaultPreview/DefaultPreview.d.ts +5 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/DefaultPreview/index.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChart/Chart.d.ts +9 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChart/FunnelChart.d.ts +12 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChart/components/FunnelChartXAxisArrows.d.ts +10 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChart/components/FunnelChartXAxisLabels.d.ts +13 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChart/components/FunnelSegment.d.ts +17 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChart/components/Label.d.ts +14 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChart/components/index.d.ts +4 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChart/index.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/Chart.d.ts +20 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/FunnelChartNext.d.ts +25 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/FunnelChartLabels/FunnelChartLabels.d.ts +29 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/FunnelChartLabels/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/FunnelTooltip/FunnelTooltip.d.ts +8 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/FunnelTooltip/index.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/ScaleIcon.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/ScaleIconTooltip.d.ts +6 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/Tooltip/CustomTooltip.d.ts +10 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/Tooltip/Tooltip.d.ts +16 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/Tooltip/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/TooltipOverlay.d.ts +30 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/TooltipWithPortal.d.ts +4 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/components/index.d.ts +7 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/constants.d.ts +19 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/hooks/useTooltipInteraction.d.ts +12 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/hooks/useTooltipPlacement.d.ts +27 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/index.d.ts +4 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/types.d.ts +9 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/utilities/calculate-dropoff.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/FunnelChartNext/utilities/useBuildFunnelTrends.d.ts +10 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/HorizontalGridLines/HorizontalGridLines.d.ts +10 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/HorizontalGridLines/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/SingleTextLine.d.ts +14 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/hooks/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/hooks/useLabels.d.ts +19 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/index.d.ts +3 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/endLineTruncate.d.ts +9 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/endWordTruncate.d.ts +8 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/estimateTextHeight.d.ts +8 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/formatAndAddEllipsis.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/getDiagonalLabels.d.ts +14 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/getHorizontalLabels.d.ts +15 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/getVerticalLabels.d.ts +13 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/getWidestLabel.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/shouldSkipLabel.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/tests/endWordTruncate.test.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/tests/estimateTextHeight.test.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/tests/formatAndAddEllipsis.test.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/tests/truncateLastLine.test.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/tests/truncateSingleLine.test.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/truncateLabels.d.ts +11 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/truncateLastLine.d.ts +9 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/Labels/utilities/truncateSingleLine.d.ts +8 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/LinePreview/LinePreview.d.ts +8 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/LinePreview/constants.d.ts +3 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/LinePreview/index.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/SwallowErrors/SwallowErrors.d.ts +16 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/SwallowErrors/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TextLine/TextLine.d.ts +8 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TextLine/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/TooltipContent.d.ts +8 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipContentContainer/TooltipContentContainer.d.ts +13 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipContentContainer/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipRow/TooltipRow.d.ts +11 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipRow/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipSeries/TooltipSeries.d.ts +7 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipSeries/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipSeriesName/TooltipSeriesName.d.ts +5 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipSeriesName/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipTitle/TooltipTitle.d.ts +6 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/TooltipTitle/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/components/index.d.ts +5 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/constants.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/hooks/useGetLongestLabelFromData.d.ts +5 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/index.d.ts +4 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/utilities/get-tooltip-template-content-column-count.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipContent/utilities/tests/get-tooltip-template-content-column-count.test.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/TooltipWrapper.d.ts +27 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/components/TooltipAnimatedContainer.d.ts +17 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/constants.d.ts +9 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/index.d.ts +5 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/types.d.ts +53 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/eventPoint.d.ts +15 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/getAlteredHorizontalBarPosition.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/getAlteredLineChartPosition.d.ts +9 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/getAlteredVerticalBarPosition.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/getDonutChartTooltipPosition.d.ts +8 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/getHorizontalBarChartTooltipPosition.d.ts +7 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/getLineChartTooltipPosition.d.ts +11 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/getVerticalBarChartTooltipPosition.d.ts +10 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities/shouldBlockTooltipEvents.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TooltipWrapper/utilities.d.ts +13 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/TrendIndicator.d.ts +6 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/components/Arrows/ArrowDown.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/components/Arrows/ArrowUp.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/components/Arrows/index.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/components/Svg/Svg.d.ts +10 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/components/Svg/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/components/index.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/constants.d.ts +8 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/index.d.ts +6 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/TrendIndicator/utilities/estimateTrendIndicatorWidth.d.ts +4 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/VerticalBarChart/utilities/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/VerticalBarChart/utilities/sortBarChartData.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/VerticalGridLines/VerticalGridLines.d.ts +9 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/VerticalGridLines/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/components/index.d.ts +6 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/constants.d.ts +21 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/index.d.ts +5 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useBarSpringConfig.d.ts +12 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useBrowserCheck.d.ts +5 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useCallbackRef.d.ts +3 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useDataForHorizontalChart.d.ts +15 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useDebouncedCallback.d.ts +27 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useFormattedLabels.d.ts +10 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useFunnelBarScaling.d.ts +12 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useHorizontalBarSizes.d.ts +15 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useHorizontalStackedValues.d.ts +13 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useHorizontalTicksAndScale.d.ts +15 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useHorizontalXScale.d.ts +21 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useIndexForLabels.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/usePrefersReducedMotion.d.ts +3 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/usePrintResizing.d.ts +11 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useReducedLabelIndexes.d.ts +5 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useResizeObserver.d.ts +6 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useRootContainer.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/hooks/useWatchColorVisionEvents.d.ts +8 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/index.d.ts +7 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/Bar/Bar.d.ts +14 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/Bar/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/FunnelChartConnector/FunnelChartConnector.d.ts +11 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/FunnelChartConnector/FunnelChartConnectorGradient.d.ts +6 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/FunnelChartConnector/constants.d.ts +5 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/FunnelChartConnector/index.d.ts +3 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/FunnelChartSegment/FunnelChartSegment.d.ts +17 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/FunnelChartSegment/components/AnimatedSegment.d.ts +13 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/FunnelChartSegment/components/InteractiveOverlay.d.ts +11 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/FunnelChartSegment/components/ScaledSegment.d.ts +17 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/FunnelChartSegment/constants.d.ts +4 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/FunnelChartSegment/index.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/SeriesIcon/SeriesIcon.d.ts +8 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/SeriesIcon/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/ZeroValueLine/ZeroValueLine.d.ts +9 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/ZeroValueLine/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/shared/index.d.ts +3 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/types.d.ts +209 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/base.d.ts +3 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/classnames.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/createCssConicGradient.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/createCssGradient.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/estimateStringWidthWithOffset.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/getAxisOptions.d.ts +3 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/getCSSBackgroundFromColor.d.ts +2 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/getChartId.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/getFontSize.d.ts +1 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/getStackedMinMax.d.ts +10 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/getStackedValues.d.ts +10 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/getStackedValuesFromDataSeries.d.ts +7 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/getTrendIndicatorData.d.ts +8 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/hasHiddenComparisonSeries.d.ts +9 -0
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/index.d.ts +6 -0
- package/dist/umd/esm/shared/charts/components/GSimpleBarChart.d.ts +5 -0
- package/dist/umd/esm/shared/charts/components/index.d.ts +7 -0
- package/dist/umd/esm/shared/charts/constants/chart.d.ts +2 -0
- package/dist/umd/esm/shared/charts/constants/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/contexts/GChartProvider.d.ts +9 -0
- package/dist/umd/esm/shared/charts/contexts/index.d.ts +1 -0
- package/dist/umd/esm/shared/charts/index.d.ts +4 -0
- package/dist/umd/esm/shared/charts/types/chart.d.ts +35 -0
- package/dist/umd/esm/shared/charts/types/index.d.ts +1 -0
- package/dist/umd/esm/shared/components/GActivatorPopover/GActivatorPopover.d.ts +23 -0
- package/dist/umd/esm/shared/components/GActivatorPopover/index.d.ts +1 -0
- package/dist/umd/esm/shared/components/GButton/GButton.d.ts +19 -0
- package/dist/umd/esm/shared/components/GButton/index.d.ts +1 -0
- package/dist/umd/esm/shared/components/GCheckbox/GCheckbox.d.ts +39 -0
- package/dist/umd/esm/shared/components/GCheckbox/index.d.ts +1 -0
- package/dist/umd/esm/shared/components/GChoice/ChoiceHelpText.d.ts +4 -0
- package/dist/umd/esm/shared/components/GChoice/GChoice.d.ts +44 -0
- package/dist/umd/esm/shared/components/GChoice/index.d.ts +2 -0
- package/dist/umd/esm/shared/components/GClickable/GClickable.d.ts +10 -0
- package/dist/umd/esm/shared/components/GClickable/index.d.ts +1 -0
- package/dist/umd/esm/shared/components/GDiv/GDiv.d.ts +7 -0
- package/dist/umd/esm/shared/components/GDiv/index.d.ts +1 -0
- package/dist/umd/esm/shared/components/GI18NText/GI18NText.d.ts +2 -0
- package/dist/umd/esm/shared/components/GI18NText/index.d.ts +2 -0
- package/dist/umd/esm/shared/components/GI18NText/types.d.ts +6 -0
- package/dist/umd/esm/shared/components/GOptionList/GOptionList.d.ts +11 -0
- package/dist/umd/esm/shared/components/GOptionList/index.d.ts +1 -0
- package/dist/umd/esm/shared/components/GSelector/GSelector.d.ts +27 -0
- package/dist/umd/esm/shared/components/GSelector/index.d.ts +1 -0
- package/dist/umd/esm/shared/components/GTextLink/GTextLink.d.ts +9 -0
- package/dist/umd/esm/shared/components/GTextLink/index.d.ts +1 -0
- package/dist/umd/esm/shared/components/GTimePicker/GTimePicker.d.ts +17 -0
- package/dist/umd/esm/shared/components/GTimePicker/components/BaseTimePicker.d.ts +10 -0
- package/dist/umd/esm/shared/components/GTimePicker/components/CompareTimePicker.d.ts +5 -0
- package/dist/umd/esm/shared/components/GTimePicker/components/DateTimeFilterAddition.d.ts +2 -0
- package/dist/umd/esm/shared/components/GTimePicker/components/DateTimeFilterInputs.d.ts +9 -0
- package/dist/umd/esm/shared/components/GTimePicker/components/DateTimeFilters.d.ts +15 -0
- package/dist/umd/esm/shared/components/GTimePicker/components/MainTimePicker.d.ts +3 -0
- package/dist/umd/esm/shared/components/GTimePicker/components/index.d.ts +2 -0
- package/dist/umd/esm/shared/components/GTimePicker/constants/compareDateTimePicker.d.ts +12 -0
- package/dist/umd/esm/shared/components/GTimePicker/constants/datePicker.d.ts +14 -0
- package/dist/umd/esm/shared/components/GTimePicker/constants/index.d.ts +2 -0
- package/dist/umd/esm/shared/components/GTimePicker/constants/mainDataTimePicker.d.ts +14 -0
- package/dist/umd/esm/shared/components/GTimePicker/contexts/DateTimePickerProvider.d.ts +15 -0
- package/dist/umd/esm/shared/components/GTimePicker/contexts/index.d.ts +1 -0
- package/dist/umd/esm/shared/components/GTimePicker/helpers/date-range-info.d.ts +16 -0
- package/dist/umd/esm/shared/components/GTimePicker/helpers/index.d.ts +4 -0
- package/dist/umd/esm/shared/components/GTimePicker/helpers/parse-date.d.ts +24 -0
- package/dist/umd/esm/shared/components/GTimePicker/helpers/time-picker.d.ts +76 -0
- package/dist/umd/esm/shared/components/GTimePicker/helpers/version.d.ts +2 -0
- package/dist/umd/esm/shared/components/GTimePicker/hooks/index.d.ts +3 -0
- package/dist/umd/esm/shared/components/GTimePicker/hooks/useCompareDateTimePicker.d.ts +26 -0
- package/dist/umd/esm/shared/components/GTimePicker/hooks/useDateTimeFilter.d.ts +18 -0
- package/dist/umd/esm/shared/components/GTimePicker/hooks/useDateTimePicker.d.ts +30 -0
- package/dist/umd/esm/shared/components/GTimePicker/hooks/useVersionDateTimeFilters.d.ts +9 -0
- package/dist/umd/esm/shared/components/GTimePicker/index.d.ts +7 -0
- package/dist/umd/esm/shared/components/GTimePicker/types/index.d.ts +38 -0
- package/dist/umd/esm/shared/components/GTooltip/GTooltip.d.ts +22 -0
- package/dist/umd/esm/shared/components/GTooltip/index.d.ts +2 -0
- package/dist/umd/esm/shared/components/GViewBySelector/GViewBySelector.d.ts +17 -0
- package/dist/umd/esm/shared/components/GViewBySelector/index.d.ts +1 -0
- package/dist/umd/esm/shared/components/index.d.ts +14 -1
- package/dist/umd/esm/types/analytic-mode.d.ts +5 -0
- package/dist/umd/esm/types/currency.d.ts +329 -0
- package/dist/umd/esm/types/index.d.ts +2 -0
- package/dist/umd/esm/types/metric.d.ts +27 -0
- package/dist/umd/esm/utils/index.d.ts +1 -0
- package/dist/umd/esm/utils/number.d.ts +1 -0
- package/dist/umd/esm/utils/sort.d.ts +13 -0
- package/dist/umd/gemxql.js +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/types.js +1 -1
- package/package.json +9 -1
package/dist/esm/index.js
CHANGED
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
3
3
|
import '@tanstack/react-query';
|
|
4
4
|
import dayjs from 'dayjs';
|
|
5
|
-
import quarterOfYear from 'dayjs/plugin/quarterOfYear';
|
|
6
|
-
import timezone from 'dayjs/plugin/timezone';
|
|
7
|
-
import utc from 'dayjs/plugin/utc';
|
|
8
|
-
import React, { useMemo,
|
|
9
|
-
import {
|
|
5
|
+
import quarterOfYear from 'dayjs/plugin/quarterOfYear.js';
|
|
6
|
+
import timezone from 'dayjs/plugin/timezone.js';
|
|
7
|
+
import utc from 'dayjs/plugin/utc.js';
|
|
8
|
+
import React, { useMemo, useCallback, useState, useEffect, forwardRef, Fragment as Fragment$1, useRef, useImperativeHandle, createContext, useContext } from 'react';
|
|
9
|
+
import { Text, Box, InlineStack, Icon, InlineGrid, Tooltip, Button, BlockStack, Checkbox, RadioButton, Popover, ActionList, Link, SkeletonDisplayText, List, TextField, Collapsible, useBreakpoints, Select, Scrollable, OptionList, DatePicker, ButtonGroup, Card, SkeletonBodyText } from '@shopify/polaris';
|
|
10
|
+
import { useTranslation } from 'react-i18next';
|
|
10
11
|
import { PolarisVizProvider, LineChart, DonutChart } from '@shopify/polaris-viz';
|
|
11
12
|
|
|
12
13
|
var EMetricKey;
|
|
@@ -158,12 +159,12 @@ var EAnalyticColumnKey;
|
|
|
158
159
|
EAnalyticColumnKey["TRAFFIC_SOURCE_ITEMS"] = "traffic_source_items";
|
|
159
160
|
})(EAnalyticColumnKey || (EAnalyticColumnKey = {}));
|
|
160
161
|
|
|
161
|
-
var EAnalyticMode;
|
|
162
|
+
var EAnalyticMode$1;
|
|
162
163
|
(function (EAnalyticMode) {
|
|
163
164
|
EAnalyticMode["ALL_SESSION"] = "ALL_SESSION";
|
|
164
165
|
EAnalyticMode["FIRST_SESSION"] = "FIRST_SESSION";
|
|
165
166
|
EAnalyticMode["PAGE_ONLY"] = "PAGE_ONLY";
|
|
166
|
-
})(EAnalyticMode || (EAnalyticMode = {}));
|
|
167
|
+
})(EAnalyticMode$1 || (EAnalyticMode$1 = {}));
|
|
167
168
|
|
|
168
169
|
var EAnalyticSource;
|
|
169
170
|
(function (EAnalyticSource) {
|
|
@@ -351,11 +352,25 @@ dayjs.extend(utc);
|
|
|
351
352
|
dayjs.extend(timezone);
|
|
352
353
|
dayjs.extend(quarterOfYear);
|
|
353
354
|
let tz = 'UTC';
|
|
355
|
+
const DEFAULT_DATE_FORMAT = 'YYYY-MM-DD HH:mm:ss';
|
|
354
356
|
const dayjsTz = (date) => {
|
|
355
357
|
if (!date)
|
|
356
358
|
return dayjs().tz(tz);
|
|
357
359
|
return dayjs(date).tz(tz);
|
|
358
360
|
};
|
|
361
|
+
const convertDateToTz = (date) => {
|
|
362
|
+
if (!date)
|
|
363
|
+
return dayjs.tz(dayjs().format(DEFAULT_DATE_FORMAT), tz);
|
|
364
|
+
return dayjs.tz(dayjs(date).format(DEFAULT_DATE_FORMAT), tz);
|
|
365
|
+
};
|
|
366
|
+
const dayjsTzToLocalTZ = (date) => {
|
|
367
|
+
if (!date)
|
|
368
|
+
return dayjs(dayjsTz().format(DEFAULT_DATE_FORMAT));
|
|
369
|
+
return dayjs(dayjsTz(date).format(DEFAULT_DATE_FORMAT));
|
|
370
|
+
};
|
|
371
|
+
const dayjsTzToDate = (date) => {
|
|
372
|
+
return dayjsTzToLocalTZ(date).toDate();
|
|
373
|
+
};
|
|
359
374
|
|
|
360
375
|
const TRIM_DECIMAL_ZEROS_REGEX = /\.0+$/;
|
|
361
376
|
const DEFAULT_DECIMALS = 2;
|
|
@@ -365,6 +380,10 @@ const trimDecimalZeros = (number) => {
|
|
|
365
380
|
const cleanDecimal = (number, decimals = DEFAULT_DECIMALS) => {
|
|
366
381
|
return trimDecimalZeros(number.toFixed(decimals));
|
|
367
382
|
};
|
|
383
|
+
const semverToNum = (v) => {
|
|
384
|
+
const [major, minor, patch] = v.split('.').map((n) => Number(n));
|
|
385
|
+
return (major ?? 0) * 1_000_000 + (minor ?? 0) * 1_000 + (patch ?? 0);
|
|
386
|
+
};
|
|
368
387
|
|
|
369
388
|
/**
|
|
370
389
|
* Utility function to calculate percentage and format it.
|
|
@@ -623,6 +642,11 @@ const TARGET_CHANNEL = [
|
|
|
623
642
|
{ value: ETrafficSourceType.SMS, label: 'SMS' },
|
|
624
643
|
];
|
|
625
644
|
|
|
645
|
+
const CAMPAIGN_BACKGROUND_MAIN = {
|
|
646
|
+
ORIGIN: '#2C7DFF',
|
|
647
|
+
VARIANT: '#F34A70',
|
|
648
|
+
};
|
|
649
|
+
|
|
626
650
|
const DEFAULT_CURRENT_PERIOD_LABEL = 'Current';
|
|
627
651
|
const DEFAULT_PREVIOUS_PERIOD_LABEL = 'Previous';
|
|
628
652
|
const CHART_MIN_HEIGHT = 228;
|
|
@@ -637,11 +661,195 @@ const TREND_TONE = {
|
|
|
637
661
|
};
|
|
638
662
|
const PLACEHOLDER_VALUE = '-';
|
|
639
663
|
|
|
664
|
+
const DEFAULT_CURRENCY_ANALYTIC = 'USD';
|
|
665
|
+
|
|
640
666
|
var THUMB_PRODUCT_DEFAULT = "data:image/svg+xml;base64,PHN2ZwogIHdpZHRoPSI5MCIKICBoZWlnaHQ9IjcyIgogIHZpZXdCb3g9IjAgMCA5MCA3MiIKICBmaWxsPSJub25lIgogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKPgogIDxwYXRoCiAgICBkPSJNNDguNzUgMzQuNUM0OS45OTI2IDM0LjUgNTEgMzMuNDkyNiA1MSAzMi4yNUM1MSAzMS4wMDc0IDQ5Ljk5MjYgMzAgNDguNzUgMzBDNDcuNTA3NCAzMCA0Ni41IDMxLjAwNzQgNDYuNSAzMi4yNUM0Ni41IDMzLjQ5MjYgNDcuNTA3NCAzNC41IDQ4Ljc1IDM0LjVaIgogICAgZmlsbD0iIzYxNjE2MSIKICAvPgogIDxwYXRoCiAgICBmaWxsUnVsZT0iZXZlbm9kZCIKICAgIGNsaXBSdWxlPSJldmVub2RkIgogICAgZD0iTTQzLjUyNjggMjYuMjVINDYuNDczMkM0Ny42OTI0IDI2LjI1IDQ4LjY3NTggMjYuMjUgNDkuNDcyMiAyNi4zMTVDNTAuMjkyMiAyNi4zODIgNTEuMDEyNCAyNi41MjM2IDUxLjY3ODcgMjYuODYzMUM1Mi43MzcxIDI3LjQwMjQgNTMuNTk3NiAyOC4yNjI5IDU0LjEzNjkgMjkuMzIxM0M1NC40NzY0IDI5Ljk4NzYgNTQuNjE4IDMwLjcwNzggNTQuNjg1IDMxLjUyNzhDNTQuNzUgMzIuMzI0MiA1NC43NSAzMy4zMDc2IDU0Ljc1IDM0LjUyNjhWMzcuNDczMkM1NC43NSAzOC42OTI0IDU0Ljc1IDM5LjY3NTggNTQuNjg1IDQwLjQ3MjJDNTQuNjE4IDQxLjI5MjIgNTQuNDc2NCA0Mi4wMTI0IDU0LjEzNjkgNDIuNjc4N0M1My41OTc2IDQzLjczNzEgNTIuNzM3MSA0NC41OTc2IDUxLjY3ODcgNDUuMTM2OUM1MS4wMTI0IDQ1LjQ3NjQgNTAuMjkyMiA0NS42MTggNDkuNDcyMiA0NS42ODVDNDguNjc1OCA0NS43NSA0Ny42OTI0IDQ1Ljc1IDQ2LjQ3MzIgNDUuNzVINDMuNTI2OEM0Mi4zMDc2IDQ1Ljc1IDQxLjMyNDIgNDUuNzUgNDAuNTI3OCA0NS42ODVDMzkuNzA3OCA0NS42MTggMzguOTg3NiA0NS40NzY0IDM4LjMyMTMgNDUuMTM2OUMzNy4yNjI5IDQ0LjU5NzYgMzYuNDAyNCA0My43MzcxIDM1Ljg2MzEgNDIuNjc4N0MzNS41MjM2IDQyLjAxMjQgMzUuMzgyIDQxLjI5MjIgMzUuMzE1IDQwLjQ3MjJDMzUuMjUgMzkuNjc1OCAzNS4yNSAzOC42OTI0IDM1LjI1IDM3LjQ3MzJWMzQuNTI2OEMzNS4yNSAzMy4zMDc2IDM1LjI1IDMyLjMyNDIgMzUuMzE1IDMxLjUyNzhDMzUuMzgyIDMwLjcwNzggMzUuNTIzNiAyOS45ODc2IDM1Ljg2MzEgMjkuMzIxM0MzNi40MDI0IDI4LjI2MjkgMzcuMjYyOSAyNy40MDI0IDM4LjMyMTMgMjYuODYzMUMzOC45ODc2IDI2LjUyMzYgMzkuNzA3OCAyNi4zODIgNDAuNTI3OCAyNi4zMTVDNDEuMzI0MiAyNi4yNSA0Mi4zMDc2IDI2LjI1IDQzLjUyNjggMjYuMjVaTTQwLjcxMSAyOC41NTc2QzQwLjAzMDIgMjguNjEzMiAzOS42MzkxIDI4LjcxNjkgMzkuMzQyOCAyOC44Njc5QzM4LjcwNzcgMjkuMTkxNCAzOC4xOTE0IDI5LjcwNzcgMzcuODY3OSAzMC4zNDI4QzM3LjcxNjkgMzAuNjM5MSAzNy42MTMyIDMxLjAzMDIgMzcuNTU3NiAzMS43MTFDMzcuNTAwOSAzMi40MDUgMzcuNSAzMy4yOTYzIDM3LjUgMzQuNTc1VjM2LjcxNzdMMzguNTg0MiAzNS40MTY3QzM5LjU3MjQgMzQuMjMwOSA0MS4zNjU1IDM0LjE0OTYgNDIuNDU2OSAzNS4yNDFMNDYuNSAzOS4yODQxTDQ4LjI2OTQgMzcuNTE0NkM0OS4zNzU3IDM2LjQwODMgNTEuMTk4IDM2LjUwOTMgNTIuMTc1NCAzNy43MzA5TDUyLjQ5OTUgMzguMTM2MUM1Mi41IDM3LjkxMzEgNTIuNSAzNy42NzY1IDUyLjUgMzcuNDI1VjM0LjU3NUM1Mi41IDMzLjI5NjMgNTIuNDk5MSAzMi40MDUgNTIuNDQyNCAzMS43MTFDNTIuMzg2OCAzMS4wMzAyIDUyLjI4MzEgMzAuNjM5MSA1Mi4xMzIxIDMwLjM0MjhDNTEuODA4NiAyOS43MDc3IDUxLjI5MjMgMjkuMTkxNCA1MC42NTcyIDI4Ljg2NzlDNTAuMzYwOSAyOC43MTY5IDQ5Ljk2OTggMjguNjEzMiA0OS4yODkgMjguNTU3NkM0OC41OTUgMjguNTAwOSA0Ny43MDM3IDI4LjUgNDYuNDI1IDI4LjVINDMuNTc1QzQyLjI5NjMgMjguNSA0MS40MDUgMjguNTAwOSA0MC43MTEgMjguNTU3NlpNMzcuNTU3NiA0MC4yODlDMzcuNTU0MyA0MC4yNDkyIDM3LjU1MTMgNDAuMjA4OCAzNy41NDg0IDQwLjE2NzhDMzcuNTcxMSA0MC4xNDQ4IDM3LjU5MzEgNDAuMTIwNiAzNy42MTQyIDQwLjA5NTNMNDAuMzEyNyAzNi44NTcxQzQwLjQ1MzkgMzYuNjg3NyA0MC43MSAzNi42NzYxIDQwLjg2NTkgMzYuODMyTDQ1LjcwNDUgNDEuNjcwNkM0Ni4xNDM4IDQyLjEwOTkgNDYuODU2MSA0Mi4xMDk5IDQ3LjI5NTUgNDEuNjcwNkw0OS44NjA0IDM5LjEwNTZDNTAuMDE4NSAzOC45NDc2IDUwLjI3ODggMzguOTYyIDUwLjQxODQgMzkuMTM2NUw1Mi4yMzc3IDQxLjQxMDdDNTIuMjA1NiA0MS41MDEgNTIuMTcwNCA0MS41ODIyIDUyLjEzMjEgNDEuNjU3MkM1MS44MDg2IDQyLjI5MjMgNTEuMjkyMyA0Mi44MDg2IDUwLjY1NzIgNDMuMTMyMUM1MC4zNjA5IDQzLjI4MzEgNDkuOTY5OCA0My4zODY4IDQ5LjI4OSA0My40NDI0QzQ4LjU5NSA0My40OTkxIDQ3LjcwMzcgNDMuNSA0Ni40MjUgNDMuNUg0My41NzVDNDIuMjk2MyA0My41IDQxLjQwNSA0My40OTkxIDQwLjcxMSA0My40NDI0QzQwLjAzMDIgNDMuMzg2OCAzOS42MzkxIDQzLjI4MzEgMzkuMzQyOCA0My4xMzIxQzM4LjcwNzcgNDIuODA4NiAzOC4xOTE0IDQyLjI5MjMgMzcuODY3OSA0MS42NTcyQzM3LjcxNjkgNDEuMzYwOSAzNy42MTMyIDQwLjk2OTggMzcuNTU3NiA0MC4yODlaIgogICAgZmlsbD0iIzYxNjE2MSIKICAvPgo8L3N2Zz4K";
|
|
641
667
|
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
668
|
+
var SvgArrowRightIcon = function SvgArrowRightIcon(props) {
|
|
669
|
+
return /*#__PURE__*/React.createElement("svg", Object.assign({
|
|
670
|
+
viewBox: "0 0 20 20"
|
|
671
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
|
672
|
+
fillRule: "evenodd",
|
|
673
|
+
d: "M3.5 10a.75.75 0 0 1 .75-.75h9.69l-2.72-2.72a.75.75 0 1 1 1.06-1.06l4 4a.75.75 0 0 1 0 1.06l-4 4a.75.75 0 0 1-1.06-1.06l2.72-2.72h-9.69a.75.75 0 0 1-.75-.75Z"
|
|
674
|
+
}));
|
|
675
|
+
};
|
|
676
|
+
SvgArrowRightIcon.displayName = "ArrowRightIcon";
|
|
677
|
+
|
|
678
|
+
var SvgCalendarIcon = function SvgCalendarIcon(props) {
|
|
679
|
+
return /*#__PURE__*/React.createElement("svg", Object.assign({
|
|
680
|
+
viewBox: "0 0 20 20"
|
|
681
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
|
682
|
+
fillRule: "evenodd",
|
|
683
|
+
d: "M7.75 3.5a.75.75 0 0 0-1.5 0v.407a3.075 3.075 0 0 0-.702.252 3.75 3.75 0 0 0-1.64 1.639c-.226.444-.32.924-.365 1.47-.043.531-.043 1.187-.043 2v1.464c0 .813 0 1.469.043 2 .045.546.14 1.026.366 1.47a3.75 3.75 0 0 0 1.639 1.64c.444.226.924.32 1.47.365.531.043 1.187.043 2 .043h3.383c.323 0 .542 0 .735-.02a3.75 3.75 0 0 0 3.344-3.344c.02-.193.02-.412.02-.735v-2.883c0-.813 0-1.469-.043-2-.045-.546-.14-1.026-.366-1.47a3.75 3.75 0 0 0-1.639-1.64 3.076 3.076 0 0 0-.702-.251v-.407a.75.75 0 0 0-1.5 0v.259c-.373-.009-.794-.009-1.268-.009h-1.964c-.474 0-.895 0-1.268.009v-.259Zm-1.521 1.995c.197-.1.458-.17.912-.207.462-.037 1.057-.038 1.909-.038h1.9c.853 0 1.447 0 1.91.038.453.037.714.107.912.207.423.216.767.56.983.984.1.197.17.458.207.912.014.18.024.38.029.609h-9.982c.006-.228.015-.429.03-.61.036-.453.106-.714.206-.911a2.25 2.25 0 0 1 .984-.984Zm-1.229 4.005v1.2c0 .853 0 1.447.038 1.91.037.453.107.714.207.912.216.423.56.767.984.983.197.1.458.17.912.207.462.037 1.057.038 1.909.038h3.306c.385 0 .52-.001.626-.012a2.25 2.25 0 0 0 2.006-2.006c.011-.106.012-.241.012-.626v-2.606h-10Z"
|
|
684
|
+
}));
|
|
685
|
+
};
|
|
686
|
+
SvgCalendarIcon.displayName = "CalendarIcon";
|
|
687
|
+
|
|
688
|
+
var SvgCheckIcon = function SvgCheckIcon(props) {
|
|
689
|
+
return /*#__PURE__*/React.createElement("svg", Object.assign({
|
|
690
|
+
viewBox: "0 0 20 20"
|
|
691
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
|
692
|
+
fillRule: "evenodd",
|
|
693
|
+
d: "M15.78 5.97a.75.75 0 0 1 0 1.06l-6.5 6.5a.75.75 0 0 1-1.06 0l-3.25-3.25a.75.75 0 1 1 1.06-1.06l2.72 2.72 5.97-5.97a.75.75 0 0 1 1.06 0Z"
|
|
694
|
+
}));
|
|
695
|
+
};
|
|
696
|
+
SvgCheckIcon.displayName = "CheckIcon";
|
|
697
|
+
|
|
698
|
+
var SvgChevronDownIcon = function SvgChevronDownIcon(props) {
|
|
699
|
+
return /*#__PURE__*/React.createElement("svg", Object.assign({
|
|
700
|
+
viewBox: "0 0 20 20"
|
|
701
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
|
702
|
+
fillRule: "evenodd",
|
|
703
|
+
d: "M5.72 8.47a.75.75 0 0 1 1.06 0l3.47 3.47 3.47-3.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 0 1 0-1.06Z"
|
|
704
|
+
}));
|
|
705
|
+
};
|
|
706
|
+
SvgChevronDownIcon.displayName = "ChevronDownIcon";
|
|
707
|
+
|
|
708
|
+
var SvgChevronRightIcon = function SvgChevronRightIcon(props) {
|
|
709
|
+
return /*#__PURE__*/React.createElement("svg", Object.assign({
|
|
710
|
+
viewBox: "0 0 20 20"
|
|
711
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
|
712
|
+
fillRule: "evenodd",
|
|
713
|
+
d: "M7.72 14.53a.75.75 0 0 1 0-1.06l3.47-3.47-3.47-3.47a.75.75 0 0 1 1.06-1.06l4 4a.75.75 0 0 1 0 1.06l-4 4a.75.75 0 0 1-1.06 0Z"
|
|
714
|
+
}));
|
|
715
|
+
};
|
|
716
|
+
SvgChevronRightIcon.displayName = "ChevronRightIcon";
|
|
717
|
+
|
|
718
|
+
var SvgChevronUpIcon = function SvgChevronUpIcon(props) {
|
|
719
|
+
return /*#__PURE__*/React.createElement("svg", Object.assign({
|
|
720
|
+
viewBox: "0 0 20 20"
|
|
721
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
|
722
|
+
fillRule: "evenodd",
|
|
723
|
+
d: "M14.53 12.28a.75.75 0 0 1-1.06 0l-3.47-3.47-3.47 3.47a.75.75 0 0 1-1.06-1.06l4-4a.75.75 0 0 1 1.06 0l4 4a.75.75 0 0 1 0 1.06Z"
|
|
724
|
+
}));
|
|
725
|
+
};
|
|
726
|
+
SvgChevronUpIcon.displayName = "ChevronUpIcon";
|
|
727
|
+
|
|
728
|
+
function toVal(mix) {
|
|
729
|
+
if (typeof mix === 'string') {
|
|
730
|
+
return mix;
|
|
731
|
+
}
|
|
732
|
+
else if (typeof mix === 'object' && mix !== null) {
|
|
733
|
+
return Object.keys(mix)
|
|
734
|
+
.filter((key) => mix[key])
|
|
735
|
+
.join(' ');
|
|
736
|
+
}
|
|
737
|
+
else {
|
|
738
|
+
return false;
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
function cls(...classes) {
|
|
742
|
+
return classes.map(toVal).filter(Boolean).join(' ');
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
function compareValues(a, b, order = 'asc') {
|
|
746
|
+
if (a === b)
|
|
747
|
+
return 0;
|
|
748
|
+
if (a === undefined || b === undefined) {
|
|
749
|
+
if (a === undefined && b !== undefined)
|
|
750
|
+
return order === 'asc' ? -1 : 1;
|
|
751
|
+
if (b === undefined && a !== undefined)
|
|
752
|
+
return order === 'asc' ? 1 : -1;
|
|
753
|
+
return 0;
|
|
754
|
+
}
|
|
755
|
+
const isDate = (val) => typeof val !== 'boolean' && !isNaN(Date.parse(val));
|
|
756
|
+
const isString = (val) => typeof val === 'string';
|
|
757
|
+
let comparison = 0;
|
|
758
|
+
if (isDate(a) && isDate(b)) {
|
|
759
|
+
const dateA = a instanceof Date ? a : new Date(a);
|
|
760
|
+
const dateB = b instanceof Date ? b : new Date(b);
|
|
761
|
+
comparison = dateA > dateB ? 1 : -1;
|
|
762
|
+
}
|
|
763
|
+
else if (isString(a) && isString(b)) {
|
|
764
|
+
comparison = a > b ? 1 : -1;
|
|
765
|
+
}
|
|
766
|
+
else {
|
|
767
|
+
comparison = a > b ? 1 : -1;
|
|
768
|
+
}
|
|
769
|
+
return order === 'asc' ? -comparison : comparison;
|
|
770
|
+
}
|
|
771
|
+
function getNestedValue(obj, path) {
|
|
772
|
+
if (typeof path === 'string') {
|
|
773
|
+
return path
|
|
774
|
+
.replace(/\[(\d+)\]/g, '.$1')
|
|
775
|
+
.split('.')
|
|
776
|
+
.reduce((acc, key) => acc?.[key], obj);
|
|
777
|
+
}
|
|
778
|
+
return obj[path];
|
|
779
|
+
}
|
|
780
|
+
function sortByCondition(array, options) {
|
|
781
|
+
const { attr, order = 'asc', preferredValue, backupAttr, orderArrayAttr, orderArray } = options;
|
|
782
|
+
return array.slice().sort((a, b) => {
|
|
783
|
+
const valueA = getNestedValue(a, attr);
|
|
784
|
+
const valueB = getNestedValue(b, attr);
|
|
785
|
+
if (preferredValue !== undefined) {
|
|
786
|
+
if (valueA === preferredValue && valueB !== preferredValue)
|
|
787
|
+
return -1;
|
|
788
|
+
if (valueB === preferredValue && valueA !== preferredValue)
|
|
789
|
+
return 1;
|
|
790
|
+
}
|
|
791
|
+
if (orderArrayAttr === attr && orderArray) {
|
|
792
|
+
const orderArrayValue = orderArray[order];
|
|
793
|
+
return orderArrayValue.indexOf(valueA) - orderArrayValue.indexOf(valueB);
|
|
794
|
+
}
|
|
795
|
+
const primaryComparison = compareValues(valueA, valueB, order);
|
|
796
|
+
if (primaryComparison !== 0)
|
|
797
|
+
return primaryComparison;
|
|
798
|
+
if (backupAttr)
|
|
799
|
+
return compareValues(a[backupAttr], b[backupAttr], order);
|
|
800
|
+
return 0;
|
|
801
|
+
});
|
|
802
|
+
}
|
|
803
|
+
function sortByConditions(array, optionsArray) {
|
|
804
|
+
return optionsArray.reduce((sortedArray, options) => {
|
|
805
|
+
return sortByCondition(sortedArray, options);
|
|
806
|
+
}, array.slice());
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
const GClickable = ({ children, fullWidth = false, cursor = 'pointer', onClick, onMouseEnter, onMouseLeave, }) => {
|
|
810
|
+
return (jsx("div", { role: "button", tabIndex: 0, className: cls({
|
|
811
|
+
'w-full': fullWidth,
|
|
812
|
+
'cursor-pointer': cursor === 'pointer',
|
|
813
|
+
'cursor-default': cursor === 'default',
|
|
814
|
+
'cursor-not-allowed': cursor === 'not-allowed',
|
|
815
|
+
}), onKeyDown: (e) => {
|
|
816
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
817
|
+
e.preventDefault();
|
|
818
|
+
onClick();
|
|
819
|
+
}
|
|
820
|
+
}, onClick: onClick, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, children: children }));
|
|
821
|
+
};
|
|
822
|
+
|
|
823
|
+
const GActivatorPopover = ({ onClick, active, content, textProps, boxProps: customBoxProps, disabled, icon: customIcon, }) => {
|
|
824
|
+
const boxProps = useMemo(() => {
|
|
825
|
+
if (disabled) {
|
|
826
|
+
return {
|
|
827
|
+
borderColor: 'border-disabled',
|
|
828
|
+
background: 'bg-surface-disabled',
|
|
829
|
+
...customBoxProps,
|
|
830
|
+
};
|
|
831
|
+
}
|
|
832
|
+
return {
|
|
833
|
+
shadow: active ? 'button-inset' : 'button',
|
|
834
|
+
background: active ? 'bg-fill-active' : 'bg-fill',
|
|
835
|
+
...customBoxProps,
|
|
836
|
+
};
|
|
837
|
+
}, [active, disabled, customBoxProps]);
|
|
838
|
+
const toneClass = useMemo(() => {
|
|
839
|
+
if (disabled) {
|
|
840
|
+
return 'text-[var(--p-color-text-disabled)]';
|
|
841
|
+
}
|
|
842
|
+
return active ? 'text-[var(--p-color-text-subdued)]' : 'text-[var(--p-color-text)]';
|
|
843
|
+
}, [active, disabled]);
|
|
844
|
+
const textComponent = useMemo(() => {
|
|
845
|
+
return (jsx(Text, { as: "span", variant: "bodyMd", fontWeight: "medium", tone: disabled ? 'inherit' : textProps?.tone, truncate: true, ...(textProps?.variant && { variant: textProps.variant }), children: content }));
|
|
846
|
+
}, [content, textProps, disabled]);
|
|
847
|
+
const handleClick = useCallback(() => {
|
|
848
|
+
if (disabled)
|
|
849
|
+
return;
|
|
850
|
+
onClick();
|
|
851
|
+
}, [disabled, onClick]);
|
|
852
|
+
return (jsx(GClickable, { cursor: disabled ? 'default' : 'pointer', onClick: handleClick, children: jsx("div", { className: cls(toneClass), children: jsxs(Box, { padding: "150", paddingInline: "300", paddingInlineEnd: "150", borderRadius: "200", ...boxProps, children: [customIcon && (jsxs(InlineStack, { gap: "200", align: "center", wrap: false, children: [jsx(Box, { children: jsx(Icon, { source: customIcon }) }), textComponent] })), !customIcon && (jsxs(InlineGrid, { columns: "1fr 20px", gap: "200", alignItems: "center", children: [textComponent, jsx(Icon, { source: active ? SvgChevronUpIcon : SvgChevronDownIcon })] }))] }) }) }));
|
|
645
853
|
};
|
|
646
854
|
|
|
647
855
|
const GBlockCenter = ({ height, align, inlineAlign, display, ...props }) => {
|
|
@@ -672,22 +880,224 @@ const GBlockCenter = ({ height, align, inlineAlign, display, ...props }) => {
|
|
|
672
880
|
}, children: jsx(Box, { ...props }) }));
|
|
673
881
|
};
|
|
674
882
|
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
883
|
+
const GTooltip = ({ isEnabled = true, content, maxWidth, ...props }) => {
|
|
884
|
+
const hasContent = isEnabled && !!content;
|
|
885
|
+
return hasContent ? (jsx(Tooltip, { width: "wide", hoverDelay: 500, content: content, ...props, accessibilityLabel: maxWidth?.toString() })) : (props.children);
|
|
886
|
+
};
|
|
887
|
+
|
|
888
|
+
const GButton = ({ activatorWrapper, children, iconRight, inset, stopPropagation = true, onClick, themeTone = 'light', variant, ...props }) => {
|
|
889
|
+
const Wrapper = activatorWrapper || 'div';
|
|
890
|
+
const isNeutral = variant === 'neutral';
|
|
891
|
+
const polarisVariant = isNeutral ? undefined : variant;
|
|
892
|
+
const handleClick = (e) => {
|
|
893
|
+
stopPropagation && e.stopPropagation();
|
|
894
|
+
if (props.disabled)
|
|
895
|
+
return;
|
|
896
|
+
onClick?.();
|
|
897
|
+
};
|
|
898
|
+
const button = (jsx(GTooltip, { activatorWrapper: "tooltip-content", ...props.tooltip, children: jsx(Wrapper, { className: cls('Polaris-GButton', {
|
|
899
|
+
'Polaris-GButton--icon-right': iconRight,
|
|
900
|
+
'Polaris-GButton--dark': themeTone === 'dark',
|
|
901
|
+
'Polaris-GButton--neutral': isNeutral,
|
|
902
|
+
'cursor-default': props.disabled,
|
|
903
|
+
'Polaris-GButton--fullWidth': props.fullWidth,
|
|
904
|
+
flex: inset,
|
|
905
|
+
}), onClick: handleClick, children: jsx(Button, { variant: polarisVariant, ...props, children: children }) }) }));
|
|
906
|
+
if (inset) {
|
|
907
|
+
return jsx(Box, { padding: "100", children: button });
|
|
683
908
|
}
|
|
684
|
-
|
|
685
|
-
|
|
909
|
+
return button;
|
|
910
|
+
};
|
|
911
|
+
|
|
912
|
+
const GCheckbox = ({ ...props }) => {
|
|
913
|
+
return props.multiple ? jsx(GCheckboxMultiple, { ...props }) : jsx(GCheckboxSingle, { ...props });
|
|
914
|
+
};
|
|
915
|
+
const GCheckboxMultiple = ({ options, onChange, onChangeSingleValue, emptySelected, selected, onHover, itemHovered, dependentDisabledValues, }) => {
|
|
916
|
+
const [settingOptions, setSettingOptions] = useState([]);
|
|
917
|
+
const handleChange = (value) => {
|
|
918
|
+
if (onChangeSingleValue) {
|
|
919
|
+
onChangeSingleValue(value);
|
|
920
|
+
}
|
|
921
|
+
const updatedOptions = settingOptions.includes(value)
|
|
922
|
+
? settingOptions.filter((item) => item !== value)
|
|
923
|
+
: [...settingOptions, value];
|
|
924
|
+
setSettingOptions(updatedOptions);
|
|
925
|
+
onChange(updatedOptions);
|
|
926
|
+
};
|
|
927
|
+
const handleHover = (value) => {
|
|
928
|
+
if (!onHover)
|
|
929
|
+
return;
|
|
930
|
+
onHover(value);
|
|
931
|
+
};
|
|
932
|
+
useEffect(() => {
|
|
933
|
+
setSettingOptions(() => {
|
|
934
|
+
if (selected) {
|
|
935
|
+
return options.filter((item) => selected.includes(item.value)).map((item) => item.value);
|
|
936
|
+
}
|
|
937
|
+
return [];
|
|
938
|
+
});
|
|
939
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
940
|
+
}, [selected]);
|
|
941
|
+
return (jsx(BlockStack, { children: options.map((item) => {
|
|
942
|
+
const hasForceUnchecked = dependentDisabledValues?.has(item.value);
|
|
943
|
+
const isOnlyOneSelected = emptySelected && options.filter((opt) => opt.selected).length === 1 && emptySelected;
|
|
944
|
+
const handleCheckboxClick = () => {
|
|
945
|
+
if (isOnlyOneSelected)
|
|
946
|
+
return;
|
|
947
|
+
handleChange(item.value);
|
|
948
|
+
};
|
|
949
|
+
return (jsx("div", { className: cls('flex w-full items-center justify-between', {
|
|
950
|
+
'cursor-not-allowed': isOnlyOneSelected,
|
|
951
|
+
'cursor-pointer': !isOnlyOneSelected,
|
|
952
|
+
'bg-surface-hover rounded-lg': itemHovered === item.value,
|
|
953
|
+
}), onClick: () => {
|
|
954
|
+
if (isOnlyOneSelected || item.disabled)
|
|
955
|
+
return;
|
|
956
|
+
handleCheckboxClick();
|
|
957
|
+
}, onMouseEnter: () => handleHover(item.value), onMouseLeave: () => handleHover(undefined), children: isOnlyOneSelected ? (jsx(GTooltip, { isEnabled: item.tooltip?.isEnabled, ...item.tooltip, children: jsx(Box, { paddingBlock: "150", paddingInline: "200", width: "100%", children: jsxs(InlineStack, { blockAlign: "center", gap: "150", children: [jsx(Checkbox, { label: item.label, labelHidden: true, checked: item.selected, disabled: true }), jsx(Text, { as: "p", variant: "bodyMd", tone: "subdued", children: item.label })] }) }) })) : (jsx(Box, { paddingBlock: "150", paddingInline: "200", minWidth: "0", children: jsxs(InlineStack, { blockAlign: "center", gap: "150", wrap: false, children: [jsx(Checkbox, { label: item.label, labelHidden: true, checked: hasForceUnchecked ? false : settingOptions.includes(item.value), onChange: handleCheckboxClick, disabled: item.disabled }), jsxs(Box, { minWidth: "0", children: [jsx(Text, { as: "p", variant: "bodyMd", truncate: true, tone: hasForceUnchecked ? 'disabled' : 'inherit', children: item.label }), item.description && (jsx(Text, { as: "p", variant: "bodySm", tone: "disabled", truncate: true, children: item.description }))] })] }) })) }, item.value));
|
|
958
|
+
}) }));
|
|
959
|
+
};
|
|
960
|
+
const GCheckboxSingle = ({ options, onChange }) => {
|
|
961
|
+
return (jsx(BlockStack, { gap: "300", children: options.map((item) => (jsx(RadioButton, { label: item.label, checked: item.selected, onChange: () => onChange(item.value), helpText: item.helpText ? jsx(ChoiceHelpText, { item: item }) : undefined }, item.value))) }));
|
|
962
|
+
};
|
|
963
|
+
|
|
964
|
+
const GDiv = forwardRef(({ children, onClick, ...props }, ref) => {
|
|
965
|
+
const onKeyDown = useCallback((e) => {
|
|
966
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
967
|
+
e.preventDefault();
|
|
968
|
+
onClick?.();
|
|
969
|
+
}
|
|
970
|
+
}, [onClick]);
|
|
971
|
+
return (jsx("div", { ref: ref, ...props, role: "button", tabIndex: 0, onKeyDown: onKeyDown, onClick: onClick, children: children }));
|
|
972
|
+
});
|
|
973
|
+
GDiv.displayName = 'GDiv';
|
|
974
|
+
|
|
975
|
+
const TRANSFORMER_REGEX = /\[(\d+)\](.*?)\[\]/g;
|
|
976
|
+
const GI18NText = (props) => {
|
|
977
|
+
const { children, transformers } = props;
|
|
978
|
+
if (!transformers || Object.values(transformers).length === 0) {
|
|
979
|
+
return jsx(Text, { ...props, children: children });
|
|
686
980
|
}
|
|
981
|
+
const transformContent = (text) => {
|
|
982
|
+
const parts = [];
|
|
983
|
+
let lastIndex = 0;
|
|
984
|
+
text.replace(TRANSFORMER_REGEX, (match, number, childrenContent, offset) => {
|
|
985
|
+
parts.push(text.slice(lastIndex, offset));
|
|
986
|
+
const transformerFunction = transformers[number];
|
|
987
|
+
if (typeof transformerFunction === 'function') {
|
|
988
|
+
parts.push(transformerFunction(childrenContent));
|
|
989
|
+
}
|
|
990
|
+
else {
|
|
991
|
+
parts.push(match);
|
|
992
|
+
}
|
|
993
|
+
lastIndex = offset + match.length;
|
|
994
|
+
return match;
|
|
995
|
+
});
|
|
996
|
+
parts.push(text.slice(lastIndex));
|
|
997
|
+
return parts.map((part, index) => jsx(Fragment$1, { children: part }, index));
|
|
998
|
+
};
|
|
999
|
+
return jsx(Text, { ...props, children: typeof children === 'string' ? transformContent(children) : children });
|
|
1000
|
+
};
|
|
1001
|
+
|
|
1002
|
+
function GOptionList({ options, selected, onChange }) {
|
|
1003
|
+
const handleSelect = (value) => {
|
|
1004
|
+
onChange([value]);
|
|
1005
|
+
};
|
|
1006
|
+
const handleKeyDown = (event, value) => {
|
|
1007
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
1008
|
+
event.preventDefault();
|
|
1009
|
+
handleSelect(value);
|
|
1010
|
+
}
|
|
1011
|
+
};
|
|
1012
|
+
return (jsx(Box, { padding: "150", children: jsx(BlockStack, { gap: "100", children: options.map((option) => {
|
|
1013
|
+
const isSelected = selected.includes(option.value);
|
|
1014
|
+
return (jsx("div", { role: "option", "aria-selected": isSelected, tabIndex: 0, onClick: () => handleSelect(option.value), onKeyDown: (e) => handleKeyDown(e, option.value), className: cls('p-1.5 pl-4 rounded-lg cursor-pointer', {
|
|
1015
|
+
'bg-[#F1F1F1]': isSelected,
|
|
1016
|
+
'hover:bg-[#F1F1F1]': !isSelected,
|
|
1017
|
+
}), children: jsxs(InlineStack, { align: "space-between", blockAlign: "center", wrap: false, gap: "200", children: [jsx(Box, { minWidth: "0", children: option.label }), isSelected && (jsx(Box, { children: jsx(Icon, { source: SvgCheckIcon }) }))] }) }, option.value));
|
|
1018
|
+
}) }) }));
|
|
687
1019
|
}
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
1020
|
+
|
|
1021
|
+
const GSelector = (props) => {
|
|
1022
|
+
const [popoverActive, setPopoverActive] = useState(false);
|
|
1023
|
+
const { activatorText, selected, options, emptyLabel, preferredAlignment = 'right', formatActivatorContent = (text) => text.join(', '), } = props;
|
|
1024
|
+
const togglePopoverActive = useCallback(() => setPopoverActive((prev) => !prev), []);
|
|
1025
|
+
const selectedOption = useMemo(() => {
|
|
1026
|
+
return options
|
|
1027
|
+
.filter((item) => item.active || item.id === selected)
|
|
1028
|
+
.map((item) => item.content || '')
|
|
1029
|
+
.filter((item) => !!item);
|
|
1030
|
+
}, [options, selected]);
|
|
1031
|
+
const activatorContent = useMemo(() => {
|
|
1032
|
+
if (selectedOption.length) {
|
|
1033
|
+
const selected = formatActivatorContent(selectedOption);
|
|
1034
|
+
return activatorText ? `${activatorText}: ${selected}` : selected;
|
|
1035
|
+
}
|
|
1036
|
+
if (emptyLabel) {
|
|
1037
|
+
return activatorText ? `${activatorText}: ${emptyLabel}` : emptyLabel;
|
|
1038
|
+
}
|
|
1039
|
+
return activatorText;
|
|
1040
|
+
}, [selectedOption, emptyLabel, activatorText, formatActivatorContent]);
|
|
1041
|
+
const selectorMarkup = useMemo(() => {
|
|
1042
|
+
switch (props.variant) {
|
|
1043
|
+
case 'choice':
|
|
1044
|
+
return jsx(GSelectorChoice, { ...props, setPopoverActive: togglePopoverActive });
|
|
1045
|
+
case 'action-list':
|
|
1046
|
+
return jsx(GSelectorActionList, { ...props, setPopoverActive: togglePopoverActive });
|
|
1047
|
+
}
|
|
1048
|
+
}, [props, togglePopoverActive]);
|
|
1049
|
+
return (jsx(Popover, { active: popoverActive, activator: jsx("div", { className: "flex items-center gap-1", children: jsx(Button, { onClick: togglePopoverActive, disclosure: popoverActive ? 'up' : 'down', children: activatorContent }) }), autofocusTarget: "first-node", fluidContent: true, onClose: togglePopoverActive, preferredAlignment: preferredAlignment, children: selectorMarkup }));
|
|
1050
|
+
};
|
|
1051
|
+
const GSelectorChoice = ({ options, selected, onSelect, maxWidth, minWidth, clearable, setPopoverActive, }) => {
|
|
1052
|
+
const { t } = useTranslation();
|
|
1053
|
+
const items = useMemo(() => {
|
|
1054
|
+
if (!options?.length)
|
|
1055
|
+
return [];
|
|
1056
|
+
return options.map((option) => ({
|
|
1057
|
+
value: option.id,
|
|
1058
|
+
label: option.content || '',
|
|
1059
|
+
selected: false,
|
|
1060
|
+
}));
|
|
1061
|
+
}, [options]);
|
|
1062
|
+
const handleSelection = useCallback((value) => {
|
|
1063
|
+
onSelect(value);
|
|
1064
|
+
}, [onSelect]);
|
|
1065
|
+
return (jsx(Box, { maxWidth: maxWidth, minWidth: minWidth, paddingBlock: "150", children: jsxs(BlockStack, { children: [jsx(BlockStack, { gap: "0", children: jsx(GCheckbox, { multiple: true, options: items, selected: selected, onChange: handleSelection }) }), clearable && (jsx(Box, { paddingBlock: "150", paddingInline: "200", children: jsx(InlineStack, { blockAlign: "center", align: "start", children: jsx(Button, { disabled: !selected?.length, onClick: () => {
|
|
1066
|
+
handleSelection([]);
|
|
1067
|
+
setPopoverActive(false);
|
|
1068
|
+
}, variant: "plain", children: t('Clear') }) }) }))] }) }));
|
|
1069
|
+
};
|
|
1070
|
+
const GSelectorActionList = ({ options, selected, onSelect, helpText, maxWidth, minWidth, setPopoverActive, }) => {
|
|
1071
|
+
const handleSelection = useCallback((value) => {
|
|
1072
|
+
onSelect(value);
|
|
1073
|
+
setPopoverActive(false);
|
|
1074
|
+
}, [onSelect, setPopoverActive]);
|
|
1075
|
+
const items = useMemo(() => {
|
|
1076
|
+
if (!options?.length)
|
|
1077
|
+
return [];
|
|
1078
|
+
return options.map((option) => ({
|
|
1079
|
+
id: option.id,
|
|
1080
|
+
content: option.content,
|
|
1081
|
+
helpText: option.helpText,
|
|
1082
|
+
onAction: () => handleSelection(option.id),
|
|
1083
|
+
active: option.active || option.id === selected,
|
|
1084
|
+
suffix: (option.active || option.id === selected) && jsx(Icon, { source: SvgCheckIcon, tone: "success" }),
|
|
1085
|
+
}));
|
|
1086
|
+
}, [options, selected, handleSelection]);
|
|
1087
|
+
return (jsx(Box, { maxWidth: maxWidth, minWidth: minWidth, children: jsxs(BlockStack, { gap: "0", children: [jsx(ActionList, { actionRole: "menuitem", items: items }), helpText] }) }));
|
|
1088
|
+
};
|
|
1089
|
+
|
|
1090
|
+
const GTextLink = ({ linkAction, isDisabled, disabledFocus, children }) => {
|
|
1091
|
+
if (!linkAction || isDisabled) {
|
|
1092
|
+
return jsx(Fragment, { children: children });
|
|
1093
|
+
}
|
|
1094
|
+
return (jsx("span", { className: cls('GTextLink', { 'GTextLink--disabled-focus': disabledFocus }), children: jsx(Link, { ...linkAction, children: jsx(Fragment, { children: children }) }) }));
|
|
1095
|
+
};
|
|
1096
|
+
|
|
1097
|
+
const GSkeletonDisplayText = (props) => {
|
|
1098
|
+
const height = props.height ?? '50px';
|
|
1099
|
+
return (jsxs("div", { className: "Polaris-GSkeletonDisplayText", children: [jsx("style", { children: `.Polaris-GSkeletonDisplayText .Polaris-SkeletonDisplayText__DisplayText { height: ${height} !important; }` }), jsx(SkeletonDisplayText, { maxWidth: "100%", size: "extraLarge" })] }));
|
|
1100
|
+
};
|
|
691
1101
|
|
|
692
1102
|
/**
|
|
693
1103
|
* Helper function to generate a variation class name.
|
|
@@ -748,6 +1158,1065 @@ const GTooltipCard = forwardRef((props, ref) => {
|
|
|
748
1158
|
});
|
|
749
1159
|
GTooltipCard.displayName = 'GTooltipCard';
|
|
750
1160
|
|
|
1161
|
+
var MainDateTimePickerAlias;
|
|
1162
|
+
(function (MainDateTimePickerAlias) {
|
|
1163
|
+
MainDateTimePickerAlias["TODAY"] = "today";
|
|
1164
|
+
MainDateTimePickerAlias["YESTERDAY"] = "yesterday";
|
|
1165
|
+
MainDateTimePickerAlias["LAST_7_DAYS"] = "last7days";
|
|
1166
|
+
MainDateTimePickerAlias["LAST_30_DAYS"] = "last30days";
|
|
1167
|
+
MainDateTimePickerAlias["LAST_90_DAYS"] = "last90days";
|
|
1168
|
+
MainDateTimePickerAlias["LAST_365_DAYS"] = "last365days";
|
|
1169
|
+
MainDateTimePickerAlias["LAST_MONTH"] = "lastMonth";
|
|
1170
|
+
MainDateTimePickerAlias["LAST_12_MONTHS"] = "last12Months";
|
|
1171
|
+
MainDateTimePickerAlias["LAST_YEAR"] = "lastYear";
|
|
1172
|
+
})(MainDateTimePickerAlias || (MainDateTimePickerAlias = {}));
|
|
1173
|
+
function getDateTimeFilterMapping() {
|
|
1174
|
+
const mappings = {
|
|
1175
|
+
[MainDateTimePickerAlias.TODAY]: {
|
|
1176
|
+
title: 'Today',
|
|
1177
|
+
alias: MainDateTimePickerAlias.TODAY,
|
|
1178
|
+
getDateRange: getToday,
|
|
1179
|
+
},
|
|
1180
|
+
[MainDateTimePickerAlias.YESTERDAY]: {
|
|
1181
|
+
title: 'Yesterday',
|
|
1182
|
+
alias: MainDateTimePickerAlias.YESTERDAY,
|
|
1183
|
+
getDateRange: getYesterday,
|
|
1184
|
+
},
|
|
1185
|
+
[MainDateTimePickerAlias.LAST_7_DAYS]: {
|
|
1186
|
+
title: 'Last 7 days',
|
|
1187
|
+
alias: MainDateTimePickerAlias.LAST_7_DAYS,
|
|
1188
|
+
getDateRange: getLast7Days,
|
|
1189
|
+
},
|
|
1190
|
+
[MainDateTimePickerAlias.LAST_30_DAYS]: {
|
|
1191
|
+
title: 'Last 30 days',
|
|
1192
|
+
alias: MainDateTimePickerAlias.LAST_30_DAYS,
|
|
1193
|
+
getDateRange: getLast30Days,
|
|
1194
|
+
},
|
|
1195
|
+
[MainDateTimePickerAlias.LAST_90_DAYS]: {
|
|
1196
|
+
title: 'Last 90 days',
|
|
1197
|
+
alias: MainDateTimePickerAlias.LAST_90_DAYS,
|
|
1198
|
+
getDateRange: getLast90Days,
|
|
1199
|
+
},
|
|
1200
|
+
[MainDateTimePickerAlias.LAST_365_DAYS]: {
|
|
1201
|
+
title: 'Last 365 days',
|
|
1202
|
+
alias: MainDateTimePickerAlias.LAST_365_DAYS,
|
|
1203
|
+
getDateRange: getLast365Days,
|
|
1204
|
+
},
|
|
1205
|
+
[MainDateTimePickerAlias.LAST_MONTH]: {
|
|
1206
|
+
title: 'Last month',
|
|
1207
|
+
alias: MainDateTimePickerAlias.LAST_MONTH,
|
|
1208
|
+
getDateRange: getLastMonth,
|
|
1209
|
+
},
|
|
1210
|
+
[MainDateTimePickerAlias.LAST_12_MONTHS]: {
|
|
1211
|
+
title: 'Last 12 months',
|
|
1212
|
+
alias: MainDateTimePickerAlias.LAST_12_MONTHS,
|
|
1213
|
+
getDateRange: getLast12Months,
|
|
1214
|
+
},
|
|
1215
|
+
[MainDateTimePickerAlias.LAST_YEAR]: {
|
|
1216
|
+
title: 'Last year',
|
|
1217
|
+
alias: MainDateTimePickerAlias.LAST_YEAR,
|
|
1218
|
+
getDateRange: getLastYear,
|
|
1219
|
+
},
|
|
1220
|
+
};
|
|
1221
|
+
return mappings;
|
|
1222
|
+
}
|
|
1223
|
+
function getDateTimeFilterByAlias(alias) {
|
|
1224
|
+
const mappings = getDateTimeFilterMapping();
|
|
1225
|
+
return mappings[alias];
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
const DATE_FORMAT = {
|
|
1229
|
+
YMD: 'YYYY-MM-DD', // 2025-01-01
|
|
1230
|
+
MONTH_YEAR: 'MMM YYYY', // Jan 2025
|
|
1231
|
+
FULL: 'MMMM D, YYYY', // January 1, 2025
|
|
1232
|
+
FULL_WITH_TIME: 'MMMM D, YYYY [at] h:mm A', // January 1, 2025 at 12:00 AM
|
|
1233
|
+
SHORT: 'MMM DD, YYYY', // Jan 01, 2025
|
|
1234
|
+
SHORT_NO_PAD: 'MMM D, YYYY', // Jan 1, 2025
|
|
1235
|
+
SHORT_WITH_TIME: 'MMM D, YYYY [at] h:mm A', // Jan 1, 2025 at 12:00 AM
|
|
1236
|
+
MONTH_DAY: 'MMM D', // Jan 1
|
|
1237
|
+
DAY_YEAR: 'D, YYYY', // 1, 2025
|
|
1238
|
+
TIME: 'h:mm A', // 12:00 AM
|
|
1239
|
+
MONTH_DAY_WITH_TIME: 'MMM D [at] h:mm A', // Jan 1 at 12:00 AM
|
|
1240
|
+
YEAR: 'YYYY', // 2025
|
|
1241
|
+
};
|
|
1242
|
+
|
|
1243
|
+
function parseYearMonthDayDateString(input) {
|
|
1244
|
+
// Date-only strings (e.g. "1970-01-01") are treated as UTC, not local time
|
|
1245
|
+
// when using new Date()
|
|
1246
|
+
// We need to split year, month, day to pass into new Date() separately
|
|
1247
|
+
// to get a localized Date
|
|
1248
|
+
return dayjs(input).valueOf();
|
|
1249
|
+
}
|
|
1250
|
+
const VALID_YYYY_MM_DD_DATE_REGEX = /^\d{4}-\d{1,2}-\d{1,2}/;
|
|
1251
|
+
function isDate(date) {
|
|
1252
|
+
return !isNaN(new Date(date).getDate());
|
|
1253
|
+
}
|
|
1254
|
+
function isValidYearMonthDayDateString(date) {
|
|
1255
|
+
return VALID_YYYY_MM_DD_DATE_REGEX.test(date) && isDate(date);
|
|
1256
|
+
}
|
|
1257
|
+
function isValidDate(date) {
|
|
1258
|
+
return date.length === 10 && isValidYearMonthDayDateString(date);
|
|
1259
|
+
}
|
|
1260
|
+
function formatDate(timestamp, type) {
|
|
1261
|
+
const date = convertDateToTz(timestamp);
|
|
1262
|
+
if (type === 'YMD') {
|
|
1263
|
+
return date.format(DATE_FORMAT.YMD);
|
|
1264
|
+
}
|
|
1265
|
+
if (type === 'MY') {
|
|
1266
|
+
return date.format(DATE_FORMAT.MONTH_YEAR);
|
|
1267
|
+
}
|
|
1268
|
+
if (type === 'FULL') {
|
|
1269
|
+
return date.format(DATE_FORMAT.FULL);
|
|
1270
|
+
}
|
|
1271
|
+
if (type === 'FULL_WITH_TIME') {
|
|
1272
|
+
return date.format(DATE_FORMAT.FULL_WITH_TIME);
|
|
1273
|
+
}
|
|
1274
|
+
return date.format(DATE_FORMAT.SHORT);
|
|
1275
|
+
}
|
|
1276
|
+
function formatTime(timestamp) {
|
|
1277
|
+
const date = convertDateToTz(timestamp);
|
|
1278
|
+
return date.format(DATE_FORMAT.TIME);
|
|
1279
|
+
}
|
|
1280
|
+
function isSameDayTimestamp(since, until) {
|
|
1281
|
+
const sinceDate = convertDateToTz(since);
|
|
1282
|
+
const untilDate = convertDateToTz(until);
|
|
1283
|
+
return sinceDate.isSame(untilDate, 'day');
|
|
1284
|
+
}
|
|
1285
|
+
function formatTimeRange(data) {
|
|
1286
|
+
const { since, until, format = DATE_FORMAT.TIME, showNow = false } = data;
|
|
1287
|
+
const sinceDate = convertDateToTz(since);
|
|
1288
|
+
const untilDate = convertDateToTz(until);
|
|
1289
|
+
return `${sinceDate.format(format)} - ${showNow ? 'Now' : untilDate.format(format)}`;
|
|
1290
|
+
}
|
|
1291
|
+
function formatDateTimeRange(data) {
|
|
1292
|
+
const { since, until, isShowNow } = data;
|
|
1293
|
+
const sinceDate = convertDateToTz(since);
|
|
1294
|
+
const untilDate = convertDateToTz(until);
|
|
1295
|
+
const isToday = sinceDate.isSame(dayjsTz(), 'day');
|
|
1296
|
+
const startTime = sinceDate.format(DATE_FORMAT.TIME);
|
|
1297
|
+
const endTime = untilDate.format(DATE_FORMAT.TIME);
|
|
1298
|
+
if (isToday) {
|
|
1299
|
+
const formatEndTime = isShowNow ? 'Now' : endTime;
|
|
1300
|
+
return `Today at ${startTime} - ${formatEndTime}`;
|
|
1301
|
+
}
|
|
1302
|
+
if (isShowNow) {
|
|
1303
|
+
return `${sinceDate.format(DATE_FORMAT.SHORT_WITH_TIME)} - Now`;
|
|
1304
|
+
}
|
|
1305
|
+
if (sinceDate.isSame(untilDate, 'day')) {
|
|
1306
|
+
return `${sinceDate.format(DATE_FORMAT.SHORT_WITH_TIME)} - ${endTime}`;
|
|
1307
|
+
}
|
|
1308
|
+
if (sinceDate.isSame(untilDate, 'day')) {
|
|
1309
|
+
const time = formatTimeRange({ since, until });
|
|
1310
|
+
return `${sinceDate.format(DATE_FORMAT.SHORT)} (${time})`;
|
|
1311
|
+
}
|
|
1312
|
+
if (sinceDate.isSame(untilDate, 'year')) {
|
|
1313
|
+
return `${sinceDate.format(DATE_FORMAT.MONTH_DAY_WITH_TIME)} - ${untilDate.format(DATE_FORMAT.MONTH_DAY_WITH_TIME)}, ${untilDate.format(DATE_FORMAT.YEAR)}`;
|
|
1314
|
+
}
|
|
1315
|
+
return `${sinceDate.format(DATE_FORMAT.SHORT_WITH_TIME)} - ${untilDate.format(DATE_FORMAT.SHORT_WITH_TIME)}`;
|
|
1316
|
+
}
|
|
1317
|
+
const formatDayjs = (date, isEndDay = false, formatTemplate) => {
|
|
1318
|
+
// const isUTC = date.isUTC?.() ?? false;
|
|
1319
|
+
// if (isUTC) return date.format();
|
|
1320
|
+
if (isEndDay && isMidnight(date)) {
|
|
1321
|
+
return date.endOf('day').format(formatTemplate);
|
|
1322
|
+
}
|
|
1323
|
+
return date.format(formatTemplate);
|
|
1324
|
+
};
|
|
1325
|
+
const getEndOfDayBy = (value, formatTemplate) => {
|
|
1326
|
+
if (!value) {
|
|
1327
|
+
return formatDayjs(dayjsTz().endOf('day'), false, formatTemplate);
|
|
1328
|
+
}
|
|
1329
|
+
return formatDayjs(dayjsTz(value).endOf('day'), false, formatTemplate);
|
|
1330
|
+
};
|
|
1331
|
+
const isMidnight = (date) => {
|
|
1332
|
+
return date.hour() === 0 && date.minute() === 0;
|
|
1333
|
+
};
|
|
1334
|
+
const formatMs = (ms) => {
|
|
1335
|
+
const totalSeconds = Math.floor(ms / 1000);
|
|
1336
|
+
const hours = Math.floor(totalSeconds / 3600);
|
|
1337
|
+
const minutes = Math.floor((totalSeconds % 3600) / 60);
|
|
1338
|
+
const seconds = totalSeconds % 60;
|
|
1339
|
+
return [hours, minutes, seconds].map((v) => String(v).padStart(2, '0')).join(':');
|
|
1340
|
+
};
|
|
1341
|
+
|
|
1342
|
+
function getDateRangeTitle(since, until) {
|
|
1343
|
+
const sinceDate = convertDateToTz(since);
|
|
1344
|
+
const untilDate = convertDateToTz(until);
|
|
1345
|
+
if (sinceDate.isSame(untilDate, 'day')) {
|
|
1346
|
+
return sinceDate.format(DATE_FORMAT.SHORT);
|
|
1347
|
+
}
|
|
1348
|
+
if (sinceDate.isSame(untilDate, 'month') && sinceDate.isSame(untilDate, 'year')) {
|
|
1349
|
+
return `${sinceDate.format(DATE_FORMAT.MONTH_DAY)} - ${untilDate.format(DATE_FORMAT.DAY_YEAR)}`;
|
|
1350
|
+
}
|
|
1351
|
+
if (sinceDate.isSame(untilDate, 'year')) {
|
|
1352
|
+
return `${sinceDate.format(DATE_FORMAT.MONTH_DAY)} - ${untilDate.format(DATE_FORMAT.SHORT_NO_PAD)}`;
|
|
1353
|
+
}
|
|
1354
|
+
return `${sinceDate.format(DATE_FORMAT.SHORT_NO_PAD)} - ${untilDate.format(DATE_FORMAT.SHORT_NO_PAD)}`;
|
|
1355
|
+
}
|
|
1356
|
+
/**
|
|
1357
|
+
* Resolves a { title, alias } pair from a since/until date range.
|
|
1358
|
+
* Matches against known presets (today, last 7 days, …); falls back to
|
|
1359
|
+
* a formatted custom range with alias "custom".
|
|
1360
|
+
*/
|
|
1361
|
+
function getDateTimeFilterBase(since, until) {
|
|
1362
|
+
const now = dayjsTz();
|
|
1363
|
+
const sinceDate = convertDateToTz(since);
|
|
1364
|
+
const untilDate = convertDateToTz(until);
|
|
1365
|
+
const mappings = getDateTimeFilterMapping();
|
|
1366
|
+
for (const mapping of Object.values(mappings)) {
|
|
1367
|
+
const range = mapping.getDateRange(now);
|
|
1368
|
+
const expectedSince = convertDateToTz(range.since);
|
|
1369
|
+
const expectedUntil = convertDateToTz(range.until);
|
|
1370
|
+
const isSameSince = sinceDate.isSame(expectedSince, 'day');
|
|
1371
|
+
const isSameUntil = untilDate.isSame(expectedUntil, 'day');
|
|
1372
|
+
if (isSameSince && isSameUntil) {
|
|
1373
|
+
return { title: mapping.title, alias: mapping.alias };
|
|
1374
|
+
}
|
|
1375
|
+
}
|
|
1376
|
+
return {
|
|
1377
|
+
title: getDateRangeTitle(since, until),
|
|
1378
|
+
alias: 'custom',
|
|
1379
|
+
};
|
|
1380
|
+
}
|
|
1381
|
+
function getVersionDateRangeTitle(data) {
|
|
1382
|
+
const { since, until, isShowNow } = data;
|
|
1383
|
+
const sinceDate = convertDateToTz(since);
|
|
1384
|
+
const isToday = sinceDate.isSame(dayjsTz(), 'day');
|
|
1385
|
+
if (isToday)
|
|
1386
|
+
return getDateTimeFilterByAlias(MainDateTimePickerAlias.TODAY).title;
|
|
1387
|
+
if (isShowNow)
|
|
1388
|
+
return `${sinceDate.format(DATE_FORMAT.SHORT_NO_PAD)} - Now`;
|
|
1389
|
+
return getDateRangeTitle(since, until);
|
|
1390
|
+
}
|
|
1391
|
+
const getVersionDateDescription = ({ since, until, isShowNow }) => {
|
|
1392
|
+
const isSameDay = isSameDayTimestamp(since, until);
|
|
1393
|
+
if (!isSameDay)
|
|
1394
|
+
return undefined;
|
|
1395
|
+
return formatTimeRange({ since, until, showNow: isShowNow });
|
|
1396
|
+
};
|
|
1397
|
+
|
|
1398
|
+
const convertToDateTimeFilters = (versions) => {
|
|
1399
|
+
const dataVersions = [...versions].sort((a, b) => semverToNum(b.version) - semverToNum(a.version));
|
|
1400
|
+
return dataVersions
|
|
1401
|
+
.map((item) => {
|
|
1402
|
+
if (!item.startedAt)
|
|
1403
|
+
return false;
|
|
1404
|
+
const isCurrentVersion = !item.completedAt;
|
|
1405
|
+
const since = dayjsTzToLocalTZ(item.startedAt).valueOf();
|
|
1406
|
+
const until = isCurrentVersion
|
|
1407
|
+
? dayjsTzToLocalTZ(getEndOfDayBy()).valueOf()
|
|
1408
|
+
: dayjsTzToLocalTZ(item.completedAt).valueOf();
|
|
1409
|
+
const title = getVersionDateRangeTitle({ since, until, isShowNow: isCurrentVersion });
|
|
1410
|
+
const description = getVersionDateDescription({ since, until, isShowNow: isCurrentVersion });
|
|
1411
|
+
return {
|
|
1412
|
+
title,
|
|
1413
|
+
alias: `${item.version}`,
|
|
1414
|
+
since,
|
|
1415
|
+
until,
|
|
1416
|
+
isVersion: true,
|
|
1417
|
+
isCurrentVersion,
|
|
1418
|
+
description,
|
|
1419
|
+
versionId: item.id,
|
|
1420
|
+
};
|
|
1421
|
+
})
|
|
1422
|
+
.filter(Boolean);
|
|
1423
|
+
};
|
|
1424
|
+
|
|
1425
|
+
const getNoComparison = () => {
|
|
1426
|
+
return {
|
|
1427
|
+
since: 0,
|
|
1428
|
+
until: 0,
|
|
1429
|
+
};
|
|
1430
|
+
};
|
|
1431
|
+
const getPreviousPeriod = (value) => {
|
|
1432
|
+
const { since, until, alias } = value;
|
|
1433
|
+
const sinceDate = dayjs(since);
|
|
1434
|
+
const untilDate = dayjs(until);
|
|
1435
|
+
if (alias === MainDateTimePickerAlias.LAST_MONTH) {
|
|
1436
|
+
return getLastMonth(sinceDate);
|
|
1437
|
+
}
|
|
1438
|
+
if (alias === MainDateTimePickerAlias.LAST_12_MONTHS) {
|
|
1439
|
+
return getLast12Months(sinceDate);
|
|
1440
|
+
}
|
|
1441
|
+
if (alias === MainDateTimePickerAlias.LAST_YEAR) {
|
|
1442
|
+
return getLastYear(sinceDate);
|
|
1443
|
+
}
|
|
1444
|
+
const duration = untilDate.diff(sinceDate, 'day') + 1;
|
|
1445
|
+
const previousSince = sinceDate.subtract(duration, 'day');
|
|
1446
|
+
const previousUntil = untilDate.subtract(duration, 'day');
|
|
1447
|
+
return {
|
|
1448
|
+
since: previousSince.valueOf(),
|
|
1449
|
+
until: previousUntil.valueOf(),
|
|
1450
|
+
};
|
|
1451
|
+
};
|
|
1452
|
+
const createPreviousRange = (subtractAmount, subtractUnit) => (value) => {
|
|
1453
|
+
const { since, until } = value;
|
|
1454
|
+
const sinceDate = dayjs(since);
|
|
1455
|
+
const untilDate = dayjs(until);
|
|
1456
|
+
const duration = untilDate.diff(sinceDate, 'day');
|
|
1457
|
+
const previousSince = sinceDate.subtract(subtractAmount, subtractUnit);
|
|
1458
|
+
const previousUntil = previousSince.add(duration, 'day');
|
|
1459
|
+
return {
|
|
1460
|
+
since: previousSince.valueOf(),
|
|
1461
|
+
until: previousUntil.valueOf(),
|
|
1462
|
+
};
|
|
1463
|
+
};
|
|
1464
|
+
const getPreviousWeek = createPreviousRange(7, 'day');
|
|
1465
|
+
const getPreviousQuarter = createPreviousRange(3, 'month');
|
|
1466
|
+
const getPreviousMonth = createPreviousRange(1, 'month');
|
|
1467
|
+
const getPreviousYear = createPreviousRange(1, 'year');
|
|
1468
|
+
const createLastDaysRange = (subtractAmount) => (date) => {
|
|
1469
|
+
return {
|
|
1470
|
+
since: date.subtract(subtractAmount, 'day').valueOf(),
|
|
1471
|
+
until: date.valueOf(),
|
|
1472
|
+
};
|
|
1473
|
+
};
|
|
1474
|
+
const getToday = (currentDate) => {
|
|
1475
|
+
return {
|
|
1476
|
+
since: currentDate.valueOf(),
|
|
1477
|
+
until: currentDate.valueOf(),
|
|
1478
|
+
};
|
|
1479
|
+
};
|
|
1480
|
+
const getYesterday = (date) => {
|
|
1481
|
+
return {
|
|
1482
|
+
since: date.subtract(1, 'day').valueOf(),
|
|
1483
|
+
until: date.subtract(1, 'day').valueOf(),
|
|
1484
|
+
};
|
|
1485
|
+
};
|
|
1486
|
+
const getLast7Days = createLastDaysRange(6);
|
|
1487
|
+
const getLast30Days = createLastDaysRange(29);
|
|
1488
|
+
const getLast90Days = createLastDaysRange(89);
|
|
1489
|
+
const getLast365Days = createLastDaysRange(364);
|
|
1490
|
+
function getLastMonth(date) {
|
|
1491
|
+
return {
|
|
1492
|
+
since: date.subtract(1, 'month').startOf('month').valueOf(),
|
|
1493
|
+
until: date.subtract(1, 'month').endOf('month').valueOf(),
|
|
1494
|
+
};
|
|
1495
|
+
}
|
|
1496
|
+
function getLast12Months(date) {
|
|
1497
|
+
return {
|
|
1498
|
+
since: date.subtract(12, 'month').startOf('month').valueOf(),
|
|
1499
|
+
until: date.subtract(1, 'month').endOf('month').valueOf(),
|
|
1500
|
+
};
|
|
1501
|
+
}
|
|
1502
|
+
function getLastYear(date) {
|
|
1503
|
+
return {
|
|
1504
|
+
since: date.subtract(1, 'year').startOf('year').valueOf(),
|
|
1505
|
+
until: date.subtract(1, 'year').endOf('year').valueOf(),
|
|
1506
|
+
};
|
|
1507
|
+
}
|
|
1508
|
+
const getMonthAndYearByDateFilter = (month, year, date) => {
|
|
1509
|
+
const endDate = dayjs(date);
|
|
1510
|
+
const endMonthFilter = endDate.month();
|
|
1511
|
+
const endYearFilter = endDate.year();
|
|
1512
|
+
if (endYearFilter !== year || endMonthFilter !== month) {
|
|
1513
|
+
const prev = endDate.subtract(1, 'month');
|
|
1514
|
+
return {
|
|
1515
|
+
month: prev.month(),
|
|
1516
|
+
year: prev.year(),
|
|
1517
|
+
};
|
|
1518
|
+
}
|
|
1519
|
+
return { month, year };
|
|
1520
|
+
};
|
|
1521
|
+
|
|
1522
|
+
var CompareDateTimePickerAlias;
|
|
1523
|
+
(function (CompareDateTimePickerAlias) {
|
|
1524
|
+
CompareDateTimePickerAlias["NO_COMPARISON"] = "noComparison";
|
|
1525
|
+
CompareDateTimePickerAlias["PREVIOUS_PERIOD"] = "previousPeriod";
|
|
1526
|
+
CompareDateTimePickerAlias["PREVIOUS_WEEK"] = "previousWeek";
|
|
1527
|
+
CompareDateTimePickerAlias["PREVIOUS_MONTH"] = "previousMonth";
|
|
1528
|
+
CompareDateTimePickerAlias["PREVIOUS_QUARTER"] = "previousQuarter";
|
|
1529
|
+
CompareDateTimePickerAlias["PREVIOUS_YEAR"] = "previousYear";
|
|
1530
|
+
})(CompareDateTimePickerAlias || (CompareDateTimePickerAlias = {}));
|
|
1531
|
+
const PREVIOUS_PERIOD_FILTER = {
|
|
1532
|
+
title: 'Previous period',
|
|
1533
|
+
alias: CompareDateTimePickerAlias.PREVIOUS_PERIOD,
|
|
1534
|
+
since: 0,
|
|
1535
|
+
until: 0,
|
|
1536
|
+
};
|
|
1537
|
+
const DATE_TIME_COMPARISON_FILTERS = [
|
|
1538
|
+
{
|
|
1539
|
+
title: 'No comparison',
|
|
1540
|
+
alias: CompareDateTimePickerAlias.NO_COMPARISON,
|
|
1541
|
+
since: 0,
|
|
1542
|
+
until: 0,
|
|
1543
|
+
},
|
|
1544
|
+
PREVIOUS_PERIOD_FILTER,
|
|
1545
|
+
{
|
|
1546
|
+
title: 'Previous week',
|
|
1547
|
+
alias: CompareDateTimePickerAlias.PREVIOUS_WEEK,
|
|
1548
|
+
since: 0,
|
|
1549
|
+
until: 0,
|
|
1550
|
+
},
|
|
1551
|
+
{
|
|
1552
|
+
title: 'Previous quarter',
|
|
1553
|
+
alias: CompareDateTimePickerAlias.PREVIOUS_QUARTER,
|
|
1554
|
+
since: 0,
|
|
1555
|
+
until: 0,
|
|
1556
|
+
},
|
|
1557
|
+
{
|
|
1558
|
+
title: 'Previous month',
|
|
1559
|
+
alias: CompareDateTimePickerAlias.PREVIOUS_MONTH,
|
|
1560
|
+
since: 0,
|
|
1561
|
+
until: 0,
|
|
1562
|
+
},
|
|
1563
|
+
{
|
|
1564
|
+
title: 'Previous year',
|
|
1565
|
+
alias: CompareDateTimePickerAlias.PREVIOUS_YEAR,
|
|
1566
|
+
since: 0,
|
|
1567
|
+
until: 0,
|
|
1568
|
+
},
|
|
1569
|
+
];
|
|
1570
|
+
const COMPARE_DATE_TIME_FILTERS_MAP = {
|
|
1571
|
+
[CompareDateTimePickerAlias.NO_COMPARISON]: getNoComparison,
|
|
1572
|
+
[CompareDateTimePickerAlias.PREVIOUS_PERIOD]: getPreviousPeriod,
|
|
1573
|
+
[CompareDateTimePickerAlias.PREVIOUS_WEEK]: getPreviousWeek,
|
|
1574
|
+
[CompareDateTimePickerAlias.PREVIOUS_QUARTER]: getPreviousQuarter,
|
|
1575
|
+
[CompareDateTimePickerAlias.PREVIOUS_MONTH]: getPreviousMonth,
|
|
1576
|
+
[CompareDateTimePickerAlias.PREVIOUS_YEAR]: getPreviousYear,
|
|
1577
|
+
};
|
|
1578
|
+
|
|
1579
|
+
const useDateTimeFilter = () => {
|
|
1580
|
+
const currentDate = dayjsTzToLocalTZ().startOf('day');
|
|
1581
|
+
const mappings = getDateTimeFilterMapping();
|
|
1582
|
+
const TODAY_CONFIG = mappings[MainDateTimePickerAlias.TODAY];
|
|
1583
|
+
const TODAY_DATE_RANGE = {
|
|
1584
|
+
...TODAY_CONFIG,
|
|
1585
|
+
...TODAY_CONFIG.getDateRange(currentDate),
|
|
1586
|
+
};
|
|
1587
|
+
const YESTERDAY_CONFIG = mappings[MainDateTimePickerAlias.YESTERDAY];
|
|
1588
|
+
const YESTERDAY_DATE_RANGE = {
|
|
1589
|
+
...YESTERDAY_CONFIG,
|
|
1590
|
+
...YESTERDAY_CONFIG.getDateRange(currentDate),
|
|
1591
|
+
};
|
|
1592
|
+
const LAST_7_DAYS_CONFIG = mappings[MainDateTimePickerAlias.LAST_7_DAYS];
|
|
1593
|
+
const LAST_7_DAYS_DATE_RANGE = {
|
|
1594
|
+
...LAST_7_DAYS_CONFIG,
|
|
1595
|
+
...LAST_7_DAYS_CONFIG.getDateRange(currentDate),
|
|
1596
|
+
};
|
|
1597
|
+
const LAST_30_DAYS_CONFIG = mappings[MainDateTimePickerAlias.LAST_30_DAYS];
|
|
1598
|
+
const LAST_30_DAYS_DATE_RANGE = {
|
|
1599
|
+
...LAST_30_DAYS_CONFIG,
|
|
1600
|
+
...LAST_30_DAYS_CONFIG.getDateRange(currentDate),
|
|
1601
|
+
};
|
|
1602
|
+
const LAST_90_DAYS_CONFIG = mappings[MainDateTimePickerAlias.LAST_90_DAYS];
|
|
1603
|
+
const LAST_90_DAYS_DATE_RANGE = {
|
|
1604
|
+
...LAST_90_DAYS_CONFIG,
|
|
1605
|
+
...LAST_90_DAYS_CONFIG.getDateRange(currentDate),
|
|
1606
|
+
};
|
|
1607
|
+
const LAST_365_DAYS_CONFIG = mappings[MainDateTimePickerAlias.LAST_365_DAYS];
|
|
1608
|
+
const LAST_365_DAYS_DATE_RANGE = {
|
|
1609
|
+
...LAST_365_DAYS_CONFIG,
|
|
1610
|
+
...LAST_365_DAYS_CONFIG.getDateRange(currentDate),
|
|
1611
|
+
};
|
|
1612
|
+
const LAST_MONTH_CONFIG = mappings[MainDateTimePickerAlias.LAST_MONTH];
|
|
1613
|
+
const LAST_MONTH_DATE_RANGE = {
|
|
1614
|
+
...LAST_MONTH_CONFIG,
|
|
1615
|
+
...LAST_MONTH_CONFIG.getDateRange(currentDate),
|
|
1616
|
+
};
|
|
1617
|
+
const LAST_12_MONTHS_CONFIG = mappings[MainDateTimePickerAlias.LAST_12_MONTHS];
|
|
1618
|
+
const LAST_12_MONTHS_DATE_RANGE = {
|
|
1619
|
+
...LAST_12_MONTHS_CONFIG,
|
|
1620
|
+
...LAST_12_MONTHS_CONFIG.getDateRange(currentDate),
|
|
1621
|
+
};
|
|
1622
|
+
const LAST_YEAR_CONFIG = mappings[MainDateTimePickerAlias.LAST_YEAR];
|
|
1623
|
+
const LAST_YEAR_DATE_RANGE = {
|
|
1624
|
+
...LAST_YEAR_CONFIG,
|
|
1625
|
+
...LAST_YEAR_CONFIG.getDateRange(currentDate),
|
|
1626
|
+
};
|
|
1627
|
+
const DATE_TIME_FILTERS = [
|
|
1628
|
+
TODAY_DATE_RANGE,
|
|
1629
|
+
YESTERDAY_DATE_RANGE,
|
|
1630
|
+
LAST_7_DAYS_DATE_RANGE,
|
|
1631
|
+
LAST_30_DAYS_DATE_RANGE,
|
|
1632
|
+
LAST_90_DAYS_DATE_RANGE,
|
|
1633
|
+
LAST_365_DAYS_DATE_RANGE,
|
|
1634
|
+
LAST_MONTH_DATE_RANGE,
|
|
1635
|
+
LAST_12_MONTHS_DATE_RANGE,
|
|
1636
|
+
LAST_YEAR_DATE_RANGE,
|
|
1637
|
+
];
|
|
1638
|
+
return {
|
|
1639
|
+
DATE_TIME_FILTERS,
|
|
1640
|
+
LAST_7_DAYS_DATE_RANGE,
|
|
1641
|
+
LAST_30_DAYS_DATE_RANGE,
|
|
1642
|
+
};
|
|
1643
|
+
};
|
|
1644
|
+
|
|
1645
|
+
const DateTimePickerContext = createContext({
|
|
1646
|
+
dateTimePicked: {
|
|
1647
|
+
since: dayjsTz().valueOf(),
|
|
1648
|
+
until: dayjsTz().valueOf(),
|
|
1649
|
+
title: 'Today',
|
|
1650
|
+
alias: 'today',
|
|
1651
|
+
},
|
|
1652
|
+
compareDateTimePicked: PREVIOUS_PERIOD_FILTER,
|
|
1653
|
+
setDateTimePicked: () => { },
|
|
1654
|
+
setCompareDateTimePicked: () => { },
|
|
1655
|
+
resetDateVersion: () => { },
|
|
1656
|
+
});
|
|
1657
|
+
const DateTimePickerProvider = ({ children, initDate, initDateCompare, }) => {
|
|
1658
|
+
const [dateTimePicked, setDateTimePicked] = useState(initDate || {
|
|
1659
|
+
since: dayjsTz().set('hour', 0).valueOf(),
|
|
1660
|
+
until: dayjsTz().set('hour', 0).valueOf(),
|
|
1661
|
+
title: 'Today',
|
|
1662
|
+
alias: 'today',
|
|
1663
|
+
});
|
|
1664
|
+
const { DATE_TIME_FILTERS } = useDateTimeFilter();
|
|
1665
|
+
const getCompareDateTimePicked = useCallback((alias, source = dateTimePicked) => {
|
|
1666
|
+
return {
|
|
1667
|
+
...PREVIOUS_PERIOD_FILTER,
|
|
1668
|
+
...COMPARE_DATE_TIME_FILTERS_MAP[alias]({
|
|
1669
|
+
since: source.since,
|
|
1670
|
+
until: source.until,
|
|
1671
|
+
alias: source.alias,
|
|
1672
|
+
}),
|
|
1673
|
+
};
|
|
1674
|
+
}, [dateTimePicked]);
|
|
1675
|
+
const [compareDateTimePicked, setCompareDateTimePicked] = useState(initDateCompare || getCompareDateTimePicked(CompareDateTimePickerAlias.PREVIOUS_PERIOD));
|
|
1676
|
+
const updateCompareDateTimePicked = useCallback((source) => {
|
|
1677
|
+
if (compareDateTimePicked.alias === 'custom' ||
|
|
1678
|
+
compareDateTimePicked.alias === CompareDateTimePickerAlias.NO_COMPARISON)
|
|
1679
|
+
return;
|
|
1680
|
+
setCompareDateTimePicked(getCompareDateTimePicked(compareDateTimePicked.alias, source));
|
|
1681
|
+
}, [compareDateTimePicked, getCompareDateTimePicked]);
|
|
1682
|
+
const resetDateVersion = () => {
|
|
1683
|
+
const since = dayjs(dateTimePicked.since).startOf('day').valueOf();
|
|
1684
|
+
const until = dayjs(dateTimePicked.until).startOf('day').valueOf();
|
|
1685
|
+
const dateFilter = DATE_TIME_FILTERS.find((filter) => filter.since === since && filter.until === until);
|
|
1686
|
+
setDateTimePicked({
|
|
1687
|
+
...dateTimePicked,
|
|
1688
|
+
isVersion: false,
|
|
1689
|
+
versionId: undefined,
|
|
1690
|
+
isCurrentVersion: false,
|
|
1691
|
+
description: '',
|
|
1692
|
+
title: dateFilter?.title || dateTimePicked.title,
|
|
1693
|
+
alias: dateFilter?.alias || 'custom',
|
|
1694
|
+
});
|
|
1695
|
+
};
|
|
1696
|
+
const onSetDateTimePicked = useCallback((value) => {
|
|
1697
|
+
setDateTimePicked(value);
|
|
1698
|
+
updateCompareDateTimePicked(value);
|
|
1699
|
+
}, [updateCompareDateTimePicked]);
|
|
1700
|
+
return (jsx(DateTimePickerContext.Provider, { value: {
|
|
1701
|
+
dateTimePicked,
|
|
1702
|
+
setDateTimePicked: onSetDateTimePicked,
|
|
1703
|
+
compareDateTimePicked,
|
|
1704
|
+
setCompareDateTimePicked,
|
|
1705
|
+
resetDateVersion,
|
|
1706
|
+
}, children: children }));
|
|
1707
|
+
};
|
|
1708
|
+
const useDateTimePickerContext = () => {
|
|
1709
|
+
const context = useContext(DateTimePickerContext);
|
|
1710
|
+
if (!context) {
|
|
1711
|
+
throw new Error('useDateTimePickerContext must be used within a DateTimePickerProvider');
|
|
1712
|
+
}
|
|
1713
|
+
return context;
|
|
1714
|
+
};
|
|
1715
|
+
|
|
1716
|
+
const useDateTimePicker = ({ ranges, initialPicked, onApply }) => {
|
|
1717
|
+
const { DATE_TIME_FILTERS } = useDateTimeFilter();
|
|
1718
|
+
const allRanges = ranges || DATE_TIME_FILTERS;
|
|
1719
|
+
const { dateTimePicked, setDateTimePicked } = useDateTimePickerContext();
|
|
1720
|
+
const [dateRange, setDateRange] = useState(dateTimePicked);
|
|
1721
|
+
const [{ month, year }, setDate] = useState({
|
|
1722
|
+
month: dayjs(dateTimePicked.since).month(),
|
|
1723
|
+
year: dayjs(dateTimePicked.since).year(),
|
|
1724
|
+
});
|
|
1725
|
+
useEffect(() => {
|
|
1726
|
+
if (dateTimePicked) {
|
|
1727
|
+
const untilDate = new Date(dateTimePicked.until);
|
|
1728
|
+
const monthDiff = (referenceDate, newDate) => {
|
|
1729
|
+
return newDate.month - referenceDate.month + 12 * (referenceDate.year - newDate.year);
|
|
1730
|
+
};
|
|
1731
|
+
monthDiff({ year, month }, {
|
|
1732
|
+
year: untilDate.getFullYear(),
|
|
1733
|
+
month: untilDate.getMonth(),
|
|
1734
|
+
});
|
|
1735
|
+
// if (monthDifference > 1 || monthDifference < 0) {
|
|
1736
|
+
// setDate({
|
|
1737
|
+
// month: untilDate.getMonth(),
|
|
1738
|
+
// year: untilDate.getFullYear(),
|
|
1739
|
+
// });
|
|
1740
|
+
// }
|
|
1741
|
+
}
|
|
1742
|
+
}, [dateTimePicked, month, year]);
|
|
1743
|
+
const onMonthChange = (month, year) => {
|
|
1744
|
+
setDate({ month, year });
|
|
1745
|
+
};
|
|
1746
|
+
const onCalendarChange = (value) => {
|
|
1747
|
+
const { start, end, alias } = value;
|
|
1748
|
+
const customDateRange = {
|
|
1749
|
+
alias: 'custom',
|
|
1750
|
+
title: 'Custom',
|
|
1751
|
+
since: start.getTime(),
|
|
1752
|
+
until: end.getTime(),
|
|
1753
|
+
};
|
|
1754
|
+
const newDateRange = allRanges.find((range) => {
|
|
1755
|
+
const isSameAlias = range.alias === alias;
|
|
1756
|
+
const isSameUntil = range.until === end.getTime();
|
|
1757
|
+
const isSameSince = range.since === start.getTime();
|
|
1758
|
+
// const isSameVersionId = !!range.versionId && !!versionId && range.versionId === versionId;
|
|
1759
|
+
const isSameTime = isSameSince && isSameUntil;
|
|
1760
|
+
return isSameAlias || isSameTime;
|
|
1761
|
+
});
|
|
1762
|
+
const finalDateRange = newDateRange || initialPicked || customDateRange;
|
|
1763
|
+
setDateRange(finalDateRange);
|
|
1764
|
+
};
|
|
1765
|
+
const onChange = ({ end }) => {
|
|
1766
|
+
setDate(getMonthAndYearByDateFilter(month, year, end));
|
|
1767
|
+
};
|
|
1768
|
+
const apply = () => {
|
|
1769
|
+
setDateTimePicked(dateRange);
|
|
1770
|
+
onApply?.(dateRange);
|
|
1771
|
+
};
|
|
1772
|
+
const cancel = () => {
|
|
1773
|
+
setDateRange(dateTimePicked);
|
|
1774
|
+
};
|
|
1775
|
+
useEffect(() => {
|
|
1776
|
+
if (dateTimePicked) {
|
|
1777
|
+
setDateRange(dateTimePicked);
|
|
1778
|
+
setDate({
|
|
1779
|
+
month: dayjs(dateTimePicked.since).month(),
|
|
1780
|
+
year: dayjs(dateTimePicked.since).year(),
|
|
1781
|
+
});
|
|
1782
|
+
}
|
|
1783
|
+
}, [dateTimePicked]);
|
|
1784
|
+
return {
|
|
1785
|
+
month,
|
|
1786
|
+
year,
|
|
1787
|
+
setDate,
|
|
1788
|
+
dateRange,
|
|
1789
|
+
apply,
|
|
1790
|
+
cancel,
|
|
1791
|
+
dateTimePicked,
|
|
1792
|
+
onChange,
|
|
1793
|
+
onMonthChange,
|
|
1794
|
+
onCalendarChange,
|
|
1795
|
+
};
|
|
1796
|
+
};
|
|
1797
|
+
|
|
1798
|
+
const useVersionDateTimeFilters = (versions) => {
|
|
1799
|
+
const { t } = useTranslation();
|
|
1800
|
+
const rangers = useMemo(() => {
|
|
1801
|
+
if (!versions?.length)
|
|
1802
|
+
return [];
|
|
1803
|
+
return convertToDateTimeFilters(versions);
|
|
1804
|
+
}, [versions]);
|
|
1805
|
+
const rangeAddition = {
|
|
1806
|
+
title: t('Experiment periods'),
|
|
1807
|
+
rangers,
|
|
1808
|
+
};
|
|
1809
|
+
return { rangeAddition };
|
|
1810
|
+
};
|
|
1811
|
+
|
|
1812
|
+
function DateTimeFilterInputs({ onBlur, dateRange, setDateTimePicked }) {
|
|
1813
|
+
const [isFocus, setIsFocus] = useState(false);
|
|
1814
|
+
const [inputValues, setInputValues] = useState({});
|
|
1815
|
+
const formatDisplayDate = useCallback((timestamp, isEnd = false) => {
|
|
1816
|
+
if (!dateRange.isVersion || (isEnd && dateRange.isCurrentVersion))
|
|
1817
|
+
return formatDate(timestamp, 'FULL');
|
|
1818
|
+
return formatDate(timestamp, 'FULL_WITH_TIME');
|
|
1819
|
+
}, [dateRange.isVersion, dateRange.isCurrentVersion]);
|
|
1820
|
+
useEffect(() => {
|
|
1821
|
+
if (isFocus)
|
|
1822
|
+
return;
|
|
1823
|
+
setInputValues({
|
|
1824
|
+
since: formatDisplayDate(dateRange.since),
|
|
1825
|
+
until: formatDisplayDate(dateRange.until, true),
|
|
1826
|
+
});
|
|
1827
|
+
}, [dateRange, formatDisplayDate]);
|
|
1828
|
+
function handleStartInputValueChange(value) {
|
|
1829
|
+
setInputValues((prevState) => {
|
|
1830
|
+
return { ...prevState, since: value };
|
|
1831
|
+
});
|
|
1832
|
+
if (isValidDate(value)) {
|
|
1833
|
+
const newSinceDate = convertDateToTz(value).startOf('day');
|
|
1834
|
+
const untilDate = convertDateToTz(dateRange.until).endOf('day');
|
|
1835
|
+
const endDate = newSinceDate.isAfter(untilDate) ? newSinceDate.endOf('day') : untilDate;
|
|
1836
|
+
setDateTimePicked({
|
|
1837
|
+
start: dayjsTzToLocalTZ(newSinceDate).toDate(),
|
|
1838
|
+
end: dayjsTzToLocalTZ(endDate).toDate(),
|
|
1839
|
+
});
|
|
1840
|
+
}
|
|
1841
|
+
}
|
|
1842
|
+
function handleEndInputValueChange(value) {
|
|
1843
|
+
setInputValues((prevState) => ({ ...prevState, until: value }));
|
|
1844
|
+
if (isValidDate(value)) {
|
|
1845
|
+
const nowEndOfDay = dayjsTz().endOf('day');
|
|
1846
|
+
const newUntilDate = convertDateToTz(value).endOf('day');
|
|
1847
|
+
const clampedUntil = newUntilDate.isAfter(nowEndOfDay) ? nowEndOfDay : newUntilDate;
|
|
1848
|
+
const sinceDate = convertDateToTz(dateRange.since).startOf('day');
|
|
1849
|
+
const startDate = clampedUntil.isBefore(sinceDate) ? clampedUntil.startOf('day') : sinceDate;
|
|
1850
|
+
setDateTimePicked({
|
|
1851
|
+
start: dayjsTzToLocalTZ(startDate).toDate(),
|
|
1852
|
+
end: dayjsTzToLocalTZ(clampedUntil).toDate(),
|
|
1853
|
+
});
|
|
1854
|
+
}
|
|
1855
|
+
}
|
|
1856
|
+
function handleInputBlur() {
|
|
1857
|
+
setIsFocus(false);
|
|
1858
|
+
setInputValues({
|
|
1859
|
+
since: formatDisplayDate(dateRange.since),
|
|
1860
|
+
until: formatDisplayDate(dateRange.until, true),
|
|
1861
|
+
});
|
|
1862
|
+
onBlur && onBlur();
|
|
1863
|
+
}
|
|
1864
|
+
function handleFocusStartInput() {
|
|
1865
|
+
setIsFocus(true);
|
|
1866
|
+
setInputValues({
|
|
1867
|
+
...inputValues,
|
|
1868
|
+
since: formatDate(dateRange.since, 'YMD'),
|
|
1869
|
+
});
|
|
1870
|
+
}
|
|
1871
|
+
function handleFocusEndInput() {
|
|
1872
|
+
setIsFocus(true);
|
|
1873
|
+
setInputValues({
|
|
1874
|
+
...inputValues,
|
|
1875
|
+
until: formatDate(dateRange.until, 'YMD'),
|
|
1876
|
+
});
|
|
1877
|
+
}
|
|
1878
|
+
return (jsxs(InlineGrid, { gap: "200", columns: "1fr auto 1fr", children: [jsx(TextField, { role: "combobox", label: 'Since', labelHidden: true,
|
|
1879
|
+
// prefix={<Icon source={CalendarIcon} />}
|
|
1880
|
+
value: dateRange.since ? inputValues.since : 'MMMM D, YYYY', onChange: handleStartInputValueChange, onBlur: () => handleInputBlur(), onFocus: () => handleFocusStartInput(), autoComplete: "off" }), jsx(InlineStack, { children: jsx(Icon, { source: SvgArrowRightIcon, tone: "subdued" }) }), jsx(TextField, { role: "combobox", label: 'Until', labelHidden: true,
|
|
1881
|
+
// prefix={<Icon source={CalendarIcon} />}
|
|
1882
|
+
value: dateRange.until ? inputValues.until : 'MMMM D, YYYY', onChange: handleEndInputValueChange, onBlur: () => handleInputBlur(), onFocus: () => handleFocusEndInput(), autoComplete: "off" })] }));
|
|
1883
|
+
}
|
|
1884
|
+
|
|
1885
|
+
/**
|
|
1886
|
+
* Returns a stateful value, and a set of memoized functions to toggle it,
|
|
1887
|
+
* set it to true and set it to false
|
|
1888
|
+
*/
|
|
1889
|
+
function useToggle(initialState) {
|
|
1890
|
+
const [value, setState] = useState(initialState);
|
|
1891
|
+
return {
|
|
1892
|
+
value,
|
|
1893
|
+
toggle: useCallback(() => setState((state) => !state), []),
|
|
1894
|
+
setTrue: useCallback(() => setState(true), []),
|
|
1895
|
+
setFalse: useCallback(() => setState(false), []),
|
|
1896
|
+
};
|
|
1897
|
+
}
|
|
1898
|
+
|
|
1899
|
+
function DateTimeFilterAddition(props) {
|
|
1900
|
+
const { setDateTimePicked, dateTimePicked, rangeAddition, allRanges } = props;
|
|
1901
|
+
const { value: isExpanded, toggle: toggleExpanded } = useToggle(true);
|
|
1902
|
+
const rangesAdditions = rangeAddition?.rangers || [];
|
|
1903
|
+
const handleChangeFilterByOption = (value) => {
|
|
1904
|
+
const alias = value[0];
|
|
1905
|
+
const result = allRanges.find((range) => range.alias === alias) || allRanges[0];
|
|
1906
|
+
setDateTimePicked({
|
|
1907
|
+
start: dayjsTz(result?.since).toDate(),
|
|
1908
|
+
end: dayjsTz(result?.until).toDate(),
|
|
1909
|
+
alias: result?.alias,
|
|
1910
|
+
});
|
|
1911
|
+
};
|
|
1912
|
+
const options = rangesAdditions.map((range) => {
|
|
1913
|
+
const selected = dateTimePicked.alias === range.alias;
|
|
1914
|
+
return {
|
|
1915
|
+
value: range.alias,
|
|
1916
|
+
label: (jsxs(Text, { as: "span", truncate: true, children: [jsx(Text, { as: "span", variant: 'bodyMd', fontWeight: selected ? 'semibold' : 'regular', children: range.title }), range.description && (jsxs(Fragment, { children: [' ', jsx(Text, { as: "span", variant: 'bodyXs', fontWeight: 'regular', tone: "subdued", children: `(${range.description})` })] }))] })),
|
|
1917
|
+
};
|
|
1918
|
+
});
|
|
1919
|
+
if (!rangeAddition || rangesAdditions.length === 0)
|
|
1920
|
+
return;
|
|
1921
|
+
return (jsxs(Box, { borderBlockEndWidth: '025', borderColor: 'border', paddingBlock: '200', children: [jsx("div", { className: "px-1.5", children: jsx(GDiv, { onClick: toggleExpanded, "aria-expanded": isExpanded, className: cls('hover:bg-surface-hover cursor-pointer rounded-lg p-1.5'), children: jsxs(InlineStack, { align: "space-between", blockAlign: "center", children: [jsx(Text, { as: "span", variant: "bodyMd", children: rangeAddition.title }), jsx(Box, { children: jsx(Icon, { source: isExpanded ? SvgChevronUpIcon : SvgChevronDownIcon }) })] }) }) }), jsx(Collapsible, { open: isExpanded, id: "date-time-filter-periods-collapsible", transition: { duration: '200ms', timingFunction: 'ease-in-out' }, children: jsx(GOptionList, { options: options, selected: dateTimePicked ? [dateTimePicked.alias] : [], onChange: handleChangeFilterByOption }) })] }));
|
|
1922
|
+
}
|
|
1923
|
+
|
|
1924
|
+
function DateTimeFilters(props) {
|
|
1925
|
+
const { setDateTimePicked, dateTimePicked, allRanges, isCompare } = props;
|
|
1926
|
+
const { DATE_TIME_FILTERS } = useDateTimeFilter();
|
|
1927
|
+
const { mdDown } = useBreakpoints();
|
|
1928
|
+
const rangesDefault = isCompare ? [...DATE_TIME_COMPARISON_FILTERS] : [...DATE_TIME_FILTERS];
|
|
1929
|
+
const handleChangeFilterBySelect = (value) => {
|
|
1930
|
+
const result = allRanges.find(({ title, alias }) => title === value || alias === value) || allRanges[0];
|
|
1931
|
+
setDateTimePicked({
|
|
1932
|
+
start: dayjsTz(result?.since).toDate(),
|
|
1933
|
+
end: dayjsTz(result?.until).toDate(),
|
|
1934
|
+
alias: result?.alias,
|
|
1935
|
+
});
|
|
1936
|
+
};
|
|
1937
|
+
const handleChangeFilterByOption = (value) => {
|
|
1938
|
+
const result = allRanges.find((range) => range.alias === value[0]) || allRanges[0];
|
|
1939
|
+
setDateTimePicked({
|
|
1940
|
+
start: dayjsTz(result?.since).toDate(),
|
|
1941
|
+
end: dayjsTz(result?.until).toDate(),
|
|
1942
|
+
alias: result?.alias,
|
|
1943
|
+
});
|
|
1944
|
+
};
|
|
1945
|
+
return (jsx(Box, { maxWidth: mdDown ? '516px' : '250px', width: mdDown ? '100%' : '250px', padding: { xs: '500', md: '0' }, paddingBlockEnd: { xs: '100', md: '0' }, children: mdDown ? (jsx(Select, { label: "dateRangeLabel", labelHidden: true, onChange: (value) => handleChangeFilterBySelect(value), value: dateTimePicked?.title || dateTimePicked?.alias || '', options: allRanges.map(({ alias, title }) => title || alias) })) : (jsx(Scrollable, { style: { maxHeight: '356px' }, children: jsx(Box, { children: jsxs(BlockStack, { children: [jsx(DateTimeFilterAddition, { ...props }), jsx(OptionList, { options: rangesDefault.map((range) => ({
|
|
1946
|
+
value: range.alias,
|
|
1947
|
+
label: range.title,
|
|
1948
|
+
})), selected: dateTimePicked ? [dateTimePicked.alias] : [], onChange: (value) => handleChangeFilterByOption(value) })] }) }) })) }));
|
|
1949
|
+
}
|
|
1950
|
+
|
|
1951
|
+
const useCompareDateTimePicker = ({ ranges, onApply }) => {
|
|
1952
|
+
const allRanges = ranges || DATE_TIME_COMPARISON_FILTERS;
|
|
1953
|
+
const { compareDateTimePicked, setCompareDateTimePicked } = useDateTimePickerContext();
|
|
1954
|
+
const { dateTimePicked: mainDateRange } = useDateTimePickerContext();
|
|
1955
|
+
const [dateRange, setDateRange] = useState(compareDateTimePicked);
|
|
1956
|
+
const [{ month, year }, setDate] = useState({
|
|
1957
|
+
month: dayjsTz(compareDateTimePicked.since).month(),
|
|
1958
|
+
year: dayjsTz(compareDateTimePicked.since).year(),
|
|
1959
|
+
});
|
|
1960
|
+
const onMonthChange = (month, year) => {
|
|
1961
|
+
setDate({ month, year });
|
|
1962
|
+
};
|
|
1963
|
+
const onCalendarChange = ({ start, end, alias }) => {
|
|
1964
|
+
const newDateRange = allRanges.find((range) => {
|
|
1965
|
+
return range.alias === alias;
|
|
1966
|
+
});
|
|
1967
|
+
// If the alias is not found, set the custom date range
|
|
1968
|
+
if (!newDateRange) {
|
|
1969
|
+
setDateRange({
|
|
1970
|
+
alias: 'custom',
|
|
1971
|
+
title: 'Custom',
|
|
1972
|
+
since: start.getTime(),
|
|
1973
|
+
until: end.getTime(),
|
|
1974
|
+
});
|
|
1975
|
+
return;
|
|
1976
|
+
}
|
|
1977
|
+
setDateRange({
|
|
1978
|
+
...newDateRange,
|
|
1979
|
+
...COMPARE_DATE_TIME_FILTERS_MAP[alias]({
|
|
1980
|
+
since: mainDateRange.since,
|
|
1981
|
+
until: mainDateRange.until,
|
|
1982
|
+
}),
|
|
1983
|
+
});
|
|
1984
|
+
};
|
|
1985
|
+
const apply = () => {
|
|
1986
|
+
setCompareDateTimePicked(dateRange);
|
|
1987
|
+
onApply?.(dateRange);
|
|
1988
|
+
};
|
|
1989
|
+
const cancel = () => {
|
|
1990
|
+
setDateRange(compareDateTimePicked);
|
|
1991
|
+
};
|
|
1992
|
+
const onChange = ({ end }) => {
|
|
1993
|
+
setDate(getMonthAndYearByDateFilter(month, year, end));
|
|
1994
|
+
};
|
|
1995
|
+
return {
|
|
1996
|
+
month,
|
|
1997
|
+
year,
|
|
1998
|
+
setDate,
|
|
1999
|
+
dateRange,
|
|
2000
|
+
apply,
|
|
2001
|
+
cancel,
|
|
2002
|
+
compareDateTimePicked,
|
|
2003
|
+
onChange,
|
|
2004
|
+
onMonthChange,
|
|
2005
|
+
onCalendarChange,
|
|
2006
|
+
};
|
|
2007
|
+
};
|
|
2008
|
+
|
|
2009
|
+
const BaseTimePicker = (props) => {
|
|
2010
|
+
const { dateTimeFilters, rangeAddition, popoverProps, activatorProps, actionProps, isCompare, buttonValue, activator, } = props;
|
|
2011
|
+
const initialPicked = rangeAddition?.initialPicked;
|
|
2012
|
+
const ranges = [...(dateTimeFilters || []), ...(rangeAddition?.rangers || [])];
|
|
2013
|
+
const useHookDateTimePicker = isCompare ? useCompareDateTimePicker : useDateTimePicker;
|
|
2014
|
+
const { month, year, dateRange, apply, cancel, onMonthChange, onCalendarChange, onChange } = useHookDateTimePicker({
|
|
2015
|
+
ranges,
|
|
2016
|
+
initialPicked,
|
|
2017
|
+
onApply: props.onApply,
|
|
2018
|
+
});
|
|
2019
|
+
const { t } = useTranslation();
|
|
2020
|
+
const { mdDown, lgUp } = useBreakpoints();
|
|
2021
|
+
const shouldShowMultiMonth = lgUp;
|
|
2022
|
+
const rawTooltipContent = useMemo(() => {
|
|
2023
|
+
// Only show tooltip when selecting Period (isVersion)
|
|
2024
|
+
if (!dateRange.isVersion || !dateRange.since || !dateRange.until)
|
|
2025
|
+
return;
|
|
2026
|
+
return formatDateTimeRange({
|
|
2027
|
+
since: dateRange.since,
|
|
2028
|
+
until: dateRange.until,
|
|
2029
|
+
isShowNow: dateRange.isCurrentVersion,
|
|
2030
|
+
});
|
|
2031
|
+
}, [dateRange.since, dateRange.until, dateRange.isVersion, dateRange.isCurrentVersion]);
|
|
2032
|
+
const [popoverActive, setPopoverActive] = useState(false);
|
|
2033
|
+
// Freeze tooltip content while popover is open to prevent button remount (focus/CSS loss)
|
|
2034
|
+
const datePickerRef = useRef(null);
|
|
2035
|
+
const tooltipContentRef = useRef(rawTooltipContent);
|
|
2036
|
+
if (!popoverActive)
|
|
2037
|
+
tooltipContentRef.current = rawTooltipContent;
|
|
2038
|
+
const tooltipContent = tooltipContentRef.current;
|
|
2039
|
+
//@ts-ignore
|
|
2040
|
+
function nodeContainsDescendant(rootNode, descendant) {
|
|
2041
|
+
if (rootNode === descendant) {
|
|
2042
|
+
return true;
|
|
2043
|
+
}
|
|
2044
|
+
let parent = descendant.parentNode;
|
|
2045
|
+
while (parent != null) {
|
|
2046
|
+
if (parent === rootNode) {
|
|
2047
|
+
return true;
|
|
2048
|
+
}
|
|
2049
|
+
parent = parent.parentNode;
|
|
2050
|
+
}
|
|
2051
|
+
return false;
|
|
2052
|
+
}
|
|
2053
|
+
//@ts-ignore
|
|
2054
|
+
function isNodeWithinPopover(node) {
|
|
2055
|
+
return datePickerRef?.current ? nodeContainsDescendant(datePickerRef.current, node) : false;
|
|
2056
|
+
}
|
|
2057
|
+
//@ts-ignore
|
|
2058
|
+
function handleInputBlur({ relatedTarget }) {
|
|
2059
|
+
const isRelatedTargetWithinPopover = relatedTarget != null && isNodeWithinPopover(relatedTarget);
|
|
2060
|
+
// If focus moves from the TextField to the Popover
|
|
2061
|
+
// we don't want to close the popover
|
|
2062
|
+
if (isRelatedTargetWithinPopover) {
|
|
2063
|
+
return;
|
|
2064
|
+
}
|
|
2065
|
+
setPopoverActive(false);
|
|
2066
|
+
}
|
|
2067
|
+
function applyFunc() {
|
|
2068
|
+
apply();
|
|
2069
|
+
setPopoverActive(false);
|
|
2070
|
+
}
|
|
2071
|
+
function cancelFunc() {
|
|
2072
|
+
cancel();
|
|
2073
|
+
setPopoverActive(false);
|
|
2074
|
+
}
|
|
2075
|
+
const handleTogglePopover = () => {
|
|
2076
|
+
if (isCompare) {
|
|
2077
|
+
return;
|
|
2078
|
+
}
|
|
2079
|
+
setPopoverActive(!popoverActive);
|
|
2080
|
+
};
|
|
2081
|
+
const onChangeDateTimeFilter = (data) => {
|
|
2082
|
+
onCalendarChange(data);
|
|
2083
|
+
onChange(data);
|
|
2084
|
+
};
|
|
2085
|
+
return (jsx(Popover, { active: popoverActive, autofocusTarget: "none", preferredAlignment: "right", preferredPosition: "below", fluidContent: true, sectioned: false, fullHeight: true, activator: jsx(GBlockCenter, { height: "100%", minHeight: "28px", align: "center", children: jsx(GTooltip, { content: tooltipContent, maxWidth: activator ? 'large' : 'extra-large', children: jsx(Box, { children: activator ? (activator({ onClick: handleTogglePopover, value: buttonValue })) : (jsx(Button, { size: "slim", icon: !isCompare ? SvgCalendarIcon : undefined, onClick: handleTogglePopover, ...activatorProps, children: buttonValue })) }) }) }), onClose: cancelFunc, ...popoverProps, children: jsxs(Scrollable, { vertical: true, scrollbarWidth: "thin", className: "max-w-[100%]", children: [jsx(Popover.Pane, { fixed: true, children: jsx("div", { ref: datePickerRef, children: jsxs(InlineGrid, { columns: {
|
|
2086
|
+
xs: '1fr',
|
|
2087
|
+
md: 'max-content max-content',
|
|
2088
|
+
}, gap: "0", children: [jsx(DateTimeFilters, { setDateTimePicked: onChangeDateTimeFilter, dateTimePicked: dateRange, rangeAddition: rangeAddition, allRanges: ranges, isCompare: isCompare }), jsx(Box, { padding: "400", maxWidth: mdDown ? '320px' : '516px', borderInlineStartWidth: "025", borderColor: "border-secondary", children: jsxs(BlockStack, { gap: "400", children: [jsx(DateTimeFilterInputs, { setDateTimePicked: onCalendarChange, dateRange: dateRange, onBlur: () => handleInputBlur }), jsx("div", { children: jsx(DatePicker, { month: month, year: year, selected: !dateRange.since && !dateRange.until
|
|
2089
|
+
? undefined
|
|
2090
|
+
: {
|
|
2091
|
+
start: dayjs(dateRange.since).toDate(),
|
|
2092
|
+
end: dayjs(dateRange.until).toDate(),
|
|
2093
|
+
}, onMonthChange: onMonthChange, onChange: onCalendarChange, multiMonth: shouldShowMultiMonth, allowRange: true, disableDatesAfter: dayjsTzToDate() }) }), actionProps && (jsx(GButton, { ...actionProps, onClick: () => {
|
|
2094
|
+
setPopoverActive(false);
|
|
2095
|
+
actionProps.onClick?.();
|
|
2096
|
+
} }))] }) })] }) }) }), jsx(Popover.Pane, { fixed: true, children: jsx(Box, { padding: "400", borderBlockStartWidth: "025", borderColor: "border-secondary", children: jsx(InlineStack, { align: "end", gap: "200", children: jsxs(ButtonGroup, { children: [jsx(Button, { onClick: cancelFunc, children: t('Cancel') }), jsx(Button, { variant: "primary", onClick: applyFunc, children: t('Apply') })] }) }) }) })] }) }));
|
|
2097
|
+
};
|
|
2098
|
+
|
|
2099
|
+
const CompareTimePicker = (props) => {
|
|
2100
|
+
const { rangeAddition, popoverProps } = props;
|
|
2101
|
+
const initialPicked = rangeAddition?.initialPicked;
|
|
2102
|
+
const dateTimeFilters = DATE_TIME_COMPARISON_FILTERS;
|
|
2103
|
+
const ranges = [...dateTimeFilters, ...(rangeAddition?.rangers || [])];
|
|
2104
|
+
const { t } = useTranslation();
|
|
2105
|
+
const { compareDateTimePicked } = useCompareDateTimePicker({ ranges, initialPicked });
|
|
2106
|
+
const buttonValue = useMemo(() => {
|
|
2107
|
+
if (compareDateTimePicked.alias === CompareDateTimePickerAlias.NO_COMPARISON) {
|
|
2108
|
+
return t('No comparison');
|
|
2109
|
+
}
|
|
2110
|
+
return t('Compare to: {{value}}', {
|
|
2111
|
+
value: getDateRangeTitle(compareDateTimePicked.since, compareDateTimePicked.until),
|
|
2112
|
+
});
|
|
2113
|
+
}, [compareDateTimePicked, t]);
|
|
2114
|
+
return (jsx(BaseTimePicker, { dateTimeFilters: dateTimeFilters, rangeAddition: rangeAddition, popoverProps: popoverProps, isCompare: true, buttonValue: buttonValue }));
|
|
2115
|
+
};
|
|
2116
|
+
|
|
2117
|
+
const MainTimePicker = (props) => {
|
|
2118
|
+
const { rangeAddition, popoverProps, activator, onApply, activatorProps, actionProps } = props;
|
|
2119
|
+
const { DATE_TIME_FILTERS } = useDateTimeFilter();
|
|
2120
|
+
const dateTimeFilters = DATE_TIME_FILTERS;
|
|
2121
|
+
const additionalRanges = rangeAddition?.rangers || [];
|
|
2122
|
+
const initialPicked = rangeAddition?.initialPicked;
|
|
2123
|
+
const ranges = [...dateTimeFilters, ...additionalRanges];
|
|
2124
|
+
const { dateTimePicked } = useDateTimePicker({ ranges, initialPicked });
|
|
2125
|
+
const getButtonValue = () => {
|
|
2126
|
+
if (dateTimePicked.isVersion && additionalRanges.length > 0) {
|
|
2127
|
+
const time = dateTimePicked.description ? `at ${dateTimePicked.description}` : '';
|
|
2128
|
+
return `Period: ${dateTimePicked.title} ${time}`;
|
|
2129
|
+
}
|
|
2130
|
+
if (dateTimePicked.alias === 'custom') {
|
|
2131
|
+
return getDateRangeTitle(dateTimePicked.since, dateTimePicked.until);
|
|
2132
|
+
}
|
|
2133
|
+
return dateTimePicked.title;
|
|
2134
|
+
};
|
|
2135
|
+
return (jsx(BaseTimePicker, { activatorProps: activatorProps, dateTimeFilters: dateTimeFilters, rangeAddition: rangeAddition, popoverProps: popoverProps, actionProps: actionProps, buttonValue: getButtonValue(), activator: activator, onApply: onApply }));
|
|
2136
|
+
};
|
|
2137
|
+
|
|
2138
|
+
const GTimePicker = (props) => {
|
|
2139
|
+
const { isCompare, ...timePickerProps } = props;
|
|
2140
|
+
return (jsxs(InlineStack, { gap: "200", children: [jsx(MainTimePicker, { ...timePickerProps }), isCompare && (jsx(CompareTimePicker, { rangeAddition: timePickerProps.rangeAddition, popoverProps: timePickerProps.popoverProps }))] }));
|
|
2141
|
+
};
|
|
2142
|
+
|
|
2143
|
+
const GViewBySelector = ({ activatorText, selected, options, minWidth, maxWidth, preferredAlignment = 'right', onSelect, }) => {
|
|
2144
|
+
const [popoverActive, setPopoverActive] = useState(false);
|
|
2145
|
+
const [itemHover, setItemHover] = useState(null);
|
|
2146
|
+
const togglePopoverActive = () => setPopoverActive((prev) => !prev);
|
|
2147
|
+
const selectedOption = useMemo(() => {
|
|
2148
|
+
return options.find((item) => item.id === selected);
|
|
2149
|
+
}, [options, selected]);
|
|
2150
|
+
const activatorContent = useMemo(() => {
|
|
2151
|
+
if (selectedOption) {
|
|
2152
|
+
const content = selectedOption.title ?? selectedOption.content;
|
|
2153
|
+
return activatorText ? `${activatorText}: ${content}` : content;
|
|
2154
|
+
}
|
|
2155
|
+
return activatorText;
|
|
2156
|
+
}, [selectedOption, activatorText]);
|
|
2157
|
+
const handleSelect = (value) => {
|
|
2158
|
+
onSelect(value);
|
|
2159
|
+
setPopoverActive(false);
|
|
2160
|
+
};
|
|
2161
|
+
return (jsx(Popover, { active: popoverActive, activator: jsx(GActivatorPopover, { active: popoverActive, content: activatorContent, textProps: { variant: 'bodySm' }, onClick: togglePopoverActive }), autofocusTarget: "first-node", fluidContent: true, onClose: togglePopoverActive, preferredAlignment: preferredAlignment, children: jsx(Box, { maxWidth: maxWidth, minWidth: minWidth, padding: "200", children: jsx(BlockStack, { gap: "200", children: options.map((option) => {
|
|
2162
|
+
const isSelected = option.id === selected;
|
|
2163
|
+
const isHover = itemHover === option.id;
|
|
2164
|
+
const borderColor = isSelected ? 'input-border' : isHover ? 'border-hover' : 'transparent';
|
|
2165
|
+
return (jsx(Box, { padding: "150", borderWidth: "025", borderColor: borderColor, borderRadius: "100", children: jsx("div", { onClick: () => handleSelect(option.id), className: "cursor-pointer", onMouseEnter: () => setItemHover(option.id), onMouseLeave: () => setItemHover(null), children: jsxs(InlineStack, { gap: "300", align: "space-between", blockAlign: "center", wrap: false, children: [jsxs(InlineStack, { gap: "300", blockAlign: "center", wrap: false, children: [jsx("div", { className: "bg-surface-secondary flex items-center justify-center rounded-md min-w-[184px] h-[92px]", children: jsx("img", { src: option.icon, alt: option.content, className: "w-full h-full object-contain" }) }), jsxs(BlockStack, { gap: "100", children: [jsx(Text, { as: "span", variant: "bodyMd", fontWeight: "semibold", children: option.content }), jsx(Text, { as: "p", variant: "bodyMd", tone: "subdued", children: option.helpText })] })] }), isSelected && (jsx(Box, { children: jsx(Icon, { source: SvgCheckIcon }) }))] }) }) }, option.id));
|
|
2166
|
+
}) }) }) }));
|
|
2167
|
+
};
|
|
2168
|
+
|
|
2169
|
+
const ChoiceHelpText = ({ item }) => {
|
|
2170
|
+
return (jsxs(Text, { as: "p", variant: "bodyMd", children: [item.description, item.inlineAction && (jsx(Link, { monochrome: true, onClick: () => {
|
|
2171
|
+
if (item.inlineAction?.onAction) {
|
|
2172
|
+
item.inlineAction?.onAction();
|
|
2173
|
+
}
|
|
2174
|
+
else {
|
|
2175
|
+
window.open(item.inlineAction?.url, item.inlineAction?.target ?? '_blank');
|
|
2176
|
+
}
|
|
2177
|
+
}, children: item.inlineAction?.content }))] }));
|
|
2178
|
+
};
|
|
2179
|
+
|
|
2180
|
+
const GChoice = ({ item, disabled, isActive, suffix, isMultipleSelect, onClick, children, position = 'right', boxProps, activeStyle, }) => {
|
|
2181
|
+
const paddingBox = {
|
|
2182
|
+
paddingBlockStart: '200',
|
|
2183
|
+
paddingBlockEnd: '200',
|
|
2184
|
+
paddingInlineStart: '400',
|
|
2185
|
+
paddingInlineEnd: '400',
|
|
2186
|
+
};
|
|
2187
|
+
const emitOnClick = (e) => {
|
|
2188
|
+
e.preventDefault();
|
|
2189
|
+
e.stopPropagation();
|
|
2190
|
+
if (disabled)
|
|
2191
|
+
return;
|
|
2192
|
+
onClick?.(item.value, item.type);
|
|
2193
|
+
};
|
|
2194
|
+
const styleByState = useMemo(() => {
|
|
2195
|
+
if (!isActive) {
|
|
2196
|
+
return {
|
|
2197
|
+
box: { outlineWidth: '025', outlineColor: 'border' },
|
|
2198
|
+
text: { fontWeight: 'regular' },
|
|
2199
|
+
};
|
|
2200
|
+
}
|
|
2201
|
+
if (activeStyle)
|
|
2202
|
+
return activeStyle;
|
|
2203
|
+
return {
|
|
2204
|
+
box: { outlineWidth: '050', outlineColor: 'border-inverse' },
|
|
2205
|
+
text: { fontWeight: 'semibold' },
|
|
2206
|
+
};
|
|
2207
|
+
}, [activeStyle, isActive]);
|
|
2208
|
+
const checkBoxComponent = () => {
|
|
2209
|
+
return (jsx(Checkbox, { label: jsx(InlineStack, { gap: "100", children: jsx(Text, { truncate: true, as: "p", variant: "bodyMd", fontWeight: styleByState.text.fontWeight, children: item.label }) }), disabled: disabled, checked: isActive, name: item.type, ...(item.description && { helpText: jsx(ChoiceHelpText, { item: item }) }) }));
|
|
2210
|
+
};
|
|
2211
|
+
const radioComponent = () => {
|
|
2212
|
+
return (jsx(RadioButton, { label: jsxs(InlineStack, { gap: "100", children: [jsx(Text, { truncate: true, as: "p", variant: "bodyMd", fontWeight: styleByState.text.fontWeight, children: item.label }), item.icon] }), disabled: disabled, checked: isActive, name: item.type, ...(item.description && { helpText: jsx(ChoiceHelpText, { item: item }) }) }));
|
|
2213
|
+
};
|
|
2214
|
+
const renderInputComponent = () => {
|
|
2215
|
+
return isMultipleSelect ? checkBoxComponent() : radioComponent();
|
|
2216
|
+
};
|
|
2217
|
+
return (jsx("div", { onClick: (e) => emitOnClick(e), className: 'GChoice-ChoiceBox', children: jsx(Box, { borderRadius: "300", padding: '050', children: jsx(Box, { ...paddingBox, ...styleByState.box, shadow: "100", borderRadius: "300", ...boxProps, children: jsx(BlockStack, { gap: "0", children: jsxs(InlineStack, { align: "space-between", children: [position === 'left' && children, renderInputComponent(), position === 'right' && children, suffix] }) }) }) }, item.value) }));
|
|
2218
|
+
};
|
|
2219
|
+
|
|
751
2220
|
const GChartSkeleton = () => {
|
|
752
2221
|
return jsx(GSkeletonDisplayText, { height: "188px" });
|
|
753
2222
|
};
|
|
@@ -896,16 +2365,6 @@ const MetricDonutChartSkeleton = () => {
|
|
|
896
2365
|
return (jsx(Card, { children: jsxs(BlockStack, { gap: "400", children: [jsx(MetricInfoSkeleton, { isShowOneLine: true }), jsx(GChartSkeleton, {})] }) }));
|
|
897
2366
|
};
|
|
898
2367
|
|
|
899
|
-
var SvgChevronRightIcon = function SvgChevronRightIcon(props) {
|
|
900
|
-
return /*#__PURE__*/React.createElement("svg", Object.assign({
|
|
901
|
-
viewBox: "0 0 20 20"
|
|
902
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
903
|
-
fillRule: "evenodd",
|
|
904
|
-
d: "M7.72 14.53a.75.75 0 0 1 0-1.06l3.47-3.47-3.47-3.47a.75.75 0 0 1 1.06-1.06l4 4a.75.75 0 0 1 0 1.06l-4 4a.75.75 0 0 1-1.06 0Z"
|
|
905
|
-
}));
|
|
906
|
-
};
|
|
907
|
-
SvgChevronRightIcon.displayName = "ChevronRightIcon";
|
|
908
|
-
|
|
909
2368
|
const MetricValueSummary = ({ totalValue, hideComparison }) => (jsx(BlockStack, { gap: "200", children: jsxs(InlineStack, { blockAlign: "center", gap: "200", wrap: false, children: [jsx(InlineStack, { blockAlign: "center", gap: "200", children: jsx(Text, { as: "span", variant: "headingSm", children: totalValue.value }) }), !hideComparison && jsx(MetricPercentage, { change: totalValue.change })] }) }));
|
|
910
2369
|
|
|
911
2370
|
const MetricInfoBlock = ({ item, isHovered, isLoading, hideComparison, titleVariant = 'headingMd', titleFontWeight, onClickTitle, }) => {
|
|
@@ -1013,4 +2472,96 @@ const SingleMetricChartCard = ({ metricInfo, lineChartData, isLoading, hideCompa
|
|
|
1013
2472
|
return (jsx("div", { onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: jsx(Card, { children: jsxs(BlockStack, { gap: "200", children: [jsx(MetricInfoBlock, { item: metricInfo, isHovered: isHovered, isLoading: isLoading, hideComparison: hideComparison, onClickTitle: onClickTitle }), jsx(MetricChart, { lineChartData: lineChartData, isLoading: isLoading, isEmptyMetricData: isEmptyMetricData, columnTypes: columnTypes, metricKey: metricInfo.key })] }) }) }));
|
|
1014
2473
|
};
|
|
1015
2474
|
|
|
1016
|
-
|
|
2475
|
+
var IMAGE_FIRST_SESSION = "data:image/png;base64,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";
|
|
2476
|
+
|
|
2477
|
+
var IMAGE_ALL_SESSION = "data:image/png;base64,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";
|
|
2478
|
+
|
|
2479
|
+
var EAnalyticMode;
|
|
2480
|
+
(function (EAnalyticMode) {
|
|
2481
|
+
EAnalyticMode["ALL_SESSION"] = "ALL_SESSION";
|
|
2482
|
+
EAnalyticMode["FIRST_SESSION"] = "FIRST_SESSION";
|
|
2483
|
+
EAnalyticMode["PAGE_ONLY"] = "PAGE_ONLY";
|
|
2484
|
+
})(EAnalyticMode || (EAnalyticMode = {}));
|
|
2485
|
+
|
|
2486
|
+
const VIEW_BY_OPTIONS = [
|
|
2487
|
+
{
|
|
2488
|
+
id: EAnalyticMode.ALL_SESSION,
|
|
2489
|
+
content: 'All sessions',
|
|
2490
|
+
helpText: 'Count metrics for all sessions where this page shows up anywhere in the journey: before, during, or after other pages.',
|
|
2491
|
+
icon: IMAGE_ALL_SESSION,
|
|
2492
|
+
},
|
|
2493
|
+
{
|
|
2494
|
+
id: EAnalyticMode.FIRST_SESSION,
|
|
2495
|
+
content: 'Entry session only',
|
|
2496
|
+
helpText: 'Count metrics for sessions only where this page was the very first page visited, then track how they moved through the funnel.',
|
|
2497
|
+
icon: IMAGE_FIRST_SESSION,
|
|
2498
|
+
},
|
|
2499
|
+
];
|
|
2500
|
+
const AnalyticModeSelector = ({ activatorText = 'View by', value, onChange }) => {
|
|
2501
|
+
const options = useMemo(() => {
|
|
2502
|
+
return VIEW_BY_OPTIONS.map((option) => ({
|
|
2503
|
+
...option,
|
|
2504
|
+
}));
|
|
2505
|
+
}, []);
|
|
2506
|
+
const onSelectMode = (value) => {
|
|
2507
|
+
onChange(value);
|
|
2508
|
+
};
|
|
2509
|
+
return (jsx(GViewBySelector, { activatorText: activatorText, options: options, selected: value, onSelect: onSelectMode, maxWidth: "650px" }));
|
|
2510
|
+
};
|
|
2511
|
+
|
|
2512
|
+
const EXCHANGE_RATE_HELP_URL = 'https://help.shopify.com/en/manual/international/pricing/exchange-rates#auto-convert';
|
|
2513
|
+
const CurrencySelector = ({ currencies, selected, preferredAlignment = 'left', activatorText, onSelect, }) => {
|
|
2514
|
+
const { t } = useTranslation();
|
|
2515
|
+
const onSelectRef = useRef(onSelect);
|
|
2516
|
+
const handleSelection = useCallback((value) => {
|
|
2517
|
+
onSelectRef.current?.(value);
|
|
2518
|
+
}, []);
|
|
2519
|
+
const actionItems = useMemo(() => {
|
|
2520
|
+
if (!currencies)
|
|
2521
|
+
return [];
|
|
2522
|
+
const formattedCurrencies = currencies.map((currency) => ({
|
|
2523
|
+
content: currency,
|
|
2524
|
+
id: currency,
|
|
2525
|
+
}));
|
|
2526
|
+
const hasCurrencyDefault = formattedCurrencies.some((item) => item.id === DEFAULT_CURRENCY_ANALYTIC);
|
|
2527
|
+
if (!hasCurrencyDefault) {
|
|
2528
|
+
formattedCurrencies.push({
|
|
2529
|
+
content: DEFAULT_CURRENCY_ANALYTIC,
|
|
2530
|
+
id: DEFAULT_CURRENCY_ANALYTIC,
|
|
2531
|
+
});
|
|
2532
|
+
}
|
|
2533
|
+
return sortByConditions(formattedCurrencies, [
|
|
2534
|
+
{ attr: 'content', order: 'asc', preferredValue: DEFAULT_CURRENCY_ANALYTIC },
|
|
2535
|
+
]);
|
|
2536
|
+
}, [currencies]);
|
|
2537
|
+
const actionListItems = useMemo(() => {
|
|
2538
|
+
return actionItems.map((option) => ({
|
|
2539
|
+
id: option.id,
|
|
2540
|
+
content: option.content,
|
|
2541
|
+
onAction: () => handleSelection(option.id),
|
|
2542
|
+
active: option.id === selected,
|
|
2543
|
+
suffix: option.id === selected && jsx(Icon, { source: SvgCheckIcon, tone: "success" }),
|
|
2544
|
+
helpText: option.id === DEFAULT_CURRENCY_ANALYTIC && (jsx(Text, { as: "p", fontWeight: "semibold", children: t('Default') })),
|
|
2545
|
+
}));
|
|
2546
|
+
}, [actionItems, selected, handleSelection, t]);
|
|
2547
|
+
const isHidden = useMemo(() => {
|
|
2548
|
+
if (!actionItems?.length)
|
|
2549
|
+
return true;
|
|
2550
|
+
return actionItems.length === 1 && actionItems[0]?.id === DEFAULT_CURRENCY_ANALYTIC;
|
|
2551
|
+
}, [actionItems]);
|
|
2552
|
+
useEffect(() => {
|
|
2553
|
+
onSelectRef.current = onSelect;
|
|
2554
|
+
});
|
|
2555
|
+
if (isHidden)
|
|
2556
|
+
return null;
|
|
2557
|
+
return (jsx(GSelector, { options: actionListItems, selected: selected, variant: "action-list",
|
|
2558
|
+
// value originates from our CurrencyCode option ids, so the widen-to-string round trip is safe
|
|
2559
|
+
onSelect: (value) => handleSelection(value), activatorText: activatorText ?? t('Currency'), maxWidth: "225px", preferredAlignment: preferredAlignment, helpText: jsx(Box, { padding: "200", paddingBlockStart: "300", paddingBlockEnd: "300", borderColor: "border-tertiary", background: 'bg', children: jsx(GI18NText, { as: "p", variant: "bodyMd", transformers: {
|
|
2560
|
+
1: (text) => (jsx(GTextLink, { linkAction: {
|
|
2561
|
+
url: EXCHANGE_RATE_HELP_URL,
|
|
2562
|
+
target: '_blank',
|
|
2563
|
+
}, children: text }, text + 'text-link')),
|
|
2564
|
+
}, children: t("This will follow Shopify's current exchange rate. [1]Read more[]") }) }) }));
|
|
2565
|
+
};
|
|
2566
|
+
|
|
2567
|
+
export { ANALYTICS_METRIC_TOOLTIP, AnalyticModeSelector, CAMPAIGN_BACKGROUND_MAIN, CHART_MIN_HEIGHT, COMPARE_DATE_TIME_FILTERS_MAP, ChoiceHelpText, CompareDateTimePickerAlias, CurrencySelector, DATE_TIME_COMPARISON_FILTERS, DEFAULT_CURRENCY_ANALYTIC, DEFAULT_CURRENT_PERIOD_LABEL, DEFAULT_PREVIOUS_PERIOD_LABEL, DateTimeFilterInputs, DateTimeFilters, DateTimePickerContext, DateTimePickerProvider, EAnalyticColumnKey, EAnalyticMode, EDeviceType, EMetricKey, ETrafficSourceType, EVisitorType, GActivatorPopover, GBlockCenter, GButton, GCheckbox, GCheckboxMultiple, GCheckboxSingle, GChoice, GClickable, GDiv, GI18NText, GOptionList, GSelectableMetricChartCard, GSelector, GSkeletonDisplayText, GTextLink, GThumbnail, GTimePicker, GTooltip, GTooltipCard, GViewBySelector, MainDateTimePickerAlias, MetricDonutChartCard, PLACEHOLDER_VALUE, PREVIOUS_PERIOD_FILTER, SERIES_COLORS, SingleMetricChartCard, TARGET_CHANNEL, TARGET_DEVICES, TARGET_VISITOR, THUMB_PRODUCT_DEFAULT, TREND_TONE, convertToDateTimeFilters, createLastDaysRange, formatDate, formatDateTimeRange, formatDayjs, formatMs, formatTime, formatTimeRange, getDateRangeTitle, getDateTimeFilterBase, getDateTimeFilterByAlias, getDateTimeFilterMapping, getEndOfDayBy, getLast12Months, getLast30Days, getLast365Days, getLast7Days, getLast90Days, getLastMonth, getLastYear, getMonthAndYearByDateFilter, getNoComparison, getPreviousMonth, getPreviousPeriod, getPreviousQuarter, getPreviousWeek, getPreviousYear, getToday, getVersionDateDescription, getVersionDateRangeTitle, getYesterday, isDate, isMidnight, isSameDayTimestamp, isValidDate, isValidYearMonthDayDateString, parseYearMonthDayDateString, useDateTimeFilter, useDateTimePicker, useDateTimePickerContext, useVersionDateTimeFilters, variationName };
|