@economic/taco 2.45.0-alpha.30 → 2.45.0-alpha.32

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.
Files changed (87) hide show
  1. package/dist/charts/components/ResponsiveContainer.d.ts +1 -1
  2. package/dist/components/Input/util.d.ts +5 -9
  3. package/dist/components/Table3/Table3.d.ts +1 -1
  4. package/dist/components/Table3/features/useEditingState.d.ts +6 -11
  5. package/dist/components/Table3/features/useTableEditing.d.ts +6 -10
  6. package/dist/components/Tour/Tour.d.ts +2 -2
  7. package/dist/esm/packages/taco/src/charts/components/Bar/BarChart.js +3 -3
  8. package/dist/esm/packages/taco/src/charts/components/Bar/BarChart.js.map +1 -1
  9. package/dist/esm/packages/taco/src/charts/components/Donut/DonutChart.js.map +1 -1
  10. package/dist/esm/packages/taco/src/charts/components/ResponsiveContainer.js.map +1 -1
  11. package/dist/esm/packages/taco/src/charts/components/Tooltip.js.map +1 -1
  12. package/dist/esm/packages/taco/src/charts/utils/color.js.map +1 -1
  13. package/dist/esm/packages/taco/src/components/Accordion/Accordion.js.map +1 -1
  14. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js +0 -1
  15. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js.map +1 -1
  16. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js +3 -3
  17. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js.map +1 -1
  18. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +2 -2
  19. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js.map +1 -1
  20. package/dist/esm/packages/taco/src/components/Header/components/Agreement/Avatar.js.map +1 -1
  21. package/dist/esm/packages/taco/src/components/Header/components/AgreementSelector.js.map +1 -1
  22. package/dist/esm/packages/taco/src/components/Input/util.js.map +1 -1
  23. package/dist/esm/packages/taco/src/components/Menu/components/Item.js.map +1 -1
  24. package/dist/esm/packages/taco/src/components/OverflowGroup/OverflowGroup.js.map +1 -1
  25. package/dist/esm/packages/taco/src/components/RadioGroup/RadioGroup.js.map +1 -1
  26. package/dist/esm/packages/taco/src/components/ScrollArea/ScrollArea.js.map +1 -1
  27. package/dist/esm/packages/taco/src/components/Select/useSelect.js.map +1 -1
  28. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  29. package/dist/esm/packages/taco/src/components/Select2/components/Create.js.map +1 -1
  30. package/dist/esm/packages/taco/src/components/Select2/components/Edit.js.map +1 -1
  31. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js.map +1 -1
  32. package/dist/esm/packages/taco/src/components/Table/components/WindowedTable.js.map +1 -1
  33. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowSelect.js.map +1 -1
  34. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  35. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.js.map +1 -1
  36. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js +4 -2
  37. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  38. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js +1 -2
  39. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js.map +1 -1
  40. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +1 -1
  41. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
  42. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js.map +1 -1
  43. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js +1 -1
  44. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js.map +1 -1
  45. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
  46. package/dist/esm/packages/taco/src/components/Table3/util/editing.js +2 -3
  47. package/dist/esm/packages/taco/src/components/Table3/util/editing.js.map +1 -1
  48. package/dist/esm/packages/taco/src/components/Tour/Tour.js +2 -2
  49. package/dist/esm/packages/taco/src/components/Tour/Tour.js.map +1 -1
  50. package/dist/esm/packages/taco/src/hooks/useGlobalKeyDown.js.map +1 -1
  51. package/dist/esm/packages/taco/src/hooks/useIntersectionObserver.js.map +1 -1
  52. package/dist/esm/packages/taco/src/primitives/Sortable/components/Container.js +1 -1
  53. package/dist/esm/packages/taco/src/primitives/Sortable/components/Container.js.map +1 -1
  54. package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js.map +1 -1
  55. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Expansion.js.map +1 -1
  56. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/Header.js.map +1 -1
  57. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Goto.js.map +1 -1
  58. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js +1 -3
  59. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js.map +1 -1
  60. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Resizer.js.map +1 -1
  61. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/SortIndicator.js.map +1 -1
  62. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/util.js.map +1 -1
  63. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js +6 -14
  64. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js.map +1 -1
  65. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js.map +1 -1
  66. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js.map +1 -1
  67. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.js +1 -3
  68. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.js.map +1 -1
  69. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js +12 -45
  70. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
  71. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  72. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js.map +1 -1
  73. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSettingsListener.js.map +1 -1
  74. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js.map +1 -1
  75. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js.map +1 -1
  76. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/settings.js.map +1 -1
  77. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/sorting.js.map +1 -1
  78. package/dist/primitives/Sortable/components/Container.d.ts +1 -1
  79. package/dist/primitives/Table/Core/components/Header/components/SortIndicator.d.ts +2 -2
  80. package/dist/primitives/Table/Core/types.d.ts +1 -1
  81. package/dist/primitives/Table/useTableManager/util/settings.d.ts +1 -1
  82. package/dist/taco.cjs.development.js +36 -82
  83. package/dist/taco.cjs.development.js.map +1 -1
  84. package/dist/taco.cjs.production.min.js +1 -1
  85. package/dist/taco.cjs.production.min.js.map +1 -1
  86. package/package.json +3 -4
  87. package/tailwind.config.js +0 -1
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import * as Recharts from 'recharts';
3
- declare type ResponsiveContainerProps = Recharts.ResponsiveContainerProps;
3
+ declare type ResponsiveContainerProps = Recharts.ResponsiveContainerProps & React.RefAttributes<HTMLDivElement>;
4
4
  export declare const ResponsiveContainer: (props: ResponsiveContainerProps) => React.JSX.Element;
5
5
  export {};
@@ -1,12 +1,8 @@
1
- declare type InputClassesProps = {
2
- disabled: boolean;
3
- readOnly: boolean;
4
- invalid: boolean;
5
- highlighted: boolean;
6
- ['aria-disabled']: any;
7
- ['aria-readonly']: any;
8
- ['aria-invalid']: any;
1
+ /// <reference types="react" />
2
+ declare type InputClassesProps = Pick<React.InputHTMLAttributes<HTMLInputElement>, 'aria-disabled' | 'aria-readonly' | 'aria-invalid' | 'readOnly' | 'disabled'> & {
3
+ invalid?: boolean;
4
+ highlighted?: boolean;
9
5
  };
10
- export declare const getInputClasses: (props: Partial<InputClassesProps>) => string;
6
+ export declare const getInputClasses: (props: InputClassesProps) => string;
11
7
  export declare const getButtonStateClasses: (invalid: boolean | undefined, disabled?: boolean) => string;
12
8
  export {};
@@ -8,7 +8,7 @@ declare function Group(_: Table3GroupProps): null;
8
8
  declare namespace Group {
9
9
  var displayName: string;
10
10
  }
11
- export declare const Table3: (<TType = unknown>(props: (import("./types").Table3WithoutEditingWithClientProps<TType> & React.RefAttributes<Table3Ref>) | (import("./types").Table3WithoutEditingWithServerProps<TType> & React.RefAttributes<Table3Ref>) | (import("./types").Table3WithEditingWithClientProps<TType> & React.RefAttributes<Table3Ref>) | (import("./types").Table3WithEditingWithServerProps<TType> & React.RefAttributes<Table3Ref>)) => React.JSX.Element) & {
11
+ export declare const Table3: (<TType = unknown>(props: (import("./types").Table3WithoutEditingWithClientProps<TType> & React.RefAttributes<Table3Ref>) | (import("./types").Table3WithoutEditingWithServerProps<TType> & React.RefAttributes<Table3Ref>) | (import("./types").Table3WithEditingWithClientProps<TType> & React.RefAttributes<Table3Ref>) | (import("./types").Table3WithEditingWithServerProps<TType> & React.RefAttributes<Table3Ref>)) => JSX.Element) & {
12
12
  Column: typeof Column;
13
13
  Group: typeof Group;
14
14
  };
@@ -1,18 +1,13 @@
1
1
  import { Table as ReactTable, Cell as ReactTableCell } from '@tanstack/react-table';
2
2
  import { Table3EditingChangeHandler, Table3EditingDiscardHandler, Table3EditingSaveHandler, Table3EditingValidatorFn } from '../types';
3
- declare type EditingError = {
4
- row: string;
5
- cells: Record<string, string>;
6
- shouldShowErrorAlert: boolean;
7
- };
8
3
  declare type EditingSaveState = 'saving' | 'saved' | 'errored';
9
4
  export declare function usePendingChangesState<TType = unknown>(handleSave: Table3EditingSaveHandler<TType> | undefined, handleChange: Table3EditingChangeHandler<TType> | undefined, handleDiscard: Table3EditingDiscardHandler | undefined, rowIdentityAccessor: keyof TType, validator: Table3EditingValidatorFn<TType> | undefined): {
10
- getRowValue: (rowId: string) => Partial<unknown>;
11
- getRowMoveReason: (rowId: string) => "search" | "sorting" | "filter";
5
+ getRowValue: (rowId: string) => any;
6
+ getRowMoveReason: (rowId: string) => unknown;
12
7
  hasRowErrors: (rowId: string) => boolean;
13
8
  hasRowErrorsShownInAlert: (rowId: string) => boolean;
14
9
  hasTemporaryRowErrors: <T extends TType>() => boolean;
15
- getRowStatus: (rowId: string) => EditingSaveState;
10
+ getRowStatus: (rowId: string) => any;
16
11
  setRowStatus: (rowId: string, status: EditingSaveState | undefined) => void;
17
12
  setCellValue: <T_1 extends TType>(cell: ReactTableCell<T_1, unknown>, rowIndex: number, value: unknown) => void;
18
13
  getCellValue: <T_2 extends TType>(cell: ReactTableCell<T_2, unknown>) => unknown | undefined;
@@ -20,15 +15,15 @@ export declare function usePendingChangesState<TType = unknown>(handleSave: Tabl
20
15
  onCellChanged: <T_4 extends TType>(cell: ReactTableCell<T_4, unknown>, rowIndex: number, nextValue: any, shouldRunUpdaters?: boolean) => Promise<void>;
21
16
  getErrorsShownInAlert: <T_5 extends TType>() => {
22
17
  rowId: string;
23
- index: number;
18
+ index: any;
24
19
  changes: Partial<T_5>;
25
- errors: EditingError;
20
+ errors: any;
26
21
  }[];
27
22
  hasChanges: (rowId?: string | undefined) => boolean;
28
23
  saveChanges: <T_6 extends TType>(table: ReactTable<T_6>, rowId?: string | undefined) => Promise<boolean>;
29
24
  discardChanges: <T_7 extends TType>(rowId: string, table: ReactTable<T_7>) => Promise<void>;
30
25
  hasSaved: () => boolean;
31
26
  insertTemporaryRow: <T_8 extends TType>(data: Partial<T_8>, rowIndex: number) => string;
32
- temporaryRows: unknown[];
27
+ temporaryRows: any;
33
28
  };
34
29
  export {};
@@ -2,12 +2,12 @@ import React from 'react';
2
2
  import { Table as ReactTable } from '@tanstack/react-table';
3
3
  import { Table3EditingChangeHandler, Table3EditingCreateHandler, Table3EditingDiscardHandler, Table3EditingSaveHandler, Table3EditingValidatorFn } from '../types';
4
4
  export declare function useTableEditing<TType = unknown>(isEnabled: boolean | undefined, handleSave: Table3EditingSaveHandler<TType> | undefined, handleChange: Table3EditingChangeHandler<TType> | undefined, handleCreate: Table3EditingCreateHandler<TType> | undefined, handleDiscard: Table3EditingDiscardHandler | undefined, rowIdentityAccessor: keyof TType | undefined, validator: Table3EditingValidatorFn<TType> | undefined): {
5
- getRowValue: (rowId: string) => Partial<unknown>;
6
- getRowMoveReason: (rowId: string) => "search" | "sorting" | "filter";
5
+ getRowValue: (rowId: string) => any;
6
+ getRowMoveReason: (rowId: string) => unknown;
7
7
  hasRowErrors: (rowId: string) => boolean;
8
8
  hasRowErrorsShownInAlert: (rowId: string) => boolean;
9
9
  hasTemporaryRowErrors: <T extends TType>() => boolean;
10
- getRowStatus: (rowId: string) => "saving" | "saved" | "errored";
10
+ getRowStatus: (rowId: string) => any;
11
11
  setRowStatus: (rowId: string, status: "saving" | "saved" | "errored" | undefined) => void;
12
12
  setCellValue: <T_1 extends TType>(cell: import("@tanstack/react-table").Cell<T_1, unknown>, rowIndex: number, value: unknown) => void;
13
13
  getCellValue: <T_2 extends TType>(cell: import("@tanstack/react-table").Cell<T_2, unknown>) => unknown;
@@ -15,20 +15,16 @@ export declare function useTableEditing<TType = unknown>(isEnabled: boolean | un
15
15
  onCellChanged: <T_4 extends TType>(cell: import("@tanstack/react-table").Cell<T_4, unknown>, rowIndex: number, nextValue: any, shouldRunUpdaters?: boolean) => Promise<void>;
16
16
  getErrorsShownInAlert: <T_5 extends TType>() => {
17
17
  rowId: string;
18
- index: number;
18
+ index: any;
19
19
  changes: Partial<T_5>;
20
- errors: {
21
- row: string;
22
- cells: Record<string, string>;
23
- shouldShowErrorAlert: boolean;
24
- };
20
+ errors: any;
25
21
  }[];
26
22
  hasChanges: (rowId?: string | undefined) => boolean;
27
23
  saveChanges: <T_6 extends TType>(table: ReactTable<T_6>, rowId?: string | undefined) => Promise<boolean>;
28
24
  discardChanges: <T_7 extends TType>(rowId: string, table: ReactTable<T_7>) => Promise<void>;
29
25
  hasSaved: () => boolean;
30
26
  insertTemporaryRow: <T_8 extends TType>(data: Partial<T_8>, rowIndex: number) => string;
31
- temporaryRows: unknown[];
27
+ temporaryRows: any;
32
28
  isEnabled: boolean;
33
29
  isEditing: boolean;
34
30
  isDetailedMode: boolean;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import * as Joyride from 'react-joyride';
2
+ import { Placement } from 'react-joyride';
3
3
  export declare type TourTexts = {
4
4
  /** Text for back action button */
5
5
  back: string;
@@ -31,7 +31,7 @@ export declare type TourStepProps = {
31
31
  /** Content can be any valid react node, for e.g. a `div` */
32
32
  children: React.ReactNode;
33
33
  /** Define the position of the tour's popup relative to the element is presenting */
34
- position?: Joyride.Placement;
34
+ position?: Placement;
35
35
  /** The css selector of the html element you want to include in a tour */
36
36
  selector: string;
37
37
  /**
@@ -1,4 +1,4 @@
1
- import React__default from 'react';
1
+ import React__default, { useState } from 'react';
2
2
  import { BarChart as BarChart$1, CartesianGrid, XAxis, YAxis, Legend, Tooltip, Bar as Bar$1, Cell } from 'recharts';
3
3
  import { getThemeColor } from '../../utils/color.js';
4
4
  import { getCartesianGridProps, getXAxisProps, getYAxisProps, getLegendProps, getTooltipProps } from '../../utils/common.js';
@@ -28,8 +28,8 @@ const BarChart = function BarChart(externalProps) {
28
28
  ...props
29
29
  } = externalProps;
30
30
  const [activeIndex, setActiveIndex] = React__default.useState(undefined);
31
- const [hoveredBar, setHoveredBar] = React__default.useState(null);
32
- const [activeBars, setActiveBars] = React__default.useState(() => {
31
+ const [hoveredBar, setHoveredBar] = useState(null);
32
+ const [activeBars, setActiveBars] = useState(() => {
33
33
  const keys = {};
34
34
  React__default.Children.forEach(children, child => {
35
35
  keys[child.props.accessor] = true;
@@ -1 +1 @@
1
- {"version":3,"file":"BarChart.js","sources":["../../../../../../../../src/charts/components/Bar/BarChart.tsx"],"sourcesContent":["import React from 'react';\nimport * as Recharts from 'recharts';\n\nimport { Color, getThemeColor } from '../../utils/color';\nimport {\n CommonChartProps,\n getCartesianGridProps,\n getXAxisProps,\n getYAxisProps,\n getLegendProps,\n getTooltipProps,\n} from '../../utils/common';\nimport { ResponsiveContainer } from '../ResponsiveContainer';\nimport { ActiveChartItems, PayloadType } from '../types';\n\ntype StacksType<TType> = Record<string, Array<keyof TType & string>>;\n\ntype BarChartBarProps<TType> = {\n accessor: keyof TType & string;\n color?: Color;\n label?: string;\n stackId?: string;\n};\n\nconst Bar = (_: BarChartBarProps<any>) => null;\n\ntype BarChartProps<TType> = CommonChartProps<TType> & {\n children: React.ReactElement<BarChartBarProps<TType>> | React.ReactElement<BarChartBarProps<TType>>[];\n data: TType[];\n formatter?: (value: any) => string;\n layout?: 'horizontal' | 'vertical';\n};\n\nconst getXAxisVerticalProps = <TType,>(props: CommonChartProps<TType>) => ({\n ...getXAxisProps<TType>(props),\n ...{ type: 'number' as const, dataKey: undefined },\n});\n\nconst getYAxisVerticalProps = <TType,>(props: CommonChartProps<TType>) => ({\n ...getYAxisProps<TType>(props),\n ...{ dataKey: props.accessor, type: 'category' as const },\n});\n\nexport const BarChart = function BarChart<TType = unknown>(externalProps: BarChartProps<TType>) {\n const { children, data, formatter, layout = 'horizontal', ...props } = externalProps;\n const [activeIndex, setActiveIndex] = React.useState<number | undefined>(undefined);\n const [hoveredBar, setHoveredBar] = React.useState<(keyof TType & string) | null>(null);\n const [activeBars, setActiveBars] = React.useState<ActiveChartItems<TType>>(() => {\n const keys = {} as ActiveChartItems<TType>;\n\n React.Children.forEach(children, child => {\n keys[child.props.accessor] = true;\n });\n\n return keys;\n });\n\n // Recharts doesn't provide a way for us to know if a stacked bar is at the top or the bottom,\n // so we can't set proper radiuses without some \"magic\"\n const stacks = {} as StacksType<TType>;\n\n React.Children.forEach(children, child => {\n if (child.props.stackId) {\n if (!stacks[child.props.stackId]) {\n stacks[child.props.stackId] = [child.props.accessor];\n } else {\n stacks[child.props.stackId].push(child.props.accessor);\n }\n }\n });\n\n const handleLegendClick = (entry: PayloadType<TType>): void => {\n setHoveredBar(null);\n setActiveBars({ ...activeBars, [entry.dataKey]: !activeBars[entry.dataKey] });\n };\n\n const handleLegendHover = (entry: PayloadType<TType>, index: number): void => {\n setHoveredBar(entry.dataKey);\n setActiveIndex(index);\n };\n\n return (\n <ResponsiveContainer>\n <Recharts.BarChart\n layout={layout}\n data={data}\n margin={{ top: 10, right: 0, left: layout === 'vertical' ? 0 : -25, bottom: 0 }}\n onMouseMove={chartState => setActiveIndex(chartState.activeTooltipIndex)}\n onMouseLeave={() => setActiveIndex(undefined)}>\n <Recharts.CartesianGrid {...getCartesianGridProps()} />\n <Recharts.XAxis\n {...(layout === 'vertical' ? getXAxisVerticalProps<TType>(props) : getXAxisProps<TType>(props))}\n />\n <Recharts.YAxis\n {...(layout === 'vertical' ? getYAxisVerticalProps<TType>(props) : getYAxisProps<TType>(props))}\n />\n <Recharts.Legend\n {...getLegendProps({\n onClick: handleLegendClick,\n onMouseEnter: handleLegendHover,\n onMouseLeave: () => setHoveredBar(null),\n activeItems: activeBars,\n })}\n />\n <Recharts.Tooltip {...getTooltipProps()} formatter={formatter} />\n {React.Children.map(children, child => (\n <Recharts.Bar\n isAnimationActive={false}\n barSize={16}\n dataKey={child.props.accessor}\n name={child.props.label}\n onMouseEnter={(_, index) => setActiveIndex(index)}\n onMouseLeave={() => setActiveIndex(undefined)}\n fill={getThemeColor(child.props.color ? `${child.props.color}` : `blue-300`)}\n radius={getBarRadius<TType>(stacks, child.props.accessor, child.props.stackId, activeBars)}\n stackId={child.props.stackId}\n style={child.props.stackId ? { stroke: '#fff', strokeWidth: '2px' } : undefined}\n hide={!activeBars[child.props.accessor]}>\n {data.map((_, index) => (\n <Recharts.Cell\n key={`cell-${index}`}\n opacity={\n (hoveredBar && child.props.accessor !== hoveredBar) ||\n (activeIndex !== undefined && activeIndex !== index)\n ? 0.3\n : 1\n }\n />\n ))}\n </Recharts.Bar>\n ))}\n </Recharts.BarChart>\n </ResponsiveContainer>\n );\n};\nBarChart.Bar = Bar;\n\nconst getBarRadius = <TType,>(\n stacks: StacksType<TType>,\n accessor: keyof TType & string,\n stackId: string | undefined,\n activeBars: ActiveChartItems<TType>\n): number | [number, number, number, number] => {\n if (stackId && Array.isArray(stacks[stackId])) {\n const length = stacks[stackId].length - 1;\n const index: number = stacks[stackId].indexOf(accessor);\n\n if (\n Object.entries(activeBars)\n .filter(item => item[0] !== accessor)\n .every(item => !item[1])\n ) {\n return [3, 3, 0, 0];\n }\n\n if (activeBars[stacks[stackId][index + 1]] === false) {\n return [index === 0 ? 0 : 3, index === 0 ? 0 : 3, index === length - 1 ? 0 : 3, index === length - 1 ? 0 : 3];\n }\n\n if (index !== 0 && index !== length) {\n return 0;\n }\n\n return [index === 0 ? 0 : 3, index === 0 ? 0 : 3, index === length ? 0 : 3, index === length ? 0 : 3];\n }\n\n return 3;\n};\n"],"names":["Bar","_","getXAxisVerticalProps","props","getXAxisProps","type","dataKey","undefined","getYAxisVerticalProps","getYAxisProps","accessor","BarChart","externalProps","children","data","formatter","layout","activeIndex","setActiveIndex","React","useState","hoveredBar","setHoveredBar","activeBars","setActiveBars","keys","Children","forEach","child","stacks","stackId","push","handleLegendClick","entry","handleLegendHover","index","ResponsiveContainer","Recharts","margin","top","right","left","bottom","onMouseMove","chartState","activeTooltipIndex","onMouseLeave","getCartesianGridProps","getLegendProps","onClick","onMouseEnter","activeItems","getTooltipProps","map","isAnimationActive","barSize","name","label","fill","getThemeColor","color","radius","getBarRadius","style","stroke","strokeWidth","hide","key","opacity","Array","isArray","length","indexOf","Object","entries","filter","item","every"],"mappings":";;;;;;AAwBA,MAAMA,GAAG,GAAIC,CAAwB,IAAK,IAAI;AAS9C,MAAMC,qBAAqB,GAAYC,KAA8B,KAAM;EACvE,GAAGC,aAAa,CAAQD,KAAK,CAAC;EAC9B,GAAG;IAAEE,IAAI,EAAE,QAAiB;IAAEC,OAAO,EAAEC;;CAC1C,CAAC;AAEF,MAAMC,qBAAqB,GAAYL,KAA8B,KAAM;EACvE,GAAGM,aAAa,CAAQN,KAAK,CAAC;EAC9B,GAAG;IAAEG,OAAO,EAAEH,KAAK,CAACO,QAAQ;IAAEL,IAAI,EAAE;;CACvC,CAAC;MAEWM,QAAQ,GAAG,SAASA,QAAQA,CAAkBC,aAAmC;EAC1F,MAAM;IAAEC,QAAQ;IAAEC,IAAI;IAAEC,SAAS;IAAEC,MAAM,GAAG,YAAY;IAAE,GAAGb;GAAO,GAAGS,aAAa;EACpF,MAAM,CAACK,WAAW,EAAEC,cAAc,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAqBb,SAAS,CAAC;EACnF,MAAM,CAACc,UAAU,EAAEC,aAAa,CAAC,GAAGH,cAAK,CAACC,QAAQ,CAAgC,IAAI,CAAC;EACvF,MAAM,CAACG,UAAU,EAAEC,aAAa,CAAC,GAAGL,cAAK,CAACC,QAAQ,CAA0B;IACxE,MAAMK,IAAI,GAAG,EAA6B;IAE1CN,cAAK,CAACO,QAAQ,CAACC,OAAO,CAACd,QAAQ,EAAEe,KAAK;MAClCH,IAAI,CAACG,KAAK,CAACzB,KAAK,CAACO,QAAQ,CAAC,GAAG,IAAI;KACpC,CAAC;IAEF,OAAOe,IAAI;GACd,CAAC;;;EAIF,MAAMI,MAAM,GAAG,EAAuB;EAEtCV,cAAK,CAACO,QAAQ,CAACC,OAAO,CAACd,QAAQ,EAAEe,KAAK;IAClC,IAAIA,KAAK,CAACzB,KAAK,CAAC2B,OAAO,EAAE;MACrB,IAAI,CAACD,MAAM,CAACD,KAAK,CAACzB,KAAK,CAAC2B,OAAO,CAAC,EAAE;QAC9BD,MAAM,CAACD,KAAK,CAACzB,KAAK,CAAC2B,OAAO,CAAC,GAAG,CAACF,KAAK,CAACzB,KAAK,CAACO,QAAQ,CAAC;OACvD,MAAM;QACHmB,MAAM,CAACD,KAAK,CAACzB,KAAK,CAAC2B,OAAO,CAAC,CAACC,IAAI,CAACH,KAAK,CAACzB,KAAK,CAACO,QAAQ,CAAC;;;GAGjE,CAAC;EAEF,MAAMsB,iBAAiB,GAAIC,KAAyB;IAChDX,aAAa,CAAC,IAAI,CAAC;IACnBE,aAAa,CAAC;MAAE,GAAGD,UAAU;MAAE,CAACU,KAAK,CAAC3B,OAAO,GAAG,CAACiB,UAAU,CAACU,KAAK,CAAC3B,OAAO;KAAG,CAAC;GAChF;EAED,MAAM4B,iBAAiB,GAAGA,CAACD,KAAyB,EAAEE,KAAa;IAC/Db,aAAa,CAACW,KAAK,CAAC3B,OAAO,CAAC;IAC5BY,cAAc,CAACiB,KAAK,CAAC;GACxB;EAED,oBACIhB,6BAACiB,mBAAmB,qBAChBjB,6BAACkB,UAAiB;IACdrB,MAAM,EAAEA,MAAM;IACdF,IAAI,EAAEA,IAAI;IACVwB,MAAM,EAAE;MAAEC,GAAG,EAAE,EAAE;MAAEC,KAAK,EAAE,CAAC;MAAEC,IAAI,EAAEzB,MAAM,KAAK,UAAU,GAAG,CAAC,GAAG,CAAC,EAAE;MAAE0B,MAAM,EAAE;KAAG;IAC/EC,WAAW,EAAEC,UAAU,IAAI1B,cAAc,CAAC0B,UAAU,CAACC,kBAAkB,CAAC;IACxEC,YAAY,EAAEA,MAAM5B,cAAc,CAACX,SAAS;kBAC5CY,6BAACkB,aAAsB,oBAAKU,qBAAqB,EAAE,EAAI,eACvD5B,6BAACkB,KAAc,oBACNrB,MAAM,KAAK,UAAU,GAAGd,qBAAqB,CAAQC,KAAK,CAAC,GAAGC,aAAa,CAAQD,KAAK,CAAE,EACjG,eACFgB,6BAACkB,KAAc,oBACNrB,MAAM,KAAK,UAAU,GAAGR,qBAAqB,CAAQL,KAAK,CAAC,GAAGM,aAAa,CAAQN,KAAK,CAAE,EACjG,eACFgB,6BAACkB,MAAe,oBACRW,cAAc,CAAC;IACfC,OAAO,EAAEjB,iBAAiB;IAC1BkB,YAAY,EAAEhB,iBAAiB;IAC/BY,YAAY,EAAEA,MAAMxB,aAAa,CAAC,IAAI,CAAC;IACvC6B,WAAW,EAAE5B;GAChB,CAAC,EACJ,eACFJ,6BAACkB,OAAgB,oBAAKe,eAAe,EAAE;IAAErC,SAAS,EAAEA;KAAa,EAChEI,cAAK,CAACO,QAAQ,CAAC2B,GAAG,CAACxC,QAAQ,EAAEe,KAAK,kBAC/BT,6BAACkB,KAAY;IACTiB,iBAAiB,EAAE,KAAK;IACxBC,OAAO,EAAE,EAAE;IACXjD,OAAO,EAAEsB,KAAK,CAACzB,KAAK,CAACO,QAAQ;IAC7B8C,IAAI,EAAE5B,KAAK,CAACzB,KAAK,CAACsD,KAAK;IACvBP,YAAY,EAAEA,CAACjD,CAAC,EAAEkC,KAAK,KAAKjB,cAAc,CAACiB,KAAK,CAAC;IACjDW,YAAY,EAAEA,MAAM5B,cAAc,CAACX,SAAS,CAAC;IAC7CmD,IAAI,EAAEC,aAAa,CAAC/B,KAAK,CAACzB,KAAK,CAACyD,KAAK,GAAG,GAAGhC,KAAK,CAACzB,KAAK,CAACyD,KAAK,EAAE,GAAG,UAAU,CAAC;IAC5EC,MAAM,EAAEC,YAAY,CAAQjC,MAAM,EAAED,KAAK,CAACzB,KAAK,CAACO,QAAQ,EAAEkB,KAAK,CAACzB,KAAK,CAAC2B,OAAO,EAAEP,UAAU,CAAC;IAC1FO,OAAO,EAAEF,KAAK,CAACzB,KAAK,CAAC2B,OAAO;IAC5BiC,KAAK,EAAEnC,KAAK,CAACzB,KAAK,CAAC2B,OAAO,GAAG;MAAEkC,MAAM,EAAE,MAAM;MAAEC,WAAW,EAAE;KAAO,GAAG1D,SAAS;IAC/E2D,IAAI,EAAE,CAAC3C,UAAU,CAACK,KAAK,CAACzB,KAAK,CAACO,QAAQ;KACrCI,IAAI,CAACuC,GAAG,CAAC,CAACpD,CAAC,EAAEkC,KAAK,mBACfhB,6BAACkB,IAAa;IACV8B,GAAG,EAAE,QAAQhC,KAAK,EAAE;IACpBiC,OAAO,EACF/C,UAAU,IAAIO,KAAK,CAACzB,KAAK,CAACO,QAAQ,KAAKW,UAAU,IACjDJ,WAAW,KAAKV,SAAS,IAAIU,WAAW,KAAKkB,KAAM,GAC9C,GAAG,GACH;IAEZ,CACL,CAAC,CACS,CAClB,CAAC,CACc,CACF;AAE9B;AACAxB,QAAQ,CAACX,GAAG,GAAGA,GAAG;AAElB,MAAM8D,YAAY,GAAGA,CACjBjC,MAAyB,EACzBnB,QAA8B,EAC9BoB,OAA2B,EAC3BP,UAAmC;EAEnC,IAAIO,OAAO,IAAIuC,KAAK,CAACC,OAAO,CAACzC,MAAM,CAACC,OAAO,CAAC,CAAC,EAAE;IAC3C,MAAMyC,MAAM,GAAG1C,MAAM,CAACC,OAAO,CAAC,CAACyC,MAAM,GAAG,CAAC;IACzC,MAAMpC,KAAK,GAAWN,MAAM,CAACC,OAAO,CAAC,CAAC0C,OAAO,CAAC9D,QAAQ,CAAC;IAEvD,IACI+D,MAAM,CAACC,OAAO,CAACnD,UAAU,CAAC,CACrBoD,MAAM,CAACC,IAAI,IAAIA,IAAI,CAAC,CAAC,CAAC,KAAKlE,QAAQ,CAAC,CACpCmE,KAAK,CAACD,IAAI,IAAI,CAACA,IAAI,CAAC,CAAC,CAAC,CAAC,EAC9B;MACE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;IAGvB,IAAIrD,UAAU,CAACM,MAAM,CAACC,OAAO,CAAC,CAACK,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;MAClD,OAAO,CAACA,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAEA,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAEA,KAAK,KAAKoC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAEpC,KAAK,KAAKoC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;IAGjH,IAAIpC,KAAK,KAAK,CAAC,IAAIA,KAAK,KAAKoC,MAAM,EAAE;MACjC,OAAO,CAAC;;IAGZ,OAAO,CAACpC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAEA,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAEA,KAAK,KAAKoC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAEpC,KAAK,KAAKoC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;;EAGzG,OAAO,CAAC;AACZ,CAAC;;;;"}
1
+ {"version":3,"file":"BarChart.js","sources":["../../../../../../../../src/charts/components/Bar/BarChart.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport * as Recharts from 'recharts';\n\nimport { Color, getThemeColor } from '../../utils/color';\nimport {\n CommonChartProps,\n getCartesianGridProps,\n getXAxisProps,\n getYAxisProps,\n getLegendProps,\n getTooltipProps,\n} from '../../utils/common';\nimport { ResponsiveContainer } from '../ResponsiveContainer';\nimport { ActiveChartItems, PayloadType } from '../types';\n\ntype StacksType<TType> = Record<string, Array<keyof TType & string>>;\n\ntype BarChartBarProps<TType> = {\n accessor: keyof TType & string;\n color?: Color;\n label?: string;\n stackId?: string;\n};\n\nconst Bar = (_: BarChartBarProps<any>) => null;\n\ntype BarChartProps<TType> = CommonChartProps<TType> & {\n children: React.ReactElement<BarChartBarProps<TType>> | React.ReactElement<BarChartBarProps<TType>>[];\n data: TType[];\n formatter?: (value: any) => string;\n layout?: 'horizontal' | 'vertical';\n};\n\nconst getXAxisVerticalProps = <TType,>(props: CommonChartProps<TType>) => ({\n ...getXAxisProps<TType>(props),\n ...{ type: 'number' as const, dataKey: undefined },\n});\n\nconst getYAxisVerticalProps = <TType,>(props: CommonChartProps<TType>) => ({\n ...getYAxisProps<TType>(props),\n ...{ dataKey: props.accessor, type: 'category' as const },\n});\n\nexport const BarChart = function BarChart<TType = unknown>(externalProps: BarChartProps<TType>) {\n const { children, data, formatter, layout = 'horizontal', ...props } = externalProps;\n const [activeIndex, setActiveIndex] = React.useState<number | undefined>(undefined);\n const [hoveredBar, setHoveredBar] = useState<(keyof TType & string) | null>(null);\n const [activeBars, setActiveBars] = useState<ActiveChartItems<TType>>(() => {\n const keys = {} as ActiveChartItems<TType>;\n\n React.Children.forEach(children, child => {\n keys[child.props.accessor] = true;\n });\n\n return keys;\n });\n\n // Recharts doesn't provide a way for us to know if a stacked bar is at the top or the bottom,\n // so we can't set proper radiuses without some \"magic\"\n const stacks = {} as StacksType<TType>;\n\n React.Children.forEach(children, child => {\n if (child.props.stackId) {\n if (!stacks[child.props.stackId]) {\n stacks[child.props.stackId] = [child.props.accessor];\n } else {\n stacks[child.props.stackId].push(child.props.accessor);\n }\n }\n });\n\n const handleLegendClick = (entry: PayloadType<TType>): void => {\n setHoveredBar(null);\n setActiveBars({ ...activeBars, [entry.dataKey]: !activeBars[entry.dataKey] });\n };\n\n const handleLegendHover = (entry: PayloadType<TType>, index: number): void => {\n setHoveredBar(entry.dataKey);\n setActiveIndex(index);\n };\n\n return (\n <ResponsiveContainer>\n <Recharts.BarChart\n layout={layout}\n data={data}\n margin={{ top: 10, right: 0, left: layout === 'vertical' ? 0 : -25, bottom: 0 }}\n onMouseMove={chartState => setActiveIndex(chartState.activeTooltipIndex)}\n onMouseLeave={() => setActiveIndex(undefined)}>\n <Recharts.CartesianGrid {...getCartesianGridProps()} />\n <Recharts.XAxis\n {...(layout === 'vertical' ? getXAxisVerticalProps<TType>(props) : getXAxisProps<TType>(props))}\n />\n <Recharts.YAxis\n {...(layout === 'vertical' ? getYAxisVerticalProps<TType>(props) : getYAxisProps<TType>(props))}\n />\n <Recharts.Legend\n {...getLegendProps({\n onClick: handleLegendClick,\n onMouseEnter: handleLegendHover,\n onMouseLeave: () => setHoveredBar(null),\n activeItems: activeBars,\n })}\n />\n <Recharts.Tooltip {...getTooltipProps()} formatter={formatter} />\n {React.Children.map(children, child => (\n <Recharts.Bar\n isAnimationActive={false}\n barSize={16}\n dataKey={child.props.accessor}\n name={child.props.label}\n onMouseEnter={(_, index) => setActiveIndex(index)}\n onMouseLeave={() => setActiveIndex(undefined)}\n fill={getThemeColor(child.props.color ? `${child.props.color}` : `blue-300`)}\n radius={getBarRadius<TType>(stacks, child.props.accessor, child.props.stackId, activeBars)}\n stackId={child.props.stackId}\n style={child.props.stackId ? { stroke: '#fff', strokeWidth: '2px' } : undefined}\n hide={!activeBars[child.props.accessor]}>\n {data.map((_, index) => (\n <Recharts.Cell\n key={`cell-${index}`}\n opacity={\n (hoveredBar && child.props.accessor !== hoveredBar) ||\n (activeIndex !== undefined && activeIndex !== index)\n ? 0.3\n : 1\n }\n />\n ))}\n </Recharts.Bar>\n ))}\n </Recharts.BarChart>\n </ResponsiveContainer>\n );\n};\nBarChart.Bar = Bar;\n\nconst getBarRadius = <TType,>(\n stacks: StacksType<TType>,\n accessor: keyof TType & string,\n stackId: string | undefined,\n activeBars: ActiveChartItems<TType>\n): number | [number, number, number, number] => {\n if (stackId && Array.isArray(stacks[stackId])) {\n const length = stacks[stackId].length - 1;\n const index: number = stacks[stackId].indexOf(accessor);\n\n if (\n Object.entries(activeBars)\n .filter(item => item[0] !== accessor)\n .every(item => !item[1])\n ) {\n return [3, 3, 0, 0];\n }\n\n if (activeBars[stacks[stackId][index + 1]] === false) {\n return [index === 0 ? 0 : 3, index === 0 ? 0 : 3, index === length - 1 ? 0 : 3, index === length - 1 ? 0 : 3];\n }\n\n if (index !== 0 && index !== length) {\n return 0;\n }\n\n return [index === 0 ? 0 : 3, index === 0 ? 0 : 3, index === length ? 0 : 3, index === length ? 0 : 3];\n }\n\n return 3;\n};\n"],"names":["Bar","_","getXAxisVerticalProps","props","getXAxisProps","type","dataKey","undefined","getYAxisVerticalProps","getYAxisProps","accessor","BarChart","externalProps","children","data","formatter","layout","activeIndex","setActiveIndex","React","useState","hoveredBar","setHoveredBar","activeBars","setActiveBars","keys","Children","forEach","child","stacks","stackId","push","handleLegendClick","entry","handleLegendHover","index","ResponsiveContainer","Recharts","margin","top","right","left","bottom","onMouseMove","chartState","activeTooltipIndex","onMouseLeave","getCartesianGridProps","getLegendProps","onClick","onMouseEnter","activeItems","getTooltipProps","map","isAnimationActive","barSize","name","label","fill","getThemeColor","color","radius","getBarRadius","style","stroke","strokeWidth","hide","key","opacity","Array","isArray","length","indexOf","Object","entries","filter","item","every"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DonutChart.js","sources":["../../../../../../../../src/charts/components/Donut/DonutChart.tsx"],"sourcesContent":["import React from 'react';\nimport * as Recharts from 'recharts';\nimport cn from 'clsx';\n\nimport { Color, getThemeColor } from '../../utils/color';\nimport { getTooltipProps } from '../../utils/common';\nimport { Legend } from './Legend';\nimport { CenteredLabel } from './CenteredLabel';\nimport { ActiveShape } from './ActiveShape';\nimport { DONUT_WIDTH, HOVER_DONUT_WIDTH } from './util';\n\nconst Segment = (_: DonutChartSegmentProps) => null;\n\nexport type DonutChartSegmentProps = {\n color: Color;\n id: string;\n label: string;\n value: number;\n};\n\nexport type SegmentIds = string[];\n\nexport type DonutChartProps = {\n children: React.ReactElement<DonutChartSegmentProps> | React.ReactElement<DonutChartSegmentProps>[];\n formatter?: (value: number) => string;\n onClick?: (segment: DonutChartSegmentProps | DonutChartSegmentProps[]) => void;\n showLegend?: boolean;\n legendPosition?: string;\n label: string;\n};\n\nexport const DonutChart = function DonutChart({\n children,\n formatter,\n onClick,\n showLegend = false,\n legendPosition = 'bottom',\n label,\n}: DonutChartProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n const [radius, setRadius] = React.useState<number>(0);\n\n const [hoveredItem, setHoveredItem] = React.useState<SegmentIds>([]);\n // used for right legends\n const [selectedItem, setSelectedItem] = React.useState<SegmentIds>([]);\n // used for bottom legends\n const [visibleItems, setVisibleItems] = React.useState<Record<string, boolean>>(() => {\n const keys: Record<string, boolean> = {};\n\n React.Children.forEach(children, child => {\n keys[child.props.id] = true;\n });\n\n return keys;\n });\n\n React.useEffect(() => {\n if (ref.current) {\n const rect = ref.current.parentElement?.getBoundingClientRect();\n\n if (rect) {\n const width = showLegend ? rect.width / 2 : rect.width;\n const max: number = rect.height < width ? rect.height : width;\n setRadius(max / 2);\n }\n }\n }, [showLegend]);\n\n const diameter = radius * 2; // get dimensions of the parent container to find the max radius, so we can fill the container AND always have a 16px wide donut\n const data: DonutChartSegmentProps[] = React.Children.map(children, child => ({\n id: child.props.id,\n color: child.props.color,\n label: child.props.label,\n value: child.props.value,\n }));\n const displayedData = data.filter(child => visibleItems[child.id]);\n\n const total = displayedData.reduce((accum, entry) => accum + entry.value, 0);\n const showTooltip = (!showLegend || legendPosition === 'bottom') && displayedData.length > 0;\n\n const handleLegendClick = (entry: DonutChartSegmentProps | DonutChartSegmentProps[]): void => {\n if (legendPosition === 'bottom' && !Array.isArray(entry)) {\n setVisibleItems({ ...visibleItems, [entry.id]: !visibleItems[entry.id] });\n } else {\n const nextSelectedItem = Array.isArray(entry) ? entry.map(entryItem => entryItem.id) : [entry.id];\n\n // Using slice to avoid mutation of the react state 'selectedItem'\n const isCurrentSegmentActive = selectedItem.slice().sort().join(',') === nextSelectedItem.sort().join(',');\n\n if (onClick && !isCurrentSegmentActive) {\n onClick(entry);\n }\n\n setSelectedItem(isCurrentSegmentActive ? [] : nextSelectedItem);\n }\n };\n const handlePieClick = React.useCallback(\n (pieId: string | undefined) => {\n if (onClick && pieId !== undefined) {\n const pieProps = displayedData.find(item => item.id === pieId);\n\n onClick(pieProps as DonutChartSegmentProps);\n }\n },\n [onClick, displayedData]\n );\n\n const singlePieDonutChart = displayedData.length === 1;\n const activeShapeColor = React.useMemo(() => {\n const getSegmentColor = (item: SegmentIds) =>\n item.reduce((colors, itemId) => {\n const visibleHoveredItem = displayedData.find(dataItem => dataItem.id === itemId);\n\n if (visibleHoveredItem) {\n colors[visibleHoveredItem.id] = visibleHoveredItem.color;\n }\n\n return colors;\n }, {} as Record<string, string>);\n\n const hoveredSegmentColor = getSegmentColor(hoveredItem);\n const selectedSegmentColor = getSegmentColor(selectedItem);\n\n return legendPosition === 'bottom' || hoveredItem.length !== 0 ? hoveredSegmentColor : selectedSegmentColor;\n }, [hoveredItem, selectedItem, legendPosition]);\n\n if (ref.current && !radius) {\n return null;\n }\n\n const getActiveIndex = () => {\n if (hoveredItem.length > 0) {\n return hoveredItem.map(itemId => displayedData.findIndex(element => element.id === itemId));\n }\n\n return selectedItem.map(selectedItemId => displayedData.findIndex(element => element.id === selectedItemId));\n };\n\n const content = () => {\n const elements = React.Children.toArray(children).filter(\n (child): child is React.ReactElement<DonutChartSegmentProps> =>\n React.isValidElement<DonutChartSegmentProps>(child) && visibleItems[child.props.id]\n );\n\n return elements.length > 0 ? (\n elements.map((child, index) => {\n return (\n <Recharts.Cell\n key={`cell-${index}`}\n name={child.props.label}\n fill={getThemeColor(child.props.color) ?? getThemeColor('blue-300')}\n />\n );\n })\n ) : (\n <Recharts.Cell key=\"empty-chart\" name={''} fill={getThemeColor('grey-200')} />\n );\n };\n\n return (\n <div\n className={cn('relative h-full w-full', {\n [`flex `]: showLegend,\n 'flex-col items-center': legendPosition === 'bottom',\n })}\n ref={ref}>\n <CenteredLabel\n radius={radius}\n legendPosition={legendPosition}\n label={label}\n total={total}\n formatter={formatter}\n showLegend={showLegend}\n />\n\n <Recharts.PieChart data={data} height={diameter} width={diameter} style={{ transform: 'rotate(90deg) scale(-1,1)' }}>\n {showTooltip ? (\n <Recharts.Tooltip\n {...getTooltipProps({\n style: { transform: 'rotate(90deg) scale(-1,1)' },\n singlePieDonutChart,\n })}\n />\n ) : null}\n <Recharts.Pie\n isAnimationActive={false}\n activeIndex={getActiveIndex()}\n activeShape={<ActiveShape pieColors={activeShapeColor} onClick={handlePieClick} />}\n data={displayedData.length > 0 ? displayedData : []}\n dataKey=\"value\"\n innerRadius={radius - HOVER_DONUT_WIDTH - DONUT_WIDTH} // offset the 12px wider hover state, and then make the donut 16px wide\n onMouseEnter={(segment: DonutChartSegmentProps) => displayedData.length > 0 && setHoveredItem([segment.id])}\n onMouseLeave={() => setHoveredItem([])}\n outerRadius={radius - HOVER_DONUT_WIDTH} // offset the 12px wide hover state\n paddingAngle={2}\n // Prevents the pie group element from being focusable\n rootTabIndex={-1}>\n {content()}\n </Recharts.Pie>\n </Recharts.PieChart>\n {showLegend && (\n <Legend\n data={data}\n visibleItems={visibleItems}\n onClick={handleLegendClick}\n total={total}\n setHoveredItem={setHoveredItem}\n label={label}\n legendPosition={legendPosition}\n hoveredItem={hoveredItem}\n selectedItem={selectedItem}\n formatter={formatter}\n />\n )}\n </div>\n );\n};\n\nDonutChart.Segment = Segment;\n"],"names":["Segment","_","DonutChart","children","formatter","onClick","showLegend","legendPosition","label","ref","React","useRef","radius","setRadius","useState","hoveredItem","setHoveredItem","selectedItem","setSelectedItem","visibleItems","setVisibleItems","keys","Children","forEach","child","props","id","useEffect","current","_ref$current$parentEl","rect","parentElement","getBoundingClientRect","width","max","height","diameter","data","map","color","value","displayedData","filter","total","reduce","accum","entry","showTooltip","length","handleLegendClick","Array","isArray","nextSelectedItem","entryItem","isCurrentSegmentActive","slice","sort","join","handlePieClick","useCallback","pieId","undefined","pieProps","find","item","singlePieDonutChart","activeShapeColor","useMemo","getSegmentColor","colors","itemId","visibleHoveredItem","dataItem","hoveredSegmentColor","selectedSegmentColor","getActiveIndex","findIndex","element","selectedItemId","content","elements","toArray","isValidElement","index","Recharts","key","name","fill","_getThemeColor","getThemeColor","className","cn","CenteredLabel","style","transform","getTooltipProps","isAnimationActive","activeIndex","activeShape","ActiveShape","pieColors","dataKey","innerRadius","HOVER_DONUT_WIDTH","DONUT_WIDTH","onMouseEnter","segment","onMouseLeave","outerRadius","paddingAngle","rootTabIndex","Legend"],"mappings":"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"}
1
+ {"version":3,"file":"DonutChart.js","sources":["../../../../../../../../src/charts/components/Donut/DonutChart.tsx"],"sourcesContent":["import React from 'react';\nimport * as Recharts from 'recharts';\nimport cn from 'clsx';\n\nimport { Color, getThemeColor } from '../../utils/color';\nimport { getTooltipProps } from '../../utils/common';\nimport { Legend } from './Legend';\nimport { CenteredLabel } from './CenteredLabel';\nimport { ActiveShape } from './ActiveShape';\nimport { DONUT_WIDTH, HOVER_DONUT_WIDTH } from './util';\n\nconst Segment = (_: DonutChartSegmentProps) => null;\n\nexport type DonutChartSegmentProps = {\n color: Color;\n id: string;\n label: string;\n value: number;\n};\n\nexport type SegmentIds = string[];\n\nexport type DonutChartProps = {\n children: React.ReactElement<DonutChartSegmentProps> | React.ReactElement<DonutChartSegmentProps>[];\n formatter?: (value: number) => string;\n onClick?: (segment: DonutChartSegmentProps | DonutChartSegmentProps[]) => void;\n showLegend?: boolean;\n legendPosition?: string;\n label: string;\n};\n\nexport const DonutChart = function DonutChart({\n children,\n formatter,\n onClick,\n showLegend = false,\n legendPosition = 'bottom',\n label,\n}: DonutChartProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n const [radius, setRadius] = React.useState<number>(0);\n\n const [hoveredItem, setHoveredItem] = React.useState<SegmentIds>([]);\n // used for right legends\n const [selectedItem, setSelectedItem] = React.useState<SegmentIds>([]);\n // used for bottom legends\n const [visibleItems, setVisibleItems] = React.useState<Record<string, boolean>>(() => {\n const keys = {};\n\n React.Children.forEach(children, child => {\n keys[child.props.id] = true;\n });\n\n return keys;\n });\n\n React.useEffect(() => {\n if (ref.current) {\n const rect = ref.current.parentElement?.getBoundingClientRect();\n\n if (rect) {\n const width = showLegend ? rect.width / 2 : rect.width;\n const max: number = rect.height < width ? rect.height : width;\n setRadius(max / 2);\n }\n }\n }, [showLegend]);\n\n const diameter = radius * 2; // get dimensions of the parent container to find the max radius, so we can fill the container AND always have a 16px wide donut\n const data: DonutChartSegmentProps[] = React.Children.map(children, child => ({\n id: child.props.id,\n color: child.props.color,\n label: child.props.label,\n value: child.props.value,\n }));\n const displayedData = data.filter(child => visibleItems[child.id]);\n\n const total = displayedData.reduce((accum, entry) => accum + entry.value, 0);\n const showTooltip = (!showLegend || legendPosition === 'bottom') && displayedData.length > 0;\n\n const handleLegendClick = (entry: DonutChartSegmentProps | DonutChartSegmentProps[]): void => {\n if (legendPosition === 'bottom' && !Array.isArray(entry)) {\n setVisibleItems({ ...visibleItems, [entry.id]: !visibleItems[entry.id] });\n } else {\n const nextSelectedItem = Array.isArray(entry) ? entry.map(entryItem => entryItem.id) : [entry.id];\n\n // Using slice to avoid mutation of the react state 'selectedItem'\n const isCurrentSegmentActive = selectedItem.slice().sort().join(',') === nextSelectedItem.sort().join(',');\n\n if (onClick && !isCurrentSegmentActive) {\n onClick(entry);\n }\n\n setSelectedItem(isCurrentSegmentActive ? [] : nextSelectedItem);\n }\n };\n const handlePieClick = React.useCallback(\n (pieId: string | undefined) => {\n if (onClick && pieId !== undefined) {\n const pieProps = displayedData.find(item => item.id === pieId);\n\n onClick(pieProps as DonutChartSegmentProps);\n }\n },\n [onClick, displayedData]\n );\n\n const singlePieDonutChart = displayedData.length === 1;\n const activeShapeColor = React.useMemo(() => {\n const getSegmentColor = (item: SegmentIds) =>\n item.reduce((colors, itemId) => {\n const visibleHoveredItem = displayedData.find(dataItem => dataItem.id === itemId);\n\n if (visibleHoveredItem) {\n colors[visibleHoveredItem.id] = visibleHoveredItem.color;\n }\n\n return colors;\n }, {});\n\n const hoveredSegmentColor = getSegmentColor(hoveredItem);\n const selectedSegmentColor = getSegmentColor(selectedItem);\n\n return legendPosition === 'bottom' || hoveredItem.length !== 0 ? hoveredSegmentColor : selectedSegmentColor;\n }, [hoveredItem, selectedItem, legendPosition]);\n\n if (ref.current && !radius) {\n return null;\n }\n\n const getActiveIndex = () => {\n if (hoveredItem.length > 0) {\n return hoveredItem.map(itemId => displayedData.findIndex(element => element.id === itemId));\n }\n\n return selectedItem.map(selectedItemId => displayedData.findIndex(element => element.id === selectedItemId));\n };\n\n const content = () => {\n const elements = React.Children.toArray(children).filter(\n (child): child is React.ReactElement<DonutChartSegmentProps> =>\n React.isValidElement<DonutChartSegmentProps>(child) && visibleItems[child.props.id]\n );\n\n return elements.length > 0 ? (\n elements.map((child, index) => {\n return (\n <Recharts.Cell\n key={`cell-${index}`}\n name={child.props.label}\n fill={getThemeColor(child.props.color) ?? getThemeColor('blue-300')}\n />\n );\n })\n ) : (\n <Recharts.Cell key=\"empty-chart\" name={''} fill={getThemeColor('grey-200')} />\n );\n };\n\n return (\n <div\n className={cn('relative h-full w-full', {\n [`flex `]: showLegend,\n 'flex-col items-center': legendPosition === 'bottom',\n })}\n ref={ref}>\n <CenteredLabel\n radius={radius}\n legendPosition={legendPosition}\n label={label}\n total={total}\n formatter={formatter}\n showLegend={showLegend}\n />\n\n <Recharts.PieChart data={data} height={diameter} width={diameter} style={{ transform: 'rotate(90deg) scale(-1,1)' }}>\n {showTooltip ? (\n <Recharts.Tooltip\n {...getTooltipProps({\n style: { transform: 'rotate(90deg) scale(-1,1)' },\n singlePieDonutChart,\n })}\n />\n ) : null}\n <Recharts.Pie\n isAnimationActive={false}\n activeIndex={getActiveIndex()}\n activeShape={<ActiveShape pieColors={activeShapeColor} onClick={handlePieClick} />}\n data={displayedData.length > 0 ? displayedData : []}\n dataKey=\"value\"\n innerRadius={radius - HOVER_DONUT_WIDTH - DONUT_WIDTH} // offset the 12px wider hover state, and then make the donut 16px wide\n onMouseEnter={(segment: DonutChartSegmentProps) => displayedData.length > 0 && setHoveredItem([segment.id])}\n onMouseLeave={() => setHoveredItem([])}\n outerRadius={radius - HOVER_DONUT_WIDTH} // offset the 12px wide hover state\n paddingAngle={2}\n // Prevents the pie group element from being focusable\n rootTabIndex={-1}>\n {content()}\n </Recharts.Pie>\n </Recharts.PieChart>\n {showLegend && (\n <Legend\n data={data}\n visibleItems={visibleItems}\n onClick={handleLegendClick}\n total={total}\n setHoveredItem={setHoveredItem}\n label={label}\n legendPosition={legendPosition}\n hoveredItem={hoveredItem}\n selectedItem={selectedItem}\n formatter={formatter}\n />\n )}\n </div>\n );\n};\n\nDonutChart.Segment = Segment;\n"],"names":["Segment","_","DonutChart","children","formatter","onClick","showLegend","legendPosition","label","ref","React","useRef","radius","setRadius","useState","hoveredItem","setHoveredItem","selectedItem","setSelectedItem","visibleItems","setVisibleItems","keys","Children","forEach","child","props","id","useEffect","current","_ref$current$parentEl","rect","parentElement","getBoundingClientRect","width","max","height","diameter","data","map","color","value","displayedData","filter","total","reduce","accum","entry","showTooltip","length","handleLegendClick","Array","isArray","nextSelectedItem","entryItem","isCurrentSegmentActive","slice","sort","join","handlePieClick","useCallback","pieId","undefined","pieProps","find","item","singlePieDonutChart","activeShapeColor","useMemo","getSegmentColor","colors","itemId","visibleHoveredItem","dataItem","hoveredSegmentColor","selectedSegmentColor","getActiveIndex","findIndex","element","selectedItemId","content","elements","toArray","isValidElement","index","Recharts","key","name","fill","_getThemeColor","getThemeColor","className","cn","CenteredLabel","style","transform","getTooltipProps","isAnimationActive","activeIndex","activeShape","ActiveShape","pieColors","dataKey","innerRadius","HOVER_DONUT_WIDTH","DONUT_WIDTH","onMouseEnter","segment","onMouseLeave","outerRadius","paddingAngle","rootTabIndex","Legend"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ResponsiveContainer.js","sources":["../../../../../../../src/charts/components/ResponsiveContainer.tsx"],"sourcesContent":["import React from 'react';\nimport * as Recharts from 'recharts';\n\ntype ResponsiveContainerProps = Recharts.ResponsiveContainerProps;\n\n// A hacky fix for EC-50037 to make sure that Chart doesn't resize when it is inside a Card.\nexport const ResponsiveContainer = (props: ResponsiveContainerProps) => (\n <Recharts.ResponsiveContainer className=\"!h-[calc(100%-1px)] !w-[calc(100%-1px)]\" {...props} />\n);\n"],"names":["ResponsiveContainer","props","React","Recharts","className"],"mappings":";;;AAKA;MACaA,mBAAmB,GAAIC,KAA+B,kBAC/DC,6BAACC,qBAA4B;EAACC,SAAS,EAAC;GAA8CH,KAAK,EAAI;;;;"}
1
+ {"version":3,"file":"ResponsiveContainer.js","sources":["../../../../../../../src/charts/components/ResponsiveContainer.tsx"],"sourcesContent":["import React from 'react';\nimport * as Recharts from 'recharts';\n\ntype ResponsiveContainerProps = Recharts.ResponsiveContainerProps & React.RefAttributes<HTMLDivElement>;\n\n// A hacky fix for EC-50037 to make sure that Chart doesn't resize when it is inside a Card.\nexport const ResponsiveContainer = (props: ResponsiveContainerProps) => (\n <Recharts.ResponsiveContainer className=\"!h-[calc(100%-1px)] !w-[calc(100%-1px)]\" {...props} />\n);\n"],"names":["ResponsiveContainer","props","React","Recharts","className"],"mappings":";;;AAKA;MACaA,mBAAmB,GAAIC,KAA+B,kBAC/DC,6BAACC,qBAA4B;EAACC,SAAS,EAAC;GAA8CH,KAAK,EAAI;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sources":["../../../../../../../src/charts/components/Tooltip.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\nimport { getThemeColor } from '../utils/color';\n\ntype TooltipProps = {\n active?: boolean;\n formatter: (value: any) => any;\n payload: any;\n style?: CSSProperties;\n singlePieDonutChart?: boolean;\n};\n\nexport const Tooltip = ({ active, formatter, payload, style, singlePieDonutChart }: TooltipProps) => {\n const getColor = (entry: any) => {\n if (singlePieDonutChart) {\n // We use entry.payload.label because the payload structure differs between a Donut chart with a single pie\n // and one with multiple pies.\n return getThemeColor(entry.payload.color);\n }\n\n return entry.color ?? entry.payload.fill ?? 'blue-500';\n };\n\n if (active && payload && payload.length) {\n return (\n <dl\n className=\"z-20 grid grid-cols-[max-content_max-content] gap-x-4 rounded-md bg-white p-4 text-xs shadow-[0px_0px_1px_rgba(0,0,0,0.1),_0px_6px_18px_rgba(47,51,68,0.2)]\"\n style={style}>\n {payload.map((entry: any, index: number) => (\n <React.Fragment key={`${entry.name}-${index}`}>\n <dt className=\"text-grey-700 mb-0 flex items-center gap-1 font-normal\">\n <span className=\"-mt-px h-2.5 w-2.5 rounded-sm\" style={{ background: getColor(entry) }} />\n {\n // We use entry.payload.label because the payload structure differs between a Donut chart with a single pie\n // and one with multiple pies.\n singlePieDonutChart ? entry.payload.label : entry.name\n }\n </dt>\n <dd className=\"mb-0 text-right font-bold text-black \">\n {formatter ? formatter(entry.value) : entry.value}\n </dd>\n </React.Fragment>\n ))}\n </dl>\n );\n }\n\n return null;\n};\n"],"names":["Tooltip","active","formatter","payload","style","singlePieDonutChart","getColor","entry","getThemeColor","color","_ref","_entry$color","fill","length","React","className","map","index","Fragment","key","name","background","label","value"],"mappings":";;;MAWaA,OAAO,GAAGA,CAAC;EAAEC,MAAM;EAAEC,SAAS;EAAEC,OAAO;EAAEC,KAAK;EAAEC;CAAmC;EAC5F,MAAMC,QAAQ,GAAIC,KAAU;;IACxB,IAAIF,mBAAmB,EAAE;;;MAGrB,OAAOG,aAAa,CAACD,KAAK,CAACJ,OAAO,CAACM,KAAK,CAAC;;IAG7C,QAAAC,IAAA,IAAAC,YAAA,GAAOJ,KAAK,CAACE,KAAK,cAAAE,YAAA,cAAAA,YAAA,GAAIJ,KAAK,CAACJ,OAAO,CAACS,IAAI,cAAAF,IAAA,cAAAA,IAAA,GAAI,UAAU;GACzD;EAED,IAAIT,MAAM,IAAIE,OAAO,IAAIA,OAAO,CAACU,MAAM,EAAE;IACrC,oBACIC;MACIC,SAAS,EAAC,6JAA6J;MACvKX,KAAK,EAAEA;OACND,OAAO,CAACa,GAAG,CAAC,CAACT,KAAU,EAAEU,KAAa,mBACnCH,6BAACA,cAAK,CAACI,QAAQ;MAACC,GAAG,EAAE,GAAGZ,KAAK,CAACa,IAAI,IAAIH,KAAK;oBACvCH;MAAIC,SAAS,EAAC;oBACVD;MAAMC,SAAS,EAAC,+BAA+B;MAACX,KAAK,EAAE;QAAEiB,UAAU,EAAEf,QAAQ,CAACC,KAAK;;MAAO;;;IAItFF,mBAAmB,GAAGE,KAAK,CAACJ,OAAO,CAACmB,KAAK,GAAGf,KAAK,CAACa,IAAI,CAEzD,eACLN;MAAIC,SAAS,EAAC;OACTb,SAAS,GAAGA,SAAS,CAACK,KAAK,CAACgB,KAAK,CAAC,GAAGhB,KAAK,CAACgB,KAAK,CAChD,CACQ,CACpB,CAAC,CACD;;EAIb,OAAO,IAAI;AACf;;;;"}
1
+ {"version":3,"file":"Tooltip.js","sources":["../../../../../../../src/charts/components/Tooltip.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\nimport { getThemeColor } from '../utils/color';\n\ntype TooltipProps = {\n active?: boolean;\n formatter: (value: any) => any;\n payload: any;\n style?: CSSProperties;\n singlePieDonutChart?: boolean;\n};\n\nexport const Tooltip = ({ active, formatter, payload, style, singlePieDonutChart }: TooltipProps) => {\n const getColor = entry => {\n if (singlePieDonutChart) {\n // We use entry.payload.label because the payload structure differs between a Donut chart with a single pie\n // and one with multiple pies.\n return getThemeColor(entry.payload.color);\n }\n\n return entry.color ?? entry.payload.fill ?? 'blue-500';\n };\n\n if (active && payload && payload.length) {\n return (\n <dl\n className=\"z-20 grid grid-cols-[max-content_max-content] gap-x-4 rounded-md bg-white p-4 text-xs shadow-[0px_0px_1px_rgba(0,0,0,0.1),_0px_6px_18px_rgba(47,51,68,0.2)]\"\n style={style}>\n {payload.map((entry, index) => (\n <React.Fragment key={`${entry.name}-${index}`}>\n <dt className=\"text-grey-700 mb-0 flex items-center gap-1 font-normal\">\n <span className=\"-mt-px h-2.5 w-2.5 rounded-sm\" style={{ background: getColor(entry) }} />\n {\n // We use entry.payload.label because the payload structure differs between a Donut chart with a single pie\n // and one with multiple pies.\n singlePieDonutChart ? entry.payload.label : entry.name\n }\n </dt>\n <dd className=\"mb-0 text-right font-bold text-black \">\n {formatter ? formatter(entry.value) : entry.value}\n </dd>\n </React.Fragment>\n ))}\n </dl>\n );\n }\n\n return null;\n};\n"],"names":["Tooltip","active","formatter","payload","style","singlePieDonutChart","getColor","entry","getThemeColor","color","_ref","_entry$color","fill","length","React","className","map","index","Fragment","key","name","background","label","value"],"mappings":";;;MAWaA,OAAO,GAAGA,CAAC;EAAEC,MAAM;EAAEC,SAAS;EAAEC,OAAO;EAAEC,KAAK;EAAEC;CAAmC;EAC5F,MAAMC,QAAQ,GAAGC,KAAK;;IAClB,IAAIF,mBAAmB,EAAE;;;MAGrB,OAAOG,aAAa,CAACD,KAAK,CAACJ,OAAO,CAACM,KAAK,CAAC;;IAG7C,QAAAC,IAAA,IAAAC,YAAA,GAAOJ,KAAK,CAACE,KAAK,cAAAE,YAAA,cAAAA,YAAA,GAAIJ,KAAK,CAACJ,OAAO,CAACS,IAAI,cAAAF,IAAA,cAAAA,IAAA,GAAI,UAAU;GACzD;EAED,IAAIT,MAAM,IAAIE,OAAO,IAAIA,OAAO,CAACU,MAAM,EAAE;IACrC,oBACIC;MACIC,SAAS,EAAC,6JAA6J;MACvKX,KAAK,EAAEA;OACND,OAAO,CAACa,GAAG,CAAC,CAACT,KAAK,EAAEU,KAAK,mBACtBH,6BAACA,cAAK,CAACI,QAAQ;MAACC,GAAG,EAAE,GAAGZ,KAAK,CAACa,IAAI,IAAIH,KAAK;oBACvCH;MAAIC,SAAS,EAAC;oBACVD;MAAMC,SAAS,EAAC,+BAA+B;MAACX,KAAK,EAAE;QAAEiB,UAAU,EAAEf,QAAQ,CAACC,KAAK;;MAAO;;;IAItFF,mBAAmB,GAAGE,KAAK,CAACJ,OAAO,CAACmB,KAAK,GAAGf,KAAK,CAACa,IAAI,CAEzD,eACLN;MAAIC,SAAS,EAAC;OACTb,SAAS,GAAGA,SAAS,CAACK,KAAK,CAACgB,KAAK,CAAC,GAAGhB,KAAK,CAACgB,KAAK,CAChD,CACQ,CACpB,CAAC,CACD;;EAIb,OAAO,IAAI;AACf;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"color.js","sources":["../../../../../../../src/charts/utils/color.ts"],"sourcesContent":["import themeColors from '../../../tailwind.colors';\n\nconst mapColor = (palette: any, prefix = ''): any => {\n return Object.keys(palette).reduce((accum, color) => {\n if (color === 'current') {\n return accum;\n } else if (typeof palette[color] === 'string') {\n return {\n ...accum,\n [prefix ? (color === 'DEFAULT' ? prefix : `${prefix}-${color}`) : color]: palette[color],\n };\n } else {\n return {\n ...accum,\n ...mapColor(palette[color], color),\n };\n }\n }, {});\n};\n\nexport const colors: Record<string, string> = mapColor(themeColors);\n\nexport type Color = keyof typeof colors;\n\nexport const getThemeColor = (color: string) => colors[color];\n"],"names":["mapColor","palette","prefix","Object","keys","reduce","accum","color","colors","themeColors","getThemeColor"],"mappings":";;AAEA,MAAMA,QAAQ,GAAGA,CAACC,OAAY,EAAEC,MAAM,GAAG,EAAE;EACvC,OAAOC,MAAM,CAACC,IAAI,CAACH,OAAO,CAAC,CAACI,MAAM,CAAC,CAACC,KAAK,EAAEC,KAAK;IAC5C,IAAIA,KAAK,KAAK,SAAS,EAAE;MACrB,OAAOD,KAAK;KACf,MAAM,IAAI,OAAOL,OAAO,CAACM,KAAK,CAAC,KAAK,QAAQ,EAAE;MAC3C,OAAO;QACH,GAAGD,KAAK;QACR,CAACJ,MAAM,GAAIK,KAAK,KAAK,SAAS,GAAGL,MAAM,GAAG,GAAGA,MAAM,IAAIK,KAAK,EAAE,GAAIA,KAAK,GAAGN,OAAO,CAACM,KAAK;OAC1F;KACJ,MAAM;MACH,OAAO;QACH,GAAGD,KAAK;QACR,GAAGN,QAAQ,CAACC,OAAO,CAACM,KAAK,CAAC,EAAEA,KAAK;OACpC;;GAER,EAAE,EAAE,CAAC;AACV,CAAC;MAEYC,MAAM,gBAA2BR,QAAQ,CAACS,WAAW;MAIrDC,aAAa,GAAIH,KAAa,IAAKC,MAAM,CAACD,KAAK;;;;"}
1
+ {"version":3,"file":"color.js","sources":["../../../../../../../src/charts/utils/color.ts"],"sourcesContent":["import themeColors from '../../../tailwind.colors.js';\n\nconst mapColor = (palette, prefix = ''): any => {\n return Object.keys(palette).reduce((accum, color) => {\n if (color === 'current') {\n return accum;\n } else if (typeof palette[color] === 'string') {\n return {\n ...accum,\n [prefix ? (color === 'DEFAULT' ? prefix : `${prefix}-${color}`) : color]: palette[color],\n };\n } else {\n return {\n ...accum,\n ...mapColor(palette[color], color),\n };\n }\n }, {});\n};\n\nexport const colors: Record<string, string> = mapColor(themeColors);\n\nexport type Color = keyof typeof colors;\n\nexport const getThemeColor = (color: string) => colors[color];\n"],"names":["mapColor","palette","prefix","Object","keys","reduce","accum","color","colors","themeColors","getThemeColor"],"mappings":";;AAEA,MAAMA,QAAQ,GAAGA,CAACC,OAAO,EAAEC,MAAM,GAAG,EAAE;EAClC,OAAOC,MAAM,CAACC,IAAI,CAACH,OAAO,CAAC,CAACI,MAAM,CAAC,CAACC,KAAK,EAAEC,KAAK;IAC5C,IAAIA,KAAK,KAAK,SAAS,EAAE;MACrB,OAAOD,KAAK;KACf,MAAM,IAAI,OAAOL,OAAO,CAACM,KAAK,CAAC,KAAK,QAAQ,EAAE;MAC3C,OAAO;QACH,GAAGD,KAAK;QACR,CAACJ,MAAM,GAAIK,KAAK,KAAK,SAAS,GAAGL,MAAM,GAAG,GAAGA,MAAM,IAAIK,KAAK,EAAE,GAAIA,KAAK,GAAGN,OAAO,CAACM,KAAK;OAC1F;KACJ,MAAM;MACH,OAAO;QACH,GAAGD,KAAK;QACR,GAAGN,QAAQ,CAACC,OAAO,CAACM,KAAK,CAAC,EAAEA,KAAK;OACpC;;GAER,EAAE,EAAE,CAAC;AACV,CAAC;MAEYC,MAAM,gBAA2BR,QAAQ,CAACS,WAAW;MAIrDC,aAAa,GAAIH,KAAa,IAAKC,MAAM,CAACD,KAAK;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.js","sources":["../../../../../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { Icon } from '../Icon/Icon';\n\ntype AccordionContext = {\n as: 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n};\nconst AccordionContext = React.createContext<AccordionContext>({\n as: 'h2',\n});\n\nexport type AccordionTriggerProps = React.HTMLAttributes<HTMLElement>;\n\nconst StyledTrigger = React.forwardRef(function AccordionStyledTrigger(\n props: AccordionPrimitive.AccordionTriggerProps,\n ref: React.Ref<HTMLButtonElement>\n) {\n const isExpanded = !!props['aria-expanded'];\n\n const className = cn(\n 'w-full inline-flex justify-between items-center align-middle',\n 'focus:rounded-sm focus:border-blue-500 focus:yt-focus',\n props.className\n );\n\n return (\n <button {...props} ref={ref} className={className}>\n {props.children}\n <Icon name={isExpanded ? 'chevron-up' : 'chevron-down'} />\n </button>\n );\n});\n\nconst Trigger = React.forwardRef(function AccordionTrigger(props: AccordionTriggerProps, ref: React.Ref<HTMLButtonElement>) {\n const { children } = props;\n const { as: Heading } = React.useContext(AccordionContext);\n\n return (\n <AccordionPrimitive.Header asChild>\n <Heading className=\"my-3\">\n <AccordionPrimitive.Trigger ref={ref} asChild>\n <StyledTrigger>{children}</StyledTrigger>\n </AccordionPrimitive.Trigger>\n </Heading>\n </AccordionPrimitive.Header>\n );\n});\n\nexport type AccordionContentProps = React.HTMLAttributes<HTMLElement>;\nconst Content = React.forwardRef(function AccordionContent(props: AccordionContentProps, ref: React.Ref<HTMLDivElement>) {\n return <AccordionPrimitive.Content {...props} ref={ref} />;\n});\n\nexport type AccordionItemProps = React.HTMLAttributes<HTMLDivElement> & {\n id: string;\n disabled?: boolean;\n};\nconst Item = (props: AccordionItemProps) => {\n const { id, ...otherProps } = props;\n return <AccordionPrimitive.Item {...otherProps} value={id} />;\n};\n\ntype AccordionBaseProps = {\n children: React.ReactNode[];\n\n /** Change what heading element accordion regions will render */\n as?: 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n /** Additional classes for Accordion root element */\n className?: string;\n};\n\nexport interface AccordionUncontrolledProps extends AccordionBaseProps {\n /** Default expanded accordion(s) */\n defaultId?: string | string[];\n\n id?: never;\n onChange?: never;\n}\n\nexport interface AccordionMultipleControlledProps extends AccordionBaseProps {\n /** Expanded accordions */\n id: string[];\n\n /** onChange function to receive ids of expanded accordions */\n onChange: (id: string[]) => void;\n\n defaultId?: never;\n}\nexport interface AccordionSingleControlledProps extends AccordionBaseProps {\n /** Expanded accordion */\n id: string;\n\n /** onChange function to receive id of expanded accordion */\n onChange: (id: string) => void;\n\n defaultId?: never;\n}\n\nexport type AccordionProps = AccordionUncontrolledProps | AccordionMultipleControlledProps | AccordionSingleControlledProps;\n\nexport const Accordion = (props: AccordionProps) => {\n const { id, defaultId, onChange, as = 'h2', ...otherProps } = props;\n const context = React.useMemo(() => ({ as }), [as]);\n\n let valueProps;\n\n if (defaultId) {\n valueProps = {\n defaultValue: defaultId || undefined,\n };\n } else {\n valueProps = {\n onValueChange: onChange,\n value: id || undefined,\n };\n }\n\n const type = typeof valueProps.defaultValue === 'string' || typeof valueProps.value === 'string' ? 'single' : 'multiple';\n const className = cn('divide-y divide-grey-200', props.className);\n\n return (\n <AccordionContext.Provider value={context}>\n <AccordionPrimitive.Root\n {...(otherProps as any)}\n {...valueProps}\n data-taco=\"accordion\"\n className={className}\n type={type}\n />\n </AccordionContext.Provider>\n );\n};\n\nAccordion.Item = Item;\nAccordion.Trigger = Trigger;\nAccordion.Content = Content;\n"],"names":["AccordionContext","React","createContext","as","StyledTrigger","forwardRef","AccordionStyledTrigger","props","ref","isExpanded","className","cn","children","Icon","name","Trigger","AccordionTrigger","Heading","useContext","AccordionPrimitive","asChild","Content","AccordionContent","Item","id","otherProps","value","Accordion","defaultId","onChange","context","useMemo","valueProps","defaultValue","undefined","onValueChange","type","Provider"],"mappings":"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"}
1
+ {"version":3,"file":"Accordion.js","sources":["../../../../../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { Icon } from '../Icon/Icon';\n\ntype AccordionContext = {\n as: 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n};\nconst AccordionContext = React.createContext<AccordionContext>({\n as: 'h2',\n});\n\nexport type AccordionTriggerProps = React.HTMLAttributes<HTMLElement>;\n\nconst StyledTrigger = React.forwardRef(function AccordionStyledTrigger(\n props: AccordionPrimitive.AccordionTriggerProps,\n ref: React.Ref<HTMLButtonElement>\n) {\n const isExpanded = !!props['aria-expanded'];\n\n const className = cn(\n 'w-full inline-flex justify-between items-center align-middle',\n 'focus:rounded-sm focus:border-blue-500 focus:yt-focus',\n props.className\n );\n\n return (\n <button {...props} ref={ref} className={className}>\n {props.children}\n <Icon name={isExpanded ? 'chevron-up' : 'chevron-down'} />\n </button>\n );\n});\n\nconst Trigger = React.forwardRef(function AccordionTrigger(props: AccordionTriggerProps, ref: React.Ref<HTMLButtonElement>) {\n const { children } = props;\n const { as: Heading } = React.useContext(AccordionContext);\n\n return (\n <AccordionPrimitive.Header asChild>\n <Heading className=\"my-3\">\n <AccordionPrimitive.Trigger ref={ref} asChild>\n <StyledTrigger>{children}</StyledTrigger>\n </AccordionPrimitive.Trigger>\n </Heading>\n </AccordionPrimitive.Header>\n );\n});\n\nexport type AccordionContentProps = React.HTMLAttributes<HTMLElement>;\nconst Content = React.forwardRef(function AccordionContent(props: AccordionContentProps, ref: React.Ref<HTMLDivElement>) {\n return <AccordionPrimitive.Content {...props} ref={ref} />;\n});\n\nexport type AccordionItemProps = React.HTMLAttributes<HTMLDivElement> & {\n id: string;\n disabled?: boolean;\n};\nconst Item = (props: AccordionItemProps) => {\n const { id, ...otherProps } = props;\n return <AccordionPrimitive.Item {...otherProps} value={id} />;\n};\n\ntype AccordionBaseProps = {\n children: React.ReactNode[];\n\n /** Change what heading element accordion regions will render */\n as?: 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n /** Additional classes for Accordion root element */\n className?: string;\n};\n\nexport interface AccordionUncontrolledProps extends AccordionBaseProps {\n /** Default expanded accordion(s) */\n defaultId?: string | string[];\n\n id?: never;\n onChange?: never;\n}\n\nexport interface AccordionMultipleControlledProps extends AccordionBaseProps {\n /** Expanded accordions */\n id: string[];\n\n /** onChange function to receive ids of expanded accordions */\n onChange: (id: string[]) => void;\n\n defaultId?: never;\n}\nexport interface AccordionSingleControlledProps extends AccordionBaseProps {\n /** Expanded accordion */\n id: string;\n\n /** onChange function to receive id of expanded accordion */\n onChange: (id: string) => void;\n\n defaultId?: never;\n}\n\nexport type AccordionProps = AccordionUncontrolledProps | AccordionMultipleControlledProps | AccordionSingleControlledProps;\n\nexport const Accordion = (props: AccordionProps) => {\n const { id, defaultId, onChange, as = 'h2', ...otherProps } = props;\n const context = React.useMemo(() => ({ as }), [as]);\n\n let valueProps;\n\n if (defaultId) {\n valueProps = {\n defaultValue: defaultId || undefined,\n };\n } else {\n valueProps = {\n onValueChange: onChange,\n value: id || undefined,\n };\n }\n\n const type = typeof valueProps.defaultValue === 'string' || typeof valueProps.value === 'string' ? 'single' : 'multiple';\n const className = cn('divide-y divide-grey-200', props.className);\n\n return (\n <AccordionContext.Provider value={context}>\n <AccordionPrimitive.Root {...otherProps} {...valueProps} data-taco=\"accordion\" className={className} type={type} />\n </AccordionContext.Provider>\n );\n};\n\nAccordion.Item = Item;\nAccordion.Trigger = Trigger;\nAccordion.Content = Content;\n"],"names":["AccordionContext","React","createContext","as","StyledTrigger","forwardRef","AccordionStyledTrigger","props","ref","isExpanded","className","cn","children","Icon","name","Trigger","AccordionTrigger","Heading","useContext","AccordionPrimitive","asChild","Content","AccordionContent","Item","id","otherProps","value","Accordion","defaultId","onChange","context","useMemo","valueProps","defaultValue","undefined","onValueChange","type","Provider"],"mappings":"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"}
@@ -54,7 +54,6 @@ const useDatepicker = ({
54
54
  setInternalValue(event.target.value);
55
55
  };
56
56
  const handleChange = date => {
57
- // Update both the input value and calendar view date when selecting a date
58
57
  setInputValueByRef(inputRef.current, format(date, formatting.date), 'focusout');
59
58
  };
60
59
  const handleKeyDown = event => {
@@ -1 +1 @@
1
- {"version":3,"file":"useDatepicker.js","sources":["../../../../../../../src/components/Datepicker/useDatepicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { isMatch } from 'react-day-picker';\nimport { parseFromCustomString, format, parse } from '../../utils/date';\nimport { useLocalization } from '../Provider/Localization';\nimport { setInputValueByRef } from '../../utils/input';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { DatepickerProps } from './Datepicker';\nimport { CalendarProps } from '../Calendar/Calendar';\nimport { InputProps as BaseInputProps } from '../Input/Input';\n\ntype InputProps = BaseInputProps & { ref: React.RefObject<HTMLInputElement> };\ntype useDatepicker = React.HTMLAttributes<HTMLDivElement> & {\n calendar: CalendarProps;\n input: InputProps;\n};\n\nexport const useDatepicker = (\n { defaultValue: _, calendar, onBlur, onChange, value, ...props }: DatepickerProps,\n ref: React.Ref<HTMLInputElement>\n): useDatepicker => {\n const inputRef = useMergedRef<HTMLInputElement>(ref);\n const { formatting } = useLocalization();\n const [internalValue, setInternalValue] = React.useState(format(value, formatting.date) ?? '');\n const originalValueAsDate = parse(value);\n\n // update internal value if it changed 'externally'\n React.useEffect(() => {\n const formattedValue = format(value, formatting.date);\n\n if (formattedValue !== internalValue) {\n setInternalValue(formattedValue ?? '');\n }\n }, [value]);\n\n const isDisabledDay = React.useMemo(() => {\n if (originalValueAsDate && calendar?.disabledDays) {\n return isMatch(originalValueAsDate, calendar?.disabledDays); // can happen if you type a disabled date in input.\n }\n\n return false;\n }, [originalValueAsDate]);\n\n // event handlers\n const handleInputBlur = (event: React.FocusEvent<HTMLInputElement>): void => {\n event.persist();\n\n const valueAsDate = parseFromCustomString(\n event.target.value,\n 'dd.mm.yy',\n originalValueAsDate?.getMonth(),\n originalValueAsDate?.getFullYear()\n );\n const formattedValue = valueAsDate ? format(valueAsDate) || '' : '';\n\n event.target.value = formattedValue;\n\n if (onChange) {\n (event as any).detail = valueAsDate;\n onChange(event);\n } else {\n // update the internal value to use the formatted date\n setInternalValue(formattedValue);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n setInternalValue(event.target.value);\n };\n\n const handleChange = (date: Date) => {\n // Update both the input value and calendar view date when selecting a date\n setInputValueByRef(inputRef.current, format(date, formatting.date), 'focusout');\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (props.onKeyDown) {\n props.onKeyDown(event);\n }\n\n if (event.key === 'Enter') {\n event.target.dispatchEvent(new Event('focusout', { bubbles: true }));\n }\n };\n\n const inputProps: InputProps = {\n ...props,\n autoComplete: 'off',\n invalid: props.invalid || isDisabledDay,\n onBlur: handleInputBlur,\n onChange: handleInputChange,\n onKeyDown: handleKeyDown,\n ref: inputRef,\n type: 'text',\n value: internalValue,\n };\n\n const calendarProps: CalendarProps = {\n ...calendar,\n onChange: handleChange,\n value: originalValueAsDate,\n };\n\n return {\n input: inputProps,\n calendar: calendarProps,\n };\n};\n"],"names":["useDatepicker","defaultValue","_","calendar","onBlur","onChange","value","props","ref","inputRef","useMergedRef","formatting","useLocalization","internalValue","setInternalValue","React","_format","format","date","originalValueAsDate","parse","formattedValue","isDisabledDay","disabledDays","isMatch","handleInputBlur","event","persist","valueAsDate","parseFromCustomString","target","getMonth","getFullYear","detail","handleInputChange","handleChange","setInputValueByRef","current","handleKeyDown","onKeyDown","key","dispatchEvent","Event","bubbles","inputProps","autoComplete","invalid","type","calendarProps","input"],"mappings":"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"}
1
+ {"version":3,"file":"useDatepicker.js","sources":["../../../../../../../src/components/Datepicker/useDatepicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { isMatch } from 'react-day-picker';\nimport { parseFromCustomString, format, parse } from '../../utils/date';\nimport { useLocalization } from '../Provider/Localization';\nimport { setInputValueByRef } from '../../utils/input';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { DatepickerProps } from './Datepicker';\nimport { CalendarProps } from '../Calendar/Calendar';\nimport { InputProps as BaseInputProps } from '../Input/Input';\n\ntype InputProps = BaseInputProps & { ref: React.RefObject<HTMLInputElement> };\ntype useDatepicker = React.HTMLAttributes<HTMLDivElement> & {\n calendar: CalendarProps;\n input: InputProps;\n};\n\nexport const useDatepicker = (\n { defaultValue: _, calendar, onBlur, onChange, value, ...props }: DatepickerProps,\n ref: React.Ref<HTMLInputElement>\n): useDatepicker => {\n const inputRef = useMergedRef<HTMLInputElement>(ref);\n const { formatting } = useLocalization();\n const [internalValue, setInternalValue] = React.useState(format(value, formatting.date) ?? '');\n const originalValueAsDate = parse(value);\n\n // update internal value if it changed 'externally'\n React.useEffect(() => {\n const formattedValue = format(value, formatting.date);\n\n if (formattedValue !== internalValue) {\n setInternalValue(formattedValue ?? '');\n }\n }, [value]);\n\n const isDisabledDay = React.useMemo(() => {\n if (originalValueAsDate && calendar?.disabledDays) {\n return isMatch(originalValueAsDate, calendar?.disabledDays); // can happen if you type a disabled date in input.\n }\n\n return false;\n }, [originalValueAsDate]);\n\n // event handlers\n const handleInputBlur = (event: React.FocusEvent<HTMLInputElement>): void => {\n event.persist();\n\n const valueAsDate = parseFromCustomString(\n event.target.value,\n 'dd.mm.yy',\n originalValueAsDate?.getMonth(),\n originalValueAsDate?.getFullYear()\n );\n const formattedValue = valueAsDate ? format(valueAsDate) || '' : '';\n\n event.target.value = formattedValue;\n\n if (onChange) {\n (event as any).detail = valueAsDate;\n onChange(event);\n } else {\n // update the internal value to use the formatted date\n setInternalValue(formattedValue);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n setInternalValue(event.target.value);\n };\n\n const handleChange = (date: Date) => {\n setInputValueByRef(inputRef.current, format(date, formatting.date), 'focusout');\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (props.onKeyDown) {\n props.onKeyDown(event);\n }\n\n if (event.key === 'Enter') {\n event.target.dispatchEvent(new Event('focusout', { bubbles: true }));\n }\n };\n\n const inputProps: InputProps = {\n ...props,\n autoComplete: 'off',\n invalid: props.invalid || isDisabledDay,\n onBlur: handleInputBlur,\n onChange: handleInputChange,\n onKeyDown: handleKeyDown,\n ref: inputRef,\n type: 'text',\n value: internalValue,\n };\n\n const calendarProps: CalendarProps = {\n ...calendar,\n onChange: handleChange,\n value: originalValueAsDate,\n };\n\n return {\n input: inputProps,\n calendar: calendarProps,\n };\n};\n"],"names":["useDatepicker","defaultValue","_","calendar","onBlur","onChange","value","props","ref","inputRef","useMergedRef","formatting","useLocalization","internalValue","setInternalValue","React","_format","format","date","originalValueAsDate","parse","formattedValue","isDisabledDay","disabledDays","isMatch","handleInputBlur","event","persist","valueAsDate","parseFromCustomString","target","getMonth","getFullYear","detail","handleInputChange","handleChange","setInputValueByRef","current","handleKeyDown","onKeyDown","key","dispatchEvent","Event","bubbles","inputProps","autoComplete","invalid","type","calendarProps","input"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { forwardRef, createElement, Fragment } from 'react';
1
+ import { forwardRef, createElement } from 'react';
2
2
  import cn from 'clsx';
3
3
  import { Backdrop } from '../../Backdrop/Backdrop.js';
4
4
  import { getDialogPositionClassnames, getDialogSizeClassnames } from '../util.js';
@@ -97,7 +97,7 @@ const Content = /*#__PURE__*/forwardRef(function DialogContent(props, ref) {
97
97
  }), /*#__PURE__*/createElement("div", {
98
98
  className: containerClassName,
99
99
  "data-taco": "dialog"
100
- }, /*#__PURE__*/createElement(Fragment, null, output, dialog.draggable && (/*#__PURE__*/createElement("div", Object.assign({}, dragHandleProps, {
100
+ }, output, dialog.draggable && (/*#__PURE__*/createElement("div", Object.assign({}, dragHandleProps, {
101
101
  role: "button",
102
102
  draggable: true,
103
103
  "aria-grabbed": dragging,
@@ -111,7 +111,7 @@ const Content = /*#__PURE__*/forwardRef(function DialogContent(props, ref) {
111
111
  "aria-label": texts.dialog.close,
112
112
  className: "absolute right-0 top-0 mr-2 mt-2 print:hidden",
113
113
  icon: "close"
114
- }))) : null)), dialog.elements.drawer, dialog.elements.extra))));
114
+ }))) : null), dialog.elements.drawer, dialog.elements.extra))));
115
115
  });
116
116
 
117
117
  export { Close, Content, Footer, Title };
@@ -1 +1 @@
1
- {"version":3,"file":"Content.js","sources":["../../../../../../../../src/components/Dialog/components/Content.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'clsx';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { useMergedRef } from '../../../hooks/useMergedRef';\nimport { useDraggable } from '../../../utils/hooks/useDraggable';\nimport { DialogContext, useCurrentDialog } from '../Context';\nimport { useLocalization } from '../../Provider/Localization';\nimport { IconButton } from '../../IconButton/IconButton';\nimport { Backdrop } from '../../Backdrop/Backdrop';\nimport { getDialogPositionClassnames, getDialogSizeClassnames } from '../util';\n\nexport type DialogContentDrawerRenderProps = DialogContext['drawer'];\n\nexport type DialogContentRenderProps = {\n close: () => void;\n drawer?: DialogContentDrawerRenderProps;\n};\n\nexport type DialogTitleProps = React.HTMLAttributes<HTMLHeadingElement>;\nexport const Title = React.forwardRef(function DialogTitle(props: DialogTitleProps, ref: React.Ref<HTMLHeadingElement>) {\n const className = cn('text-center', props.className);\n return <DialogPrimitive.Title {...props} className={className} ref={ref} />;\n});\n\nexport type DialogFooterProps = React.HTMLAttributes<HTMLDivElement>;\nexport const Footer = React.forwardRef(function DialogFooter(props: DialogFooterProps, ref: React.Ref<HTMLDivElement>) {\n const className = cn('mt-8 flex justify-end', props.className);\n return (\n <div {...props} className={className} ref={ref}>\n {props.children}\n </div>\n );\n});\n\nexport type DialogCloseProps = React.HTMLAttributes<HTMLButtonElement>;\n\nexport const Close = React.forwardRef(function DialogClose(props: DialogCloseProps, ref: React.Ref<HTMLButtonElement>) {\n const dialog = useCurrentDialog();\n\n return <DialogPrimitive.Close onClick={dialog.onClose} {...props} ref={ref} asChild />;\n});\n\nconst RenderPropWrapper = React.forwardRef(function RenderPropWrapper({ children, onClick, renderProps }: any, ref) {\n const close = () => {\n onClick(new CustomEvent('close'));\n };\n\n return children({ close, ref, ...renderProps });\n});\n\nexport type DialogContentProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & {\n /** An accessible label to be announced when the dialog is opened */\n 'aria-label': string;\n children: Omit<React.ReactNode, 'Function'> | ((props: DialogContentRenderProps) => JSX.Element);\n onOpenAutoFocus?: DialogPrimitive.DialogContentProps['onOpenAutoFocus'];\n onCloseAutoFocus?: DialogPrimitive.DialogContentProps['onCloseAutoFocus'];\n};\nexport const Content = React.forwardRef(function DialogContent(props: DialogContentProps, ref: React.Ref<HTMLDivElement>) {\n const dialog = useCurrentDialog();\n const internalRef = useMergedRef<HTMLDivElement>(ref);\n const { position, dragging, handleProps: dragHandleProps } = useDraggable(internalRef);\n const { texts } = useLocalization();\n\n const className = cn(\n 'relative bg-white animate-[fade-in_150ms] rounded print:!static',\n getDialogPositionClassnames(),\n getDialogSizeClassnames(dialog.size),\n 'print:w-full print:h-max print:m-0 print:overflow-visible'\n );\n\n const containerClassName = cn(\n 'bg-white p-6 rounded relative z-10 shadow print:p-0',\n // The `!fixed` property is crucial to ensure that when a draggable dialog is moved, the printed document still displays its content across the full page.\n 'print:overflow-visible print:h-max print:!transform-none print:!inset-0 print:!m-0',\n {\n 'rounded-b-none': !!dialog.elements.extra,\n },\n props.className\n );\n\n const handleEscapeKeyDown = (event: KeyboardEvent) => {\n if (!dialog.closeOnEscape) {\n event.preventDefault();\n } else if (dialog.onClose) {\n dialog.onClose();\n }\n };\n\n // the chosen behaviour in taco is that outside clicks do not close the dialog\n const handleInteractOutside = (event: any) => event.preventDefault();\n\n let output;\n\n if (typeof props.children === 'function') {\n output = (\n <Close>\n <RenderPropWrapper renderProps={{ drawer: dialog.drawer }}>{props.children}</RenderPropWrapper>\n </Close>\n );\n } else {\n output = props.children;\n }\n\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay asChild>\n <Backdrop>\n <DialogPrimitive.Content\n {...props}\n className={className}\n onEscapeKeyDown={handleEscapeKeyDown}\n onInteractOutside={handleInteractOutside}\n ref={internalRef}\n style={{\n ...props.style,\n left: dialog.draggable ? `${position.x}px` : undefined,\n top: dialog.draggable ? `${position.y}px` : undefined,\n }}>\n <div className={containerClassName} data-taco=\"dialog\">\n <>\n {output}\n {dialog.draggable && (\n <div\n {...dragHandleProps}\n role=\"button\"\n draggable\n aria-grabbed={dragging}\n aria-label={texts.dialog.drag}\n className=\"yt-dialog__drag absolute-center-x bg-grey-100 top-1.5 h-3 w-24 cursor-move rounded text-center print:hidden\"\n />\n )}\n {dialog.showCloseButton ? (\n <DialogPrimitive.Close onClick={dialog.onClose} asChild>\n <IconButton\n appearance=\"discrete\"\n aria-label={texts.dialog.close}\n className=\"absolute right-0 top-0 mr-2 mt-2 print:hidden\"\n icon=\"close\"\n />\n </DialogPrimitive.Close>\n ) : null}\n </>\n </div>\n {dialog.elements.drawer}\n {dialog.elements.extra}\n </DialogPrimitive.Content>\n </Backdrop>\n </DialogPrimitive.Overlay>\n </DialogPrimitive.Portal>\n );\n});\n"],"names":["Title","React","DialogTitle","props","ref","className","cn","DialogPrimitive","Footer","DialogFooter","children","Close","DialogClose","dialog","useCurrentDialog","onClick","onClose","asChild","RenderPropWrapper","renderProps","close","CustomEvent","Content","DialogContent","internalRef","useMergedRef","position","dragging","handleProps","dragHandleProps","useDraggable","texts","useLocalization","getDialogPositionClassnames","getDialogSizeClassnames","size","containerClassName","elements","extra","handleEscapeKeyDown","event","closeOnEscape","preventDefault","handleInteractOutside","output","drawer","Backdrop","onEscapeKeyDown","onInteractOutside","style","left","draggable","x","undefined","top","y","role","drag","showCloseButton","IconButton","appearance","icon"],"mappings":"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"}
1
+ {"version":3,"file":"Content.js","sources":["../../../../../../../../src/components/Dialog/components/Content.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'clsx';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { useMergedRef } from '../../../hooks/useMergedRef';\nimport { useDraggable } from '../../../utils/hooks/useDraggable';\nimport { DialogContext, useCurrentDialog } from '../Context';\nimport { useLocalization } from '../../Provider/Localization';\nimport { IconButton } from '../../IconButton/IconButton';\nimport { Backdrop } from '../../Backdrop/Backdrop';\nimport { getDialogPositionClassnames, getDialogSizeClassnames } from '../util';\n\nexport type DialogContentDrawerRenderProps = DialogContext['drawer'];\n\nexport type DialogContentRenderProps = {\n close: () => void;\n drawer?: DialogContentDrawerRenderProps;\n};\n\nexport type DialogTitleProps = React.HTMLAttributes<HTMLHeadingElement>;\nexport const Title = React.forwardRef(function DialogTitle(props: DialogTitleProps, ref: React.Ref<HTMLHeadingElement>) {\n const className = cn('text-center', props.className);\n return <DialogPrimitive.Title {...props} className={className} ref={ref} />;\n});\n\nexport type DialogFooterProps = React.HTMLAttributes<HTMLDivElement>;\nexport const Footer = React.forwardRef(function DialogFooter(props: DialogFooterProps, ref: React.Ref<HTMLDivElement>) {\n const className = cn('mt-8 flex justify-end', props.className);\n return (\n <div {...props} className={className} ref={ref}>\n {props.children}\n </div>\n );\n});\n\nexport type DialogCloseProps = React.HTMLAttributes<HTMLButtonElement>;\n\nexport const Close = React.forwardRef(function DialogClose(props: DialogCloseProps, ref: React.Ref<HTMLButtonElement>) {\n const dialog = useCurrentDialog();\n\n return <DialogPrimitive.Close onClick={dialog.onClose} {...props} ref={ref} asChild />;\n});\n\nconst RenderPropWrapper = React.forwardRef(function RenderPropWrapper({ children, onClick, renderProps }: any, ref) {\n const close = () => {\n onClick(new CustomEvent('close'));\n };\n\n return children({ close, ref, ...renderProps });\n});\n\nexport type DialogContentProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & {\n /** An accessible label to be announced when the dialog is opened */\n 'aria-label': string;\n children: Omit<React.ReactNode, 'Function'> | ((props: DialogContentRenderProps) => JSX.Element);\n onOpenAutoFocus?: DialogPrimitive.DialogContentProps['onOpenAutoFocus'];\n onCloseAutoFocus?: DialogPrimitive.DialogContentProps['onCloseAutoFocus'];\n};\nexport const Content = React.forwardRef(function DialogContent(props: DialogContentProps, ref: React.Ref<HTMLDivElement>) {\n const dialog = useCurrentDialog();\n const internalRef = useMergedRef<HTMLDivElement>(ref);\n const { position, dragging, handleProps: dragHandleProps } = useDraggable(internalRef);\n const { texts } = useLocalization();\n\n const className = cn(\n 'relative bg-white animate-[fade-in_150ms] rounded print:!static',\n getDialogPositionClassnames(),\n getDialogSizeClassnames(dialog.size),\n 'print:w-full print:h-max print:m-0 print:overflow-visible'\n );\n\n const containerClassName = cn(\n 'bg-white p-6 rounded relative z-10 shadow print:p-0',\n // The `!fixed` property is crucial to ensure that when a draggable dialog is moved, the printed document still displays its content across the full page.\n 'print:overflow-visible print:h-max print:!transform-none print:!inset-0 print:!m-0',\n {\n 'rounded-b-none': !!dialog.elements.extra,\n },\n props.className\n );\n\n const handleEscapeKeyDown = (event: KeyboardEvent) => {\n if (!dialog.closeOnEscape) {\n event.preventDefault();\n } else if (dialog.onClose) {\n dialog.onClose();\n }\n };\n\n // the chosen behaviour in taco is that outside clicks do not close the dialog\n const handleInteractOutside = event => event.preventDefault();\n\n let output;\n\n if (typeof props.children === 'function') {\n output = (\n <Close>\n <RenderPropWrapper renderProps={{ drawer: dialog.drawer }}>{props.children}</RenderPropWrapper>\n </Close>\n );\n } else {\n output = props.children;\n }\n\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay asChild>\n <Backdrop>\n <DialogPrimitive.Content\n {...props}\n className={className}\n onEscapeKeyDown={handleEscapeKeyDown}\n onInteractOutside={handleInteractOutside}\n ref={internalRef}\n style={{\n ...props.style,\n left: dialog.draggable ? `${position.x}px` : undefined,\n top: dialog.draggable ? `${position.y}px` : undefined,\n }}>\n <div className={containerClassName} data-taco=\"dialog\">\n {output}\n {dialog.draggable && (\n <div\n {...dragHandleProps}\n role=\"button\"\n draggable\n aria-grabbed={dragging}\n aria-label={texts.dialog.drag}\n className=\"yt-dialog__drag absolute-center-x bg-grey-100 top-1.5 h-3 w-24 cursor-move rounded text-center print:hidden\"\n />\n )}\n {dialog.showCloseButton ? (\n <DialogPrimitive.Close onClick={dialog.onClose} asChild>\n <IconButton\n appearance=\"discrete\"\n aria-label={texts.dialog.close}\n className=\"absolute right-0 top-0 mr-2 mt-2 print:hidden\"\n icon=\"close\"\n />\n </DialogPrimitive.Close>\n ) : null}\n </div>\n {dialog.elements.drawer}\n {dialog.elements.extra}\n </DialogPrimitive.Content>\n </Backdrop>\n </DialogPrimitive.Overlay>\n </DialogPrimitive.Portal>\n );\n});\n"],"names":["Title","React","DialogTitle","props","ref","className","cn","DialogPrimitive","Footer","DialogFooter","children","Close","DialogClose","dialog","useCurrentDialog","onClick","onClose","asChild","RenderPropWrapper","renderProps","close","CustomEvent","Content","DialogContent","internalRef","useMergedRef","position","dragging","handleProps","dragHandleProps","useDraggable","texts","useLocalization","getDialogPositionClassnames","getDialogSizeClassnames","size","containerClassName","elements","extra","handleEscapeKeyDown","event","closeOnEscape","preventDefault","handleInteractOutside","output","drawer","Backdrop","onEscapeKeyDown","onInteractOutside","style","left","draggable","x","undefined","top","y","role","drag","showCloseButton","IconButton","appearance","icon"],"mappings":"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"}
@@ -276,7 +276,7 @@ const DrawerContent = /*#__PURE__*/React__default.forwardRef(function Content(pr
276
276
  ref: contentRef,
277
277
  "data-taco": "drawer",
278
278
  className: containerClassName
279
- }, /*#__PURE__*/React__default.createElement(React__default.Fragment, null, output, /*#__PURE__*/React__default.createElement("div", Object.assign({
279
+ }, output, /*#__PURE__*/React__default.createElement("div", Object.assign({
280
280
  className: dragHandlerClassName
281
281
  }, dragHandleProps, {
282
282
  "data-testid": "resize-handler",
@@ -289,7 +289,7 @@ const DrawerContent = /*#__PURE__*/React__default.forwardRef(function Content(pr
289
289
  "aria-label": texts.drawer.close,
290
290
  className: "absolute right-0 top-0 mr-2 mt-4",
291
291
  icon: "close"
292
- }))) : null));
292
+ }))) : null);
293
293
  const styleProp = {
294
294
  ...style,
295
295
  ...{