@carto/ps-react-ui 4.12.2 → 4.14.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/{category-Dnd2_j0x.js → category-CGS_eHr4.js} +2 -2
  2. package/dist/{category-Dnd2_j0x.js.map → category-CGS_eHr4.js.map} +1 -1
  3. package/dist/{change-column-DjjwoPt1.js → change-column-CiVAjOUB.js} +2 -2
  4. package/dist/{change-column-DjjwoPt1.js.map → change-column-CiVAjOUB.js.map} +1 -1
  5. package/dist/components.js +1232 -777
  6. package/dist/components.js.map +1 -1
  7. package/dist/{data-zoom-layout-CkVnm6ej.js → data-zoom-layout-D_FYdnap.js} +2 -2
  8. package/dist/{data-zoom-layout-CkVnm6ej.js.map → data-zoom-layout-D_FYdnap.js.map} +1 -1
  9. package/dist/{download-config-oJIFZ2WC.js → download-config-OKlLLSW_.js} +2 -2
  10. package/dist/{download-config-oJIFZ2WC.js.map → download-config-OKlLLSW_.js.map} +1 -1
  11. package/dist/{lasso-tool-CDFj4zKY.js → lasso-tool-YLFRgb-S.js} +182 -154
  12. package/dist/lasso-tool-YLFRgb-S.js.map +1 -0
  13. package/dist/legend/stores.js +20 -0
  14. package/dist/legend/stores.js.map +1 -0
  15. package/dist/legend.js +1536 -0
  16. package/dist/legend.js.map +1 -0
  17. package/dist/selectors-DwHj6mE2.js +388 -0
  18. package/dist/selectors-DwHj6mE2.js.map +1 -0
  19. package/dist/{spread-DYNpzgh_.js → spread-4MYPOntd.js} +2 -2
  20. package/dist/{spread-DYNpzgh_.js.map → spread-4MYPOntd.js.map} +1 -1
  21. package/dist/{table-B3ZWWhJt.js → table-CTcLOycx.js} +2 -2
  22. package/dist/{table-B3ZWWhJt.js.map → table-CTcLOycx.js.map} +1 -1
  23. package/dist/types/components/index.d.ts +5 -2
  24. package/dist/types/components/lasso-tool/geometry-toolbar.d.ts +13 -0
  25. package/dist/types/components/lasso-tool/icons.d.ts +6 -0
  26. package/dist/types/components/lasso-tool/lasso-tool.d.ts +1 -1
  27. package/dist/types/components/lasso-tool/layer-filters.d.ts +10 -0
  28. package/dist/types/components/lasso-tool/styles.d.ts +1 -1
  29. package/dist/types/components/lasso-tool/types.d.ts +62 -1
  30. package/dist/types/components/responsive-drawer/responsive-drawer.d.ts +35 -3
  31. package/dist/types/legend/components/contexts.d.ts +20 -0
  32. package/dist/types/legend/components/icons.d.ts +12 -0
  33. package/dist/types/legend/components/index.d.ts +26 -0
  34. package/dist/types/legend/components/legend-actions/legend-actions.d.ts +24 -0
  35. package/dist/types/legend/components/legend-actions/styles.d.ts +7 -0
  36. package/dist/types/legend/components/legend-category/legend-category-ui.d.ts +13 -0
  37. package/dist/types/legend/components/legend-category/styles.d.ts +52 -0
  38. package/dist/types/legend/components/legend-config-select/legend-config-select.d.ts +14 -0
  39. package/dist/types/legend/components/legend-config-select/styles.d.ts +44 -0
  40. package/dist/types/legend/components/legend-group/legend-group.d.ts +21 -0
  41. package/dist/types/legend/components/legend-group/styles.d.ts +63 -0
  42. package/dist/types/legend/components/legend-icon/legend-icon-ui.d.ts +10 -0
  43. package/dist/types/legend/components/legend-icon/styles.d.ts +52 -0
  44. package/dist/types/legend/components/legend-item/legend-item-ui.d.ts +14 -0
  45. package/dist/types/legend/components/legend-item/legend-item.d.ts +10 -0
  46. package/dist/types/legend/components/legend-item/styles.d.ts +7 -0
  47. package/dist/types/legend/components/legend-opacity/legend-opacity.d.ts +32 -0
  48. package/dist/types/legend/components/legend-opacity/styles.d.ts +23 -0
  49. package/dist/types/legend/components/legend-proportion/legend-proportion-ui.d.ts +16 -0
  50. package/dist/types/legend/components/legend-proportion/styles.d.ts +37 -0
  51. package/dist/types/legend/components/legend-ramp/legend-ramp-ui.d.ts +20 -0
  52. package/dist/types/legend/components/legend-ramp/styles.d.ts +53 -0
  53. package/dist/types/legend/components/legend-row/legend-row.d.ts +23 -0
  54. package/dist/types/legend/components/legend-row/styles.d.ts +77 -0
  55. package/dist/types/legend/components/legend-row-menu/legend-row-menu.d.ts +18 -0
  56. package/dist/types/legend/components/legend-row-menu/legend-zoom-to.d.ts +15 -0
  57. package/dist/types/legend/components/legend-swatch/legend-swatch.d.ts +26 -0
  58. package/dist/types/legend/components/legend-visibility-toggle/legend-visibility-toggle.d.ts +35 -0
  59. package/dist/types/legend/index.d.ts +88 -0
  60. package/dist/types/legend/provider/index.d.ts +6 -0
  61. package/dist/types/legend/provider/labels.d.ts +27 -0
  62. package/dist/types/legend/provider/legend-config-context.d.ts +7 -0
  63. package/dist/types/legend/provider/legend-provider.d.ts +38 -0
  64. package/dist/types/legend/stores/index.d.ts +5 -0
  65. package/dist/types/legend/stores/legend-context.d.ts +4 -0
  66. package/dist/types/legend/stores/legend-store-registry.d.ts +39 -0
  67. package/dist/types/legend/stores/legend-store.test.d.ts +1 -0
  68. package/dist/types/legend/stores/selectors.d.ts +33 -0
  69. package/dist/types/legend/stores/types.d.ts +275 -0
  70. package/dist/widgets/actions.js +1 -1
  71. package/dist/widgets/bar.js +1 -1
  72. package/dist/widgets/category.js +1 -1
  73. package/dist/widgets/formula.js +1 -1
  74. package/dist/widgets/histogram.js +1 -1
  75. package/dist/widgets/markdown.js +1 -1
  76. package/dist/widgets/pie.js +1 -1
  77. package/dist/widgets/scatterplot.js +1 -1
  78. package/dist/widgets/spread.js +1 -1
  79. package/dist/widgets/table.js +1 -1
  80. package/dist/widgets/timeseries.js +1 -1
  81. package/dist/widgets/utils.js +1 -1
  82. package/dist/widgets/wrapper.js +1 -1
  83. package/dist/widgets-v2/actions.js +1 -1
  84. package/dist/widgets-v2/bar.js +2 -2
  85. package/dist/widgets-v2/category.js +2 -2
  86. package/dist/widgets-v2/formula.js +1 -1
  87. package/dist/widgets-v2/histogram.js +2 -2
  88. package/dist/widgets-v2/markdown.js +1 -1
  89. package/dist/widgets-v2/pie.js +1 -1
  90. package/dist/widgets-v2/scatterplot.js +1 -1
  91. package/dist/widgets-v2/spread.js +2 -2
  92. package/dist/widgets-v2/table.js +3 -3
  93. package/dist/widgets-v2/timeseries.js +2 -2
  94. package/dist/widgets-v2/utils.js +1 -1
  95. package/dist/widgets-v2.js +5 -5
  96. package/package.json +11 -3
  97. package/src/components/geolocation-controls/geolocation-controls.test.tsx +15 -0
  98. package/src/components/geolocation-controls/geolocation-controls.tsx +19 -3
  99. package/src/components/index.ts +10 -0
  100. package/src/components/lasso-tool/const.tsx +1 -0
  101. package/src/components/lasso-tool/geometry-toolbar.test.tsx +138 -0
  102. package/src/components/lasso-tool/geometry-toolbar.tsx +258 -0
  103. package/src/components/lasso-tool/icons.tsx +40 -0
  104. package/src/components/lasso-tool/lasso-tool.tsx +25 -1
  105. package/src/components/lasso-tool/layer-filters.test.tsx +90 -0
  106. package/src/components/lasso-tool/layer-filters.tsx +236 -0
  107. package/src/components/lasso-tool/styles.ts +1 -1
  108. package/src/components/lasso-tool/types.ts +66 -1
  109. package/src/components/responsive-drawer/responsive-drawer.test.tsx +129 -25
  110. package/src/components/responsive-drawer/responsive-drawer.tsx +149 -16
  111. package/src/legend/components/contexts.ts +32 -0
  112. package/src/legend/components/icons.tsx +22 -0
  113. package/src/legend/components/index.ts +39 -0
  114. package/src/legend/components/legend-actions/legend-actions.tsx +57 -0
  115. package/src/legend/components/legend-actions/styles.ts +9 -0
  116. package/src/legend/components/legend-category/legend-category-ui.tsx +91 -0
  117. package/src/legend/components/legend-category/styles.ts +61 -0
  118. package/src/legend/components/legend-config-select/legend-config-select.tsx +96 -0
  119. package/src/legend/components/legend-config-select/styles.ts +48 -0
  120. package/src/legend/components/legend-group/legend-group.test.tsx +115 -0
  121. package/src/legend/components/legend-group/legend-group.tsx +88 -0
  122. package/src/legend/components/legend-group/styles.ts +82 -0
  123. package/src/legend/components/legend-icon/legend-icon-ui.tsx +56 -0
  124. package/src/legend/components/legend-icon/styles.ts +56 -0
  125. package/src/legend/components/legend-item/legend-item-ui.test.tsx +362 -0
  126. package/src/legend/components/legend-item/legend-item-ui.tsx +43 -0
  127. package/src/legend/components/legend-item/legend-item.tsx +34 -0
  128. package/src/legend/components/legend-item/styles.ts +11 -0
  129. package/src/legend/components/legend-opacity/legend-opacity.tsx +179 -0
  130. package/src/legend/components/legend-opacity/styles.ts +28 -0
  131. package/src/legend/components/legend-proportion/legend-proportion-ui.tsx +122 -0
  132. package/src/legend/components/legend-proportion/styles.ts +43 -0
  133. package/src/legend/components/legend-ramp/legend-ramp-ui.tsx +159 -0
  134. package/src/legend/components/legend-ramp/styles.ts +62 -0
  135. package/src/legend/components/legend-row/legend-row.test.tsx +498 -0
  136. package/src/legend/components/legend-row/legend-row.tsx +129 -0
  137. package/src/legend/components/legend-row/styles.ts +111 -0
  138. package/src/legend/components/legend-row-menu/legend-row-menu.tsx +68 -0
  139. package/src/legend/components/legend-row-menu/legend-zoom-to.tsx +35 -0
  140. package/src/legend/components/legend-swatch/legend-swatch.test.tsx +109 -0
  141. package/src/legend/components/legend-swatch/legend-swatch.tsx +237 -0
  142. package/src/legend/components/legend-visibility-toggle/legend-visibility-toggle.tsx +127 -0
  143. package/src/legend/index.ts +121 -0
  144. package/src/legend/provider/index.ts +6 -0
  145. package/src/legend/provider/labels.ts +59 -0
  146. package/src/legend/provider/legend-config-context.ts +15 -0
  147. package/src/legend/provider/legend-provider.tsx +102 -0
  148. package/src/legend/stores/index.ts +46 -0
  149. package/src/legend/stores/legend-context.ts +17 -0
  150. package/src/legend/stores/legend-store-registry.ts +639 -0
  151. package/src/legend/stores/legend-store.test.ts +457 -0
  152. package/src/legend/stores/selectors.ts +65 -0
  153. package/src/legend/stores/types.ts +347 -0
  154. package/dist/lasso-tool-CDFj4zKY.js.map +0 -1
@@ -0,0 +1,347 @@
1
+ import type { ReactNode } from 'react'
2
+ import type { StoreApi } from 'zustand'
3
+
4
+ /** Floating panel anchor position. */
5
+ export type LegendPosition =
6
+ | 'top-left'
7
+ | 'top-right'
8
+ | 'bottom-left'
9
+ | 'bottom-right'
10
+
11
+ // ─── Legend variables (discriminated union) ────────────────────────────────
12
+ // The typed payload that drives each item renderer. Keyed by `type` so a
13
+ // single `LegendItemUI` can switch and the future adapter has one clear
14
+ // target to map `layer.legend.variables` into.
15
+
16
+ /**
17
+ * Layout direction of a category/icon legend's items. `'horizontal'` flows
18
+ * the swatch+label pairs left-to-right, wrapping onto multiple rows.
19
+ */
20
+ export type LegendOrientation = 'vertical' | 'horizontal'
21
+
22
+ /** Swatch shape for a category legend. */
23
+ export type LegendSwatchShape = 'square' | 'circle' | 'line'
24
+
25
+ /** Fill pattern for a filled square/circle swatch (`isStrokeColor: false`). */
26
+ export type LegendFillPattern =
27
+ | 'solid'
28
+ | 'horizontal'
29
+ | 'vertical'
30
+ | 'diagonal'
31
+ | 'diagonal-alt'
32
+ | 'cross'
33
+ | 'dots'
34
+ | 'grid'
35
+
36
+ /**
37
+ * Border style for a stroked square/circle swatch (`isStrokeColor: true`), or
38
+ * the line style for `shape: 'line'`. `corners` applies to squares only;
39
+ * `dash-dot` applies to lines only — inapplicable values degrade gracefully.
40
+ */
41
+ export type LegendStrokeStyle =
42
+ | 'solid'
43
+ | 'dashed'
44
+ | 'dotted'
45
+ | 'dash-dot'
46
+ | 'corners'
47
+
48
+ export interface LegendCategoryItem {
49
+ label: string
50
+ /** Fill or stroke color (see `isStrokeColor`). */
51
+ color: string
52
+ /**
53
+ * Optional value shown alongside the label — a pre-formatted node, so the
54
+ * consumer controls the formatting (e.g. `'12%'`, `'1.2K'`, or any element).
55
+ */
56
+ value?: ReactNode
57
+ /** Optional marker diameter/length in px (the "Small/Medium/Large/XL" sizes). */
58
+ size?: number
59
+ /** Override the variable-level swatch shape for this item. */
60
+ shape?: LegendSwatchShape
61
+ /** Override the variable-level fill pattern for this item (mix patterns in one list). */
62
+ fillPattern?: LegendFillPattern
63
+ /** Override the variable-level border/line style for this item. */
64
+ strokeStyle?: LegendStrokeStyle
65
+ /** Override the variable-level fill-vs-outline mode for this item. */
66
+ isStrokeColor?: boolean
67
+ }
68
+
69
+ export interface LegendCategoryVariable {
70
+ type: 'category'
71
+ items: LegendCategoryItem[]
72
+ /** Default swatch shape for all items (each item may override). Default `'circle'`. */
73
+ shape?: LegendSwatchShape
74
+ /**
75
+ * Default fill-vs-outline mode (each item may override). When true, `color`
76
+ * paints the marker border/outline instead of its fill.
77
+ */
78
+ isStrokeColor?: boolean
79
+ /**
80
+ * Default fill pattern when filled (each item may override — mix patterns
81
+ * in one list). Default `'solid'`.
82
+ */
83
+ fillPattern?: LegendFillPattern
84
+ /**
85
+ * Default border style when stroked, or line style for `shape: 'line'`
86
+ * (each item may override). Default `'solid'`.
87
+ */
88
+ strokeStyle?: LegendStrokeStyle
89
+ /** Item layout direction. Default `'vertical'`. */
90
+ orientation?: LegendOrientation
91
+ }
92
+
93
+ export interface LegendRampStop {
94
+ label: string
95
+ value: number
96
+ }
97
+
98
+ export interface LegendRampVariable {
99
+ type: 'ramp'
100
+ /** Ordered low→high colors (hex / rgb / css). */
101
+ colors: string[]
102
+ /**
103
+ * Ordered low→high stops. Discrete ramps **require `colors.length + 1`**
104
+ * stops — the boundaries between color steps, including both outer edges —
105
+ * and each label is centered on its boundary line (keep labels short, e.g.
106
+ * `20K`; there is no collision handling). A discrete ramp with any other
107
+ * stop count is incoherent and renders an inline error instead of the bar.
108
+ * Continuous ramps show only the first/last endpoints.
109
+ */
110
+ stops: LegendRampStop[]
111
+ /** Continuous gradient bar vs. discrete color steps. */
112
+ isContinuous: boolean
113
+ /**
114
+ * Average value, marked as a dashed vertical line on the bar (tooltip shows
115
+ * the formatted value). Positioned linearly between the first and last stop
116
+ * `value`s; out-of-range averages clamp to the bar's edge.
117
+ */
118
+ avg?: number
119
+ /**
120
+ * Formats `avg` for its tooltip. Default `String(avg)` — pass e.g.
121
+ * `(v) => formatNumber(v, 'es-ES')` or `(v) => `${v}%``. Use a stable
122
+ * reference (same contract as the other variable fields).
123
+ */
124
+ formatValue?: (value: number) => ReactNode
125
+ /** Attribute the color is based on (shown as "Color based on"). */
126
+ attribute?: string
127
+ }
128
+
129
+ export interface LegendProportionVariable {
130
+ type: 'proportion'
131
+ min: number
132
+ max: number
133
+ /**
134
+ * Explicit value breaks to label (order-insensitive — the renderer sorts
135
+ * descending and caps at the **4 largest**). When omitted (or fewer than 2
136
+ * entries), breaks are evenly spaced between `min` and `max` over `steps`.
137
+ */
138
+ stops?: number[]
139
+ /**
140
+ * Number of nested circles and derived value breaks, clamped to **2–4**.
141
+ * Defaults to 4. Ignored when explicit `stops` are provided (their count,
142
+ * capped at 4, wins). Circles and labels always match 1:1. Edge case: when
143
+ * `min === max` the renderer collapses to a **single** circle/break (the
144
+ * shared value), regardless of `steps`.
145
+ */
146
+ steps?: number
147
+ /**
148
+ * Formats each derived break (MAX / middle / MIN). Default `String(value)`
149
+ * — pass e.g. `(v) => formatNumber(v, 'es-ES')`. Use a stable reference
150
+ * (same contract as the other variable fields).
151
+ */
152
+ formatValue?: (value: number) => ReactNode
153
+ /** Attribute the size is based on (shown as "Radius range by"). */
154
+ attribute?: string
155
+ }
156
+
157
+ export interface LegendIconItem {
158
+ label: string
159
+ /** Icon URL (data URI or external). */
160
+ icon: string
161
+ /**
162
+ * Optional value shown alongside the label — a pre-formatted node, so the
163
+ * consumer controls the formatting (e.g. `'12%'`, `'1.2K'`, or any element).
164
+ */
165
+ value?: ReactNode
166
+ }
167
+
168
+ export interface LegendIconVariable {
169
+ type: 'icon'
170
+ items: LegendIconItem[]
171
+ /** Item layout direction. Default `'vertical'`. */
172
+ orientation?: LegendOrientation
173
+ }
174
+
175
+ export type LegendVariable =
176
+ | LegendCategoryVariable
177
+ | LegendRampVariable
178
+ | LegendProportionVariable
179
+ | LegendIconVariable
180
+
181
+ // ─── Store entities ─────────────────────────────────────────────────────────
182
+
183
+ /**
184
+ * One section of a layer's configuration select. The select's menu lists each
185
+ * section under its `title` (omitted when the layer has a single section);
186
+ * every section keeps its own highlighted `active` option. The closed field
187
+ * displays the first section's `active`.
188
+ */
189
+ export interface LegendConfigSection {
190
+ id: string
191
+ /** Section heading in the menu (e.g. "Global"). Hidden for a single section. */
192
+ title?: string
193
+ options: string[]
194
+ /** The section's currently-selected option. */
195
+ active: string
196
+ }
197
+
198
+ /** A layer row in the legend. Holds both static definition and interactive state. */
199
+ export interface LegendLayer {
200
+ id: string
201
+ name: string
202
+ /** Secondary line (e.g. "Zoom level 1 – 12"). */
203
+ subtitle?: string
204
+ visible: boolean
205
+ /** 0–1. */
206
+ opacity: number
207
+ collapsed: boolean
208
+ /**
209
+ * @internal Collapsed state snapshotted when the layer was hidden — restored
210
+ * on show so a manual collapse/expand persists across visibility toggles.
211
+ * Managed by `setVisibility`/`setCollapsed`; do not set from outside.
212
+ */
213
+ collapsedBeforeHide?: boolean
214
+ /** Sort order among siblings (lower = first). */
215
+ order: number
216
+ /** Owning group id, if the layer belongs to a group. */
217
+ groupId?: string
218
+ /** Show the opacity header action (slider + input popover) for this layer. */
219
+ opacityControl?: boolean
220
+ /**
221
+ * Configuration-select sections. When absent (or empty), the row renders no
222
+ * select. User-picked `active`s survive Provider re-syncs as long as the
223
+ * section id still exists and the pick is still among its `options`.
224
+ */
225
+ sections?: LegendConfigSection[]
226
+ /** Footer helper note — one per layer, shown after all variables. */
227
+ helperText?: ReactNode
228
+ /**
229
+ * Ordered item renderers, stacked top-to-bottom in the row body (a layer
230
+ * can mix e.g. two category lists and a proportion). Pass a stable array
231
+ * reference — `_sync` compares it by reference, like the other prop-driven
232
+ * fields.
233
+ */
234
+ variables: LegendVariable[]
235
+ }
236
+
237
+ /**
238
+ * A group of layer rows. A group has no stored visibility of its own — it is
239
+ * derived from its member layers (see `selectGroupVisibility`): all visible →
240
+ * `'visible'`, none visible → `'hidden'`, otherwise `'mixed'`.
241
+ */
242
+ export interface LegendGroup {
243
+ id: string
244
+ label: string
245
+ collapsed: boolean
246
+ /**
247
+ * @internal Collapsed state snapshotted when the group was hidden via
248
+ * `setGroupVisibility` — restored on show. Managed by the setters.
249
+ */
250
+ collapsedBeforeHide?: boolean
251
+ order: number
252
+ }
253
+
254
+ // ─── Provider input shapes ──────────────────────────────────────────────────
255
+ // Interactive fields are optional on input; the store seeds defaults and
256
+ // preserves user interaction across re-syncs.
257
+
258
+ /** @experimental This API is new and may change in a future release. */
259
+ export interface LegendLayerInput extends Omit<
260
+ LegendLayer,
261
+ 'visible' | 'opacity' | 'collapsed' | 'collapsedBeforeHide' | 'order'
262
+ > {
263
+ visible?: boolean
264
+ opacity?: number
265
+ collapsed?: boolean
266
+ order?: number
267
+ }
268
+
269
+ /** @experimental This API is new and may change in a future release. */
270
+ export interface LegendGroupInput extends Omit<
271
+ LegendGroup,
272
+ 'collapsed' | 'collapsedBeforeHide' | 'order'
273
+ > {
274
+ collapsed?: boolean
275
+ order?: number
276
+ }
277
+
278
+ // ─── Store shape ──────────────────────────────────────────────────────────────
279
+
280
+ export interface LegendState {
281
+ layers: Record<string, LegendLayer>
282
+ groups: Record<string, LegendGroup>
283
+
284
+ // Layer setters — the "set layer values" feature that replaces react-maps
285
+ // `useLegend`. All mutations go through these.
286
+ setVisibility: (id: string, visible: boolean) => void
287
+ setOpacity: (id: string, opacity: number) => void
288
+ setCollapsed: (id: string, collapsed: boolean) => void
289
+ /**
290
+ * Pick a section's active option in the layer's configuration select.
291
+ * No-op for unknown layers/sections or when `value` is not one of the
292
+ * section's `options`.
293
+ */
294
+ setSectionValue: (id: string, sectionId: string, value: string) => void
295
+
296
+ // Group setters
297
+ /**
298
+ * Show/hide **all member layers** of a group (the group itself has no stored
299
+ * visibility — it is derived from its members). Each member keeps its own
300
+ * collapse snapshot; the group additionally collapses when hiding and
301
+ * restores its pre-hide collapse state when showing. No-op when the group
302
+ * is already at the target state or has no members.
303
+ */
304
+ setGroupVisibility: (id: string, visible: boolean) => void
305
+ setGroupCollapsed: (id: string, collapsed: boolean) => void
306
+
307
+ // Imperative add/remove/update — an alternative to the Provider's bulk
308
+ // `layers`/`groups` props. To use these, keep those props stable (pass the
309
+ // initial set once, or `[]`) so the Provider's `_sync` doesn't overwrite
310
+ // imperative changes on a later prop change.
311
+ /**
312
+ * Add a layer, or update it if `input.id` already exists. Interactive state
313
+ * (visible/opacity/collapsed/order and section actives) is preserved unless
314
+ * the input explicitly overrides it; new layers append to the end of their
315
+ * sibling bucket. No-op when an existing layer is unchanged.
316
+ */
317
+ setLegendLayer: (input: LegendLayerInput) => void
318
+ /**
319
+ * Remove a layer and densely re-number the remaining siblings. No-op for an
320
+ * unknown id.
321
+ */
322
+ removeLegendLayer: (id: string) => void
323
+ /**
324
+ * Add a group, or update it if `input.id` already exists (collapse/order
325
+ * preserved on update). No-op when unchanged.
326
+ */
327
+ setLegendGroup: (input: LegendGroupInput) => void
328
+ /**
329
+ * Remove a group; its member layers are **un-grouped** (their `groupId` is
330
+ * cleared) so they survive as ungrouped rows rather than vanish. No-op for an
331
+ * unknown id.
332
+ */
333
+ removeLegendGroup: (id: string) => void
334
+
335
+ /**
336
+ * @internal Provider prop-sync. Adds new entities, updates static fields of
337
+ * known ones (preserving their interactive state), and removes vanished ones.
338
+ */
339
+ _sync: (layers: LegendLayerInput[], groups: LegendGroupInput[]) => void
340
+ }
341
+
342
+ export type LegendStoreApi = StoreApi<LegendState>
343
+
344
+ export interface LegendInit {
345
+ layers?: LegendLayerInput[]
346
+ groups?: LegendGroupInput[]
347
+ }
@@ -1 +0,0 @@
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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"}