@carto/ps-react-ui 4.2.6 → 4.3.0-widgets.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/dist/cjs-D9ro6BXv.js +85 -0
  2. package/dist/cjs-D9ro6BXv.js.map +1 -0
  3. package/dist/components.js +775 -1409
  4. package/dist/components.js.map +1 -1
  5. package/dist/const-BLV7Tvte.js +758 -0
  6. package/dist/const-BLV7Tvte.js.map +1 -0
  7. package/dist/download-KroQ0SWg.js +195 -0
  8. package/dist/download-KroQ0SWg.js.map +1 -0
  9. package/dist/echart-CqfROFu3.js +214 -0
  10. package/dist/echart-CqfROFu3.js.map +1 -0
  11. package/dist/formula-ui-ChzvMEOG.js +52 -0
  12. package/dist/formula-ui-ChzvMEOG.js.map +1 -0
  13. package/dist/lasso-tool-BC-rsMMW.js +552 -0
  14. package/dist/lasso-tool-BC-rsMMW.js.map +1 -0
  15. package/dist/markdown-n_tOtoiT.js +27 -0
  16. package/dist/markdown-n_tOtoiT.js.map +1 -0
  17. package/dist/markdown-ui-BBrzzd7Y.js +62 -0
  18. package/dist/markdown-ui-BBrzzd7Y.js.map +1 -0
  19. package/dist/note-DF-n70TX.js +101 -0
  20. package/dist/note-DF-n70TX.js.map +1 -0
  21. package/dist/range-ui-CtUX11Xm.js +146 -0
  22. package/dist/range-ui-CtUX11Xm.js.map +1 -0
  23. package/dist/root-L_WZnJY5.js +46 -0
  24. package/dist/root-L_WZnJY5.js.map +1 -0
  25. package/dist/row-DQaSxmDV.js +18 -0
  26. package/dist/row-DQaSxmDV.js.map +1 -0
  27. package/dist/series-CsyEPq-X.js +83 -0
  28. package/dist/series-CsyEPq-X.js.map +1 -0
  29. package/dist/skeleton-BSPcEvfq.js +27 -0
  30. package/dist/skeleton-BSPcEvfq.js.map +1 -0
  31. package/dist/skeleton-C4rOYTy-.js +78 -0
  32. package/dist/skeleton-C4rOYTy-.js.map +1 -0
  33. package/dist/skeleton-C9Jqc241.js +82 -0
  34. package/dist/skeleton-C9Jqc241.js.map +1 -0
  35. package/dist/skeleton-D-zHBBIw.js +64 -0
  36. package/dist/skeleton-D-zHBBIw.js.map +1 -0
  37. package/dist/skeleton-DMP-IwaJ.js +109 -0
  38. package/dist/skeleton-DMP-IwaJ.js.map +1 -0
  39. package/dist/skeleton-DRorqowB.js +22 -0
  40. package/dist/skeleton-DRorqowB.js.map +1 -0
  41. package/dist/skeleton-DsZhv-AH.js +89 -0
  42. package/dist/skeleton-DsZhv-AH.js.map +1 -0
  43. package/dist/skeleton-Dx3FCer0.js +13 -0
  44. package/dist/skeleton-Dx3FCer0.js.map +1 -0
  45. package/dist/skeleton-QVDdb1c2.js +21 -0
  46. package/dist/skeleton-QVDdb1c2.js.map +1 -0
  47. package/dist/skeleton-loader-DWC1-EAx.js +23 -0
  48. package/dist/skeleton-loader-DWC1-EAx.js.map +1 -0
  49. package/dist/smart-tooltip-BSlcAkBM.js +39 -0
  50. package/dist/smart-tooltip-BSlcAkBM.js.map +1 -0
  51. package/dist/spread-ui-BjzH190y.js +82 -0
  52. package/dist/spread-ui-BjzH190y.js.map +1 -0
  53. package/dist/style-BGeCtQkP.js +19 -0
  54. package/dist/style-BGeCtQkP.js.map +1 -0
  55. package/dist/style-C7v1iwqD.js +34 -0
  56. package/dist/style-C7v1iwqD.js.map +1 -0
  57. package/dist/styles-cohnxh9F.js +23 -0
  58. package/dist/styles-cohnxh9F.js.map +1 -0
  59. package/dist/types/widgets/_shared/chart-config/config-factory.d.ts +44 -0
  60. package/dist/types/widgets/_shared/chart-config/csv-modifiers.d.ts +19 -0
  61. package/dist/types/widgets/_shared/chart-config/index.d.ts +7 -0
  62. package/dist/types/widgets/_shared/chart-config/option-builders.d.ts +39 -0
  63. package/dist/types/widgets/_shared/skeleton/index.d.ts +4 -0
  64. package/dist/types/widgets/_shared/skeleton/styles.d.ts +19 -0
  65. package/dist/types/widgets/actions/download/download.d.ts +2 -0
  66. package/dist/types/widgets/actions/download/exports.d.ts +6 -0
  67. package/dist/types/widgets/actions/download/types.d.ts +29 -0
  68. package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +2 -0
  69. package/dist/types/widgets/actions/fullscreen/styles.d.ts +10 -0
  70. package/dist/types/widgets/actions/fullscreen/types.d.ts +21 -0
  71. package/dist/types/widgets/actions/index.d.ts +5 -0
  72. package/dist/types/widgets/bar/config.d.ts +4 -0
  73. package/dist/types/widgets/bar/index.d.ts +3 -0
  74. package/dist/types/widgets/bar/skeleton.d.ts +1 -0
  75. package/dist/types/widgets/bar/style.d.ts +37 -0
  76. package/dist/types/widgets/bar/types.d.ts +15 -0
  77. package/dist/types/widgets/config-loader/index.d.ts +2 -0
  78. package/dist/types/widgets/config-loader/types.d.ts +12 -0
  79. package/dist/types/widgets/config-loader/use-config.d.ts +5 -0
  80. package/dist/types/widgets/echart/const.d.ts +1 -0
  81. package/dist/types/widgets/echart/echart-ui.d.ts +2 -0
  82. package/dist/types/widgets/echart/echart.d.ts +2 -0
  83. package/dist/types/widgets/echart/index.d.ts +5 -0
  84. package/dist/types/widgets/echart/options.d.ts +3 -0
  85. package/dist/types/widgets/echart/types.d.ts +31 -0
  86. package/dist/types/widgets/echart/utils.d.ts +74 -0
  87. package/dist/types/widgets/formula/components/item.d.ts +2 -0
  88. package/dist/types/widgets/formula/components/prefix.d.ts +2 -0
  89. package/dist/types/widgets/formula/components/row.d.ts +2 -0
  90. package/dist/types/widgets/formula/components/series.d.ts +2 -0
  91. package/dist/types/widgets/formula/components/suffix.d.ts +2 -0
  92. package/dist/types/widgets/formula/components/value.d.ts +2 -0
  93. package/dist/types/widgets/formula/config.d.ts +2 -0
  94. package/dist/types/widgets/formula/formula-ui.d.ts +2 -0
  95. package/dist/types/widgets/formula/index.d.ts +10 -0
  96. package/dist/types/widgets/formula/serializer.d.ts +16 -0
  97. package/dist/types/widgets/formula/skeleton.d.ts +1 -0
  98. package/dist/types/widgets/formula/style.d.ts +21 -0
  99. package/dist/types/widgets/formula/types.d.ts +54 -0
  100. package/dist/types/widgets/histogram/config.d.ts +4 -0
  101. package/dist/types/widgets/histogram/index.d.ts +3 -0
  102. package/dist/types/widgets/histogram/skeleton.d.ts +1 -0
  103. package/dist/types/widgets/histogram/style.d.ts +15 -0
  104. package/dist/types/widgets/histogram/types.d.ts +15 -0
  105. package/dist/types/widgets/index.d.ts +4 -1
  106. package/dist/types/widgets/markdown/config.d.ts +2 -0
  107. package/dist/types/widgets/markdown/index.d.ts +5 -0
  108. package/dist/types/widgets/markdown/markdown-ui.d.ts +2 -0
  109. package/dist/types/widgets/markdown/markdown.d.ts +2 -0
  110. package/dist/types/widgets/markdown/skeleton.d.ts +1 -0
  111. package/dist/types/widgets/markdown/style.d.ts +2 -0
  112. package/dist/types/widgets/markdown/types.d.ts +28 -0
  113. package/dist/types/widgets/note/index.d.ts +2 -0
  114. package/dist/types/widgets/note/note.d.ts +2 -0
  115. package/dist/types/widgets/note/style.d.ts +17 -0
  116. package/dist/types/widgets/note/types.d.ts +7 -0
  117. package/dist/types/widgets/pie/config.d.ts +4 -0
  118. package/dist/types/widgets/pie/index.d.ts +3 -0
  119. package/dist/types/widgets/pie/skeleton.d.ts +1 -0
  120. package/dist/types/widgets/pie/style.d.ts +15 -0
  121. package/dist/types/widgets/pie/types.d.ts +15 -0
  122. package/dist/types/widgets/range/components/range-item.d.ts +2 -0
  123. package/dist/types/widgets/range/config.d.ts +2 -0
  124. package/dist/types/widgets/range/index.d.ts +5 -0
  125. package/dist/types/widgets/range/range-ui.d.ts +2 -0
  126. package/dist/types/widgets/range/serializer.d.ts +16 -0
  127. package/dist/types/widgets/range/serializer.test.d.ts +1 -0
  128. package/dist/types/widgets/range/skeleton.d.ts +1 -0
  129. package/dist/types/widgets/range/style.d.ts +2 -0
  130. package/dist/types/widgets/range/types.d.ts +44 -0
  131. package/dist/types/widgets/root/index.d.ts +2 -0
  132. package/dist/types/widgets/root/root.d.ts +2 -0
  133. package/dist/types/widgets/root/style.d.ts +8 -0
  134. package/dist/types/widgets/root/types.d.ts +15 -0
  135. package/dist/types/widgets/scatterplot/config.d.ts +4 -0
  136. package/dist/types/widgets/scatterplot/index.d.ts +3 -0
  137. package/dist/types/widgets/scatterplot/skeleton.d.ts +1 -0
  138. package/dist/types/widgets/scatterplot/style.d.ts +24 -0
  139. package/dist/types/widgets/scatterplot/types.d.ts +15 -0
  140. package/dist/types/widgets/skeleton-loader/index.d.ts +2 -0
  141. package/dist/types/widgets/skeleton-loader/skeleton-loader.d.ts +2 -0
  142. package/dist/types/widgets/skeleton-loader/types.d.ts +7 -0
  143. package/dist/types/widgets/spread/components/max-value.d.ts +2 -0
  144. package/dist/types/widgets/spread/components/min-value.d.ts +2 -0
  145. package/dist/types/widgets/spread/components/separator.d.ts +2 -0
  146. package/dist/types/widgets/spread/config.d.ts +2 -0
  147. package/dist/types/widgets/spread/index.d.ts +8 -0
  148. package/dist/types/widgets/spread/skeleton.d.ts +1 -0
  149. package/dist/types/widgets/spread/spread-ui.d.ts +2 -0
  150. package/dist/types/widgets/spread/style.d.ts +21 -0
  151. package/dist/types/widgets/spread/types.d.ts +52 -0
  152. package/dist/types/widgets/stores/types.d.ts +69 -0
  153. package/dist/types/widgets/stores/widget-store.d.ts +64 -0
  154. package/dist/types/widgets/stores/widget-store.test.d.ts +1 -0
  155. package/dist/types/widgets/timeseries/config.d.ts +4 -0
  156. package/dist/types/widgets/timeseries/index.d.ts +3 -0
  157. package/dist/types/widgets/timeseries/skeleton.d.ts +1 -0
  158. package/dist/types/widgets/timeseries/style.d.ts +38 -0
  159. package/dist/types/widgets/timeseries/types.d.ts +15 -0
  160. package/dist/types/widgets/widget/const.d.ts +2 -0
  161. package/dist/types/widgets/widget/types.d.ts +47 -0
  162. package/dist/types/widgets/widget/widget.d.ts +2 -0
  163. package/dist/types/widgets/wrapper/components/actions.d.ts +2 -0
  164. package/dist/types/widgets/wrapper/components/options.d.ts +2 -0
  165. package/dist/types/widgets/wrapper/components/title.d.ts +6 -0
  166. package/dist/types/widgets/wrapper/index.d.ts +6 -0
  167. package/dist/types/widgets/wrapper/styles.d.ts +83 -0
  168. package/dist/types/widgets/wrapper/types.d.ts +35 -0
  169. package/dist/types/widgets/wrapper/wrapper-ui.d.ts +2 -0
  170. package/dist/types/widgets/wrapper/wrapper.d.ts +2 -0
  171. package/dist/use-config-BYEOiIcu.js +43 -0
  172. package/dist/use-config-BYEOiIcu.js.map +1 -0
  173. package/dist/widget-store-yDO2ul8g.js +44 -0
  174. package/dist/widget-store-yDO2ul8g.js.map +1 -0
  175. package/dist/widgets/actions.js +9 -0
  176. package/dist/widgets/actions.js.map +1 -0
  177. package/dist/widgets/bar.js +7 -0
  178. package/dist/widgets/bar.js.map +1 -0
  179. package/dist/widgets/config-loader.js +5 -0
  180. package/dist/widgets/config-loader.js.map +1 -0
  181. package/dist/widgets/echart.js +11 -0
  182. package/dist/widgets/echart.js.map +1 -0
  183. package/dist/widgets/formula.js +27 -0
  184. package/dist/widgets/formula.js.map +1 -0
  185. package/dist/widgets/histogram.js +7 -0
  186. package/dist/widgets/histogram.js.map +1 -0
  187. package/dist/widgets/note.js +5 -0
  188. package/dist/widgets/note.js.map +1 -0
  189. package/dist/widgets/pie.js +7 -0
  190. package/dist/widgets/pie.js.map +1 -0
  191. package/dist/widgets/range.js +19 -0
  192. package/dist/widgets/range.js.map +1 -0
  193. package/dist/widgets/root.js +5 -0
  194. package/dist/widgets/root.js.map +1 -0
  195. package/dist/widgets/scatterplot.js +7 -0
  196. package/dist/widgets/scatterplot.js.map +1 -0
  197. package/dist/widgets/skeleton-loader.js +5 -0
  198. package/dist/widgets/skeleton-loader.js.map +1 -0
  199. package/dist/widgets/spread.js +21 -0
  200. package/dist/widgets/spread.js.map +1 -0
  201. package/dist/widgets/timeseries.js +7 -0
  202. package/dist/widgets/timeseries.js.map +1 -0
  203. package/dist/widgets/wrapper.js +9 -0
  204. package/dist/widgets/wrapper.js.map +1 -0
  205. package/dist/widgets.js +85 -1
  206. package/dist/widgets.js.map +1 -1
  207. package/dist/wrapper-57csMybC.js +265 -0
  208. package/dist/wrapper-57csMybC.js.map +1 -0
  209. package/package.json +73 -3
@@ -0,0 +1,24 @@
1
+ import { Theme } from '@mui/material';
2
+ export declare const styles: {
3
+ skeleton: {
4
+ graph: {
5
+ container: {
6
+ position: "relative";
7
+ display: "flex";
8
+ alignItems: "center";
9
+ justifyContent: "space-between";
10
+ flexDirection: "column";
11
+ gap: ({ spacing }: Theme) => string;
12
+ height: ({ spacing }: Theme) => string;
13
+ };
14
+ };
15
+ legend: {
16
+ display: "flex";
17
+ alignItems: "center";
18
+ gap: ({ spacing }: Theme) => string;
19
+ height: ({ spacing }: Theme) => string;
20
+ position: "absolute";
21
+ bottom: number;
22
+ };
23
+ };
24
+ };
@@ -0,0 +1,15 @@
1
+ import { BaseWidgetProps } from '../widget/types';
2
+ import { BaseConfig } from '../config-loader';
3
+ import { EchartWidgetConfig, EchartWidgetState } from '../echart';
4
+ export interface ScatterplotProps extends BaseWidgetProps<ScatterplotWidgetConfig> {
5
+ type: 'scatterplot';
6
+ data: ScatterplotWidgetData | undefined;
7
+ }
8
+ export type ScatterplotWidgetData = [number, number][][];
9
+ export type ScatterplotWidgetState = EchartWidgetState;
10
+ export type ScatterplotWidgetConfig = ScatterplotConfig & EchartWidgetConfig<ScatterplotWidgetData> & {
11
+ type: ScatterplotProps['type'];
12
+ };
13
+ export interface ScatterplotConfig extends Omit<BaseConfig, 'data'> {
14
+ data?: ScatterplotWidgetData;
15
+ }
@@ -0,0 +1,2 @@
1
+ export { SkeletonLoader } from './skeleton-loader';
2
+ export type { SkeletonLoaderProps } from './types';
@@ -0,0 +1,2 @@
1
+ import { SkeletonLoaderProps } from './types';
2
+ export declare function SkeletonLoader({ id, children, Skeleton, }: SkeletonLoaderProps): string | number | bigint | boolean | Iterable<import('react').ReactNode> | Promise<string | number | bigint | boolean | import('react').ReactPortal | import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | Iterable<import('react').ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
@@ -0,0 +1,7 @@
1
+ import { ElementType, ReactNode } from 'react';
2
+ import { WidgetState } from '../stores/types';
3
+ export interface SkeletonLoaderProps {
4
+ id: WidgetState['id'];
5
+ Skeleton: ElementType | null;
6
+ children: ReactNode;
7
+ }
@@ -0,0 +1,2 @@
1
+ import { ValueProps } from '../types';
2
+ export declare function MaxValue({ id, index, ...props }: ValueProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { ValueProps } from '../types';
2
+ export declare function MinValue({ id, index, ...props }: ValueProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { ItemProps } from '../../formula/types';
2
+ export declare function Separator(props: Omit<ItemProps, 'children'>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { SpreadConfig, SpreadWidgetConfig } from './types';
2
+ export declare function spreadConfig({ refUI, data, ...props }: SpreadConfig): SpreadWidgetConfig;
@@ -0,0 +1,8 @@
1
+ export { SpreadUI } from './spread-ui';
2
+ export { SpreadSkeleton } from './skeleton';
3
+ export { MinValue } from './components/min-value';
4
+ export { MaxValue } from './components/max-value';
5
+ export { Separator } from './components/separator';
6
+ export { Item, Row, Prefix, Suffix, Series } from '../formula';
7
+ export type { RowProps, ValueProps, SpreadWidgetState, ItemProps, SpreadDataItem, SpreadUIProps, } from './types';
8
+ export type { SeriesConfig } from '../formula/types';
@@ -0,0 +1 @@
1
+ export declare function SpreadSkeleton(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { SpreadUIProps } from './types';
2
+ export declare function SpreadUI(props: SpreadUIProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,21 @@
1
+ import { Theme } from '@mui/material';
2
+ export declare const styles: {
3
+ root: {
4
+ display: "flex";
5
+ flexDirection: "column";
6
+ gap: (theme: Theme) => string;
7
+ };
8
+ item: {
9
+ '&[data-disabled="true"]': {
10
+ color: (theme: Theme) => string;
11
+ };
12
+ };
13
+ row: {
14
+ display: "flex";
15
+ alignItems: "center";
16
+ gap: (theme: Theme) => string;
17
+ '& + &': {
18
+ marginTop: (theme: Theme) => string;
19
+ };
20
+ };
21
+ };
@@ -0,0 +1,52 @@
1
+ import { TypographyProps } from '@mui/material';
2
+ import { ReactNode } from 'react';
3
+ import { BaseWidgetState, WidgetsStoreProps } from '../stores/types';
4
+ import { DownloadState } from '../actions';
5
+ import { DownloadConfigProps } from '../actions/download/types';
6
+ import { WrapperState } from '../wrapper/types';
7
+ import { BaseWidgetProps } from '../widget/types';
8
+ import { BaseConfig } from '../config-loader';
9
+ import { SeriesConfig } from '../formula/types';
10
+ export interface SpreadProps extends BaseWidgetProps<SpreadWidgetConfig> {
11
+ type: 'spread';
12
+ data: SpreadWidgetData | undefined;
13
+ }
14
+ export interface SpreadUIProps {
15
+ id: WidgetsStoreProps['id'];
16
+ }
17
+ export interface SpreadDataItem {
18
+ min: number;
19
+ max: number;
20
+ prefix?: string | ReactNode;
21
+ suffix?: string | ReactNode;
22
+ color?: string;
23
+ }
24
+ export interface RowProps {
25
+ id: WidgetsStoreProps['id'];
26
+ children: ReactNode | ((props: {
27
+ index: number;
28
+ }) => ReactNode);
29
+ }
30
+ export interface ValueProps extends Omit<ItemProps, 'children'> {
31
+ id: WidgetsStoreProps['id'];
32
+ index?: number;
33
+ }
34
+ export interface ItemProps {
35
+ children: ReactNode;
36
+ disabled?: boolean;
37
+ TypographyProps?: TypographyProps;
38
+ }
39
+ export type SpreadWidgetData = SpreadDataItem[];
40
+ export type SpreadWidgetState = BaseWidgetState<WrapperState<DownloadState<SpreadProps & {
41
+ formatter?: (value: number) => string;
42
+ series?: SeriesConfig[];
43
+ }, SpreadWidgetData>>>;
44
+ export type SpreadWidgetConfig = BaseConfig & DownloadConfigProps<SpreadWidgetData> & {
45
+ type: SpreadProps['type'];
46
+ formatter?: SpreadWidgetState['formatter'];
47
+ series?: SeriesConfig[];
48
+ };
49
+ export interface SpreadConfig extends Omit<BaseConfig, 'data'> {
50
+ data?: SpreadWidgetData;
51
+ series?: SeriesConfig[];
52
+ }
@@ -0,0 +1,69 @@
1
+ import { RefObject } from 'react';
2
+ export interface WidgetsStoreProps {
3
+ /** Unique identifier for the widget */
4
+ id: string;
5
+ /** Type of widget */
6
+ type: string;
7
+ /** Widget title/label */
8
+ title?: string;
9
+ /** Loading state */
10
+ isLoading: boolean;
11
+ /** Fetching state (e.g., for async data) */
12
+ isFetching?: boolean;
13
+ /** Error message if any */
14
+ error?: string;
15
+ /** Whether widget is visible */
16
+ visible: boolean;
17
+ /** Widget data - flexible to accommodate different widget types */
18
+ data?: unknown;
19
+ /** Additional notes about the widget */
20
+ note?: string;
21
+ /** Reference to the widget ui instance */
22
+ refUI?: RefObject<HTMLElement | null>;
23
+ }
24
+ /**
25
+ * Base widget state interface
26
+ */
27
+ export type BaseWidgetState<T> = WidgetsStoreProps & T;
28
+ /**
29
+ * Union type for all widget states
30
+ */
31
+ export type WidgetState = BaseWidgetState<unknown>;
32
+ /**
33
+ * Widget store state
34
+ */
35
+ export interface WidgetStoreState {
36
+ /** Map of widget id to widget state */
37
+ widgets: Record<string, WidgetState>;
38
+ }
39
+ /**
40
+ * Widget store actions
41
+ */
42
+ export interface WidgetStoreActions {
43
+ /**
44
+ * Add or update a widget in the store
45
+ * @param id - Widget ID
46
+ * @param widget - Widget state properties to merge (accepts any object structure)
47
+ * @template T - Optional type parameter for backward compatibility (unused)
48
+ */
49
+ setWidget: <T extends WidgetState>(id: WidgetState['id'], widget: Partial<Omit<T, 'id'>>) => void;
50
+ /**
51
+ * Remove a widget from the store
52
+ * @param id - Widget ID to remove
53
+ */
54
+ removeWidget: (id: WidgetState['id']) => void;
55
+ /**
56
+ * Clear all widgets
57
+ */
58
+ clearWidgets: () => void;
59
+ /**
60
+ * Get widget by ID
61
+ * @param id - Widget ID
62
+ * @returns Widget state or undefined if not found
63
+ */
64
+ getWidget: <T extends WidgetState = WidgetState>(id: WidgetState['id']) => T | undefined;
65
+ }
66
+ /**
67
+ * Complete widget store interface
68
+ */
69
+ export type WidgetStore = WidgetStoreState & WidgetStoreActions;
@@ -0,0 +1,64 @@
1
+ import { WidgetState, WidgetStore } from './types';
2
+ /**
3
+ * Zustand store for managing widget state across the application.
4
+ *
5
+ * This store provides centralized state management for all widget UI components
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * // Import the store
10
+ * import { useWidgetStore } from '@carto/ps-react-ui/widgets'
11
+ *
12
+ * // Use in a component
13
+ * function MyWidget() {
14
+ * const setWidget = useWidgetStore((state) => state.setWidget)
15
+ * const widget = useWidgetStore((state) => state.widgets['my-widget'])
16
+ *
17
+ * useEffect(() => {
18
+ * setWidget({
19
+ * id: 'my-widget',
20
+ * type: 'formula',
21
+ * title: 'Total Sales',
22
+ * isLoading: false,
23
+ * visible: true,
24
+ * data: { value: 1000, prefix: '$' }
25
+ * })
26
+ * }, [setWidget])
27
+ *
28
+ * return <div>{widget?.data?.value}</div>
29
+ * }
30
+ * ```
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * // Get widgets by type
35
+ * const getWidgetsByType = useWidgetStore((state) => state.getWidgetsByType)
36
+ * const formulaWidgets = getWidgetsByType('formula')
37
+ * ```
38
+ */
39
+ export declare const useWidgetStore: import('zustand').UseBoundStore<Omit<import('zustand').StoreApi<WidgetStore>, "setState" | "devtools"> & {
40
+ setState(partial: WidgetStore | Partial<WidgetStore> | ((state: WidgetStore) => WidgetStore | Partial<WidgetStore>), replace?: false | undefined, action?: (string | {
41
+ [x: string]: unknown;
42
+ [x: number]: unknown;
43
+ [x: symbol]: unknown;
44
+ type: string;
45
+ }) | undefined): void;
46
+ setState(state: WidgetStore | ((state: WidgetStore) => WidgetStore), replace: true, action?: (string | {
47
+ [x: string]: unknown;
48
+ [x: number]: unknown;
49
+ [x: symbol]: unknown;
50
+ type: string;
51
+ }) | undefined): void;
52
+ devtools: {
53
+ cleanup: () => void;
54
+ };
55
+ }>;
56
+ /** Hook to get a specific widget by ID
57
+ * @param id - Widget ID
58
+ * @returns Widget state or undefined if not found
59
+ * @example
60
+ * ```tsx
61
+ * const widget = useWidget('widget-1')
62
+ * ```
63
+ */
64
+ export declare const useWidget: <T extends WidgetState>(id: string) => T | undefined;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import { TimeseriesConfig } from './types';
2
+ export declare const timeseriesConfig: (config: TimeseriesConfig & {
3
+ refUI?: import('react').Ref<HTMLElement | null>;
4
+ }) => import('../_shared/chart-config/config-factory').ChartWidgetConfigResult<import('../echart').EchartWidgetData, TimeseriesConfig, "timeseries">;
@@ -0,0 +1,3 @@
1
+ export type { TimeseriesProps, TimeseriesWidgetData, TimeseriesWidgetState, TimeseriesWidgetConfig, TimeseriesConfig, } from './types';
2
+ export { timeseriesConfig } from './config';
3
+ export { TimeseriesSkeleton } from './skeleton';
@@ -0,0 +1 @@
1
+ export declare function TimeseriesSkeleton(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,38 @@
1
+ import { Theme } from '@mui/material';
2
+ export declare const styles: {
3
+ skeleton: {
4
+ graph: {
5
+ container: {
6
+ position: "relative";
7
+ display: "flex";
8
+ alignItems: "center";
9
+ justifyContent: "space-between";
10
+ flexDirection: "column";
11
+ gap: ({ spacing }: Theme) => string;
12
+ height: ({ spacing }: Theme) => string;
13
+ };
14
+ grid: {
15
+ display: "flex";
16
+ justifyContent: "space-between";
17
+ flex: "1 1 auto";
18
+ alignItems: "flex-end";
19
+ width: "100%";
20
+ };
21
+ };
22
+ histogram: {
23
+ item: {
24
+ flex: number;
25
+ maxWidth: ({ spacing }: Theme) => string;
26
+ '& + &': {
27
+ marginLeft: string;
28
+ };
29
+ };
30
+ };
31
+ legend: {
32
+ display: "flex";
33
+ alignItems: "center";
34
+ gap: ({ spacing }: Theme) => string;
35
+ height: ({ spacing }: Theme) => string;
36
+ };
37
+ };
38
+ };
@@ -0,0 +1,15 @@
1
+ import { BaseWidgetProps } from '../widget/types';
2
+ import { BaseConfig } from '../config-loader';
3
+ import { EchartWidgetConfig, EchartWidgetData, EchartWidgetState } from '../echart';
4
+ export interface TimeseriesProps extends Omit<BaseWidgetProps<TimeseriesWidgetConfig>, 'data'> {
5
+ type: 'timeseries';
6
+ data: TimeseriesWidgetData | undefined;
7
+ }
8
+ export type TimeseriesWidgetData = EchartWidgetData;
9
+ export type TimeseriesWidgetState = EchartWidgetState;
10
+ export type TimeseriesWidgetConfig = TimeseriesConfig & EchartWidgetConfig<TimeseriesWidgetData> & {
11
+ type: TimeseriesProps['type'];
12
+ };
13
+ export interface TimeseriesConfig extends Omit<BaseConfig, 'data'> {
14
+ data?: TimeseriesWidgetData;
15
+ }
@@ -0,0 +1,2 @@
1
+ import { WidgetComponentConfig } from './types';
2
+ export declare const WIDGET_CONFIG_MAP: WidgetComponentConfig;
@@ -0,0 +1,47 @@
1
+ import { DownloadProps } from '../actions/download/types';
2
+ import { FullScreenProps } from '../actions/fullscreen/types';
3
+ import { WrapperUIProps, WrapperProps } from '../wrapper';
4
+ import { BaseConfig, ConfigProps } from '../config-loader';
5
+ import { FormulaProps, FormulaWidgetConfig } from '../formula/types';
6
+ import { RootProps } from '../root/types';
7
+ import { ComponentType } from 'react';
8
+ import { BarProps, BarWidgetConfig } from '../bar/types';
9
+ import { PieProps, PieWidgetConfig } from '../pie/types';
10
+ import { ScatterplotProps, ScatterplotWidgetConfig } from '../scatterplot/types';
11
+ import { TimeseriesProps, TimeseriesWidgetConfig } from '../timeseries/types';
12
+ import { HistogramProps, HistogramWidgetConfig } from '../histogram/types';
13
+ import { SpreadProps, SpreadWidgetConfig } from '../spread/types';
14
+ import { RangeProps, RangeWidgetConfig } from '../range/types';
15
+ import { MarkdownProps, MarkdownWidgetConfig } from '../markdown/types';
16
+ export interface BaseWidgetProps<C = unknown> extends Omit<RootProps, 'children'> {
17
+ children?: RootProps['children'];
18
+ config?: ConfigProps<C>['config'];
19
+ actions?: WrapperUIProps['actions'];
20
+ options?: WrapperUIProps['options'];
21
+ onChangeCollapsed?: WrapperProps['onChangeCollapsed'];
22
+ WrapperProps?: Pick<WrapperProps, 'sx' | 'Component' | 'labels'>;
23
+ ActionsProps?: {
24
+ download?: Pick<DownloadProps, 'Icon' | 'IconButtonProps'>;
25
+ fullScreen?: Pick<FullScreenProps, 'Icon'>;
26
+ };
27
+ }
28
+ export type WidgetProps = FormulaProps | BarProps | PieProps | ScatterplotProps | TimeseriesProps | HistogramProps | SpreadProps | RangeProps | MarkdownProps;
29
+ export type WidgetConfig = FormulaWidgetConfig | BarWidgetConfig | PieWidgetConfig | ScatterplotWidgetConfig | TimeseriesWidgetConfig | HistogramWidgetConfig | SpreadWidgetConfig | RangeWidgetConfig | MarkdownWidgetConfig;
30
+ export interface WidgetBaseComponentConfig<C = unknown> {
31
+ component: ComponentType<{
32
+ id: string;
33
+ }>;
34
+ skeleton: ComponentType;
35
+ defaultConfig: (props: BaseConfig) => C;
36
+ }
37
+ export interface WidgetComponentConfig {
38
+ formula: WidgetBaseComponentConfig<FormulaWidgetConfig>;
39
+ bar: WidgetBaseComponentConfig<BarWidgetConfig>;
40
+ pie: WidgetBaseComponentConfig<PieWidgetConfig>;
41
+ scatterplot: WidgetBaseComponentConfig<ScatterplotWidgetConfig>;
42
+ timeseries: WidgetBaseComponentConfig<TimeseriesWidgetConfig>;
43
+ histogram: WidgetBaseComponentConfig<HistogramWidgetConfig>;
44
+ spread: WidgetBaseComponentConfig<SpreadWidgetConfig>;
45
+ range: WidgetBaseComponentConfig<RangeWidgetConfig>;
46
+ markdown: WidgetBaseComponentConfig<MarkdownWidgetConfig>;
47
+ }
@@ -0,0 +1,2 @@
1
+ import { WidgetProps } from './types';
2
+ export declare function Widget(props: WidgetProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { WrapperActionsProps } from '../types';
2
+ export declare function Actions({ actions }: WrapperActionsProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { WrapperOptionsProps } from '../types';
2
+ export declare function Options({ labels, options }: WrapperOptionsProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { ReactNode } from 'react';
2
+ import { WrapperOptionsProps } from '../types';
3
+ export declare function Title({ label, children, }: {
4
+ children: ReactNode;
5
+ label?: NonNullable<WrapperOptionsProps['labels']>['title'];
6
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ export { Actions } from './components/actions';
2
+ export { Options } from './components/options';
3
+ export { Title } from './components/title';
4
+ export { WrapperWidget } from './wrapper';
5
+ export { WrapperUI } from './wrapper-ui';
6
+ export type { WrapperProps, WrapperUIProps, WrapperState } from './types';
@@ -0,0 +1,83 @@
1
+ import { Theme } from '@mui/material';
2
+ export declare const styles: {
3
+ root: {
4
+ '.Mui-disabled .MuiAccordionSummary-expandIconWrapper': {
5
+ display: "none";
6
+ };
7
+ '.widget-wrapper-actions > *': {
8
+ opacity: number;
9
+ transition: ({ transitions }: Theme) => string;
10
+ '@media (hover: hover)': {
11
+ opacity: number;
12
+ };
13
+ '&:has(.active)': {
14
+ opacity: number;
15
+ };
16
+ };
17
+ '&:hover': {
18
+ '& .widget-wrapper-actions > *': {
19
+ opacity: number;
20
+ };
21
+ };
22
+ '&.collapsed .widget-wrapper-actions > *': {
23
+ opacity: number;
24
+ pointerEvents: "none";
25
+ '&:has(.active)': {
26
+ opacity: number;
27
+ };
28
+ };
29
+ };
30
+ summary: {
31
+ minHeight: ({ spacing }: Theme) => string;
32
+ '& .MuiAccordionSummary-content': {
33
+ gap: ({ spacing }: Theme) => string;
34
+ paddingInlineEnd: ({ spacing }: Theme) => string;
35
+ };
36
+ };
37
+ loading: {
38
+ height: ({ spacing }: Theme) => string;
39
+ left: number;
40
+ position: "absolute";
41
+ top: number;
42
+ width: string;
43
+ zIndex: number;
44
+ };
45
+ title: {
46
+ wrapper: {
47
+ flexGrow: number;
48
+ flexShrink: number;
49
+ minWidth: number;
50
+ display: "flex";
51
+ justifyContent: "center";
52
+ flexDirection: "column";
53
+ };
54
+ container: {
55
+ display: "flex";
56
+ alignItems: "center";
57
+ flexGrow: number;
58
+ minHeight: ({ spacing }: Theme) => string;
59
+ };
60
+ text: {
61
+ wordBreak: "break-word";
62
+ overflow: "hidden";
63
+ display: "-webkit-box";
64
+ WebkitLineClamp: number;
65
+ WebkitBoxOrient: "vertical";
66
+ };
67
+ };
68
+ actions: {
69
+ display: "flex";
70
+ gap: ({ spacing }: Theme) => string;
71
+ alignItems: "center";
72
+ flexShrink: number;
73
+ justifyContent: "flex-end";
74
+ '& > div': {
75
+ pointerEvents: "auto";
76
+ };
77
+ };
78
+ options: {
79
+ trigger: {
80
+ pointerEvents: "auto";
81
+ };
82
+ };
83
+ };
@@ -0,0 +1,35 @@
1
+ import { ReactNode, SyntheticEvent } from 'react';
2
+ import { SxProps, Theme } from '@mui/material';
3
+ import { BaseWidgetState } from '../stores/types';
4
+ export interface WrapperProps extends Pick<WrapperUIProps, 'sx' | 'actions' | 'options' | 'labels' | 'children' | 'onChangeCollapsed'> {
5
+ id: WrapperState['id'];
6
+ Component?: ReactNode;
7
+ }
8
+ export type WrapperState<T = unknown> = BaseWidgetState<T & Pick<WrapperUIProps, 'collapsed' | 'disabled' | 'title'>>;
9
+ export interface WrapperUIProps extends WrapperActionsProps, Omit<WrapperOptionsProps, 'labels' | ''> {
10
+ children: ReactNode;
11
+ title: string;
12
+ disabled?: boolean;
13
+ collapsed?: boolean;
14
+ isLoading?: boolean;
15
+ sx?: SxProps<Theme>;
16
+ labels?: {
17
+ options?: WrapperOptionsProps['labels'];
18
+ };
19
+ onChangeCollapsed?: (event: SyntheticEvent<Element, Event>, collapsed: boolean) => void;
20
+ }
21
+ export interface WrapperActionsProps {
22
+ actions?: ReactNode[];
23
+ }
24
+ export interface WrapperOptionsProps {
25
+ labels?: {
26
+ title: string;
27
+ };
28
+ options?: WrapperOption[];
29
+ }
30
+ export interface WrapperOption {
31
+ label: string;
32
+ disabled?: boolean;
33
+ icon?: ReactNode;
34
+ onClick: () => void;
35
+ }
@@ -0,0 +1,2 @@
1
+ import { WrapperUIProps } from './types';
2
+ export declare function WrapperUI({ children, title, actions, disabled, isLoading, collapsed, sx, labels, options, onChangeCollapsed, }: WrapperUIProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { WrapperProps } from './types';
2
+ export declare function WrapperWidget({ id, sx, actions, options, labels, Component, children, onChangeCollapsed, }: WrapperProps): string | number | bigint | boolean | Iterable<import('react').ReactNode> | Promise<string | number | bigint | boolean | import('react').ReactPortal | import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | Iterable<import('react').ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,43 @@
1
+ import { c as W } from "react/compiler-runtime";
2
+ import { u as C } from "./widget-store-yDO2ul8g.js";
3
+ import "react";
4
+ import { useTheme as w } from "@mui/material";
5
+ function j(a) {
6
+ const e = W(16), {
7
+ id: t,
8
+ defaultConfig: c,
9
+ config: o
10
+ } = a;
11
+ let r;
12
+ e[0] !== t ? (r = (s) => s.widgets[t], e[0] = t, e[1] = r) : r = e[1];
13
+ const f = C(r), m = C(x), g = w();
14
+ f?.refUI, f?.data;
15
+ const p = f?.refUI, I = f?.data;
16
+ let i;
17
+ e[2] !== c || e[3] !== p || e[4] !== I || e[5] !== g ? (i = c({
18
+ refUI: p,
19
+ theme: g,
20
+ data: I
21
+ }), e[2] = c, e[3] = p, e[4] = I, e[5] = g, e[6] = i) : i = e[6];
22
+ const n = i;
23
+ let l;
24
+ e[7] !== o || e[8] !== n ? (l = o ? o(n) : n, e[7] = o, e[8] = n, e[9] = l) : l = e[9];
25
+ const U = l;
26
+ let d;
27
+ e[10] !== t || e[11] !== m ? (d = (s) => {
28
+ delete s.refUI, delete s.theme, delete s.data, m(t, s);
29
+ }, e[10] = t, e[11] = m, e[12] = d) : d = e[12];
30
+ const h = d;
31
+ let u;
32
+ return e[13] !== U || e[14] !== h ? (u = {
33
+ config: U,
34
+ run: h
35
+ }, e[13] = U, e[14] = h, e[15] = u) : u = e[15], u;
36
+ }
37
+ function x(a) {
38
+ return a.setWidget;
39
+ }
40
+ export {
41
+ j as u
42
+ };
43
+ //# sourceMappingURL=use-config-BYEOiIcu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-config-BYEOiIcu.js","sources":["../src/widgets/config-loader/use-config.ts"],"sourcesContent":["import { useWidgetStore } from '../stores/widget-store'\nimport type { BaseConfig, ConfigProps } from './types'\nimport { useCallback, useMemo } from 'react'\nimport { useTheme } from '@mui/material'\n\nexport function useConfig<T>({ id, defaultConfig, config }: ConfigProps<T>): {\n config: T\n run: (config: Partial<Omit<T & BaseConfig, 'id'>>) => void\n} {\n const widget = useWidgetStore((state) => state.widgets[id])\n const setWidget = useWidgetStore((state) => state.setWidget)\n\n const theme = useTheme()\n\n const defaultCfg = useMemo(() => {\n return defaultConfig({\n refUI: widget?.refUI,\n theme,\n data: widget?.data,\n })\n }, [defaultConfig, widget?.refUI, widget?.data, theme])\n\n const result = useMemo(() => {\n return config ? config(defaultCfg) : defaultCfg\n }, [config, defaultCfg])\n\n const run = useCallback(\n (config: Partial<Omit<T & BaseConfig, 'id'>>) => {\n delete config.refUI\n delete config.theme\n delete config.data\n setWidget(id, config)\n },\n [id, setWidget],\n )\n\n return {\n config: result,\n run,\n }\n}\n"],"names":["useConfig","t0","$","_c","id","defaultConfig","config","t1","state","widgets","widget","useWidgetStore","setWidget","_temp","theme","useTheme","refUI","data","t2","t3","t4","defaultCfg","t5","result","t6","config_0","run","t7","state_0"],"mappings":";;;;AAKO,SAAAA,EAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAsB;AAAA,IAAAC,IAAAA;AAAAA,IAAAC,eAAAA;AAAAA,IAAAC,QAAAA;AAAAA,EAAAA,IAAAL;AAA6C,MAAAM;AAAA,EAAAL,SAAAE,KAI1CG,IAAAC,CAAAA,MAAWA,EAAKC,QAASL,CAAE,GAACF,OAAAE,GAAAF,OAAAK,KAAAA,IAAAL,EAAA,CAAA;AAA1D,QAAAQ,IAAeC,EAAeJ,CAA4B,GAC1DK,IAAkBD,EAAeE,CAA0B,GAE3DC,IAAcC,EAAAA;AAQKL,EAAAA,GAAMM,OAASN,GAAMO;AAJ7B,QAAAC,IAAAR,GAAMM,OAEPG,IAAAT,GAAMO;AAAM,MAAAG;AAAA,EAAAlB,EAAA,CAAA,MAAAG,KAAAH,EAAA,CAAA,MAAAgB,KAAAhB,EAAA,CAAA,MAAAiB,KAAAjB,SAAAY,KAHbM,IAAAf,EAAc;AAAA,IAAAW,OACZE;AAAAA,IAAaJ,OAAAA;AAAAA,IAAAG,MAEdE;AAAAA,EAAAA,CACP,GAACjB,OAAAG,GAAAH,OAAAgB,GAAAhB,OAAAiB,GAAAjB,OAAAY,GAAAZ,OAAAkB,KAAAA,IAAAlB,EAAA,CAAA;AALJ,QAAAmB,IACED;AAKqD,MAAAE;AAAA,EAAApB,EAAA,CAAA,MAAAI,KAAAJ,SAAAmB,KAG9CC,IAAAhB,IAASA,EAAOe,CAAuB,IAAvCA,GAAwCnB,OAAAI,GAAAJ,OAAAmB,GAAAnB,OAAAoB,KAAAA,IAAApB,EAAA,CAAA;AADjD,QAAAqB,IACED;AACsB,MAAAE;AAAA,EAAAtB,EAAA,EAAA,MAAAE,KAAAF,UAAAU,KAGtBY,IAAAC,CAAAA,MAAA;AACE,WAAOnB,EAAMU,OACb,OAAOV,EAAMQ,OACb,OAAOR,EAAMW,MACbL,EAAUR,GAAIE,CAAM;AAAA,EAAC,GACtBJ,QAAAE,GAAAF,QAAAU,GAAAV,QAAAsB,KAAAA,IAAAtB,EAAA,EAAA;AANH,QAAAwB,IAAYF;AAQX,MAAAG;AAAA,SAAAzB,EAAA,EAAA,MAAAqB,KAAArB,UAAAwB,KAEMC,IAAA;AAAA,IAAArB,QACGiB;AAAAA,IAAMG,KAAAA;AAAAA,EAAAA,GAEfxB,QAAAqB,GAAArB,QAAAwB,GAAAxB,QAAAyB,KAAAA,IAAAzB,EAAA,EAAA,GAHMyB;AAGN;AAlCI,SAAAd,EAAAe,GAAA;AAAA,SAKuCpB,EAAKI;AAAU;"}