ixia-ui-react 1.7.0 → 2.0.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/README.md +24 -1
- package/dist/accordion/index.d.ts +41 -0
- package/dist/accordion/index.js +142 -0
- package/dist/accordion/index.js.map +1 -0
- package/dist/alert/index.d.ts +22 -0
- package/dist/alert/index.js +1 -0
- package/dist/alert-Dcu9R8CY.js +73 -0
- package/dist/alert-Dcu9R8CY.js.map +1 -0
- package/dist/alert-dialog/index.d.ts +39 -0
- package/dist/alert-dialog/index.js +134 -0
- package/dist/alert-dialog/index.js.map +1 -0
- package/dist/autocomplete/index.d.ts +2 -0
- package/dist/autocomplete/index.js +1 -0
- package/dist/autocomplete-BfpWVO1l.js +169 -0
- package/dist/autocomplete-BfpWVO1l.js.map +1 -0
- package/dist/avatar/index.d.ts +2 -0
- package/dist/avatar/index.js +1 -0
- package/dist/avatar-Bp4gZh21.js +93 -0
- package/dist/avatar-Bp4gZh21.js.map +1 -0
- package/dist/badge/index.d.ts +2 -0
- package/dist/badge/index.js +1 -0
- package/dist/badge-Cl-9WTW-.js +160 -0
- package/dist/badge-Cl-9WTW-.js.map +1 -0
- package/dist/bento-box/index.d.ts +30 -0
- package/dist/bento-box/index.js +103 -0
- package/dist/bento-box/index.js.map +1 -0
- package/dist/breadcrumb/index.d.ts +18 -0
- package/dist/breadcrumb/index.js +58 -0
- package/dist/breadcrumb/index.js.map +1 -0
- package/dist/button/index.d.ts +3 -0
- package/dist/button/index.js +1 -0
- package/dist/button-BpUC-R1J.js +307 -0
- package/dist/button-BpUC-R1J.js.map +1 -0
- package/dist/button-group/index.d.ts +2 -0
- package/dist/button-group/index.js +1 -0
- package/dist/button-group-7azbqlcO.js +269 -0
- package/dist/button-group-7azbqlcO.js.map +1 -0
- package/dist/button.types-BFKrBCGd.d.ts +10 -0
- package/dist/calendar/index.d.ts +63 -0
- package/dist/calendar/index.js +292 -0
- package/dist/calendar/index.js.map +1 -0
- package/dist/chart/index.d.ts +87 -0
- package/dist/chart/index.js +262 -0
- package/dist/chart/index.js.map +1 -0
- package/dist/checkbox/index.d.ts +2 -0
- package/dist/checkbox/index.js +1 -0
- package/dist/checkbox-BuUZ1Lly.js +54 -0
- package/dist/checkbox-BuUZ1Lly.js.map +1 -0
- package/dist/checkbox-group/index.d.ts +6 -0
- package/dist/checkbox-group/index.js +17 -0
- package/dist/checkbox-group/index.js.map +1 -0
- package/dist/cn-BDi0DfT5.js +29 -0
- package/dist/cn-BDi0DfT5.js.map +1 -0
- package/dist/code-block/index.d.ts +50 -0
- package/dist/code-block/index.js +208 -0
- package/dist/code-block/index.js.map +1 -0
- package/dist/collapsible/index.d.ts +2 -0
- package/dist/collapsible/index.js +1 -0
- package/dist/collapsible-BVqrh0Q0.js +44 -0
- package/dist/collapsible-BVqrh0Q0.js.map +1 -0
- package/dist/color-channel-slider/index.d.ts +2 -0
- package/dist/color-channel-slider/index.js +1 -0
- package/dist/color-channel-slider-h8mUPJ35.js +70 -0
- package/dist/color-channel-slider-h8mUPJ35.js.map +1 -0
- package/dist/color-picker/index.d.ts +137 -0
- package/dist/color-picker/index.js +621 -0
- package/dist/color-picker/index.js.map +1 -0
- package/dist/combobox/index.d.ts +64 -0
- package/dist/combobox/index.js +289 -0
- package/dist/combobox/index.js.map +1 -0
- package/dist/context-menu/index.d.ts +49 -0
- package/dist/context-menu/index.js +166 -0
- package/dist/context-menu/index.js.map +1 -0
- package/dist/dialog/index.d.ts +36 -0
- package/dist/dialog/index.js +119 -0
- package/dist/dialog/index.js.map +1 -0
- package/dist/drawer/index.d.ts +31 -0
- package/dist/drawer/index.js +95 -0
- package/dist/drawer/index.js.map +1 -0
- package/dist/dropzone/index.d.ts +70 -0
- package/dist/dropzone/index.js +479 -0
- package/dist/dropzone/index.js.map +1 -0
- package/dist/field/index.d.ts +2 -0
- package/dist/field/index.js +1 -0
- package/dist/field-DTL7eA5y.js +254 -0
- package/dist/field-DTL7eA5y.js.map +1 -0
- package/dist/form/index.d.ts +220 -0
- package/dist/form/index.js +3 -0
- package/dist/form-BxMg796f.js +192 -0
- package/dist/form-BxMg796f.js.map +1 -0
- package/dist/has-single-element-child-DLGI0Dh2.js +12 -0
- package/dist/has-single-element-child-DLGI0Dh2.js.map +1 -0
- package/dist/hooks/index.d.ts +26 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks-DUm-q_ig.js +68 -0
- package/dist/hooks-DUm-q_ig.js.map +1 -0
- package/dist/icon/index.d.ts +2 -0
- package/dist/icon/index.js +1 -0
- package/dist/icon-D3JWfCa2.js +85 -0
- package/dist/icon-D3JWfCa2.js.map +1 -0
- package/dist/icon-container/index.d.ts +10 -0
- package/dist/icon-container/index.js +64 -0
- package/dist/icon-container/index.js.map +1 -0
- package/dist/index-0ZQzIKoE.d.ts +11 -0
- package/dist/index-B3MK1QYh.d.ts +11 -0
- package/dist/index-BJVMIPq4.d.ts +54 -0
- package/dist/index-BsV-u_jc.d.ts +4 -0
- package/dist/index-BygR7cUT.d.ts +22 -0
- package/dist/index-BzTOLSgZ.d.ts +9 -0
- package/dist/index-C15xiG9O.d.ts +14 -0
- package/dist/index-C2zco6-C.d.ts +15 -0
- package/dist/index-CIDOd4Z8.d.ts +56 -0
- package/dist/index-CQti9gFb.d.ts +49 -0
- package/dist/index-CiE-Rqit.d.ts +70 -0
- package/dist/index-D1kkOg9k.d.ts +14 -0
- package/dist/index-DLfdAked.d.ts +34 -0
- package/dist/index-DMaW_XF1.d.ts +24 -0
- package/dist/index-Db_QGr6S.d.ts +5 -0
- package/dist/index-DdFxZ3Xr.d.ts +22 -0
- package/dist/index-DfNHJF0t.d.ts +33 -0
- package/dist/index-DyQYoAUf.d.ts +29 -0
- package/dist/index-N2CBSUDu.d.ts +14 -0
- package/dist/index-PuhTRMce.d.ts +11 -0
- package/dist/index-Wb_tILYa.d.ts +24 -0
- package/dist/index-bVyqfhJS.d.ts +4 -0
- package/dist/index-x4f8gnaI.d.ts +15 -0
- package/dist/input/index.d.ts +3 -0
- package/dist/input/index.js +1 -0
- package/dist/input-Laj6dwtK.js +179 -0
- package/dist/input-Laj6dwtK.js.map +1 -0
- package/dist/input-group/index.d.ts +2 -0
- package/dist/input-group/index.js +1 -0
- package/dist/input-group-CgdazGrY.js +111 -0
- package/dist/input-group-CgdazGrY.js.map +1 -0
- package/dist/input-otp/index.d.ts +13 -0
- package/dist/input-otp/index.js +44 -0
- package/dist/input-otp/index.js.map +1 -0
- package/dist/input.types-816rEVWU.d.ts +20 -0
- package/dist/input.types-D0gyoaQv.js +48 -0
- package/dist/input.types-D0gyoaQv.js.map +1 -0
- package/dist/kbd/index.d.ts +9 -0
- package/dist/kbd/index.js +25 -0
- package/dist/kbd/index.js.map +1 -0
- package/dist/label/index.d.ts +8 -0
- package/dist/label/index.js +1 -0
- package/dist/label-BgpayDvN.js +27 -0
- package/dist/label-BgpayDvN.js.map +1 -0
- package/dist/layer-tree/index.d.ts +728 -0
- package/dist/layer-tree/index.js +685 -0
- package/dist/layer-tree/index.js.map +1 -0
- package/dist/map/google/index.d.ts +143 -0
- package/dist/map/google/index.js +445 -0
- package/dist/map/google/index.js.map +1 -0
- package/dist/map/index.d.ts +94 -0
- package/dist/map/index.js +208 -0
- package/dist/map/index.js.map +1 -0
- package/dist/map.context-Dw1D7E8m.js +11 -0
- package/dist/map.context-Dw1D7E8m.js.map +1 -0
- package/dist/menu/index.d.ts +2 -0
- package/dist/menu/index.js +1 -0
- package/dist/menu-sf13cnGp.js +173 -0
- package/dist/menu-sf13cnGp.js.map +1 -0
- package/dist/menu-tone-DWBEHoX2.js +22 -0
- package/dist/menu-tone-DWBEHoX2.js.map +1 -0
- package/dist/meter/index.d.ts +2 -0
- package/dist/meter/index.js +1 -0
- package/dist/meter-HD5taq57.js +116 -0
- package/dist/meter-HD5taq57.js.map +1 -0
- package/dist/nav-bar/index.d.ts +25 -0
- package/dist/nav-bar/index.js +133 -0
- package/dist/nav-bar/index.js.map +1 -0
- package/dist/navigation-menu/index.d.ts +43 -0
- package/dist/navigation-menu/index.js +176 -0
- package/dist/navigation-menu/index.js.map +1 -0
- package/dist/number-field/index.d.ts +14 -0
- package/dist/number-field/index.js +116 -0
- package/dist/number-field/index.js.map +1 -0
- package/dist/popover/index.d.ts +2 -0
- package/dist/popover/index.js +1 -0
- package/dist/popover-B1s4xXrX.js +114 -0
- package/dist/popover-B1s4xXrX.js.map +1 -0
- package/dist/preview-card/index.d.ts +13 -0
- package/dist/preview-card/index.js +35 -0
- package/dist/preview-card/index.js.map +1 -0
- package/dist/profile/index.d.ts +21 -0
- package/dist/profile/index.js +52 -0
- package/dist/profile/index.js.map +1 -0
- package/dist/progress/index.d.ts +23 -0
- package/dist/progress/index.js +97 -0
- package/dist/progress/index.js.map +1 -0
- package/dist/radar-ping/index.d.ts +11 -0
- package/dist/radar-ping/index.js +49 -0
- package/dist/radar-ping/index.js.map +1 -0
- package/dist/radio-group/index.d.ts +2 -0
- package/dist/radio-group/index.js +1 -0
- package/dist/radio-group-Dj43u35Z.js +47 -0
- package/dist/radio-group-Dj43u35Z.js.map +1 -0
- package/dist/resizeable/index.d.ts +11 -0
- package/dist/resizeable/index.js +31 -0
- package/dist/resizeable/index.js.map +1 -0
- package/dist/scroll-area/index.d.ts +11 -0
- package/dist/scroll-area/index.js +51 -0
- package/dist/scroll-area/index.js.map +1 -0
- package/dist/select/index.d.ts +2 -0
- package/dist/select/index.js +1 -0
- package/dist/select-DncJXYim.js +159 -0
- package/dist/select-DncJXYim.js.map +1 -0
- package/dist/separator/index.d.ts +2 -0
- package/dist/separator/index.js +1 -0
- package/dist/separator-DgIQp1cB.js +97 -0
- package/dist/separator-DgIQp1cB.js.map +1 -0
- package/dist/sidebar/index.d.ts +80 -0
- package/dist/sidebar/index.js +334 -0
- package/dist/sidebar/index.js.map +1 -0
- package/dist/site-header/index.d.ts +22 -0
- package/dist/site-header/index.js +55 -0
- package/dist/site-header/index.js.map +1 -0
- package/dist/skeleton/index.d.ts +4 -0
- package/dist/skeleton/index.js +1 -0
- package/dist/skeleton-DSG3FWby.js +13 -0
- package/dist/skeleton-DSG3FWby.js.map +1 -0
- package/dist/slider/index.d.ts +2 -0
- package/dist/slider/index.js +1 -0
- package/dist/slider-D_XlV4OW.js +114 -0
- package/dist/slider-D_XlV4OW.js.map +1 -0
- package/dist/slider-group/index.d.ts +46 -0
- package/dist/slider-group/index.js +198 -0
- package/dist/slider-group/index.js.map +1 -0
- package/dist/styles.css +6 -17
- package/dist/switch/index.d.ts +2 -0
- package/dist/switch/index.js +1 -0
- package/dist/switch-DXHixGHe.js +23 -0
- package/dist/switch-DXHixGHe.js.map +1 -0
- package/dist/table/index.d.ts +920 -0
- package/dist/table/index.js +1544 -0
- package/dist/table/index.js.map +1 -0
- package/dist/tabs/index.d.ts +2 -0
- package/dist/tabs/index.js +1 -0
- package/dist/tabs-DTC7coap.js +270 -0
- package/dist/tabs-DTC7coap.js.map +1 -0
- package/dist/text-area/index.d.ts +2 -0
- package/dist/text-area/index.js +1 -0
- package/dist/text-area-H6HjKnv_.js +50 -0
- package/dist/text-area-H6HjKnv_.js.map +1 -0
- package/dist/themes/hogarth.css +0 -4
- package/dist/themes/mabel.css +0 -4
- package/dist/themes/maculata.css +0 -4
- package/dist/themes/monadelpha.css +0 -4
- package/dist/themes/venus.css +0 -4
- package/dist/themes/viridiflora.css +0 -4
- package/dist/toast/index.d.ts +65 -0
- package/dist/toast/index.js +216 -0
- package/dist/toast/index.js.map +1 -0
- package/dist/toggle/index.d.ts +2 -0
- package/dist/toggle/index.js +1 -0
- package/dist/toggle-ZT9thVmz.js +73 -0
- package/dist/toggle-ZT9thVmz.js.map +1 -0
- package/dist/toggle-group/index.d.ts +10 -0
- package/dist/toggle-group/index.js +63 -0
- package/dist/toggle-group/index.js.map +1 -0
- package/dist/toggle-group-context-CBNZEf1I.js +6 -0
- package/dist/toggle-group-context-CBNZEf1I.js.map +1 -0
- package/dist/tooltip/index.d.ts +18 -0
- package/dist/tooltip/index.js +1 -0
- package/dist/tooltip-B6z3tDbW.js +41 -0
- package/dist/tooltip-B6z3tDbW.js.map +1 -0
- package/dist/trim-text-children-CQRFg2fL.js +33 -0
- package/dist/trim-text-children-CQRFg2fL.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils-BI2x7nW5.js +5 -0
- package/dist/utils-BI2x7nW5.js.map +1 -0
- package/package.json +100 -31
- package/dist/index.d.ts +0 -7993
- package/dist/index.js +0 -17219
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
import { t as cn } from "../../cn-BDi0DfT5.js";
|
|
2
|
+
import { n as Icon } from "../../icon-D3JWfCa2.js";
|
|
3
|
+
import { t as Button } from "../../button-BpUC-R1J.js";
|
|
4
|
+
import { a as AutocompleteItem, h as AutocompleteCollection, m as AutocompleteContent, p as AutocompleteEmpty, r as AutocompleteStatus, t as Autocomplete } from "../../autocomplete-BfpWVO1l.js";
|
|
5
|
+
import { t as ButtonGroup } from "../../button-group-7azbqlcO.js";
|
|
6
|
+
import { n as useIxiaMap } from "../../map.context-Dw1D7E8m.js";
|
|
7
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
import React, { Fragment as Fragment$1, useCallback, useEffect, useMemo, useState } from "react";
|
|
9
|
+
import { CircleNotchIcon, MinusIcon, NavigationArrowIcon, PlusIcon } from "@phosphor-icons/react";
|
|
10
|
+
import { APIProvider, AdvancedMarker, CollisionBehavior, Map, useMap, useMapsLibrary } from "@vis.gl/react-google-maps";
|
|
11
|
+
import { GoogleMapsOverlay } from "@deck.gl/google-maps";
|
|
12
|
+
import { useAsyncDebouncer } from "@tanstack/react-pacer";
|
|
13
|
+
import Supercluster from "supercluster";
|
|
14
|
+
// src/components/map/google/google-map.tsx
|
|
15
|
+
function GoogleMap$1({ children, ...props }) {
|
|
16
|
+
return /* @__PURE__ */ jsx(APIProvider, {
|
|
17
|
+
...props,
|
|
18
|
+
children
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
// src/components/map/google/google-map-cluster.tsx
|
|
22
|
+
function GoogleMapCluster({ className, children, count, label, collisionBehavior = CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL, zIndex = count, ...props }) {
|
|
23
|
+
return /* @__PURE__ */ jsx(AdvancedMarker, {
|
|
24
|
+
"aria-label": label,
|
|
25
|
+
collisionBehavior,
|
|
26
|
+
zIndex,
|
|
27
|
+
className: cn("flex min-h-xl min-w-xl animate-appear items-center justify-center rounded-full border border-neutral-border bg-neutral-container p-3xs", className),
|
|
28
|
+
...props,
|
|
29
|
+
children: children ?? /* @__PURE__ */ jsx("span", { children: count })
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
// src/components/map/google/google-map.utils.ts
|
|
33
|
+
function isGoogleMapSuggestionLabelValue(itemValue) {
|
|
34
|
+
return typeof itemValue === "object" && itemValue !== null && "placePrediction" in itemValue && typeof itemValue.placePrediction === "object" && itemValue.placePrediction !== null && "text" in itemValue.placePrediction && typeof itemValue.placePrediction.text === "object" && itemValue.placePrediction.text !== null && "text" in itemValue.placePrediction.text && typeof itemValue.placePrediction.text.text === "string";
|
|
35
|
+
}
|
|
36
|
+
function getGoogleMapSuggestionLabel(itemValue) {
|
|
37
|
+
if (!isGoogleMapSuggestionLabelValue(itemValue)) return "";
|
|
38
|
+
return itemValue.placePrediction.text.text;
|
|
39
|
+
}
|
|
40
|
+
function isClusterFeature(item) {
|
|
41
|
+
return item.properties !== null && "cluster" in item.properties && item.properties.cluster === true;
|
|
42
|
+
}
|
|
43
|
+
// src/components/map/google/google-map-cluster-layer.tsx
|
|
44
|
+
function GoogleMapClusterLayer({ items, getKey, getLeaves, getClusterExpansionZoom, renderItem, renderCluster, children }) {
|
|
45
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [items.map((item) => {
|
|
46
|
+
if (isClusterFeature(item)) {
|
|
47
|
+
const clusterId = item.properties.cluster_id;
|
|
48
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: renderCluster(item, {
|
|
49
|
+
getExpansionZoom: () => getClusterExpansionZoom(clusterId),
|
|
50
|
+
getLeaves: () => getLeaves(clusterId)
|
|
51
|
+
}) }, `cluster-${clusterId}`);
|
|
52
|
+
}
|
|
53
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: renderItem(item) }, getKey(item));
|
|
54
|
+
}), children] });
|
|
55
|
+
}
|
|
56
|
+
// src/components/map/google/google-map-deckgl-overlay.tsx
|
|
57
|
+
function cloneLayers(configs) {
|
|
58
|
+
return configs.map(({ id, visualLayer: layer, layerProps, visible }) => layer.clone({
|
|
59
|
+
...layerProps,
|
|
60
|
+
id,
|
|
61
|
+
visible: visible ?? true
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
function GoogleMapDeckGLOverlay({ interleaved = false, ...deckProps }) {
|
|
65
|
+
const map = useMap(), ixiaMap = useIxiaMap(), overlayRef = React.useRef(void 0);
|
|
66
|
+
React.useEffect(() => {
|
|
67
|
+
if (!map) return;
|
|
68
|
+
const overlay = new GoogleMapsOverlay({ interleaved });
|
|
69
|
+
overlayRef.current = overlay;
|
|
70
|
+
overlay.setMap(map);
|
|
71
|
+
return () => {
|
|
72
|
+
overlayRef.current = void 0;
|
|
73
|
+
overlay.finalize();
|
|
74
|
+
};
|
|
75
|
+
}, [map, interleaved]);
|
|
76
|
+
React.useEffect(() => {
|
|
77
|
+
overlayRef.current?.setProps({
|
|
78
|
+
...deckProps,
|
|
79
|
+
interleaved,
|
|
80
|
+
layers: cloneLayers(ixiaMap.layers.filter((layer) => layer.kind === "deckgl"))
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// src/components/map/google/google-map-frame.tsx
|
|
85
|
+
function GoogleMapFrame({ className, children, ...props }) {
|
|
86
|
+
const id = React.useId();
|
|
87
|
+
return /* @__PURE__ */ jsx(Map, {
|
|
88
|
+
className: cn("", className),
|
|
89
|
+
id,
|
|
90
|
+
...props,
|
|
91
|
+
children
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// src/components/map/google/google-map-geolocate-control.tsx
|
|
95
|
+
const ZOOM_LEVEL = 15;
|
|
96
|
+
function GoogleMapGeolocateControl({ zoomLevel = ZOOM_LEVEL, className, children, ref, ...props }) {
|
|
97
|
+
const map = useMap(), [isPending, startTransition] = React.useTransition(), handleClick = () => {
|
|
98
|
+
if (!map) return;
|
|
99
|
+
startTransition(async () => {
|
|
100
|
+
const pos = await new Promise((resolve) => {
|
|
101
|
+
navigator.geolocation.getCurrentPosition((position) => {
|
|
102
|
+
const lat = position.coords.latitude, lng = position.coords.longitude;
|
|
103
|
+
resolve({
|
|
104
|
+
lat,
|
|
105
|
+
lng
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
if (pos) map.moveCamera({
|
|
110
|
+
center: pos,
|
|
111
|
+
zoom: zoomLevel
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
return /* @__PURE__ */ jsxs(Button, {
|
|
116
|
+
disabled: isPending,
|
|
117
|
+
onClick: handleClick,
|
|
118
|
+
size: "medium",
|
|
119
|
+
tone: "neutral",
|
|
120
|
+
variant: "elevated",
|
|
121
|
+
className: cn("shrink-0", className),
|
|
122
|
+
ref,
|
|
123
|
+
...props,
|
|
124
|
+
children: [
|
|
125
|
+
children,
|
|
126
|
+
isPending && /* @__PURE__ */ jsx(CircleNotchIcon, {
|
|
127
|
+
className: "animate-spin",
|
|
128
|
+
weight: "bold"
|
|
129
|
+
}),
|
|
130
|
+
!isPending && /* @__PURE__ */ jsx(NavigationArrowIcon, { weight: "bold" })
|
|
131
|
+
]
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
// src/components/map/google/google-map-marker.tsx
|
|
135
|
+
function GoogleMapMarker({ collisionBehavior = CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY, ...props }) {
|
|
136
|
+
return /* @__PURE__ */ jsx(AdvancedMarker, {
|
|
137
|
+
collisionBehavior,
|
|
138
|
+
...props
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
// src/components/map/google/google-map-marker-layer.tsx
|
|
142
|
+
function GoogleMapMarkerLayer({ items, getKey, renderItem, children }) {
|
|
143
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [items.map((item) => /* @__PURE__ */ jsx(Fragment$1, { children: renderItem(item) }, getKey(item))), children] });
|
|
144
|
+
}
|
|
145
|
+
// src/components/map/google/google-map-search-control.context.ts
|
|
146
|
+
const GoogleMapSearchControlContext = React.createContext(void 0);
|
|
147
|
+
function useGoogleMapSearchControl() {
|
|
148
|
+
const context = React.useContext(GoogleMapSearchControlContext);
|
|
149
|
+
if (!context) throw new Error("useGoogleMapSearchControl must be used within a GoogleMapSearchControl");
|
|
150
|
+
return context;
|
|
151
|
+
}
|
|
152
|
+
// src/components/map/google/google-map-search-control.tsx
|
|
153
|
+
const DEFAULT_DEBOUNCE_INTERVAL = 300;
|
|
154
|
+
function GoogleMapSearchControl({ onSuggestionSelect, onValueChange, value: controlledValue, defaultValue, itemToStringValue = getGoogleMapSuggestionLabel, debounceInterval = DEFAULT_DEBOUNCE_INTERVAL, locale, children, ...props }) {
|
|
155
|
+
const [inputValue, setInputValue] = React.useState(defaultValue ?? ""), [results, setResults] = React.useState([]), autocompleteValue = controlledValue ?? inputValue, places = useMapsLibrary("places"), debouncer = useAsyncDebouncer(async (query) => {
|
|
156
|
+
const input = query.trim();
|
|
157
|
+
if (!input) {
|
|
158
|
+
setResults([]);
|
|
159
|
+
return [];
|
|
160
|
+
}
|
|
161
|
+
if (!places) return [];
|
|
162
|
+
const request = {
|
|
163
|
+
input,
|
|
164
|
+
language: locale?.toString()
|
|
165
|
+
}, { suggestions: fetchedSuggestions } = await places.AutocompleteSuggestion.fetchAutocompleteSuggestions(request);
|
|
166
|
+
setResults(fetchedSuggestions);
|
|
167
|
+
return fetchedSuggestions;
|
|
168
|
+
}, { wait: debounceInterval }, (state) => ({ isPending: state.isPending })), selectSuggestion = async (suggestion) => {
|
|
169
|
+
if (!places) return;
|
|
170
|
+
if (!suggestion.placePrediction) return;
|
|
171
|
+
if (onSuggestionSelect) await onSuggestionSelect(suggestion);
|
|
172
|
+
}, selectFirstSuggestion = async () => {
|
|
173
|
+
const [firstSuggestion] = results;
|
|
174
|
+
if (firstSuggestion) {
|
|
175
|
+
if (controlledValue === void 0) setInputValue(itemToStringValue(firstSuggestion));
|
|
176
|
+
await selectSuggestion(firstSuggestion);
|
|
177
|
+
}
|
|
178
|
+
}, handleValueChange = (value, eventDetails) => {
|
|
179
|
+
if (controlledValue === void 0) setInputValue(value);
|
|
180
|
+
onValueChange?.(value, eventDetails);
|
|
181
|
+
debouncer.maybeExecute(value);
|
|
182
|
+
};
|
|
183
|
+
return /* @__PURE__ */ jsx(GoogleMapSearchControlContext.Provider, {
|
|
184
|
+
value: {
|
|
185
|
+
debouncer,
|
|
186
|
+
locale,
|
|
187
|
+
results,
|
|
188
|
+
selectFirstSuggestion,
|
|
189
|
+
selectSuggestion,
|
|
190
|
+
setResults
|
|
191
|
+
},
|
|
192
|
+
children: /* @__PURE__ */ jsx(Autocomplete, {
|
|
193
|
+
filteredItems: results,
|
|
194
|
+
itemToStringValue,
|
|
195
|
+
mode: "list",
|
|
196
|
+
onValueChange: handleValueChange,
|
|
197
|
+
value: autocompleteValue,
|
|
198
|
+
...props,
|
|
199
|
+
children
|
|
200
|
+
})
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
// src/components/map/google/google-map-search-control-empty.tsx
|
|
204
|
+
function GoogleMapSearchControlEmpty({ className, children, ref, ...props }) {
|
|
205
|
+
const { debouncer } = useGoogleMapSearchControl();
|
|
206
|
+
return /* @__PURE__ */ jsx(debouncer.Subscribe, {
|
|
207
|
+
selector: (state) => ({ isPending: state.isPending }),
|
|
208
|
+
children: ({ isPending }) => !isPending && /* @__PURE__ */ jsx(AutocompleteEmpty, {
|
|
209
|
+
className: cn("", className),
|
|
210
|
+
ref,
|
|
211
|
+
...props,
|
|
212
|
+
children
|
|
213
|
+
})
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
// src/components/map/google/google-map-search-control-input.tsx
|
|
217
|
+
function GoogleMapSearchControlInput({ className, onKeyDown, ref, ...props }) {
|
|
218
|
+
const { results, selectFirstSuggestion } = useGoogleMapSearchControl(), handleSubmit = (event) => {
|
|
219
|
+
onKeyDown?.(event);
|
|
220
|
+
if (event.key !== "Enter" || event.defaultPrevented || !results.length) return;
|
|
221
|
+
event.preventDefault();
|
|
222
|
+
selectFirstSuggestion();
|
|
223
|
+
};
|
|
224
|
+
return /* @__PURE__ */ jsx(Autocomplete.InputGroupInput, {
|
|
225
|
+
onKeyDown: handleSubmit,
|
|
226
|
+
className: cn("", className),
|
|
227
|
+
ref,
|
|
228
|
+
...props
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
// src/components/map/google/google-map-search-control-input-group.tsx
|
|
232
|
+
function GoogleMapSearchControlInputGroup({ className, ref, ...props }) {
|
|
233
|
+
return /* @__PURE__ */ jsx(Autocomplete.InputGroup, {
|
|
234
|
+
className: cn("", className),
|
|
235
|
+
ref,
|
|
236
|
+
...props
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
// src/components/map/google/google-map-search-control-submit.tsx
|
|
240
|
+
function GoogleMapSearchControlSubmit({ className, onClick, ref, ...props }) {
|
|
241
|
+
const [isPending, startTransition] = React.useTransition(), { selectFirstSuggestion } = useGoogleMapSearchControl(), handleClick = async (event) => {
|
|
242
|
+
onClick?.(event);
|
|
243
|
+
if (!event.defaultPrevented) startTransition(async () => {
|
|
244
|
+
await selectFirstSuggestion();
|
|
245
|
+
});
|
|
246
|
+
};
|
|
247
|
+
if (isPending) return /* @__PURE__ */ jsx(Button, {
|
|
248
|
+
tone: "neutral",
|
|
249
|
+
size: "medium",
|
|
250
|
+
disabled: true,
|
|
251
|
+
className: cn("animate-spin", className),
|
|
252
|
+
ref,
|
|
253
|
+
...props,
|
|
254
|
+
children: /* @__PURE__ */ jsx(CircleNotchIcon, { weight: "bold" })
|
|
255
|
+
});
|
|
256
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
257
|
+
className: cn("", className),
|
|
258
|
+
ref,
|
|
259
|
+
...props,
|
|
260
|
+
onClick: handleClick
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
// src/components/map/google/google-map-search-control-suggestion.tsx
|
|
264
|
+
function GoogleMapSearchControlSuggestion({ suggestion, className, children, ref, ...props }) {
|
|
265
|
+
const { selectSuggestion } = useGoogleMapSearchControl();
|
|
266
|
+
return /* @__PURE__ */ jsx(AutocompleteItem, {
|
|
267
|
+
onClick: () => void selectSuggestion(suggestion),
|
|
268
|
+
className: cn("", className),
|
|
269
|
+
ref,
|
|
270
|
+
...props,
|
|
271
|
+
children: children(suggestion)
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
// src/components/map/google/google-map-tilt-control.tsx
|
|
275
|
+
const DEFAULT_TILT = 0;
|
|
276
|
+
const NULL_TILT = 0;
|
|
277
|
+
const MAX_TILT = 45;
|
|
278
|
+
function GoogleMapTiltControl({ className, children, ref, ...props }) {
|
|
279
|
+
const map = useMap(), [currentTilt, setCurrentTilt] = useState(map?.getTilt() || DEFAULT_TILT);
|
|
280
|
+
function handleClick() {
|
|
281
|
+
if (map) {
|
|
282
|
+
if (currentTilt === NULL_TILT) {
|
|
283
|
+
map.setTilt(MAX_TILT);
|
|
284
|
+
setCurrentTilt(MAX_TILT);
|
|
285
|
+
} else {
|
|
286
|
+
map.setTilt(DEFAULT_TILT);
|
|
287
|
+
setCurrentTilt(DEFAULT_TILT);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return /* @__PURE__ */ jsxs(Button, {
|
|
292
|
+
onClick: handleClick,
|
|
293
|
+
variant: "elevated",
|
|
294
|
+
tone: currentTilt === MAX_TILT ? "brand" : "neutral",
|
|
295
|
+
className: cn("", className),
|
|
296
|
+
ref,
|
|
297
|
+
...props,
|
|
298
|
+
children: [children, /* @__PURE__ */ jsx(Icon, { name: "3d" })]
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
// src/components/map/google/google-map-zoom-control.tsx
|
|
302
|
+
const DEFAULT_ZOOM = 0;
|
|
303
|
+
const ZOOM_STEP = 1;
|
|
304
|
+
function GoogleMapZoomControl({ step = ZOOM_STEP, className, children, ref, ...props }) {
|
|
305
|
+
const map = useMap(), handleZoomIn = () => {
|
|
306
|
+
if (!map) return;
|
|
307
|
+
map.setZoom((map.getZoom() ?? DEFAULT_ZOOM) + step);
|
|
308
|
+
}, handleZoomOut = () => {
|
|
309
|
+
if (!map) return;
|
|
310
|
+
map.setZoom((map.getZoom() ?? DEFAULT_ZOOM) - step);
|
|
311
|
+
};
|
|
312
|
+
return /* @__PURE__ */ jsxs(ButtonGroup, {
|
|
313
|
+
size: "medium",
|
|
314
|
+
tone: "neutral",
|
|
315
|
+
variant: "elevated",
|
|
316
|
+
className: cn("", className),
|
|
317
|
+
ref,
|
|
318
|
+
...props,
|
|
319
|
+
children: [
|
|
320
|
+
children,
|
|
321
|
+
/* @__PURE__ */ jsx(Button, {
|
|
322
|
+
onClick: handleZoomIn,
|
|
323
|
+
children: /* @__PURE__ */ jsx(PlusIcon, { weight: "bold" })
|
|
324
|
+
}),
|
|
325
|
+
/* @__PURE__ */ jsx(Button, {
|
|
326
|
+
onClick: handleZoomOut,
|
|
327
|
+
children: /* @__PURE__ */ jsx(MinusIcon, { weight: "bold" })
|
|
328
|
+
})
|
|
329
|
+
]
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
// src/components/map/google/google-maps-search-control-content.tsx
|
|
333
|
+
function GoogleMapSearchControlContent({ className, ref, ...props }) {
|
|
334
|
+
return /* @__PURE__ */ jsx(AutocompleteContent, {
|
|
335
|
+
className: cn("", className),
|
|
336
|
+
ref,
|
|
337
|
+
...props
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
// src/components/map/google/google-maps-search-control-results.tsx
|
|
341
|
+
function GoogleMapsSearchControlResults({ children, ...props }) {
|
|
342
|
+
return /* @__PURE__ */ jsx(AutocompleteCollection, {
|
|
343
|
+
...props,
|
|
344
|
+
children: (result, index) => children(result, index)
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
// src/components/map/google/google-maps-search-control-status.tsx
|
|
348
|
+
function GoogleMapsSearchControlStatus({ className, children, ref, ...props }) {
|
|
349
|
+
const { debouncer } = useGoogleMapSearchControl();
|
|
350
|
+
return /* @__PURE__ */ jsx(AutocompleteStatus, {
|
|
351
|
+
className: cn("", className),
|
|
352
|
+
ref,
|
|
353
|
+
...props,
|
|
354
|
+
children: /* @__PURE__ */ jsx(debouncer.Subscribe, {
|
|
355
|
+
selector: (state) => ({
|
|
356
|
+
isPending: state.isPending,
|
|
357
|
+
results: state.lastResult
|
|
358
|
+
}),
|
|
359
|
+
children: ({ isPending, results }) => (isPending || Boolean(results?.length)) && children({
|
|
360
|
+
isPending,
|
|
361
|
+
results
|
|
362
|
+
})
|
|
363
|
+
})
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
// src/hooks/use-google-map-viewport.ts
|
|
367
|
+
const DEFAULT_PADDING = 0;
|
|
368
|
+
const MAX_LONGITUDE = 180;
|
|
369
|
+
const MIN_LONGITUDE = -180;
|
|
370
|
+
const MAX_LATITUDE = 90;
|
|
371
|
+
const MIN_LATITUDE = -90;
|
|
372
|
+
const INITIAL_BOUNDS = [
|
|
373
|
+
MIN_LONGITUDE,
|
|
374
|
+
MIN_LATITUDE,
|
|
375
|
+
MAX_LONGITUDE,
|
|
376
|
+
MAX_LATITUDE
|
|
377
|
+
];
|
|
378
|
+
const INITIAL_ZOOM = 0;
|
|
379
|
+
const WORLD_LONGITUDE_SPAN = 360;
|
|
380
|
+
const ZOOM_BASE = 2;
|
|
381
|
+
const TILE_SIZE = 256;
|
|
382
|
+
function useGoogleMapViewport({ padding = DEFAULT_PADDING } = {}) {
|
|
383
|
+
const map = useMap(), [bounds, setBounds] = useState(INITIAL_BOUNDS), [zoom, setZoom] = useState(INITIAL_ZOOM);
|
|
384
|
+
useEffect(() => {
|
|
385
|
+
if (!map) return;
|
|
386
|
+
const updateViewport = () => {
|
|
387
|
+
const mapBounds = map.getBounds(), mapZoom = map.getZoom(), southwest = mapBounds?.getSouthWest(), northeast = mapBounds?.getNorthEast(), paddingDegrees = WORLD_LONGITUDE_SPAN / (ZOOM_BASE ** (mapZoom ?? INITIAL_ZOOM) * TILE_SIZE) * padding;
|
|
388
|
+
if (!southwest || !northeast || mapZoom === void 0) return;
|
|
389
|
+
setBounds([
|
|
390
|
+
southwest.lng() - paddingDegrees,
|
|
391
|
+
Math.max(MIN_LATITUDE, southwest.lat() - paddingDegrees),
|
|
392
|
+
northeast.lng() + paddingDegrees,
|
|
393
|
+
Math.min(MAX_LATITUDE, northeast.lat() + paddingDegrees)
|
|
394
|
+
]);
|
|
395
|
+
setZoom(mapZoom);
|
|
396
|
+
}, listener = map.addListener("idle", updateViewport);
|
|
397
|
+
updateViewport();
|
|
398
|
+
return () => listener.remove();
|
|
399
|
+
}, [map, padding]);
|
|
400
|
+
return {
|
|
401
|
+
bounds,
|
|
402
|
+
zoom
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
// src/hooks/use-supercluster.ts
|
|
406
|
+
const DEFAULT_OFFSET = 0;
|
|
407
|
+
function useSupercluster({ geojson, bounds, zoom, options }) {
|
|
408
|
+
const index = useMemo(() => {
|
|
409
|
+
return new Supercluster(options).load(geojson.features);
|
|
410
|
+
}, [geojson.features, options]);
|
|
411
|
+
return {
|
|
412
|
+
clusters: useMemo(() => index.getClusters(bounds, zoom), [
|
|
413
|
+
bounds,
|
|
414
|
+
index,
|
|
415
|
+
zoom
|
|
416
|
+
]),
|
|
417
|
+
getChildren: useCallback((clusterId) => index.getChildren(clusterId), [index]),
|
|
418
|
+
getClusterExpansionZoom: useCallback((clusterId) => index.getClusterExpansionZoom(clusterId), [index]),
|
|
419
|
+
getLeaves: useCallback((clusterId, limit = Infinity, offset = DEFAULT_OFFSET) => index.getLeaves(clusterId, limit, offset), [index])
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
// src/components/map/google/index.ts
|
|
423
|
+
const GoogleMap = Object.assign(GoogleMap$1, {
|
|
424
|
+
Cluster: GoogleMapCluster,
|
|
425
|
+
ClusterLayer: GoogleMapClusterLayer,
|
|
426
|
+
DeckGLOverlay: GoogleMapDeckGLOverlay,
|
|
427
|
+
Frame: GoogleMapFrame,
|
|
428
|
+
GeolocateControl: GoogleMapGeolocateControl,
|
|
429
|
+
Marker: GoogleMapMarker,
|
|
430
|
+
MarkerLayer: GoogleMapMarkerLayer,
|
|
431
|
+
SearchControl: GoogleMapSearchControl,
|
|
432
|
+
SearchControlContent: GoogleMapSearchControlContent,
|
|
433
|
+
SearchControlEmpty: GoogleMapSearchControlEmpty,
|
|
434
|
+
SearchControlInput: GoogleMapSearchControlInput,
|
|
435
|
+
SearchControlInputGroup: GoogleMapSearchControlInputGroup,
|
|
436
|
+
SearchControlResults: GoogleMapsSearchControlResults,
|
|
437
|
+
SearchControlStatus: GoogleMapsSearchControlStatus,
|
|
438
|
+
SearchControlSubmit: GoogleMapSearchControlSubmit,
|
|
439
|
+
SearchControlSuggestion: GoogleMapSearchControlSuggestion,
|
|
440
|
+
TiltControl: GoogleMapTiltControl,
|
|
441
|
+
ZoomControl: GoogleMapZoomControl
|
|
442
|
+
});
|
|
443
|
+
export { GoogleMap, GoogleMapCluster, GoogleMapClusterLayer, GoogleMapDeckGLOverlay, GoogleMapFrame, GoogleMapGeolocateControl, GoogleMapMarker, GoogleMapMarkerLayer, GoogleMapSearchControl, GoogleMapSearchControlContent, GoogleMapSearchControlEmpty, GoogleMapSearchControlInput, GoogleMapSearchControlInputGroup, GoogleMapSearchControlSubmit, GoogleMapSearchControlSuggestion, GoogleMapTiltControl, GoogleMapZoomControl, GoogleMapsSearchControlResults, GoogleMapsSearchControlStatus, useGoogleMapSearchControl, useGoogleMapViewport, useSupercluster };
|
|
444
|
+
|
|
445
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["GoogleMap","Fragment","Fragment","GoogleMapRoot"],"sources":["../../../src/components/map/google/google-map.tsx","../../../src/components/map/google/google-map-cluster.tsx","../../../src/components/map/google/google-map.utils.ts","../../../src/components/map/google/google-map-cluster-layer.tsx","../../../src/components/map/google/google-map-deckgl-overlay.tsx","../../../src/components/map/google/google-map-frame.tsx","../../../src/components/map/google/google-map-geolocate-control.tsx","../../../src/components/map/google/google-map-marker.tsx","../../../src/components/map/google/google-map-marker-layer.tsx","../../../src/components/map/google/google-map-search-control.context.ts","../../../src/components/map/google/google-map-search-control.tsx","../../../src/components/map/google/google-map-search-control-empty.tsx","../../../src/components/map/google/google-map-search-control-input.tsx","../../../src/components/map/google/google-map-search-control-input-group.tsx","../../../src/components/map/google/google-map-search-control-submit.tsx","../../../src/components/map/google/google-map-search-control-suggestion.tsx","../../../src/components/map/google/google-map-tilt-control.tsx","../../../src/components/map/google/google-map-zoom-control.tsx","../../../src/components/map/google/google-maps-search-control-content.tsx","../../../src/components/map/google/google-maps-search-control-results.tsx","../../../src/components/map/google/google-maps-search-control-status.tsx","../../../src/hooks/use-google-map-viewport.ts","../../../src/hooks/use-supercluster.ts","../../../src/components/map/google/index.ts"],"sourcesContent":["import { APIProvider } from '@vis.gl/react-google-maps'\n\nimport type { GoogleMapProps } from './google-map.types'\n\nexport function GoogleMap({ children, ...props }: GoogleMapProps) {\n return <APIProvider {...props}>{children}</APIProvider>\n}\n","import { AdvancedMarker, CollisionBehavior } from '@vis.gl/react-google-maps'\nimport type { ComponentPropsWithRef } from 'react'\n\nimport { cn } from '@/utils'\n\ntype GoogleMapClusterProps = ComponentPropsWithRef<typeof AdvancedMarker> & {\n count: number\n label: string\n}\n\nexport function GoogleMapCluster({\n className,\n children,\n count,\n label,\n collisionBehavior = CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL,\n zIndex = count,\n ...props\n}: GoogleMapClusterProps) {\n return (\n <AdvancedMarker\n aria-label={label}\n collisionBehavior={collisionBehavior}\n zIndex={zIndex}\n className={cn(\n 'flex min-h-xl min-w-xl animate-appear items-center justify-center rounded-full border border-neutral-border bg-neutral-container p-3xs',\n className,\n )}\n {...props}\n >\n {children ?? <span>{count}</span>}\n </AdvancedMarker>\n )\n}\n\nexport type { GoogleMapClusterProps }\n","import type { GeoJsonProperties } from 'geojson'\nimport type { ClusterFeature, ClusterProperties } from 'supercluster'\n\nimport type { GoogleMapClusterLayerItem } from './google-map.types'\n\ninterface GoogleMapSuggestionLabelValue {\n placePrediction: {\n text: {\n text: string\n }\n }\n}\n\nfunction isGoogleMapSuggestionLabelValue(\n itemValue: unknown,\n): itemValue is GoogleMapSuggestionLabelValue {\n return (\n typeof itemValue === 'object' &&\n itemValue !== null &&\n 'placePrediction' in itemValue &&\n typeof itemValue.placePrediction === 'object' &&\n itemValue.placePrediction !== null &&\n 'text' in itemValue.placePrediction &&\n typeof itemValue.placePrediction.text === 'object' &&\n itemValue.placePrediction.text !== null &&\n 'text' in itemValue.placePrediction.text &&\n typeof itemValue.placePrediction.text.text === 'string'\n )\n}\n\nfunction getGoogleMapSuggestionLabel(itemValue: unknown): string {\n if (!isGoogleMapSuggestionLabelValue(itemValue)) {\n return ''\n }\n\n return itemValue.placePrediction.text.text\n}\n\nfunction isClusterFeature<\n Properties extends GeoJsonProperties,\n ClusterPropertiesValue extends GeoJsonProperties = ClusterProperties,\n>(\n item: GoogleMapClusterLayerItem<Properties, ClusterPropertiesValue>,\n): item is ClusterFeature<ClusterPropertiesValue> {\n return (\n item.properties !== null && 'cluster' in item.properties && item.properties.cluster === true\n )\n}\n\nexport { getGoogleMapSuggestionLabel, isClusterFeature }\n","import type { GeoJsonProperties } from 'geojson'\nimport { Fragment } from 'react'\nimport type { ClusterProperties } from 'supercluster'\n\nimport type { GoogleMapClusterLayerProps } from './google-map.types'\nimport { isClusterFeature } from './google-map.utils'\n\nexport function GoogleMapClusterLayer<\n Properties extends GeoJsonProperties,\n ClusterPropertiesValue extends GeoJsonProperties = ClusterProperties,\n>({\n items,\n getKey,\n getLeaves,\n getClusterExpansionZoom,\n renderItem,\n renderCluster,\n children,\n}: GoogleMapClusterLayerProps<Properties, ClusterPropertiesValue>) {\n return (\n <>\n {items.map((item) => {\n if (isClusterFeature<Properties, ClusterPropertiesValue>(item)) {\n const clusterId = item.properties.cluster_id\n\n return (\n <Fragment key={`cluster-${clusterId}`}>\n {renderCluster(item, {\n getExpansionZoom: () => getClusterExpansionZoom(clusterId),\n getLeaves: () => getLeaves(clusterId),\n })}\n </Fragment>\n )\n }\n\n return <Fragment key={getKey(item)}>{renderItem(item)}</Fragment>\n })}\n {children}\n </>\n )\n}\n","import type { LayersList } from '@deck.gl/core'\nimport { GoogleMapsOverlay } from '@deck.gl/google-maps'\nimport { useMap } from '@vis.gl/react-google-maps'\nimport React from 'react'\n\nimport { useIxiaMap } from '../map.context'\nimport type { DeckGLLayerConfig } from '../map.types'\nimport type { GoogleMapDeckGLOverlayProps } from './google-map.types'\n\nfunction cloneLayers(configs: DeckGLLayerConfig[]): LayersList {\n return configs.map(({ id, visualLayer: layer, layerProps, visible }) =>\n layer.clone({\n ...layerProps,\n id,\n visible: visible ?? true,\n }),\n )\n}\n\nexport function GoogleMapDeckGLOverlay({\n interleaved = false,\n ...deckProps\n}: GoogleMapDeckGLOverlayProps) {\n const map = useMap(),\n ixiaMap = useIxiaMap(),\n overlayRef = React.useRef<GoogleMapsOverlay | undefined>(undefined)\n\n React.useEffect(() => {\n if (!map) {\n return undefined\n }\n\n const overlay = new GoogleMapsOverlay({ interleaved })\n overlayRef.current = overlay\n overlay.setMap(map)\n\n return () => {\n overlayRef.current = undefined\n overlay.finalize()\n }\n }, [map, interleaved])\n\n React.useEffect(() => {\n overlayRef.current?.setProps({\n ...deckProps,\n interleaved,\n layers: cloneLayers(\n ixiaMap.layers.filter((layer): layer is DeckGLLayerConfig => layer.kind === 'deckgl'),\n ),\n })\n })\n\n return undefined\n}\n","import { Map } from '@vis.gl/react-google-maps'\nimport React from 'react'\n\nimport { cn } from '@/utils'\n\nimport type { GoogleMapFrameProps } from './google-map.types'\n\nexport function GoogleMapFrame({ className, children, ...props }: GoogleMapFrameProps) {\n const id = React.useId()\n\n return (\n <Map className={cn('', className)} id={id} {...props}>\n {children}\n </Map>\n )\n}\n","import { CircleNotchIcon, NavigationArrowIcon } from '@phosphor-icons/react'\nimport { useMap } from '@vis.gl/react-google-maps'\nimport React from 'react'\n\nimport { Button } from '@/components/button'\nimport { cn } from '@/utils'\n\nimport type { GoogleMapGeolocateControlProps } from './google-map.types'\n\nconst ZOOM_LEVEL = 15\n\nexport function GoogleMapGeolocateControl({\n zoomLevel = ZOOM_LEVEL,\n className,\n children,\n ref,\n ...props\n}: GoogleMapGeolocateControlProps) {\n const map = useMap(),\n [isPending, startTransition] = React.useTransition(),\n handleClick = () => {\n if (!map) {\n return\n }\n\n startTransition(async () => {\n const pos = await new Promise<{ lat: number; lng: number }>((resolve) => {\n navigator.geolocation.getCurrentPosition((position) => {\n const lat = position.coords.latitude,\n lng = position.coords.longitude\n resolve({ lat, lng })\n })\n })\n\n if (pos) {\n map.moveCamera({\n center: pos,\n zoom: zoomLevel,\n })\n }\n })\n }\n\n return (\n <Button\n disabled={isPending}\n onClick={handleClick}\n size=\"medium\"\n tone=\"neutral\"\n variant=\"elevated\"\n className={cn('shrink-0', className)}\n ref={ref}\n {...props}\n >\n {children}\n {isPending && <CircleNotchIcon className=\"animate-spin\" weight=\"bold\" />}\n {!isPending && <NavigationArrowIcon weight=\"bold\" />}\n </Button>\n )\n}\n","import { AdvancedMarker, CollisionBehavior } from '@vis.gl/react-google-maps'\nimport type { ComponentPropsWithRef } from 'react'\n\ntype GoogleMapMarkerProps = ComponentPropsWithRef<typeof AdvancedMarker>\n\nexport function GoogleMapMarker({\n collisionBehavior = CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY,\n ...props\n}: GoogleMapMarkerProps) {\n return <AdvancedMarker collisionBehavior={collisionBehavior} {...props} />\n}\n\nexport type { GoogleMapMarkerProps }\n","import { Fragment } from 'react'\nimport type { Key, ReactNode } from 'react'\n\ninterface GoogleMapMarkerLayerProps<Item> {\n items: readonly Item[]\n getKey: (item: Item) => Key\n renderItem: (item: Item) => ReactNode\n children?: ReactNode\n}\n\nexport function GoogleMapMarkerLayer<Item>({\n items,\n getKey,\n renderItem,\n children,\n}: GoogleMapMarkerLayerProps<Item>) {\n return (\n <>\n {items.map((item) => (\n <Fragment key={getKey(item)}>{renderItem(item)}</Fragment>\n ))}\n {children}\n </>\n )\n}\n\nexport type { GoogleMapMarkerLayerProps }\n","import React from 'react'\n\nimport type { GoogleMapSearchControlValue } from './google-map-search-control.types'\n\nconst GoogleMapSearchControlContext = React.createContext<GoogleMapSearchControlValue | undefined>(\n undefined,\n)\n\nfunction useGoogleMapSearchControl() {\n const context = React.useContext(GoogleMapSearchControlContext)\n\n if (!context) {\n throw new Error('useGoogleMapSearchControl must be used within a GoogleMapSearchControl')\n }\n\n return context\n}\n\nexport { GoogleMapSearchControlContext, useGoogleMapSearchControl }\n","import { useAsyncDebouncer } from '@tanstack/react-pacer'\nimport { useMapsLibrary } from '@vis.gl/react-google-maps'\nimport React from 'react'\n\nimport { Autocomplete } from '@/components/autocomplete'\n\nimport { GoogleMapSearchControlContext } from './google-map-search-control.context'\nimport type { GoogleMapSearchControlProps } from './google-map-search-control.types'\nimport { getGoogleMapSuggestionLabel } from './google-map.utils'\n\nconst DEFAULT_DEBOUNCE_INTERVAL = 300\n\nexport function GoogleMapSearchControl({\n onSuggestionSelect,\n onValueChange,\n value: controlledValue,\n defaultValue,\n itemToStringValue = getGoogleMapSuggestionLabel,\n debounceInterval = DEFAULT_DEBOUNCE_INTERVAL,\n locale,\n children,\n ...props\n}: GoogleMapSearchControlProps) {\n const [inputValue, setInputValue] = React.useState(defaultValue ?? ''),\n [results, setResults] = React.useState<google.maps.places.AutocompleteSuggestion[]>([]),\n autocompleteValue = controlledValue ?? inputValue,\n places = useMapsLibrary('places'),\n debouncer = useAsyncDebouncer(\n async (query: string): Promise<google.maps.places.AutocompleteSuggestion[]> => {\n const input = query.trim()\n\n if (!input) {\n setResults([])\n return []\n }\n\n if (!places) {\n return []\n }\n\n // oxlint-disable-next-line one-var\n const request: google.maps.places.AutocompleteRequest = {\n input,\n language: locale?.toString(),\n },\n { suggestions: fetchedSuggestions } =\n await places.AutocompleteSuggestion.fetchAutocompleteSuggestions(request)\n\n setResults(fetchedSuggestions)\n return fetchedSuggestions\n },\n {\n wait: debounceInterval,\n },\n (state) => ({ isPending: state.isPending }),\n ),\n selectSuggestion = async (suggestion: google.maps.places.AutocompleteSuggestion) => {\n if (!places) {\n return\n }\n if (!suggestion.placePrediction) {\n return\n }\n\n if (onSuggestionSelect) {\n await onSuggestionSelect(suggestion)\n }\n },\n selectFirstSuggestion = async () => {\n const [firstSuggestion] = results\n\n if (firstSuggestion) {\n if (controlledValue === undefined) {\n setInputValue(itemToStringValue(firstSuggestion))\n }\n\n await selectSuggestion(firstSuggestion)\n }\n },\n handleValueChange: NonNullable<GoogleMapSearchControlProps['onValueChange']> = (\n value,\n eventDetails,\n ) => {\n if (controlledValue === undefined) {\n setInputValue(value)\n }\n\n onValueChange?.(value, eventDetails)\n void debouncer.maybeExecute(value)\n }\n\n return (\n <GoogleMapSearchControlContext.Provider\n value={{\n debouncer,\n locale,\n results,\n selectFirstSuggestion,\n selectSuggestion,\n setResults,\n }}\n >\n <Autocomplete\n filteredItems={results}\n itemToStringValue={itemToStringValue}\n mode=\"list\"\n onValueChange={handleValueChange}\n value={autocompleteValue}\n {...props}\n >\n {children}\n </Autocomplete>\n </GoogleMapSearchControlContext.Provider>\n )\n}\n","import { AutocompleteEmpty } from '@/components/autocomplete'\nimport { cn } from '@/utils/cn'\n\nimport { useGoogleMapSearchControl } from './google-map-search-control.context'\nimport type { GoogleMapSearchControlEmptyProps } from './google-map-search-control.types'\n\nexport function GoogleMapSearchControlEmpty({\n className,\n children,\n ref,\n ...props\n}: GoogleMapSearchControlEmptyProps) {\n const { debouncer } = useGoogleMapSearchControl()\n\n return (\n <debouncer.Subscribe selector={(state) => ({ isPending: state.isPending })}>\n {({ isPending }) =>\n !isPending && (\n <AutocompleteEmpty className={cn('', className)} ref={ref} {...props}>\n {children}\n </AutocompleteEmpty>\n )\n }\n </debouncer.Subscribe>\n )\n}\n","import { Autocomplete } from '@/components/autocomplete'\nimport { cn } from '@/utils'\n\nimport { useGoogleMapSearchControl } from './google-map-search-control.context'\nimport type { GoogleMapSearchControlInputProps } from './google-map-search-control.types'\n\nexport function GoogleMapSearchControlInput({\n className,\n onKeyDown,\n ref,\n ...props\n}: GoogleMapSearchControlInputProps) {\n const { results, selectFirstSuggestion } = useGoogleMapSearchControl(),\n handleSubmit: NonNullable<GoogleMapSearchControlInputProps['onKeyDown']> = (event) => {\n onKeyDown?.(event)\n\n if (event.key !== 'Enter' || event.defaultPrevented || !results.length) {\n return\n }\n\n event.preventDefault()\n void selectFirstSuggestion()\n }\n\n return (\n <Autocomplete.InputGroupInput\n onKeyDown={handleSubmit}\n className={cn('', className)}\n ref={ref}\n {...props}\n />\n )\n}\n","import { Autocomplete } from '@/components/autocomplete'\nimport { cn } from '@/utils'\n\nimport type { GoogleMapSearchControlInputGroupProps } from './google-map-search-control.types'\n\nexport function GoogleMapSearchControlInputGroup({\n className,\n ref,\n ...props\n}: GoogleMapSearchControlInputGroupProps) {\n return <Autocomplete.InputGroup className={cn('', className)} ref={ref} {...props} />\n}\n","import { CircleNotchIcon } from '@phosphor-icons/react'\nimport React from 'react'\n\nimport { Button } from '@/components/button'\nimport { cn } from '@/utils'\n\nimport { useGoogleMapSearchControl } from './google-map-search-control.context'\nimport type { GoogleMapSearchControlSubmitProps } from './google-map-search-control.types'\n\nexport function GoogleMapSearchControlSubmit({\n className,\n onClick,\n ref,\n ...props\n}: GoogleMapSearchControlSubmitProps) {\n const [isPending, startTransition] = React.useTransition(),\n { selectFirstSuggestion } = useGoogleMapSearchControl(),\n handleClick: NonNullable<GoogleMapSearchControlSubmitProps['onClick']> = async (event) => {\n onClick?.(event)\n\n if (!event.defaultPrevented) {\n startTransition(async () => {\n await selectFirstSuggestion()\n })\n }\n }\n\n if (isPending) {\n return (\n <Button\n tone=\"neutral\"\n size=\"medium\"\n disabled\n className={cn('animate-spin', className)}\n ref={ref}\n {...props}\n >\n <CircleNotchIcon weight=\"bold\" />\n </Button>\n )\n }\n return <Button className={cn('', className)} ref={ref} {...props} onClick={handleClick} />\n}\n","import { AutocompleteItem } from '@/components/autocomplete'\nimport { cn } from '@/utils'\n\nimport { useGoogleMapSearchControl } from './google-map-search-control.context'\nimport type { GoogleMapSearchControlSuggestionProps } from './google-map-search-control.types'\n\nexport function GoogleMapSearchControlSuggestion({\n suggestion,\n className,\n children,\n ref,\n ...props\n}: GoogleMapSearchControlSuggestionProps) {\n const { selectSuggestion } = useGoogleMapSearchControl()\n\n return (\n <AutocompleteItem\n onClick={() => void selectSuggestion(suggestion)}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children(suggestion)}\n </AutocompleteItem>\n )\n}\n","import { useMap } from '@vis.gl/react-google-maps'\nimport { useState } from 'react'\n\nimport { Button } from '@/components/button'\nimport { Icon } from '@/components/icon'\nimport { cn } from '@/utils'\n\nimport type { GoogleMapTiltControlProps } from './google-map.types'\n\nconst DEFAULT_TILT = 0,\n NULL_TILT = 0,\n MAX_TILT = 45\n\nexport function GoogleMapTiltControl({\n className,\n children,\n ref,\n ...props\n}: GoogleMapTiltControlProps) {\n const map = useMap(),\n [currentTilt, setCurrentTilt] = useState(map?.getTilt() || DEFAULT_TILT)\n\n function handleClick() {\n if (map) {\n if (currentTilt === NULL_TILT) {\n map.setTilt(MAX_TILT)\n setCurrentTilt(MAX_TILT)\n } else {\n map.setTilt(DEFAULT_TILT)\n setCurrentTilt(DEFAULT_TILT)\n }\n }\n }\n\n return (\n <Button\n onClick={handleClick}\n variant=\"elevated\"\n // oxlint-disable-next-line no-ternary\n tone={currentTilt === MAX_TILT ? 'brand' : 'neutral'}\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n <Icon name=\"3d\" />\n </Button>\n )\n}\n","import { MinusIcon, PlusIcon } from '@phosphor-icons/react'\nimport { useMap } from '@vis.gl/react-google-maps'\n\nimport { Button } from '@/components/button'\nimport { ButtonGroup } from '@/components/button-group'\nimport { cn } from '@/utils'\n\nimport type { GoogleMapZoomControlProps } from './google-map.types'\n\nconst DEFAULT_ZOOM = 0,\n ZOOM_STEP = 1\n\nexport function GoogleMapZoomControl({\n step = ZOOM_STEP,\n className,\n children,\n ref,\n ...props\n}: GoogleMapZoomControlProps) {\n const map = useMap(),\n handleZoomIn = () => {\n if (!map) {\n return\n }\n map.setZoom((map.getZoom() ?? DEFAULT_ZOOM) + step)\n },\n handleZoomOut = () => {\n if (!map) {\n return\n }\n map.setZoom((map.getZoom() ?? DEFAULT_ZOOM) - step)\n }\n\n return (\n <ButtonGroup\n size=\"medium\"\n tone=\"neutral\"\n variant=\"elevated\"\n className={cn('', className)}\n ref={ref}\n {...props}\n >\n {children}\n <Button onClick={handleZoomIn}>\n <PlusIcon weight=\"bold\" />\n </Button>\n <Button onClick={handleZoomOut}>\n <MinusIcon weight=\"bold\" />\n </Button>\n </ButtonGroup>\n )\n}\n","import { AutocompleteContent } from '@/components/autocomplete'\nimport { cn } from '@/utils'\n\nimport type { GoogleMapSearchControlContentProps } from './google-map-search-control.types'\n\nexport function GoogleMapSearchControlContent({\n className,\n ref,\n ...props\n}: GoogleMapSearchControlContentProps) {\n return <AutocompleteContent className={cn('', className)} ref={ref} {...props} />\n}\n","import { AutocompleteCollection } from '@/components/autocomplete'\n\nimport type { GoogleMapsSearchControlResultsProps } from './google-map-search-control.types'\n\nexport function GoogleMapsSearchControlResults({\n children,\n ...props\n}: GoogleMapsSearchControlResultsProps) {\n return (\n <AutocompleteCollection {...props}>\n {(result: google.maps.places.AutocompleteSuggestion, index: number) =>\n children(result, index)\n }\n </AutocompleteCollection>\n )\n}\n","import { AutocompleteStatus } from '@/components/autocomplete'\nimport { cn } from '@/utils'\n\nimport { useGoogleMapSearchControl } from './google-map-search-control.context'\nimport type { GoogleMapsSearchControlStatusProps } from './google-map-search-control.types'\n\nexport function GoogleMapsSearchControlStatus({\n className,\n children,\n ref,\n ...props\n}: GoogleMapsSearchControlStatusProps) {\n const { debouncer } = useGoogleMapSearchControl()\n\n return (\n <AutocompleteStatus className={cn('', className)} ref={ref} {...props}>\n <debouncer.Subscribe\n selector={(state) => ({ isPending: state.isPending, results: state.lastResult })}\n >\n {({ isPending, results }) =>\n (isPending || Boolean(results?.length)) && children({ isPending, results })\n }\n </debouncer.Subscribe>\n </AutocompleteStatus>\n )\n}\n","import { useMap } from '@vis.gl/react-google-maps'\nimport type { BBox } from 'geojson'\nimport { useEffect, useState } from 'react'\n\ninterface UseGoogleMapViewportOptions {\n padding?: number\n}\n\ninterface UseGoogleMapViewportResult {\n bounds: BBox\n zoom: number\n}\n\nconst DEFAULT_PADDING = 0,\n MAX_LONGITUDE = 180,\n MIN_LONGITUDE = -MAX_LONGITUDE,\n MAX_LATITUDE = 90,\n MIN_LATITUDE = -MAX_LATITUDE,\n INITIAL_BOUNDS: BBox = [MIN_LONGITUDE, MIN_LATITUDE, MAX_LONGITUDE, MAX_LATITUDE],\n INITIAL_ZOOM = 0,\n WORLD_LONGITUDE_SPAN = 360,\n ZOOM_BASE = 2,\n TILE_SIZE = 256\n\nexport function useGoogleMapViewport({\n padding = DEFAULT_PADDING,\n}: UseGoogleMapViewportOptions = {}): UseGoogleMapViewportResult {\n const map = useMap(),\n [bounds, setBounds] = useState<BBox>(INITIAL_BOUNDS),\n [zoom, setZoom] = useState(INITIAL_ZOOM)\n\n useEffect(() => {\n if (!map) {\n return undefined\n }\n\n const updateViewport = () => {\n const mapBounds = map.getBounds(),\n mapZoom = map.getZoom(),\n southwest = mapBounds?.getSouthWest(),\n northeast = mapBounds?.getNorthEast(),\n paddingDegrees =\n (WORLD_LONGITUDE_SPAN / (ZOOM_BASE ** (mapZoom ?? INITIAL_ZOOM) * TILE_SIZE)) * padding\n\n if (!southwest || !northeast || mapZoom === undefined) {\n return\n }\n\n setBounds([\n southwest.lng() - paddingDegrees,\n Math.max(MIN_LATITUDE, southwest.lat() - paddingDegrees),\n northeast.lng() + paddingDegrees,\n Math.min(MAX_LATITUDE, northeast.lat() + paddingDegrees),\n ])\n setZoom(mapZoom)\n },\n listener = map.addListener('idle', updateViewport)\n\n updateViewport()\n return () => listener.remove()\n }, [map, padding])\n\n return { bounds, zoom }\n}\n\nexport type { UseGoogleMapViewportOptions, UseGoogleMapViewportResult }\n","'use no memo'\n\nimport type { BBox, FeatureCollection, GeoJsonProperties, Point } from 'geojson'\nimport { useCallback, useMemo } from 'react'\nimport Supercluster from 'supercluster'\nimport type { ClusterFeature, ClusterProperties, Options, PointFeature } from 'supercluster'\n\nconst DEFAULT_OFFSET = 0\n\ninterface UseSuperclusterOptions<\n Properties extends GeoJsonProperties,\n ClusterPropertiesValue extends GeoJsonProperties,\n> {\n geojson: FeatureCollection<Point, Properties>\n bounds: BBox\n zoom: number\n options?: Options<Properties, ClusterPropertiesValue>\n}\n\ninterface UseSuperclusterResult<\n Properties extends GeoJsonProperties,\n ClusterPropertiesValue extends GeoJsonProperties,\n> {\n clusters: (ClusterFeature<ClusterPropertiesValue> | PointFeature<Properties>)[]\n getChildren: (\n clusterId: number,\n ) => (ClusterFeature<ClusterPropertiesValue> | PointFeature<Properties>)[]\n getClusterExpansionZoom: (clusterId: number) => number\n getLeaves: (clusterId: number, limit?: number, offset?: number) => PointFeature<Properties>[]\n}\n\nexport function useSupercluster<\n Properties extends GeoJsonProperties,\n ClusterPropertiesValue extends GeoJsonProperties = ClusterProperties,\n>({\n geojson,\n bounds,\n zoom,\n options,\n}: UseSuperclusterOptions<Properties, ClusterPropertiesValue>): UseSuperclusterResult<\n Properties,\n ClusterPropertiesValue\n> {\n // Supercluster owns a mutable index; memoize it only when its input features or options change.\n // eslint-disable-next-line react/preserve-manual-memoization\n const index = useMemo(() => {\n const clusterIndex = new Supercluster<Properties, ClusterPropertiesValue>(options)\n return clusterIndex.load(geojson.features)\n }, [geojson.features, options]),\n clusters = useMemo(() => index.getClusters(bounds, zoom), [bounds, index, zoom]),\n getChildren = useCallback((clusterId: number) => index.getChildren(clusterId), [index]),\n getClusterExpansionZoom = useCallback(\n (clusterId: number) => index.getClusterExpansionZoom(clusterId),\n [index],\n ),\n getLeaves = useCallback(\n (clusterId: number, limit = Infinity, offset = DEFAULT_OFFSET) =>\n index.getLeaves(clusterId, limit, offset),\n [index],\n )\n\n return { clusters, getChildren, getClusterExpansionZoom, getLeaves }\n}\n\nexport type { UseSuperclusterOptions, UseSuperclusterResult }\n","import { GoogleMap as GoogleMapRoot } from './google-map'\nimport { GoogleMapCluster } from './google-map-cluster'\nimport { GoogleMapClusterLayer } from './google-map-cluster-layer'\nimport { GoogleMapDeckGLOverlay } from './google-map-deckgl-overlay'\nimport { GoogleMapFrame } from './google-map-frame'\nimport { GoogleMapGeolocateControl } from './google-map-geolocate-control'\nimport { GoogleMapMarker } from './google-map-marker'\nimport { GoogleMapMarkerLayer } from './google-map-marker-layer'\nimport { GoogleMapSearchControl } from './google-map-search-control'\nimport { GoogleMapSearchControlEmpty } from './google-map-search-control-empty'\nimport { GoogleMapSearchControlInput } from './google-map-search-control-input'\nimport { GoogleMapSearchControlInputGroup } from './google-map-search-control-input-group'\nimport { GoogleMapSearchControlSubmit } from './google-map-search-control-submit'\nimport { GoogleMapSearchControlSuggestion } from './google-map-search-control-suggestion'\nimport { GoogleMapTiltControl } from './google-map-tilt-control'\nimport { GoogleMapZoomControl } from './google-map-zoom-control'\nimport { GoogleMapSearchControlContent } from './google-maps-search-control-content'\nimport { GoogleMapsSearchControlResults } from './google-maps-search-control-results'\nimport { GoogleMapsSearchControlStatus } from './google-maps-search-control-status'\n\nconst GoogleMap = Object.assign(GoogleMapRoot, {\n Cluster: GoogleMapCluster,\n ClusterLayer: GoogleMapClusterLayer,\n DeckGLOverlay: GoogleMapDeckGLOverlay,\n Frame: GoogleMapFrame,\n GeolocateControl: GoogleMapGeolocateControl,\n Marker: GoogleMapMarker,\n MarkerLayer: GoogleMapMarkerLayer,\n SearchControl: GoogleMapSearchControl,\n SearchControlContent: GoogleMapSearchControlContent,\n SearchControlEmpty: GoogleMapSearchControlEmpty,\n SearchControlInput: GoogleMapSearchControlInput,\n SearchControlInputGroup: GoogleMapSearchControlInputGroup,\n SearchControlResults: GoogleMapsSearchControlResults,\n SearchControlStatus: GoogleMapsSearchControlStatus,\n SearchControlSubmit: GoogleMapSearchControlSubmit,\n SearchControlSuggestion: GoogleMapSearchControlSuggestion,\n TiltControl: GoogleMapTiltControl,\n ZoomControl: GoogleMapZoomControl,\n})\n\nexport type {\n GoogleMapProps,\n GoogleMapGeolocateControlProps,\n GoogleMapFrameProps,\n GoogleMapZoomControlProps,\n GoogleMapDeckGLOverlayProps,\n GoogleMapTiltControlProps,\n GoogleMapClusterLayerProps,\n GoogleMapClusterLayerItem,\n GoogleMapClusterRenderContext,\n} from './google-map.types'\nexport type { GoogleMapClusterProps } from './google-map-cluster'\nexport type { GoogleMapMarkerProps } from './google-map-marker'\nexport type { GoogleMapMarkerLayerProps } from './google-map-marker-layer'\nexport type {\n GoogleMapSearchControlValue,\n GoogleMapSearchControlContextProps,\n GoogleMapSearchControlProps,\n GoogleMapSearchControlInputProps,\n GoogleMapSearchControlSubmitProps,\n GoogleMapSearchControlSuggestionProps,\n GoogleMapSearchControlEmptyProps,\n GoogleMapsSearchControlResultsProps,\n GoogleMapsSearchControlStatusProps,\n GoogleMapSearchControlContentProps,\n GoogleMapSearchControlInputGroupProps,\n} from './google-map-search-control.types'\n\nexport { GoogleMapFrame } from './google-map-frame'\nexport { GoogleMapGeolocateControl } from './google-map-geolocate-control'\nexport { GoogleMapSearchControl } from './google-map-search-control'\nexport { GoogleMapSearchControlInput } from './google-map-search-control-input'\nexport { GoogleMapSearchControlSubmit } from './google-map-search-control-submit'\nexport { GoogleMapSearchControlSuggestion } from './google-map-search-control-suggestion'\nexport { GoogleMapsSearchControlResults } from './google-maps-search-control-results'\nexport { GoogleMapZoomControl } from './google-map-zoom-control'\nexport { GoogleMapSearchControlEmpty } from './google-map-search-control-empty'\nexport { GoogleMapsSearchControlStatus } from './google-maps-search-control-status'\nexport { GoogleMapSearchControlContent } from './google-maps-search-control-content'\nexport { GoogleMapSearchControlInputGroup } from './google-map-search-control-input-group'\nexport { GoogleMapDeckGLOverlay } from './google-map-deckgl-overlay'\nexport { GoogleMapTiltControl } from './google-map-tilt-control'\nexport { GoogleMapMarker } from './google-map-marker'\nexport { GoogleMapCluster } from './google-map-cluster'\nexport { GoogleMapMarkerLayer } from './google-map-marker-layer'\nexport { GoogleMapClusterLayer } from './google-map-cluster-layer'\n\nexport { useGoogleMapSearchControl } from './google-map-search-control.context'\nexport { GoogleMap }\n\n// Google map hooks live here (not in `ixia-ui-react/hooks`) so their peer dependencies stay optional.\nexport { useGoogleMapViewport } from '@/hooks/use-google-map-viewport'\nexport type {\n UseGoogleMapViewportOptions,\n UseGoogleMapViewportResult,\n} from '@/hooks/use-google-map-viewport'\nexport { useSupercluster } from '@/hooks/use-supercluster'\nexport type { UseSuperclusterOptions, UseSuperclusterResult } from '@/hooks/use-supercluster'\n"],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { t as Button } from "../index-bVyqfhJS.js";
|
|
2
|
+
import { i as PopoverPanel } from "../index-DfNHJF0t.js";
|
|
3
|
+
import { VariantProps } from "class-variance-authority";
|
|
4
|
+
import React, { ComponentProps, ReactNode } from "react";
|
|
5
|
+
import { Layer, LayerProps } from "@deck.gl/core";
|
|
6
|
+
declare const mapControlGroupVariants: (props?: ({
|
|
7
|
+
position?: "bottom-left" | "bottom-right" | "top-left" | "top-right" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
interface MapLayerMetadata {
|
|
10
|
+
icon?: ReactNode;
|
|
11
|
+
id: string;
|
|
12
|
+
kind: 'deckgl' | 'marker';
|
|
13
|
+
name: string;
|
|
14
|
+
visibilityZoom?: number;
|
|
15
|
+
visible?: boolean;
|
|
16
|
+
}
|
|
17
|
+
interface DeckGLLayerConfig<LayerType extends Layer = Layer> extends MapLayerMetadata {
|
|
18
|
+
kind: 'deckgl';
|
|
19
|
+
layerProps: Omit<Partial<LayerType['props']> & LayerProps, 'id' | 'visible'>;
|
|
20
|
+
visualLayer: LayerType;
|
|
21
|
+
}
|
|
22
|
+
interface MarkerOverlayConfig extends MapLayerMetadata {
|
|
23
|
+
kind: 'marker';
|
|
24
|
+
}
|
|
25
|
+
interface MapLayerGroupConfig {
|
|
26
|
+
id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
layers: MapLayerConfig[];
|
|
29
|
+
}
|
|
30
|
+
type GeometryLayerConfig<LayerType extends Layer = Layer> = DeckGLLayerConfig<LayerType>;
|
|
31
|
+
type MapLayerConfig = DeckGLLayerConfig | MarkerOverlayConfig;
|
|
32
|
+
interface MapContextValue {
|
|
33
|
+
layers: MapLayerConfig[];
|
|
34
|
+
onVisibilityChange?: (layer: MapLayerConfig, visible: boolean) => void;
|
|
35
|
+
}
|
|
36
|
+
interface MapProps extends MapContextValue {
|
|
37
|
+
children?: ReactNode;
|
|
38
|
+
}
|
|
39
|
+
type MapControlGroupProps = ComponentProps<'div'> & VariantProps<typeof mapControlGroupVariants>;
|
|
40
|
+
type MapLayerListProps = Omit<ComponentProps<typeof PopoverPanel>, 'children'> & {
|
|
41
|
+
children: (layer: MapLayerConfig) => ReactNode;
|
|
42
|
+
};
|
|
43
|
+
type MapLayerGroupListProps = Omit<ComponentProps<typeof PopoverPanel>, 'children'> & {
|
|
44
|
+
groups: MapLayerGroupConfig[];
|
|
45
|
+
children: (group: MapLayerGroupConfig) => ReactNode;
|
|
46
|
+
};
|
|
47
|
+
type MapLayerGroupLayerListProps = Omit<ComponentProps<'ul'>, 'children'> & {
|
|
48
|
+
children: (layer: MapLayerConfig) => ReactNode;
|
|
49
|
+
};
|
|
50
|
+
type MapLayerItemProps = ComponentProps<'div'> & {
|
|
51
|
+
layer: MapLayerConfig;
|
|
52
|
+
fadeWhenInvisible?: boolean;
|
|
53
|
+
};
|
|
54
|
+
interface MapLayerItemContextValue {
|
|
55
|
+
layer: MapLayerConfig;
|
|
56
|
+
}
|
|
57
|
+
interface MapLayerGroupContextValue {
|
|
58
|
+
group: MapLayerGroupConfig;
|
|
59
|
+
}
|
|
60
|
+
type MapLayerVisibilityToggleProps = ComponentProps<typeof Button>;
|
|
61
|
+
type MapLayerNameProps = ComponentProps<'span'>;
|
|
62
|
+
type MapLayerIconProps = ComponentProps<'div'>;
|
|
63
|
+
type MapLayerGroupProps = ComponentProps<'div'> & {
|
|
64
|
+
group: MapLayerGroupConfig;
|
|
65
|
+
};
|
|
66
|
+
type MapLayerGroupLabelProps = ComponentProps<'span'>;
|
|
67
|
+
declare function Map$1({ layers, onVisibilityChange, children }: MapProps): import("react").JSX.Element;
|
|
68
|
+
export declare function MapControlGroup({ position, className, children, ref, ...props }: MapControlGroupProps): import("react").JSX.Element;
|
|
69
|
+
export declare function MapLayerGroup({ group, className, children, ref, ...props }: MapLayerGroupProps): import("react").JSX.Element;
|
|
70
|
+
export declare function MapLayerGroupLabel({ className, children, ref, ...props }: MapLayerGroupLabelProps): import("react").JSX.Element;
|
|
71
|
+
export declare function MapLayerGroupLayerList({ className, children, ...props }: MapLayerGroupLayerListProps): import("react").JSX.Element;
|
|
72
|
+
export declare function MapLayerGroupList({ groups, className, children, ref, ...props }: MapLayerGroupListProps): import("react").JSX.Element;
|
|
73
|
+
export declare function MapLayerIcon({ className, children, ref, ...props }: MapLayerIconProps): import("react").JSX.Element | undefined;
|
|
74
|
+
export declare function MapLayerItem({ fadeWhenInvisible, layer, className, children, ref, ...props }: MapLayerItemProps): import("react").JSX.Element;
|
|
75
|
+
export declare function MapLayerList({ className, children, ref, ...props }: MapLayerListProps): import("react").JSX.Element;
|
|
76
|
+
export declare function MapLayerName({ className, children, ref, ...props }: MapLayerNameProps): import("react").JSX.Element;
|
|
77
|
+
export declare function MapLayerVisibilityToggle({ className, children, ref, ...props }: MapLayerVisibilityToggleProps): import("react").JSX.Element;
|
|
78
|
+
declare function useMapLayerItem(): MapLayerItemContextValue;
|
|
79
|
+
declare function useIxiaMap(): MapContextValue;
|
|
80
|
+
declare function useMapLayerGroup(): MapLayerGroupContextValue;
|
|
81
|
+
declare const Map: typeof Map$1 & {
|
|
82
|
+
ControlGroup: typeof MapControlGroup;
|
|
83
|
+
LayerGroup: typeof MapLayerGroup;
|
|
84
|
+
LayerGroupLabel: typeof MapLayerGroupLabel;
|
|
85
|
+
LayerGroupLayerList: typeof MapLayerGroupLayerList;
|
|
86
|
+
LayerGroupList: typeof MapLayerGroupList;
|
|
87
|
+
LayerIcon: typeof MapLayerIcon;
|
|
88
|
+
LayerItem: typeof MapLayerItem;
|
|
89
|
+
LayerList: typeof MapLayerList;
|
|
90
|
+
LayerName: typeof MapLayerName;
|
|
91
|
+
LayerVisibilityToggle: typeof MapLayerVisibilityToggle;
|
|
92
|
+
};
|
|
93
|
+
export { type DeckGLLayerConfig, type GeometryLayerConfig, Map, type MapContextValue, type MapControlGroupProps, type MapLayerConfig, type MapLayerGroupConfig, type MapLayerGroupContextValue, type MapLayerGroupLabelProps, type MapLayerGroupLayerListProps, type MapLayerGroupListProps, type MapLayerGroupProps, type MapLayerIconProps, type MapLayerItemContextValue, type MapLayerItemProps, type MapLayerListProps, type MapLayerMetadata, type MapLayerNameProps, type MapLayerVisibilityToggleProps, type MapProps, type MarkerOverlayConfig, useIxiaMap, useMapLayerGroup, useMapLayerItem };
|
|
94
|
+
//# sourceMappingURL=index.d.ts.map
|