@carto/ps-react-ui 4.3.9 → 4.4.0-chat-ui.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 (154) hide show
  1. package/dist/chat.js +798 -0
  2. package/dist/chat.js.map +1 -0
  3. package/dist/components.js +723 -711
  4. package/dist/components.js.map +1 -1
  5. package/dist/{lasso-tool-jl4YK02H.js → lasso-tool-BYbxrJ-7.js} +184 -190
  6. package/dist/lasso-tool-BYbxrJ-7.js.map +1 -0
  7. package/dist/{row-BKmVAUN5.js → row-DTCV0Ocm.js} +2 -2
  8. package/dist/row-DTCV0Ocm.js.map +1 -0
  9. package/dist/{series-D1pynfeh.js → series-CYNOu2Ju.js} +2 -2
  10. package/dist/{series-D1pynfeh.js.map → series-CYNOu2Ju.js.map} +1 -1
  11. package/dist/smart-tooltip-D4vwQpFf.js +37 -0
  12. package/dist/smart-tooltip-D4vwQpFf.js.map +1 -0
  13. package/dist/{styles-DrPyd0y5.js → styles-CAroD5Rc.js} +12 -12
  14. package/dist/styles-CAroD5Rc.js.map +1 -0
  15. package/dist/types/chat/bubbles/chat-error-message.d.ts +2 -0
  16. package/dist/types/chat/bubbles/chat-suggestion-button.d.ts +2 -0
  17. package/dist/types/chat/bubbles/chat-user-message.d.ts +2 -0
  18. package/dist/types/chat/bubbles/index.d.ts +4 -0
  19. package/dist/types/chat/const.d.ts +3 -0
  20. package/dist/types/chat/containers/chat-content.d.ts +2 -0
  21. package/dist/types/chat/containers/chat-footer.d.ts +2 -0
  22. package/dist/types/chat/containers/chat-header.d.ts +2 -0
  23. package/dist/types/chat/containers/chat-starter.d.ts +2 -0
  24. package/dist/types/chat/containers/index.d.ts +4 -0
  25. package/dist/types/chat/containers/styles.d.ts +101 -0
  26. package/dist/types/chat/feedback/chat-loader.d.ts +2 -0
  27. package/dist/types/chat/feedback/chat-rating-action.d.ts +2 -0
  28. package/dist/types/chat/feedback/chat-thinking.d.ts +2 -0
  29. package/dist/types/chat/feedback/chat-tools.d.ts +2 -0
  30. package/dist/types/chat/feedback/index.d.ts +5 -0
  31. package/dist/types/chat/feedback/styles.d.ts +65 -0
  32. package/dist/types/chat/index.d.ts +16 -0
  33. package/dist/types/chat/types.d.ts +99 -0
  34. package/dist/types/components/copy-button/copy-button.d.ts +2 -0
  35. package/dist/types/components/copy-button/types.d.ts +6 -0
  36. package/dist/types/components/index.d.ts +2 -0
  37. package/dist/types/widgets/_shared/chart-config/option-builders.d.ts +1 -1
  38. package/dist/types/widgets/category/config.d.ts +3 -10
  39. package/dist/types/widgets/range/config.d.ts +0 -4
  40. package/dist/types/widgets/spread/config.d.ts +0 -5
  41. package/dist/types/widgets/table/config.d.ts +1 -2
  42. package/dist/types/widgets/table/table-ui.d.ts +1 -1
  43. package/dist/types/widgets/wrapper/components/options.d.ts +1 -1
  44. package/dist/widgets/actions.js +614 -627
  45. package/dist/widgets/actions.js.map +1 -1
  46. package/dist/widgets/bar.js +49 -49
  47. package/dist/widgets/bar.js.map +1 -1
  48. package/dist/widgets/category.js +37 -36
  49. package/dist/widgets/category.js.map +1 -1
  50. package/dist/widgets/formula.js +14 -13
  51. package/dist/widgets/formula.js.map +1 -1
  52. package/dist/widgets/histogram.js +53 -52
  53. package/dist/widgets/histogram.js.map +1 -1
  54. package/dist/widgets/markdown.js +10 -9
  55. package/dist/widgets/markdown.js.map +1 -1
  56. package/dist/widgets/pie.js +16 -15
  57. package/dist/widgets/pie.js.map +1 -1
  58. package/dist/widgets/range.js +1 -1
  59. package/dist/widgets/range.js.map +1 -1
  60. package/dist/widgets/scatterplot.js +20 -19
  61. package/dist/widgets/scatterplot.js.map +1 -1
  62. package/dist/widgets/spread.js +60 -59
  63. package/dist/widgets/spread.js.map +1 -1
  64. package/dist/widgets/table.js +68 -67
  65. package/dist/widgets/table.js.map +1 -1
  66. package/dist/widgets/timeseries.js +26 -25
  67. package/dist/widgets/timeseries.js.map +1 -1
  68. package/dist/widgets/wrapper.js +153 -162
  69. package/dist/widgets/wrapper.js.map +1 -1
  70. package/package.json +7 -3
  71. package/src/chat/bubbles/chat-agent-message.test.tsx +30 -0
  72. package/src/chat/bubbles/chat-agent-message.tsx +11 -0
  73. package/src/chat/bubbles/chat-error-message.test.tsx +40 -0
  74. package/src/chat/bubbles/chat-error-message.tsx +47 -0
  75. package/src/chat/bubbles/chat-suggestion-button.test.tsx +24 -0
  76. package/src/chat/bubbles/chat-suggestion-button.tsx +27 -0
  77. package/src/chat/bubbles/chat-user-message.test.tsx +27 -0
  78. package/src/chat/bubbles/chat-user-message.tsx +27 -0
  79. package/src/chat/bubbles/index.ts +4 -0
  80. package/src/chat/bubbles/styles.ts +106 -0
  81. package/src/chat/const.ts +3 -0
  82. package/src/chat/containers/chat-content.test.tsx +15 -0
  83. package/src/chat/containers/chat-content.tsx +32 -0
  84. package/src/chat/containers/chat-footer.test.tsx +34 -0
  85. package/src/chat/containers/chat-footer.tsx +78 -0
  86. package/src/chat/containers/chat-header.test.tsx +28 -0
  87. package/src/chat/containers/chat-header.tsx +29 -0
  88. package/src/chat/containers/chat-starter.test.tsx +32 -0
  89. package/src/chat/containers/chat-starter.tsx +75 -0
  90. package/src/chat/containers/index.ts +4 -0
  91. package/src/chat/containers/styles.ts +107 -0
  92. package/src/chat/feedback/chat-actions-container.test.tsx +64 -0
  93. package/src/chat/feedback/chat-actions-container.tsx +7 -0
  94. package/src/chat/feedback/chat-loader.test.tsx +10 -0
  95. package/src/chat/feedback/chat-loader.tsx +31 -0
  96. package/src/chat/feedback/chat-rating-action.tsx +43 -0
  97. package/src/chat/feedback/chat-thinking.test.tsx +15 -0
  98. package/src/chat/feedback/chat-thinking.tsx +23 -0
  99. package/src/chat/feedback/chat-tools.test.tsx +23 -0
  100. package/src/chat/feedback/chat-tools.tsx +54 -0
  101. package/src/chat/feedback/index.ts +5 -0
  102. package/src/chat/feedback/styles.ts +80 -0
  103. package/src/chat/index.ts +45 -0
  104. package/src/chat/types.ts +124 -0
  105. package/src/components/basemaps/basemaps.tsx +3 -1
  106. package/src/components/copy-button/copy-button.test.tsx +41 -0
  107. package/src/components/copy-button/copy-button.tsx +31 -0
  108. package/src/components/copy-button/types.ts +10 -0
  109. package/src/components/geolocation-controls/geolocation-controls.tsx +10 -6
  110. package/src/components/index.ts +3 -0
  111. package/src/components/lasso-tool/lasso-tool-inline.tsx +6 -2
  112. package/src/components/lasso-tool/lasso-tool.tsx +9 -3
  113. package/src/components/list-data/list-data-skeleton.tsx +1 -1
  114. package/src/components/list-data/list-data.tsx +5 -3
  115. package/src/components/measurement-tools/measurement-tools.tsx +5 -1
  116. package/src/components/smart-tooltip/smart-tooltip.tsx +3 -1
  117. package/src/widgets/_shared/chart-config/option-builders.test.ts +2 -2
  118. package/src/widgets/_shared/chart-config/option-builders.ts +6 -4
  119. package/src/widgets/actions/download/download.test.tsx +6 -2
  120. package/src/widgets/actions/download/download.tsx +3 -1
  121. package/src/widgets/actions/fullscreen/fullscreen.tsx +8 -1
  122. package/src/widgets/actions/relative-data/relative-data.tsx +2 -6
  123. package/src/widgets/actions/searcher/searcher.tsx +0 -6
  124. package/src/widgets/bar/config.ts +8 -4
  125. package/src/widgets/bar/skeleton.tsx +1 -1
  126. package/src/widgets/category/components/category-row-multi.tsx +1 -1
  127. package/src/widgets/category/config.ts +1 -11
  128. package/src/widgets/formula/components/row.tsx +1 -1
  129. package/src/widgets/histogram/config.ts +7 -2
  130. package/src/widgets/histogram/skeleton.tsx +2 -2
  131. package/src/widgets/pie/skeleton.tsx +1 -1
  132. package/src/widgets/range/config.ts +0 -5
  133. package/src/widgets/scatterplot/skeleton.tsx +2 -2
  134. package/src/widgets/spread/config.ts +0 -6
  135. package/src/widgets/table/config.ts +1 -1
  136. package/src/widgets/table/table-ui.tsx +1 -1
  137. package/src/widgets/timeseries/skeleton.tsx +1 -1
  138. package/src/widgets/wrapper/components/actions.test.tsx +6 -2
  139. package/src/widgets/wrapper/components/actions.tsx +3 -1
  140. package/src/widgets/wrapper/components/options.test.tsx +12 -4
  141. package/src/widgets/wrapper/components/options.tsx +8 -3
  142. package/src/widgets/wrapper/wrapper-ui.tsx +5 -2
  143. package/src/widgets/wrapper/wrapper.tsx +2 -4
  144. package/dist/lasso-tool-jl4YK02H.js.map +0 -1
  145. package/dist/row-BKmVAUN5.js.map +0 -1
  146. package/dist/smart-tooltip-BEtBaIdz.js +0 -39
  147. package/dist/smart-tooltip-BEtBaIdz.js.map +0 -1
  148. package/dist/styles-DrPyd0y5.js.map +0 -1
  149. package/dist/types/widgets/actions/relative-data/style.d.ts +0 -8
  150. package/dist/types/widgets/actions/zoom-toggle/index.d.ts +0 -2
  151. package/dist/types/widgets/table/components/index.d.ts +0 -4
  152. package/src/widgets/actions/relative-data/style.ts +0 -9
  153. package/src/widgets/actions/zoom-toggle/index.ts +0 -2
  154. package/src/widgets/table/components/index.ts +0 -4
@@ -1,16 +1,17 @@
1
- import { I, S as W, P as D, a as P } from "../series-D1pynfeh.js";
1
+ import { I, S as W, P as D, a as P } from "../series-CYNOu2Ju.js";
2
2
  import { jsx as f, jsxs as k, Fragment as C } from "react/jsx-runtime";
3
3
  import { c as w } from "react/compiler-runtime";
4
4
  import { u as h } from "../widget-store-CzDt8oSK.js";
5
5
  import { useShallow as S } from "zustand/shallow";
6
- import { R, s as T } from "../row-BKmVAUN5.js";
6
+ import { R, s as T } from "../row-DTCV0Ocm.js";
7
7
  import { Box as F, Skeleton as $ } from "@mui/material";
8
8
  import "@mui/icons-material";
9
9
  import "react";
10
10
  import "react-markdown";
11
11
  import { d as y, a as v } from "../exports-Cr43OCul.js";
12
- import "../lasso-tool-jl4YK02H.js";
12
+ import "../lasso-tool-BYbxrJ-7.js";
13
13
  import "../cjs-D4KH3azB.js";
14
+ import "@carto/ps-utils";
14
15
  import "@dnd-kit/core";
15
16
  import "@dnd-kit/sortable";
16
17
  import "@dnd-kit/utilities";
@@ -41,7 +42,7 @@ function z(e) {
41
42
  let c;
42
43
  return t[15] !== o || t[16] !== s || t[17] !== d ? (c = /* @__PURE__ */ f(I, { TypographyProps: s, ...o, children: d }), t[15] = o, t[16] = s, t[17] = d, t[18] = c) : c = t[18], c;
43
44
  }
44
- function Z({
45
+ function tt({
45
46
  refUI: e
46
47
  }) {
47
48
  return [{
@@ -55,12 +56,12 @@ function Z({
55
56
  }
56
57
  }];
57
58
  }
58
- function tt() {
59
+ function et() {
59
60
  return {
60
61
  series: []
61
62
  };
62
63
  }
63
- function et(e) {
64
+ function it(e) {
64
65
  const t = w(8), i = b(e.id);
65
66
  let o;
66
67
  t[0] !== e.id ? (o = (l) => {
@@ -79,7 +80,7 @@ function et(e) {
79
80
  let n;
80
81
  return t[5] !== i || t[6] !== r ? (n = /* @__PURE__ */ f(F, { ref: i, children: r }), t[5] = i, t[6] = r, t[7] = n) : n = t[7], n;
81
82
  }
82
- function it() {
83
+ function ot() {
83
84
  const e = w(1);
84
85
  let t;
85
86
  return e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ f(F, { sx: T.row, "aria-label": "Formula skeleton", children: /* @__PURE__ */ f($, { width: 120, height: 32 }) }), e[0] = t) : t = e[0], t;
@@ -91,21 +92,21 @@ function V(e) {
91
92
  suffix: typeof e.suffix == "string" ? e.suffix : void 0
92
93
  };
93
94
  }
94
- function ot(e) {
95
+ function rt(e) {
95
96
  return e?.map(V);
96
97
  }
97
98
  export {
98
- it as FormulaSkeleton,
99
- et as FormulaUI,
99
+ ot as FormulaSkeleton,
100
+ it as FormulaUI,
100
101
  I as Item,
101
102
  D as Prefix,
102
103
  R as Row,
103
104
  W as Series,
104
105
  P as Suffix,
105
106
  z as Value,
106
- tt as formulaConfig,
107
- Z as formulaDownloadConfig,
107
+ et as formulaConfig,
108
+ tt as formulaDownloadConfig,
108
109
  V as sanitizeDataItem,
109
- ot as sanitizeDataItems
110
+ rt as sanitizeDataItems
110
111
  };
111
112
  //# sourceMappingURL=formula.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formula.js","sources":["../../src/widgets/formula/components/value.tsx","../../src/widgets/formula/config.ts","../../src/widgets/formula/formula-ui.tsx","../../src/widgets/formula/skeleton.tsx","../../src/widgets/formula/serializer.ts"],"sourcesContent":["import { type FormulaWidgetState, type ValueProps } from '../types'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { Item } from './item'\nimport { useShallow } from 'zustand/shallow'\n\nconst defaultFormatter = (value: number) => value.toString()\n\nexport function Value({ id, index = 0, ...props }: ValueProps) {\n const value = useWidgetStore(\n useShallow(\n (state) => state.getWidget<FormulaWidgetState>(id)?.data?.[index]?.value,\n ),\n )\n const color = useWidgetStore(\n useShallow(\n (state) => state.getWidget<FormulaWidgetState>(id)?.data?.[index]?.color,\n ),\n )\n const formatter =\n useWidgetStore(\n useShallow((state) => state.getWidget<FormulaWidgetState>(id)?.formatter),\n ) ?? defaultFormatter\n\n return (\n <Item TypographyProps={{ color }} {...props}>\n {formatter(value ?? 0)}\n </Item>\n )\n}\n","import { downloadToCSV, downloadToPNG } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type { FormulaDownloadConfig, FormulaWidgetConfig } from './types'\n\nexport function formulaDownloadConfig({\n refUI,\n}: ConfigProps): FormulaDownloadConfig {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const formulaData = [data?.map((item) => item.value) ?? []]\n return downloadToCSV.modifier(formulaData)\n },\n },\n ]\n}\n\nexport function formulaConfig(): FormulaWidgetConfig {\n return {\n series: [],\n }\n}\n","import type { FormulaUIProps } from './types'\nimport { Row } from './components/row'\nimport { Value } from './components/value'\nimport { Prefix } from './components/prefix'\nimport { Suffix } from './components/suffix'\nimport { Series } from './components/series'\nimport { useWidgetRef } from '../../hooks'\nimport { Box } from '@mui/material'\n\nexport function FormulaUI(props: FormulaUIProps) {\n const ref = useWidgetRef(props.id)\n\n return (\n <Box ref={ref}>\n <Row id={props.id}>\n {({ index }) => (\n <>\n <Series id={props.id} index={index} />\n <Prefix id={props.id} index={index} />\n <Value id={props.id} index={index} />\n <Suffix id={props.id} index={index} />\n </>\n )}\n </Row>\n </Box>\n )\n}\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function FormulaSkeleton() {\n return (\n <Box sx={styles.row} aria-label='Formula skeleton'>\n <Skeleton width={120} height={32} />\n </Box>\n )\n}\n","import type { DataItem } from './types'\n\n/**\n * Sanitizes DataItem by converting ReactNode prefix/suffix values to undefined.\n * This ensures only string values are stored in the widget state.\n *\n * @param item - The DataItem to sanitize\n * @returns A new DataItem with ReactNode prefix/suffix values converted to undefined\n */\nexport function sanitizeDataItem(item: DataItem): DataItem {\n return {\n ...item,\n prefix: typeof item.prefix === 'string' ? item.prefix : undefined,\n suffix: typeof item.suffix === 'string' ? item.suffix : undefined,\n }\n}\n\n/**\n * Sanitizes an array of DataItems by converting ReactNode prefix/suffix values to undefined.\n *\n * @param items - Array of DataItems to sanitize\n * @returns A new array with sanitized DataItems\n */\nexport function sanitizeDataItems(\n items: DataItem[] | undefined,\n): DataItem[] | undefined {\n return items?.map(sanitizeDataItem)\n}\n"],"names":["defaultFormatter","value","toString","Value","t0","$","_c","id","props","t1","index","undefined","t2","state","getWidget","data","useWidgetStore","useShallow","t3","state_0","color","formatter","state_1","t4","t5","t6","t7","Item","formulaDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","formulaData","map","item","formulaConfig","series","FormulaUI","ref","useWidgetRef","jsxs","Fragment","jsx","Series","Prefix","Suffix","Row","Box","FormulaSkeleton","Symbol","for","styles","row","Skeleton","sanitizeDataItem","prefix","suffix","sanitizeDataItems","items"],"mappings":"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"}
1
+ {"version":3,"file":"formula.js","sources":["../../src/widgets/formula/components/value.tsx","../../src/widgets/formula/config.ts","../../src/widgets/formula/formula-ui.tsx","../../src/widgets/formula/skeleton.tsx","../../src/widgets/formula/serializer.ts"],"sourcesContent":["import { type FormulaWidgetState, type ValueProps } from '../types'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { Item } from './item'\nimport { useShallow } from 'zustand/shallow'\n\nconst defaultFormatter = (value: number) => value.toString()\n\nexport function Value({ id, index = 0, ...props }: ValueProps) {\n const value = useWidgetStore(\n useShallow(\n (state) => state.getWidget<FormulaWidgetState>(id)?.data?.[index]?.value,\n ),\n )\n const color = useWidgetStore(\n useShallow(\n (state) => state.getWidget<FormulaWidgetState>(id)?.data?.[index]?.color,\n ),\n )\n const formatter =\n useWidgetStore(\n useShallow((state) => state.getWidget<FormulaWidgetState>(id)?.formatter),\n ) ?? defaultFormatter\n\n return (\n <Item TypographyProps={{ color }} {...props}>\n {formatter(value ?? 0)}\n </Item>\n )\n}\n","import { downloadToCSV, downloadToPNG } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type { FormulaDownloadConfig, FormulaWidgetConfig } from './types'\n\nexport function formulaDownloadConfig({\n refUI,\n}: ConfigProps): FormulaDownloadConfig {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const formulaData = [data?.map((item) => item.value) ?? []]\n return downloadToCSV.modifier(formulaData)\n },\n },\n ]\n}\n\nexport function formulaConfig(): FormulaWidgetConfig {\n return {\n series: [],\n }\n}\n","import type { FormulaUIProps } from './types'\nimport { Row } from './components/row'\nimport { Value } from './components/value'\nimport { Prefix } from './components/prefix'\nimport { Suffix } from './components/suffix'\nimport { Series } from './components/series'\nimport { useWidgetRef } from '../../hooks'\nimport { Box } from '@mui/material'\n\nexport function FormulaUI(props: FormulaUIProps) {\n const ref = useWidgetRef(props.id)\n\n return (\n <Box ref={ref}>\n <Row id={props.id}>\n {({ index }) => (\n <>\n <Series id={props.id} index={index} />\n <Prefix id={props.id} index={index} />\n <Value id={props.id} index={index} />\n <Suffix id={props.id} index={index} />\n </>\n )}\n </Row>\n </Box>\n )\n}\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function FormulaSkeleton() {\n return (\n <Box sx={styles.row} aria-label='Formula skeleton'>\n <Skeleton width={120} height={32} />\n </Box>\n )\n}\n","import type { DataItem } from './types'\n\n/**\n * Sanitizes DataItem by converting ReactNode prefix/suffix values to undefined.\n * This ensures only string values are stored in the widget state.\n *\n * @param item - The DataItem to sanitize\n * @returns A new DataItem with ReactNode prefix/suffix values converted to undefined\n */\nexport function sanitizeDataItem(item: DataItem): DataItem {\n return {\n ...item,\n prefix: typeof item.prefix === 'string' ? item.prefix : undefined,\n suffix: typeof item.suffix === 'string' ? item.suffix : undefined,\n }\n}\n\n/**\n * Sanitizes an array of DataItems by converting ReactNode prefix/suffix values to undefined.\n *\n * @param items - Array of DataItems to sanitize\n * @returns A new array with sanitized DataItems\n */\nexport function sanitizeDataItems(\n items: DataItem[] | undefined,\n): DataItem[] | undefined {\n return items?.map(sanitizeDataItem)\n}\n"],"names":["defaultFormatter","value","toString","Value","t0","$","_c","id","props","t1","index","undefined","t2","state","getWidget","data","useWidgetStore","useShallow","t3","state_0","color","formatter","state_1","t4","t5","t6","t7","Item","formulaDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","formulaData","map","item","formulaConfig","series","FormulaUI","ref","useWidgetRef","jsxs","Fragment","jsx","Series","Prefix","Suffix","Row","Box","FormulaSkeleton","Symbol","for","styles","row","Skeleton","sanitizeDataItem","prefix","suffix","sanitizeDataItems","items"],"mappings":"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"}
@@ -1,51 +1,52 @@
1
- import { jsx as r, jsxs as h } from "react/jsx-runtime";
2
- import { c as x } from "react/compiler-runtime";
1
+ import { jsx as r, jsxs as b } from "react/jsx-runtime";
2
+ import { c as w } from "react/compiler-runtime";
3
3
  import "react";
4
4
  import "echarts";
5
5
  import "../widget-store-CzDt8oSK.js";
6
6
  import "zustand/shallow";
7
- import { g as b } from "../options-D9wflre6.js";
8
- import { m as w } from "../utils-idmvq0Oa.js";
9
- import { f as _, c as S, a as k, n as L, b as C, d as v, e as I } from "../styles-DrPyd0y5.js";
10
- import { Box as p, Skeleton as f } from "@mui/material";
7
+ import { g as _ } from "../options-D9wflre6.js";
8
+ import { m as k } from "../utils-idmvq0Oa.js";
9
+ import { f as S, c as L, a as C, n as m, b as v, d as I, e as N } from "../styles-CAroD5Rc.js";
10
+ import { Box as c, Skeleton as u } from "@mui/material";
11
11
  import "@mui/icons-material";
12
12
  import "react-markdown";
13
- import { d as c, a as m } from "../exports-Cr43OCul.js";
14
- import "../lasso-tool-jl4YK02H.js";
13
+ import { d as f, a as g } from "../exports-Cr43OCul.js";
14
+ import "../lasso-tool-BYbxrJ-7.js";
15
15
  import "../cjs-D4KH3azB.js";
16
+ import "@carto/ps-utils";
16
17
  import "@dnd-kit/core";
17
18
  import "@dnd-kit/sortable";
18
19
  import "@dnd-kit/utilities";
19
- function ee({
20
+ function ne({
20
21
  refUI: t
21
22
  }) {
22
23
  return [{
23
- ...c,
24
- modifier: () => c.modifier(t)
24
+ ...f,
25
+ modifier: () => f.modifier(t)
25
26
  }, {
26
- ...m,
27
+ ...g,
27
28
  modifier: async (e) => {
28
- const n = _(e);
29
- return m.modifier(n);
29
+ const o = S(e);
30
+ return g.modifier(o);
30
31
  }
31
32
  }];
32
33
  }
33
- function te(t) {
34
+ function oe(t) {
34
35
  return {
35
36
  type: "histogram",
36
- option: w(b(t), N(t))
37
+ option: k(_(t), T(t))
37
38
  };
38
39
  }
39
- function N({
40
+ function T({
40
41
  data: t = [],
41
42
  theme: e,
42
- formatter: n
43
+ formatter: o
43
44
  }) {
44
45
  const i = (t?.length ?? 0) > 1;
45
- let a = 1;
46
+ let a = 0, s = 1;
46
47
  return {
47
- legend: v(i),
48
- grid: C(i, e),
48
+ legend: I(i),
49
+ grid: v(i, e),
49
50
  xAxis: {
50
51
  type: "category",
51
52
  axisLine: {
@@ -73,8 +74,8 @@ function N({
73
74
  },
74
75
  yAxis: {
75
76
  type: "value",
76
- min: 0,
77
- max: (o) => (a = o.max <= 0 ? 1 : L(o.max), a),
77
+ min: (n) => (a = n.min < 0 ? m(n.min) : 0, a),
78
+ max: (n) => (s = n.max <= 0 ? 1 : m(n.max), s),
78
79
  splitNumber: 1,
79
80
  axisLabel: {
80
81
  fontSize: e.typography.overlineDelicate.fontSize,
@@ -84,7 +85,7 @@ function N({
84
85
  showMaxLabel: !0,
85
86
  showMinLabel: !0,
86
87
  verticalAlign: "bottom",
87
- formatter: (o) => o !== a ? "" : n ? n(o) : String(o)
88
+ formatter: (n) => n !== s && n !== a || n === 0 ? "" : o ? o(n) : String(n)
88
89
  },
89
90
  axisLine: {
90
91
  show: !1
@@ -100,19 +101,19 @@ function N({
100
101
  }
101
102
  },
102
103
  tooltip: {
103
- position: k(e),
104
- formatter: S((o) => {
105
- const s = o.value, g = o.dimensionNames?.[o.encode?.y?.at(0) ?? 1], l = s[g ?? ""], u = typeof l == "number" && n ? n(l) : l ?? "", d = typeof o.marker == "string" ? o.marker : "", y = o.seriesName ? `${o.seriesName}: ` : "";
104
+ position: C(e),
105
+ formatter: L((n) => {
106
+ const l = n.value, d = n.dimensionNames?.[n.encode?.y?.at(0) ?? 1], p = l[d ?? ""], y = typeof p == "number" && o ? o(p) : p ?? "", h = typeof n.marker == "string" ? n.marker : "", x = n.seriesName ? `${n.seriesName}: ` : "";
106
107
  return {
107
- name: o.name ?? "",
108
- seriesName: y,
109
- marker: d,
110
- value: u
108
+ name: n.name ?? "",
109
+ seriesName: x,
110
+ marker: h,
111
+ value: y
111
112
  };
112
113
  })
113
114
  },
114
- series: t.map((o, s) => ({
115
- datasetIndex: s,
115
+ series: t.map((n, l) => ({
116
+ datasetIndex: l,
116
117
  type: "bar",
117
118
  barGap: "1%",
118
119
  // No gap between bars in histogram
@@ -124,36 +125,36 @@ function N({
124
125
  }))
125
126
  };
126
127
  }
127
- const T = {
128
+ const A = {
128
129
  skeleton: {
129
- graph: I.graph
130
+ graph: N.graph
130
131
  }
131
132
  };
132
- function oe() {
133
- const t = x(2);
133
+ function ie() {
134
+ const t = w(2);
134
135
  let e;
135
- t[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ r(p, { sx: {
136
+ t[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ r(c, { sx: {
136
137
  display: "flex",
137
138
  alignItems: "flex-end",
138
139
  justifyContent: "space-between",
139
- gap: M,
140
+ gap: $,
140
141
  height: F,
141
142
  width: "100%"
142
143
  }, children: Array(8).fill(0).map(D) }), t[0] = e) : e = t[0];
143
- let n;
144
- return t[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (n = /* @__PURE__ */ h(p, { sx: T.skeleton.graph.container, children: [
144
+ let o;
145
+ return t[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (o = /* @__PURE__ */ b(c, { sx: A.skeleton.graph.container, children: [
145
146
  e,
146
- /* @__PURE__ */ r(p, { sx: {
147
+ /* @__PURE__ */ r(c, { sx: {
147
148
  display: "flex",
148
149
  alignItems: "center",
149
150
  justifyContent: "space-between",
150
151
  width: "100%",
151
152
  mt: j
152
- }, children: Array(4).fill(0).map(A) })
153
- ] }), t[1] = n) : n = t[1], n;
153
+ }, children: Array(4).fill(0).map(M) })
154
+ ] }), t[1] = o) : o = t[1], o;
154
155
  }
155
- function A(t, e) {
156
- return /* @__PURE__ */ r(f, { width: 32, height: 8 }, e);
156
+ function M(t, e) {
157
+ return /* @__PURE__ */ r(u, { width: 32, height: 8 }, `skeleton-label-${e}`);
157
158
  }
158
159
  function j(t) {
159
160
  const {
@@ -163,10 +164,10 @@ function j(t) {
163
164
  }
164
165
  function D(t, e) {
165
166
  const i = `${[60, 80, 95, 85, 70, 55, 40, 30][e]}%`;
166
- return /* @__PURE__ */ r(f, { variant: "rectangular", sx: {
167
+ return /* @__PURE__ */ r(u, { variant: "rectangular", sx: {
167
168
  flex: 1,
168
169
  height: i
169
- } }, e);
170
+ } }, `skeleton-bar-${e}`);
170
171
  }
171
172
  function F(t) {
172
173
  const {
@@ -174,15 +175,15 @@ function F(t) {
174
175
  } = t;
175
176
  return e(30);
176
177
  }
177
- function M(t) {
178
+ function $(t) {
178
179
  const {
179
180
  spacing: e
180
181
  } = t;
181
182
  return e(0.5);
182
183
  }
183
184
  export {
184
- oe as HistogramSkeleton,
185
- te as histogramConfig,
186
- ee as histogramDownloadConfig
185
+ ie as HistogramSkeleton,
186
+ oe as histogramConfig,
187
+ ne as histogramDownloadConfig
187
188
  };
188
189
  //# sourceMappingURL=histogram.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"histogram.js","sources":["../../src/widgets/histogram/config.ts","../../src/widgets/histogram/style.ts","../../src/widgets/histogram/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type {\n HistogramConfig,\n HistogramWidgetConfig,\n HistogramWidgetData,\n} from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipPositioner,\n createTooltipFormatter,\n niceNum,\n} from '../_shared/chart-config'\nimport { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\n\nexport function histogramDownloadConfig({\n refUI,\n}: ConfigProps): DownloadItem<HistogramWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = flattenObjectArrayToCSV(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n}\nexport function histogramConfig(props: HistogramConfig): HistogramWidgetConfig {\n return {\n type: 'histogram',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n }\n}\nfunction getOption({\n data = [],\n theme,\n formatter,\n}: HistogramConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n\n let niceMax = 1\n\n return {\n legend: buildLegendConfig(hasLegend),\n grid: buildGridConfig(hasLegend, theme),\n xAxis: {\n type: 'category',\n axisLine: {\n show: false,\n },\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n showMinLabel: true,\n showMaxLabel: true,\n hideOverlap: true,\n margin: 0,\n padding: [\n parseInt(theme.spacing(0.5)),\n parseInt(theme.spacing(0.5)),\n 0,\n parseInt(theme.spacing(0.5)),\n ],\n color: theme.palette.black[60],\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n },\n yAxis: {\n type: 'value' as const,\n min: 0,\n max: (extent: { min: number; max: number }) => {\n niceMax = extent.max <= 0 ? 1 : niceNum(extent.max)\n return niceMax\n },\n splitNumber: 1,\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n margin: parseInt(theme.spacing(1)),\n show: true,\n showMaxLabel: true,\n showMinLabel: true,\n verticalAlign: 'bottom' as const,\n formatter: (value: number) => {\n if (value !== niceMax) return ''\n return formatter ? formatter(value) : String(value)\n },\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n },\n tooltip: {\n position: createTooltipPositioner(theme),\n formatter: createTooltipFormatter((item) => {\n const value = item.value as Record<string, string | number>\n const index = item.dimensionNames?.[item.encode?.y?.at(0) ?? 1]\n const _value = value[index ?? '']\n\n const formattedValue =\n typeof _value === 'number' && formatter\n ? formatter(_value)\n : (_value ?? '')\n\n const marker = typeof item.marker === 'string' ? item.marker : ''\n const seriesName = item.seriesName ? `${item.seriesName}: ` : ''\n const name = item.name ?? ''\n\n return { name, seriesName, marker, value: formattedValue }\n }),\n },\n series: data.map((_: unknown, index: number) => ({\n datasetIndex: index,\n type: 'bar',\n barGap: '1%', // No gap between bars in histogram\n barCategoryGap: '1%', // No gap between categories in histogram\n emphasis: {\n focus: 'series',\n },\n })),\n } as EchartOptionsProps\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { baseSkeletonStyles } from '../_shared/skeleton'\n\nexport const styles = {\n skeleton: {\n graph: baseSkeletonStyles.graph,\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function HistogramSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'flex-end',\n justifyContent: 'space-between',\n gap: ({ spacing }) => spacing(0.5),\n height: ({ spacing }) => spacing(30),\n width: '100%',\n }}\n >\n {Array(8)\n .fill(0)\n .map((_, i) => {\n // Create varying heights for histogram bars\n const heights = [60, 80, 95, 85, 70, 55, 40, 30]\n const height = `${heights[i]}%`\n return (\n <Skeleton\n key={i}\n variant='rectangular'\n sx={{\n flex: 1,\n height,\n }}\n />\n )\n })}\n </Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n mt: ({ spacing }) => spacing(1),\n }}\n >\n {Array(4)\n .fill(0)\n .map((_, i) => (\n <Skeleton key={i} width={32} height={8} />\n ))}\n </Box>\n </Box>\n )\n}\n"],"names":["histogramDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","data","rows","flattenObjectArrayToCSV","histogramConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","theme","formatter","hasLegend","length","niceMax","legend","buildLegendConfig","grid","buildGridConfig","xAxis","axisLine","show","axisLabel","fontSize","typography","overlineDelicate","fontFamily","showMinLabel","showMaxLabel","hideOverlap","margin","padding","parseInt","spacing","color","palette","black","axisTick","splitLine","lineStyle","yAxis","min","max","extent","niceNum","splitNumber","verticalAlign","value","String","tooltip","position","createTooltipPositioner","createTooltipFormatter","item","index","dimensionNames","encode","y","at","_value","formattedValue","marker","seriesName","name","series","map","_","datasetIndex","barGap","barCategoryGap","emphasis","focus","styles","skeleton","graph","baseSkeletonStyles","HistogramSkeleton","$","_c","t0","Symbol","for","jsx","Box","display","alignItems","justifyContent","gap","_temp","height","_temp2","width","Array","fill","_temp3","t1","container","mt","_temp4","_temp5","__0","i_0","Skeleton","spacing_1","i","flex","spacing_0"],"mappings":";;;;;;;;;;;;;;;;;;AAqBO,SAASA,GAAwB;AAAA,EACtCC,OAAAA;AACW,GAAwC;AACnD,SAAO,CACL;AAAA,IACE,GAAGC;AAAAA,IACHC,UAAUA,MAAMD,EAAcC,SAASF,CAAK;AAAA,EAAA,GAE9C;AAAA,IACE,GAAGG;AAAAA,IACHD,UAAU,OAAOE,MAAS;AACxB,YAAMC,IAAOC,EAAwBF,CAAI;AACzC,aAAOD,EAAcD,SAASG,CAAI;AAAA,IACpC;AAAA,EAAA,CACD;AAEL;AACO,SAASE,GAAgBC,GAA+C;AAC7E,SAAO;AAAA,IACLC,MAAM;AAAA,IACNC,QAAQC,EAAwBC,EAAiBJ,CAAK,GAAGK,EAAUL,CAAK,CAAC;AAAA,EAAA;AAE7E;AACA,SAASK,EAAU;AAAA,EACjBT,MAAAA,IAAO,CAAA;AAAA,EACPU,OAAAA;AAAAA,EACAC,WAAAA;AACe,GAAuB;AACtC,QAAMC,KAAaZ,GAAMa,UAAU,KAAK;AAExC,MAAIC,IAAU;AAEd,SAAO;AAAA,IACLC,QAAQC,EAAkBJ,CAAS;AAAA,IACnCK,MAAMC,EAAgBN,GAAWF,CAAK;AAAA,IACtCS,OAAO;AAAA,MACLd,MAAM;AAAA,MACNe,UAAU;AAAA,QACRC,MAAM;AAAA,MAAA;AAAA,MAERC,WAAW;AAAA,QACTC,UAAUb,EAAMc,WAAWC,iBAAiBF;AAAAA,QAC5CG,YAAYhB,EAAMc,WAAWC,iBAAiBC;AAAAA,QAC9CC,cAAc;AAAA,QACdC,cAAc;AAAA,QACdC,aAAa;AAAA,QACbC,QAAQ;AAAA,QACRC,SAAS,CACPC,SAAStB,EAAMuB,QAAQ,GAAG,CAAC,GAC3BD,SAAStB,EAAMuB,QAAQ,GAAG,CAAC,GAC3B,GACAD,SAAStB,EAAMuB,QAAQ,GAAG,CAAC,CAAC;AAAA,QAE9BC,OAAOxB,EAAMyB,QAAQC,MAAM,EAAE;AAAA,MAAA;AAAA,MAE/BC,UAAU;AAAA,QACRhB,MAAM;AAAA,MAAA;AAAA,MAERiB,WAAW;AAAA,QACTjB,MAAM;AAAA,QACNkB,WAAW;AAAA,UACTL,OAAOxB,EAAMyB,QAAQC,MAAM,CAAC;AAAA,QAAA;AAAA,MAC9B;AAAA,IACF;AAAA,IAEFI,OAAO;AAAA,MACLnC,MAAM;AAAA,MACNoC,KAAK;AAAA,MACLC,KAAKA,CAACC,OACJ7B,IAAU6B,EAAOD,OAAO,IAAI,IAAIE,EAAQD,EAAOD,GAAG,GAC3C5B;AAAAA,MAET+B,aAAa;AAAA,MACbvB,WAAW;AAAA,QACTC,UAAUb,EAAMc,WAAWC,iBAAiBF;AAAAA,QAC5CG,YAAYhB,EAAMc,WAAWC,iBAAiBC;AAAAA,QAC9CI,QAAQE,SAAStB,EAAMuB,QAAQ,CAAC,CAAC;AAAA,QACjCZ,MAAM;AAAA,QACNO,cAAc;AAAA,QACdD,cAAc;AAAA,QACdmB,eAAe;AAAA,QACfnC,WAAWA,CAACoC,MACNA,MAAUjC,IAAgB,KACvBH,IAAYA,EAAUoC,CAAK,IAAIC,OAAOD,CAAK;AAAA,MACpD;AAAA,MAEF3B,UAAU;AAAA,QACRC,MAAM;AAAA,MAAA;AAAA,MAERgB,UAAU;AAAA,QACRhB,MAAM;AAAA,MAAA;AAAA,MAERiB,WAAW;AAAA,QACTjB,MAAM;AAAA,QACNkB,WAAW;AAAA,UACTL,OAAOxB,EAAMyB,QAAQC,MAAM,CAAC;AAAA,QAAA;AAAA,MAC9B;AAAA,IACF;AAAA,IAEFa,SAAS;AAAA,MACPC,UAAUC,EAAwBzC,CAAK;AAAA,MACvCC,WAAWyC,EAAwBC,CAAAA,MAAS;AAC1C,cAAMN,IAAQM,EAAKN,OACbO,IAAQD,EAAKE,iBAAiBF,EAAKG,QAAQC,GAAGC,GAAG,CAAC,KAAK,CAAC,GACxDC,IAASZ,EAAMO,KAAS,EAAE,GAE1BM,IACJ,OAAOD,KAAW,YAAYhD,IAC1BA,EAAUgD,CAAM,IACfA,KAAU,IAEXE,IAAS,OAAOR,EAAKQ,UAAW,WAAWR,EAAKQ,SAAS,IACzDC,IAAaT,EAAKS,aAAa,GAAGT,EAAKS,UAAU,OAAO;AAG9D,eAAO;AAAA,UAAEC,MAFIV,EAAKU,QAAQ;AAAA,UAEXD,YAAAA;AAAAA,UAAYD,QAAAA;AAAAA,UAAQd,OAAOa;AAAAA,QAAAA;AAAAA,MAC5C,CAAC;AAAA,IAAA;AAAA,IAEHI,QAAQhE,EAAKiE,IAAI,CAACC,GAAYZ,OAAmB;AAAA,MAC/Ca,cAAcb;AAAAA,MACdjD,MAAM;AAAA,MACN+D,QAAQ;AAAA;AAAA,MACRC,gBAAgB;AAAA;AAAA,MAChBC,UAAU;AAAA,QACRC,OAAO;AAAA,MAAA;AAAA,IACT,EACA;AAAA,EAAA;AAEN;AClJO,MAAMC,IAAS;AAAA,EACpBC,UAAU;AAAA,IACRC,OAAOC,EAAmBD;AAAAA,EAAAA;AAE9B;ACJO,SAAAE,KAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA;AAAA,MAAAC;AAAA,EAAAF,EAAA,CAAA,MAAAG,uBAAAC,IAAA,2BAAA,KAGDF,IAAA,gBAAAG,EAACC,KACK,IAAA;AAAA,IAAAC,SACO;AAAA,IAAMC,YACH;AAAA,IAAUC,gBACN;AAAA,IAAeC,KAC1BC;AAAAA,IAA6BC,QAC1BC;AAAAA,IAA4BC,OAC7B;AAAA,EAAA,GAGRC,gBAAM,CAAC,EAACC,KACD,CAAC,EAAC5B,IACH6B,CAcJ,GACL,GAAMjB,OAAAE,KAAAA,IAAAF,EAAA,CAAA;AAAA,MAAAkB;AAAA,SAAAlB,EAAA,CAAA,MAAAG,uBAAAC,IAAA,2BAAA,KA5BRc,sBAACZ,GAAA,EAAQ,IAAAX,EAAMC,SAASC,MAAMsB,WAC5BjB,UAAAA;AAAAA,IAAAA;AAAAA,IA4BA,gBAAAG,EAACC,KACK,IAAA;AAAA,MAAAC,SACO;AAAA,MAAMC,YACH;AAAA,MAAQC,gBACJ;AAAA,MAAeK,OACxB;AAAA,MAAMM,IACTC;AAAAA,IAAAA,GAGLN,gBAAM,CAAC,EAACC,KACD,CAAC,EAAC5B,IACHkC,CAEJ,EAAA,CACL;AAAA,EAAA,GACF,GAAMtB,OAAAkB,KAAAA,IAAAlB,EAAA,CAAA,GA5CNkB;AA4CM;AA9CH,SAAAI,EAAAC,GAAAC,GAAA;AAAA,2BA2CMC,GAAA,EAAwB,WAAY,cAAC;AAAI;AA3C/C,SAAAJ,EAAAnB,GAAA;AAqCQ,QAAA;AAAA,IAAA9C,SAAAsE;AAAAA,EAAAA,IAAAxB;AAAW,SAAK9C,EAAQ,CAAC;AAAC;AArClC,SAAA6D,EAAA5B,GAAAsC,GAAA;AAkBK,QAAAf,IAAe,GADC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EACrBe,CAAC,CAAC;AAAG,SAE7B,gBAAAtB,EAACoB,GAAA,EAES,SAAA,eACJ,IAAA;AAAA,IAAAG,MACI;AAAA,IAAChB,QAAAA;AAAAA,EAAAA,KAHJe,CAKJ;AACD;AA3BT,SAAAd,EAAAX,GAAA;AASY,QAAA;AAAA,IAAA9C,SAAAyE;AAAAA,EAAAA,IAAA3B;AAAW,SAAK9C,EAAQ,EAAE;AAAC;AATvC,SAAAuD,EAAAT,GAAA;AAQS,QAAA;AAAA,IAAA9C,SAAAA;AAAAA,EAAAA,IAAA8C;AAAW,SAAK9C,EAAQ,GAAG;AAAC;"}
1
+ {"version":3,"file":"histogram.js","sources":["../../src/widgets/histogram/config.ts","../../src/widgets/histogram/style.ts","../../src/widgets/histogram/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type {\n HistogramConfig,\n HistogramWidgetConfig,\n HistogramWidgetData,\n} from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipPositioner,\n createTooltipFormatter,\n niceNum,\n} from '../_shared/chart-config'\nimport { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\n\nexport function histogramDownloadConfig({\n refUI,\n}: ConfigProps): DownloadItem<HistogramWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = flattenObjectArrayToCSV(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n}\nexport function histogramConfig(props: HistogramConfig): HistogramWidgetConfig {\n return {\n type: 'histogram',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n }\n}\nfunction getOption({\n data = [],\n theme,\n formatter,\n}: HistogramConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n\n let niceMin = 0\n let niceMax = 1\n\n return {\n legend: buildLegendConfig(hasLegend),\n grid: buildGridConfig(hasLegend, theme),\n xAxis: {\n type: 'category',\n axisLine: {\n show: false,\n },\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n showMinLabel: true,\n showMaxLabel: true,\n hideOverlap: true,\n margin: 0,\n padding: [\n parseInt(theme.spacing(0.5)),\n parseInt(theme.spacing(0.5)),\n 0,\n parseInt(theme.spacing(0.5)),\n ],\n color: theme.palette.black[60],\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n },\n yAxis: {\n type: 'value' as const,\n min: (extent: { min: number }) => {\n niceMin = extent.min < 0 ? niceNum(extent.min) : 0\n return niceMin\n },\n max: (extent: { min: number; max: number }) => {\n niceMax = extent.max <= 0 ? 1 : niceNum(extent.max)\n return niceMax\n },\n splitNumber: 1,\n axisLabel: {\n fontSize: theme.typography.overlineDelicate.fontSize,\n fontFamily: theme.typography.overlineDelicate.fontFamily,\n margin: parseInt(theme.spacing(1)),\n show: true,\n showMaxLabel: true,\n showMinLabel: true,\n verticalAlign: 'bottom' as const,\n formatter: (value: number) => {\n if (value !== niceMax && value !== niceMin) return ''\n if (value === 0) return ''\n return formatter ? formatter(value) : String(value)\n },\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n },\n tooltip: {\n position: createTooltipPositioner(theme),\n formatter: createTooltipFormatter((item) => {\n const value = item.value as Record<string, string | number>\n const index = item.dimensionNames?.[item.encode?.y?.at(0) ?? 1]\n const _value = value[index ?? '']\n\n const formattedValue =\n typeof _value === 'number' && formatter\n ? formatter(_value)\n : (_value ?? '')\n\n const marker = typeof item.marker === 'string' ? item.marker : ''\n const seriesName = item.seriesName ? `${item.seriesName}: ` : ''\n const name = item.name ?? ''\n\n return { name, seriesName, marker, value: formattedValue }\n }),\n },\n series: data.map((_: unknown, index: number) => ({\n datasetIndex: index,\n type: 'bar',\n barGap: '1%', // No gap between bars in histogram\n barCategoryGap: '1%', // No gap between categories in histogram\n emphasis: {\n focus: 'series',\n },\n })),\n } as EchartOptionsProps\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { baseSkeletonStyles } from '../_shared/skeleton'\n\nexport const styles = {\n skeleton: {\n graph: baseSkeletonStyles.graph,\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function HistogramSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'flex-end',\n justifyContent: 'space-between',\n gap: ({ spacing }) => spacing(0.5),\n height: ({ spacing }) => spacing(30),\n width: '100%',\n }}\n >\n {Array(8)\n .fill(0)\n .map((_, i) => {\n // Create varying heights for histogram bars\n const heights = [60, 80, 95, 85, 70, 55, 40, 30]\n const height = `${heights[i]}%`\n return (\n <Skeleton\n key={`skeleton-bar-${i}`}\n variant='rectangular'\n sx={{\n flex: 1,\n height,\n }}\n />\n )\n })}\n </Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n mt: ({ spacing }) => spacing(1),\n }}\n >\n {Array(4)\n .fill(0)\n .map((_, i) => (\n <Skeleton key={`skeleton-label-${i}`} width={32} height={8} />\n ))}\n </Box>\n </Box>\n )\n}\n"],"names":["histogramDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","data","rows","flattenObjectArrayToCSV","histogramConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","theme","formatter","hasLegend","length","niceMin","niceMax","legend","buildLegendConfig","grid","buildGridConfig","xAxis","axisLine","show","axisLabel","fontSize","typography","overlineDelicate","fontFamily","showMinLabel","showMaxLabel","hideOverlap","margin","padding","parseInt","spacing","color","palette","black","axisTick","splitLine","lineStyle","yAxis","min","extent","niceNum","max","splitNumber","verticalAlign","value","String","tooltip","position","createTooltipPositioner","createTooltipFormatter","item","index","dimensionNames","encode","y","at","_value","formattedValue","marker","seriesName","name","series","map","_","datasetIndex","barGap","barCategoryGap","emphasis","focus","styles","skeleton","graph","baseSkeletonStyles","HistogramSkeleton","$","_c","t0","Symbol","for","jsx","Box","display","alignItems","justifyContent","gap","_temp","height","_temp2","width","Array","fill","_temp3","t1","container","mt","_temp4","_temp5","__0","i_0","Skeleton","i","spacing_1","flex","spacing_0"],"mappings":"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"}
@@ -7,13 +7,14 @@ import S from "react-markdown";
7
7
  import "@mui/icons-material";
8
8
  import "react";
9
9
  import "html2canvas";
10
- import "../lasso-tool-jl4YK02H.js";
10
+ import "../lasso-tool-BYbxrJ-7.js";
11
11
  import "../cjs-D4KH3azB.js";
12
+ import "@carto/ps-utils";
12
13
  import "@dnd-kit/core";
13
14
  import "@dnd-kit/sortable";
14
15
  import "@dnd-kit/utilities";
15
16
  import { a as p } from "../exports-Cr43OCul.js";
16
- function P(t) {
17
+ function R(t) {
17
18
  const o = c(4), {
18
19
  id: r
19
20
  } = t;
@@ -85,7 +86,7 @@ function b(t) {
85
86
  let l;
86
87
  return o[2] !== r || o[3] !== n ? (l = /* @__PURE__ */ i(S, { components: n, children: r }), o[2] = r, o[3] = n, o[4] = l) : l = o[4], l;
87
88
  }
88
- function R() {
89
+ function U() {
89
90
  const t = c(3);
90
91
  let o;
91
92
  t[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (o = /* @__PURE__ */ i(s, { width: "80%", height: 24, sx: {
@@ -105,7 +106,7 @@ function R() {
105
106
  /* @__PURE__ */ i(s, { width: "75%", height: 20 })
106
107
  ] }), t[2] = e) : e = t[2], e;
107
108
  }
108
- function U() {
109
+ function V() {
109
110
  return [{
110
111
  ...p,
111
112
  modifier: async (t) => {
@@ -114,14 +115,14 @@ function U() {
114
115
  }
115
116
  }];
116
117
  }
117
- function V() {
118
+ function q() {
118
119
  return {};
119
120
  }
120
121
  export {
121
- P as Markdown,
122
- R as MarkdownSkeleton,
122
+ R as Markdown,
123
+ U as MarkdownSkeleton,
123
124
  b as MarkdownUI,
124
- V as markdownConfig,
125
- U as markdownDownloadConfig
125
+ q as markdownConfig,
126
+ V as markdownDownloadConfig
126
127
  };
127
128
  //# sourceMappingURL=markdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.js","sources":["../../src/widgets/markdown/markdown.tsx","../../src/widgets/markdown/style.ts","../../src/widgets/markdown/markdown-ui.tsx","../../src/widgets/markdown/skeleton.tsx","../../src/widgets/markdown/config.ts"],"sourcesContent":["import type { MarkdownUIProps } from './types'\nimport { useWidgetStore } from '../stores/widget-store'\nimport type { MarkdownWidgetData } from './types'\nimport { MarkdownUI } from '.'\nimport { useShallow } from 'zustand/shallow'\n\nexport function Markdown({ id }: MarkdownUIProps) {\n const content = useWidgetStore(\n useShallow(\n (state) =>\n (state.getWidget(id)?.data as MarkdownWidgetData | undefined)?.content,\n ),\n )\n\n if (!content) {\n return null\n }\n\n return <MarkdownUI>{content}</MarkdownUI>\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles: Record<string, SxProps<Theme>> = {\n container: {\n display: 'flex',\n flexDirection: 'column',\n gap: ({ spacing }) => spacing(2),\n },\n markdown: {\n overflow: 'hidden',\n typography: ({ typography }) => ({\n ...typography.body1,\n }),\n },\n li: {\n display: 'list-item',\n paddingTop: 0,\n paddingBottom: 0,\n },\n ul: {\n listStyleType: 'disc',\n paddingLeft: ({ spacing }) => spacing(2),\n },\n ol: {\n listStyleType: 'decimal',\n paddingLeft: ({ spacing }) => spacing(2),\n },\n}\n","import { Link, List, ListItem, Typography } from '@mui/material'\nimport ReactMarkdown, { type Components } from 'react-markdown'\nimport { styles } from '../markdown/style'\nimport type { MarkdownComponentProps } from './types'\n\nconst COMPONENTS: Components = {\n h1: ({ children }) => (\n <Typography variant='h4' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n h2: ({ children }) => (\n <Typography variant='h5' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n h3: ({ children }) => (\n <Typography variant='h6' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n p: ({ children }) => (\n <Typography paragraph color='inherit'>\n {children}\n </Typography>\n ),\n a: ({ children, href, target = '_blank', rel = 'noopener noreferrer' }) => (\n <Link href={href} target={target} rel={rel}>\n {children}\n </Link>\n ),\n ul: ({ children }) => <List sx={styles.ul}>{children}</List>,\n ol: ({ children }) => (\n <List component='ol' sx={styles.ol}>\n {children}\n </List>\n ),\n li: ({ children }) => <ListItem sx={styles.li}>{children}</ListItem>,\n}\n\nexport function MarkdownUI({ children, overrides }: MarkdownComponentProps) {\n return (\n <ReactMarkdown\n components={{\n ...COMPONENTS,\n ...overrides,\n }}\n >\n {children}\n </ReactMarkdown>\n )\n}\n","import { Box, Skeleton } from '@mui/material'\n\nexport function MarkdownSkeleton() {\n return (\n <Box aria-label='Markdown skeleton'>\n <Skeleton width='80%' height={24} sx={{ mb: 1 }} />\n <Skeleton width='90%' height={20} sx={{ mb: 0.5 }} />\n <Skeleton width='85%' height={20} sx={{ mb: 0.5 }} />\n <Skeleton width='75%' height={20} />\n </Box>\n )\n}\n","import { downloadToCSV, type DownloadItem } from '../actions'\nimport type { MarkdownWidgetConfig, MarkdownWidgetData } from './types'\n\nexport function markdownDownloadConfig(): DownloadItem<MarkdownWidgetData>[] {\n return [\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const content = data?.content ?? ''\n return downloadToCSV.modifier([['Content'], [content]])\n },\n },\n ]\n}\n\nexport function markdownConfig(): MarkdownWidgetConfig {\n return {}\n}\n"],"names":["Markdown","t0","$","_c","id","t1","state","getWidget","data","content","useWidgetStore","useShallow","t2","MarkdownUI","styles","li","display","paddingTop","paddingBottom","ul","listStyleType","paddingLeft","spacing","ol","COMPONENTS","h1","children","Typography","h2","h3","p","jsx","a","href","target","rel","Link","List","ListItem","overrides","ReactMarkdown","MarkdownSkeleton","Symbol","for","Skeleton","mb","jsxs","Box","markdownDownloadConfig","downloadToCSV","modifier","markdownConfig"],"mappings":"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"}
1
+ {"version":3,"file":"markdown.js","sources":["../../src/widgets/markdown/markdown.tsx","../../src/widgets/markdown/style.ts","../../src/widgets/markdown/markdown-ui.tsx","../../src/widgets/markdown/skeleton.tsx","../../src/widgets/markdown/config.ts"],"sourcesContent":["import type { MarkdownUIProps } from './types'\nimport { useWidgetStore } from '../stores/widget-store'\nimport type { MarkdownWidgetData } from './types'\nimport { MarkdownUI } from '.'\nimport { useShallow } from 'zustand/shallow'\n\nexport function Markdown({ id }: MarkdownUIProps) {\n const content = useWidgetStore(\n useShallow(\n (state) =>\n (state.getWidget(id)?.data as MarkdownWidgetData | undefined)?.content,\n ),\n )\n\n if (!content) {\n return null\n }\n\n return <MarkdownUI>{content}</MarkdownUI>\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles: Record<string, SxProps<Theme>> = {\n container: {\n display: 'flex',\n flexDirection: 'column',\n gap: ({ spacing }) => spacing(2),\n },\n markdown: {\n overflow: 'hidden',\n typography: ({ typography }) => ({\n ...typography.body1,\n }),\n },\n li: {\n display: 'list-item',\n paddingTop: 0,\n paddingBottom: 0,\n },\n ul: {\n listStyleType: 'disc',\n paddingLeft: ({ spacing }) => spacing(2),\n },\n ol: {\n listStyleType: 'decimal',\n paddingLeft: ({ spacing }) => spacing(2),\n },\n}\n","import { Link, List, ListItem, Typography } from '@mui/material'\nimport ReactMarkdown, { type Components } from 'react-markdown'\nimport { styles } from '../markdown/style'\nimport type { MarkdownComponentProps } from './types'\n\nconst COMPONENTS: Components = {\n h1: ({ children }) => (\n <Typography variant='h4' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n h2: ({ children }) => (\n <Typography variant='h5' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n h3: ({ children }) => (\n <Typography variant='h6' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n p: ({ children }) => (\n <Typography paragraph color='inherit'>\n {children}\n </Typography>\n ),\n a: ({ children, href, target = '_blank', rel = 'noopener noreferrer' }) => (\n <Link href={href} target={target} rel={rel}>\n {children}\n </Link>\n ),\n ul: ({ children }) => <List sx={styles.ul}>{children}</List>,\n ol: ({ children }) => (\n <List component='ol' sx={styles.ol}>\n {children}\n </List>\n ),\n li: ({ children }) => <ListItem sx={styles.li}>{children}</ListItem>,\n}\n\nexport function MarkdownUI({ children, overrides }: MarkdownComponentProps) {\n return (\n <ReactMarkdown\n components={{\n ...COMPONENTS,\n ...overrides,\n }}\n >\n {children}\n </ReactMarkdown>\n )\n}\n","import { Box, Skeleton } from '@mui/material'\n\nexport function MarkdownSkeleton() {\n return (\n <Box aria-label='Markdown skeleton'>\n <Skeleton width='80%' height={24} sx={{ mb: 1 }} />\n <Skeleton width='90%' height={20} sx={{ mb: 0.5 }} />\n <Skeleton width='85%' height={20} sx={{ mb: 0.5 }} />\n <Skeleton width='75%' height={20} />\n </Box>\n )\n}\n","import { downloadToCSV, type DownloadItem } from '../actions'\nimport type { MarkdownWidgetConfig, MarkdownWidgetData } from './types'\n\nexport function markdownDownloadConfig(): DownloadItem<MarkdownWidgetData>[] {\n return [\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const content = data?.content ?? ''\n return downloadToCSV.modifier([['Content'], [content]])\n },\n },\n ]\n}\n\nexport function markdownConfig(): MarkdownWidgetConfig {\n return {}\n}\n"],"names":["Markdown","t0","$","_c","id","t1","state","getWidget","data","content","useWidgetStore","useShallow","t2","MarkdownUI","styles","li","display","paddingTop","paddingBottom","ul","listStyleType","paddingLeft","spacing","ol","COMPONENTS","h1","children","Typography","h2","h3","p","jsx","a","href","target","rel","Link","List","ListItem","overrides","ReactMarkdown","MarkdownSkeleton","Symbol","for","Skeleton","mb","jsxs","Box","markdownDownloadConfig","downloadToCSV","modifier","markdownConfig"],"mappings":"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"}
@@ -6,17 +6,18 @@ import "../widget-store-CzDt8oSK.js";
6
6
  import "zustand/shallow";
7
7
  import { g as w } from "../options-D9wflre6.js";
8
8
  import { m as I } from "../utils-idmvq0Oa.js";
9
- import { f as C, c as j, b as k, d as A, e as O } from "../styles-DrPyd0y5.js";
9
+ import { f as C, c as k, b as j, d as A, e as O } from "../styles-CAroD5Rc.js";
10
10
  import { Box as d, Skeleton as a } from "@mui/material";
11
11
  import "@mui/icons-material";
12
12
  import "react-markdown";
13
13
  import { d as y, a as x } from "../exports-Cr43OCul.js";
14
- import "../lasso-tool-jl4YK02H.js";
14
+ import "../lasso-tool-BYbxrJ-7.js";
15
15
  import "../cjs-D4KH3azB.js";
16
+ import "@carto/ps-utils";
16
17
  import "@dnd-kit/core";
17
18
  import "@dnd-kit/sortable";
18
19
  import "@dnd-kit/utilities";
19
- function te({
20
+ function oe({
20
21
  refUI: e
21
22
  }) {
22
23
  return [{
@@ -30,7 +31,7 @@ function te({
30
31
  }
31
32
  }];
32
33
  }
33
- function oe(e) {
34
+ function ne(e) {
34
35
  return {
35
36
  type: "pie",
36
37
  option: I(w(e), N(e))
@@ -72,7 +73,7 @@ function N({
72
73
  return {
73
74
  legend: A(r),
74
75
  grid: {
75
- ...k(r, t),
76
+ ...j(r, t),
76
77
  left: 0,
77
78
  top: 0,
78
79
  right: 0
@@ -85,7 +86,7 @@ function N({
85
86
  },
86
87
  tooltip: {
87
88
  trigger: "item",
88
- formatter: j((o) => {
89
+ formatter: k((o) => {
89
90
  const l = o.value && typeof o.value == "object" && !Array.isArray(o.value) ? Object.values(o.value) : [], c = o.encode?.value?.at(0), p = l[c ?? 0], u = typeof p == "number" && n ? n(p) : p ?? "", m = typeof o.marker == "string" ? o.marker : "", h = o.seriesName ? `${o.seriesName}: ` : "", b = o.name ?? "";
90
91
  return {
91
92
  name: h,
@@ -146,7 +147,7 @@ const T = {
146
147
  graph: O.graph
147
148
  }
148
149
  }, _ = 32, g = 294 - _, v = g - _;
149
- function ne() {
150
+ function re() {
150
151
  const e = S(5);
151
152
  let t, n;
152
153
  e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t = {
@@ -171,7 +172,7 @@ function ne() {
171
172
  flexDirection: "column",
172
173
  alignItems: "center",
173
174
  justifyContent: "center",
174
- gap: $
175
+ gap: z
175
176
  }, children: [
176
177
  /* @__PURE__ */ i(a, { height: 24, width: 72 }),
177
178
  /* @__PURE__ */ i(a, { height: 8, width: 48 })
@@ -183,7 +184,7 @@ function ne() {
183
184
  /* @__PURE__ */ i(d, { sx: {
184
185
  display: "flex",
185
186
  alignItems: "center",
186
- gap: z,
187
+ gap: $,
187
188
  height: W
188
189
  }, children: Array(2).fill(0).map(E) })
189
190
  ] }), e[4] = o) : o = e[4], o;
@@ -196,7 +197,7 @@ function E(e, t) {
196
197
  }, children: [
197
198
  /* @__PURE__ */ i(a, { variant: "circular", width: 8, height: 8 }),
198
199
  /* @__PURE__ */ i(a, { width: 48, height: 8 })
199
- ] }, t);
200
+ ] }, `skeleton-${t}`);
200
201
  }
201
202
  function V(e) {
202
203
  const {
@@ -210,21 +211,21 @@ function W(e) {
210
211
  } = e;
211
212
  return t(5);
212
213
  }
213
- function z(e) {
214
+ function $(e) {
214
215
  const {
215
216
  spacing: t
216
217
  } = e;
217
218
  return t(2);
218
219
  }
219
- function $(e) {
220
+ function z(e) {
220
221
  const {
221
222
  spacing: t
222
223
  } = e;
223
224
  return t(1);
224
225
  }
225
226
  export {
226
- ne as PieSkeleton,
227
- oe as pieConfig,
228
- te as pieDownloadConfig
227
+ re as PieSkeleton,
228
+ ne as pieConfig,
229
+ oe as pieDownloadConfig
229
230
  };
230
231
  //# sourceMappingURL=pie.js.map