@carto/ps-react-ui 4.8.0 → 4.9.1

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 (129) hide show
  1. package/dist/{change-column-Cidl_M-4.js → change-column-B4IT0rh6.js} +2 -2
  2. package/dist/{change-column-Cidl_M-4.js.map → change-column-B4IT0rh6.js.map} +1 -1
  3. package/dist/components.js +4 -3
  4. package/dist/components.js.map +1 -1
  5. package/dist/{data-zoom-layout-BH0LPwSy.js → data-zoom-layout-0QSptXG_.js} +2 -2
  6. package/dist/{data-zoom-layout-BH0LPwSy.js.map → data-zoom-layout-0QSptXG_.js.map} +1 -1
  7. package/dist/{download-config-DNLkypdN.js → download-config-CzmjOT2T.js} +2 -2
  8. package/dist/{download-config-DNLkypdN.js.map → download-config-CzmjOT2T.js.map} +1 -1
  9. package/dist/{lasso-tool-BYbxrJ-7.js → lasso-tool-CDFj4zKY.js} +2 -1
  10. package/dist/lasso-tool-CDFj4zKY.js.map +1 -0
  11. package/dist/range-l4fNHLEg.js +213 -0
  12. package/dist/range-l4fNHLEg.js.map +1 -0
  13. package/dist/resolve-theme-color-BdojIw0K.js +47 -0
  14. package/dist/resolve-theme-color-BdojIw0K.js.map +1 -0
  15. package/dist/{spread-CTuIXZSM.js → spread-Y9R1f5dm.js} +2 -2
  16. package/dist/{spread-CTuIXZSM.js.map → spread-Y9R1f5dm.js.map} +1 -1
  17. package/dist/table-CQCAnDLb.js +388 -0
  18. package/dist/table-CQCAnDLb.js.map +1 -0
  19. package/dist/types/components/lasso-tool/styles.d.ts +1 -0
  20. package/dist/types/components/measurement-tools/styles.d.ts +1 -0
  21. package/dist/types/widgets/actions/brush-toggle/style.d.ts +1 -1
  22. package/dist/types/widgets/actions/shared/styles.d.ts +1 -1
  23. package/dist/types/widgets/actions/zoom-toggle/style.d.ts +1 -1
  24. package/dist/types/widgets/echart/types.d.ts +1 -1
  25. package/dist/types/widgets/toolbar-actions/styles.d.ts +1 -1
  26. package/dist/types/widgets-v2/actions/brush-toggle/style.d.ts +1 -1
  27. package/dist/types/widgets-v2/actions/change-column/style.d.ts +1 -1
  28. package/dist/types/widgets-v2/actions/fullscreen/style.d.ts +1 -1
  29. package/dist/types/widgets-v2/actions/lock-selection/style.d.ts +1 -1
  30. package/dist/types/widgets-v2/actions/relative-data/style.d.ts +1 -1
  31. package/dist/types/widgets-v2/actions/searcher/style.d.ts +1 -1
  32. package/dist/types/widgets-v2/actions/stack-toggle/style.d.ts +1 -1
  33. package/dist/types/widgets-v2/actions/zoom-toggle/style.d.ts +1 -1
  34. package/dist/types/widgets-v2/bar/types.d.ts +8 -3
  35. package/dist/types/widgets-v2/category/types.d.ts +8 -4
  36. package/dist/types/widgets-v2/formula/types.d.ts +10 -7
  37. package/dist/types/widgets-v2/histogram/types.d.ts +7 -3
  38. package/dist/types/widgets-v2/index.d.ts +1 -0
  39. package/dist/types/widgets-v2/pie/types.d.ts +10 -3
  40. package/dist/types/widgets-v2/range/range-ui.d.ts +12 -4
  41. package/dist/types/widgets-v2/range/range.d.ts +13 -8
  42. package/dist/types/widgets-v2/scatterplot/types.d.ts +7 -3
  43. package/dist/types/widgets-v2/table/style.d.ts +0 -4
  44. package/dist/types/widgets-v2/table/table-ui.d.ts +7 -1
  45. package/dist/types/widgets-v2/table/table.d.ts +1 -1
  46. package/dist/types/widgets-v2/table/types.d.ts +13 -2
  47. package/dist/types/widgets-v2/timeseries/types.d.ts +7 -3
  48. package/dist/types/widgets-v2/types.d.ts +25 -0
  49. package/dist/types/widgets-v2/utils/index.d.ts +1 -0
  50. package/dist/types/widgets-v2/utils/resolve-theme-color.d.ts +18 -0
  51. package/dist/types/widgets-v2/utils/resolve-theme-color.test.d.ts +1 -0
  52. package/dist/types/widgets-v2/wrapper/style.d.ts +1 -2
  53. package/dist/types/widgets-v2/wrapper/widget-wrapper.d.ts +6 -1
  54. package/dist/widgets/actions.js +1 -1
  55. package/dist/widgets/bar.js +1 -1
  56. package/dist/widgets/category.js +1 -1
  57. package/dist/widgets/formula.js +1 -1
  58. package/dist/widgets/histogram.js +1 -1
  59. package/dist/widgets/markdown.js +1 -1
  60. package/dist/widgets/pie.js +1 -1
  61. package/dist/widgets/scatterplot.js +1 -1
  62. package/dist/widgets/spread.js +1 -1
  63. package/dist/widgets/table.js +1 -1
  64. package/dist/widgets/timeseries.js +1 -1
  65. package/dist/widgets/utils.js +1 -1
  66. package/dist/widgets/wrapper.js +1 -1
  67. package/dist/widgets-v2/actions.js +1 -1
  68. package/dist/widgets-v2/bar.js +59 -56
  69. package/dist/widgets-v2/bar.js.map +1 -1
  70. package/dist/widgets-v2/category.js +1 -1
  71. package/dist/widgets-v2/formula.js +1 -1
  72. package/dist/widgets-v2/histogram.js +66 -63
  73. package/dist/widgets-v2/histogram.js.map +1 -1
  74. package/dist/widgets-v2/markdown.js +1 -1
  75. package/dist/widgets-v2/pie.js +101 -95
  76. package/dist/widgets-v2/pie.js.map +1 -1
  77. package/dist/widgets-v2/range.js +1 -1
  78. package/dist/widgets-v2/scatterplot.js +108 -102
  79. package/dist/widgets-v2/scatterplot.js.map +1 -1
  80. package/dist/widgets-v2/spread.js +2 -2
  81. package/dist/widgets-v2/table.js +3 -3
  82. package/dist/widgets-v2/timeseries.js +86 -80
  83. package/dist/widgets-v2/timeseries.js.map +1 -1
  84. package/dist/widgets-v2/utils.js +4 -3
  85. package/dist/widgets-v2.js +229 -229
  86. package/dist/widgets-v2.js.map +1 -1
  87. package/package.json +5 -3
  88. package/src/components/lasso-tool/styles.ts +1 -0
  89. package/src/components/measurement-tools/styles.ts +1 -0
  90. package/src/widgets/echart/types.ts +1 -1
  91. package/src/widgets-v2/bar/options.test.ts +19 -2
  92. package/src/widgets-v2/bar/options.ts +9 -3
  93. package/src/widgets-v2/bar/types.ts +8 -3
  94. package/src/widgets-v2/category/types.ts +9 -4
  95. package/src/widgets-v2/formula/types.ts +11 -7
  96. package/src/widgets-v2/histogram/options.test.ts +16 -2
  97. package/src/widgets-v2/histogram/options.ts +5 -4
  98. package/src/widgets-v2/histogram/types.ts +7 -3
  99. package/src/widgets-v2/index.ts +3 -0
  100. package/src/widgets-v2/pie/options.test.ts +20 -4
  101. package/src/widgets-v2/pie/options.ts +21 -17
  102. package/src/widgets-v2/pie/types.ts +10 -3
  103. package/src/widgets-v2/range/range-ui.test.tsx +8 -2
  104. package/src/widgets-v2/range/range-ui.tsx +81 -14
  105. package/src/widgets-v2/range/range.tsx +14 -8
  106. package/src/widgets-v2/scatterplot/options.test.ts +15 -3
  107. package/src/widgets-v2/scatterplot/options.ts +15 -11
  108. package/src/widgets-v2/scatterplot/types.ts +7 -3
  109. package/src/widgets-v2/table/style.ts +2 -5
  110. package/src/widgets-v2/table/table-ui.tsx +40 -7
  111. package/src/widgets-v2/table/table.tsx +6 -1
  112. package/src/widgets-v2/table/types.ts +13 -2
  113. package/src/widgets-v2/timeseries/options.test.ts +17 -2
  114. package/src/widgets-v2/timeseries/options.ts +10 -3
  115. package/src/widgets-v2/timeseries/types.ts +7 -3
  116. package/src/widgets-v2/types.ts +25 -0
  117. package/src/widgets-v2/utils/index.ts +1 -0
  118. package/src/widgets-v2/utils/resolve-theme-color.test.ts +43 -0
  119. package/src/widgets-v2/utils/resolve-theme-color.ts +34 -0
  120. package/src/widgets-v2/wrapper/style.ts +1 -2
  121. package/src/widgets-v2/wrapper/widget-wrapper.test.tsx +30 -0
  122. package/src/widgets-v2/wrapper/widget-wrapper.tsx +11 -1
  123. package/dist/lasso-tool-BYbxrJ-7.js.map +0 -1
  124. package/dist/merge-options-DCkkHZIf.js +0 -34
  125. package/dist/merge-options-DCkkHZIf.js.map +0 -1
  126. package/dist/range-DsqTjSpg.js +0 -186
  127. package/dist/range-DsqTjSpg.js.map +0 -1
  128. package/dist/table-HIpXuq4G.js +0 -390
  129. package/dist/table-HIpXuq4G.js.map +0 -1
@@ -6,7 +6,7 @@ import "zustand/shallow";
6
6
  import "@mui/icons-material";
7
7
  import "react";
8
8
  import { d as n, a as s } from "./exports-Cr43OCul.js";
9
- import "./lasso-tool-BYbxrJ-7.js";
9
+ import "./lasso-tool-CDFj4zKY.js";
10
10
  import "./cjs-D4KH3azB.js";
11
11
  import "@dnd-kit/core";
12
12
  import "@dnd-kit/sortable";
@@ -54,4 +54,4 @@ export {
54
54
  T as f,
55
55
  b as s
56
56
  };
57
- //# sourceMappingURL=download-config-DNLkypdN.js.map
57
+ //# sourceMappingURL=download-config-CzmjOT2T.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"download-config-DNLkypdN.js","sources":["../src/widgets/utils/chart-config/csv-modifiers.ts","../src/widgets/utils/chart-config/download-config.ts"],"sourcesContent":["/**\n * Shared CSV export modifiers for chart widgets\n */\n\n/**\n * Flattens object array data into CSV-ready rows.\n * Used by bar, pie, histogram, and timeseries widgets.\n *\n * @param data - Array of series, where each series is an array of data objects\n * @returns CSV rows with headers and values\n */\nexport function flattenObjectArrayToCSV<T extends Record<string, unknown>>(\n data: T[][],\n): string[][] {\n const rows: string[][] = []\n\n // Add headers from first data point if available\n if (data.length > 0 && (data[0]?.length ?? 0) > 0) {\n const firstDataPoint = data?.[0]?.[0] ?? {}\n const headers = Object.keys(firstDataPoint)\n rows.push(headers)\n }\n\n // Add data rows from all series\n data.forEach((series) => {\n series.forEach((dataPoint) => {\n const values = Object.values(dataPoint).map((v) => String(v))\n rows.push(values)\n })\n })\n\n return rows\n}\n\n/**\n * Creates CSV rows for scatterplot data.\n * Scatterplot uses array format [x, y] instead of objects.\n *\n * @param data - Array of series, where each series is an array of [x, y] tuples\n * @returns CSV rows with ['x', 'y'] headers\n */\nexport function scatterplotDataToCSV(data: number[][][]): string[][] {\n const rows: string[][] = []\n\n // Add headers\n rows.push(['x', 'y'])\n\n // Add data rows from all series\n data.forEach((series) => {\n series.forEach((dataPoint) => {\n rows.push([String(dataPoint[0]), String(dataPoint[1])])\n })\n })\n\n return rows\n}\n","import { downloadToCSV, downloadToPNG, type DownloadItem } from '../../actions'\nimport type { ConfigProps } from '../../loader/types'\n\nexport function createChartDownloadConfig<TData>(\n csvModifier: (data: TData) => string[][],\n) {\n return function ({ refUI }: ConfigProps): DownloadItem<TData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = csvModifier(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n }\n}\n"],"names":["flattenObjectArrayToCSV","data","rows","length","firstDataPoint","headers","Object","keys","push","forEach","series","dataPoint","values","map","v","String","scatterplotDataToCSV","createChartDownloadConfig","csvModifier","refUI","downloadToPNG","modifier","downloadToCSV"],"mappings":";;;;;;;;;;;;;;AAWO,SAASA,EACdC,GACY;AACZ,QAAMC,IAAmB,CAAA;AAGzB,MAAID,EAAKE,SAAS,MAAMF,EAAK,CAAC,GAAGE,UAAU,KAAK,GAAG;AACjD,UAAMC,IAAiBH,IAAO,CAAC,IAAI,CAAC,KAAK,CAAA,GACnCI,IAAUC,OAAOC,KAAKH,CAAc;AAC1CF,IAAAA,EAAKM,KAAKH,CAAO;AAAA,EACnB;AAGAJ,SAAAA,EAAKQ,QAASC,CAAAA,MAAW;AACvBA,IAAAA,EAAOD,QAASE,CAAAA,MAAc;AAC5B,YAAMC,IAASN,OAAOM,OAAOD,CAAS,EAAEE,IAAKC,CAAAA,MAAMC,OAAOD,CAAC,CAAC;AAC5DZ,MAAAA,EAAKM,KAAKI,CAAM;AAAA,IAClB,CAAC;AAAA,EACH,CAAC,GAEMV;AACT;AASO,SAASc,EAAqBf,GAAgC;AACnE,QAAMC,IAAmB,CAAA;AAGzBA,SAAAA,EAAKM,KAAK,CAAC,KAAK,GAAG,CAAC,GAGpBP,EAAKQ,QAASC,CAAAA,MAAW;AACvBA,IAAAA,EAAOD,QAASE,CAAAA,MAAc;AAC5BT,MAAAA,EAAKM,KAAK,CAACO,OAAOJ,EAAU,CAAC,CAAC,GAAGI,OAAOJ,EAAU,CAAC,CAAC,CAAC,CAAC;AAAA,IACxD,CAAC;AAAA,EACH,CAAC,GAEMT;AACT;ACpDO,SAASe,EACdC,GACA;AACA,SAAO,SAAU;AAAA,IAAEC,OAAAA;AAAAA,EAAAA,GAA6C;AAC9D,WAAO,CACL;AAAA,MACE,GAAGC;AAAAA,MACHC,UAAUA,MAAMD,EAAcC,SAASF,CAAK;AAAA,IAAA,GAE9C;AAAA,MACE,GAAGG;AAAAA,MACHD,UAAU,OAAOpB,MAAS;AACxB,cAAMC,IAAOgB,EAAYjB,CAAI;AAC7B,eAAOqB,EAAcD,SAASnB,CAAI;AAAA,MACpC;AAAA,IAAA,CACD;AAAA,EAEL;AACF;"}
1
+ {"version":3,"file":"download-config-CzmjOT2T.js","sources":["../src/widgets/utils/chart-config/csv-modifiers.ts","../src/widgets/utils/chart-config/download-config.ts"],"sourcesContent":["/**\n * Shared CSV export modifiers for chart widgets\n */\n\n/**\n * Flattens object array data into CSV-ready rows.\n * Used by bar, pie, histogram, and timeseries widgets.\n *\n * @param data - Array of series, where each series is an array of data objects\n * @returns CSV rows with headers and values\n */\nexport function flattenObjectArrayToCSV<T extends Record<string, unknown>>(\n data: T[][],\n): string[][] {\n const rows: string[][] = []\n\n // Add headers from first data point if available\n if (data.length > 0 && (data[0]?.length ?? 0) > 0) {\n const firstDataPoint = data?.[0]?.[0] ?? {}\n const headers = Object.keys(firstDataPoint)\n rows.push(headers)\n }\n\n // Add data rows from all series\n data.forEach((series) => {\n series.forEach((dataPoint) => {\n const values = Object.values(dataPoint).map((v) => String(v))\n rows.push(values)\n })\n })\n\n return rows\n}\n\n/**\n * Creates CSV rows for scatterplot data.\n * Scatterplot uses array format [x, y] instead of objects.\n *\n * @param data - Array of series, where each series is an array of [x, y] tuples\n * @returns CSV rows with ['x', 'y'] headers\n */\nexport function scatterplotDataToCSV(data: number[][][]): string[][] {\n const rows: string[][] = []\n\n // Add headers\n rows.push(['x', 'y'])\n\n // Add data rows from all series\n data.forEach((series) => {\n series.forEach((dataPoint) => {\n rows.push([String(dataPoint[0]), String(dataPoint[1])])\n })\n })\n\n return rows\n}\n","import { downloadToCSV, downloadToPNG, type DownloadItem } from '../../actions'\nimport type { ConfigProps } from '../../loader/types'\n\nexport function createChartDownloadConfig<TData>(\n csvModifier: (data: TData) => string[][],\n) {\n return function ({ refUI }: ConfigProps): DownloadItem<TData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = csvModifier(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n }\n}\n"],"names":["flattenObjectArrayToCSV","data","rows","length","firstDataPoint","headers","Object","keys","push","forEach","series","dataPoint","values","map","v","String","scatterplotDataToCSV","createChartDownloadConfig","csvModifier","refUI","downloadToPNG","modifier","downloadToCSV"],"mappings":";;;;;;;;;;;;;;AAWO,SAASA,EACdC,GACY;AACZ,QAAMC,IAAmB,CAAA;AAGzB,MAAID,EAAKE,SAAS,MAAMF,EAAK,CAAC,GAAGE,UAAU,KAAK,GAAG;AACjD,UAAMC,IAAiBH,IAAO,CAAC,IAAI,CAAC,KAAK,CAAA,GACnCI,IAAUC,OAAOC,KAAKH,CAAc;AAC1CF,IAAAA,EAAKM,KAAKH,CAAO;AAAA,EACnB;AAGAJ,SAAAA,EAAKQ,QAASC,CAAAA,MAAW;AACvBA,IAAAA,EAAOD,QAASE,CAAAA,MAAc;AAC5B,YAAMC,IAASN,OAAOM,OAAOD,CAAS,EAAEE,IAAKC,CAAAA,MAAMC,OAAOD,CAAC,CAAC;AAC5DZ,MAAAA,EAAKM,KAAKI,CAAM;AAAA,IAClB,CAAC;AAAA,EACH,CAAC,GAEMV;AACT;AASO,SAASc,EAAqBf,GAAgC;AACnE,QAAMC,IAAmB,CAAA;AAGzBA,SAAAA,EAAKM,KAAK,CAAC,KAAK,GAAG,CAAC,GAGpBP,EAAKQ,QAASC,CAAAA,MAAW;AACvBA,IAAAA,EAAOD,QAASE,CAAAA,MAAc;AAC5BT,MAAAA,EAAKM,KAAK,CAACO,OAAOJ,EAAU,CAAC,CAAC,GAAGI,OAAOJ,EAAU,CAAC,CAAC,CAAC,CAAC;AAAA,IACxD,CAAC;AAAA,EACH,CAAC,GAEMT;AACT;ACpDO,SAASe,EACdC,GACA;AACA,SAAO,SAAU;AAAA,IAAEC,OAAAA;AAAAA,EAAAA,GAA6C;AAC9D,WAAO,CACL;AAAA,MACE,GAAGC;AAAAA,MACHC,UAAUA,MAAMD,EAAcC,SAASF,CAAK;AAAA,IAAA,GAE9C;AAAA,MACE,GAAGG;AAAAA,MACHD,UAAU,OAAOpB,MAAS;AACxB,cAAMC,IAAOgB,EAAYjB,CAAI;AAC7B,eAAOqB,EAAcD,SAASnB,CAAI;AAAA,MACpC;AAAA,IAAA,CACD;AAAA,EAEL;AACF;"}
@@ -99,6 +99,7 @@ const B = {
99
99
  alignItems: "center",
100
100
  justifyContent: "flex-start",
101
101
  overflow: "hidden",
102
+ width: "fit-content",
102
103
  "&.inline": {
103
104
  flexDirection: "column",
104
105
  alignItems: "flex-start",
@@ -550,4 +551,4 @@ export {
550
551
  P as f,
551
552
  A as s
552
553
  };
553
- //# sourceMappingURL=lasso-tool-BYbxrJ-7.js.map
554
+ //# sourceMappingURL=lasso-tool-CDFj4zKY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lasso-tool-CDFj4zKY.js","sources":["../src/components/lasso-tool/icons.tsx","../src/components/lasso-tool/const.tsx","../src/components/lasso-tool/styles.ts","../src/components/lasso-tool/chip.tsx","../src/components/lasso-tool/lasso-tool.tsx"],"sourcesContent":["import type { SVGProps } from 'react'\n\nexport function DrawPolygonIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 24 24'\n {...props}\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M4 18a2 2 0 1 1 0 4 2 2 0 0 1 0-4Zm16 0a2 2 0 1 1 0 4 2 2 0 0 1 0-4Zm-2.829 1a2.996 2.996 0 0 0 0 2H6.829a2.995 2.995 0 0 0 0-2h10.342Zm-2.463-5.707 3.998 4a3.013 3.013 0 0 0-1.414 1.414l-4-3.999a3.014 3.014 0 0 0 1.31-1.214l.106-.201ZM2.998 6.829a2.995 2.995 0 0 0 2.002 0v10.342a2.993 2.993 0 0 0-2.002 0V6.83ZM12 10a2 2 0 1 1 0 4 2 2 0 0 1 0-4Zm1.84-3.919c.464.483 1.09.81 1.79.896l-1.47 2.94a2.992 2.992 0 0 0-1.79-.894l1.47-2.942ZM16 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4ZM4 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4Zm9.171.998a2.994 2.994 0 0 0 0 2.002H6.829a2.995 2.995 0 0 0 0-2.002h6.342Z'\n fill='currentColor'\n />\n </svg>\n )\n}\n\nexport function DrawSquareIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 24 24'\n {...props}\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M4 18a2 2 0 1 1 0 4 2 2 0 0 1 0-4Zm16 0a2 2 0 1 1 0 4 2 2 0 0 1 0-4Zm-2.829 1a2.993 2.993 0 0 0-.17.974l-.001.052.007.183a3 3 0 0 0 .164.79H6.829a2.995 2.995 0 0 0 0-2h10.342ZM2.998 6.828a2.995 2.995 0 0 0 2.002 0V17.17a2.993 2.993 0 0 0-2.002 0V6.83Zm16.001 0a2.995 2.995 0 0 0 2 0V17.17a2.993 2.993 0 0 0-2 0V6.829ZM20 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4ZM4 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4Zm13.171.998a2.991 2.991 0 0 0-.17.976L17 4.026l.007.183a3 3 0 0 0 .164.79H6.829a2.995 2.995 0 0 0 0-2H17.17Z'\n fill='currentColor'\n />\n </svg>\n )\n}\n\nexport function DrawCircleIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 24 24'\n {...props}\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2Zm0 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm0 6a2 2 0 1 1 0 4 2 2 0 0 1 0-4Z'\n fill='currentColor'\n />\n </svg>\n )\n}\n\nexport function DrawLassoIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 24 24'\n {...props}\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M12 3c4.935 0 9 3.736 9 9l-.002.343-.012.668c-.012.438-.033.86-.062 1.266l-.05.597C20.498 18.767 19.267 21 17 21c-1.192 0-1.971-.341-2.988-1.122l-.472-.375c-.401-.319-.64-.473-.888-.566a4.938 4.938 0 0 0-.415-.13l-.34-.085-.398-.086-.456-.086-.66-.111-1.708-.273a9.112 9.112 0 0 1-.952-.206C5.46 17.301 3 14.954 3 12.015c0-1.508.485-2.995 1.436-4.458.355.585.906 1.04 1.562 1.272C5.328 9.916 5 10.977 5 12.015c0 1.889 1.78 3.588 3.282 4.025l.085.023.345.076.517.092 1.619.257.583.1.518.098.237.05.433.103c.272.07.512.143.73.224.434.161.783.373 1.235.718l.457.362c.806.646 1.24.857 1.959.857.893 0 1.63-1.518 1.895-4.45l.045-.585c.013-.2.024-.407.033-.62l.02-.655c.005-.224.007-.454.007-.69 0-4.12-3.133-7-7-7a1 1 0 1 1 0-2ZM7 4a2 2 0 1 1 0 4 2 2 0 0 1 0-4Z'\n fill='currentColor'\n />\n </svg>\n )\n}\n\nexport function SelectToolIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 24 24'\n {...props}\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='m10.083 19.394.057.113a1 1 0 0 0 1.72.007l2.869-4.786 4.786-2.87a1 1 0 0 0-.121-1.777l-14-6c-.83-.356-1.669.483-1.313 1.313l6.002 14ZM6.905 6.904l9.903 4.244-3.322 1.995-.102.069a1 1 0 0 0-.242.274l-1.992 3.321-4.245-9.903Z'\n fill='currentColor'\n />\n </svg>\n )\n}\n","import type { LassoToolsMode, LassoToolsModesMapping } from '../types'\nimport {\n DrawPolygonIcon,\n DrawSquareIcon,\n DrawCircleIcon,\n DrawLassoIcon,\n SelectToolIcon,\n} from './icons'\nimport type { LassoToolsComponentProps } from './types'\nimport type { RequiredDeep } from 'type-fest'\n\nexport const LASSO_TOOLS_LABELS: NonNullable<\n RequiredDeep<LassoToolsComponentProps['labels']>\n> = {\n action: {\n tooltip: {\n active: 'Click on the map to draw your spatial filter',\n inactive: 'Click on the map to draw your spatial filter',\n },\n },\n chip: {\n tooltip: {\n active: 'Hide drawing',\n inactive: 'Show drawing',\n },\n },\n options: {\n mode: {\n title: 'Choose a drawing tool',\n options: {\n circle: 'Circle',\n lasso: 'Lasso tool',\n polygon: 'Polygon',\n rectangle: 'Rectangle',\n edit: 'Edit feature',\n },\n },\n },\n noData: {\n title: 'Spatial filter not applied',\n description:\n 'Select a drawing or editing tool and click on the map to define your spatial filter',\n },\n actions: {\n toggleAll: {\n active: 'Hide all',\n inactive: 'Show all',\n },\n deleteAll: 'Remove all',\n },\n} as const\n\nexport const DEFAULT_LASSO_TOOLS_MODES_MAPPING: LassoToolsModesMapping<LassoToolsMode> =\n {\n polygon: {\n icon: <DrawPolygonIcon />,\n },\n rectangle: {\n icon: <DrawSquareIcon />,\n },\n circle: {\n icon: <DrawCircleIcon />,\n },\n lasso: {\n icon: <DrawLassoIcon />,\n },\n edit: {\n icon: <SelectToolIcon />,\n },\n } as const\n","import { alpha, type SxProps, type Theme } from '@mui/material'\n\nexport const styles = {\n container: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-start',\n overflow: 'hidden',\n width: 'fit-content',\n\n '&.inline': {\n flexDirection: 'column',\n alignItems: 'flex-start',\n gap: ({ spacing }) => spacing(1),\n },\n },\n actions: {\n icon: {\n width: ({ spacing }) => spacing(4),\n height: ({ spacing }) => spacing(4),\n borderRadius: 0,\n '.MuiTouchRipple-ripple .MuiTouchRipple-child': {\n borderRadius: 0,\n },\n },\n },\n options: {\n menu: {\n paddingTop: ({ spacing }) => spacing(1),\n '&.inline': {\n boxShadow: 'none',\n backgroundColor: 'transparent',\n borderRadius: ({ spacing }) => spacing(0.5),\n\n '& .MuiDivider-root': {\n height: ({ spacing }) => spacing(4),\n\n '&.MuiToggleButtonGroup-groupedHorizontal': {\n height: ({ spacing }) => spacing(4),\n },\n '&.MuiToggleButtonGroup-groupedVertical': {\n height: 'auto',\n width: ({ spacing }) => spacing(4),\n margin: ({ spacing }) => `${spacing(0.5, 0, 1)} !important`,\n borderRadius: '0 !important',\n },\n },\n\n '& .MuiToggleButton-sizeSmall': {\n margin: 0,\n\n '&.MuiToggleButtonGroup-grouped:not(.MuiDivider-root)': {\n margin: 0,\n },\n '& + .MuiDivider-root.MuiToggleButtonGroup-groupedHorizontal': {\n height: ({ spacing }) => spacing(3),\n },\n '& + .MuiDivider-root.MuiToggleButtonGroup-groupedVertical': {\n height: 'auto',\n width: ({ spacing }) => spacing(3),\n },\n },\n\n '.MuiToggleButtonGroup-grouped:not(.MuiDivider-root)': {\n margin: 0,\n\n '&:first-of-type': {\n marginLeft: 0,\n },\n '&:not(:last-of-type)': {\n marginRight: ({ spacing }) => spacing(0.5),\n },\n },\n '&.MuiToggleButtonGroup-horizontal:not(.MuiDivider-root)': {\n '.MuiToggleButtonGroup-grouped': {\n margin: ({ spacing }) => spacing(0, 0.5),\n },\n },\n '&.MuiToggleButtonGroup-vertical:not(.MuiDivider-root)': {\n '.MuiToggleButtonGroup-grouped': {\n margin: ({ spacing }) => spacing(0, 0, 0.5),\n\n '&:not(:last-of-type)': {\n marginRight: 0,\n },\n '&:last-of-type': {\n marginBottom: 0,\n },\n },\n },\n },\n },\n icon: {\n borderRadius: 0,\n width: ({ spacing }) => spacing(3),\n },\n title: {\n paddingX: ({ spacing }) => spacing(2),\n paddingBottom: ({ spacing }) => spacing(0.5),\n\n '&.inline': {\n paddingX: 0,\n paddingBottom: 0,\n },\n },\n icons: {\n color: ({ palette }) => palette.text.primary,\n },\n tag: {\n borderRadius: ({ spacing }) => spacing(0.25),\n border: '1px solid',\n borderColor: ({ palette }) => palette.primary.main,\n paddingX: ({ spacing }) => spacing(0.5),\n color: ({ palette }) => palette.primary.main,\n backgroundColor: ({ palette }) => alpha(palette.primary.main, 0.08),\n },\n more: {\n width: ({ spacing }) => spacing(4),\n },\n },\n chip: {\n container: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(0.5),\n overflowX: 'auto',\n scrollbarWidth: 'none',\n paddingX: ({ spacing }) => spacing(1),\n\n '&.inline': {\n overflowX: 'visible',\n flexWrap: 'wrap',\n },\n },\n chip: {\n marginRight: ({ spacing }) => spacing(0.5),\n },\n disabled: {\n opacity: ({ palette }) => palette.action.disabledOpacity,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Chip } from '@mui/material'\nimport type { PickDeep } from 'type-fest'\nimport { LASSO_TOOLS_LABELS } from './const'\nimport { styles } from './styles'\nimport type { LassoToolsComponentProps, LassoToolsData } from './types'\nimport { Tooltip } from '../tooltip/tooltip'\n\nexport function LassoToolsUIChip({\n chipProps,\n value,\n labels,\n onChipToggle,\n onDelete,\n}: Pick<LassoToolsComponentProps, 'chipProps' | 'onDelete' | 'onChipToggle'> & {\n value: LassoToolsData\n labels?: PickDeep<LassoToolsComponentProps['labels'], 'chip'>['chip']\n}) {\n const chipState = value.visible ? 'active' : 'inactive'\n const chipLabel =\n labels?.tooltip?.[chipState] ?? LASSO_TOOLS_LABELS.chip.tooltip[chipState]\n\n return (\n <Tooltip title={chipLabel} placement='bottom' {...chipProps?.TooltipProps}>\n <Chip\n sx={{\n ...styles.chip.chip,\n }}\n color={value.visible ? 'secondary' : 'default'}\n size='small'\n onDelete={() => onDelete(value.id)}\n label={value.label}\n onClick={() => onChipToggle(value.id, !value.visible)}\n {...chipProps?.ChipsProps}\n />\n </Tooltip>\n )\n}\n","import { ArrowDropDown, MoreVertOutlined } from '@mui/icons-material'\nimport {\n Box,\n Divider,\n IconButton,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n Paper,\n SvgIcon,\n ToggleButton,\n Typography,\n type SxProps,\n type Theme,\n} from '@mui/material'\nimport deepmerge from 'deepmerge'\nimport {\n useMemo,\n useState,\n type ComponentProps,\n type JSX,\n type MouseEvent,\n type PropsWithChildren,\n type ReactNode,\n} from 'react'\nimport type { PickDeep } from 'type-fest'\nimport { Tooltip } from '../tooltip/tooltip'\nimport type { LassoToolsModes } from '../types'\nimport { LassoToolsUIChip } from './chip'\nimport { LASSO_TOOLS_LABELS } from './const'\nimport { styles } from './styles'\nimport type { LassoToolsComponentProps, OptionsChildrenProps } from './types'\n\nconst EMPTY_VALUES: LassoToolsComponentProps['values'] = []\nconst EMPTY_PAPER_PROPS: NonNullable<LassoToolsComponentProps['PaperProps']> =\n {}\n\n/**\n * Provides a comprehensive floating interface for spatial selection and drawing operations on maps, supporting polygon, rectangle, circle, freehand lasso, and edit modes.\n *\n * @remarks\n * Supports customizable slots for action, options, chips, and secondary actions via compound component pattern (e.g., `LassoToolsUI.Action`, `LassoToolsUI.Chips`).\n *\n * @example\n * ```tsx\n * <LassoToolsUI\n * enabled={enabled}\n * values={spatialFilters}\n * modes={modes}\n * modesMapping={modesMapping}\n * modeSelected={modeSelected}\n * onActionToggle={setEnabled}\n * onChangeMode={setModeSelected}\n * onChipToggle={handleChipToggle}\n * onDelete={handleDelete}\n * />\n * ```\n */\nexport function LassoToolsUI({\n enabled,\n values = EMPTY_VALUES,\n actionProps,\n chipProps,\n labels,\n modes,\n modesMapping,\n modeSelected,\n PaperProps: { sx, ...PaperProps } = EMPTY_PAPER_PROPS,\n onActionToggle,\n onChipToggle,\n onDelete,\n onChangeMode,\n onAllChipToggle,\n onAllDelete,\n ChipsSlot = LassoToolsUI.Chips,\n ActionSlot = LassoToolsUI.Action,\n SecondaryActionsSlot = LassoToolsUI.SecondaryActions,\n OptionsSlot = LassoToolsUI.Options,\n}: LassoToolsComponentProps): JSX.Element {\n const slotArgs = {\n enabled,\n values,\n actionProps,\n chipProps,\n labels,\n modes,\n modesMapping,\n modeSelected,\n PaperProps,\n onActionToggle,\n onChipToggle,\n onDelete,\n onChangeMode,\n onAllChipToggle,\n onAllDelete,\n }\n return (\n <Paper\n sx={{\n ...styles.container,\n ...sx,\n }}\n {...PaperProps}\n >\n {!!ActionSlot && <ActionSlot {...slotArgs} />}\n {!!OptionsSlot && (\n <Options>\n {(props) => {\n return <OptionsSlot {...slotArgs} {...props} />\n }}\n </Options>\n )}\n {!!ChipsSlot && <ChipsSlot {...slotArgs} />}\n {!!SecondaryActionsSlot && <SecondaryActionsSlot {...slotArgs} />}\n </Paper>\n )\n}\n\nfunction LassoToolsUIAction({\n actionProps,\n labels,\n enabled,\n children,\n onActionToggle,\n}: PropsWithChildren<\n Pick<\n LassoToolsComponentProps,\n 'actionProps' | 'enabled' | 'onActionToggle'\n > & {\n labels?: PickDeep<LassoToolsComponentProps['labels'], 'action'>['action']\n }\n>) {\n const actionState = enabled ? 'active' : 'inactive'\n const actionLabel =\n labels?.tooltip?.[actionState] ??\n LASSO_TOOLS_LABELS.action.tooltip[actionState]\n\n return (\n <Tooltip\n title={actionLabel}\n placement='right'\n {...actionProps?.TooltipProps}\n >\n <ToggleButton\n value='toggle'\n sx={styles.actions.icon}\n onClick={() => onActionToggle(!enabled)}\n aria-label={actionLabel}\n selected={enabled}\n >\n {children}\n </ToggleButton>\n </Tooltip>\n )\n}\n\nconst EMPTY_TRIGGER_PROPS: { Icon?: ReactNode; sx?: SxProps<Theme> } = {}\n\nfunction Options({\n TriggerProps = EMPTY_TRIGGER_PROPS,\n MenuProps,\n children,\n}: {\n TriggerProps?: {\n Icon?: ReactNode\n sx?: SxProps<Theme>\n }\n MenuProps?: Partial<ComponentProps<typeof Menu>>\n children: (props: OptionsChildrenProps) => JSX.Element\n}) {\n const { Icon, sx } = TriggerProps\n const IconNode = Icon ?? <ArrowDropDown />\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n\n const open = Boolean(anchorEl)\n\n const handleToggle = (event: MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget)\n }\n\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n return (\n <>\n <IconButton\n sx={{\n ...styles.options.icon,\n ...sx,\n }}\n onClick={handleToggle}\n >\n {IconNode}\n </IconButton>\n <Menu\n id='lasso-menu'\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n MenuListProps={{\n 'aria-labelledby': 'lasso-button',\n sx: styles.options.menu,\n }}\n {...MenuProps}\n >\n <div>\n {children({\n onClose: handleClose,\n })}\n </div>\n </Menu>\n </>\n )\n}\n\nfunction ModeList({\n data,\n labels,\n children,\n}: {\n labels?: PickDeep<LassoToolsComponentProps['labels'], 'options'>['options']\n data: LassoToolsComponentProps['modes'][keyof LassoToolsModes][]\n children: ReactNode\n}) {\n if (data.length <= 1) {\n return null\n }\n\n const modeTitle = labels?.mode?.title ?? LASSO_TOOLS_LABELS.options.mode.title\n\n return (\n <>\n <Typography\n variant='subtitle2'\n color='text.secondary'\n sx={styles.options.title}\n >\n {modeTitle}\n </Typography>\n {children}\n </>\n )\n}\n\nfunction OptionsList({\n data,\n modeSelected,\n labels,\n onChangeMode,\n onClose,\n}: Required<Pick<LassoToolsComponentProps, 'modeSelected' | 'onChangeMode'>> & {\n labels?: PickDeep<LassoToolsComponentProps['labels'], 'options'>['options']\n data: (LassoToolsComponentProps['modes'] &\n LassoToolsComponentProps['modesMapping'])[keyof LassoToolsModes][]\n onClose: OptionsChildrenProps['onClose']\n}) {\n const handleClick = (\n e: MouseEvent<HTMLLIElement>,\n value: NonNullable<(typeof data)[number]>['value'],\n ) => {\n e.preventDefault()\n onChangeMode?.(value)\n onClose()\n }\n\n return data\n .filter((mode): mode is NonNullable<typeof mode> => Boolean(mode))\n .map((mode) => {\n const options =\n labels?.mode?.options ?? LASSO_TOOLS_LABELS.options.mode.options\n const label = options[mode.value]\n\n return (\n <MenuItem\n key={mode.value}\n disabled={!!mode.disabled}\n onClick={(e) => handleClick(e, mode.value)}\n selected={mode.value === modeSelected}\n >\n <ListItemIcon sx={styles.options.icons}>\n <SvgIcon>{mode.icon}</SvgIcon>\n </ListItemIcon>\n <ListItemText>{label}</ListItemText>\n </MenuItem>\n )\n })\n}\n\nfunction SecondaryActionsWrapper({\n values,\n labels,\n onAllChipToggle,\n onAllDelete,\n}: Partial<\n Omit<\n LassoToolsComponentProps,\n 'ChipsSlot' | 'ActionsSlot' | 'OptionsSlot' | 'SecondaryActionsSlot'\n >\n>) {\n if (!values?.length || values.length <= 1) {\n return null\n }\n\n const hasVisible = values?.some((value) => value.visible)\n\n const toggleAllLabel = hasVisible\n ? (labels?.actions?.toggleAll?.active ??\n LASSO_TOOLS_LABELS.actions.toggleAll.active)\n : (labels?.actions?.toggleAll?.inactive ??\n LASSO_TOOLS_LABELS.actions.toggleAll.inactive)\n\n const deleteAllLabel =\n labels?.actions?.deleteAll ?? LASSO_TOOLS_LABELS.actions.deleteAll\n\n return (\n <>\n <Divider orientation='vertical' flexItem />\n <Options\n TriggerProps={{ Icon: <MoreVertOutlined />, sx: styles.options.more }}\n MenuProps={{\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'right',\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'right',\n },\n }}\n >\n {(props) => {\n return (\n <>\n <MenuItem\n color='inherit'\n onClick={() => {\n onAllChipToggle?.()\n props.onClose()\n }}\n >\n {toggleAllLabel}\n </MenuItem>\n <Divider />\n <MenuItem\n color='error'\n onClick={() => {\n onAllDelete?.()\n props.onClose()\n }}\n >\n <Typography variant='body2' color='error'>\n {deleteAllLabel}\n </Typography>\n </MenuItem>\n </>\n )\n }}\n </Options>\n </>\n )\n}\n\nLassoToolsUI.Action = function ActionsWrapper({\n modes,\n modesMapping,\n modeSelected,\n actionProps,\n enabled,\n labels,\n onActionToggle,\n}: Partial<\n Omit<\n LassoToolsComponentProps,\n 'ChipsSlot' | 'ActionsSlot' | 'OptionsSlot' | 'SecondaryActionsSlot'\n >\n> & {\n labels?: PickDeep<LassoToolsComponentProps['labels'], 'actions'>['actions']\n}) {\n const data = useMemo(() => {\n return deepmerge(modes ?? {}, modesMapping ?? {})\n }, [modes, modesMapping])\n\n const handleToggle: LassoToolsComponentProps['onActionToggle'] = (data) => {\n return onActionToggle?.(data)\n }\n\n const modeExists = modeSelected ? modeSelected in (modes ?? {}) : false\n\n const mode = (\n modeExists ? modeSelected : Object.keys(data)[0]\n ) as keyof typeof data\n\n const modeSelectedValue = data[mode]\n\n return (\n <LassoToolsUIAction\n actionProps={actionProps}\n labels={labels?.action}\n enabled={enabled ?? false}\n onActionToggle={handleToggle}\n >\n {modeSelectedValue?.icon}\n </LassoToolsUIAction>\n )\n}\n\nLassoToolsUI.Chips = function ChipsWrapper({\n values,\n labels,\n chipProps,\n onDelete,\n onChipToggle,\n onActionToggle,\n}: Partial<\n Omit<\n LassoToolsComponentProps,\n 'ChipsSlot' | 'ActionsSlot' | 'OptionsSlot' | 'SecondaryActionsSlot'\n >\n>) {\n const handleDelete: LassoToolsComponentProps['onDelete'] = (valueId) => {\n onActionToggle?.(false)\n return onDelete?.(valueId)\n }\n\n return (\n !!values?.length && (\n <Box sx={styles.chip.container}>\n {values?.map((value) => (\n <LassoToolsUIChip\n key={value.id}\n value={value}\n labels={labels?.chip}\n chipProps={chipProps}\n onDelete={handleDelete}\n onChipToggle={(id, data) => onChipToggle?.(id, data)}\n />\n ))}\n </Box>\n )\n )\n}\n\nLassoToolsUI.SecondaryActions = SecondaryActionsWrapper\n\nLassoToolsUI.Options = function OptionsWrapper({\n values,\n modes,\n modesMapping,\n modeSelected,\n labels,\n onChangeMode,\n ...props\n}: Partial<\n Omit<\n LassoToolsComponentProps,\n 'ChipsSlot' | 'ActionsSlot' | 'OptionsSlot' | 'SecondaryActionsSlot'\n >\n> &\n OptionsChildrenProps) {\n const data = useMemo(() => {\n return deepmerge(modes ?? {}, modesMapping ?? {})\n }, [modes, modesMapping])\n\n const { edit, ..._modes } = data\n\n const modeExists = modeSelected ? modeSelected in (modes ?? {}) : false\n\n const mode = (\n modeExists ? modeSelected : Object.keys(data)[0]\n ) as keyof typeof data\n\n const modesValues = Object.values(_modes)\n\n const handleChangeMode: LassoToolsComponentProps['onChangeMode'] = (data) => {\n return onChangeMode?.(data)\n }\n\n return (\n <>\n <ModeList data={modesValues} labels={labels?.options}>\n <OptionsList\n {...props}\n labels={labels?.options}\n data={modesValues}\n modeSelected={mode}\n onChangeMode={handleChangeMode}\n />\n </ModeList>\n {!!edit && (\n <>\n <Divider />\n <OptionsList\n {...props}\n labels={labels?.options}\n data={[\n {\n ...edit,\n disabled: !values?.length,\n },\n ]}\n modeSelected={mode}\n onChangeMode={handleChangeMode}\n />\n </>\n )}\n </>\n )\n}\n"],"names":["DrawPolygonIcon","props","$","_c","t0","Symbol","for","t1","jsx","DrawSquareIcon","DrawCircleIcon","DrawLassoIcon","SelectToolIcon","LASSO_TOOLS_LABELS","action","tooltip","active","inactive","chip","options","mode","title","circle","lasso","polygon","rectangle","edit","noData","description","actions","toggleAll","deleteAll","DEFAULT_LASSO_TOOLS_MODES_MAPPING","icon","styles","container","display","flexDirection","alignItems","justifyContent","overflow","width","gap","spacing","height","borderRadius","menu","paddingTop","boxShadow","backgroundColor","margin","marginLeft","marginRight","marginBottom","paddingX","paddingBottom","icons","color","palette","text","primary","more","overflowX","scrollbarWidth","flexWrap","LassoToolsUIChip","chipProps","value","labels","onChipToggle","onDelete","chipState","visible","chipLabel","TooltipProps","t2","t3","t4","id","t5","t6","ChipsProps","t7","label","Chip","t8","Tooltip","EMPTY_VALUES","EMPTY_PAPER_PROPS","LassoToolsUI","enabled","values","actionProps","modes","modesMapping","modeSelected","PaperProps","onActionToggle","onChangeMode","onAllChipToggle","onAllDelete","ChipsSlot","ActionSlot","SecondaryActionsSlot","OptionsSlot","undefined","sx","Chips","Action","SecondaryActions","Options","slotArgs","t9","t10","t11","t12","t13","t14","jsxs","Paper","LassoToolsUIAction","children","actionState","actionLabel","ToggleButton","EMPTY_TRIGGER_PROPS","TriggerProps","MenuProps","Icon","ArrowDropDown","IconNode","anchorEl","setAnchorEl","useState","open","Boolean","event","currentTarget","handleToggle","handleClose","IconButton","onClose","Menu","ModeList","data","length","modeTitle","Typography","OptionsList","handleClick","e","preventDefault","filter","map","MenuItem","disabled","ListItemIcon","SvgIcon","ListItemText","SecondaryActionsWrapper","toggleAllLabel","some","_temp","deleteAllLabel","Divider","MoreVertOutlined","anchorOrigin","vertical","horizontal","transformOrigin","Fragment","useMemo","deepmerge","Object","keys","modeSelectedValue","handleDelete","valueId","Box","_modes","modesValues","handleChangeMode"],"mappings":"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"}
@@ -0,0 +1,213 @@
1
+ import { jsx as $, jsxs as G } from "react/jsx-runtime";
2
+ import { c as W } from "react/compiler-runtime";
3
+ import { u as V } from "./widget-context-DTGO0Yta.js";
4
+ import { u as X } from "./widget-store-registry-_W4Z4xp-.js";
5
+ import { useState as J } from "react";
6
+ import "zustand";
7
+ import { Box as N, Slider as Y, Typography as Z, TextField as ee } from "@mui/material";
8
+ const _ = {
9
+ root: {
10
+ display: "flex",
11
+ flexDirection: "column",
12
+ gap: 3,
13
+ py: 1
14
+ },
15
+ item: {
16
+ display: "flex",
17
+ flexDirection: "column",
18
+ gap: 1.5
19
+ },
20
+ sliderContainer: {
21
+ display: "flex",
22
+ flexDirection: "column",
23
+ gap: 1,
24
+ px: 1
25
+ },
26
+ slider: {
27
+ width: "100%",
28
+ "&.Mui-disabled": {
29
+ color: (a) => a.palette.text.disabled
30
+ }
31
+ },
32
+ inputsRow: {
33
+ display: "flex",
34
+ gap: 2,
35
+ alignItems: "center"
36
+ },
37
+ input: {
38
+ flex: 1,
39
+ "& .MuiInputBase-input": {
40
+ textAlign: "center"
41
+ }
42
+ },
43
+ note: {
44
+ color: "text.secondary"
45
+ }
46
+ };
47
+ function te(a) {
48
+ const e = W(11), {
49
+ items: n,
50
+ onChange: t,
51
+ onChangeCommitted: l,
52
+ formatter: s
53
+ } = a, o = s ?? ne;
54
+ let m;
55
+ if (e[0] !== o || e[1] !== n || e[2] !== t || e[3] !== l) {
56
+ let r;
57
+ e[5] !== o || e[6] !== t || e[7] !== l ? (r = (g, d) => /* @__PURE__ */ $(ie, { index: d, item: g, fmt: o, onChange: t, onChangeCommitted: l }, `range-${g.min}-${g.max}-${d}`), e[5] = o, e[6] = t, e[7] = l, e[8] = r) : r = e[8], m = n.map(r), e[0] = o, e[1] = n, e[2] = t, e[3] = l, e[4] = m;
58
+ } else
59
+ m = e[4];
60
+ let i;
61
+ return e[9] !== m ? (i = /* @__PURE__ */ $(N, { sx: _.root, children: m }), e[9] = m, e[10] = i) : i = e[10], i;
62
+ }
63
+ function ne(a) {
64
+ return String(a);
65
+ }
66
+ function ie(a) {
67
+ const e = W(70), {
68
+ index: n,
69
+ item: t,
70
+ fmt: l,
71
+ onChange: s,
72
+ onChangeCommitted: o
73
+ } = a;
74
+ let m;
75
+ e[0] !== t.max || e[1] !== t.min || e[2] !== t.value ? (m = t.value ?? [t.min, t.max], e[0] = t.max, e[1] = t.min, e[2] = t.value, e[3] = m) : m = e[3];
76
+ const i = m, [r, g] = J("");
77
+ let d;
78
+ e[4] !== t.max || e[5] !== t.min ? (d = (S) => {
79
+ const [f, j] = S, E = Math.min(Math.max(f, t.min), t.max), q = Math.min(Math.max(j, t.min), t.max);
80
+ return E <= q ? [E, q] : [q, E];
81
+ }, e[4] = t.max, e[5] = t.min, e[6] = d) : d = e[6];
82
+ const u = d;
83
+ let v;
84
+ e[7] !== n || e[8] !== u || e[9] !== s ? (v = (S) => {
85
+ s?.(n, u(S));
86
+ }, e[7] = n, e[8] = u, e[9] = s, e[10] = v) : v = e[10];
87
+ const A = v;
88
+ let x;
89
+ e[11] !== n || e[12] !== u || e[13] !== o ? (x = (S) => {
90
+ o?.(n, u(S));
91
+ }, e[11] = n, e[12] = u, e[13] = o, e[14] = x) : x = e[14];
92
+ const p = x;
93
+ let y;
94
+ e[15] !== n || e[16] !== u || e[17] !== s || e[18] !== o ? (y = (S) => {
95
+ const f = u(S);
96
+ s?.(n, f), o?.(n, f);
97
+ }, e[15] = n, e[16] = u, e[17] = s, e[18] = o, e[19] = y) : y = e[19];
98
+ const h = y;
99
+ let C;
100
+ e[20] !== A || e[21] !== t.max || e[22] !== t.min ? (C = (S, f) => {
101
+ if (!Array.isArray(f))
102
+ return;
103
+ const j = f[0] ?? t.min, E = f[1] ?? t.max;
104
+ A([j, E]);
105
+ }, e[20] = A, e[21] = t.max, e[22] = t.min, e[23] = C) : C = e[23];
106
+ const b = C;
107
+ let w;
108
+ e[24] !== p || e[25] !== t.max || e[26] !== t.min ? (w = (S, f) => {
109
+ if (!Array.isArray(f))
110
+ return;
111
+ const j = f[0] ?? t.min, E = f[1] ?? t.max;
112
+ p([j, E]);
113
+ }, e[24] = p, e[25] = t.max, e[26] = t.min, e[27] = w) : w = e[27];
114
+ const F = w;
115
+ let c;
116
+ e[28] !== t.color ? (c = t.color ? {
117
+ color: t.color
118
+ } : null, e[28] = t.color, e[29] = c) : c = e[29];
119
+ let R;
120
+ e[30] !== c ? (R = {
121
+ ..._.slider,
122
+ ...c
123
+ }, e[30] = c, e[31] = R) : R = e[31];
124
+ let M;
125
+ e[32] !== i ? (M = [...i], e[32] = i, e[33] = M) : M = e[33];
126
+ const K = t.min, Q = t.max, O = t.step ?? 1;
127
+ let D;
128
+ e[34] !== t.marks ? (D = le(t.marks), e[34] = t.marks, e[35] = D) : D = e[35];
129
+ let I;
130
+ e[36] !== l || e[37] !== b || e[38] !== F || e[39] !== t.disabled || e[40] !== t.max || e[41] !== t.min || e[42] !== M || e[43] !== O || e[44] !== D || e[45] !== R ? (I = /* @__PURE__ */ $(N, { sx: _.sliderContainer, children: /* @__PURE__ */ $(Y, { sx: R, value: M, min: K, max: Q, step: O, marks: D, disabled: t.disabled, valueLabelDisplay: "auto", valueLabelFormat: l, onChange: b, onChangeCommitted: F }) }), e[36] = l, e[37] = b, e[38] = F, e[39] = t.disabled, e[40] = t.max, e[41] = t.min, e[42] = M, e[43] = O, e[44] = D, e[45] = R, e[46] = I) : I = e[46];
131
+ const P = `min-${i[0]}`;
132
+ let L;
133
+ e[47] !== h || e[48] !== i || e[49] !== r || e[50] !== l || e[51] !== t || e[52] !== P ? (L = /* @__PURE__ */ $(H, { name: "min", value: i[0], item: t, fmt: l, editing: r, setEditing: g, commit: h, current: i, ariaLabel: "Minimum value" }, P), e[47] = h, e[48] = i, e[49] = r, e[50] = l, e[51] = t, e[52] = P, e[53] = L) : L = e[53];
134
+ const U = `max-${i[1]}`;
135
+ let B;
136
+ e[54] !== h || e[55] !== i || e[56] !== r || e[57] !== l || e[58] !== t || e[59] !== U ? (B = /* @__PURE__ */ $(H, { name: "max", value: i[1], item: t, fmt: l, editing: r, setEditing: g, commit: h, current: i, ariaLabel: "Maximum value" }, U), e[54] = h, e[55] = i, e[56] = r, e[57] = l, e[58] = t, e[59] = U, e[60] = B) : B = e[60];
137
+ let T;
138
+ e[61] !== L || e[62] !== B ? (T = /* @__PURE__ */ G(N, { sx: _.inputsRow, children: [
139
+ L,
140
+ B
141
+ ] }), e[61] = L, e[62] = B, e[63] = T) : T = e[63];
142
+ let k;
143
+ e[64] !== t.note ? (k = t.note ? /* @__PURE__ */ $(Z, { variant: "caption", sx: _.note, children: t.note }) : null, e[64] = t.note, e[65] = k) : k = e[65];
144
+ let z;
145
+ return e[66] !== I || e[67] !== T || e[68] !== k ? (z = /* @__PURE__ */ G(N, { sx: _.item, children: [
146
+ I,
147
+ T,
148
+ k
149
+ ] }), e[66] = I, e[67] = T, e[68] = k, e[69] = z) : z = e[69], z;
150
+ }
151
+ function H(a) {
152
+ const e = W(26), {
153
+ name: n,
154
+ value: t,
155
+ item: l,
156
+ fmt: s,
157
+ editing: o,
158
+ setEditing: m,
159
+ commit: i,
160
+ current: r,
161
+ ariaLabel: g
162
+ } = a, [d, u] = J(String(t));
163
+ let v;
164
+ e[0] !== n || e[1] !== m ? (v = () => {
165
+ m(n);
166
+ }, e[0] = n, e[1] = m, e[2] = v) : v = e[2];
167
+ const A = v;
168
+ let x, p;
169
+ if (e[3] !== i || e[4] !== r || e[5] !== n || e[6] !== m || e[7] !== t) {
170
+ let F = function(c) {
171
+ const R = parseFloat(c), M = Number.isFinite(R) ? R : t, K = n === "min" ? [M, r[1]] : [r[0], M];
172
+ i(K);
173
+ };
174
+ p = (c) => {
175
+ m(""), F(c.target.value);
176
+ }, x = (c) => {
177
+ c.key === "Enter" && (F(c.target.value), c.target.blur());
178
+ }, e[3] = i, e[4] = r, e[5] = n, e[6] = m, e[7] = t, e[8] = x, e[9] = p;
179
+ } else
180
+ x = e[8], p = e[9];
181
+ let y;
182
+ e[10] !== o || e[11] !== s || e[12] !== n || e[13] !== d ? (y = o === n ? d : s(Number(d)), e[10] = o, e[11] = s, e[12] = n, e[13] = d, e[14] = y) : y = e[14];
183
+ const h = y;
184
+ let C;
185
+ e[15] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (C = (F) => u(F.target.value), e[15] = C) : C = e[15];
186
+ let b;
187
+ e[16] !== g ? (b = {
188
+ "aria-label": g
189
+ }, e[16] = g, e[17] = b) : b = e[17];
190
+ let w;
191
+ return e[18] !== A || e[19] !== x || e[20] !== h || e[21] !== p || e[22] !== l.disabled || e[23] !== n || e[24] !== b ? (w = /* @__PURE__ */ $(ee, { name: n, value: h, onChange: C, onFocus: A, onBlur: p, onKeyDown: x, disabled: l.disabled, size: "small", sx: _.input, inputProps: b }), e[18] = A, e[19] = x, e[20] = h, e[21] = p, e[22] = l.disabled, e[23] = n, e[24] = b, e[25] = w) : w = e[25], w;
192
+ }
193
+ function le(a) {
194
+ if (a != null)
195
+ return typeof a == "boolean" ? a : [...a];
196
+ }
197
+ const oe = (a) => ({
198
+ data: a.data ?? [],
199
+ formatter: a.formatter
200
+ });
201
+ function ue(a) {
202
+ const e = W(5), {
203
+ onChange: n,
204
+ onChangeCommitted: t
205
+ } = a, l = V(), s = X(l, oe);
206
+ let o;
207
+ return e[0] !== n || e[1] !== t || e[2] !== s.data || e[3] !== s.formatter ? (o = /* @__PURE__ */ $(te, { items: s.data, formatter: s.formatter, onChange: n, onChangeCommitted: t }), e[0] = n, e[1] = t, e[2] = s.data, e[3] = s.formatter, e[4] = o) : o = e[4], o;
208
+ }
209
+ export {
210
+ ue as R,
211
+ te as a
212
+ };
213
+ //# sourceMappingURL=range-l4fNHLEg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range-l4fNHLEg.js","sources":["../src/widgets-v2/range/style.ts","../src/widgets-v2/range/range-ui.tsx","../src/widgets-v2/range/range.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 3,\n py: 1,\n },\n item: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1.5,\n },\n sliderContainer: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n px: 1,\n },\n slider: {\n width: '100%',\n '&.Mui-disabled': {\n color: (theme: Theme) => theme.palette.text.disabled,\n },\n },\n inputsRow: {\n display: 'flex',\n gap: 2,\n alignItems: 'center',\n },\n input: {\n flex: 1,\n '& .MuiInputBase-input': {\n textAlign: 'center',\n },\n },\n note: {\n color: 'text.secondary',\n },\n} satisfies Record<string, SxProps<Theme>>\n","import {\n useCallback,\n useState,\n type FocusEvent,\n type KeyboardEvent,\n} from 'react'\nimport { Box, Slider, TextField, Typography } from '@mui/material'\nimport type { RangeDataItem, RangeItemValue } from './types'\nimport { styles } from './style'\n\nexport interface RangeUIProps {\n items: readonly RangeDataItem[]\n /**\n * Fires on every pointer tick while a thumb is being dragged (mirrors\n * MUI `<Slider>`'s `onChange`). Use this to update local UI state —\n * not to persist expensive operations like remote queries.\n */\n onChange?: (index: number, value: RangeItemValue) => void\n /**\n * Fires once when the user *releases* a slider thumb after dragging,\n * after an arrow-key adjustment commits, or when the text inputs\n * blur / Enter. Mirrors MUI `<Slider>`'s `onChangeCommitted`. Use\n * this for side-effects you want to throttle to \"drag end\" — e.g.\n * writing the value to a source filter that triggers refetches.\n */\n onChangeCommitted?: (index: number, value: RangeItemValue) => void\n /** Number formatter for the slider tooltip and the text input display. */\n formatter?: (value: number) => string\n}\n\ntype Bound = 'min' | 'max'\n\n/**\n * Pure presentational component for the Range widget. Renders one MUI Slider\n * per item with editable min/max text inputs below — matching the Range v1\n * UX. Each item is always a two-thumb range; supply `value` to seed the\n * starting selection, otherwise it defaults to `[min, max]`.\n */\nexport function RangeUI({\n items,\n onChange,\n onChangeCommitted,\n formatter,\n}: RangeUIProps) {\n const fmt = formatter ?? ((n: number) => String(n))\n return (\n <Box sx={styles.root}>\n {items.map((item, i) => (\n // Composite of the row's track bounds — stable across reorders for\n // any realistic widget configuration. Falls back to a literal +\n // index when bounds collide (degenerate same-min-same-max rows).\n <RangeRow\n key={`range-${item.min}-${item.max}-${i}`}\n index={i}\n item={item}\n fmt={fmt}\n onChange={onChange}\n onChangeCommitted={onChangeCommitted}\n />\n ))}\n </Box>\n )\n}\n\ninterface RangeRowProps {\n index: number\n item: RangeDataItem\n fmt: (n: number) => string\n onChange?: (index: number, value: RangeItemValue) => void\n onChangeCommitted?: (index: number, value: RangeItemValue) => void\n}\n\nfunction RangeRow({\n index,\n item,\n fmt,\n onChange,\n onChangeCommitted,\n}: RangeRowProps) {\n const current: readonly [number, number] = item.value ?? [item.min, item.max]\n const [editing, setEditing] = useState<'' | Bound>('')\n\n // Clamp inside [min, max] and keep `low <= high`. Pulled out so both the\n // live `onChange` path and the commit path share the same normalization.\n const normalize = useCallback(\n (next: readonly [number, number]): readonly [number, number] => {\n const [lowRaw, highRaw] = next\n const low = Math.min(Math.max(lowRaw, item.min), item.max)\n const high = Math.min(Math.max(highRaw, item.min), item.max)\n return low <= high ? [low, high] : [high, low]\n },\n [item.min, item.max],\n )\n\n const commit = useCallback(\n (next: readonly [number, number]) => {\n onChange?.(index, normalize(next))\n },\n [index, normalize, onChange],\n )\n\n const commitFinal = useCallback(\n (next: readonly [number, number]) => {\n onChangeCommitted?.(index, normalize(next))\n },\n [index, normalize, onChangeCommitted],\n )\n\n // A text-input commit (blur / Enter) is both a value change AND a final\n // commit, so it fires `onChange` *and* `onChangeCommitted`. Firing both\n // keeps the widget responsive for consumers that only wired `onChange`\n // (the pre-`onChangeCommitted` API) — without it, typing a value and\n // pressing Enter would silently no-op for them.\n const commitText = useCallback(\n (next: readonly [number, number]) => {\n const value = normalize(next)\n onChange?.(index, value)\n onChangeCommitted?.(index, value)\n },\n [index, normalize, onChange, onChangeCommitted],\n )\n\n const handleSlider = (_: Event, raw: number | number[]) => {\n if (!Array.isArray(raw)) return\n // Hoist defaults out of the destructure: react-compiler can't safely\n // reorder MemberExpression defaults inside an array pattern.\n const low = raw[0] ?? item.min\n const high = raw[1] ?? item.max\n commit([low, high])\n }\n\n const handleSliderCommitted = (\n _: Event | React.SyntheticEvent,\n raw: number | number[],\n ) => {\n if (!Array.isArray(raw)) return\n const low = raw[0] ?? item.min\n const high = raw[1] ?? item.max\n commitFinal([low, high])\n }\n\n return (\n <Box sx={styles.item}>\n <Box sx={styles.sliderContainer}>\n <Slider\n sx={{\n ...styles.slider,\n ...(item.color ? { color: item.color } : null),\n }}\n value={[...current]}\n min={item.min}\n max={item.max}\n step={item.step ?? 1}\n marks={resolveMarks(item.marks)}\n disabled={item.disabled}\n valueLabelDisplay='auto'\n valueLabelFormat={fmt}\n onChange={handleSlider}\n onChangeCommitted={handleSliderCommitted}\n />\n </Box>\n <Box sx={styles.inputsRow}>\n {/* Text-input commits (blur / Enter) are final, but also notify\n `onChange` — see `commitText` — so consumers that only wired\n `onChange` still update on a typed value. */}\n <BoundInput\n // Bumping the key on a fresh external value resets the local\n // editing state — matches v1's RangeItem behaviour.\n key={`min-${current[0]}`}\n name='min'\n value={current[0]}\n item={item}\n fmt={fmt}\n editing={editing}\n setEditing={setEditing}\n commit={commitText}\n current={current}\n ariaLabel='Minimum value'\n />\n <BoundInput\n key={`max-${current[1]}`}\n name='max'\n value={current[1]}\n item={item}\n fmt={fmt}\n editing={editing}\n setEditing={setEditing}\n commit={commitText}\n current={current}\n ariaLabel='Maximum value'\n />\n </Box>\n {item.note ? (\n <Typography variant='caption' sx={styles.note}>\n {item.note}\n </Typography>\n ) : null}\n </Box>\n )\n}\n\ninterface BoundInputProps {\n name: Bound\n value: number\n item: RangeDataItem\n fmt: (n: number) => string\n editing: '' | Bound\n setEditing: (next: '' | Bound) => void\n /**\n * Called when the user commits a new value (blur / Enter). Text input\n * edits never produce intermediate \"live\" values, so the consumer\n * only needs one callback — the row wires this to `commitFinal`.\n */\n commit: (next: readonly [number, number]) => void\n current: readonly [number, number]\n ariaLabel: string\n}\n\nfunction BoundInput({\n name,\n value,\n item,\n fmt,\n editing,\n setEditing,\n commit,\n current,\n ariaLabel,\n}: BoundInputProps) {\n const [raw, setRaw] = useState<string>(String(value))\n\n const beginEditing = () => {\n setEditing(name)\n }\n const finishEditingAndCommit = (e: FocusEvent<HTMLInputElement>) => {\n setEditing('')\n commitFromText(e.target.value)\n }\n const commitOnEnter = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n commitFromText((e.target as HTMLInputElement).value)\n ;(e.target as HTMLInputElement).blur()\n }\n }\n\n function commitFromText(input: string) {\n const parsed = parseFloat(input)\n const safe = Number.isFinite(parsed) ? parsed : value\n const next: readonly [number, number] =\n name === 'min' ? [safe, current[1]] : [current[0], safe]\n commit(next)\n }\n\n const display = editing === name ? raw : fmt(Number(raw))\n\n return (\n <TextField\n name={name}\n value={display}\n onChange={(e) => setRaw(e.target.value)}\n onFocus={beginEditing}\n onBlur={finishEditingAndCommit}\n onKeyDown={commitOnEnter}\n disabled={item.disabled}\n size='small'\n sx={styles.input}\n inputProps={{ 'aria-label': ariaLabel }}\n />\n )\n}\n\nfunction resolveMarks(\n marks: RangeDataItem['marks'],\n): boolean | { value: number; label?: string }[] | undefined {\n if (marks == null) return undefined\n if (typeof marks === 'boolean') return marks\n return [...marks]\n}\n","import { useWidgetId, useWidgetShallow } from '../stores'\nimport { RangeUI } from './range-ui'\nimport type { RangeItemValue, RangeWidgetData } from './types'\n\ninterface RangeSlice {\n data: RangeWidgetData\n formatter?: (value: number) => string\n}\n\nconst rangeSelector = (s: {\n data: unknown\n formatter?: (value: number) => string\n}): RangeSlice => ({\n data: (s.data ?? []) as RangeWidgetData,\n formatter: s.formatter,\n})\n\nexport interface RangeProps {\n /**\n * Fires on every pointer tick while a thumb is being dragged. Use this\n * for cheap UI updates (local state, optimistic display).\n */\n onChange?: (index: number, value: RangeItemValue) => void\n /**\n * Fires once when the user *releases* a slider thumb (or when the text\n * inputs blur / Enter, or when an arrow-key adjustment settles). Use\n * this for expensive side-effects you want throttled to drag end —\n * e.g. writing the value to a source filter that refetches widgets.\n */\n onChangeCommitted?: (index: number, value: RangeItemValue) => void\n}\n\n/**\n * Stateful Range bridge — reads `data` (post-pipeline) and `formatter` from\n * the per-widget store and forwards them to the pure {@link RangeUI}. Per\n * the destination-owned principle, value changes flow back through\n * `onChange` (per-tick) and `onChangeCommitted` (drag end) — the consumer\n * is expected to update the data prop on `<Provider>`. Use `disabled` on\n * individual `RangeDataItem`s to disable specific rows.\n */\nexport function Range({ onChange, onChangeCommitted }: RangeProps) {\n const id = useWidgetId()\n const slice = useWidgetShallow(id, rangeSelector)\n return (\n <RangeUI\n items={slice.data}\n formatter={slice.formatter}\n onChange={onChange}\n onChangeCommitted={onChangeCommitted}\n />\n )\n}\n"],"names":["styles","root","display","flexDirection","gap","py","item","sliderContainer","px","slider","width","color","theme","palette","text","disabled","inputsRow","alignItems","input","flex","textAlign","note","RangeUI","t0","$","_c","items","onChange","onChangeCommitted","formatter","fmt","_temp","t1","t2","i","RangeRow","min","max","map","Box","n","String","index","value","current","editing","setEditing","useState","next","lowRaw","highRaw","low","Math","high","normalize","t3","next_0","commit","t4","next_1","commitFinal","t5","next_2","commitText","t6","_","raw","Array","isArray","low_0","high_0","handleSlider","t7","__0","raw_0","low_1","high_1","handleSliderCommitted","t8","t9","t10","t11","t12","t13","step","t14","marks","resolveMarks","t15","jsx","Slider","t16","t17","BoundInput","t18","t19","t20","t21","Typography","t22","jsxs","name","ariaLabel","setRaw","beginEditing","commitOnEnter","finishEditingAndCommit","commitFromText","parsed","parseFloat","safe","Number","isFinite","e","target","e_0","key","blur","Symbol","for","e_1","TextField","rangeSelector","s","data","Range","id","useWidgetId","slice","useWidgetShallow"],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ function f(e, t) {
2
+ if (!t) return e;
3
+ const r = {
4
+ ...e
5
+ };
6
+ for (const n of Object.keys(t)) {
7
+ const o = e[n], i = t[n];
8
+ i !== void 0 && (r[n] = c(o, i));
9
+ }
10
+ return r;
11
+ }
12
+ function c(e, t) {
13
+ if (Array.isArray(e) && Array.isArray(t)) {
14
+ const r = Math.max(e.length, t.length), n = new Array(r);
15
+ for (let o = 0; o < r; o++) {
16
+ const i = e[o], s = t[o];
17
+ s === void 0 ? n[o] = i : i === void 0 ? n[o] = s : n[o] = c(i, s);
18
+ }
19
+ return n;
20
+ }
21
+ return u(e) && u(t) ? {
22
+ ...e,
23
+ ...t
24
+ } : t;
25
+ }
26
+ function u(e) {
27
+ if (e === null || typeof e != "object") return !1;
28
+ const t = Object.getPrototypeOf(e);
29
+ return t === Object.prototype || t === null;
30
+ }
31
+ function l(e, t) {
32
+ if (t == null) return;
33
+ if (!t.includes(".")) return t;
34
+ const r = t.split(".");
35
+ let n = e.palette;
36
+ for (const o of r) {
37
+ if (n == null || typeof n != "object")
38
+ return t;
39
+ n = n[o];
40
+ }
41
+ return typeof n == "string" ? n : t;
42
+ }
43
+ export {
44
+ f as m,
45
+ l as r
46
+ };
47
+ //# sourceMappingURL=resolve-theme-color-BdojIw0K.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-theme-color-BdojIw0K.js","sources":["../src/widgets-v2/utils/merge-options.ts","../src/widgets-v2/utils/resolve-theme-color.ts"],"sourcesContent":["/**\n * Shallow-merges two ECharts option objects:\n * - Top-level keys from both are combined.\n * - Arrays are merged by index (element-wise shallow merge, primitive override).\n * - Plain objects are shallow-merged.\n * - Primitives are overridden by the override value.\n *\n * Designed for the two-stage memoization pattern: first build a base option\n * object from data + theme + formatters, then call `mergeOptions(base, override)`\n * inside a second `useMemo` keyed on `[base, override]`.\n */\nexport function mergeOptions<T extends Record<string, unknown>>(\n base: T,\n override?: Partial<T>,\n): T {\n if (!override) return base\n const out: Record<string, unknown> = { ...base }\n for (const key of Object.keys(override) as (keyof T)[]) {\n const a = base[key]\n const b = override[key]\n if (b === undefined) continue\n out[key as string] = mergeValue(a, b)\n }\n return out as T\n}\n\nfunction mergeValue(a: unknown, b: unknown): unknown {\n if (Array.isArray(a) && Array.isArray(b)) {\n const len = Math.max(a.length, b.length)\n const result = new Array<unknown>(len)\n for (let i = 0; i < len; i++) {\n const av: unknown = a[i]\n const bv: unknown = b[i]\n if (bv === undefined) result[i] = av\n else if (av === undefined) result[i] = bv\n else result[i] = mergeValue(av, bv)\n }\n return result\n }\n if (isPlainObject(a) && isPlainObject(b)) {\n return { ...a, ...b }\n }\n return b\n}\n\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n if (v === null || typeof v !== 'object') return false\n const proto = Object.getPrototypeOf(v) as unknown\n return proto === Object.prototype || proto === null\n}\n","import type { Theme } from '@mui/material'\n\n/**\n * Resolve a colour string against the MUI theme palette.\n *\n * - `'primary.main'`, `'secondary.dark'`, `'success.contrastText'`, … →\n * walks `theme.palette` along the dot-separated path and returns the\n * resolved string when traversal succeeds.\n * - `'#ff0000'`, `'rgb(255, 0, 0)'`, `'red'` → returned as-is (assumed\n * raw CSS; ECharts consumes them directly).\n * - `undefined` → `undefined` (callers fall back to ECharts' palette).\n *\n * Used by the echart option factories (Bar, Pie, Histogram, Scatterplot,\n * Timeseries) so per-series colours specified as theme paths in the\n * unified `WidgetSeries` shape paint correctly. Category, Formula, and\n * Spread render colours through MUI's `sx` resolver, which already\n * handles theme paths — they don't need this helper.\n */\nexport function resolveThemeColor(\n theme: Theme,\n raw: string | undefined,\n): string | undefined {\n if (raw == null) return undefined\n if (!raw.includes('.')) return raw\n const parts = raw.split('.')\n let cursor: unknown = theme.palette\n for (const part of parts) {\n if (cursor == null || typeof cursor !== 'object') {\n return raw\n }\n cursor = (cursor as Record<string, unknown>)[part]\n }\n return typeof cursor === 'string' ? cursor : raw\n}\n"],"names":["mergeOptions","base","override","out","key","Object","keys","a","b","undefined","mergeValue","Array","isArray","len","Math","max","length","result","i","av","bv","isPlainObject","v","proto","getPrototypeOf","prototype","resolveThemeColor","theme","raw","includes","parts","split","cursor","palette","part"],"mappings":"AAWO,SAASA,EACdC,GACAC,GACG;AACH,MAAI,CAACA,EAAU,QAAOD;AACtB,QAAME,IAA+B;AAAA,IAAE,GAAGF;AAAAA,EAAAA;AAC1C,aAAWG,KAAOC,OAAOC,KAAKJ,CAAQ,GAAkB;AACtD,UAAMK,IAAIN,EAAKG,CAAG,GACZI,IAAIN,EAASE,CAAG;AACtB,IAAII,MAAMC,WACVN,EAAIC,CAAa,IAAIM,EAAWH,GAAGC,CAAC;AAAA,EACtC;AACA,SAAOL;AACT;AAEA,SAASO,EAAWH,GAAYC,GAAqB;AACnD,MAAIG,MAAMC,QAAQL,CAAC,KAAKI,MAAMC,QAAQJ,CAAC,GAAG;AACxC,UAAMK,IAAMC,KAAKC,IAAIR,EAAES,QAAQR,EAAEQ,MAAM,GACjCC,IAAS,IAAIN,MAAeE,CAAG;AACrC,aAASK,IAAI,GAAGA,IAAIL,GAAKK,KAAK;AAC5B,YAAMC,IAAcZ,EAAEW,CAAC,GACjBE,IAAcZ,EAAEU,CAAC;AACvB,MAAIE,MAAOX,SAAWQ,EAAOC,CAAC,IAAIC,IACzBA,MAAOV,SAAWQ,EAAOC,CAAC,IAAIE,IAClCH,EAAOC,CAAC,IAAIR,EAAWS,GAAIC,CAAE;AAAA,IACpC;AACA,WAAOH;AAAAA,EACT;AACA,SAAII,EAAcd,CAAC,KAAKc,EAAcb,CAAC,IAC9B;AAAA,IAAE,GAAGD;AAAAA,IAAG,GAAGC;AAAAA,EAAAA,IAEbA;AACT;AAEA,SAASa,EAAcC,GAA0C;AAC/D,MAAIA,MAAM,QAAQ,OAAOA,KAAM,SAAU,QAAO;AAChD,QAAMC,IAAQlB,OAAOmB,eAAeF,CAAC;AACrC,SAAOC,MAAUlB,OAAOoB,aAAaF,MAAU;AACjD;AC/BO,SAASG,EACdC,GACAC,GACoB;AACpB,MAAIA,KAAO,KAAM;AACjB,MAAI,CAACA,EAAIC,SAAS,GAAG,EAAG,QAAOD;AAC/B,QAAME,IAAQF,EAAIG,MAAM,GAAG;AAC3B,MAAIC,IAAkBL,EAAMM;AAC5B,aAAWC,KAAQJ,GAAO;AACxB,QAAIE,KAAU,QAAQ,OAAOA,KAAW;AACtC,aAAOJ;AAETI,IAAAA,IAAUA,EAAmCE,CAAI;AAAA,EACnD;AACA,SAAO,OAAOF,KAAW,WAAWA,IAASJ;AAC/C;"}
@@ -10,7 +10,7 @@ import "zustand/middleware";
10
10
  import "zustand/react/shallow";
11
11
  import { V as u, s as m, S as b, P as _, a as g, N as j } from "./style-DVnT6HC1.js";
12
12
  import "@mui/icons-material/FileDownload";
13
- import "./lasso-tool-BYbxrJ-7.js";
13
+ import "./lasso-tool-CDFj4zKY.js";
14
14
  import "./cjs-D4KH3azB.js";
15
15
  import "@mui/icons-material";
16
16
  import "html2canvas";
@@ -64,4 +64,4 @@ export {
64
64
  F as a,
65
65
  y as b
66
66
  };
67
- //# sourceMappingURL=spread-CTuIXZSM.js.map
67
+ //# sourceMappingURL=spread-Y9R1f5dm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spread-CTuIXZSM.js","sources":["../src/widgets-v2/spread/separator.tsx","../src/widgets-v2/spread/spread-ui.tsx","../src/widgets-v2/spread/spread.tsx"],"sourcesContent":["import { Value } from '../formula'\n\n/**\n * Em-dash separator placed between a Spread row's `min` and `max` values.\n * Built from the Formula {@link Value} primitive so typography (h5/600,\n * baseline alignment) matches the numbers around it. Renders with\n * `text.secondary` so it visually recedes between the two bounds.\n */\nexport function Separator() {\n return <Value color='inherit'>-</Value>\n}\n","import { Box } from '@mui/material'\nimport type { Ref } from 'react'\nimport { Note, Prefix, Series, Suffix, Value } from '../formula'\nimport { styles } from '../formula/style'\nimport { Separator } from './separator'\nimport type { SpreadDataItem } from './types'\n\nexport interface SpreadUIProps {\n items: readonly SpreadDataItem[]\n /** Number formatter — applied to each item's `min` and `max`. */\n formatter?: (value: number) => string\n /** Forwarded to the root `<Box>` so consumers can capture the DOM (PNG export). */\n ref?: Ref<HTMLDivElement>\n}\n\n/**\n * Pure presentational component for the Spread widget. Each item renders as\n * a row containing (in order): optional `Series` avatar, a body with\n * `[prefix] min — max [suffix]` plus optional `Note`. Reuses the Formula\n * primitives ({@link Series}, {@link Prefix}, {@link Value}, {@link Suffix},\n * {@link Note}) and the Formula row styles so Spread and Formula stay\n * visually aligned when used together.\n */\nexport function SpreadUI({ items, formatter, ref }: SpreadUIProps) {\n const fmt = formatter ?? ((n: number) => String(n))\n return (\n <Box ref={ref} sx={styles.root}>\n {items.map((item, i) => (\n // Composite of series name + min/max bounds for stability across\n // reorders; falls back to the index when bounds happen to collide.\n <Box\n key={`spread-${item.series?.name ?? ''}-${item.min}-${item.max}-${i}`}\n sx={styles.row}\n >\n {item.series ? (\n <Series name={item.series.name} color={item.series.color} />\n ) : null}\n <Box sx={styles.body}>\n <Box sx={styles.valueRow}>\n {item.prefix ? <Prefix>{item.prefix}</Prefix> : null}\n <Value color={item.color}>{fmt(item.min)}</Value>\n <Separator />\n <Value color={item.color}>{fmt(item.max)}</Value>\n {item.suffix ? <Suffix>{item.suffix}</Suffix> : null}\n </Box>\n {item.note ? <Note>{item.note}</Note> : null}\n </Box>\n </Box>\n ))}\n </Box>\n )\n}\n","import { useWidgetId, useWidgetShallow } from '../stores'\nimport { SpreadUI } from './spread-ui'\nimport type { SpreadWidgetData } from './types'\n\ninterface SpreadSlice {\n data: SpreadWidgetData\n formatter?: (value: number) => string\n}\n\n// Stable empty-data sentinel — keeps the slice's `data` reference stable\n// when the underlying store value is null/undefined so the shallow-equality\n// gate in `useWidgetShallow` doesn't re-render every commit.\nconst EMPTY_DATA: SpreadWidgetData = Object.freeze([]) as SpreadWidgetData\n\nconst spreadSelector = (s: {\n data: unknown\n formatter?: (value: number) => string\n}): SpreadSlice => ({\n data: (s.data ?? EMPTY_DATA) as SpreadWidgetData,\n formatter: s.formatter,\n})\n\n/**\n * Stateful Spread bridge — reads `data` (post-pipeline) and `formatter` from\n * the per-widget store and forwards them to the pure {@link SpreadUI}.\n */\nexport function Spread() {\n const id = useWidgetId()\n const slice = useWidgetShallow(id, spreadSelector)\n return <SpreadUI items={slice.data} formatter={slice.formatter} />\n}\n"],"names":["Separator","$","_c","t0","Symbol","for","jsx","Value","SpreadUI","items","formatter","ref","fmt","_temp","t1","t2","item","i","Box","styles","row","series","Series","name","color","jsxs","body","valueRow","prefix","Prefix","min","max","suffix","Suffix","note","Note","map","root","n","String","EMPTY_DATA","Object","freeze","spreadSelector","s","data","Spread","id","useWidgetId","slice","useWidgetShallow"],"mappings":"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"}
1
+ {"version":3,"file":"spread-Y9R1f5dm.js","sources":["../src/widgets-v2/spread/separator.tsx","../src/widgets-v2/spread/spread-ui.tsx","../src/widgets-v2/spread/spread.tsx"],"sourcesContent":["import { Value } from '../formula'\n\n/**\n * Em-dash separator placed between a Spread row's `min` and `max` values.\n * Built from the Formula {@link Value} primitive so typography (h5/600,\n * baseline alignment) matches the numbers around it. Renders with\n * `text.secondary` so it visually recedes between the two bounds.\n */\nexport function Separator() {\n return <Value color='inherit'>-</Value>\n}\n","import { Box } from '@mui/material'\nimport type { Ref } from 'react'\nimport { Note, Prefix, Series, Suffix, Value } from '../formula'\nimport { styles } from '../formula/style'\nimport { Separator } from './separator'\nimport type { SpreadDataItem } from './types'\n\nexport interface SpreadUIProps {\n items: readonly SpreadDataItem[]\n /** Number formatter — applied to each item's `min` and `max`. */\n formatter?: (value: number) => string\n /** Forwarded to the root `<Box>` so consumers can capture the DOM (PNG export). */\n ref?: Ref<HTMLDivElement>\n}\n\n/**\n * Pure presentational component for the Spread widget. Each item renders as\n * a row containing (in order): optional `Series` avatar, a body with\n * `[prefix] min — max [suffix]` plus optional `Note`. Reuses the Formula\n * primitives ({@link Series}, {@link Prefix}, {@link Value}, {@link Suffix},\n * {@link Note}) and the Formula row styles so Spread and Formula stay\n * visually aligned when used together.\n */\nexport function SpreadUI({ items, formatter, ref }: SpreadUIProps) {\n const fmt = formatter ?? ((n: number) => String(n))\n return (\n <Box ref={ref} sx={styles.root}>\n {items.map((item, i) => (\n // Composite of series name + min/max bounds for stability across\n // reorders; falls back to the index when bounds happen to collide.\n <Box\n key={`spread-${item.series?.name ?? ''}-${item.min}-${item.max}-${i}`}\n sx={styles.row}\n >\n {item.series ? (\n <Series name={item.series.name} color={item.series.color} />\n ) : null}\n <Box sx={styles.body}>\n <Box sx={styles.valueRow}>\n {item.prefix ? <Prefix>{item.prefix}</Prefix> : null}\n <Value color={item.color}>{fmt(item.min)}</Value>\n <Separator />\n <Value color={item.color}>{fmt(item.max)}</Value>\n {item.suffix ? <Suffix>{item.suffix}</Suffix> : null}\n </Box>\n {item.note ? <Note>{item.note}</Note> : null}\n </Box>\n </Box>\n ))}\n </Box>\n )\n}\n","import { useWidgetId, useWidgetShallow } from '../stores'\nimport { SpreadUI } from './spread-ui'\nimport type { SpreadWidgetData } from './types'\n\ninterface SpreadSlice {\n data: SpreadWidgetData\n formatter?: (value: number) => string\n}\n\n// Stable empty-data sentinel — keeps the slice's `data` reference stable\n// when the underlying store value is null/undefined so the shallow-equality\n// gate in `useWidgetShallow` doesn't re-render every commit.\nconst EMPTY_DATA: SpreadWidgetData = Object.freeze([]) as SpreadWidgetData\n\nconst spreadSelector = (s: {\n data: unknown\n formatter?: (value: number) => string\n}): SpreadSlice => ({\n data: (s.data ?? EMPTY_DATA) as SpreadWidgetData,\n formatter: s.formatter,\n})\n\n/**\n * Stateful Spread bridge — reads `data` (post-pipeline) and `formatter` from\n * the per-widget store and forwards them to the pure {@link SpreadUI}.\n */\nexport function Spread() {\n const id = useWidgetId()\n const slice = useWidgetShallow(id, spreadSelector)\n return <SpreadUI items={slice.data} formatter={slice.formatter} />\n}\n"],"names":["Separator","$","_c","t0","Symbol","for","jsx","Value","SpreadUI","items","formatter","ref","fmt","_temp","t1","t2","item","i","Box","styles","row","series","Series","name","color","jsxs","body","valueRow","prefix","Prefix","min","max","suffix","Suffix","note","Note","map","root","n","String","EMPTY_DATA","Object","freeze","spreadSelector","s","data","Spread","id","useWidgetId","slice","useWidgetShallow"],"mappings":"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"}