@embeddable.com/remarkable-pro 0.0.26 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BarChartDefaultHorizontalPro.js +3 -3
- package/dist/BarChartDefaultPro.js +3 -3
- package/dist/BarChartGroupedHorizontalPro.js +3 -3
- package/dist/BarChartGroupedPro.js +3 -3
- package/dist/BarChartStackedHorizontalPro.js +3 -3
- package/dist/BarChartStackedPro.js +3 -3
- package/dist/{ChartCard-C6rVK7Ux.js → ChartCard-CfVMn37p.js} +2 -2
- package/dist/{ChartCard-C6rVK7Ux.js.map → ChartCard-CfVMn37p.js.map} +1 -1
- package/dist/{ChartGranularitySelectField-BxhibpgC.js → ChartGranularitySelectField-C_6Mugcw.js} +2 -2
- package/dist/{ChartGranularitySelectField-BxhibpgC.js.map → ChartGranularitySelectField-C_6Mugcw.js.map} +1 -1
- package/dist/ComparisonPeriodSelectFieldPro.js +2 -2
- package/dist/DateRangePickerCustomPro.js +2 -2
- package/dist/DateRangeSelectFieldPro.js +2 -2
- package/dist/DimensionAndMeasureSingleSelectField-CJ1yAcRd.js +45 -0
- package/dist/DimensionAndMeasureSingleSelectField-CJ1yAcRd.js.map +1 -0
- package/dist/DimensionSingleSelectFieldPro.js +86 -0
- package/dist/DimensionSingleSelectFieldPro.js.map +1 -0
- package/dist/DonutChartPro.js +3 -3
- package/dist/DonutLabelChartPro.js +3 -3
- package/dist/{EditorCard-DCm6Ykb8.js → EditorCard-B9UFM_uA.js} +2 -2
- package/dist/{EditorCard-DCm6Ykb8.js.map → EditorCard-B9UFM_uA.js.map} +1 -1
- package/dist/{GranularitySelectField-CYq2YuAO.js → GranularitySelectField-DuRk6qY8.js} +2 -2
- package/dist/{GranularitySelectField-CYq2YuAO.js.map → GranularitySelectField-DuRk6qY8.js.map} +1 -1
- package/dist/GranularitySelectFieldPro.js +3 -3
- package/dist/HeatMapPro.js +3 -3
- package/dist/KpiChartNumberComparisonPro.js +3 -3
- package/dist/KpiChartNumberPro.js +3 -3
- package/dist/LineChartComparisonDefaultPro.js +3 -3
- package/dist/LineChartDefaultPro.js +3 -3
- package/dist/LineChartGroupedPro.js +3 -3
- package/dist/MeasureSingleSelectFieldPro.js +86 -0
- package/dist/MeasureSingleSelectFieldPro.js.map +1 -0
- package/dist/MultiSelectFieldPro.js +3 -3
- package/dist/PieChartPro.js +3 -3
- package/dist/PivotTablePro.js +3 -3
- package/dist/SingleSelectFieldPro.js +4 -4
- package/dist/SingleSelectFieldPro.js.map +1 -1
- package/dist/TableChartPaginated.js +3 -3
- package/dist/TableScrollable.js +4 -4
- package/dist/{bars.utils-IYtKAgtt.js → bars.utils-B088DNG-.js} +3 -3
- package/dist/{bars.utils-IYtKAgtt.js.map → bars.utils-B088DNG-.js.map} +1 -1
- package/dist/{charts.utils-CeGAdGVG.js → charts.utils-D8oW5W5r.js} +3 -3
- package/dist/{charts.utils-CeGAdGVG.js.map → charts.utils-D8oW5W5r.js.map} +1 -1
- package/dist/{component.inputs.constants-wDyG8tFg.js → component.inputs.constants-DzpzJ9Na.js} +202 -189
- package/dist/{component.inputs.constants-wDyG8tFg.js.map → component.inputs.constants-DzpzJ9Na.js.map} +1 -1
- package/dist/components/component.inputs.constants.d.ts +33 -0
- package/dist/components/component.inputs.constants.d.ts.map +1 -1
- package/dist/components/editors/DimensionSingleSelectFieldPro/index.d.ts +12 -0
- package/dist/components/editors/DimensionSingleSelectFieldPro/index.d.ts.map +1 -0
- package/dist/components/editors/MeasureSingleSelectFieldPro/index.d.ts +12 -0
- package/dist/components/editors/MeasureSingleSelectFieldPro/index.d.ts.map +1 -0
- package/dist/components/editors/shared/DimensionAndMeasureSingleSelectField/DimensionAndMeasureSingleSelectField.d.ts +11 -0
- package/dist/components/editors/shared/DimensionAndMeasureSingleSelectField/DimensionAndMeasureSingleSelectField.d.ts.map +1 -0
- package/dist/components/editors/utils/dimensionsAndMeasures.utils.d.ts +9 -0
- package/dist/components/editors/utils/dimensionsAndMeasures.utils.d.ts.map +1 -0
- package/dist/components/preview.data.constants.d.ts +1 -0
- package/dist/components/preview.data.constants.d.ts.map +1 -1
- package/dist/embeddable-components.json +28 -24
- package/dist/{formatter.utils-DlbthOXA.js → formatter.utils-CiN6axbW.js} +2 -2
- package/dist/{formatter.utils-DlbthOXA.js.map → formatter.utils-CiN6axbW.js.map} +1 -1
- package/dist/{index-BFvsuXiz.js → index-7JWw7tI5.js} +4 -4
- package/dist/{index-BFvsuXiz.js.map → index-7JWw7tI5.js.map} +1 -1
- package/dist/{index-fcVfPVmY.js → index-9WoT-_pt.js} +5 -5
- package/dist/{index-fcVfPVmY.js.map → index-9WoT-_pt.js.map} +1 -1
- package/dist/{index-gnajbHE2.js → index-BCVHDZZk.js} +3 -3
- package/dist/{index-gnajbHE2.js.map → index-BCVHDZZk.js.map} +1 -1
- package/dist/{index-eEE2JmCK.js → index-BEckqi71.js} +6 -6
- package/dist/{index-eEE2JmCK.js.map → index-BEckqi71.js.map} +1 -1
- package/dist/{index-CvKdGFx3.js → index-BaTX0t-a.js} +5 -5
- package/dist/{index-CvKdGFx3.js.map → index-BaTX0t-a.js.map} +1 -1
- package/dist/{index-CiO0tI86.js → index-BnOZcps-.js} +4 -4
- package/dist/{index-CiO0tI86.js.map → index-BnOZcps-.js.map} +1 -1
- package/dist/{index-icM1qOGP.js → index-Bv9-6Ht7.js} +4 -4
- package/dist/{index-icM1qOGP.js.map → index-Bv9-6Ht7.js.map} +1 -1
- package/dist/{index-DfrwKtFA.js → index-CEDNCQK8.js} +4 -4
- package/dist/{index-DfrwKtFA.js.map → index-CEDNCQK8.js.map} +1 -1
- package/dist/{index-DHiPuxQQ.js → index-ClEmYHgx.js} +3 -3
- package/dist/{index-DHiPuxQQ.js.map → index-ClEmYHgx.js.map} +1 -1
- package/dist/{index-DytdIFQb.js → index-Co-4RSTf.js} +4 -4
- package/dist/{index-DytdIFQb.js.map → index-Co-4RSTf.js.map} +1 -1
- package/dist/{index-BkcQaDp8.js → index-Crpz4FA4.js} +5 -5
- package/dist/{index-BkcQaDp8.js.map → index-Crpz4FA4.js.map} +1 -1
- package/dist/{index-DCA_6rWw.js → index-D37a5H7U.js} +5 -5
- package/dist/{index-DCA_6rWw.js.map → index-D37a5H7U.js.map} +1 -1
- package/dist/{index-D3HMg6eu.js → index-DADSJYlJ.js} +5 -5
- package/dist/{index-D3HMg6eu.js.map → index-DADSJYlJ.js.map} +1 -1
- package/dist/{index-B2N9BsUK.js → index-DELS_iFy.js} +5 -5
- package/dist/{index-B2N9BsUK.js.map → index-DELS_iFy.js.map} +1 -1
- package/dist/{index-rodtTo_t.js → index-DKYeygzz.js} +5 -5
- package/dist/{index-rodtTo_t.js.map → index-DKYeygzz.js.map} +1 -1
- package/dist/{index-BaboirUQ.js → index-DeWASjPW.js} +4 -4
- package/dist/{index-BaboirUQ.js.map → index-DeWASjPW.js.map} +1 -1
- package/dist/{index-Bd4SFepB.js → index-DyN2Ja6Z.js} +5 -5
- package/dist/{index-Bd4SFepB.js.map → index-DyN2Ja6Z.js.map} +1 -1
- package/dist/{index-Cf96kZIH.js → index-Rm0SvvJH.js} +5 -5
- package/dist/{index-Cf96kZIH.js.map → index-Rm0SvvJH.js.map} +1 -1
- package/dist/{index-CoOz-mWY.js → index-eDr6IKsf.js} +5 -5
- package/dist/{index-CoOz-mWY.js.map → index-eDr6IKsf.js.map} +1 -1
- package/dist/{index-AqDTPWnU.js → index-mtJHlsB1.js} +4 -4
- package/dist/{index-AqDTPWnU.js.map → index-mtJHlsB1.js.map} +1 -1
- package/dist/{index-CgVjpFNs.js → index-n6RmR7mX.js} +4 -4
- package/dist/{index-CgVjpFNs.js.map → index-n6RmR7mX.js.map} +1 -1
- package/dist/index.js +29 -29
- package/dist/{pies.utils-XolEkyOz.js → pies.utils-DLk70PA8.js} +4 -4
- package/dist/{pies.utils-XolEkyOz.js.map → pies.utils-DLk70PA8.js.map} +1 -1
- package/dist/{preview.data.constants-37wUPKG8.js → preview.data.constants-BBIMPXYy.js} +21 -20
- package/dist/preview.data.constants-BBIMPXYy.js.map +1 -0
- package/dist/{tables.utils-Bb34U0u9.js → tables.utils-C7MWIQsp.js} +3 -3
- package/dist/{tables.utils-Bb34U0u9.js.map → tables.utils-C7MWIQsp.js.map} +1 -1
- package/dist/{timeRange.utils-DdzcsFwj.js → timeRange.utils-LHM3sXwE.js} +2 -2
- package/dist/{timeRange.utils-DdzcsFwj.js.map → timeRange.utils-LHM3sXwE.js.map} +1 -1
- package/package.json +3 -3
- package/dist/preview.data.constants-37wUPKG8.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { V as l, l as m } from "./Color.type.emb-De2K8PVb.js";
|
|
2
2
|
import { definePreview as u, defineComponent as d } from "@embeddable.com/react";
|
|
3
|
-
import { B as n } from "./index-
|
|
4
|
-
import { b as e } from "./component.inputs.constants-
|
|
5
|
-
import { p as r } from "./preview.data.constants-
|
|
3
|
+
import { B as n } from "./index-9WoT-_pt.js";
|
|
4
|
+
import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { p as r } from "./preview.data.constants-BBIMPXYy.js";
|
|
6
6
|
import { g as p } from "./granularity.utils-CA504xa0.js";
|
|
7
7
|
const x = {
|
|
8
8
|
name: "BarChartDefaultHorizontalPro",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { V as l, l as m } from "./Color.type.emb-De2K8PVb.js";
|
|
2
2
|
import { definePreview as u, defineComponent as d } from "@embeddable.com/react";
|
|
3
|
-
import { B as t } from "./index-
|
|
4
|
-
import { b as e } from "./component.inputs.constants-
|
|
5
|
-
import { p as s } from "./preview.data.constants-
|
|
3
|
+
import { B as t } from "./index-Rm0SvvJH.js";
|
|
4
|
+
import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { p as s } from "./preview.data.constants-BBIMPXYy.js";
|
|
6
6
|
import { g as p } from "./granularity.utils-CA504xa0.js";
|
|
7
7
|
const x = {
|
|
8
8
|
name: "BarChartDefaultPro",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { V as s, l as m } from "./Color.type.emb-De2K8PVb.js";
|
|
2
2
|
import { definePreview as u, defineComponent as p } from "@embeddable.com/react";
|
|
3
|
-
import { B as n } from "./index-
|
|
4
|
-
import { b as e } from "./component.inputs.constants-
|
|
5
|
-
import { p as a } from "./preview.data.constants-
|
|
3
|
+
import { B as n } from "./index-DELS_iFy.js";
|
|
4
|
+
import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { p as a } from "./preview.data.constants-BBIMPXYy.js";
|
|
6
6
|
import { g as d } from "./granularity.utils-CA504xa0.js";
|
|
7
7
|
const x = {
|
|
8
8
|
name: "BarChartGroupedHorizontalPro",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { V as o, l as m } from "./Color.type.emb-De2K8PVb.js";
|
|
2
2
|
import { definePreview as u, defineComponent as p } from "@embeddable.com/react";
|
|
3
|
-
import { B as n } from "./index-
|
|
4
|
-
import { b as e } from "./component.inputs.constants-
|
|
5
|
-
import { p as a } from "./preview.data.constants-
|
|
3
|
+
import { B as n } from "./index-eDr6IKsf.js";
|
|
4
|
+
import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { p as a } from "./preview.data.constants-BBIMPXYy.js";
|
|
6
6
|
import { g as d } from "./granularity.utils-CA504xa0.js";
|
|
7
7
|
const x = {
|
|
8
8
|
name: "BarChartGroupedPro",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { V as o, l as m } from "./Color.type.emb-De2K8PVb.js";
|
|
2
2
|
import { definePreview as u, defineComponent as d } from "@embeddable.com/react";
|
|
3
|
-
import { B as n } from "./index-
|
|
4
|
-
import { b as e } from "./component.inputs.constants-
|
|
5
|
-
import { p as i } from "./preview.data.constants-
|
|
3
|
+
import { B as n } from "./index-DyN2Ja6Z.js";
|
|
4
|
+
import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { p as i } from "./preview.data.constants-BBIMPXYy.js";
|
|
6
6
|
import { g as p } from "./granularity.utils-CA504xa0.js";
|
|
7
7
|
const x = {
|
|
8
8
|
name: "BarChartStackedHorizontalPro",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { V as n, l as m } from "./Color.type.emb-De2K8PVb.js";
|
|
2
2
|
import { definePreview as u, defineComponent as d } from "@embeddable.com/react";
|
|
3
|
-
import { B as o } from "./index-
|
|
4
|
-
import { b as e } from "./component.inputs.constants-
|
|
5
|
-
import { p as i } from "./preview.data.constants-
|
|
3
|
+
import { B as o } from "./index-DKYeygzz.js";
|
|
4
|
+
import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { p as i } from "./preview.data.constants-BBIMPXYy.js";
|
|
6
6
|
import { g as x } from "./granularity.utils-CA504xa0.js";
|
|
7
7
|
const p = {
|
|
8
8
|
name: "BarChartStackedPro",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { i as I, j as t, W as N, z as S, E as L, F as k, A as D, r as M, s as F, p as _, t as H, X as b, v as f } from "./Color.type.emb-De2K8PVb.js";
|
|
2
2
|
import j, { useRef as T } from "react";
|
|
3
3
|
import { useTheme as p } from "@embeddable.com/react";
|
|
4
|
-
import { a as v, i as d, I as w } from "./component.inputs.constants-
|
|
4
|
+
import { a as v, i as d, I as w } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
5
|
/**
|
|
6
6
|
* @license @tabler/icons-react v3.36.1 - MIT
|
|
7
7
|
*
|
|
@@ -113,4 +113,4 @@ q.displayName = "ChartCard";
|
|
|
113
113
|
export {
|
|
114
114
|
q as C
|
|
115
115
|
};
|
|
116
|
-
//# sourceMappingURL=ChartCard-
|
|
116
|
+
//# sourceMappingURL=ChartCard-CfVMn37p.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartCard-C6rVK7Ux.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconDotsVertical.mjs","../src/components/charts/shared/ChartCard/ChartCardLoading/ChartCardLoading.tsx","../src/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.tsx","../src/components/charts/shared/ChartCard/ChartCard.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.36.1 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M11 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M11 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-2\" }]];\nconst IconDotsVertical = createReactComponent(\"outline\", \"dots-vertical\", \"DotsVertical\", __iconNode);\n\nexport { __iconNode, IconDotsVertical as default };\n//# sourceMappingURL=IconDotsVertical.mjs.map\n","import { IconLoader2 } from '@tabler/icons-react';\nimport styles from './ChartCardLoading.module.css';\n\nexport const ChartCardLoading = () => <IconLoader2 className={styles.loading} />;\n","import { IconDotsVertical } from '@tabler/icons-react';\nimport React from 'react';\nimport { useTheme } from '@embeddable.com/react';\nimport { ChartCardLoading } from '../ChartCardLoading/ChartCardLoading';\nimport { i18n, i18nSetup } from '../../../../../theme/i18n/i18n';\nimport { Theme } from '../../../../../theme/theme.types';\nimport {\n Dropdown,\n ActionIcon,\n SelectFieldContent,\n SelectListOption,\n} from '@embeddable.com/remarkable-ui';\nimport styles from './ChartCardMenuPro.module.css';\nimport { ChartCardMenuOptionOnClickProps } from '../../../../../theme/defaults/defaults.ChartCardMenu.constants';\n\ntype InlineSvgFromDataProps = React.HTMLAttributes<HTMLSpanElement> & {\n src: string;\n};\n\nexport function InlineSvgFromData({ src, className, ...rest }: InlineSvgFromDataProps) {\n // Remove prefix and URL-decode the SVG markup\n const svgMarkup = decodeURIComponent(src.replace(/^data:image\\/svg\\+xml,/, ''));\n\n return <div className={className} {...rest} dangerouslySetInnerHTML={{ __html: svgMarkup }} />;\n}\n\ntype ChartCardMenuProProps = Omit<ChartCardMenuOptionOnClickProps, 'theme'>;\n\nexport const ChartCardMenuPro: React.FC<ChartCardMenuProProps> = (props) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const [isLoading, setIsLoading] = React.useState(false);\n\n const options = theme.defaults.chartMenuOptions ?? [];\n\n if (options.length === 0) {\n return null;\n }\n\n const startAction = (onClick: () => void | Promise<void>) => {\n setTimeout(() => {\n Promise.resolve(onClick()).finally(() => setIsLoading(false));\n }, 100);\n };\n\n const handleExport = (onClick: (props: ChartCardMenuOptionOnClickProps) => void) => {\n setIsLoading(true);\n if (props.onCustomDownload) {\n props.onCustomDownload((args) => startAction(() => onClick(args)));\n return;\n }\n startAction(() => onClick({ ...props, theme }));\n };\n\n return (\n <Dropdown\n side=\"bottom\"\n align=\"end\"\n triggerComponent={isLoading ? <ChartCardLoading /> : <ActionIcon icon={IconDotsVertical} />}\n >\n <SelectFieldContent className={styles.list} autoFocus>\n {options.map((option, index) => {\n const label = i18n.t(option.labelKey);\n\n return (\n <SelectListOption\n key={index}\n label={label}\n onClick={() => handleExport(option.onClick)}\n startIcon={option.iconSrc ? <InlineSvgFromData src={option.iconSrc} /> : undefined}\n />\n );\n })}\n </SelectFieldContent>\n </Dropdown>\n );\n};\n","import React, { CSSProperties, useRef } from 'react';\nimport { IconAlertCircle } from '@tabler/icons-react';\nimport {\n Card,\n CardContent,\n CardFeedback,\n CardHeader,\n Skeleton,\n} from '@embeddable.com/remarkable-ui';\nimport styles from './ChartCard.module.css';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { useTheme } from '@embeddable.com/react';\nimport { ChartCardLoading } from './ChartCardLoading/ChartCardLoading';\nimport { ChartCardMenuPro } from './ChartCardMenuPro/ChartCardMenuPro';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport clsx from 'clsx';\nimport { ChartCardMenuOptionOnClickProps } from '../../../../theme/defaults/defaults.ChartCardMenu.constants';\n\nexport type ChartCardHeaderProps = {\n title?: string;\n description?: string;\n hideMenu?: boolean;\n};\n\ntype ChartCardProps = {\n children: React.ReactNode;\n data: DataResponse;\n errorMessage?: string;\n style?: CSSProperties;\n dimensionsAndMeasures?: (Dimension | Measure)[];\n onCustomDownload?: (props: (props: ChartCardMenuOptionOnClickProps) => void) => void;\n} & ChartCardHeaderProps;\n\nexport const ChartCard = React.forwardRef<HTMLDivElement, ChartCardProps>(\n (\n {\n title,\n description,\n children,\n data,\n errorMessage,\n dimensionsAndMeasures = [],\n hideMenu = false,\n onCustomDownload,\n },\n ref,\n ) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const chartRef = useRef<HTMLDivElement>(null);\n\n const hasData = Boolean(data?.data && data.data?.length > 0);\n\n const isLoading = !data || data?.isLoading;\n\n const getDisplay = () => {\n if (isLoading && !hasData) {\n return <Skeleton />;\n }\n\n if (errorMessage) {\n return (\n <CardFeedback\n variant=\"error\"\n icon={IconAlertCircle}\n title={i18n.t('charts.errorTitle')}\n message={errorMessage}\n />\n );\n }\n\n if (!hasData) {\n return (\n <CardFeedback\n title={i18n.t('charts.emptyTitle')}\n message={i18n.t('charts.emptyMessage')}\n />\n );\n }\n\n return children;\n };\n\n return (\n <Card className={styles.chartCard}>\n {hideMenu ? null : (\n <>\n <div className={styles.chartCardHeader}>\n <CardHeader title={title} subtitle={description} />\n </div>\n <div className={styles.chartCardRightContent}>\n <div className={clsx(!isLoading && styles.hidden)}>\n <ChartCardLoading />\n </div>\n <div className={clsx(isLoading && styles.hidden)}>\n <ChartCardMenuPro\n title={title}\n containerRef={chartRef}\n data={data?.data}\n dimensionsAndMeasures={dimensionsAndMeasures}\n onCustomDownload={onCustomDownload}\n />\n </div>\n </div>\n </>\n )}\n\n <CardContent ref={onCustomDownload ? ref : chartRef}>{getDisplay()}</CardContent>\n </Card>\n );\n },\n);\n\nChartCard.displayName = 'ChartCard';\n"],"names":["__iconNode","IconDotsVertical","createReactComponent","ChartCardLoading","jsx","IconLoader2","styles","InlineSvgFromData","src","className","rest","svgMarkup","ChartCardMenuPro","props","theme","useTheme","i18nSetup","isLoading","setIsLoading","React","options","startAction","onClick","handleExport","args","Dropdown","ActionIcon","SelectFieldContent","option","index","label","i18n","SelectListOption","ChartCard","title","description","children","data","errorMessage","dimensionsAndMeasures","hideMenu","onCustomDownload","ref","chartRef","useRef","hasData","_a","getDisplay","Skeleton","CardFeedback","IconAlertCircle","jsxs","Card","Fragment","CardHeader","clsx","CardContent"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"ChartCard-CfVMn37p.js","sources":["../node_modules/@tabler/icons-react/dist/esm/icons/IconDotsVertical.mjs","../src/components/charts/shared/ChartCard/ChartCardLoading/ChartCardLoading.tsx","../src/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.tsx","../src/components/charts/shared/ChartCard/ChartCard.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.36.1 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M11 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M11 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-2\" }]];\nconst IconDotsVertical = createReactComponent(\"outline\", \"dots-vertical\", \"DotsVertical\", __iconNode);\n\nexport { __iconNode, IconDotsVertical as default };\n//# sourceMappingURL=IconDotsVertical.mjs.map\n","import { IconLoader2 } from '@tabler/icons-react';\nimport styles from './ChartCardLoading.module.css';\n\nexport const ChartCardLoading = () => <IconLoader2 className={styles.loading} />;\n","import { IconDotsVertical } from '@tabler/icons-react';\nimport React from 'react';\nimport { useTheme } from '@embeddable.com/react';\nimport { ChartCardLoading } from '../ChartCardLoading/ChartCardLoading';\nimport { i18n, i18nSetup } from '../../../../../theme/i18n/i18n';\nimport { Theme } from '../../../../../theme/theme.types';\nimport {\n Dropdown,\n ActionIcon,\n SelectFieldContent,\n SelectListOption,\n} from '@embeddable.com/remarkable-ui';\nimport styles from './ChartCardMenuPro.module.css';\nimport { ChartCardMenuOptionOnClickProps } from '../../../../../theme/defaults/defaults.ChartCardMenu.constants';\n\ntype InlineSvgFromDataProps = React.HTMLAttributes<HTMLSpanElement> & {\n src: string;\n};\n\nexport function InlineSvgFromData({ src, className, ...rest }: InlineSvgFromDataProps) {\n // Remove prefix and URL-decode the SVG markup\n const svgMarkup = decodeURIComponent(src.replace(/^data:image\\/svg\\+xml,/, ''));\n\n return <div className={className} {...rest} dangerouslySetInnerHTML={{ __html: svgMarkup }} />;\n}\n\ntype ChartCardMenuProProps = Omit<ChartCardMenuOptionOnClickProps, 'theme'>;\n\nexport const ChartCardMenuPro: React.FC<ChartCardMenuProProps> = (props) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const [isLoading, setIsLoading] = React.useState(false);\n\n const options = theme.defaults.chartMenuOptions ?? [];\n\n if (options.length === 0) {\n return null;\n }\n\n const startAction = (onClick: () => void | Promise<void>) => {\n setTimeout(() => {\n Promise.resolve(onClick()).finally(() => setIsLoading(false));\n }, 100);\n };\n\n const handleExport = (onClick: (props: ChartCardMenuOptionOnClickProps) => void) => {\n setIsLoading(true);\n if (props.onCustomDownload) {\n props.onCustomDownload((args) => startAction(() => onClick(args)));\n return;\n }\n startAction(() => onClick({ ...props, theme }));\n };\n\n return (\n <Dropdown\n side=\"bottom\"\n align=\"end\"\n triggerComponent={isLoading ? <ChartCardLoading /> : <ActionIcon icon={IconDotsVertical} />}\n >\n <SelectFieldContent className={styles.list} autoFocus>\n {options.map((option, index) => {\n const label = i18n.t(option.labelKey);\n\n return (\n <SelectListOption\n key={index}\n label={label}\n onClick={() => handleExport(option.onClick)}\n startIcon={option.iconSrc ? <InlineSvgFromData src={option.iconSrc} /> : undefined}\n />\n );\n })}\n </SelectFieldContent>\n </Dropdown>\n );\n};\n","import React, { CSSProperties, useRef } from 'react';\nimport { IconAlertCircle } from '@tabler/icons-react';\nimport {\n Card,\n CardContent,\n CardFeedback,\n CardHeader,\n Skeleton,\n} from '@embeddable.com/remarkable-ui';\nimport styles from './ChartCard.module.css';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { useTheme } from '@embeddable.com/react';\nimport { ChartCardLoading } from './ChartCardLoading/ChartCardLoading';\nimport { ChartCardMenuPro } from './ChartCardMenuPro/ChartCardMenuPro';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport clsx from 'clsx';\nimport { ChartCardMenuOptionOnClickProps } from '../../../../theme/defaults/defaults.ChartCardMenu.constants';\n\nexport type ChartCardHeaderProps = {\n title?: string;\n description?: string;\n hideMenu?: boolean;\n};\n\ntype ChartCardProps = {\n children: React.ReactNode;\n data: DataResponse;\n errorMessage?: string;\n style?: CSSProperties;\n dimensionsAndMeasures?: (Dimension | Measure)[];\n onCustomDownload?: (props: (props: ChartCardMenuOptionOnClickProps) => void) => void;\n} & ChartCardHeaderProps;\n\nexport const ChartCard = React.forwardRef<HTMLDivElement, ChartCardProps>(\n (\n {\n title,\n description,\n children,\n data,\n errorMessage,\n dimensionsAndMeasures = [],\n hideMenu = false,\n onCustomDownload,\n },\n ref,\n ) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const chartRef = useRef<HTMLDivElement>(null);\n\n const hasData = Boolean(data?.data && data.data?.length > 0);\n\n const isLoading = !data || data?.isLoading;\n\n const getDisplay = () => {\n if (isLoading && !hasData) {\n return <Skeleton />;\n }\n\n if (errorMessage) {\n return (\n <CardFeedback\n variant=\"error\"\n icon={IconAlertCircle}\n title={i18n.t('charts.errorTitle')}\n message={errorMessage}\n />\n );\n }\n\n if (!hasData) {\n return (\n <CardFeedback\n title={i18n.t('charts.emptyTitle')}\n message={i18n.t('charts.emptyMessage')}\n />\n );\n }\n\n return children;\n };\n\n return (\n <Card className={styles.chartCard}>\n {hideMenu ? null : (\n <>\n <div className={styles.chartCardHeader}>\n <CardHeader title={title} subtitle={description} />\n </div>\n <div className={styles.chartCardRightContent}>\n <div className={clsx(!isLoading && styles.hidden)}>\n <ChartCardLoading />\n </div>\n <div className={clsx(isLoading && styles.hidden)}>\n <ChartCardMenuPro\n title={title}\n containerRef={chartRef}\n data={data?.data}\n dimensionsAndMeasures={dimensionsAndMeasures}\n onCustomDownload={onCustomDownload}\n />\n </div>\n </div>\n </>\n )}\n\n <CardContent ref={onCustomDownload ? ref : chartRef}>{getDisplay()}</CardContent>\n </Card>\n );\n },\n);\n\nChartCard.displayName = 'ChartCard';\n"],"names":["__iconNode","IconDotsVertical","createReactComponent","ChartCardLoading","jsx","IconLoader2","styles","InlineSvgFromData","src","className","rest","svgMarkup","ChartCardMenuPro","props","theme","useTheme","i18nSetup","isLoading","setIsLoading","React","options","startAction","onClick","handleExport","args","Dropdown","ActionIcon","SelectFieldContent","option","index","label","i18n","SelectListOption","ChartCard","title","description","children","data","errorMessage","dimensionsAndMeasures","hideMenu","onCustomDownload","ref","chartRef","useRef","hasData","_a","getDisplay","Skeleton","CardFeedback","IconAlertCircle","jsxs","Card","Fragment","CardHeader","clsx","CardContent"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/{ChartGranularitySelectField-BxhibpgC.js → ChartGranularitySelectField-C_6Mugcw.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { j as e, p as u } from "./Color.type.emb-De2K8PVb.js";
|
|
2
|
-
import { G as y } from "./GranularitySelectField-
|
|
2
|
+
import { G as y } from "./GranularitySelectField-DuRk6qY8.js";
|
|
3
3
|
const m = "_chartGranularitySelectFieldContainer_m26zn_1", p = "_marginTop_m26zn_7", i = {
|
|
4
4
|
chartGranularitySelectFieldContainer: m,
|
|
5
5
|
marginTop: p
|
|
@@ -37,4 +37,4 @@ const m = "_chartGranularitySelectFieldContainer_m26zn_1", p = "_marginTop_m26zn
|
|
|
37
37
|
export {
|
|
38
38
|
S as C
|
|
39
39
|
};
|
|
40
|
-
//# sourceMappingURL=ChartGranularitySelectField-
|
|
40
|
+
//# sourceMappingURL=ChartGranularitySelectField-C_6Mugcw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartGranularitySelectField-
|
|
1
|
+
{"version":3,"file":"ChartGranularitySelectField-C_6Mugcw.js","sources":["../src/components/charts/shared/ChartGranularitySelectField/ChartGranularitySelectField.tsx"],"sourcesContent":["import { Dimension, Granularity } from '@embeddable.com/core';\nimport {\n GranularitySelectField,\n GranularitySelectFieldProps,\n} from '../../../editors/shared/GranularitySelectField/GranularitySelectField';\nimport styles from './ChartGranularitySelectField.module.css';\nimport clsx from 'clsx';\n\ntype ChartGranularitySelectFieldProps = Pick<GranularitySelectFieldProps, 'onChange'> & {\n dimension: Dimension;\n hasMarginTop?: boolean;\n};\n\nconst dimensionGranularities: Granularity[] = ['day', 'week', 'month', 'quarter', 'year'];\n\nexport const ChartGranularitySelectField = ({\n dimension,\n hasMarginTop,\n ...props\n}: ChartGranularitySelectFieldProps) => {\n const showGranularitySelector = dimension?.inputs?.showGranularityDropdown;\n\n if (!showGranularitySelector) {\n return null;\n }\n\n const dimensionTimeRange = dimension.inputs?.dateBounds;\n const dimensionGranularity = dimension.inputs?.granularity;\n\n return (\n <div\n className={clsx(\n styles.chartGranularitySelectFieldContainer,\n hasMarginTop && styles.marginTop,\n )}\n >\n <GranularitySelectField\n {...props}\n primaryTimeRange={dimensionTimeRange}\n granularity={dimensionGranularity}\n granularities={dimensionGranularities}\n variant=\"ghost\"\n side=\"bottom\"\n align=\"end\"\n />\n </div>\n );\n};\n"],"names":["dimensionGranularities","ChartGranularitySelectField","dimension","hasMarginTop","props","_a","dimensionTimeRange","_b","dimensionGranularity","_c","jsx","clsx","styles","GranularitySelectField"],"mappings":";;;;;GAaMA,IAAwC,CAAC,OAAO,QAAQ,SAAS,WAAW,MAAM,GAE3EC,IAA8B,CAAC;AAAA,EAC1C,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGC;AACL,MAAwC;;AAGtC,MAAI,GAF4BC,IAAAH,KAAA,gBAAAA,EAAW,WAAX,gBAAAG,EAAmB;AAGjD,WAAO;AAGT,QAAMC,KAAqBC,IAAAL,EAAU,WAAV,gBAAAK,EAAkB,YACvCC,KAAuBC,IAAAP,EAAU,WAAV,gBAAAO,EAAkB;AAE/C,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACTC,EAAO;AAAA,QACPT,KAAgBS,EAAO;AAAA,MAAA;AAAA,MAGzB,UAAAF,gBAAAA,EAAAA;AAAAA,QAACG;AAAA,QAAA;AAAA,UACE,GAAGT;AAAA,UACJ,kBAAkBE;AAAA,UAClB,aAAaE;AAAA,UACb,eAAeR;AAAA,UACf,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,OAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IACR;AAAA,EAAA;AAGN;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { definePreview as n, defineComponent as t } from "@embeddable.com/react";
|
|
2
2
|
import { V as r } from "./Color.type.emb-De2K8PVb.js";
|
|
3
|
-
import { D as i } from "./index-
|
|
4
|
-
import { b as e, C as a } from "./component.inputs.constants-
|
|
3
|
+
import { D as i } from "./index-ClEmYHgx.js";
|
|
4
|
+
import { b as e, C as a } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
5
|
const l = {
|
|
6
6
|
name: "ComparisonPeriodSelectFieldPro",
|
|
7
7
|
label: "Comparison Period Select Field",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useTheme as C, definePreview as P, defineComponent as y } from "@embeddable.com/react";
|
|
2
2
|
import { j as l, k as D, V as s } from "./Color.type.emb-De2K8PVb.js";
|
|
3
3
|
import { u as w, g as V, a as k, b as S } from "./dates.utils-BF32dTLi.js";
|
|
4
|
-
import { a as j, r as F, i as M, b as a } from "./component.inputs.constants-
|
|
5
|
-
import { E as T } from "./EditorCard-
|
|
4
|
+
import { a as j, r as F, i as M, b as a } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { E as T } from "./EditorCard-B9UFM_uA.js";
|
|
6
6
|
import { I as x } from "./IconCalendarFilled-CYiLMPm9.js";
|
|
7
7
|
const r = (e) => {
|
|
8
8
|
const t = C();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { definePreview as o, defineComponent as l } from "@embeddable.com/react";
|
|
2
2
|
import { V as t } from "./Color.type.emb-De2K8PVb.js";
|
|
3
|
-
import { D as n } from "./index-
|
|
4
|
-
import { b as e } from "./component.inputs.constants-
|
|
3
|
+
import { D as n } from "./index-BCVHDZZk.js";
|
|
4
|
+
import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
5
|
const r = {
|
|
6
6
|
name: "DateRangeSelectFieldPro",
|
|
7
7
|
label: "Date-Range Picker - Presets",
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { j as f, S as d } from "./Color.type.emb-De2K8PVb.js";
|
|
2
|
+
import { useTheme as S } from "@embeddable.com/react";
|
|
3
|
+
import { useState as p, useEffect as g } from "react";
|
|
4
|
+
import { g as C } from "./formatter.utils-CiN6axbW.js";
|
|
5
|
+
const v = ({
|
|
6
|
+
dimensionsAndMeasures: s,
|
|
7
|
+
searchValue: r,
|
|
8
|
+
theme: a
|
|
9
|
+
}) => {
|
|
10
|
+
const n = C(a);
|
|
11
|
+
return s.filter((e) => n.dimensionOrMeasureTitle(e).toLowerCase().includes(r.toLowerCase())).map((e) => ({
|
|
12
|
+
value: e.name,
|
|
13
|
+
label: n.dimensionOrMeasureTitle(e)
|
|
14
|
+
}));
|
|
15
|
+
}, M = (s) => {
|
|
16
|
+
const r = S(), [a, n] = p(""), { selectedValue: e, options: t, clearable: i, placeholder: m, onChange: l } = s, u = (c) => {
|
|
17
|
+
const o = t.find((h) => h.name === c);
|
|
18
|
+
l(o);
|
|
19
|
+
};
|
|
20
|
+
return g(() => {
|
|
21
|
+
if (!(!i && !e)) return;
|
|
22
|
+
const o = t == null ? void 0 : t[0];
|
|
23
|
+
o && l(o);
|
|
24
|
+
}, [i, e, t, l]), /* @__PURE__ */ f.jsx(
|
|
25
|
+
d,
|
|
26
|
+
{
|
|
27
|
+
searchable: !0,
|
|
28
|
+
clearable: i,
|
|
29
|
+
placeholder: m,
|
|
30
|
+
value: e == null ? void 0 : e.name,
|
|
31
|
+
onChange: u,
|
|
32
|
+
onSearch: n,
|
|
33
|
+
options: v({
|
|
34
|
+
dimensionsAndMeasures: t,
|
|
35
|
+
searchValue: a,
|
|
36
|
+
theme: r
|
|
37
|
+
}),
|
|
38
|
+
avoidCollisions: !1
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
};
|
|
42
|
+
export {
|
|
43
|
+
M as D
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=DimensionAndMeasureSingleSelectField-CJ1yAcRd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DimensionAndMeasureSingleSelectField-CJ1yAcRd.js","sources":["../src/components/editors/utils/dimensionsAndMeasures.utils.ts","../src/components/editors/shared/DimensionAndMeasureSingleSelectField/DimensionAndMeasureSingleSelectField.tsx"],"sourcesContent":["import { DimensionOrMeasure } from '@embeddable.com/core';\nimport { Theme } from '../../../theme/theme.types';\nimport { SelectListOptionProps } from '@embeddable.com/remarkable-ui';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\n\nexport const getDimensionAndMeasureOptions = ({\n dimensionsAndMeasures,\n searchValue,\n theme,\n}: {\n dimensionsAndMeasures: DimensionOrMeasure[];\n searchValue: string;\n theme: Theme;\n}): SelectListOptionProps[] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return dimensionsAndMeasures\n .filter((dimensionOrMeasure) => {\n return themeFormatter\n .dimensionOrMeasureTitle(dimensionOrMeasure)\n .toLowerCase()\n .includes(searchValue.toLowerCase());\n })\n .map((dimensionOrMeasure) => {\n return {\n value: dimensionOrMeasure.name,\n label: themeFormatter.dimensionOrMeasureTitle(dimensionOrMeasure),\n };\n });\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { useEffect, useState } from 'react';\nimport { SingleSelectField } from '@embeddable.com/remarkable-ui';\nimport { getDimensionAndMeasureOptions } from '../../utils/dimensionsAndMeasures.utils';\nimport { Dimension, Measure } from '@embeddable.com/core';\n\ntype DimensionAndMeasureSingleSelectFieldProps<T> = {\n selectedValue?: T;\n options: T[];\n placeholder?: string;\n clearable?: boolean;\n onChange: (value: T | undefined) => void;\n};\n\nexport const DimensionAndMeasureSingleSelectField = <T extends Dimension | Measure>(\n props: DimensionAndMeasureSingleSelectFieldProps<T>,\n) => {\n const theme = useTheme() as Theme;\n\n const [searchValue, setSearchValue] = useState<string>('');\n\n const { selectedValue, options, clearable, placeholder, onChange } = props;\n\n const handleChange = (newValue: string) => {\n const newSelection = options.find((option) => option.name === newValue);\n onChange(newSelection);\n };\n\n // Auto-select first dimensionOrMeasure when is not clearable and there is no selection\n useEffect(() => {\n const autoSelectActive = !clearable && !selectedValue;\n\n if (!autoSelectActive) return;\n\n const firstDimension = options?.[0];\n\n if (firstDimension) {\n onChange(firstDimension);\n }\n }, [clearable, selectedValue, options, onChange]);\n\n return (\n <SingleSelectField\n searchable\n clearable={clearable}\n placeholder={placeholder}\n value={selectedValue?.name}\n onChange={handleChange}\n onSearch={setSearchValue}\n options={getDimensionAndMeasureOptions({\n dimensionsAndMeasures: options,\n searchValue,\n theme,\n })}\n avoidCollisions={false}\n />\n );\n};\n"],"names":["getDimensionAndMeasureOptions","dimensionsAndMeasures","searchValue","theme","themeFormatter","getThemeFormatter","dimensionOrMeasure","DimensionAndMeasureSingleSelectField","props","useTheme","setSearchValue","useState","selectedValue","options","clearable","placeholder","onChange","handleChange","newValue","newSelection","option","useEffect","firstDimension","jsx","SingleSelectField"],"mappings":";;;;AAKO,MAAMA,IAAgC,CAAC;AAAA,EAC5C,uBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC;AACF,MAI+B;AAC7B,QAAMC,IAAiBC,EAAkBF,CAAK;AAE9C,SAAOF,EACJ,OAAO,CAACK,MACAF,EACJ,wBAAwBE,CAAkB,EAC1C,cACA,SAASJ,EAAY,aAAa,CACtC,EACA,IAAI,CAACI,OACG;AAAA,IACL,OAAOA,EAAmB;AAAA,IAC1B,OAAOF,EAAe,wBAAwBE,CAAkB;AAAA,EAAA,EAEnE;AACL,GCdaC,IAAuC,CAClDC,MACG;AACH,QAAML,IAAQM,EAAA,GAER,CAACP,GAAaQ,CAAc,IAAIC,EAAiB,EAAE,GAEnD,EAAE,eAAAC,GAAe,SAAAC,GAAS,WAAAC,GAAW,aAAAC,GAAa,UAAAC,MAAaR,GAE/DS,IAAe,CAACC,MAAqB;AACzC,UAAMC,IAAeN,EAAQ,KAAK,CAACO,MAAWA,EAAO,SAASF,CAAQ;AACtE,IAAAF,EAASG,CAAY;AAAA,EACvB;AAGA,SAAAE,EAAU,MAAM;AAGd,QAAI,EAFqB,CAACP,KAAa,CAACF,GAEjB;AAEvB,UAAMU,IAAiBT,KAAA,gBAAAA,EAAU;AAEjC,IAAIS,KACFN,EAASM,CAAc;AAAA,EAE3B,GAAG,CAACR,GAAWF,GAAeC,GAASG,CAAQ,CAAC,GAG9CO,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,YAAU;AAAA,MACV,WAAAV;AAAA,MACA,aAAAC;AAAA,MACA,OAAOH,KAAA,gBAAAA,EAAe;AAAA,MACtB,UAAUK;AAAA,MACV,UAAUP;AAAA,MACV,SAASV,EAA8B;AAAA,QACrC,uBAAuBa;AAAA,QACvB,aAAAX;AAAA,QACA,OAAAC;AAAA,MAAA,CACD;AAAA,MACD,iBAAiB;AAAA,IAAA;AAAA,EAAA;AAGvB;"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { j as i, V as o } from "./Color.type.emb-De2K8PVb.js";
|
|
2
|
+
import { useTheme as f, definePreview as g, defineComponent as S } from "@embeddable.com/react";
|
|
3
|
+
import { E as v } from "./EditorCard-B9UFM_uA.js";
|
|
4
|
+
import { a as h, r as b, b as n } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { D } from "./DimensionAndMeasureSingleSelectField-CJ1yAcRd.js";
|
|
6
|
+
import { p as t } from "./preview.data.constants-BBIMPXYy.js";
|
|
7
|
+
const s = (e) => {
|
|
8
|
+
const l = f();
|
|
9
|
+
h(l);
|
|
10
|
+
const { selectedDimension: a, dimensionOptions: r, clearable: d, onChange: m } = e, { title: p, description: c, placeholder: u } = b(e);
|
|
11
|
+
return /* @__PURE__ */ i.jsx(v, { title: p, subtitle: c, children: /* @__PURE__ */ i.jsx(
|
|
12
|
+
D,
|
|
13
|
+
{
|
|
14
|
+
selectedValue: a,
|
|
15
|
+
options: r,
|
|
16
|
+
placeholder: u,
|
|
17
|
+
clearable: d,
|
|
18
|
+
onChange: m
|
|
19
|
+
}
|
|
20
|
+
) });
|
|
21
|
+
}, C = {
|
|
22
|
+
name: "DimensionSingleSelectFieldPro",
|
|
23
|
+
label: "Dimension Single Select Field",
|
|
24
|
+
category: "Dropdowns",
|
|
25
|
+
defaultWidth: 300,
|
|
26
|
+
defaultHeight: 120,
|
|
27
|
+
inputs: [
|
|
28
|
+
n.dataset,
|
|
29
|
+
n.title,
|
|
30
|
+
n.description,
|
|
31
|
+
{ ...n.placeholder, defaultValue: "Select value..." },
|
|
32
|
+
n.dimensionOptions,
|
|
33
|
+
{
|
|
34
|
+
...n.dimension,
|
|
35
|
+
name: "selectedDimension",
|
|
36
|
+
label: "Selected dimension",
|
|
37
|
+
category: "Pre-configured variables",
|
|
38
|
+
required: !1,
|
|
39
|
+
config: {
|
|
40
|
+
dataset: "dataset"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{ ...n.clearable, defaultValue: !1 }
|
|
44
|
+
],
|
|
45
|
+
events: [
|
|
46
|
+
{
|
|
47
|
+
name: "onChange",
|
|
48
|
+
label: "Selected dimension updated",
|
|
49
|
+
properties: [
|
|
50
|
+
{
|
|
51
|
+
name: "value",
|
|
52
|
+
label: "Selected dimension",
|
|
53
|
+
type: "dimension"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
variables: [
|
|
59
|
+
{
|
|
60
|
+
name: "dimension single-select value",
|
|
61
|
+
type: "dimension",
|
|
62
|
+
defaultValue: o.noFilter(),
|
|
63
|
+
inputs: ["selectedDimension"],
|
|
64
|
+
events: [{ name: "onChange", property: "value" }]
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
}, j = g(s, {
|
|
68
|
+
dimensionOptions: [t.dimension, t.dimensionGroup],
|
|
69
|
+
onChange: () => null
|
|
70
|
+
}), w = S(s, C, {
|
|
71
|
+
props: (e) => ({
|
|
72
|
+
...e,
|
|
73
|
+
dimensionOptions: e.dimensionOptions ?? []
|
|
74
|
+
}),
|
|
75
|
+
events: {
|
|
76
|
+
onChange: (e) => ({
|
|
77
|
+
value: e ?? o.noFilter()
|
|
78
|
+
})
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
export {
|
|
82
|
+
w as default,
|
|
83
|
+
C as meta,
|
|
84
|
+
j as preview
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=DimensionSingleSelectFieldPro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DimensionSingleSelectFieldPro.js","sources":["../src/components/editors/DimensionSingleSelectFieldPro/index.tsx","../src/components/editors/DimensionSingleSelectFieldPro/DimensionSingleSelectFieldPro.emb.ts"],"sourcesContent":["import { Dimension } from '@embeddable.com/core';\nimport { EditorCard } from '../shared/EditorCard/EditorCard';\nimport { resolveI18nProps } from '../../component.utils';\nimport { ChartCardHeaderProps } from '../../charts/shared/ChartCard/ChartCard';\nimport { Theme } from '../../../theme/theme.types';\nimport { useTheme } from '@embeddable.com/react';\nimport { i18nSetup } from '../../../theme/i18n/i18n';\nimport { DimensionAndMeasureSingleSelectField } from '../shared/DimensionAndMeasureSingleSelectField/DimensionAndMeasureSingleSelectField';\n\ntype DimensionSingleSelectFieldProProps = {\n selectedDimension?: Dimension;\n dimensionOptions: Dimension[];\n placeholder?: string;\n clearable?: boolean;\n onChange: (value: Dimension | undefined) => void;\n} & ChartCardHeaderProps;\n\nconst DimensionSingleSelectFieldPro = (props: DimensionSingleSelectFieldProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { selectedDimension, dimensionOptions, clearable, onChange } = props;\n const { title, description, placeholder } = resolveI18nProps(props);\n\n return (\n <EditorCard title={title} subtitle={description}>\n <DimensionAndMeasureSingleSelectField<Dimension>\n selectedValue={selectedDimension}\n options={dimensionOptions}\n placeholder={placeholder}\n clearable={clearable}\n onChange={onChange}\n />\n </EditorCard>\n );\n};\n\nexport default DimensionSingleSelectFieldPro;\n","import { Value } from '@embeddable.com/core';\nimport {\n EmbeddedComponentMeta,\n Inputs,\n defineComponent,\n definePreview,\n} from '@embeddable.com/react';\nimport DimensionSingleSelectFieldPro from './index';\nimport { inputs } from '../../component.inputs.constants';\nimport { previewData } from '../../preview.data.constants';\n\nexport const meta = {\n name: 'DimensionSingleSelectFieldPro',\n label: 'Dimension Single Select Field',\n category: 'Dropdowns',\n defaultWidth: 300,\n defaultHeight: 120,\n inputs: [\n inputs.dataset,\n inputs.title,\n inputs.description,\n { ...inputs.placeholder, defaultValue: 'Select value...' },\n inputs.dimensionOptions,\n {\n ...inputs.dimension,\n name: 'selectedDimension',\n label: 'Selected dimension',\n category: 'Pre-configured variables',\n required: false,\n config: {\n dataset: 'dataset',\n },\n },\n { ...inputs.clearable, defaultValue: false },\n ],\n events: [\n {\n name: 'onChange',\n label: 'Selected dimension updated',\n properties: [\n {\n name: 'value',\n label: 'Selected dimension',\n type: 'dimension',\n },\n ],\n },\n ],\n variables: [\n {\n name: 'dimension single-select value',\n type: 'dimension',\n defaultValue: Value.noFilter(),\n inputs: ['selectedDimension'],\n events: [{ name: 'onChange', property: 'value' }],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport const preview = definePreview(DimensionSingleSelectFieldPro, {\n dimensionOptions: [previewData.dimension, previewData.dimensionGroup],\n onChange: () => null,\n});\n\nexport default defineComponent(DimensionSingleSelectFieldPro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n dimensionOptions: inputs.dimensionOptions ?? [],\n };\n },\n events: {\n onChange: (value) => {\n return {\n value: value ?? Value.noFilter(),\n };\n },\n },\n});\n"],"names":["DimensionSingleSelectFieldPro","props","theme","useTheme","i18nSetup","selectedDimension","dimensionOptions","clearable","onChange","title","description","placeholder","resolveI18nProps","jsx","EditorCard","DimensionAndMeasureSingleSelectField","meta","inputs","Value","preview","definePreview","previewData","DimensionSingleSelectFieldPro_emb","defineComponent","value"],"mappings":";;;;;;AAiBA,MAAMA,IAAgC,CAACC,MAA8C;AACnF,QAAMC,IAAQC,EAAA;AACd,EAAAC,EAAUF,CAAK;AAEf,QAAM,EAAE,mBAAAG,GAAmB,kBAAAC,GAAkB,WAAAC,GAAW,UAAAC,MAAaP,GAC/D,EAAE,OAAAQ,GAAO,aAAAC,GAAa,aAAAC,EAAA,IAAgBC,EAAiBX,CAAK;AAElE,SACEY,gBAAAA,EAAAA,IAACC,GAAA,EAAW,OAAAL,GAAc,UAAUC,GAClC,UAAAG,gBAAAA,EAAAA;AAAAA,IAACE;AAAA,IAAA;AAAA,MACC,eAAeV;AAAA,MACf,SAASC;AAAA,MACT,aAAAK;AAAA,MACA,WAAAJ;AAAA,MACA,UAAAC;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ,GCxBaQ,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAAA,EACd,eAAe;AAAA,EACf,QAAQ;AAAA,IACNC,EAAO;AAAA,IACPA,EAAO;AAAA,IACPA,EAAO;AAAA,IACP,EAAE,GAAGA,EAAO,aAAa,cAAc,kBAAA;AAAA,IACvCA,EAAO;AAAA,IACP;AAAA,MACE,GAAGA,EAAO;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,QACN,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAEF,EAAE,GAAGA,EAAO,WAAW,cAAc,GAAA;AAAA,EAAM;AAAA,EAE7C,QAAQ;AAAA,IACN;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,QACV;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,QAAA;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EAEF,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,cAAcC,EAAM,SAAA;AAAA,MACpB,QAAQ,CAAC,mBAAmB;AAAA,MAC5B,QAAQ,CAAC,EAAE,MAAM,YAAY,UAAU,SAAS;AAAA,IAAA;AAAA,EAClD;AAEJ,GAEaC,IAAUC,EAAcpB,GAA+B;AAAA,EAClE,kBAAkB,CAACqB,EAAY,WAAWA,EAAY,cAAc;AAAA,EACpE,UAAU,MAAM;AAClB,CAAC,GAEDC,IAAeC,EAAgBvB,GAA+BgB,GAAM;AAAA,EAClE,OAAO,CAACC,OACC;AAAA,IACL,GAAGA;AAAAA,IACH,kBAAkBA,EAAO,oBAAoB,CAAA;AAAA,EAAC;AAAA,EAGlD,QAAQ;AAAA,IACN,UAAU,CAACO,OACF;AAAA,MACL,OAAOA,KAASN,EAAM,SAAA;AAAA,IAAS;AAAA,EAEnC;AAEJ,CAAC;"}
|
package/dist/DonutChartPro.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { V as n, l as a } from "./Color.type.emb-De2K8PVb.js";
|
|
2
2
|
import { definePreview as r, defineComponent as i } from "@embeddable.com/react";
|
|
3
|
-
import { D as o } from "./index-
|
|
4
|
-
import { b as e } from "./component.inputs.constants-
|
|
5
|
-
import { p as t } from "./preview.data.constants-
|
|
3
|
+
import { D as o } from "./index-n6RmR7mX.js";
|
|
4
|
+
import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { p as t } from "./preview.data.constants-BBIMPXYy.js";
|
|
6
6
|
const m = {
|
|
7
7
|
name: "DonutChartPro",
|
|
8
8
|
label: "Donut Chart",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { D as s } from "./index-
|
|
1
|
+
import { D as s } from "./index-BaTX0t-a.js";
|
|
2
2
|
import { V as t, l as r } from "./Color.type.emb-De2K8PVb.js";
|
|
3
3
|
import { definePreview as o, defineComponent as i } from "@embeddable.com/react";
|
|
4
|
-
import { b as e } from "./component.inputs.constants-
|
|
5
|
-
import { p as n } from "./preview.data.constants-
|
|
4
|
+
import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { p as n } from "./preview.data.constants-BBIMPXYy.js";
|
|
6
6
|
const l = {
|
|
7
7
|
name: "DonutLabelChartPro",
|
|
8
8
|
label: "Donut Label Chart",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { j as r, r as c, s as d, t as m, v as l } from "./Color.type.emb-De2K8PVb.js";
|
|
2
2
|
import { useTheme as p } from "@embeddable.com/react";
|
|
3
|
-
import { a as x, i as C, I as j } from "./component.inputs.constants-
|
|
3
|
+
import { a as x, i as C, I as j } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
4
4
|
const u = "_card_15bw3_1", f = {
|
|
5
5
|
card: u
|
|
6
6
|
}, b = ({
|
|
@@ -29,4 +29,4 @@ const u = "_card_15bw3_1", f = {
|
|
|
29
29
|
export {
|
|
30
30
|
b as E
|
|
31
31
|
};
|
|
32
|
-
//# sourceMappingURL=EditorCard-
|
|
32
|
+
//# sourceMappingURL=EditorCard-B9UFM_uA.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorCard-
|
|
1
|
+
{"version":3,"file":"EditorCard-B9UFM_uA.js","sources":["../src/components/editors/shared/EditorCard/EditorCard.tsx"],"sourcesContent":["import { useTheme } from '@embeddable.com/react';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport styles from './EditorCard.module.css';\nimport { FC } from 'react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { Card, CardContent, CardFeedback, CardHeader } from '@embeddable.com/remarkable-ui';\nimport { IconAlertCircle } from '@tabler/icons-react';\n\ntype EditorCardProps = {\n title?: string;\n subtitle?: string;\n children: React.ReactNode;\n errorMessage?: string;\n};\n\nexport const EditorCard: FC<EditorCardProps> = ({\n title,\n subtitle,\n children,\n errorMessage,\n ...props\n}) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const getDisplay = () => {\n if (errorMessage) {\n return (\n <CardFeedback\n variant=\"error\"\n icon={IconAlertCircle}\n title={i18n.t('editors.errorTitle')}\n message={errorMessage}\n />\n );\n }\n\n return children;\n };\n\n return (\n <Card className={styles.card} {...props}>\n <CardHeader title={title} subtitle={subtitle} />\n <CardContent>{getDisplay()}</CardContent>\n </Card>\n );\n};\n"],"names":["EditorCard","title","subtitle","children","errorMessage","props","theme","useTheme","i18nSetup","getDisplay","jsx","CardFeedback","IconAlertCircle","i18n","Card","styles","CardHeader","CardContent"],"mappings":";;;;;GAeaA,IAAkC,CAAC;AAAA,EAC9C,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAeC,EAAA;AACrB,EAAAC,EAAUF,CAAK;AAEf,QAAMG,IAAa,MACbL,IAEAM,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAMC;AAAA,MACN,OAAOC,EAAK,EAAE,oBAAoB;AAAA,MAClC,SAAST;AAAA,IAAA;AAAA,EAAA,IAKRD;AAGT,gCACGW,GAAA,EAAK,WAAWC,EAAO,MAAO,GAAGV,GAChC,UAAA;AAAA,IAAAK,gBAAAA,EAAAA,IAACM,GAAA,EAAW,OAAAf,GAAc,UAAAC,EAAA,CAAoB;AAAA,IAC9CQ,gBAAAA,EAAAA,IAACO,GAAA,EAAa,UAAAR,EAAA,EAAW,CAAE;AAAA,EAAA,GAC7B;AAEJ;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { j as E, S as F } from "./Color.type.emb-De2K8PVb.js";
|
|
2
2
|
import { useMemo as g, useEffect as C } from "react";
|
|
3
3
|
import { useTheme as G } from "@embeddable.com/react";
|
|
4
|
-
import { f as N, e as d, a as w } from "./component.inputs.constants-
|
|
4
|
+
import { f as N, e as d, a as w } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
5
|
const D = 1, v = 100, x = () => N.map((e) => ({
|
|
6
6
|
...e,
|
|
7
7
|
label: d(e.label)
|
|
@@ -101,4 +101,4 @@ const k = (e, t, r) => {
|
|
|
101
101
|
export {
|
|
102
102
|
K as G
|
|
103
103
|
};
|
|
104
|
-
//# sourceMappingURL=GranularitySelectField-
|
|
104
|
+
//# sourceMappingURL=GranularitySelectField-DuRk6qY8.js.map
|
package/dist/{GranularitySelectField-CYq2YuAO.js.map → GranularitySelectField-DuRk6qY8.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GranularitySelectField-CYq2YuAO.js","sources":["../src/components/editors/shared/GranularitySelectField/GranularitySelectField.utils.ts","../src/components/editors/shared/GranularitySelectField/GranularitySelectField.tsx"],"sourcesContent":["import { SelectListOptionProps } from '@embeddable.com/remarkable-ui';\nimport { Granularity, TimeRange } from '@embeddable.com/core';\nimport {\n defaultGranularitySelectFieldOptions,\n TGranularityValue,\n} from '../../../../theme/defaults/defaults.GranularityOptions.constants';\nimport { resolveI18nString } from '../../../component.utils';\n\nconst DEFAULT_MIN_BUCKETS = 1;\nconst DEFAULT_MAX_BUCKETS = 100;\n\nexport const getGranularitySelectFieldOptions = (): SelectListOptionProps[] => {\n return defaultGranularitySelectFieldOptions.map((opt) => ({\n ...opt,\n label: resolveI18nString(opt.label),\n }));\n};\n\n// Convert possibly-string timestamps to Date safely.\nconst toDate = (d: unknown): Date | null => {\n if (d instanceof Date) return Number.isNaN(d.getTime()) ? null : d;\n if (typeof d === 'string' || typeof d === 'number') {\n const parsed = new Date(d);\n return Number.isNaN(parsed.getTime()) ? null : parsed;\n }\n return null;\n};\n\n// Inclusive end -> Exclusive end helper (only used for sub-day diffs)\nconst toExclusiveEnd = (endInclusive: Date): Date => new Date(endInclusive.getTime() + 1);\n\nconst bucketCountByUnit = (start: Date, endExclusive: Date, unitMs: number): number => {\n return (endExclusive.getTime() - start.getTime()) / unitMs;\n};\n\n// Bucket counting (treat end as INCLUSIVE)\nfunction bucketCount(start: Date, endInclusive: Date, granularity: Granularity): number {\n if (start > endInclusive) return 0;\n\n switch (granularity) {\n case 'second':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 1000);\n\n case 'minute':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 60 * 1000);\n\n case 'hour':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 60 * 60 * 1000);\n\n case 'day':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 24 * 60 * 60 * 1000);\n\n case 'week':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 7 * 24 * 60 * 60 * 1000);\n\n case 'month':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 28 * 24 * 60 * 60 * 1000); // shortest month\n\n case 'quarter':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 90 * 24 * 60 * 60 * 1000); // shortest quarter\n\n case 'year':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 365 * 24 * 60 * 60 * 1000); // shortest year\n }\n}\n\nconst isGranularityValid = (\n start: Date,\n endInclusive: Date,\n granularity: TGranularityValue,\n): boolean => {\n const buckets = bucketCount(start, endInclusive, granularity);\n return buckets >= DEFAULT_MIN_BUCKETS && buckets <= DEFAULT_MAX_BUCKETS;\n};\n\nexport const getAvailableGranularityOptionsFromTimeRange = (\n timeRange: TimeRange,\n allOptions: SelectListOptionProps[],\n): SelectListOptionProps[] => {\n if (!timeRange) return allOptions;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const from = toDate((timeRange as any)?.from);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const to = toDate((timeRange as any)?.to);\n\n // If we can’t parse range, don’t hide anything (fail open)\n if (!from || !to) return allOptions;\n\n const validSet = new Set<TGranularityValue>();\n\n for (const opt of allOptions) {\n const g = opt.value as TGranularityValue;\n if (isGranularityValid(from, to, g)) {\n validSet.add(g);\n }\n }\n\n // preserve original UI ordering\n return allOptions.filter((opt) => validSet.has(opt.value as TGranularityValue));\n};\n\nexport const getSafeSelection = (\n availableOptions: SelectListOptionProps[],\n granularity?: Granularity,\n): Granularity | undefined => {\n if (!granularity) {\n return undefined;\n }\n\n if (availableOptions.some((opt) => opt.value === granularity)) {\n return granularity;\n }\n\n const optionToSelect = availableOptions.length > 2 ? 1 : 0;\n\n return availableOptions[optionToSelect]?.value as Granularity;\n};\n","import { useEffect, useMemo } from 'react';\nimport { useTheme } from '@embeddable.com/react';\nimport { SingleSelectField, SingleSelectFieldProps } from '@embeddable.com/remarkable-ui';\nimport { Granularity, TimeRange } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport {\n getAvailableGranularityOptionsFromTimeRange,\n getGranularitySelectFieldOptions,\n getSafeSelection,\n} from './GranularitySelectField.utils';\nimport { TGranularityValue } from '../../../../theme/defaults/defaults.GranularityOptions.constants';\nimport { ChartCardHeaderProps } from '../../../charts/shared/ChartCard/ChartCard';\n\nexport type GranularitySelectFieldProps = {\n onChange: (newGranularity: Granularity) => void;\n primaryTimeRange?: TimeRange;\n granularity?: TGranularityValue;\n granularities?: TGranularityValue[];\n} & ChartCardHeaderProps &\n Pick<SingleSelectFieldProps, 'variant' | 'side' | 'align' | 'clearable' | 'placeholder'>;\n\nexport const GranularitySelectField = (props: GranularitySelectFieldProps) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const {\n granularity,\n granularities,\n clearable,\n placeholder,\n primaryTimeRange,\n variant,\n side,\n align,\n onChange,\n } = props;\n\n const granularitySelectFieldOptions = getGranularitySelectFieldOptions();\n\n const availableOptions = useMemo(() => {\n return getAvailableGranularityOptionsFromTimeRange(\n primaryTimeRange,\n granularitySelectFieldOptions.filter((opt) =>\n granularities?.includes(opt.value as TGranularityValue),\n ),\n );\n }, [primaryTimeRange, granularities]);\n\n useEffect(() => {\n if (granularity) {\n // Selected granularity is not available\n // Select 1st available option when number of options is =< 2\n // Select 2nd option to avoid when number of options > 2\n if (!availableOptions.some((opt) => opt.value === granularity)) {\n const newGranularity = getSafeSelection(availableOptions, granularity);\n if (newGranularity) {\n onChange(newGranularity as Granularity);\n }\n }\n }\n }, [availableOptions, granularity, onChange]);\n\n const safeValue = getSafeSelection(availableOptions, granularity);\n\n return (\n <SingleSelectField\n variant={variant}\n clearable={clearable}\n placeholder={placeholder}\n value={safeValue}\n options={availableOptions}\n onChange={(newValue) => onChange(newValue as Granularity)}\n avoidCollisions={false}\n side={side}\n align={align}\n />\n );\n};\n"],"names":["DEFAULT_MIN_BUCKETS","DEFAULT_MAX_BUCKETS","getGranularitySelectFieldOptions","defaultGranularitySelectFieldOptions","opt","resolveI18nString","toDate","d","parsed","toExclusiveEnd","endInclusive","bucketCountByUnit","start","endExclusive","unitMs","bucketCount","granularity","isGranularityValid","buckets","getAvailableGranularityOptionsFromTimeRange","timeRange","allOptions","from","to","validSet","g","getSafeSelection","availableOptions","optionToSelect","_a","GranularitySelectField","props","theme","useTheme","i18nSetup","granularities","clearable","placeholder","primaryTimeRange","variant","side","align","onChange","granularitySelectFieldOptions","useMemo","useEffect","newGranularity","safeValue","jsx","SingleSelectField","newValue"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GranularitySelectField-DuRk6qY8.js","sources":["../src/components/editors/shared/GranularitySelectField/GranularitySelectField.utils.ts","../src/components/editors/shared/GranularitySelectField/GranularitySelectField.tsx"],"sourcesContent":["import { SelectListOptionProps } from '@embeddable.com/remarkable-ui';\nimport { Granularity, TimeRange } from '@embeddable.com/core';\nimport {\n defaultGranularitySelectFieldOptions,\n TGranularityValue,\n} from '../../../../theme/defaults/defaults.GranularityOptions.constants';\nimport { resolveI18nString } from '../../../component.utils';\n\nconst DEFAULT_MIN_BUCKETS = 1;\nconst DEFAULT_MAX_BUCKETS = 100;\n\nexport const getGranularitySelectFieldOptions = (): SelectListOptionProps[] => {\n return defaultGranularitySelectFieldOptions.map((opt) => ({\n ...opt,\n label: resolveI18nString(opt.label),\n }));\n};\n\n// Convert possibly-string timestamps to Date safely.\nconst toDate = (d: unknown): Date | null => {\n if (d instanceof Date) return Number.isNaN(d.getTime()) ? null : d;\n if (typeof d === 'string' || typeof d === 'number') {\n const parsed = new Date(d);\n return Number.isNaN(parsed.getTime()) ? null : parsed;\n }\n return null;\n};\n\n// Inclusive end -> Exclusive end helper (only used for sub-day diffs)\nconst toExclusiveEnd = (endInclusive: Date): Date => new Date(endInclusive.getTime() + 1);\n\nconst bucketCountByUnit = (start: Date, endExclusive: Date, unitMs: number): number => {\n return (endExclusive.getTime() - start.getTime()) / unitMs;\n};\n\n// Bucket counting (treat end as INCLUSIVE)\nfunction bucketCount(start: Date, endInclusive: Date, granularity: Granularity): number {\n if (start > endInclusive) return 0;\n\n switch (granularity) {\n case 'second':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 1000);\n\n case 'minute':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 60 * 1000);\n\n case 'hour':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 60 * 60 * 1000);\n\n case 'day':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 24 * 60 * 60 * 1000);\n\n case 'week':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 7 * 24 * 60 * 60 * 1000);\n\n case 'month':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 28 * 24 * 60 * 60 * 1000); // shortest month\n\n case 'quarter':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 90 * 24 * 60 * 60 * 1000); // shortest quarter\n\n case 'year':\n return bucketCountByUnit(start, toExclusiveEnd(endInclusive), 365 * 24 * 60 * 60 * 1000); // shortest year\n }\n}\n\nconst isGranularityValid = (\n start: Date,\n endInclusive: Date,\n granularity: TGranularityValue,\n): boolean => {\n const buckets = bucketCount(start, endInclusive, granularity);\n return buckets >= DEFAULT_MIN_BUCKETS && buckets <= DEFAULT_MAX_BUCKETS;\n};\n\nexport const getAvailableGranularityOptionsFromTimeRange = (\n timeRange: TimeRange,\n allOptions: SelectListOptionProps[],\n): SelectListOptionProps[] => {\n if (!timeRange) return allOptions;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const from = toDate((timeRange as any)?.from);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const to = toDate((timeRange as any)?.to);\n\n // If we can’t parse range, don’t hide anything (fail open)\n if (!from || !to) return allOptions;\n\n const validSet = new Set<TGranularityValue>();\n\n for (const opt of allOptions) {\n const g = opt.value as TGranularityValue;\n if (isGranularityValid(from, to, g)) {\n validSet.add(g);\n }\n }\n\n // preserve original UI ordering\n return allOptions.filter((opt) => validSet.has(opt.value as TGranularityValue));\n};\n\nexport const getSafeSelection = (\n availableOptions: SelectListOptionProps[],\n granularity?: Granularity,\n): Granularity | undefined => {\n if (!granularity) {\n return undefined;\n }\n\n if (availableOptions.some((opt) => opt.value === granularity)) {\n return granularity;\n }\n\n const optionToSelect = availableOptions.length > 2 ? 1 : 0;\n\n return availableOptions[optionToSelect]?.value as Granularity;\n};\n","import { useEffect, useMemo } from 'react';\nimport { useTheme } from '@embeddable.com/react';\nimport { SingleSelectField, SingleSelectFieldProps } from '@embeddable.com/remarkable-ui';\nimport { Granularity, TimeRange } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport {\n getAvailableGranularityOptionsFromTimeRange,\n getGranularitySelectFieldOptions,\n getSafeSelection,\n} from './GranularitySelectField.utils';\nimport { TGranularityValue } from '../../../../theme/defaults/defaults.GranularityOptions.constants';\nimport { ChartCardHeaderProps } from '../../../charts/shared/ChartCard/ChartCard';\n\nexport type GranularitySelectFieldProps = {\n onChange: (newGranularity: Granularity) => void;\n primaryTimeRange?: TimeRange;\n granularity?: TGranularityValue;\n granularities?: TGranularityValue[];\n} & ChartCardHeaderProps &\n Pick<SingleSelectFieldProps, 'variant' | 'side' | 'align' | 'clearable' | 'placeholder'>;\n\nexport const GranularitySelectField = (props: GranularitySelectFieldProps) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const {\n granularity,\n granularities,\n clearable,\n placeholder,\n primaryTimeRange,\n variant,\n side,\n align,\n onChange,\n } = props;\n\n const granularitySelectFieldOptions = getGranularitySelectFieldOptions();\n\n const availableOptions = useMemo(() => {\n return getAvailableGranularityOptionsFromTimeRange(\n primaryTimeRange,\n granularitySelectFieldOptions.filter((opt) =>\n granularities?.includes(opt.value as TGranularityValue),\n ),\n );\n }, [primaryTimeRange, granularities]);\n\n useEffect(() => {\n if (granularity) {\n // Selected granularity is not available\n // Select 1st available option when number of options is =< 2\n // Select 2nd option to avoid when number of options > 2\n if (!availableOptions.some((opt) => opt.value === granularity)) {\n const newGranularity = getSafeSelection(availableOptions, granularity);\n if (newGranularity) {\n onChange(newGranularity as Granularity);\n }\n }\n }\n }, [availableOptions, granularity, onChange]);\n\n const safeValue = getSafeSelection(availableOptions, granularity);\n\n return (\n <SingleSelectField\n variant={variant}\n clearable={clearable}\n placeholder={placeholder}\n value={safeValue}\n options={availableOptions}\n onChange={(newValue) => onChange(newValue as Granularity)}\n avoidCollisions={false}\n side={side}\n align={align}\n />\n );\n};\n"],"names":["DEFAULT_MIN_BUCKETS","DEFAULT_MAX_BUCKETS","getGranularitySelectFieldOptions","defaultGranularitySelectFieldOptions","opt","resolveI18nString","toDate","d","parsed","toExclusiveEnd","endInclusive","bucketCountByUnit","start","endExclusive","unitMs","bucketCount","granularity","isGranularityValid","buckets","getAvailableGranularityOptionsFromTimeRange","timeRange","allOptions","from","to","validSet","g","getSafeSelection","availableOptions","optionToSelect","_a","GranularitySelectField","props","theme","useTheme","i18nSetup","granularities","clearable","placeholder","primaryTimeRange","variant","side","align","onChange","granularitySelectFieldOptions","useMemo","useEffect","newGranularity","safeValue","jsx","SingleSelectField","newValue"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useTheme as p, definePreview as y, defineComponent as b } from "@embeddable.com/react";
|
|
2
2
|
import { j as t, V as f } from "./Color.type.emb-De2K8PVb.js";
|
|
3
|
-
import { a as v, r as h, G as e, b as a } from "./component.inputs.constants-
|
|
4
|
-
import { E as S } from "./EditorCard-
|
|
5
|
-
import { G as P } from "./GranularitySelectField-
|
|
3
|
+
import { a as v, r as h, G as e, b as a } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
4
|
+
import { E as S } from "./EditorCard-B9UFM_uA.js";
|
|
5
|
+
import { G as P } from "./GranularitySelectField-DuRk6qY8.js";
|
|
6
6
|
const l = (r) => {
|
|
7
7
|
const n = p();
|
|
8
8
|
v(n);
|
package/dist/HeatMapPro.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { g as a, l as i } from "./Color.type.emb-De2K8PVb.js";
|
|
2
2
|
import { definePreview as r, defineComponent as l } from "@embeddable.com/react";
|
|
3
|
-
import { H as n } from "./index-
|
|
4
|
-
import { b as e } from "./component.inputs.constants-
|
|
5
|
-
import { p as t } from "./preview.data.constants-
|
|
3
|
+
import { H as n } from "./index-DeWASjPW.js";
|
|
4
|
+
import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { p as t } from "./preview.data.constants-BBIMPXYy.js";
|
|
6
6
|
const m = {
|
|
7
7
|
name: "HeatMapPro",
|
|
8
8
|
label: "Heat Map",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { definePreview as s, defineComponent as l } from "@embeddable.com/react";
|
|
2
|
-
import { K as t } from "./index-
|
|
2
|
+
import { K as t } from "./index-Crpz4FA4.js";
|
|
3
3
|
import { l as i } from "./Color.type.emb-De2K8PVb.js";
|
|
4
|
-
import { b as a } from "./component.inputs.constants-
|
|
5
|
-
import { p as o } from "./preview.data.constants-
|
|
4
|
+
import { b as a } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { p as o } from "./preview.data.constants-BBIMPXYy.js";
|
|
6
6
|
const p = {
|
|
7
7
|
name: "KpiChartNumberComparisonPro",
|
|
8
8
|
label: "Kpi Chart - Number Comparison",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { definePreview as o, defineComponent as s } from "@embeddable.com/react";
|
|
2
|
-
import { K as a } from "./index-
|
|
2
|
+
import { K as a } from "./index-CEDNCQK8.js";
|
|
3
3
|
import { l as m } from "./Color.type.emb-De2K8PVb.js";
|
|
4
|
-
import { b as e } from "./component.inputs.constants-
|
|
5
|
-
import { p as t } from "./preview.data.constants-
|
|
4
|
+
import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { p as t } from "./preview.data.constants-BBIMPXYy.js";
|
|
6
6
|
const i = {
|
|
7
7
|
name: "KpiChartNumberPro",
|
|
8
8
|
label: "Kpi Chart - Number",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { definePreview as d, defineComponent as c } from "@embeddable.com/react";
|
|
2
|
-
import { L as u } from "./index-
|
|
2
|
+
import { L as u } from "./index-BEckqi71.js";
|
|
3
3
|
import { V as g, l as p } from "./Color.type.emb-De2K8PVb.js";
|
|
4
|
-
import { b as e, s as r } from "./component.inputs.constants-
|
|
5
|
-
import { p as s } from "./preview.data.constants-
|
|
4
|
+
import { b as e, s as r } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { p as s } from "./preview.data.constants-BBIMPXYy.js";
|
|
6
6
|
import { g as y } from "./granularity.utils-CA504xa0.js";
|
|
7
7
|
const D = {
|
|
8
8
|
name: "LineChartComparisonDefaultPro",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { definePreview as m, defineComponent as u } from "@embeddable.com/react";
|
|
2
|
-
import { L as r } from "./index-
|
|
2
|
+
import { L as r } from "./index-D37a5H7U.js";
|
|
3
3
|
import { V as d, l as x } from "./Color.type.emb-De2K8PVb.js";
|
|
4
|
-
import { b as e, s as i } from "./component.inputs.constants-
|
|
5
|
-
import { p as n } from "./preview.data.constants-
|
|
4
|
+
import { b as e, s as i } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { p as n } from "./preview.data.constants-BBIMPXYy.js";
|
|
6
6
|
import { g as p } from "./granularity.utils-CA504xa0.js";
|
|
7
7
|
const c = {
|
|
8
8
|
name: "LineChartDefaultPro",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { definePreview as m, defineComponent as u } from "@embeddable.com/react";
|
|
2
|
-
import { L as s } from "./index-
|
|
2
|
+
import { L as s } from "./index-DADSJYlJ.js";
|
|
3
3
|
import { V as o, l as p } from "./Color.type.emb-De2K8PVb.js";
|
|
4
|
-
import { b as e } from "./component.inputs.constants-
|
|
5
|
-
import { p as n } from "./preview.data.constants-
|
|
4
|
+
import { b as e } from "./component.inputs.constants-DzpzJ9Na.js";
|
|
5
|
+
import { p as n } from "./preview.data.constants-BBIMPXYy.js";
|
|
6
6
|
import { g as d } from "./granularity.utils-CA504xa0.js";
|
|
7
7
|
const g = {
|
|
8
8
|
name: "LineChartGroupedPro",
|