@carto/ps-react-ui 4.13.0 → 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.
- package/dist/{category-Dnd2_j0x.js → category-CGS_eHr4.js} +2 -2
- package/dist/{category-Dnd2_j0x.js.map → category-CGS_eHr4.js.map} +1 -1
- package/dist/{change-column-DjjwoPt1.js → change-column-CiVAjOUB.js} +2 -2
- package/dist/{change-column-DjjwoPt1.js.map → change-column-CiVAjOUB.js.map} +1 -1
- package/dist/components.js +1160 -753
- package/dist/components.js.map +1 -1
- package/dist/{data-zoom-layout-CkVnm6ej.js → data-zoom-layout-D_FYdnap.js} +2 -2
- package/dist/{data-zoom-layout-CkVnm6ej.js.map → data-zoom-layout-D_FYdnap.js.map} +1 -1
- package/dist/{download-config-oJIFZ2WC.js → download-config-OKlLLSW_.js} +2 -2
- package/dist/{download-config-oJIFZ2WC.js.map → download-config-OKlLLSW_.js.map} +1 -1
- package/dist/{lasso-tool-CDFj4zKY.js → lasso-tool-YLFRgb-S.js} +182 -154
- package/dist/lasso-tool-YLFRgb-S.js.map +1 -0
- package/dist/{spread-DYNpzgh_.js → spread-4MYPOntd.js} +2 -2
- package/dist/{spread-DYNpzgh_.js.map → spread-4MYPOntd.js.map} +1 -1
- package/dist/{table-B3ZWWhJt.js → table-CTcLOycx.js} +2 -2
- package/dist/{table-B3ZWWhJt.js.map → table-CTcLOycx.js.map} +1 -1
- package/dist/types/components/index.d.ts +4 -2
- package/dist/types/components/lasso-tool/geometry-toolbar.d.ts +13 -0
- package/dist/types/components/lasso-tool/icons.d.ts +6 -0
- package/dist/types/components/lasso-tool/lasso-tool.d.ts +1 -1
- package/dist/types/components/lasso-tool/layer-filters.d.ts +10 -0
- package/dist/types/components/lasso-tool/styles.d.ts +1 -1
- package/dist/types/components/lasso-tool/types.d.ts +62 -1
- package/dist/widgets/actions.js +1 -1
- package/dist/widgets/bar.js +1 -1
- package/dist/widgets/category.js +1 -1
- package/dist/widgets/formula.js +1 -1
- package/dist/widgets/histogram.js +1 -1
- package/dist/widgets/markdown.js +1 -1
- package/dist/widgets/pie.js +1 -1
- package/dist/widgets/scatterplot.js +1 -1
- package/dist/widgets/spread.js +1 -1
- package/dist/widgets/table.js +1 -1
- package/dist/widgets/timeseries.js +1 -1
- package/dist/widgets/utils.js +1 -1
- package/dist/widgets/wrapper.js +1 -1
- package/dist/widgets-v2/actions.js +1 -1
- package/dist/widgets-v2/bar.js +2 -2
- package/dist/widgets-v2/category.js +2 -2
- package/dist/widgets-v2/formula.js +1 -1
- package/dist/widgets-v2/histogram.js +2 -2
- package/dist/widgets-v2/markdown.js +1 -1
- package/dist/widgets-v2/pie.js +1 -1
- package/dist/widgets-v2/scatterplot.js +1 -1
- package/dist/widgets-v2/spread.js +2 -2
- package/dist/widgets-v2/table.js +3 -3
- package/dist/widgets-v2/timeseries.js +2 -2
- package/dist/widgets-v2/utils.js +1 -1
- package/dist/widgets-v2.js +5 -5
- package/package.json +1 -1
- package/src/components/index.ts +8 -0
- package/src/components/lasso-tool/const.tsx +1 -0
- package/src/components/lasso-tool/geometry-toolbar.test.tsx +138 -0
- package/src/components/lasso-tool/geometry-toolbar.tsx +258 -0
- package/src/components/lasso-tool/icons.tsx +40 -0
- package/src/components/lasso-tool/lasso-tool.tsx +25 -1
- package/src/components/lasso-tool/layer-filters.test.tsx +90 -0
- package/src/components/lasso-tool/layer-filters.tsx +236 -0
- package/src/components/lasso-tool/styles.ts +1 -1
- package/src/components/lasso-tool/types.ts +66 -1
- package/dist/lasso-tool-CDFj4zKY.js.map +0 -1
package/dist/components.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sources":["../src/components/lasso-tool/lasso-tool-inline.tsx","../src/components/measurement-tools/icons.tsx","../src/components/measurement-tools/const.tsx","../src/components/measurement-tools/styles.ts","../src/components/measurement-tools/measurement-tools.tsx","../src/components/geolocation-controls/const.ts","../src/components/geolocation-controls/geolocation-controls.tsx","../src/components/zoom-controls/styles.ts","../src/components/zoom-controls/zoom-controls.tsx","../src/components/list-data/list-data-skeleton.tsx","../src/components/no-data-alert/no-data-alert.tsx","../src/hooks/use-skeleton.ts","../src/components/list-data/styles.ts","../src/components/list-data/list-data.tsx","../src/components/basemaps/styles.ts","../src/components/basemaps/const.ts","../src/components/basemaps/header.tsx","../src/components/basemaps/group-wrapper.tsx","../src/components/basemaps/group.tsx","../src/components/responsive-drawer/responsive-drawer.tsx","../src/components/basemaps/basemaps.tsx"],"sourcesContent":["import {\n Divider,\n Typography,\n SvgIcon,\n ToggleButton,\n Box,\n ToggleButtonGroup,\n Button,\n} from '@mui/material'\nimport { useMemo, type JSX, type MouseEvent, type ReactNode } from 'react'\nimport { styles } from './styles'\nimport type {\n LassoToolsComponentProps,\n LassoToolsInlineComponentProps,\n} from './types'\nimport { LASSO_TOOLS_LABELS } from './const'\nimport type { PickDeep } from 'type-fest'\nimport type { LassoToolsModes } from '../types'\nimport deepmerge from 'deepmerge'\nimport { LassoToolsUIChip } from './chip'\nimport { Tooltip } from '../tooltip/tooltip'\n\nconst EMPTY_VALUES: LassoToolsInlineComponentProps['values'] = []\nconst EMPTY_BOX_PROPS: NonNullable<LassoToolsInlineComponentProps['BoxProps']> =\n {}\n\n/**\n * Provides an inline layout variant of the lasso tools interface with toggle button groups for mode selection and inline chip management for spatial filters.\n *\n * @example\n * ```tsx\n * <LassoToolsInlineUI\n * enabled={enabled}\n * values={spatialFilters}\n * modes={modes}\n * modesMapping={modesMapping}\n * modeSelected={modeSelected}\n * onChangeMode={setModeSelected}\n * onChipToggle={handleChipToggle}\n * onDelete={handleDelete}\n * />\n * ```\n */\nexport function LassoToolsInlineUI({\n enabled,\n values = EMPTY_VALUES,\n chipProps,\n labels,\n modes,\n modesMapping,\n modeSelected,\n BoxProps: { sx, ...BoxProps } = EMPTY_BOX_PROPS,\n onChipToggle,\n onDelete,\n onChangeMode,\n onAllChipToggle,\n onAllDelete,\n}: LassoToolsInlineComponentProps): JSX.Element {\n const data = useMemo(() => {\n return deepmerge(modes, modesMapping)\n }, [modes, modesMapping])\n\n const { edit, ..._modes } = data\n\n const handleDelete: LassoToolsComponentProps['onDelete'] = (valueId) => {\n return onDelete(valueId)\n }\n\n const handleClick = (\n evt: MouseEvent<HTMLElement>,\n mode: NonNullable<(typeof modes)[keyof typeof modes]>['value'],\n ) => {\n evt.preventDefault()\n onChangeMode?.(mode)\n }\n\n const modeExists = (modeSelected ?? '') in modes\n\n const mode = (\n modeExists ? modeSelected : Object.keys(data)[0]\n ) as keyof typeof data\n\n const modeSelectedValue = enabled ? data[mode] : null\n\n const modesValues = Object.values(_modes)\n\n return (\n <Box\n sx={{\n ...styles.container,\n ...sx,\n }}\n {...BoxProps}\n className='inline'\n >\n <ModeList data={modesValues} labels={labels?.options}>\n <ToggleButtonGroup\n value={modeSelectedValue?.value}\n exclusive\n className='inline'\n sx={styles.options.menu}\n onChange={handleClick}\n >\n <OptionsList labels={labels?.options} data={modesValues} />\n {!!edit && (\n <>\n <Divider orientation='vertical' />\n <OptionsList\n labels={labels?.options}\n data={[\n {\n ...edit,\n disabled: !values.length,\n },\n ]}\n />\n </>\n )}\n </ToggleButtonGroup>\n </ModeList>\n <Divider flexItem />\n <NoData hasValues={!!values.length} labels={labels?.noData} />\n {!!values.length && (\n <Box sx={styles.chip.container} className='inline'>\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={onChipToggle}\n />\n ))}\n </Box>\n )}\n <Actions\n values={values}\n labels={labels?.actions}\n onAllChipToggle={onAllChipToggle}\n onAllDelete={onAllDelete}\n />\n </Box>\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 className='inline'\n >\n {modeTitle}\n </Typography>\n {children}\n </>\n )\n}\n\nfunction OptionsList({\n data,\n labels,\n}: {\n labels?: PickDeep<LassoToolsComponentProps['labels'], 'options'>['options']\n data: (LassoToolsComponentProps['modes'] &\n LassoToolsComponentProps['modesMapping'])[keyof LassoToolsModes][]\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 <Tooltip key={mode.value} title={label} placement='bottom'>\n <ToggleButton\n disabled={!!mode.disabled}\n value={mode.value}\n aria-label={mode.value}\n >\n <SvgIcon>{mode.icon}</SvgIcon>\n </ToggleButton>\n </Tooltip>\n )\n })\n}\n\nfunction NoData({\n hasValues,\n labels,\n}: {\n hasValues: boolean\n labels: PickDeep<LassoToolsComponentProps['labels'], 'noData'>['noData']\n}) {\n if (hasValues) {\n return null\n }\n\n const title = labels?.title ?? LASSO_TOOLS_LABELS.noData.title\n const description =\n labels?.description ?? LASSO_TOOLS_LABELS.noData.description\n\n return (\n <>\n <Typography variant='body1' color='textSecondary'>\n {title}\n </Typography>\n <Typography variant='body2' color='textSecondary'>\n {description}\n </Typography>\n </>\n )\n}\n\nfunction Actions({\n values,\n labels,\n onAllChipToggle,\n onAllDelete,\n}: Pick<\n LassoToolsComponentProps,\n 'values' | 'onAllChipToggle' | 'onAllDelete'\n> & {\n labels?: PickDeep<LassoToolsComponentProps['labels'], 'actions'>['actions']\n}) {\n if (values.length <= 1) {\n return null\n }\n\n const hasVisible = values.some((value) => value.visible)\n\n const toggleAllLabel = hasVisible\n ? (labels?.toggleAll?.active ?? LASSO_TOOLS_LABELS.actions.toggleAll.active)\n : (labels?.toggleAll?.inactive ??\n LASSO_TOOLS_LABELS.actions.toggleAll.inactive)\n\n const deleteAllLabel =\n labels?.deleteAll ?? LASSO_TOOLS_LABELS.actions.deleteAll\n\n return (\n <Box>\n <Button color='inherit' onClick={() => onAllChipToggle()}>\n {toggleAllLabel}\n </Button>\n <Button color='error' onClick={() => onAllDelete()}>\n {deleteAllLabel}\n </Button>\n </Box>\n )\n}\n","import type { SVGProps } from 'react'\n\nexport function RulerIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 18 18'\n fill='currentColor'\n {...props}\n >\n <path\n fill='currentColor'\n d='M3 13.5c-.413 0-.766-.147-1.06-.44A1.445 1.445 0 0 1 1.5 12V6c0-.412.147-.766.44-1.06.294-.293.647-.44 1.06-.44h12c.412 0 .766.147 1.06.44.293.294.44.647.44 1.06v6c0 .412-.147.766-.44 1.06-.294.293-.647.44-1.06.44H3ZM3 12h12V6h-2.25v3h-1.5V6h-1.5v3h-1.5V6h-1.5v3h-1.5V6H3v6Z'\n />\n </svg>\n )\n}\n\nexport function BufferIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 18 18'\n {...props}\n >\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M9 1.5a7.5 7.5 0 1 1 0 15 7.5 7.5 0 0 1 0-15ZM9 3a6 6 0 1 0 0 12A6 6 0 0 0 9 3Zm0 4.5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Z'\n clipRule='evenodd'\n />\n </svg>\n )\n}\n\nexport function AreaIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18' {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M4.5 13.5v-9h9v9h-9Zm.75-8.25h7.5v7.5h-7.5v-7.5Z'\n clipRule='evenodd'\n />\n <path\n fill='#2C3032'\n fillRule='evenodd'\n d='M1.5 3A1.5 1.5 0 0 1 3 1.5h12A1.5 1.5 0 0 1 16.5 3v12a1.5 1.5 0 0 1-1.5 1.5H3A1.5 1.5 0 0 1 1.5 15V3ZM3 3h12v12H3V3Z'\n clipRule='evenodd'\n />\n </svg>\n )\n}\n","import type { RequiredDeep } from 'type-fest'\nimport type {\n MeasurementMode,\n MeasurementModesMapping,\n MeasurementUnitsMapping,\n} from '../types'\nimport type { MeasurementToolsComponentProps } from './types'\nimport { RulerIcon, BufferIcon, AreaIcon } from './icons'\n\nexport const DEFAULT_MEASUREMENT_TOOLS_LABELS: NonNullable<\n RequiredDeep<MeasurementToolsComponentProps['labels']>\n> = {\n action: {\n tooltip: {\n active: 'Click on the map to start measuring',\n inactive: 'Click on the map to start measuring',\n },\n },\n chip: {\n tooltip: {\n active: 'Hide measure',\n inactive: 'Show measure',\n },\n },\n options: {\n mode: {\n title: 'Choose a measuring tool',\n options: {\n distance: 'Measure distance',\n buffer: 'Buffer distance',\n area: 'Area',\n },\n },\n units: {\n title: 'Unit of measurement',\n modal: {\n title: 'Map Measurement Unit',\n subtitle: 'Select the unit of measurement for your measurements',\n apply: 'Save',\n options: {\n metric: {\n title: 'Meters and Kilometers',\n options: {\n 'm-km': 'Auto',\n kilometer: 'Kilometers',\n meter: 'Meter',\n centimeter: 'Centimeter',\n milimeter: 'Milimeter',\n },\n },\n imperial: {\n title: 'Feet and Miles',\n options: {\n 'ft-mi': 'Auto',\n mile: 'Mile',\n feet: 'Feet',\n yard: 'Yard',\n },\n },\n },\n },\n },\n },\n} as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_UNITS_MAPPING: MeasurementUnitsMapping =\n {\n 'm-km': {\n short: 'm-km',\n },\n kilometer: {\n short: 'km',\n },\n meter: {\n short: 'm',\n },\n centimeter: {\n short: 'cm',\n },\n milimeter: {\n short: 'mm',\n },\n 'ft-mi': {\n short: 'ft-mi',\n },\n mile: {\n short: 'mi',\n },\n yard: {\n short: 'yd',\n },\n feet: {\n short: 'ft',\n },\n } as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_MODES_MAPPING: MeasurementModesMapping<MeasurementMode> =\n {\n distance: {\n icon: <RulerIcon />,\n },\n buffer: {\n icon: <BufferIcon />,\n },\n area: {\n icon: <AreaIcon />,\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 gap: ({ spacing }) => spacing(1),\n overflow: 'hidden',\n width: 'fit-content',\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 marginTop: ({ spacing }) => spacing(1),\n },\n icon: {\n width: ({ spacing }) => spacing(3),\n },\n title: {\n paddingX: ({ spacing }) => spacing(2),\n paddingY: ({ spacing }) => spacing(0.5),\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 modal: {\n toggle: {\n boxShadow: 'none',\n backgroundColor: '#F8F9F9',\n padding: ({ spacing }) => spacing(0.5),\n marginTop: ({ spacing }) => spacing(2),\n marginBottom: ({ spacing }) => spacing(1),\n '.MuiToggleButtonGroup-grouped': {\n typography: 'caption',\n fontWeight: 500,\n margin: 0,\n '&:first-of-type:not(.MuiDivider-root)': {\n marginLeft: 0,\n },\n },\n },\n subtitle: {\n typography: 'body2',\n color: ({ palette }) => palette.text.secondary,\n },\n optionsGroup: {\n marginLeft: ({ spacing }) => spacing(1),\n typography: 'body2',\n },\n title: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: ({ spacing }) => spacing(2),\n },\n content: {\n paddingX: ({ spacing }) => spacing(2),\n minWidth: ({ spacing }) => spacing(50),\n },\n actions: {\n paddingX: ({ spacing }) => spacing(2),\n },\n },\n },\n chip: {\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 { ArrowDropDown, Close } from '@mui/icons-material'\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n FormControl,\n FormControlLabel,\n IconButton,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n Paper,\n Radio,\n RadioGroup,\n SvgIcon,\n ToggleButton,\n ToggleButtonGroup,\n Typography,\n} from '@mui/material'\nimport {\n useMemo,\n useState,\n type FormEvent,\n type JSX,\n type MouseEvent,\n type PropsWithChildren,\n} from 'react'\nimport { styles } from './styles'\nimport deepmerge from 'deepmerge'\nimport type { MeasurementToolsComponentProps } from './types'\nimport type { PickDeep, ValueOf } from 'type-fest'\nimport {\n DEFAULT_MEASUREMENT_TOOLS_LABELS,\n DEFAULT_MEASUREMENT_TOOLS_UNITS_MAPPING,\n DEFAULT_MEASUREMENT_TOOLS_MODES_MAPPING,\n} from './const'\nimport type {\n MeasurementSystem,\n MeasurementUnit,\n MeasurementUnitImperialDistance,\n MeasurementUnitMetricDistance,\n MeasurementUnitOption,\n MeasureUnitMapping,\n} from '../types'\nimport { Tooltip } from '../tooltip/tooltip'\n\nconst EMPTY_PAPER_PROPS: NonNullable<\n MeasurementToolsComponentProps['PaperProps']\n> = {}\n\n/**\n * Provides a measurement interface for calculating distances, areas, and buffers on maps with support for metric and imperial unit systems and real-time unit conversion.\n *\n * @example\n * ```tsx\n * <MeasurementToolsUI\n * enabled={enabled}\n * value={measurementValue}\n * modes={DEFAULT_MEASUREMENT_TOOLS_MODES}\n * units={DEFAULT_MEASUREMENT_TOOLS_UNITS}\n * modesMapping={DEFAULT_MEASUREMENT_TOOLS_MODES_MAPPING}\n * unitsMapping={DEFAULT_MEASUREMENT_TOOLS_UNITS_MAPPING}\n * modeSelected={mode}\n * unitSelected={unit}\n * onActionToggle={setEnabled}\n * onChangeMode={setMode}\n * onChangeUnit={setUnit}\n * />\n * ```\n */\nexport function MeasurementToolsUI({\n enabled,\n actionProps,\n labels = DEFAULT_MEASUREMENT_TOOLS_LABELS,\n modes,\n modesMapping = DEFAULT_MEASUREMENT_TOOLS_MODES_MAPPING,\n unitsMapping = DEFAULT_MEASUREMENT_TOOLS_UNITS_MAPPING,\n modeSelected,\n PaperProps: { sx, ...PaperProps } = EMPTY_PAPER_PROPS,\n units,\n unitSelected,\n onActionToggle,\n onChangeMode,\n onChangeUnit,\n}: MeasurementToolsComponentProps): JSX.Element {\n const handleToggle: MeasurementToolsComponentProps['onActionToggle'] = (\n data,\n ) => {\n return onActionToggle(!!data)\n }\n\n const data = useMemo(() => {\n return deepmerge(modes, modesMapping)\n }, [modes, modesMapping])\n\n const modeExists = (modeSelected ?? '') in data\n\n const mode = (\n modeExists ? modeSelected : Object.keys(data)[0]\n ) as keyof typeof modes\n\n const modeSelectedValue = data[mode]\n\n const _units = useMemo(() => {\n const option = units[mode]\n const options =\n Object.keys(units).length >= 1 ? units : { [mode]: option.slice(0, 1) }\n return options[mode].map((unit) => {\n return {\n ...unit,\n ...unitsMapping[unit.value],\n }\n })\n }, [mode, units, unitsMapping])\n\n return (\n <Paper\n sx={{\n ...styles.container,\n ...sx,\n }}\n {...PaperProps}\n >\n <Box>\n <MeasurementToolsUIAction\n actionProps={actionProps}\n labels={labels?.action}\n enabled={enabled}\n onActionToggle={handleToggle}\n >\n {modeSelectedValue?.icon}\n </MeasurementToolsUIAction>\n <Options\n labels={labels?.options}\n modes={data}\n modeSelected={mode}\n units={_units}\n unitSelected={unitSelected}\n onChangeMode={onChangeMode}\n onChangeUnit={onChangeUnit}\n />\n </Box>\n </Paper>\n )\n}\n\nfunction MeasurementToolsUIAction({\n actionProps,\n labels,\n enabled,\n children,\n onActionToggle,\n}: PropsWithChildren<\n Pick<\n MeasurementToolsComponentProps,\n 'actionProps' | 'enabled' | 'onActionToggle'\n > & {\n labels?: PickDeep<\n MeasurementToolsComponentProps['labels'],\n 'action'\n >['action']\n }\n>) {\n const actionState = enabled ? 'active' : 'inactive'\n const actionLabel =\n labels?.tooltip?.[actionState] ??\n DEFAULT_MEASUREMENT_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\nfunction Options({\n modes,\n modeSelected,\n units,\n unitSelected,\n labels,\n onChangeMode,\n onChangeUnit,\n}: Required<\n Pick<\n MeasurementToolsComponentProps,\n 'modeSelected' | 'onChangeMode' | 'onChangeUnit'\n >\n> & {\n modes: MeasurementToolsComponentProps['modes'] &\n MeasurementToolsComponentProps['modesMapping']\n units: (MeasurementUnitOption<MeasurementUnit> & MeasureUnitMapping)[]\n unitSelected?: MeasurementToolsComponentProps['unitSelected']\n labels?: PickDeep<\n MeasurementToolsComponentProps['labels'],\n 'options'\n >['options']\n}) {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const [unitModal, setUnitModal] = useState(false)\n\n const modesAvailable = Object.values(modes)\n const unitsAvailable = Object.values(units)\n\n const hasValues = modesAvailable.length > 1 || unitsAvailable.length > 1\n\n if (!hasValues) {\n return null\n }\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 const handleClick = (\n e: MouseEvent<HTMLLIElement>,\n mode: ValueOf<Required<typeof modes>>,\n ) => {\n e.preventDefault()\n onChangeMode(mode.value)\n handleClose()\n }\n\n const handleClickUnit = () => {\n setUnitModal(true)\n }\n\n const handleCloseModal = () => {\n setUnitModal(false)\n }\n\n const handleApplyModal = (data: string) => {\n handleCloseModal()\n onChangeUnit(data)\n }\n\n const modeTitle =\n labels?.mode?.title ?? DEFAULT_MEASUREMENT_TOOLS_LABELS.options.mode.title\n\n const unitTitle =\n labels?.units?.title ?? DEFAULT_MEASUREMENT_TOOLS_LABELS.options.units.title\n\n const hasDivider = modesAvailable.length > 1 && unitsAvailable.length > 1\n\n const unitSelectedValue = (units.find(\n (unit) => unit.value === unitSelected,\n ) ?? units[0])!\n\n return (\n <>\n <IconButton sx={styles.options.icon} onClick={handleToggle}>\n <ArrowDropDown />\n </IconButton>\n <Menu\n id='measurement-menu'\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n MenuListProps={{\n 'aria-labelledby': 'basic-button',\n sx: styles.options.menu,\n }}\n >\n <div>\n {modesAvailable.length > 1 && (\n <>\n <Typography\n variant='subtitle2'\n color='text.secondary'\n sx={styles.options.title}\n >\n {modeTitle}\n </Typography>\n {modesAvailable.map((mode) => {\n const options =\n labels?.mode?.options ??\n DEFAULT_MEASUREMENT_TOOLS_LABELS.options.mode.options\n const label = options[mode.value]\n\n return (\n <MenuItem\n key={mode.value}\n onClick={(e) => handleClick(e, mode)}\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 )}\n {hasDivider && <Divider />}\n {unitsAvailable.length > 1 && (\n <>\n <MenuItem onClick={handleClickUnit}>\n <ListItemText>{unitTitle}</ListItemText>\n <Typography\n variant='caption'\n fontWeight={500}\n sx={styles.options.tag}\n >\n {unitSelectedValue.short}\n </Typography>\n </MenuItem>\n <UnitsModal\n open={unitModal}\n labels={labels}\n units={units}\n unitSelectedValue={unitSelectedValue}\n onClose={handleCloseModal}\n onSubmit={handleApplyModal}\n />\n </>\n )}\n </div>\n </Menu>\n </>\n )\n}\n\nfunction UnitsModal({\n open,\n labels,\n units,\n unitSelectedValue,\n onClose,\n onSubmit,\n}: {\n open: boolean\n labels?: PickDeep<\n MeasurementToolsComponentProps['labels'],\n 'options'\n >['options']\n units: MeasurementUnitOption<MeasurementUnit>[]\n unitSelectedValue: MeasurementUnitOption<MeasurementUnit>\n onClose: () => void\n onSubmit: (data: string) => void\n}) {\n const [system, setSystem] = useState<MeasurementSystem>('metric')\n\n const _units = useMemo(() => {\n return units.filter((unit) => unit.system === system)\n }, [system, units])\n\n const handleToggleChange = (\n _: MouseEvent<HTMLElement>,\n value: MeasurementSystem,\n ) => {\n setSystem(value)\n }\n\n const _labels =\n labels?.units?.modal?.options ??\n DEFAULT_MEASUREMENT_TOOLS_LABELS.options.units.modal.options\n\n const labelsBySystem = _labels[system].options\n\n const modalUnitTitle =\n labels?.units?.modal?.title ??\n DEFAULT_MEASUREMENT_TOOLS_LABELS.options.units.modal.title\n const modalUnitSubtitle =\n labels?.units?.modal?.subtitle ??\n DEFAULT_MEASUREMENT_TOOLS_LABELS.options.units.modal.subtitle\n const modalUnitApply =\n labels?.units?.modal?.apply ??\n DEFAULT_MEASUREMENT_TOOLS_LABELS.options.units.modal.apply\n\n const _unitSelectedValue =\n unitSelectedValue.system === system ? unitSelectedValue : _units[0]\n\n return (\n <Dialog\n open={open}\n component={Box}\n onClose={onClose}\n maxWidth='xs'\n PaperProps={{\n component: 'form',\n onSubmit: (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n const formData = new FormData(e.currentTarget)\n onSubmit(formData.get('unit-value') as string)\n },\n }}\n >\n <DialogTitle sx={styles.options.modal.title}>\n {modalUnitTitle}\n <IconButton onClick={onClose}>\n <Close />\n </IconButton>\n </DialogTitle>\n <DialogContent sx={styles.options.modal.content}>\n <Typography sx={styles.options.modal.subtitle}>\n {modalUnitSubtitle}\n </Typography>\n <ToggleButtonGroup\n color='primary'\n value={system}\n exclusive={true}\n fullWidth={true}\n onChange={handleToggleChange}\n aria-label='system'\n sx={styles.options.modal.toggle}\n >\n <ToggleButton value='metric'>{_labels.metric.title}</ToggleButton>\n <ToggleButton value='imperial'>{_labels.imperial.title}</ToggleButton>\n </ToggleButtonGroup>\n <FormControl key={_unitSelectedValue?.value}>\n <RadioGroup\n aria-labelledby='unit-value'\n defaultValue={_unitSelectedValue?.value}\n name='unit-value'\n sx={styles.options.modal.optionsGroup}\n >\n {_units.map((unit) => {\n const label =\n labelsBySystem[\n unit.value as MeasurementUnitMetricDistance &\n MeasurementUnitImperialDistance\n ]\n\n return (\n <FormControlLabel\n key={unit.value}\n value={unit.value}\n control={<Radio />}\n label={label}\n />\n )\n })}\n </RadioGroup>\n </FormControl>\n </DialogContent>\n <DialogActions sx={styles.options.modal.actions}>\n <Button variant='contained' type='submit'>\n {modalUnitApply}\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","export const tooltipLabelsDefault = {\n enabled: 'Show your current location',\n disabled: 'Location unavailable',\n}\n\nexport const ariaLabel = 'geolocation'\n","import { Paper, IconButton } from '@mui/material'\nimport {\n MyLocationOutlined,\n LocationDisabledOutlined,\n} from '@mui/icons-material'\nimport type { GeolocationControlProps } from './types'\nimport {\n useCallback,\n useEffect,\n useEffectEvent,\n useReducer,\n useRef,\n type JSX,\n} from 'react'\nimport { ariaLabel, tooltipLabelsDefault } from './const'\nimport { Tooltip } from '../tooltip/tooltip'\n\n/**\n * Provides a seamless interface for accessing device location through the browser's Geolocation API, with permission handling, continuous tracking, and error management.\n *\n * @example\n * ```tsx\n * <GeolocationControls\n * onChange={(coords) => console.log(coords.latitude, coords.longitude)}\n * onError={(error) => console.error(error.message)}\n * />\n * ```\n */\nexport function GeolocationControls({\n disabled,\n labels,\n PaperProps,\n TooltipProps,\n watch,\n onChange,\n onError,\n}: GeolocationControlProps): JSX.Element {\n const watchRef = useRef<number>(null)\n const hasGeolocation = 'geolocation' in navigator\n\n const [allowed, dispatch] = useReducer(\n (_: boolean, action: 'granted' | 'denied') => action === 'granted',\n hasGeolocation,\n )\n\n // Read the latest `onError` without making the permission-query effect\n // re-run (and re-register the `result.onchange` permission listener)\n // whenever the consumer passes a fresh callback identity.\n const notifyError = useEffectEvent(\n (error: Parameters<PositionErrorCallback>[0]): void => {\n onError?.(error)\n },\n )\n\n useEffect(() => {\n if (hasGeolocation) {\n navigator.permissions\n .query({ name: 'geolocation' })\n .then((result) => {\n dispatch(result.state === 'granted' ? 'granted' : 'denied')\n result.onchange = () => {\n dispatch(result.state === 'granted' ? 'granted' : 'denied')\n }\n })\n .catch((error: Parameters<PositionErrorCallback>[0]) => {\n dispatch('denied')\n notifyError(error)\n })\n }\n\n return () => {\n if (watchRef.current) {\n navigator.geolocation.clearWatch(watchRef.current)\n }\n }\n }, [hasGeolocation])\n\n const success = useCallback(\n (position: Parameters<PositionCallback>[0]) => {\n onChange(position.coords)\n },\n [onChange],\n )\n\n const error = useCallback(\n (error: Parameters<PositionErrorCallback>[0]) => {\n dispatch('denied')\n onError?.(error)\n },\n [onError],\n )\n\n const handleClick = useCallback(() => {\n if (watchRef.current) {\n navigator.geolocation.clearWatch(watchRef.current)\n }\n\n if (watch) {\n watchRef.current = navigator.geolocation.watchPosition(success, error)\n return\n }\n\n navigator.geolocation.getCurrentPosition(success, error)\n }, [watch, success, error])\n\n const tooltipLabels = labels?.tooltip ?? tooltipLabelsDefault\n\n return (\n <Paper {...PaperProps}>\n <Tooltip\n arrow\n placement='right'\n title={tooltipLabels[allowed ? 'enabled' : 'disabled']}\n {...TooltipProps}\n >\n <IconButton\n onClick={handleClick}\n aria-label={labels?.ariaLabel ?? ariaLabel}\n disabled={!hasGeolocation || disabled}\n >\n {allowed ? <MyLocationOutlined /> : <LocationDisabledOutlined />}\n </IconButton>\n </Tooltip>\n </Paper>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n zoom: {\n position: 'relative',\n height: ({ spacing }) => spacing(4),\n aspectRatio: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n paper: {\n display: 'flex',\n backgroundColor: ({ palette }) => palette.background.paper,\n width: 'auto',\n overflow: 'hidden',\n boxShadow: ({ shadows }) => shadows[1],\n borderRadius: ({ spacing }) => spacing(0.5),\n\n button: {\n borderRadius: 0,\n },\n },\n circularProgress: {\n position: 'absolute',\n },\n} satisfies Record<string, SxProps<Theme>>\n","import {\n IconButton,\n Divider,\n Box,\n Typography,\n CircularProgress,\n Paper,\n} from '@mui/material'\nimport {\n AddOutlined,\n RemoveOutlined,\n CropFreeOutlined,\n} from '@mui/icons-material'\nimport { styles } from './styles'\nimport type { ZoomControlProps } from './types'\nimport { useCallback, type JSX } from 'react'\n\n/**\n * Provides intuitive zoom controls for maps and zoomable interfaces with flexible layouts, loading states, and optional reset functionality.\n *\n * @remarks\n * This is an uncontrolled component. Typically used with the `ZoomControls` HOC from `@carto/ps-react-maps` for automatic state management.\n *\n * @example\n * ```tsx\n * <ZoomControlsUI\n * zoom={zoom}\n * onChange={setZoom}\n * minZoom={2}\n * maxZoom={20}\n * />\n * ```\n */\nexport function ZoomControlsUI({\n zoom,\n disabled,\n direction = 'vertical',\n reverse = false,\n isLoading,\n maxZoom = 24,\n minZoom = 0,\n PaperProps,\n ResetViewProps = {\n Icon: CropFreeOutlined,\n },\n showZoom = true,\n onChange,\n onReset,\n}: ZoomControlProps): JSX.Element {\n const increaseZoom = useCallback(() => {\n const newZoom = Math.min(maxZoom, zoom + 1)\n onChange(newZoom)\n }, [maxZoom, onChange, zoom])\n\n const decreaseZoom = useCallback(() => {\n const newZoom = Math.max(minZoom, zoom - 1)\n onChange(newZoom)\n }, [minZoom, onChange, zoom])\n\n const displayZoom = Math.floor(zoom)\n\n const dividerOrientation =\n direction === 'vertical' ? 'horizontal' : 'vertical'\n\n let flexDirection = direction === 'vertical' ? 'column' : 'row'\n\n if (reverse) {\n flexDirection += '-reverse'\n }\n\n return (\n <Paper\n sx={{\n ...styles.paper,\n flexDirection,\n }}\n {...PaperProps}\n >\n {onReset && (\n <>\n <IconButton\n onClick={onReset}\n aria-label='Reset action'\n disabled={disabled}\n >\n <ResetViewProps.Icon />\n </IconButton>\n <Divider orientation={dividerOrientation} flexItem />\n </>\n )}\n <IconButton\n onClick={increaseZoom}\n aria-label='Increase zoom'\n disabled={disabled}\n >\n <AddOutlined />\n </IconButton>\n <Divider orientation={dividerOrientation} flexItem />\n {showZoom && (\n <>\n <Box sx={styles.zoom}>\n <Typography\n display='block'\n align='center'\n color='textSecondary'\n variant='overline'\n >\n {displayZoom}\n </Typography>\n {isLoading && (\n <CircularProgress\n sx={styles.circularProgress}\n variant='indeterminate'\n size={24}\n />\n )}\n </Box>\n <Divider orientation={dividerOrientation} flexItem />\n </>\n )}\n <IconButton\n onClick={decreaseZoom}\n aria-label='Decrease zoom'\n disabled={disabled}\n >\n <RemoveOutlined />\n </IconButton>\n </Paper>\n )\n}\n","import { Box, Grid, Skeleton } from '@mui/material'\n\ninterface ListDataSkeletonProps {\n length?: number\n}\n\nexport function ListDataSkeleton({ length = 5 }: ListDataSkeletonProps) {\n return (\n <Box aria-label='List Data skeleton'>\n {new Array(length).fill(null).map((_, idx) => (\n <Grid key={`skeleton-${idx}`} container spacing={1}>\n <Grid\n container\n item\n direction='row'\n justifyContent='space-between'\n alignItems='center'\n >\n <Skeleton width={isOdd(idx) ? 72 : 48} height={20} />\n <Skeleton width={48} height={8} />\n </Grid>\n\n <Skeleton\n sx={{\n height: ({ spacing }) => spacing(0.5),\n marginTop: ({ spacing }) => spacing(1.25),\n marginBottom: ({ spacing }) => spacing(1.75),\n width: '100%',\n }}\n />\n </Grid>\n ))}\n </Box>\n )\n}\n\n// Aux\nfunction isOdd(num: number) {\n return num % 2 === 1\n}\n","import {\n Alert,\n Box,\n Typography,\n type AlertProps,\n type TypographyProps,\n} from '@mui/material'\n\ninterface NoDataAlertProps {\n title?: string\n body?: string\n severity?: AlertProps['severity']\n}\n\nexport function NoDataAlert({\n title = 'No data available',\n body = 'There are no results for the combination of filters applied to your data. Try tweaking your filters, or zoom and pan the map to adjust the Map View.',\n severity,\n}: NoDataAlertProps) {\n if (severity) {\n return (\n <Alert title={title} severity={severity}>\n <AlertBody>{body}</AlertBody>\n </Alert>\n )\n }\n\n return (\n <Box>\n {title && <Typography variant='body2'>{title}</Typography>}\n <AlertBody color='textSecondary'>{body}</AlertBody>\n </Box>\n )\n}\n\n// Aux\ninterface AlertBodyProps {\n color?: TypographyProps['color']\n children: React.ReactNode\n}\n\nfunction AlertBody({ color, children }: AlertBodyProps) {\n if (children) {\n return (\n <Box mt={0.5}>\n <Typography\n component='div'\n variant='caption'\n color={color ?? 'inherit'}\n style={{ fontWeight: 'normal' }}\n >\n {children}\n </Typography>\n </Box>\n )\n }\n\n return <Box mt={-1} />\n}\n","import { useState } from 'react'\n\nexport function useSkeleton(isLoading: boolean) {\n // Track render phase: 0=never shown, 1=showing now, 2=already shown\n const [phase, setPhase] = useState(() => (isLoading ? 1 : 0))\n\n // Transition from phase 0 to 1 when loading starts\n if (isLoading && phase === 0) {\n setPhase(1)\n }\n\n // Transition from phase 1 to 2 when loading ends (skeleton was shown, now done)\n if (!isLoading && phase === 1) {\n setPhase(2)\n }\n\n // Show skeleton only in phase 1 (first time loading)\n return phase === 1\n}\n","import { type SxProps, type Theme } from '@mui/material'\n\nconst ellipsed = {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}\n\nexport const styles = {\n label: {\n '& .MuiListItemText-primary': {\n ...ellipsed,\n },\n },\n value: {\n '& .MuiListItemText-primary': {\n ...ellipsed,\n textAlign: 'right',\n },\n },\n clickable: {\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: ({ palette }) => palette.action.hover,\n },\n },\n showDivider: {\n borderBottom: ({ palette }) => `1px solid ${palette.divider}`,\n },\n selected: {\n backgroundColor: ({ palette }) => palette.action.selected,\n },\n disabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { useState, useMemo, type JSX } from 'react'\nimport { Box, Button, Grid, ListItem, List, ListItemText } from '@mui/material'\nimport { ListDataSkeleton } from './list-data-skeleton'\nimport { NoDataAlert } from '../no-data-alert/no-data-alert'\nimport { useSkeleton } from '../../hooks/use-skeleton'\nimport type { ListDataProps } from './types'\nimport { styles } from './styles'\nimport { SmartTooltip } from '../smart-tooltip/smart-tooltip'\n\nconst DEFAULT_LABELS = {\n showMore: 'Show More',\n showLess: 'Show Less',\n} as const\n\nconst EMPTY_DATA: ListDataProps['data'] = []\n\n/**\n * Displays structured data in an accessible list format with expandable views, interactive selection, tooltips, and loading states.\n *\n * @example\n * ```tsx\n * <ListDataUI\n * data={[\n * { id: '1', label: 'Population', value: '8.4M' },\n * { id: '2', label: 'Median Age', value: '32 years' },\n * ]}\n * maxItems={3}\n * onItemClick={(item) => setSelectedId(item.id)}\n * selectedItemId={selectedId}\n * />\n * ```\n */\nexport function ListDataUI({\n data = EMPTY_DATA,\n isLoading = false,\n maxItems = 5,\n labels = DEFAULT_LABELS,\n showDivider = true,\n selectedItemId,\n tooltipProps,\n onExpand,\n onItemClick,\n}: ListDataProps): JSX.Element {\n const [showAll, setShowAll] = useState(false)\n\n const showSkeleton = useSkeleton(isLoading)\n\n const items = useMemo(() => {\n return showAll ? data : data.slice(0, maxItems)\n }, [data, maxItems, showAll])\n\n const handleToggle = () => {\n setShowAll(!showAll)\n onExpand?.(showAll)\n }\n\n if (showSkeleton) {\n return <ListDataSkeleton length={maxItems} />\n }\n\n if (items.length === 0) {\n return <NoDataAlert />\n }\n\n return (\n <>\n <List id='expandable-list' role='list'>\n {items.map((item) => (\n <SmartTooltip<HTMLLIElement>\n // Default tooltip props\n followCursor={false}\n key={item.id}\n placement='top'\n arrow\n title={item.tooltipTitle}\n enterDelay={10}\n // Custom tooltip props\n {...tooltipProps}\n >\n {({ ref }) => (\n <ListItem\n ref={ref}\n role='listitem'\n sx={{\n ...(showDivider && styles.showDivider),\n ...(onItemClick && styles.clickable),\n ...(selectedItemId === item.id && styles.selected),\n ...(item.disabled && styles.disabled),\n }}\n onClick={() => {\n if (item.disabled) return\n onItemClick?.(item)\n }}\n >\n <Grid container alignItems='center'>\n <Grid item xs={8}>\n <ListItemText primary={item.label} sx={styles.label} />\n </Grid>\n <Grid item xs={4}>\n <ListItemText primary={item.value} sx={styles.value} />\n </Grid>\n </Grid>\n </ListItem>\n )}\n </SmartTooltip>\n ))}\n </List>\n\n {data.length > maxItems && (\n <Box my={2}>\n <Button\n onClick={handleToggle}\n variant='text'\n color='primary'\n aria-expanded={showAll}\n aria-controls='expandable-list'\n >\n {showAll ? labels.showLess : labels.showMore}\n </Button>\n </Box>\n )}\n </>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const BASEMAPS_WIDTH = 288\n\nexport const styles = {\n root: {\n width: BASEMAPS_WIDTH,\n overflow: 'auto',\n },\n toggle: {\n padding: ({ spacing }) => spacing(0.5),\n\n img: {\n width: '100%',\n aspectRatio: '1 / 1',\n borderRadius: ({ spacing }) => spacing(0.25),\n },\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: ({ spacing }) => spacing(1),\n paddingInlineStart: ({ spacing }) => spacing(2),\n position: 'sticky',\n top: 0,\n zIndex: 2,\n background: ({ palette }) => palette.background.paper,\n },\n groupWrapper: {\n content: {\n paddingInline: ({ spacing }) => spacing(2),\n paddingBlock: ({ spacing }) => spacing(0.5),\n },\n },\n group: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n paddingInline: ({ spacing }) => spacing(2),\n paddingBlock: ({ spacing }) => spacing(1),\n },\n item: {\n container: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n gap: ({ spacing }) => spacing(1),\n background: 'transparent',\n border: 'none',\n cursor: 'pointer',\n padding: 0,\n height: ({ spacing }) => spacing(12),\n\n img: {\n maxWidth: ({ spacing }) => spacing(9),\n aspectRatio: '1 / 1',\n borderRadius: ({ spacing }) => spacing(0.5),\n border: `2px solid transparent`,\n\n '&:hover': {\n borderColor: ({ palette }) => palette.action.active,\n },\n\n '&[data-active=\"true\"]': {\n borderColor: ({ palette }) => palette.primary.main,\n },\n },\n },\n selected: {\n color: ({ palette }) => palette.primary.main,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import type { BasemapsUILabels } from './types'\n\nexport const DEFAULT_BASEMAPS_LABELS: BasemapsUILabels = {\n toggle: {\n title: 'Toggle basemaps controls',\n },\n header: {\n title: 'Basemaps',\n actions: {\n close: 'Close',\n },\n },\n}\n","import { Close } from '@mui/icons-material'\nimport { Box, Typography, IconButton } from '@mui/material'\nimport { styles } from './styles'\nimport type { BasemapsUILabels } from './types'\nimport { Tooltip } from '../tooltip/tooltip'\n\nexport function Header({\n isMobile = false,\n labels,\n onChangeCollapsed,\n}: {\n labels: BasemapsUILabels['header']\n isMobile?: boolean\n onChangeCollapsed: () => void\n}) {\n return (\n <Box sx={styles.header}>\n {isMobile && (\n <>\n <Typography variant='caption' flexGrow={1}>\n {labels.title}\n </Typography>\n <Tooltip title={labels.actions.close}>\n <IconButton\n size='small'\n onClick={onChangeCollapsed}\n aria-label={labels.actions.close}\n >\n <Close />\n </IconButton>\n </Tooltip>\n </>\n )}\n </Box>\n )\n}\n","import { Typography } from '@mui/material'\nimport type { ReactNode } from 'react'\nimport { styles } from './styles'\n\nexport function GroupWrapper({\n title,\n children,\n collapsed = false,\n}: {\n title: string\n children: ReactNode\n collapsed?: boolean\n}) {\n if (collapsed) return children\n\n return (\n <>\n <Typography\n variant='caption'\n color='textSecondary'\n sx={styles.groupWrapper.content}\n >\n {title}\n </Typography>\n {children}\n </>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from './styles'\nimport type { BasemapOption } from './types'\n\nexport function Group({\n values,\n selected,\n onChange,\n}: {\n values: Omit<BasemapOption, 'group'>[]\n selected: string | null | undefined\n onChange: (id: string) => void\n}) {\n return (\n <Box sx={styles.group}>\n {values.map((option) => {\n const isSelected = option.id === selected\n return (\n <Box\n key={option.id}\n sx={styles.item.container}\n component='button'\n aria-label={option.label}\n onClick={() => onChange(option.id)}\n >\n <img\n src={option.icon}\n aria-label={option.label + ' icon'}\n data-active={isSelected}\n />\n <Typography\n variant='caption'\n sx={{ ...(isSelected && styles.item.selected) }}\n >\n {option.label}\n </Typography>\n </Box>\n )\n })}\n </Box>\n )\n}\n","import {\n Drawer,\n Popover,\n type PopoverActions,\n type PopoverOrigin,\n type PopoverProps,\n} from '@mui/material'\nimport { useCallback, useRef, type CSSProperties, type ReactNode } from 'react'\n\ntype ResponsiveDrawerPosition =\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right'\n\n/** Placement of the panel relative to its anchor (desktop popover only). */\nexport type ResponsiveDrawerPlacement = 'side' | 'overlay'\n\n/**\n * Resolve the Popover anchor/transform origins for a given corner + placement.\n *\n * `transformOrigin` (the panel corner that pins to the anchor point) is the same\n * for both placements: the panel's own corner matching `position`. `anchorOrigin`\n * (the point on the anchor the panel pins to) differs:\n * - `'side'` flips horizontally → the panel opens beside the trigger.\n * - `'overlay'` uses the same corner → the panel sits **on top of** the anchor\n * (e.g. a trigger that's hidden while the panel is open), pinned corner-to-corner.\n */\nexport function resolveOrigins(\n position: ResponsiveDrawerPosition,\n placement: ResponsiveDrawerPlacement,\n): { anchorOrigin: PopoverOrigin; transformOrigin: PopoverOrigin } {\n const isBottom = position.startsWith('bottom')\n const isRight = position.endsWith('right')\n const overlay = placement === 'overlay'\n\n return {\n anchorOrigin: {\n vertical: isBottom ? 'bottom' : 'top',\n // `'side'` flips horizontally to open beside the anchor; `'overlay'` keeps\n // the same edge so the panel lands on top of it.\n horizontal: overlay\n ? isRight\n ? 'right'\n : 'left'\n : isRight\n ? 'left'\n : 'right',\n },\n transformOrigin: {\n vertical: isBottom ? 'bottom' : 'top',\n horizontal: isRight ? 'right' : 'left',\n },\n }\n}\n\nexport function ResponsiveDrawer<\n T extends {\n collapsed: boolean\n onChangeCollapsed: (collapsed: boolean) => void\n position: ResponsiveDrawerPosition\n slotProps?: PopoverProps['slotProps']\n },\n>({\n ref,\n children,\n collapsed,\n isMobile = false,\n position,\n sx,\n slotProps,\n onChangeCollapsed,\n modal = true,\n placement = 'side',\n}: Required<Pick<T, 'collapsed' | 'onChangeCollapsed' | 'position'>> &\n Pick<PopoverProps, 'slotProps' | 'sx'> & {\n ref: HTMLElement | null\n isMobile: boolean\n children: ReactNode\n /**\n * When `false`, the desktop popover is **non-modal**: no backdrop, clicks\n * pass through to the content behind it (e.g. a map stays interactive), no\n * focus trap, and neither backdrop-click nor Escape closes it (close it via\n * `onChangeCollapsed`). Defaults to `true` (standard dismissable popover).\n * Desktop-only — the mobile drawer is unaffected.\n */\n modal?: boolean\n /**\n * Desktop popover placement relative to the anchor: `'side'` (default) opens\n * beside the trigger; `'overlay'` pins corner-to-corner, sitting on top of\n * the anchor (e.g. a trigger hidden while the panel is open). Desktop-only.\n */\n placement?: ResponsiveDrawerPlacement\n }) {\n // MUI Popover computes its position once on open and never re-measures when\n // its content resizes — so a panel that grows/shrinks (e.g. collapsing legend\n // groups) keeps its frozen `top` and detaches from the anchored edge (the\n // \"blink\"). Re-run the Popover's own positioning (`action.updatePosition`)\n // whenever the content changes size: with `transformOrigin` matching the\n // anchor edge, that edge stays pinned (bottom for `bottom-*`, top for\n // `top-*`) — and because updatePosition is synchronous, it tracks every\n // animation frame smoothly rather than snapping after a debounce.\n //\n // A callback ref (not a `useEffect`) attaches the observer the moment the\n // content mounts — the Popover renders into a portal behind a transition, so\n // the element isn't available on the effect tick that follows `open`.\n const popoverActions = useRef<PopoverActions>(null)\n const observerRef = useRef<ResizeObserver | null>(null)\n const observeContent = useCallback((el: HTMLDivElement | null) => {\n observerRef.current?.disconnect()\n observerRef.current = null\n if (el && typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() =>\n popoverActions.current?.updatePosition(),\n )\n observer.observe(el)\n observerRef.current = observer\n }\n }, [])\n\n if (isMobile) {\n // MUI calls `onClose(event, reason)`; adapt it to the boolean contract.\n return (\n <Drawer\n anchor='bottom'\n open={!collapsed}\n onClose={() => onChangeCollapsed(true)}\n >\n {children}\n </Drawer>\n )\n }\n\n const { anchorOrigin, transformOrigin } = resolveOrigins(position, placement)\n\n // Non-modal mode injects pointer-through `style` into the root/paper slots so\n // clicks fall through to the content behind (the map) while the panel stays\n // interactive. Only the legend uses it and it passes no `slotProps`, so the\n // common path (modal, incl. Basemaps' callback/object slotProps) is passed\n // straight through untouched.\n const objectSlotProps = slotProps as\n | { root?: Record<string, unknown>; paper?: { style?: CSSProperties } }\n | undefined\n const mergedSlotProps: PopoverProps['slotProps'] = modal\n ? slotProps\n : {\n root: {\n style: { pointerEvents: 'none' },\n ...objectSlotProps?.root,\n },\n paper: {\n ...objectSlotProps?.paper,\n style: {\n pointerEvents: 'auto',\n ...objectSlotProps?.paper?.style,\n },\n },\n }\n\n return (\n <Popover\n action={popoverActions}\n sx={sx}\n anchorEl={ref}\n // Guard on `ref` so an open-by-default panel doesn't render before the\n // anchor callback-ref has resolved (avoids the null-anchorEl warning +\n // one-frame misposition; it re-renders non-null immediately after mount).\n open={!collapsed && ref != null}\n // In non-modal mode neither backdrop nor Escape dismisses — close via\n // `onChangeCollapsed` (e.g. the panel's own ✕).\n onClose={modal ? () => onChangeCollapsed(true) : undefined}\n hideBackdrop={!modal}\n disableScrollLock={!modal}\n disableEscapeKeyDown={!modal}\n disableAutoFocus={!modal}\n disableEnforceFocus={!modal}\n disableRestoreFocus={!modal}\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n slotProps={mergedSlotProps}\n >\n {/* Observed for content-resize → keeps the Popover pinned (see above). */}\n <div ref={observeContent}>{children}</div>\n </Popover>\n )\n}\n","import { IconButton, Paper, useMediaQuery, useTheme } from '@mui/material'\nimport type { BasemapsUIProps } from './types'\nimport { useEffect, useRef, useState, type JSX } from 'react'\nimport { styles } from './styles'\nimport deepmerge from 'deepmerge'\nimport { DEFAULT_BASEMAPS_LABELS } from './const'\nimport { Header } from './header'\nimport { GroupWrapper } from './group-wrapper'\nimport { Group } from './group'\nimport { ResponsiveDrawer } from '../responsive-drawer/responsive-drawer'\nimport { Tooltip } from '../tooltip/tooltip'\n\nconst EMPTY_OPTIONS: BasemapsUIProps['options'] = []\n\n/**\n * Provides an interactive basemap selector with responsive drawer, grouping support, and customizable positioning.\n *\n * @remarks\n * This is an uncontrolled component focused on UI presentation. Typically used with the `BasemapsControls` HOC from `@carto/ps-react-maps` for automatic state management.\n *\n * @example\n * ```tsx\n * <BasemapsControls mapId={mapId}>\n * {({ basemap, setBasemap }) => (\n * <BasemapsUI\n * options={basemapOptions}\n * selected={basemap}\n * onChange={setBasemap}\n * position=\"bottom-right\"\n * />\n * )}\n * </BasemapsControls>\n * ```\n */\nexport function BasemapsUI({\n options = EMPTY_OPTIONS,\n labels: _labels,\n position = 'bottom-right',\n selected = null,\n onChange,\n TooltipProps,\n}: BasemapsUIProps): JSX.Element {\n const [toggleRef, setToggleRef] = useState<HTMLButtonElement | null>(null)\n const [isOpen, setIsOpen] = useState(false)\n const timeoutRef = useRef<NodeJS.Timeout | null>(null)\n const [timer, setTimer] = useState<number | null>(null)\n const theme = useTheme()\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'))\n const labels = deepmerge(DEFAULT_BASEMAPS_LABELS, _labels ?? {})\n\n const optionSelected = options.find((option) => option.id === selected)\n\n const groups = Object.groupBy(options, (option) => option.group ?? 'default')\n\n const groupCount = Object.keys(groups).length\n\n const handleClose = () => {\n setToggleRef(null)\n setIsOpen(false)\n }\n\n useEffect(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n\n if (!timer) {\n return\n }\n\n timeoutRef.current = setTimeout(() => {\n handleClose()\n return\n }, timer)\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n }\n }, [timer])\n\n const handleMouseOver = () => {\n setTimer(null)\n }\n const handleMouseLeave = () => {\n setTimer(400)\n }\n\n return (\n <Paper>\n <Tooltip title={labels.toggle.title} placement='right' {...TooltipProps}>\n <IconButton\n sx={styles.toggle}\n onClick={(e) => {\n setToggleRef(e.currentTarget as HTMLButtonElement)\n setIsOpen(true)\n }}\n >\n <img\n src={optionSelected?.icon}\n alt={optionSelected?.label ?? 'Basemap'}\n />\n </IconButton>\n </Tooltip>\n\n <ResponsiveDrawer\n ref={toggleRef}\n slotProps={{\n paper: {\n sx: {\n ...styles.root,\n transform: `translate3d(${position.endsWith('right') ? '-8px' : '8px'}, ${\n position.startsWith('bottom') ? '-4px' : '4px'\n }, 0) !important`,\n },\n onMouseOver: handleMouseOver,\n onMouseLeave: handleMouseLeave,\n },\n }}\n collapsed={!isOpen}\n position={position}\n isMobile={isMobile}\n onChangeCollapsed={() => handleClose()}\n >\n <Header\n isMobile={isMobile}\n labels={labels.header}\n onChangeCollapsed={() => handleClose()}\n />\n {Object.entries(groups).map(([group, values]) => (\n <GroupWrapper\n key={group}\n title={group + ' ' + labels.header.title}\n collapsed={groupCount < 2}\n >\n <Group\n values={values!}\n selected={selected}\n onChange={(e) => {\n handleClose()\n onChange(e)\n }}\n />\n </GroupWrapper>\n ))}\n </ResponsiveDrawer>\n </Paper>\n )\n}\n"],"names":["EMPTY_VALUES","EMPTY_BOX_PROPS","LassoToolsInlineUI","t0","$","_c","enabled","values","t1","chipProps","labels","modes","modesMapping","modeSelected","BoxProps","t2","onChipToggle","onDelete","onChangeMode","onAllChipToggle","onAllDelete","undefined","t3","sx","t4","deepmerge","data","_modes","edit","t5","valueId","handleDelete","t6","evt","mode","preventDefault","handleClick","mode_0","Object","keys","modeSelectedValue","t7","modesValues","t8","styles","container","t9","options","t10","value","t11","t12","jsx","OptionsList","t13","length","jsxs","Fragment","Divider","disabled","t14","ToggleButtonGroup","menu","t15","ModeList","t16","Symbol","for","t17","t18","noData","t19","NoData","t20","chip","Box","map","LassoToolsUIChip","id","t21","actions","t22","Actions","t23","children","modeTitle","title","LASSO_TOOLS_LABELS","Typography","filter","Boolean","label","Tooltip","ToggleButton","SvgIcon","icon","hasValues","description","toggleAllLabel","some","_temp","toggleAll","active","inactive","deleteAllLabel","deleteAll","Button","visible","RulerIcon","props","BufferIcon","AreaIcon","DEFAULT_MEASUREMENT_TOOLS_LABELS","action","tooltip","distance","buffer","area","units","modal","subtitle","apply","metric","kilometer","meter","centimeter","milimeter","imperial","mile","feet","yard","DEFAULT_MEASUREMENT_TOOLS_UNITS_MAPPING","short","DEFAULT_MEASUREMENT_TOOLS_MODES_MAPPING","display","flexDirection","alignItems","justifyContent","gap","spacing","overflow","width","height","borderRadius","marginTop","paddingX","paddingY","icons","color","palette","text","primary","tag","border","borderColor","main","backgroundColor","alpha","toggle","boxShadow","padding","marginBottom","typography","fontWeight","margin","marginLeft","secondary","optionsGroup","content","minWidth","EMPTY_PAPER_PROPS","MeasurementToolsUI","actionProps","unitsMapping","PaperProps","unitSelected","onActionToggle","onChangeUnit","handleToggle","data_0","modeExists","option","slice","unit","_units","MeasurementToolsUIAction","Options","Paper","actionState","actionLabel","TooltipProps","anchorEl","setAnchorEl","useState","unitModal","setUnitModal","modesAvailable","unitsAvailable","open","event","currentTarget","handleClose","e","handleClickUnit","handleCloseModal","handleApplyModal","unitTitle","hasDivider","find","unitSelectedValue","IconButton","ArrowDropDown","MenuItem","e_0","ListItemIcon","ListItemText","UnitsModal","Menu","onClose","onSubmit","system","setSystem","_","handleToggleChange","_labels","labelsBySystem","modalUnitTitle","modalUnitSubtitle","modalUnitApply","_unitSelectedValue","component","formData","FormData","get","Close","DialogTitle","unit_0","FormControlLabel","Radio","RadioGroup","FormControl","DialogContent","DialogActions","Dialog","tooltipLabelsDefault","ariaLabel","GeolocationControls","watch","onChange","onError","watchRef","useRef","hasGeolocation","navigator","allowed","dispatch","useReducer","error","notifyError","useEffectEvent","permissions","query","name","then","result","state","onchange","catch","error_0","current","geolocation","clearWatch","useEffect","position","coords","success","error_1","error_2","watchPosition","getCurrentPosition","MyLocationOutlined","LocationDisabledOutlined","zoom","aspectRatio","paper","background","shadows","button","circularProgress","ZoomControlsUI","direction","reverse","isLoading","maxZoom","minZoom","ResetViewProps","showZoom","onReset","Icon","CropFreeOutlined","newZoom","Math","min","increaseZoom","newZoom_0","max","decreaseZoom","displayZoom","floor","dividerOrientation","AddOutlined","CircularProgress","RemoveOutlined","ListDataSkeleton","Array","fill","_temp4","idx","Grid","Skeleton","isOdd","_temp2","_temp3","spacing_1","spacing_0","num","NoDataAlert","body","severity","AlertBody","Alert","useSkeleton","phase","setPhase","ellipsed","textOverflow","whiteSpace","textAlign","clickable","cursor","hover","showDivider","borderBottom","divider","selected","opacity","pointerEvents","DEFAULT_LABELS","showMore","showLess","EMPTY_DATA","ListDataUI","maxItems","selectedItemId","tooltipProps","onExpand","onItemClick","showAll","setShowAll","showSkeleton","items","item","SmartTooltip","tooltipTitle","ref","ListItem","List","BASEMAPS_WIDTH","root","img","header","paddingInlineStart","top","zIndex","groupWrapper","paddingInline","paddingBlock","group","flexWrap","maxWidth","DEFAULT_BASEMAPS_LABELS","close","Header","isMobile","onChangeCollapsed","GroupWrapper","collapsed","Group","isSelected","resolveOrigins","placement","isBottom","startsWith","isRight","endsWith","anchorOrigin","vertical","horizontal","transformOrigin","ResponsiveDrawer","slotProps","popoverActions","observerRef","el","disconnect","ResizeObserver","observer","updatePosition","observe","observeContent","Drawer","objectSlotProps","style","mergedSlotProps","Popover","EMPTY_OPTIONS","BasemapsUI","toggleRef","setToggleRef","isOpen","setIsOpen","timeoutRef","timer","setTimer","theme","useTheme","breakpoints","down","useMediaQuery","optionSelected","groupBy","groups","groupCount","clearTimeout","setTimeout","handleMouseOver","handleMouseLeave","transform","onMouseOver","onMouseLeave","t24","t25","t26","entries","t27","t28","t29","option_0"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components.js","sources":["../src/components/lasso-tool/lasso-tool-inline.tsx","../src/components/lasso-tool/geometry-toolbar.tsx","../src/components/lasso-tool/layer-filters.tsx","../src/components/measurement-tools/icons.tsx","../src/components/measurement-tools/const.tsx","../src/components/measurement-tools/styles.ts","../src/components/measurement-tools/measurement-tools.tsx","../src/components/geolocation-controls/const.ts","../src/components/geolocation-controls/geolocation-controls.tsx","../src/components/zoom-controls/styles.ts","../src/components/zoom-controls/zoom-controls.tsx","../src/components/list-data/list-data-skeleton.tsx","../src/components/no-data-alert/no-data-alert.tsx","../src/hooks/use-skeleton.ts","../src/components/list-data/styles.ts","../src/components/list-data/list-data.tsx","../src/components/basemaps/styles.ts","../src/components/basemaps/const.ts","../src/components/basemaps/header.tsx","../src/components/basemaps/group-wrapper.tsx","../src/components/basemaps/group.tsx","../src/components/responsive-drawer/responsive-drawer.tsx","../src/components/basemaps/basemaps.tsx"],"sourcesContent":["import {\n Divider,\n Typography,\n SvgIcon,\n ToggleButton,\n Box,\n ToggleButtonGroup,\n Button,\n} from '@mui/material'\nimport { useMemo, type JSX, type MouseEvent, type ReactNode } from 'react'\nimport { styles } from './styles'\nimport type {\n LassoToolsComponentProps,\n LassoToolsInlineComponentProps,\n} from './types'\nimport { LASSO_TOOLS_LABELS } from './const'\nimport type { PickDeep } from 'type-fest'\nimport type { LassoToolsModes } from '../types'\nimport deepmerge from 'deepmerge'\nimport { LassoToolsUIChip } from './chip'\nimport { Tooltip } from '../tooltip/tooltip'\n\nconst EMPTY_VALUES: LassoToolsInlineComponentProps['values'] = []\nconst EMPTY_BOX_PROPS: NonNullable<LassoToolsInlineComponentProps['BoxProps']> =\n {}\n\n/**\n * Provides an inline layout variant of the lasso tools interface with toggle button groups for mode selection and inline chip management for spatial filters.\n *\n * @example\n * ```tsx\n * <LassoToolsInlineUI\n * enabled={enabled}\n * values={spatialFilters}\n * modes={modes}\n * modesMapping={modesMapping}\n * modeSelected={modeSelected}\n * onChangeMode={setModeSelected}\n * onChipToggle={handleChipToggle}\n * onDelete={handleDelete}\n * />\n * ```\n */\nexport function LassoToolsInlineUI({\n enabled,\n values = EMPTY_VALUES,\n chipProps,\n labels,\n modes,\n modesMapping,\n modeSelected,\n BoxProps: { sx, ...BoxProps } = EMPTY_BOX_PROPS,\n onChipToggle,\n onDelete,\n onChangeMode,\n onAllChipToggle,\n onAllDelete,\n}: LassoToolsInlineComponentProps): JSX.Element {\n const data = useMemo(() => {\n return deepmerge(modes, modesMapping)\n }, [modes, modesMapping])\n\n const { edit, ..._modes } = data\n\n const handleDelete: LassoToolsComponentProps['onDelete'] = (valueId) => {\n return onDelete(valueId)\n }\n\n const handleClick = (\n evt: MouseEvent<HTMLElement>,\n mode: NonNullable<(typeof modes)[keyof typeof modes]>['value'],\n ) => {\n evt.preventDefault()\n onChangeMode?.(mode)\n }\n\n const modeExists = (modeSelected ?? '') in modes\n\n const mode = (\n modeExists ? modeSelected : Object.keys(data)[0]\n ) as keyof typeof data\n\n const modeSelectedValue = enabled ? data[mode] : null\n\n const modesValues = Object.values(_modes)\n\n return (\n <Box\n sx={{\n ...styles.container,\n ...sx,\n }}\n {...BoxProps}\n className='inline'\n >\n <ModeList data={modesValues} labels={labels?.options}>\n <ToggleButtonGroup\n value={modeSelectedValue?.value}\n exclusive\n className='inline'\n sx={styles.options.menu}\n onChange={handleClick}\n >\n <OptionsList labels={labels?.options} data={modesValues} />\n {!!edit && (\n <>\n <Divider orientation='vertical' />\n <OptionsList\n labels={labels?.options}\n data={[\n {\n ...edit,\n disabled: !values.length,\n },\n ]}\n />\n </>\n )}\n </ToggleButtonGroup>\n </ModeList>\n <Divider flexItem />\n <NoData hasValues={!!values.length} labels={labels?.noData} />\n {!!values.length && (\n <Box sx={styles.chip.container} className='inline'>\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={onChipToggle}\n />\n ))}\n </Box>\n )}\n <Actions\n values={values}\n labels={labels?.actions}\n onAllChipToggle={onAllChipToggle}\n onAllDelete={onAllDelete}\n />\n </Box>\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 className='inline'\n >\n {modeTitle}\n </Typography>\n {children}\n </>\n )\n}\n\nfunction OptionsList({\n data,\n labels,\n}: {\n labels?: PickDeep<LassoToolsComponentProps['labels'], 'options'>['options']\n data: (LassoToolsComponentProps['modes'] &\n LassoToolsComponentProps['modesMapping'])[keyof LassoToolsModes][]\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 <Tooltip key={mode.value} title={label} placement='bottom'>\n <ToggleButton\n disabled={!!mode.disabled}\n value={mode.value}\n aria-label={mode.value}\n >\n <SvgIcon>{mode.icon}</SvgIcon>\n </ToggleButton>\n </Tooltip>\n )\n })\n}\n\nfunction NoData({\n hasValues,\n labels,\n}: {\n hasValues: boolean\n labels: PickDeep<LassoToolsComponentProps['labels'], 'noData'>['noData']\n}) {\n if (hasValues) {\n return null\n }\n\n const title = labels?.title ?? LASSO_TOOLS_LABELS.noData.title\n const description =\n labels?.description ?? LASSO_TOOLS_LABELS.noData.description\n\n return (\n <>\n <Typography variant='body1' color='textSecondary'>\n {title}\n </Typography>\n <Typography variant='body2' color='textSecondary'>\n {description}\n </Typography>\n </>\n )\n}\n\nfunction Actions({\n values,\n labels,\n onAllChipToggle,\n onAllDelete,\n}: Pick<\n LassoToolsComponentProps,\n 'values' | 'onAllChipToggle' | 'onAllDelete'\n> & {\n labels?: PickDeep<LassoToolsComponentProps['labels'], 'actions'>['actions']\n}) {\n if (values.length <= 1) {\n return null\n }\n\n const hasVisible = values.some((value) => value.visible)\n\n const toggleAllLabel = hasVisible\n ? (labels?.toggleAll?.active ?? LASSO_TOOLS_LABELS.actions.toggleAll.active)\n : (labels?.toggleAll?.inactive ??\n LASSO_TOOLS_LABELS.actions.toggleAll.inactive)\n\n const deleteAllLabel =\n labels?.deleteAll ?? LASSO_TOOLS_LABELS.actions.deleteAll\n\n return (\n <Box>\n <Button color='inherit' onClick={() => onAllChipToggle()}>\n {toggleAllLabel}\n </Button>\n <Button color='error' onClick={() => onAllDelete()}>\n {deleteAllLabel}\n </Button>\n </Box>\n )\n}\n","import { DeleteOutlined, LockOutlined } from '@mui/icons-material'\nimport {\n Box,\n Divider,\n IconButton,\n Paper,\n Popover,\n SvgIcon,\n TextField,\n type SxProps,\n type Theme,\n} from '@mui/material'\nimport {\n useRef,\n useState,\n type JSX,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react'\nimport { Tooltip } from '../tooltip/tooltip'\nimport { SpatialMaskIcon, TextAaIcon } from './icons'\nimport type { LassoGeometryToolbarUIProps } from './types'\n\nconst ICON_SIZE = 18\n\nconst containerSx = {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n width: 'fit-content',\n gap: ({ spacing }) => spacing(0.5),\n p: ({ spacing }) => spacing(0.5),\n borderRadius: ({ spacing }) => spacing(0.5),\n backgroundColor: ({ palette }) => palette.background.paper,\n} satisfies SxProps<Theme>\n\nconst baseButtonSx = {\n p: ({ spacing }) => spacing(0.375),\n borderRadius: ({ spacing }) => spacing(0.5),\n '.MuiTouchRipple-ripple .MuiTouchRipple-child': {\n borderRadius: ({ spacing }) => spacing(0.5),\n },\n} satisfies SxProps<Theme>\n\n/** Active = Figma toggle \"selected\" treatment (primary tint); inactive = gray. */\nconst toggleButtonSx = (active: boolean): SxProps<Theme> => ({\n ...baseButtonSx,\n color: ({ palette }) =>\n active ? palette.primary.main : palette.text.secondary,\n backgroundColor: active ? 'rgba(3, 111, 226, 0.08)' : 'transparent',\n '&:hover': {\n backgroundColor: ({ palette }) =>\n active ? 'rgba(3, 111, 226, 0.12)' : palette.action.hover,\n },\n})\n\n/**\n * Contextual toolbar for a single lasso geometry: toggle mask/draw, rename,\n * lock, and delete. Purely presentational — position it over the map and wire\n * the callbacks to the lasso store (see `LassoTools.GeometryToolbar` in\n * `@carto/ps-react-maps`).\n *\n * Each button keeps a fixed icon and toggles an active highlight: the mask\n * button is active when `type === 'mask'`, the lock button is active when\n * `locked`. When `locked`, every action but the lock toggle is disabled.\n */\nexport function LassoGeometryToolbarUI({\n type,\n label,\n locked = false,\n onToggleType,\n onRename,\n onToggleLock,\n onDelete,\n labels,\n PaperProps: { sx, ...PaperProps } = {},\n}: LassoGeometryToolbarUIProps): JSX.Element {\n const paperRef = useRef<HTMLDivElement>(null)\n // Guards `onRename` to once per rename session — the Popover `onClose` and the\n // TextField `onBlur` can both fire for a single close (and Enter blurs on unmount).\n const committedRef = useRef(false)\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const [barWidth, setBarWidth] = useState<number>()\n const [draft, setDraft] = useState(label)\n\n const renaming = Boolean(anchorEl)\n\n const toggleTypeLabel =\n type === 'mask'\n ? (labels?.toggleType?.draw ?? 'Switch to drawing')\n : (labels?.toggleType?.mask ?? 'Switch to mask')\n const renameLabel = labels?.rename ?? 'Rename'\n const renameInputLabel = labels?.renameInput ?? renameLabel\n const lockLabel = locked\n ? (labels?.lock?.unlock ?? 'Unlock')\n : (labels?.lock?.lock ?? 'Lock')\n const deleteLabel = labels?.delete ?? 'Delete'\n\n const openRename = () => {\n committedRef.current = false\n setDraft(label)\n setBarWidth(paperRef.current?.clientWidth)\n setAnchorEl(paperRef.current)\n }\n\n const commitRename = () => {\n if (!committedRef.current) {\n committedRef.current = true\n const next = draft.trim()\n if (next && next !== label) {\n onRename(next)\n }\n }\n setAnchorEl(null)\n }\n\n // Escape discards the edit: mark the session done so the unmount blur / onClose\n // don't fire `onRename`.\n const cancelRename = () => {\n committedRef.current = true\n setAnchorEl(null)\n }\n\n const handleRenameKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n commitRename()\n }\n if (event.key === 'Escape') {\n event.preventDefault()\n cancelRename()\n }\n }\n\n return (\n <Paper\n ref={paperRef}\n elevation={6}\n sx={{ ...containerSx, ...sx }}\n {...PaperProps}\n >\n <ToolbarButton\n label={toggleTypeLabel}\n active={type === 'mask'}\n pressed={type === 'mask'}\n disabled={locked}\n onClick={() => onToggleType(type === 'mask' ? 'draw' : 'mask')}\n icon={\n <SvgIcon\n component={SpatialMaskIcon}\n inheritViewBox\n sx={{ fontSize: ICON_SIZE }}\n />\n }\n />\n\n <Divider orientation='vertical' flexItem />\n\n <ToolbarButton\n label={renameLabel}\n active={renaming}\n disabled={locked}\n onClick={openRename}\n icon={\n <SvgIcon\n component={TextAaIcon}\n inheritViewBox\n sx={{ fontSize: ICON_SIZE }}\n />\n }\n />\n\n <Divider orientation='vertical' flexItem />\n\n <ToolbarButton\n label={lockLabel}\n active={locked}\n pressed={locked}\n onClick={() => onToggleLock(!locked)}\n icon={<LockOutlined sx={{ fontSize: ICON_SIZE }} />}\n />\n\n <Divider orientation='vertical' flexItem />\n\n <ToolbarButton\n label={deleteLabel}\n disabled={locked}\n onClick={onDelete}\n icon={<DeleteOutlined sx={{ fontSize: ICON_SIZE }} />}\n color='error'\n />\n\n <Popover\n open={renaming}\n anchorEl={anchorEl}\n onClose={commitRename}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n slotProps={{\n paper: {\n sx: { width: barWidth, minWidth: 180 },\n },\n }}\n >\n <Box sx={{ p: 1 }}>\n <TextField\n inputRef={(node: HTMLInputElement | null) => node?.focus()}\n fullWidth\n label={renameInputLabel}\n size='small'\n variant='outlined'\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n onKeyDown={handleRenameKeyDown}\n onBlur={commitRename}\n />\n </Box>\n </Popover>\n </Paper>\n )\n}\n\nfunction ToolbarButton({\n label,\n icon,\n active = false,\n pressed,\n disabled = false,\n color,\n onClick,\n}: {\n label: string\n icon: ReactNode\n active?: boolean\n /** When set, exposes `aria-pressed` so the button reads as a toggle. */\n pressed?: boolean\n disabled?: boolean\n color?: 'error'\n onClick: (event: MouseEvent<HTMLButtonElement>) => void\n}): ReactNode {\n return (\n <Tooltip title={label} placement='top'>\n <span>\n <IconButton\n aria-label={label}\n aria-pressed={pressed}\n disabled={disabled}\n color={color}\n onClick={onClick}\n sx={color ? baseButtonSx : toggleButtonSx(active)}\n >\n {icon}\n </IconButton>\n </span>\n </Tooltip>\n )\n}\n","import { Close, Search } from '@mui/icons-material'\nimport {\n Box,\n Button,\n Checkbox,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n InputBase,\n List,\n ListItemButton,\n ListItemIcon,\n ListItemText,\n Typography,\n type SxProps,\n type Theme,\n} from '@mui/material'\nimport { useId, useState, type JSX } from 'react'\nimport type { LassoLayerFiltersUIProps } from './types'\n\nconst titleSx = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 1,\n p: 2,\n} satisfies SxProps<Theme>\n\n// One rounded group on the grey \"default\" background, holding the search row,\n// a divider, and the scrollable list (Figma node 5960-14780).\nconst groupSx = {\n borderRadius: ({ spacing }) => spacing(0.5),\n overflow: 'hidden',\n backgroundColor: ({ palette }) => palette.background.default,\n} satisfies SxProps<Theme>\n\nconst searchSx = {\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n height: 32,\n px: 1.5,\n color: ({ palette }) => palette.text.secondary,\n} satisfies SxProps<Theme>\n\nconst rowSx = {\n px: 2,\n py: 0.5,\n} satisfies SxProps<Theme>\n\nconst checkboxSlotSx = {\n minWidth: 0,\n mr: 1,\n} satisfies SxProps<Theme>\n\n/**\n * \"Layer filters\" dialog: choose which map layers the lasso mask clips. The\n * selection is a draft committed on Apply (Cancel/close discards it). Wire it\n * to the lasso store via `LassoTools.LayerFilters` in `@carto/ps-react-maps`,\n * and open it from the drawing-tool menu's \"Layer filters\" item\n * (`LassoToolsUI` `onLayerFilters`).\n */\nexport function LassoLayerFiltersUI({\n open,\n onClose,\n layers,\n onApply,\n labels,\n DialogProps,\n}: LassoLayerFiltersUIProps): JSX.Element {\n const labelId = useId()\n const [draft, setDraft] = useState<Set<string>>(() => new Set())\n const [search, setSearch] = useState('')\n\n // Reset the draft from the committed selection when the dialog opens, by\n // adjusting state during render (the React-recommended pattern — no effect,\n // and later `layers` changes don't discard in-progress edits).\n const [wasOpen, setWasOpen] = useState(false)\n if (open !== wasOpen) {\n setWasOpen(open)\n if (open) {\n setDraft(new Set(layers.filter((l) => l.checked).map((l) => l.id)))\n setSearch('')\n }\n }\n\n const title = labels?.title ?? 'Layer Filters'\n const description =\n labels?.description ??\n 'Select the layers you want to filter with this polygon'\n const allSelectedLabel = labels?.allSelected ?? 'All selected'\n const empty = labels?.empty ?? 'No layers to filter'\n\n const allChecked = layers.length > 0 && layers.every((l) => draft.has(l.id))\n const someChecked = layers.some((l) => draft.has(l.id))\n\n const toggle = (id: string) =>\n setDraft((prev) => {\n const next = new Set(prev)\n if (next.has(id)) next.delete(id)\n else next.add(id)\n return next\n })\n\n const toggleAll = () =>\n setDraft(allChecked ? new Set() : new Set(layers.map((l) => l.id)))\n\n const handleApply = () => {\n // Emit ids in `layers` order (stable, diff-friendly), not Set-insertion order.\n onApply(layers.filter((l) => draft.has(l.id)).map((l) => l.id))\n onClose()\n }\n\n const normalized = search.trim().toLowerCase()\n const filtered = normalized\n ? layers.filter((l) => l.label.toLowerCase().includes(normalized))\n : layers\n\n return (\n <Dialog\n open={open}\n onClose={onClose}\n maxWidth='xs'\n fullWidth\n {...DialogProps}\n >\n <DialogTitle component='div' sx={titleSx}>\n <Typography variant='subtitle1' fontWeight={500}>\n {title}\n </Typography>\n <IconButton aria-label='close' size='small' onClick={onClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n\n <DialogContent sx={{ pt: 1, px: 2, pb: 3 }}>\n <Typography variant='body2' color='text.secondary' sx={{ mb: 2 }}>\n {description}\n </Typography>\n\n <Box sx={groupSx}>\n <Box sx={searchSx}>\n <Search sx={{ fontSize: 18 }} />\n <InputBase\n fullWidth\n placeholder={labels?.search ?? 'Search layers'}\n inputProps={{ 'aria-label': labels?.search ?? 'Search layers' }}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n sx={{ fontSize: 13, color: 'text.primary' }}\n />\n </Box>\n <Divider />\n <List\n component='div'\n role='list'\n disablePadding\n sx={{\n maxHeight: 240,\n overflowY: 'auto',\n // MUI gives dividers inside a List an 8px vertical margin; the\n // \"All selected\" separator should sit flush like the rows.\n '& .MuiDivider-root': { my: 0 },\n }}\n >\n <ListItemButton dense sx={rowSx} onClick={toggleAll}>\n <ListItemIcon sx={checkboxSlotSx}>\n <Checkbox\n edge='start'\n tabIndex={-1}\n disableRipple\n sx={{ p: 0.5 }}\n checked={allChecked}\n indeterminate={!allChecked && someChecked}\n inputProps={{ 'aria-labelledby': `${labelId}-all` }}\n />\n </ListItemIcon>\n <ListItemText\n id={`${labelId}-all`}\n primary={allSelectedLabel}\n primaryTypographyProps={{ variant: 'body2' }}\n />\n </ListItemButton>\n <Divider />\n {filtered.length === 0 ? (\n <Typography variant='body2' color='text.secondary' sx={{ p: 2 }}>\n {empty}\n </Typography>\n ) : (\n filtered.map((layer) => (\n <ListItemButton\n key={layer.id}\n dense\n sx={rowSx}\n onClick={() => toggle(layer.id)}\n >\n <ListItemIcon sx={checkboxSlotSx}>\n <Checkbox\n edge='start'\n tabIndex={-1}\n disableRipple\n sx={{ p: 0.5 }}\n checked={draft.has(layer.id)}\n inputProps={{\n 'aria-labelledby': `${labelId}-${layer.id}`,\n }}\n />\n </ListItemIcon>\n <ListItemText\n id={`${labelId}-${layer.id}`}\n primary={layer.label}\n primaryTypographyProps={{\n variant: 'body2',\n noWrap: true,\n title: layer.label,\n }}\n />\n </ListItemButton>\n ))\n )}\n </List>\n </Box>\n </DialogContent>\n\n <DialogActions sx={{ p: 2 }}>\n <Button onClick={onClose}>{labels?.cancel ?? 'Cancel'}</Button>\n <Button variant='contained' onClick={handleApply}>\n {labels?.apply ?? 'Apply'}\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import type { SVGProps } from 'react'\n\nexport function RulerIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 18 18'\n fill='currentColor'\n {...props}\n >\n <path\n fill='currentColor'\n d='M3 13.5c-.413 0-.766-.147-1.06-.44A1.445 1.445 0 0 1 1.5 12V6c0-.412.147-.766.44-1.06.294-.293.647-.44 1.06-.44h12c.412 0 .766.147 1.06.44.293.294.44.647.44 1.06v6c0 .412-.147.766-.44 1.06-.294.293-.647.44-1.06.44H3ZM3 12h12V6h-2.25v3h-1.5V6h-1.5v3h-1.5V6h-1.5v3h-1.5V6H3v6Z'\n />\n </svg>\n )\n}\n\nexport function BufferIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 18 18'\n {...props}\n >\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M9 1.5a7.5 7.5 0 1 1 0 15 7.5 7.5 0 0 1 0-15ZM9 3a6 6 0 1 0 0 12A6 6 0 0 0 9 3Zm0 4.5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Z'\n clipRule='evenodd'\n />\n </svg>\n )\n}\n\nexport function AreaIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18' {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M4.5 13.5v-9h9v9h-9Zm.75-8.25h7.5v7.5h-7.5v-7.5Z'\n clipRule='evenodd'\n />\n <path\n fill='#2C3032'\n fillRule='evenodd'\n d='M1.5 3A1.5 1.5 0 0 1 3 1.5h12A1.5 1.5 0 0 1 16.5 3v12a1.5 1.5 0 0 1-1.5 1.5H3A1.5 1.5 0 0 1 1.5 15V3ZM3 3h12v12H3V3Z'\n clipRule='evenodd'\n />\n </svg>\n )\n}\n","import type { RequiredDeep } from 'type-fest'\nimport type {\n MeasurementMode,\n MeasurementModesMapping,\n MeasurementUnitsMapping,\n} from '../types'\nimport type { MeasurementToolsComponentProps } from './types'\nimport { RulerIcon, BufferIcon, AreaIcon } from './icons'\n\nexport const DEFAULT_MEASUREMENT_TOOLS_LABELS: NonNullable<\n RequiredDeep<MeasurementToolsComponentProps['labels']>\n> = {\n action: {\n tooltip: {\n active: 'Click on the map to start measuring',\n inactive: 'Click on the map to start measuring',\n },\n },\n chip: {\n tooltip: {\n active: 'Hide measure',\n inactive: 'Show measure',\n },\n },\n options: {\n mode: {\n title: 'Choose a measuring tool',\n options: {\n distance: 'Measure distance',\n buffer: 'Buffer distance',\n area: 'Area',\n },\n },\n units: {\n title: 'Unit of measurement',\n modal: {\n title: 'Map Measurement Unit',\n subtitle: 'Select the unit of measurement for your measurements',\n apply: 'Save',\n options: {\n metric: {\n title: 'Meters and Kilometers',\n options: {\n 'm-km': 'Auto',\n kilometer: 'Kilometers',\n meter: 'Meter',\n centimeter: 'Centimeter',\n milimeter: 'Milimeter',\n },\n },\n imperial: {\n title: 'Feet and Miles',\n options: {\n 'ft-mi': 'Auto',\n mile: 'Mile',\n feet: 'Feet',\n yard: 'Yard',\n },\n },\n },\n },\n },\n },\n} as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_UNITS_MAPPING: MeasurementUnitsMapping =\n {\n 'm-km': {\n short: 'm-km',\n },\n kilometer: {\n short: 'km',\n },\n meter: {\n short: 'm',\n },\n centimeter: {\n short: 'cm',\n },\n milimeter: {\n short: 'mm',\n },\n 'ft-mi': {\n short: 'ft-mi',\n },\n mile: {\n short: 'mi',\n },\n yard: {\n short: 'yd',\n },\n feet: {\n short: 'ft',\n },\n } as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_MODES_MAPPING: MeasurementModesMapping<MeasurementMode> =\n {\n distance: {\n icon: <RulerIcon />,\n },\n buffer: {\n icon: <BufferIcon />,\n },\n area: {\n icon: <AreaIcon />,\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 gap: ({ spacing }) => spacing(1),\n overflow: 'hidden',\n width: 'fit-content',\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 marginTop: ({ spacing }) => spacing(1),\n },\n icon: {\n width: ({ spacing }) => spacing(3),\n },\n title: {\n paddingX: ({ spacing }) => spacing(2),\n paddingY: ({ spacing }) => spacing(0.5),\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 modal: {\n toggle: {\n boxShadow: 'none',\n backgroundColor: '#F8F9F9',\n padding: ({ spacing }) => spacing(0.5),\n marginTop: ({ spacing }) => spacing(2),\n marginBottom: ({ spacing }) => spacing(1),\n '.MuiToggleButtonGroup-grouped': {\n typography: 'caption',\n fontWeight: 500,\n margin: 0,\n '&:first-of-type:not(.MuiDivider-root)': {\n marginLeft: 0,\n },\n },\n },\n subtitle: {\n typography: 'body2',\n color: ({ palette }) => palette.text.secondary,\n },\n optionsGroup: {\n marginLeft: ({ spacing }) => spacing(1),\n typography: 'body2',\n },\n title: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: ({ spacing }) => spacing(2),\n },\n content: {\n paddingX: ({ spacing }) => spacing(2),\n minWidth: ({ spacing }) => spacing(50),\n },\n actions: {\n paddingX: ({ spacing }) => spacing(2),\n },\n },\n },\n chip: {\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 { ArrowDropDown, Close } from '@mui/icons-material'\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n FormControl,\n FormControlLabel,\n IconButton,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n Paper,\n Radio,\n RadioGroup,\n SvgIcon,\n ToggleButton,\n ToggleButtonGroup,\n Typography,\n} from '@mui/material'\nimport {\n useMemo,\n useState,\n type FormEvent,\n type JSX,\n type MouseEvent,\n type PropsWithChildren,\n} from 'react'\nimport { styles } from './styles'\nimport deepmerge from 'deepmerge'\nimport type { MeasurementToolsComponentProps } from './types'\nimport type { PickDeep, ValueOf } from 'type-fest'\nimport {\n DEFAULT_MEASUREMENT_TOOLS_LABELS,\n DEFAULT_MEASUREMENT_TOOLS_UNITS_MAPPING,\n DEFAULT_MEASUREMENT_TOOLS_MODES_MAPPING,\n} from './const'\nimport type {\n MeasurementSystem,\n MeasurementUnit,\n MeasurementUnitImperialDistance,\n MeasurementUnitMetricDistance,\n MeasurementUnitOption,\n MeasureUnitMapping,\n} from '../types'\nimport { Tooltip } from '../tooltip/tooltip'\n\nconst EMPTY_PAPER_PROPS: NonNullable<\n MeasurementToolsComponentProps['PaperProps']\n> = {}\n\n/**\n * Provides a measurement interface for calculating distances, areas, and buffers on maps with support for metric and imperial unit systems and real-time unit conversion.\n *\n * @example\n * ```tsx\n * <MeasurementToolsUI\n * enabled={enabled}\n * value={measurementValue}\n * modes={DEFAULT_MEASUREMENT_TOOLS_MODES}\n * units={DEFAULT_MEASUREMENT_TOOLS_UNITS}\n * modesMapping={DEFAULT_MEASUREMENT_TOOLS_MODES_MAPPING}\n * unitsMapping={DEFAULT_MEASUREMENT_TOOLS_UNITS_MAPPING}\n * modeSelected={mode}\n * unitSelected={unit}\n * onActionToggle={setEnabled}\n * onChangeMode={setMode}\n * onChangeUnit={setUnit}\n * />\n * ```\n */\nexport function MeasurementToolsUI({\n enabled,\n actionProps,\n labels = DEFAULT_MEASUREMENT_TOOLS_LABELS,\n modes,\n modesMapping = DEFAULT_MEASUREMENT_TOOLS_MODES_MAPPING,\n unitsMapping = DEFAULT_MEASUREMENT_TOOLS_UNITS_MAPPING,\n modeSelected,\n PaperProps: { sx, ...PaperProps } = EMPTY_PAPER_PROPS,\n units,\n unitSelected,\n onActionToggle,\n onChangeMode,\n onChangeUnit,\n}: MeasurementToolsComponentProps): JSX.Element {\n const handleToggle: MeasurementToolsComponentProps['onActionToggle'] = (\n data,\n ) => {\n return onActionToggle(!!data)\n }\n\n const data = useMemo(() => {\n return deepmerge(modes, modesMapping)\n }, [modes, modesMapping])\n\n const modeExists = (modeSelected ?? '') in data\n\n const mode = (\n modeExists ? modeSelected : Object.keys(data)[0]\n ) as keyof typeof modes\n\n const modeSelectedValue = data[mode]\n\n const _units = useMemo(() => {\n const option = units[mode]\n const options =\n Object.keys(units).length >= 1 ? units : { [mode]: option.slice(0, 1) }\n return options[mode].map((unit) => {\n return {\n ...unit,\n ...unitsMapping[unit.value],\n }\n })\n }, [mode, units, unitsMapping])\n\n return (\n <Paper\n sx={{\n ...styles.container,\n ...sx,\n }}\n {...PaperProps}\n >\n <Box>\n <MeasurementToolsUIAction\n actionProps={actionProps}\n labels={labels?.action}\n enabled={enabled}\n onActionToggle={handleToggle}\n >\n {modeSelectedValue?.icon}\n </MeasurementToolsUIAction>\n <Options\n labels={labels?.options}\n modes={data}\n modeSelected={mode}\n units={_units}\n unitSelected={unitSelected}\n onChangeMode={onChangeMode}\n onChangeUnit={onChangeUnit}\n />\n </Box>\n </Paper>\n )\n}\n\nfunction MeasurementToolsUIAction({\n actionProps,\n labels,\n enabled,\n children,\n onActionToggle,\n}: PropsWithChildren<\n Pick<\n MeasurementToolsComponentProps,\n 'actionProps' | 'enabled' | 'onActionToggle'\n > & {\n labels?: PickDeep<\n MeasurementToolsComponentProps['labels'],\n 'action'\n >['action']\n }\n>) {\n const actionState = enabled ? 'active' : 'inactive'\n const actionLabel =\n labels?.tooltip?.[actionState] ??\n DEFAULT_MEASUREMENT_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\nfunction Options({\n modes,\n modeSelected,\n units,\n unitSelected,\n labels,\n onChangeMode,\n onChangeUnit,\n}: Required<\n Pick<\n MeasurementToolsComponentProps,\n 'modeSelected' | 'onChangeMode' | 'onChangeUnit'\n >\n> & {\n modes: MeasurementToolsComponentProps['modes'] &\n MeasurementToolsComponentProps['modesMapping']\n units: (MeasurementUnitOption<MeasurementUnit> & MeasureUnitMapping)[]\n unitSelected?: MeasurementToolsComponentProps['unitSelected']\n labels?: PickDeep<\n MeasurementToolsComponentProps['labels'],\n 'options'\n >['options']\n}) {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const [unitModal, setUnitModal] = useState(false)\n\n const modesAvailable = Object.values(modes)\n const unitsAvailable = Object.values(units)\n\n const hasValues = modesAvailable.length > 1 || unitsAvailable.length > 1\n\n if (!hasValues) {\n return null\n }\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 const handleClick = (\n e: MouseEvent<HTMLLIElement>,\n mode: ValueOf<Required<typeof modes>>,\n ) => {\n e.preventDefault()\n onChangeMode(mode.value)\n handleClose()\n }\n\n const handleClickUnit = () => {\n setUnitModal(true)\n }\n\n const handleCloseModal = () => {\n setUnitModal(false)\n }\n\n const handleApplyModal = (data: string) => {\n handleCloseModal()\n onChangeUnit(data)\n }\n\n const modeTitle =\n labels?.mode?.title ?? DEFAULT_MEASUREMENT_TOOLS_LABELS.options.mode.title\n\n const unitTitle =\n labels?.units?.title ?? DEFAULT_MEASUREMENT_TOOLS_LABELS.options.units.title\n\n const hasDivider = modesAvailable.length > 1 && unitsAvailable.length > 1\n\n const unitSelectedValue = (units.find(\n (unit) => unit.value === unitSelected,\n ) ?? units[0])!\n\n return (\n <>\n <IconButton sx={styles.options.icon} onClick={handleToggle}>\n <ArrowDropDown />\n </IconButton>\n <Menu\n id='measurement-menu'\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n MenuListProps={{\n 'aria-labelledby': 'basic-button',\n sx: styles.options.menu,\n }}\n >\n <div>\n {modesAvailable.length > 1 && (\n <>\n <Typography\n variant='subtitle2'\n color='text.secondary'\n sx={styles.options.title}\n >\n {modeTitle}\n </Typography>\n {modesAvailable.map((mode) => {\n const options =\n labels?.mode?.options ??\n DEFAULT_MEASUREMENT_TOOLS_LABELS.options.mode.options\n const label = options[mode.value]\n\n return (\n <MenuItem\n key={mode.value}\n onClick={(e) => handleClick(e, mode)}\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 )}\n {hasDivider && <Divider />}\n {unitsAvailable.length > 1 && (\n <>\n <MenuItem onClick={handleClickUnit}>\n <ListItemText>{unitTitle}</ListItemText>\n <Typography\n variant='caption'\n fontWeight={500}\n sx={styles.options.tag}\n >\n {unitSelectedValue.short}\n </Typography>\n </MenuItem>\n <UnitsModal\n open={unitModal}\n labels={labels}\n units={units}\n unitSelectedValue={unitSelectedValue}\n onClose={handleCloseModal}\n onSubmit={handleApplyModal}\n />\n </>\n )}\n </div>\n </Menu>\n </>\n )\n}\n\nfunction UnitsModal({\n open,\n labels,\n units,\n unitSelectedValue,\n onClose,\n onSubmit,\n}: {\n open: boolean\n labels?: PickDeep<\n MeasurementToolsComponentProps['labels'],\n 'options'\n >['options']\n units: MeasurementUnitOption<MeasurementUnit>[]\n unitSelectedValue: MeasurementUnitOption<MeasurementUnit>\n onClose: () => void\n onSubmit: (data: string) => void\n}) {\n const [system, setSystem] = useState<MeasurementSystem>('metric')\n\n const _units = useMemo(() => {\n return units.filter((unit) => unit.system === system)\n }, [system, units])\n\n const handleToggleChange = (\n _: MouseEvent<HTMLElement>,\n value: MeasurementSystem,\n ) => {\n setSystem(value)\n }\n\n const _labels =\n labels?.units?.modal?.options ??\n DEFAULT_MEASUREMENT_TOOLS_LABELS.options.units.modal.options\n\n const labelsBySystem = _labels[system].options\n\n const modalUnitTitle =\n labels?.units?.modal?.title ??\n DEFAULT_MEASUREMENT_TOOLS_LABELS.options.units.modal.title\n const modalUnitSubtitle =\n labels?.units?.modal?.subtitle ??\n DEFAULT_MEASUREMENT_TOOLS_LABELS.options.units.modal.subtitle\n const modalUnitApply =\n labels?.units?.modal?.apply ??\n DEFAULT_MEASUREMENT_TOOLS_LABELS.options.units.modal.apply\n\n const _unitSelectedValue =\n unitSelectedValue.system === system ? unitSelectedValue : _units[0]\n\n return (\n <Dialog\n open={open}\n component={Box}\n onClose={onClose}\n maxWidth='xs'\n PaperProps={{\n component: 'form',\n onSubmit: (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n const formData = new FormData(e.currentTarget)\n onSubmit(formData.get('unit-value') as string)\n },\n }}\n >\n <DialogTitle sx={styles.options.modal.title}>\n {modalUnitTitle}\n <IconButton onClick={onClose}>\n <Close />\n </IconButton>\n </DialogTitle>\n <DialogContent sx={styles.options.modal.content}>\n <Typography sx={styles.options.modal.subtitle}>\n {modalUnitSubtitle}\n </Typography>\n <ToggleButtonGroup\n color='primary'\n value={system}\n exclusive={true}\n fullWidth={true}\n onChange={handleToggleChange}\n aria-label='system'\n sx={styles.options.modal.toggle}\n >\n <ToggleButton value='metric'>{_labels.metric.title}</ToggleButton>\n <ToggleButton value='imperial'>{_labels.imperial.title}</ToggleButton>\n </ToggleButtonGroup>\n <FormControl key={_unitSelectedValue?.value}>\n <RadioGroup\n aria-labelledby='unit-value'\n defaultValue={_unitSelectedValue?.value}\n name='unit-value'\n sx={styles.options.modal.optionsGroup}\n >\n {_units.map((unit) => {\n const label =\n labelsBySystem[\n unit.value as MeasurementUnitMetricDistance &\n MeasurementUnitImperialDistance\n ]\n\n return (\n <FormControlLabel\n key={unit.value}\n value={unit.value}\n control={<Radio />}\n label={label}\n />\n )\n })}\n </RadioGroup>\n </FormControl>\n </DialogContent>\n <DialogActions sx={styles.options.modal.actions}>\n <Button variant='contained' type='submit'>\n {modalUnitApply}\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","export const tooltipLabelsDefault = {\n enabled: 'Show your current location',\n disabled: 'Location unavailable',\n}\n\nexport const ariaLabel = 'geolocation'\n","import { Paper, IconButton } from '@mui/material'\nimport {\n MyLocationOutlined,\n LocationDisabledOutlined,\n} from '@mui/icons-material'\nimport type { GeolocationControlProps } from './types'\nimport {\n useCallback,\n useEffect,\n useEffectEvent,\n useReducer,\n useRef,\n type JSX,\n} from 'react'\nimport { ariaLabel, tooltipLabelsDefault } from './const'\nimport { Tooltip } from '../tooltip/tooltip'\n\n/**\n * Provides a seamless interface for accessing device location through the browser's Geolocation API, with permission handling, continuous tracking, and error management.\n *\n * @example\n * ```tsx\n * <GeolocationControls\n * onChange={(coords) => console.log(coords.latitude, coords.longitude)}\n * onError={(error) => console.error(error.message)}\n * />\n * ```\n */\nexport function GeolocationControls({\n disabled,\n labels,\n PaperProps,\n TooltipProps,\n watch,\n onChange,\n onError,\n}: GeolocationControlProps): JSX.Element {\n const watchRef = useRef<number>(null)\n const hasGeolocation = 'geolocation' in navigator\n\n const [allowed, dispatch] = useReducer(\n (_: boolean, action: 'granted' | 'denied') => action === 'granted',\n hasGeolocation,\n )\n\n // Read the latest `onError` without making the permission-query effect\n // re-run (and re-register the `result.onchange` permission listener)\n // whenever the consumer passes a fresh callback identity.\n const notifyError = useEffectEvent(\n (error: Parameters<PositionErrorCallback>[0]): void => {\n onError?.(error)\n },\n )\n\n useEffect(() => {\n if (hasGeolocation) {\n navigator.permissions\n .query({ name: 'geolocation' })\n .then((result) => {\n dispatch(result.state === 'granted' ? 'granted' : 'denied')\n result.onchange = () => {\n dispatch(result.state === 'granted' ? 'granted' : 'denied')\n }\n })\n .catch((error: Parameters<PositionErrorCallback>[0]) => {\n dispatch('denied')\n notifyError(error)\n })\n }\n\n return () => {\n if (watchRef.current) {\n navigator.geolocation.clearWatch(watchRef.current)\n }\n }\n }, [hasGeolocation])\n\n const success = useCallback(\n (position: Parameters<PositionCallback>[0]) => {\n onChange(position.coords)\n },\n [onChange],\n )\n\n const error = useCallback(\n (error: Parameters<PositionErrorCallback>[0]) => {\n dispatch('denied')\n onError?.(error)\n },\n [onError],\n )\n\n const handleClick = useCallback(() => {\n if (watchRef.current) {\n navigator.geolocation.clearWatch(watchRef.current)\n }\n\n if (watch) {\n watchRef.current = navigator.geolocation.watchPosition(success, error)\n return\n }\n\n navigator.geolocation.getCurrentPosition(success, error)\n }, [watch, success, error])\n\n const tooltipLabels = labels?.tooltip ?? tooltipLabelsDefault\n\n return (\n <Paper {...PaperProps}>\n <Tooltip\n arrow\n placement='right'\n title={tooltipLabels[allowed ? 'enabled' : 'disabled']}\n {...TooltipProps}\n >\n <IconButton\n onClick={handleClick}\n aria-label={labels?.ariaLabel ?? ariaLabel}\n disabled={!hasGeolocation || disabled}\n >\n {allowed ? <MyLocationOutlined /> : <LocationDisabledOutlined />}\n </IconButton>\n </Tooltip>\n </Paper>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n zoom: {\n position: 'relative',\n height: ({ spacing }) => spacing(4),\n aspectRatio: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n paper: {\n display: 'flex',\n backgroundColor: ({ palette }) => palette.background.paper,\n width: 'auto',\n overflow: 'hidden',\n boxShadow: ({ shadows }) => shadows[1],\n borderRadius: ({ spacing }) => spacing(0.5),\n\n button: {\n borderRadius: 0,\n },\n },\n circularProgress: {\n position: 'absolute',\n },\n} satisfies Record<string, SxProps<Theme>>\n","import {\n IconButton,\n Divider,\n Box,\n Typography,\n CircularProgress,\n Paper,\n} from '@mui/material'\nimport {\n AddOutlined,\n RemoveOutlined,\n CropFreeOutlined,\n} from '@mui/icons-material'\nimport { styles } from './styles'\nimport type { ZoomControlProps } from './types'\nimport { useCallback, type JSX } from 'react'\n\n/**\n * Provides intuitive zoom controls for maps and zoomable interfaces with flexible layouts, loading states, and optional reset functionality.\n *\n * @remarks\n * This is an uncontrolled component. Typically used with the `ZoomControls` HOC from `@carto/ps-react-maps` for automatic state management.\n *\n * @example\n * ```tsx\n * <ZoomControlsUI\n * zoom={zoom}\n * onChange={setZoom}\n * minZoom={2}\n * maxZoom={20}\n * />\n * ```\n */\nexport function ZoomControlsUI({\n zoom,\n disabled,\n direction = 'vertical',\n reverse = false,\n isLoading,\n maxZoom = 24,\n minZoom = 0,\n PaperProps,\n ResetViewProps = {\n Icon: CropFreeOutlined,\n },\n showZoom = true,\n onChange,\n onReset,\n}: ZoomControlProps): JSX.Element {\n const increaseZoom = useCallback(() => {\n const newZoom = Math.min(maxZoom, zoom + 1)\n onChange(newZoom)\n }, [maxZoom, onChange, zoom])\n\n const decreaseZoom = useCallback(() => {\n const newZoom = Math.max(minZoom, zoom - 1)\n onChange(newZoom)\n }, [minZoom, onChange, zoom])\n\n const displayZoom = Math.floor(zoom)\n\n const dividerOrientation =\n direction === 'vertical' ? 'horizontal' : 'vertical'\n\n let flexDirection = direction === 'vertical' ? 'column' : 'row'\n\n if (reverse) {\n flexDirection += '-reverse'\n }\n\n return (\n <Paper\n sx={{\n ...styles.paper,\n flexDirection,\n }}\n {...PaperProps}\n >\n {onReset && (\n <>\n <IconButton\n onClick={onReset}\n aria-label='Reset action'\n disabled={disabled}\n >\n <ResetViewProps.Icon />\n </IconButton>\n <Divider orientation={dividerOrientation} flexItem />\n </>\n )}\n <IconButton\n onClick={increaseZoom}\n aria-label='Increase zoom'\n disabled={disabled}\n >\n <AddOutlined />\n </IconButton>\n <Divider orientation={dividerOrientation} flexItem />\n {showZoom && (\n <>\n <Box sx={styles.zoom}>\n <Typography\n display='block'\n align='center'\n color='textSecondary'\n variant='overline'\n >\n {displayZoom}\n </Typography>\n {isLoading && (\n <CircularProgress\n sx={styles.circularProgress}\n variant='indeterminate'\n size={24}\n />\n )}\n </Box>\n <Divider orientation={dividerOrientation} flexItem />\n </>\n )}\n <IconButton\n onClick={decreaseZoom}\n aria-label='Decrease zoom'\n disabled={disabled}\n >\n <RemoveOutlined />\n </IconButton>\n </Paper>\n )\n}\n","import { Box, Grid, Skeleton } from '@mui/material'\n\ninterface ListDataSkeletonProps {\n length?: number\n}\n\nexport function ListDataSkeleton({ length = 5 }: ListDataSkeletonProps) {\n return (\n <Box aria-label='List Data skeleton'>\n {new Array(length).fill(null).map((_, idx) => (\n <Grid key={`skeleton-${idx}`} container spacing={1}>\n <Grid\n container\n item\n direction='row'\n justifyContent='space-between'\n alignItems='center'\n >\n <Skeleton width={isOdd(idx) ? 72 : 48} height={20} />\n <Skeleton width={48} height={8} />\n </Grid>\n\n <Skeleton\n sx={{\n height: ({ spacing }) => spacing(0.5),\n marginTop: ({ spacing }) => spacing(1.25),\n marginBottom: ({ spacing }) => spacing(1.75),\n width: '100%',\n }}\n />\n </Grid>\n ))}\n </Box>\n )\n}\n\n// Aux\nfunction isOdd(num: number) {\n return num % 2 === 1\n}\n","import {\n Alert,\n Box,\n Typography,\n type AlertProps,\n type TypographyProps,\n} from '@mui/material'\n\ninterface NoDataAlertProps {\n title?: string\n body?: string\n severity?: AlertProps['severity']\n}\n\nexport function NoDataAlert({\n title = 'No data available',\n body = 'There are no results for the combination of filters applied to your data. Try tweaking your filters, or zoom and pan the map to adjust the Map View.',\n severity,\n}: NoDataAlertProps) {\n if (severity) {\n return (\n <Alert title={title} severity={severity}>\n <AlertBody>{body}</AlertBody>\n </Alert>\n )\n }\n\n return (\n <Box>\n {title && <Typography variant='body2'>{title}</Typography>}\n <AlertBody color='textSecondary'>{body}</AlertBody>\n </Box>\n )\n}\n\n// Aux\ninterface AlertBodyProps {\n color?: TypographyProps['color']\n children: React.ReactNode\n}\n\nfunction AlertBody({ color, children }: AlertBodyProps) {\n if (children) {\n return (\n <Box mt={0.5}>\n <Typography\n component='div'\n variant='caption'\n color={color ?? 'inherit'}\n style={{ fontWeight: 'normal' }}\n >\n {children}\n </Typography>\n </Box>\n )\n }\n\n return <Box mt={-1} />\n}\n","import { useState } from 'react'\n\nexport function useSkeleton(isLoading: boolean) {\n // Track render phase: 0=never shown, 1=showing now, 2=already shown\n const [phase, setPhase] = useState(() => (isLoading ? 1 : 0))\n\n // Transition from phase 0 to 1 when loading starts\n if (isLoading && phase === 0) {\n setPhase(1)\n }\n\n // Transition from phase 1 to 2 when loading ends (skeleton was shown, now done)\n if (!isLoading && phase === 1) {\n setPhase(2)\n }\n\n // Show skeleton only in phase 1 (first time loading)\n return phase === 1\n}\n","import { type SxProps, type Theme } from '@mui/material'\n\nconst ellipsed = {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}\n\nexport const styles = {\n label: {\n '& .MuiListItemText-primary': {\n ...ellipsed,\n },\n },\n value: {\n '& .MuiListItemText-primary': {\n ...ellipsed,\n textAlign: 'right',\n },\n },\n clickable: {\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: ({ palette }) => palette.action.hover,\n },\n },\n showDivider: {\n borderBottom: ({ palette }) => `1px solid ${palette.divider}`,\n },\n selected: {\n backgroundColor: ({ palette }) => palette.action.selected,\n },\n disabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { useState, useMemo, type JSX } from 'react'\nimport { Box, Button, Grid, ListItem, List, ListItemText } from '@mui/material'\nimport { ListDataSkeleton } from './list-data-skeleton'\nimport { NoDataAlert } from '../no-data-alert/no-data-alert'\nimport { useSkeleton } from '../../hooks/use-skeleton'\nimport type { ListDataProps } from './types'\nimport { styles } from './styles'\nimport { SmartTooltip } from '../smart-tooltip/smart-tooltip'\n\nconst DEFAULT_LABELS = {\n showMore: 'Show More',\n showLess: 'Show Less',\n} as const\n\nconst EMPTY_DATA: ListDataProps['data'] = []\n\n/**\n * Displays structured data in an accessible list format with expandable views, interactive selection, tooltips, and loading states.\n *\n * @example\n * ```tsx\n * <ListDataUI\n * data={[\n * { id: '1', label: 'Population', value: '8.4M' },\n * { id: '2', label: 'Median Age', value: '32 years' },\n * ]}\n * maxItems={3}\n * onItemClick={(item) => setSelectedId(item.id)}\n * selectedItemId={selectedId}\n * />\n * ```\n */\nexport function ListDataUI({\n data = EMPTY_DATA,\n isLoading = false,\n maxItems = 5,\n labels = DEFAULT_LABELS,\n showDivider = true,\n selectedItemId,\n tooltipProps,\n onExpand,\n onItemClick,\n}: ListDataProps): JSX.Element {\n const [showAll, setShowAll] = useState(false)\n\n const showSkeleton = useSkeleton(isLoading)\n\n const items = useMemo(() => {\n return showAll ? data : data.slice(0, maxItems)\n }, [data, maxItems, showAll])\n\n const handleToggle = () => {\n setShowAll(!showAll)\n onExpand?.(showAll)\n }\n\n if (showSkeleton) {\n return <ListDataSkeleton length={maxItems} />\n }\n\n if (items.length === 0) {\n return <NoDataAlert />\n }\n\n return (\n <>\n <List id='expandable-list' role='list'>\n {items.map((item) => (\n <SmartTooltip<HTMLLIElement>\n // Default tooltip props\n followCursor={false}\n key={item.id}\n placement='top'\n arrow\n title={item.tooltipTitle}\n enterDelay={10}\n // Custom tooltip props\n {...tooltipProps}\n >\n {({ ref }) => (\n <ListItem\n ref={ref}\n role='listitem'\n sx={{\n ...(showDivider && styles.showDivider),\n ...(onItemClick && styles.clickable),\n ...(selectedItemId === item.id && styles.selected),\n ...(item.disabled && styles.disabled),\n }}\n onClick={() => {\n if (item.disabled) return\n onItemClick?.(item)\n }}\n >\n <Grid container alignItems='center'>\n <Grid item xs={8}>\n <ListItemText primary={item.label} sx={styles.label} />\n </Grid>\n <Grid item xs={4}>\n <ListItemText primary={item.value} sx={styles.value} />\n </Grid>\n </Grid>\n </ListItem>\n )}\n </SmartTooltip>\n ))}\n </List>\n\n {data.length > maxItems && (\n <Box my={2}>\n <Button\n onClick={handleToggle}\n variant='text'\n color='primary'\n aria-expanded={showAll}\n aria-controls='expandable-list'\n >\n {showAll ? labels.showLess : labels.showMore}\n </Button>\n </Box>\n )}\n </>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const BASEMAPS_WIDTH = 288\n\nexport const styles = {\n root: {\n width: BASEMAPS_WIDTH,\n overflow: 'auto',\n },\n toggle: {\n padding: ({ spacing }) => spacing(0.5),\n\n img: {\n width: '100%',\n aspectRatio: '1 / 1',\n borderRadius: ({ spacing }) => spacing(0.25),\n },\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: ({ spacing }) => spacing(1),\n paddingInlineStart: ({ spacing }) => spacing(2),\n position: 'sticky',\n top: 0,\n zIndex: 2,\n background: ({ palette }) => palette.background.paper,\n },\n groupWrapper: {\n content: {\n paddingInline: ({ spacing }) => spacing(2),\n paddingBlock: ({ spacing }) => spacing(0.5),\n },\n },\n group: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n paddingInline: ({ spacing }) => spacing(2),\n paddingBlock: ({ spacing }) => spacing(1),\n },\n item: {\n container: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n gap: ({ spacing }) => spacing(1),\n background: 'transparent',\n border: 'none',\n cursor: 'pointer',\n padding: 0,\n height: ({ spacing }) => spacing(12),\n\n img: {\n maxWidth: ({ spacing }) => spacing(9),\n aspectRatio: '1 / 1',\n borderRadius: ({ spacing }) => spacing(0.5),\n border: `2px solid transparent`,\n\n '&:hover': {\n borderColor: ({ palette }) => palette.action.active,\n },\n\n '&[data-active=\"true\"]': {\n borderColor: ({ palette }) => palette.primary.main,\n },\n },\n },\n selected: {\n color: ({ palette }) => palette.primary.main,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import type { BasemapsUILabels } from './types'\n\nexport const DEFAULT_BASEMAPS_LABELS: BasemapsUILabels = {\n toggle: {\n title: 'Toggle basemaps controls',\n },\n header: {\n title: 'Basemaps',\n actions: {\n close: 'Close',\n },\n },\n}\n","import { Close } from '@mui/icons-material'\nimport { Box, Typography, IconButton } from '@mui/material'\nimport { styles } from './styles'\nimport type { BasemapsUILabels } from './types'\nimport { Tooltip } from '../tooltip/tooltip'\n\nexport function Header({\n isMobile = false,\n labels,\n onChangeCollapsed,\n}: {\n labels: BasemapsUILabels['header']\n isMobile?: boolean\n onChangeCollapsed: () => void\n}) {\n return (\n <Box sx={styles.header}>\n {isMobile && (\n <>\n <Typography variant='caption' flexGrow={1}>\n {labels.title}\n </Typography>\n <Tooltip title={labels.actions.close}>\n <IconButton\n size='small'\n onClick={onChangeCollapsed}\n aria-label={labels.actions.close}\n >\n <Close />\n </IconButton>\n </Tooltip>\n </>\n )}\n </Box>\n )\n}\n","import { Typography } from '@mui/material'\nimport type { ReactNode } from 'react'\nimport { styles } from './styles'\n\nexport function GroupWrapper({\n title,\n children,\n collapsed = false,\n}: {\n title: string\n children: ReactNode\n collapsed?: boolean\n}) {\n if (collapsed) return children\n\n return (\n <>\n <Typography\n variant='caption'\n color='textSecondary'\n sx={styles.groupWrapper.content}\n >\n {title}\n </Typography>\n {children}\n </>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from './styles'\nimport type { BasemapOption } from './types'\n\nexport function Group({\n values,\n selected,\n onChange,\n}: {\n values: Omit<BasemapOption, 'group'>[]\n selected: string | null | undefined\n onChange: (id: string) => void\n}) {\n return (\n <Box sx={styles.group}>\n {values.map((option) => {\n const isSelected = option.id === selected\n return (\n <Box\n key={option.id}\n sx={styles.item.container}\n component='button'\n aria-label={option.label}\n onClick={() => onChange(option.id)}\n >\n <img\n src={option.icon}\n aria-label={option.label + ' icon'}\n data-active={isSelected}\n />\n <Typography\n variant='caption'\n sx={{ ...(isSelected && styles.item.selected) }}\n >\n {option.label}\n </Typography>\n </Box>\n )\n })}\n </Box>\n )\n}\n","import {\n Drawer,\n Popover,\n type PopoverActions,\n type PopoverOrigin,\n type PopoverProps,\n} from '@mui/material'\nimport { useCallback, useRef, type CSSProperties, type ReactNode } from 'react'\n\ntype ResponsiveDrawerPosition =\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right'\n\n/** Placement of the panel relative to its anchor (desktop popover only). */\nexport type ResponsiveDrawerPlacement = 'side' | 'overlay'\n\n/**\n * Resolve the Popover anchor/transform origins for a given corner + placement.\n *\n * `transformOrigin` (the panel corner that pins to the anchor point) is the same\n * for both placements: the panel's own corner matching `position`. `anchorOrigin`\n * (the point on the anchor the panel pins to) differs:\n * - `'side'` flips horizontally → the panel opens beside the trigger.\n * - `'overlay'` uses the same corner → the panel sits **on top of** the anchor\n * (e.g. a trigger that's hidden while the panel is open), pinned corner-to-corner.\n */\nexport function resolveOrigins(\n position: ResponsiveDrawerPosition,\n placement: ResponsiveDrawerPlacement,\n): { anchorOrigin: PopoverOrigin; transformOrigin: PopoverOrigin } {\n const isBottom = position.startsWith('bottom')\n const isRight = position.endsWith('right')\n const overlay = placement === 'overlay'\n\n return {\n anchorOrigin: {\n vertical: isBottom ? 'bottom' : 'top',\n // `'side'` flips horizontally to open beside the anchor; `'overlay'` keeps\n // the same edge so the panel lands on top of it.\n horizontal: overlay\n ? isRight\n ? 'right'\n : 'left'\n : isRight\n ? 'left'\n : 'right',\n },\n transformOrigin: {\n vertical: isBottom ? 'bottom' : 'top',\n horizontal: isRight ? 'right' : 'left',\n },\n }\n}\n\nexport function ResponsiveDrawer<\n T extends {\n collapsed: boolean\n onChangeCollapsed: (collapsed: boolean) => void\n position: ResponsiveDrawerPosition\n slotProps?: PopoverProps['slotProps']\n },\n>({\n ref,\n children,\n collapsed,\n isMobile = false,\n position,\n sx,\n slotProps,\n onChangeCollapsed,\n modal = true,\n placement = 'side',\n}: Required<Pick<T, 'collapsed' | 'onChangeCollapsed' | 'position'>> &\n Pick<PopoverProps, 'slotProps' | 'sx'> & {\n ref: HTMLElement | null\n isMobile: boolean\n children: ReactNode\n /**\n * When `false`, the desktop popover is **non-modal**: no backdrop, clicks\n * pass through to the content behind it (e.g. a map stays interactive), no\n * focus trap, and neither backdrop-click nor Escape closes it (close it via\n * `onChangeCollapsed`). Defaults to `true` (standard dismissable popover).\n * Desktop-only — the mobile drawer is unaffected.\n */\n modal?: boolean\n /**\n * Desktop popover placement relative to the anchor: `'side'` (default) opens\n * beside the trigger; `'overlay'` pins corner-to-corner, sitting on top of\n * the anchor (e.g. a trigger hidden while the panel is open). Desktop-only.\n */\n placement?: ResponsiveDrawerPlacement\n }) {\n // MUI Popover computes its position once on open and never re-measures when\n // its content resizes — so a panel that grows/shrinks (e.g. collapsing legend\n // groups) keeps its frozen `top` and detaches from the anchored edge (the\n // \"blink\"). Re-run the Popover's own positioning (`action.updatePosition`)\n // whenever the content changes size: with `transformOrigin` matching the\n // anchor edge, that edge stays pinned (bottom for `bottom-*`, top for\n // `top-*`) — and because updatePosition is synchronous, it tracks every\n // animation frame smoothly rather than snapping after a debounce.\n //\n // A callback ref (not a `useEffect`) attaches the observer the moment the\n // content mounts — the Popover renders into a portal behind a transition, so\n // the element isn't available on the effect tick that follows `open`.\n const popoverActions = useRef<PopoverActions>(null)\n const observerRef = useRef<ResizeObserver | null>(null)\n const observeContent = useCallback((el: HTMLDivElement | null) => {\n observerRef.current?.disconnect()\n observerRef.current = null\n if (el && typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() =>\n popoverActions.current?.updatePosition(),\n )\n observer.observe(el)\n observerRef.current = observer\n }\n }, [])\n\n if (isMobile) {\n // MUI calls `onClose(event, reason)`; adapt it to the boolean contract.\n return (\n <Drawer\n anchor='bottom'\n open={!collapsed}\n onClose={() => onChangeCollapsed(true)}\n >\n {children}\n </Drawer>\n )\n }\n\n const { anchorOrigin, transformOrigin } = resolveOrigins(position, placement)\n\n // Non-modal mode injects pointer-through `style` into the root/paper slots so\n // clicks fall through to the content behind (the map) while the panel stays\n // interactive. Only the legend uses it and it passes no `slotProps`, so the\n // common path (modal, incl. Basemaps' callback/object slotProps) is passed\n // straight through untouched.\n const objectSlotProps = slotProps as\n | { root?: Record<string, unknown>; paper?: { style?: CSSProperties } }\n | undefined\n const mergedSlotProps: PopoverProps['slotProps'] = modal\n ? slotProps\n : {\n root: {\n style: { pointerEvents: 'none' },\n ...objectSlotProps?.root,\n },\n paper: {\n ...objectSlotProps?.paper,\n style: {\n pointerEvents: 'auto',\n ...objectSlotProps?.paper?.style,\n },\n },\n }\n\n return (\n <Popover\n action={popoverActions}\n sx={sx}\n anchorEl={ref}\n // Guard on `ref` so an open-by-default panel doesn't render before the\n // anchor callback-ref has resolved (avoids the null-anchorEl warning +\n // one-frame misposition; it re-renders non-null immediately after mount).\n open={!collapsed && ref != null}\n // In non-modal mode neither backdrop nor Escape dismisses — close via\n // `onChangeCollapsed` (e.g. the panel's own ✕).\n onClose={modal ? () => onChangeCollapsed(true) : undefined}\n hideBackdrop={!modal}\n disableScrollLock={!modal}\n disableEscapeKeyDown={!modal}\n disableAutoFocus={!modal}\n disableEnforceFocus={!modal}\n disableRestoreFocus={!modal}\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n slotProps={mergedSlotProps}\n >\n {/* Observed for content-resize → keeps the Popover pinned (see above). */}\n <div ref={observeContent}>{children}</div>\n </Popover>\n )\n}\n","import { IconButton, Paper, useMediaQuery, useTheme } from '@mui/material'\nimport type { BasemapsUIProps } from './types'\nimport { useEffect, useRef, useState, type JSX } from 'react'\nimport { styles } from './styles'\nimport deepmerge from 'deepmerge'\nimport { DEFAULT_BASEMAPS_LABELS } from './const'\nimport { Header } from './header'\nimport { GroupWrapper } from './group-wrapper'\nimport { Group } from './group'\nimport { ResponsiveDrawer } from '../responsive-drawer/responsive-drawer'\nimport { Tooltip } from '../tooltip/tooltip'\n\nconst EMPTY_OPTIONS: BasemapsUIProps['options'] = []\n\n/**\n * Provides an interactive basemap selector with responsive drawer, grouping support, and customizable positioning.\n *\n * @remarks\n * This is an uncontrolled component focused on UI presentation. Typically used with the `BasemapsControls` HOC from `@carto/ps-react-maps` for automatic state management.\n *\n * @example\n * ```tsx\n * <BasemapsControls mapId={mapId}>\n * {({ basemap, setBasemap }) => (\n * <BasemapsUI\n * options={basemapOptions}\n * selected={basemap}\n * onChange={setBasemap}\n * position=\"bottom-right\"\n * />\n * )}\n * </BasemapsControls>\n * ```\n */\nexport function BasemapsUI({\n options = EMPTY_OPTIONS,\n labels: _labels,\n position = 'bottom-right',\n selected = null,\n onChange,\n TooltipProps,\n}: BasemapsUIProps): JSX.Element {\n const [toggleRef, setToggleRef] = useState<HTMLButtonElement | null>(null)\n const [isOpen, setIsOpen] = useState(false)\n const timeoutRef = useRef<NodeJS.Timeout | null>(null)\n const [timer, setTimer] = useState<number | null>(null)\n const theme = useTheme()\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'))\n const labels = deepmerge(DEFAULT_BASEMAPS_LABELS, _labels ?? {})\n\n const optionSelected = options.find((option) => option.id === selected)\n\n const groups = Object.groupBy(options, (option) => option.group ?? 'default')\n\n const groupCount = Object.keys(groups).length\n\n const handleClose = () => {\n setToggleRef(null)\n setIsOpen(false)\n }\n\n useEffect(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n\n if (!timer) {\n return\n }\n\n timeoutRef.current = setTimeout(() => {\n handleClose()\n return\n }, timer)\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n }\n }, [timer])\n\n const handleMouseOver = () => {\n setTimer(null)\n }\n const handleMouseLeave = () => {\n setTimer(400)\n }\n\n return (\n <Paper>\n <Tooltip title={labels.toggle.title} placement='right' {...TooltipProps}>\n <IconButton\n sx={styles.toggle}\n onClick={(e) => {\n setToggleRef(e.currentTarget as HTMLButtonElement)\n setIsOpen(true)\n }}\n >\n <img\n src={optionSelected?.icon}\n alt={optionSelected?.label ?? 'Basemap'}\n />\n </IconButton>\n </Tooltip>\n\n <ResponsiveDrawer\n ref={toggleRef}\n slotProps={{\n paper: {\n sx: {\n ...styles.root,\n transform: `translate3d(${position.endsWith('right') ? '-8px' : '8px'}, ${\n position.startsWith('bottom') ? '-4px' : '4px'\n }, 0) !important`,\n },\n onMouseOver: handleMouseOver,\n onMouseLeave: handleMouseLeave,\n },\n }}\n collapsed={!isOpen}\n position={position}\n isMobile={isMobile}\n onChangeCollapsed={() => handleClose()}\n >\n <Header\n isMobile={isMobile}\n labels={labels.header}\n onChangeCollapsed={() => handleClose()}\n />\n {Object.entries(groups).map(([group, values]) => (\n <GroupWrapper\n key={group}\n title={group + ' ' + labels.header.title}\n collapsed={groupCount < 2}\n >\n <Group\n values={values!}\n selected={selected}\n onChange={(e) => {\n handleClose()\n onChange(e)\n }}\n />\n </GroupWrapper>\n ))}\n </ResponsiveDrawer>\n </Paper>\n )\n}\n"],"names":["EMPTY_VALUES","EMPTY_BOX_PROPS","LassoToolsInlineUI","t0","$","_c","enabled","values","t1","chipProps","labels","modes","modesMapping","modeSelected","BoxProps","t2","onChipToggle","onDelete","onChangeMode","onAllChipToggle","onAllDelete","undefined","t3","sx","t4","deepmerge","data","_modes","edit","t5","valueId","handleDelete","t6","evt","mode","preventDefault","handleClick","mode_0","Object","keys","modeSelectedValue","t7","modesValues","t8","styles","container","t9","options","t10","value","t11","t12","jsx","OptionsList","t13","length","jsxs","Fragment","Divider","disabled","t14","ToggleButtonGroup","menu","t15","ModeList","t16","Symbol","for","t17","t18","noData","t19","NoData","t20","chip","Box","map","LassoToolsUIChip","id","t21","actions","t22","Actions","t23","children","modeTitle","title","LASSO_TOOLS_LABELS","Typography","filter","Boolean","label","Tooltip","ToggleButton","SvgIcon","icon","hasValues","description","toggleAllLabel","some","_temp","toggleAll","active","inactive","deleteAllLabel","deleteAll","Button","visible","ICON_SIZE","containerSx","display","flexDirection","alignItems","width","gap","spacing","p","borderRadius","backgroundColor","palette","background","paper","baseButtonSx","toggleButtonSx","color","primary","main","text","secondary","action","hover","LassoGeometryToolbarUI","type","locked","onToggleType","onRename","onToggleLock","PaperProps","paperRef","useRef","committedRef","anchorEl","setAnchorEl","useState","barWidth","setBarWidth","draft","setDraft","renaming","toggleTypeLabel","toggleType","draw","mask","renameLabel","rename","renameInputLabel","renameInput","lockLabel","lock","unlock","deleteLabel","delete","current","clientWidth","openRename","next","trim","commitRename","cancelRename","event","key","handleRenameKeyDown","SpatialMaskIcon","fontSize","ToolbarButton","TextAaIcon","LockOutlined","DeleteOutlined","t24","t25","vertical","horizontal","t26","minWidth","t27","t28","e","target","t29","TextField","t30","Popover","t31","Paper","node","focus","pressed","onClick","IconButton","titleSx","justifyContent","groupSx","overflow","default","searchSx","height","px","rowSx","py","checkboxSlotSx","mr","LassoLayerFiltersUI","open","onClose","layers","onApply","DialogProps","labelId","useId","search","setSearch","wasOpen","setWasOpen","Set","_temp2","_temp3","allSelectedLabel","allSelected","empty","every","l_1","has","l","allChecked","l_2","someChecked","prev","add","toggle","_temp4","l_4","_temp5","handleApply","normalized","toLowerCase","l_6","includes","filtered","Close","DialogTitle","pt","pb","mb","Search","InputBase","maxHeight","overflowY","my","ListItemIcon","Checkbox","variant","ListItemText","ListItemButton","t32","t33","layer","noWrap","t34","List","t35","t36","DialogContent","t37","t38","cancel","t39","t40","apply","t41","t42","DialogActions","t43","Dialog","l_5","l_3","l_0","checked","RulerIcon","props","BufferIcon","AreaIcon","DEFAULT_MEASUREMENT_TOOLS_LABELS","tooltip","distance","buffer","area","units","modal","subtitle","metric","kilometer","meter","centimeter","milimeter","imperial","mile","feet","yard","DEFAULT_MEASUREMENT_TOOLS_UNITS_MAPPING","short","DEFAULT_MEASUREMENT_TOOLS_MODES_MAPPING","marginTop","paddingX","paddingY","icons","tag","border","borderColor","alpha","boxShadow","padding","marginBottom","typography","fontWeight","margin","marginLeft","optionsGroup","content","EMPTY_PAPER_PROPS","MeasurementToolsUI","actionProps","unitsMapping","unitSelected","onActionToggle","onChangeUnit","handleToggle","data_0","modeExists","option","slice","unit","_units","MeasurementToolsUIAction","Options","actionState","actionLabel","TooltipProps","unitModal","setUnitModal","modesAvailable","unitsAvailable","currentTarget","handleClose","handleClickUnit","handleCloseModal","handleApplyModal","unitTitle","hasDivider","find","unitSelectedValue","ArrowDropDown","MenuItem","e_0","UnitsModal","Menu","onSubmit","system","setSystem","_","handleToggleChange","_labels","labelsBySystem","modalUnitTitle","modalUnitSubtitle","modalUnitApply","_unitSelectedValue","component","formData","FormData","get","unit_0","FormControlLabel","Radio","RadioGroup","FormControl","tooltipLabelsDefault","ariaLabel","GeolocationControls","watch","onChange","onError","watchRef","hasGeolocation","navigator","allowed","dispatch","useReducer","error","notifyError","useEffectEvent","permissions","query","name","then","result","state","onchange","catch","error_0","geolocation","clearWatch","useEffect","position","coords","success","error_1","error_2","watchPosition","getCurrentPosition","MyLocationOutlined","LocationDisabledOutlined","zoom","aspectRatio","shadows","button","circularProgress","ZoomControlsUI","direction","reverse","isLoading","maxZoom","minZoom","ResetViewProps","showZoom","onReset","Icon","CropFreeOutlined","newZoom","Math","min","increaseZoom","newZoom_0","max","decreaseZoom","displayZoom","floor","dividerOrientation","AddOutlined","CircularProgress","RemoveOutlined","ListDataSkeleton","Array","fill","idx","Grid","Skeleton","isOdd","spacing_1","spacing_0","num","NoDataAlert","body","severity","AlertBody","Alert","useSkeleton","phase","setPhase","ellipsed","textOverflow","whiteSpace","textAlign","clickable","cursor","showDivider","borderBottom","divider","selected","opacity","pointerEvents","DEFAULT_LABELS","showMore","showLess","EMPTY_DATA","ListDataUI","maxItems","selectedItemId","tooltipProps","onExpand","onItemClick","showAll","setShowAll","showSkeleton","items","item","SmartTooltip","tooltipTitle","ref","ListItem","BASEMAPS_WIDTH","root","img","header","paddingInlineStart","top","zIndex","groupWrapper","paddingInline","paddingBlock","group","flexWrap","maxWidth","DEFAULT_BASEMAPS_LABELS","close","Header","isMobile","onChangeCollapsed","GroupWrapper","collapsed","Group","isSelected","resolveOrigins","placement","isBottom","startsWith","isRight","endsWith","anchorOrigin","transformOrigin","ResponsiveDrawer","slotProps","popoverActions","observerRef","el","disconnect","ResizeObserver","observer","updatePosition","observe","observeContent","Drawer","objectSlotProps","style","mergedSlotProps","EMPTY_OPTIONS","BasemapsUI","toggleRef","setToggleRef","isOpen","setIsOpen","timeoutRef","timer","setTimer","theme","useTheme","breakpoints","down","useMediaQuery","optionSelected","groupBy","groups","groupCount","clearTimeout","setTimeout","handleMouseOver","handleMouseLeave","transform","onMouseOver","onMouseLeave","entries","option_0"],"mappings":"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"}
|