@m4l/gclick 0.33.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/components/DevicesPicker/slots/DevicesPickerSlots.d.ts +2 -2
  2. package/components/ReportsViewer/subcomponents/ReportsViewerTabStrip/slots/ReportsViewerTabStripSlots.d.ts +1 -1
  3. package/components/ReportsViewer/subcomponents/ReportsViewerTabStrip/slots/ReportsViewerTabStripSlots.d.ts.map +1 -1
  4. package/components/TimelineCardsViewer/presets/journey/JourneyTimeline.styles.d.ts +1 -1
  5. package/components/VideoTimeLineSelector/slots/VideoTimeLineSelectorSlots.d.ts +2 -2
  6. package/components/maps/components/GpsMap/contexts/MapContext/helpers/createViewportNavigationRuntime.d.ts +13 -0
  7. package/components/maps/components/GpsMap/contexts/MapContext/helpers/createViewportNavigationRuntime.d.ts.map +1 -0
  8. package/components/maps/components/GpsMap/contexts/MapContext/helpers/createViewportNavigationRuntime.js +96 -0
  9. package/components/maps/components/GpsMap/contexts/MapContext/helpers/helpers.d.ts +9 -0
  10. package/components/maps/components/GpsMap/contexts/MapContext/helpers/helpers.d.ts.map +1 -1
  11. package/components/maps/components/GpsMap/contexts/MapContext/index.d.ts +1 -1
  12. package/components/maps/components/GpsMap/contexts/MapContext/index.d.ts.map +1 -1
  13. package/components/maps/components/GpsMap/contexts/MapContext/store.d.ts.map +1 -1
  14. package/components/maps/components/GpsMap/contexts/MapContext/store.js +214 -189
  15. package/components/maps/components/GpsMap/contexts/MapContext/types.d.ts +36 -1
  16. package/components/maps/components/GpsMap/contexts/MapContext/types.d.ts.map +1 -1
  17. package/components/maps/components/GpsMap/dictionary.d.ts +10 -0
  18. package/components/maps/components/GpsMap/dictionary.d.ts.map +1 -1
  19. package/components/maps/components/GpsMap/dictionary.js +10 -0
  20. package/components/maps/components/GpsMap/featureRenders/MyPositionFeatureRender/MyPositionFeatureRender.d.ts +4 -0
  21. package/components/maps/components/GpsMap/featureRenders/MyPositionFeatureRender/MyPositionFeatureRender.d.ts.map +1 -0
  22. package/components/maps/components/GpsMap/featureRenders/MyPositionFeatureRender/MyPositionFeatureRender.js +56 -0
  23. package/components/maps/components/GpsMap/hooks/index.d.ts +1 -0
  24. package/components/maps/components/GpsMap/hooks/index.d.ts.map +1 -1
  25. package/components/maps/components/GpsMap/hooks/useMapCameraSignal.d.ts +4 -0
  26. package/components/maps/components/GpsMap/hooks/useMapCameraSignal.d.ts.map +1 -0
  27. package/components/maps/components/GpsMap/hooks/useMapCameraSignal.js +11 -0
  28. package/components/maps/components/GpsMap/index.d.ts +1 -0
  29. package/components/maps/components/GpsMap/index.d.ts.map +1 -1
  30. package/components/maps/components/GpsMap/slots/styled.d.ts +1 -1
  31. package/components/maps/components/GpsMap/subcomponents/Controls/hooks/useControls.d.ts +5 -4
  32. package/components/maps/components/GpsMap/subcomponents/Controls/hooks/useControls.d.ts.map +1 -1
  33. package/components/maps/components/GpsMap/subcomponents/Controls/hooks/useControls.js +9 -8
  34. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/constants.d.ts +2 -1
  35. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/constants.d.ts.map +1 -1
  36. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/constants.js +24 -17
  37. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/hooks/usePopupToolRuntime.d.ts.map +1 -1
  38. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/hooks/usePopupToolRuntime.js +43 -40
  39. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MeasureTool/subcomponents/MyActions/MyActions.d.ts +1 -1
  40. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MeasureTool/subcomponents/MyActions/MyActions.d.ts.map +1 -1
  41. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MeasureTool/subcomponents/MyActions/MyActions.js +26 -24
  42. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/MyPositionTool.d.ts +3 -0
  43. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/MyPositionTool.d.ts.map +1 -0
  44. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/MyPositionTool.js +38 -0
  45. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/constants.d.ts +12 -0
  46. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/constants.d.ts.map +1 -0
  47. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/constants.js +39 -0
  48. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/createMyPositionSession.d.ts +4 -0
  49. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/createMyPositionSession.d.ts.map +1 -0
  50. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/createMyPositionSession.js +128 -0
  51. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/labels.d.ts +4 -0
  52. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/labels.d.ts.map +1 -0
  53. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/labels.js +10 -0
  54. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/types.d.ts +20 -0
  55. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/types.d.ts.map +1 -0
  56. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/useMyPositionTool.d.ts +10 -0
  57. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/useMyPositionTool.d.ts.map +1 -0
  58. package/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/useMyPositionTool.js +39 -0
  59. package/components/maps/components/GpsMap/types.d.ts +1 -1
  60. package/components/maps/components/GpsMap/types.d.ts.map +1 -1
  61. package/index.js +303 -296
  62. package/package.json +1 -1
@@ -1,73 +1,76 @@
1
- import { usePopupsStore as d, deepShallow as D } from "@m4l/components";
2
- import { useCallback as p, useMemo as M } from "react";
3
- import { useMap as v } from "react-leaflet";
4
- import { useScopedMapInteractionCapture as T } from "../../../../../hooks/useScopedMapInteractionCapture.js";
5
- function L(b) {
1
+ import { usePopupsStore as d, deepShallow as T } from "@m4l/components";
2
+ import { useCallback as s, useMemo as v } from "react";
3
+ import { useMap as D } from "react-leaflet";
4
+ import { useScopedMapInteractionCapture as S } from "../../../../../hooks/useScopedMapInteractionCapture.js";
5
+ import { useMapStore as A } from "../../../../../hooks/useMapStore/index.js";
6
+ function k(b) {
6
7
  const {
7
- ToolComponent: a,
8
+ ToolComponent: l,
8
9
  popupId: o,
9
- iconUrl: f,
10
- title: m,
10
+ iconUrl: m,
11
+ title: f,
11
12
  defaultPosition: g,
12
- openInteractionCapture: s
13
- } = b, r = v(), { addPopup: I, bringPopupOnFront: l } = d((e) => e.popupsActions), { close: P, show: x } = d((e) => e.popupActions), { isHidden: t, isOpen: n } = d(
13
+ openInteractionCapture: p
14
+ } = b, r = D(), w = A((e) => e.mapActions.suspendViewportTool), { addPopup: I, bringPopupOnFront: a } = d((e) => e.popupsActions), { close: P, show: h } = d((e) => e.popupActions), { isHidden: t, isOpen: n } = d(
14
15
  (e) => {
15
- const O = e.popupsIds.filter((w) => e.hashPopups[w].status === "init");
16
+ const O = e.popupsIds.filter((M) => e.hashPopups[M].status === "init");
16
17
  return {
17
18
  isHidden: e.popupsIds.indexOf(o) > -1 && O.indexOf(o) === -1,
18
19
  isOpen: O.indexOf(o) > -1
19
20
  };
20
21
  },
21
- D
22
+ T
22
23
  );
23
- T({
24
- active: !!s && n,
25
- channels: s?.channels ?? [],
26
- enabled: !!s,
27
- ownerId: s?.ownerId ?? `${o}-popup`
24
+ S({
25
+ active: !!p && n,
26
+ channels: p?.channels ?? [],
27
+ enabled: !!p,
28
+ ownerId: p?.ownerId ?? `${o}-popup`
28
29
  });
29
- const c = p((e) => {
30
+ const c = s((e) => {
30
31
  r.dragging.enable(), e.stopPropagation(), document.removeEventListener("mouseup", c);
31
- }, [r]), C = p((e) => {
32
+ }, [r]), x = s((e) => {
32
33
  r.dragging.disable(), e.stopPropagation(), document.addEventListener("mouseup", c);
33
- }, [r.dragging, c]), i = p(() => {
34
- if (a) {
35
- if (t) {
36
- x(o), l(o, !0);
34
+ }, [r.dragging, c]), i = s(() => {
35
+ if (l) {
36
+ if (p?.channels.includes("viewport_control") && w(p.ownerId), t) {
37
+ h(o), a(o, !0);
37
38
  return;
38
39
  }
39
40
  if (n) {
40
- l(o, !0);
41
+ a(o, !0);
41
42
  return;
42
43
  }
43
44
  I(
44
45
  {
45
46
  winType: "component",
46
47
  popupId: o,
47
- title: m,
48
- iconUrl: f,
49
- component: a,
50
- onMouseDown: C,
48
+ title: f,
49
+ iconUrl: m,
50
+ component: l,
51
+ onMouseDown: x,
51
52
  defaultPosition: g
52
53
  },
53
54
  { closeOthers: !1 }
54
55
  );
55
56
  }
56
57
  }, [
57
- a,
58
- I,
59
58
  l,
59
+ I,
60
+ a,
60
61
  g,
61
- f,
62
+ m,
62
63
  t,
63
64
  n,
64
- C,
65
- o,
66
65
  x,
67
- m
68
- ]), u = p(() => {
66
+ o,
67
+ h,
68
+ p,
69
+ w,
70
+ f
71
+ ]), u = s(() => {
69
72
  !n && !t || P(o);
70
- }, [P, t, n, o]), h = p(() => {
73
+ }, [P, t, n, o]), C = s(() => {
71
74
  if (n || t) {
72
75
  u();
73
76
  return;
@@ -75,12 +78,12 @@ function L(b) {
75
78
  i();
76
79
  }, [u, t, n, i]);
77
80
  return {
78
- externalControllerContext: M(() => ({
81
+ externalControllerContext: v(() => ({
79
82
  closeDefault: u,
80
83
  isHidden: t,
81
84
  isOpen: n,
82
85
  openDefault: i,
83
- toggleDefault: h,
86
+ toggleDefault: C,
84
87
  toolId: o
85
88
  }), [
86
89
  u,
@@ -88,12 +91,12 @@ function L(b) {
88
91
  n,
89
92
  i,
90
93
  o,
91
- h
94
+ C
92
95
  ]),
93
96
  isDisabled: t,
94
97
  isToggled: n
95
98
  };
96
99
  }
97
100
  export {
98
- L as usePopupToolRuntime
101
+ k as usePopupToolRuntime
99
102
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * TODO: Documentar
2
+ * Start or cancel measurement after acquiring its exclusive interaction channels.
3
3
  */
4
4
  export declare function MyActions(): import("@emotion/react/jsx-runtime").JSX.Element;
5
5
  //# sourceMappingURL=MyActions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MyActions.d.ts","sourceRoot":"","sources":["../../../../../../../../../../../../../../../../packages/gclick/src/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MeasureTool/subcomponents/MyActions/MyActions.tsx"],"names":[],"mappings":"AAoBA;;GAEG;AACH,wBAAgB,SAAS,qDA8CxB"}
1
+ {"version":3,"file":"MyActions.d.ts","sourceRoot":"","sources":["../../../../../../../../../../../../../../../../packages/gclick/src/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MeasureTool/subcomponents/MyActions/MyActions.tsx"],"names":[],"mappings":"AAoBA;;GAEG;AACH,wBAAgB,SAAS,qDAwDxB"}
@@ -1,37 +1,39 @@
1
- import { jsx as o } from "@emotion/react/jsx-runtime";
2
- import { useFormContext as E, useWatch as c } from "react-hook-form";
3
- import { ActionsContainer as u, Button as A } from "@m4l/components";
4
- import { useModuleDictionary as m } from "@m4l/core";
5
- import { MAP_DICCTIONARY as e } from "../../../../../../../../dictionary.js";
6
- import { MEASURE_TOOL_INTERACTION_OWNER_ID as C, MEASURE_TOOL_REQUIRED_INTERACTION_CHANNELS as d } from "../../constants.js";
7
- import { useMapInteractionCapture as f } from "../../../../../../../../hooks/useMapInteractionCapture.js";
8
- function D() {
9
- const { control: r, setValue: i } = E(), { getLabel: n } = m(), t = c({
10
- control: r,
1
+ import { jsx as s } from "@emotion/react/jsx-runtime";
2
+ import { useFormContext as f, useWatch as C } from "react-hook-form";
3
+ import { ActionsContainer as _, Button as I } from "@m4l/components";
4
+ import { useModuleDictionary as R } from "@m4l/core";
5
+ import { MAP_DICCTIONARY as c } from "../../../../../../../../dictionary.js";
6
+ import { MEASURE_TOOL_INTERACTION_OWNER_ID as i, MEASURE_TOOL_REQUIRED_INTERACTION_CHANNELS as T } from "../../constants.js";
7
+ import { useMapStore as O } from "../../../../../../../../hooks/useMapStore/index.js";
8
+ import { useMapInteractionCapture as w } from "../../../../../../../../hooks/useMapInteractionCapture.js";
9
+ function x() {
10
+ const { control: l, setValue: o } = f(), { getLabel: n } = R(), { canSuspendViewportTool: u, suspendViewportTool: E } = O((d) => d.mapActions), t = C({
11
+ control: l,
11
12
  name: ["statusEdition", "reInits"]
12
13
  })[0], {
13
- isAvailable: a,
14
- releaseAllCapture: s,
15
- requestCapture: l
16
- } = f({
17
- ownerId: C,
18
- channels: d
19
- });
20
- return /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o(
21
- A,
14
+ isAvailable: e,
15
+ getOwner: m,
16
+ releaseAllCapture: p,
17
+ requestCapture: A
18
+ } = w({
19
+ ownerId: i,
20
+ channels: T
21
+ }), r = m("map_click"), a = e || (r === void 0 || r === i) && u(i);
22
+ return /* @__PURE__ */ s(_, { children: /* @__PURE__ */ s(
23
+ I,
22
24
  {
23
25
  onClick: () => {
24
26
  if (t === "initial") {
25
- if (!l())
27
+ if (!e && a && E(i), !A())
26
28
  return;
27
- i("statusEdition", "draw");
28
- } else t === "draw" && (s(), i("statusEdition", "initial"));
29
+ o("statusEdition", "draw");
30
+ } else t === "draw" && (p(), o("statusEdition", "initial"));
29
31
  },
30
32
  disabled: t === "initial" && !a,
31
- label: n(t === "initial" ? e.LABEL_MEASURE_START : e.LABEL_MEASURE_CANCEL)
33
+ label: n(t === "initial" ? c.LABEL_MEASURE_START : c.LABEL_MEASURE_CANCEL)
32
34
  }
33
35
  ) });
34
36
  }
35
37
  export {
36
- D as MyActions
38
+ x as MyActions
37
39
  };
@@ -0,0 +1,3 @@
1
+ /** Offer a cancellable location toggle in the map's built-in controls. */
2
+ export declare function MyPositionTool(): import("@emotion/react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=MyPositionTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyPositionTool.d.ts","sourceRoot":"","sources":["../../../../../../../../../../../../../../packages/gclick/src/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/MyPositionTool.tsx"],"names":[],"mappings":"AAMA,0EAA0E;AAC1E,wBAAgB,cAAc,qDAsB7B"}
@@ -0,0 +1,38 @@
1
+ import { jsxs as l, Fragment as m, jsx as t } from "@emotion/react/jsx-runtime";
2
+ import { ActionsFocusOutlined as p } from "@m4l/icons";
3
+ import { CircularProgress as c, Snackbar as d } from "@mui/material";
4
+ import { ToggleIconButtonPopupToolStyled as g } from "../../../../../../slots/styled.js";
5
+ import { MY_POSITION_TOOL_ID as r } from "./constants.js";
6
+ import { useMyPositionTool as u } from "./useMyPositionTool.js";
7
+ function y() {
8
+ const { status: o, labels: i, toggle: a, notification: e, dismissNotification: s } = u(), n = o === "pending" ? i.loading : i.title;
9
+ return /* @__PURE__ */ l(m, { children: [
10
+ /* @__PURE__ */ t(
11
+ g,
12
+ {
13
+ role: "button",
14
+ isToggled: o === "active",
15
+ "aria-pressed": o === "active",
16
+ "aria-busy": o === "pending",
17
+ "aria-label": n,
18
+ tooltip: n,
19
+ icon: o === "pending" ? /* @__PURE__ */ t(c, { size: 18, color: "inherit" }) : /* @__PURE__ */ t(p, {}),
20
+ onToggle: a,
21
+ "data-map-tool-id": r,
22
+ dataTestId: `map-tool-${r}`
23
+ }
24
+ ),
25
+ /* @__PURE__ */ t(
26
+ d,
27
+ {
28
+ open: !!e,
29
+ message: e,
30
+ autoHideDuration: 6e3,
31
+ onClose: s
32
+ }
33
+ )
34
+ ] });
35
+ }
36
+ export {
37
+ y as MyPositionTool
38
+ };
@@ -0,0 +1,12 @@
1
+ import { InteractionChannel } from '../../../../../../contexts/MapContext/types';
2
+ import { MyPositionLabels } from './types';
3
+ export declare const MY_POSITION_TOOL_ID = "myPositionTool";
4
+ export declare const MY_POSITION_LAYER_ID = "myPosition";
5
+ export declare const MY_POSITION_FEATURE_ID = "myPosition";
6
+ export declare const MY_POSITION_VIEWPORT_OWNER_ID = "myPositionTool";
7
+ export declare const MY_POSITION_CHANNELS: InteractionChannel[];
8
+ export declare const MY_POSITION_OPTIONS: PositionOptions;
9
+ export declare const MY_POSITION_MAX_ZOOM = 16;
10
+ export declare const MY_POSITION_LABEL_KEYS: Record<keyof MyPositionLabels, string>;
11
+ export declare const MY_POSITION_LABEL_FALLBACKS: MyPositionLabels;
12
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../../../../../../../../../packages/gclick/src/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAEtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,oBAAoB,eAAe,CAAC;AACjD,eAAO,MAAM,sBAAsB,eAAe,CAAC;AACnD,eAAO,MAAM,6BAA6B,mBAAsB,CAAC;AACjE,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,EAAyB,CAAC;AAC/E,eAAO,MAAM,mBAAmB,EAAE,eAIjC,CAAC;AACF,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,gBAAgB,EAAE,MAAM,CAWzE,CAAC;AACF,eAAO,MAAM,2BAA2B,EAAE,gBAWzC,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { MAP_DICCTIONARY as o } from "../../../../../../dictionary.js";
2
+ const e = "myPositionTool", i = "myPosition", n = "myPosition", _ = e, a = ["viewport_control"], I = {
3
+ enableHighAccuracy: !0,
4
+ timeout: 15e3,
5
+ maximumAge: 0
6
+ }, O = 16, s = {
7
+ title: o.LABEL_MY_POSITION,
8
+ layerName: o.LABEL_MY_POSITION_LAYER,
9
+ loading: o.LABEL_MY_POSITION_LOADING,
10
+ unsupported: o.LABEL_MY_POSITION_UNSUPPORTED,
11
+ insecure: o.LABEL_MY_POSITION_INSECURE,
12
+ denied: o.LABEL_MY_POSITION_DENIED,
13
+ unavailable: o.LABEL_MY_POSITION_UNAVAILABLE,
14
+ timeout: o.LABEL_MY_POSITION_TIMEOUT,
15
+ cameraBlocked: o.LABEL_MY_POSITION_CAMERA_BLOCKED,
16
+ layerConflict: o.LABEL_MY_POSITION_LAYER_CONFLICT
17
+ }, c = {
18
+ title: "My position",
19
+ layerName: "My position",
20
+ loading: "Finding your position… Click to cancel.",
21
+ unsupported: "Your browser does not support location services.",
22
+ insecure: "Your location requires a secure connection.",
23
+ denied: "Location access is blocked. Check your browser and system location settings.",
24
+ unavailable: "We could not determine your location. Check your system location settings and try again.",
25
+ timeout: "We could not obtain your location in time. Please try again.",
26
+ cameraBlocked: "Your location is available. Finish the active map tool to center the map.",
27
+ layerConflict: "Your position layer is already in use. Close the other position tool and try again."
28
+ };
29
+ export {
30
+ a as MY_POSITION_CHANNELS,
31
+ n as MY_POSITION_FEATURE_ID,
32
+ c as MY_POSITION_LABEL_FALLBACKS,
33
+ s as MY_POSITION_LABEL_KEYS,
34
+ i as MY_POSITION_LAYER_ID,
35
+ O as MY_POSITION_MAX_ZOOM,
36
+ I as MY_POSITION_OPTIONS,
37
+ e as MY_POSITION_TOOL_ID,
38
+ _ as MY_POSITION_VIEWPORT_OWNER_ID
39
+ };
@@ -0,0 +1,4 @@
1
+ import { MyPositionSession, MyPositionSessionOptions } from './types';
2
+ /** Own one cancellable browser-location session and its native map layer. */
3
+ export declare function createMyPositionSession(options: MyPositionSessionOptions): MyPositionSession;
4
+ //# sourceMappingURL=createMyPositionSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMyPositionSession.d.ts","sourceRoot":"","sources":["../../../../../../../../../../../../../../packages/gclick/src/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/createMyPositionSession.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAE3E,6EAA6E;AAC7E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CA6N5F"}
@@ -0,0 +1,128 @@
1
+ import { latLng as x } from "leaflet";
2
+ import { MyPositionFeatureRender as V } from "../../../../../../featureRenders/MyPositionFeatureRender/MyPositionFeatureRender.js";
3
+ import { MY_POSITION_OPTIONS as k, MY_POSITION_LAYER_ID as c, MY_POSITION_FEATURE_ID as B, MY_POSITION_VIEWPORT_OWNER_ID as y, MY_POSITION_CHANNELS as C, MY_POSITION_MAX_ZOOM as D } from "./constants.js";
4
+ function z(L) {
5
+ const { store: S, onStatus: O, notify: o, getLayerName: T } = L, t = S.getState().mapActions;
6
+ let l = 0, i = !1, f, p, b = !1, g = !1, I = !1, M = 0, _ = 0, m, r, N;
7
+ function w() {
8
+ g = !1, t.releaseInteractionCapture(y, C);
9
+ }
10
+ function h() {
11
+ I = !1, M += 1, g && (t.cancelViewportAction(y), w());
12
+ }
13
+ function R() {
14
+ const e = r;
15
+ r = void 0, e !== void 0 && t.requestAutofollowResume(e);
16
+ }
17
+ function s() {
18
+ l += 1, i = !1, p !== void 0 && (f?.clearWatch(p), p = void 0), N?.(), N = void 0, r = void 0, h(), b && (t.removeLayer(c), b = !1), m = void 0, O("off");
19
+ }
20
+ function A() {
21
+ if (!m)
22
+ return;
23
+ h();
24
+ const e = ++M;
25
+ if (g = t.requestInteractionCapture(y, C), !g) {
26
+ o("cameraBlocked");
27
+ return;
28
+ }
29
+ const { latitude: u, longitude: a, accuracy: d } = m.coords, n = x(u, a).toBounds(Math.max(d * 2, 60)), v = t.moveToBounds({
30
+ southWest: { lat: Math.max(-90, n.getSouth()), lng: Math.max(-180, n.getWest()) },
31
+ northEast: { lat: Math.min(90, n.getNorth()), lng: Math.min(180, n.getEast()) }
32
+ }, {
33
+ ownerId: y,
34
+ maxZoom: D,
35
+ // Fly uses a cancellable animation frame instead of Leaflet's surviving CSS zoom timeout.
36
+ mode: "fly",
37
+ animate: !0,
38
+ duration: 0.3,
39
+ cameraSignal: "cancel-autofollow",
40
+ onCameraSignal: (P) => {
41
+ r = P.requestId;
42
+ },
43
+ /** Release only this focus generation so an older completion cannot release a newer capture. */
44
+ onSettled: () => {
45
+ M === e && w();
46
+ }
47
+ });
48
+ !v.ok && v.status !== "noop" && (w(), o("cameraBlocked"));
49
+ }
50
+ function E(e, u) {
51
+ if (!i || u !== l)
52
+ return;
53
+ const { latitude: a, longitude: d, accuracy: n } = e.coords;
54
+ if (!Number.isFinite(a) || Math.abs(a) > 90 || !Number.isFinite(d) || Math.abs(d) > 180 || !Number.isFinite(n) || n < 0 || !Number.isFinite(e.timestamp)) {
55
+ s(), o("unavailable");
56
+ return;
57
+ }
58
+ const v = !m;
59
+ if (!b) {
60
+ if (S.getState().hashLayers[c]) {
61
+ s(), o("layerConflict");
62
+ return;
63
+ }
64
+ t.addLayer({
65
+ layerId: c,
66
+ name: T(),
67
+ renderFeature: V,
68
+ visible: !0,
69
+ autoFocus: !1,
70
+ autoFocusAble: !1,
71
+ cluster: !1,
72
+ clusterAble: !1,
73
+ deleteAble: !1,
74
+ featureObservability: { enabled: !0, pickable: !0, magnetizable: !0, anchorStrategy: "geometry" },
75
+ geoJsonObject: { object: { type: "FeatureCollection", features: [] } }
76
+ }), b = !0, N = S.subscribe((P, Y) => {
77
+ Y.hashLayers[c]?.visible === !0 && P.hashLayers[c]?.visible === !1 && (h(), R());
78
+ });
79
+ }
80
+ m = e, t.setFeatureData(
81
+ c,
82
+ B,
83
+ { type: "Point", coordinates: [d, a] },
84
+ { accuracy: n, timestamp: e.timestamp }
85
+ ), O("active"), v && I && _ === t.getViewportRevision() && A();
86
+ }
87
+ function F() {
88
+ if (i)
89
+ return;
90
+ if (!window.isSecureContext) {
91
+ o("insecure");
92
+ return;
93
+ }
94
+ if (f = navigator.geolocation, !f) {
95
+ o("unsupported");
96
+ return;
97
+ }
98
+ I = !0, _ = t.getViewportRevision(), i = !0;
99
+ const e = ++l;
100
+ O("pending");
101
+ try {
102
+ const u = f.watchPosition(
103
+ (a) => E(a, e),
104
+ (a) => {
105
+ !i || e !== l || (s(), o(a.code === 1 ? "denied" : a.code === 3 ? "timeout" : "unavailable"));
106
+ },
107
+ k
108
+ );
109
+ i && e === l ? p = u : f.clearWatch(u);
110
+ } catch {
111
+ s(), o("unavailable");
112
+ }
113
+ }
114
+ function q() {
115
+ I = !0, _ = t.getViewportRevision(), i ? A() : F();
116
+ }
117
+ function W() {
118
+ if (i) {
119
+ const e = r;
120
+ s(), r = e, R();
121
+ } else
122
+ F();
123
+ }
124
+ return { start: F, stop: s, open: q, releaseCamera: h, toggle: W };
125
+ }
126
+ export {
127
+ z as createMyPositionSession
128
+ };
@@ -0,0 +1,4 @@
1
+ import { MyPositionLabelResolver, MyPositionLabels } from './types';
2
+ /** Resolve map dictionary labels while older server dictionaries are rolling out. */
3
+ export declare function resolveMyPositionLabels(getLabel: MyPositionLabelResolver): MyPositionLabels;
4
+ //# sourceMappingURL=labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../../../../../../../../../../../../../packages/gclick/src/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/labels.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEzE,qFAAqF;AACrF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,gBAAgB,CAO3F"}
@@ -0,0 +1,10 @@
1
+ import { MY_POSITION_LABEL_KEYS as i, MY_POSITION_LABEL_FALLBACKS as s } from "./constants.js";
2
+ function L(o) {
3
+ return Object.fromEntries(Object.entries(i).map(([r, e]) => {
4
+ const t = o(e).trim();
5
+ return [r, !t || t === e || t.startsWith("N_D:[") ? s[r] : t];
6
+ }));
7
+ }
8
+ export {
9
+ L as resolveMyPositionLabels
10
+ };
@@ -0,0 +1,20 @@
1
+ import { GetLabelType } from '@m4l/core';
2
+ import { MapStore } from '../../../../../../contexts/MapContext/store';
3
+ export type MyPositionStatus = 'off' | 'pending' | 'active';
4
+ export type MyPositionMessage = 'unsupported' | 'insecure' | 'denied' | 'unavailable' | 'timeout' | 'cameraBlocked' | 'layerConflict';
5
+ export type MyPositionLabels = Record<MyPositionMessage | 'title' | 'layerName' | 'loading', string>;
6
+ export type MyPositionSessionOptions = {
7
+ store: MapStore;
8
+ onStatus: (status: MyPositionStatus) => void;
9
+ notify: (message: MyPositionMessage) => void;
10
+ getLayerName: () => string;
11
+ };
12
+ export type MyPositionSession = {
13
+ start: () => void;
14
+ stop: () => void;
15
+ open: () => void;
16
+ releaseCamera: () => void;
17
+ toggle: () => void;
18
+ };
19
+ export type MyPositionLabelResolver = GetLabelType;
20
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../../../../../../../packages/gclick/src/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6CAA6C,CAAC;AAE5E,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC5D,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,eAAe,GAAG,eAAe,CAAC;AACtI,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC;AACrG,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7C,MAAM,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,YAAY,EAAE,MAAM,MAAM,CAAC;CAC5B,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,YAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { MyPositionStatus } from './types';
2
+ /** Connect a map-local browser session to dictionary labels, notifications and semantic tool commands. */
3
+ export declare function useMyPositionTool(): {
4
+ status: MyPositionStatus;
5
+ labels: import('./types').MyPositionLabels;
6
+ toggle: () => void;
7
+ notification: string | undefined;
8
+ dismissNotification: () => void;
9
+ };
10
+ //# sourceMappingURL=useMyPositionTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMyPositionTool.d.ts","sourceRoot":"","sources":["../../../../../../../../../../../../../../packages/gclick/src/components/maps/components/GpsMap/subcomponents/Controls/subcomponents/ButtonsToolsList/subcomponents/MyPositionTool/useMyPositionTool.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,0GAA0G;AAC1G,wBAAgB,iBAAiB;;;;;;EAgDhC"}
@@ -0,0 +1,39 @@
1
+ import { useModuleDictionary as S, HostToolsContext as b } from "@m4l/core";
2
+ import { useContext as m, useRef as I, useState as u, useMemo as f, useEffect as p, useCallback as g } from "react";
3
+ import { useRegisterMapToolController as O } from "../../../../../../hooks/useRegisterMapToolController.js";
4
+ import { useMapStore as _ } from "../../../../../../hooks/useMapStore/index.js";
5
+ import { MY_POSITION_LAYER_ID as d, MY_POSITION_TOOL_ID as x } from "./constants.js";
6
+ import { createMyPositionSession as P } from "./createMyPositionSession.js";
7
+ import { resolveMyPositionLabels as v } from "./labels.js";
8
+ import { MapContext as h } from "../../../../../../contexts/MapContext/MapContext.js";
9
+ function V() {
10
+ const { getLabel: y } = S(), a = m(b), i = m(h), l = _((n) => n.mapActions.setLayerName), t = v(y), e = I({ labels: t, hostTools: a });
11
+ e.current = { labels: t, hostTools: a };
12
+ const [s, M] = u("off"), [N, r] = u(), o = f(() => P({
13
+ store: i,
14
+ onStatus: M,
15
+ getLayerName: () => e.current.labels.layerName,
16
+ /** Use the host toast when available, otherwise keep a map-local notification. */
17
+ notify: (n) => {
18
+ const c = e.current.labels[n];
19
+ e.current.hostTools ? e.current.hostTools.toast({ title: c }, { type: "warning" }) : r(c);
20
+ }
21
+ }), [i]);
22
+ p(() => () => o.stop(), [o]), p(() => {
23
+ s === "active" && l(d, t.layerName);
24
+ }, [t.layerName, l, s]);
25
+ const T = f(() => ({
26
+ open: o.open,
27
+ close: o.releaseCamera,
28
+ suspendViewport: o.releaseCamera,
29
+ toggle: o.toggle
30
+ }), [o]);
31
+ O(x, T);
32
+ const C = g(() => r(void 0), []), L = g(() => {
33
+ r(void 0), o.toggle();
34
+ }, [o]);
35
+ return { status: s, labels: t, toggle: L, notification: N, dismissNotification: C };
36
+ }
37
+ export {
38
+ V as useMyPositionTool
39
+ };
@@ -30,7 +30,7 @@ export type Point = {
30
30
  };
31
31
  export type MapToolPosition = Extract<L.ControlPosition, 'topright' | 'bottomright'>;
32
32
  export type MapToolType = 'popup' | 'button';
33
- export type MapToolControlCommand = 'open' | 'close' | 'toggle';
33
+ export type MapToolControlCommand = 'open' | 'close' | 'toggle' | 'suspendViewport';
34
34
  export type MapToolControllerScope = 'default' | 'runtime';
35
35
  export type MapToolController = Partial<Record<MapToolControlCommand, () => void>>;
36
36
  export type MapToolExternalControllerContext = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/gclick/src/components/maps/components/GpsMap/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/gclick/src/components/maps/components/GpsMap/types.ts"],"names":[],"mappings":"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"}