@xyo-network/react-map 2.35.7 → 2.35.8

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 (40) hide show
  1. package/dist/cjs/Components/MapBox.d.ts.map +1 -1
  2. package/dist/cjs/Components/MapBox.js +7 -1
  3. package/dist/cjs/Components/MapBox.js.map +1 -1
  4. package/dist/cjs/Settings/DefaultMapSettings.d.ts.map +1 -1
  5. package/dist/cjs/Settings/DefaultMapSettings.js +6 -0
  6. package/dist/cjs/Settings/DefaultMapSettings.js.map +1 -1
  7. package/dist/cjs/Settings/MapSetting.d.ts +1 -0
  8. package/dist/cjs/Settings/MapSetting.d.ts.map +1 -1
  9. package/dist/cjs/hooks/index.d.ts +1 -0
  10. package/dist/cjs/hooks/index.d.ts.map +1 -1
  11. package/dist/cjs/hooks/index.js +1 -0
  12. package/dist/cjs/hooks/index.js.map +1 -1
  13. package/dist/cjs/hooks/useDynamicMapResize.d.ts +7 -0
  14. package/dist/cjs/hooks/useDynamicMapResize.d.ts.map +1 -0
  15. package/dist/cjs/hooks/useDynamicMapResize.js +36 -0
  16. package/dist/cjs/hooks/useDynamicMapResize.js.map +1 -0
  17. package/dist/docs.json +1446 -1298
  18. package/dist/esm/Components/MapBox.d.ts.map +1 -1
  19. package/dist/esm/Components/MapBox.js +7 -1
  20. package/dist/esm/Components/MapBox.js.map +1 -1
  21. package/dist/esm/Settings/DefaultMapSettings.d.ts.map +1 -1
  22. package/dist/esm/Settings/DefaultMapSettings.js +6 -0
  23. package/dist/esm/Settings/DefaultMapSettings.js.map +1 -1
  24. package/dist/esm/Settings/MapSetting.d.ts +1 -0
  25. package/dist/esm/Settings/MapSetting.d.ts.map +1 -1
  26. package/dist/esm/hooks/index.d.ts +1 -0
  27. package/dist/esm/hooks/index.d.ts.map +1 -1
  28. package/dist/esm/hooks/index.js +1 -0
  29. package/dist/esm/hooks/index.js.map +1 -1
  30. package/dist/esm/hooks/useDynamicMapResize.d.ts +7 -0
  31. package/dist/esm/hooks/useDynamicMapResize.d.ts.map +1 -0
  32. package/dist/esm/hooks/useDynamicMapResize.js +31 -0
  33. package/dist/esm/hooks/useDynamicMapResize.js.map +1 -0
  34. package/package.json +6 -6
  35. package/src/Components/MapBox.stories.tsx +68 -0
  36. package/src/Components/MapBox.tsx +9 -1
  37. package/src/Settings/DefaultMapSettings.ts +6 -0
  38. package/src/Settings/MapSetting.ts +1 -0
  39. package/src/hooks/index.ts +1 -0
  40. package/src/hooks/useDynamicMapResize.tsx +45 -0
@@ -1 +1 @@
1
- {"version":3,"file":"MapBox.d.ts","sourceRoot":"","sources":["../../../src/Components/MapBox.tsx"],"names":[],"mappings":";AACA,OAAO,8BAA8B,CAAA;AAErC,OAAO,EAAO,aAAa,EAAE,MAAM,WAAW,CAAA;AAM9C,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAiDxC,CAAA"}
1
+ {"version":3,"file":"MapBox.d.ts","sourceRoot":"","sources":["../../../src/Components/MapBox.tsx"],"names":[],"mappings":";AACA,OAAO,8BAA8B,CAAA;AAErC,OAAO,EAAO,aAAa,EAAE,MAAM,WAAW,CAAA;AAO9C,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAwDxC,CAAA"}
@@ -4,12 +4,16 @@ import 'mapbox-gl/dist/mapbox-gl.css';
4
4
  import { Map } from 'mapbox-gl';
5
5
  import { useEffect, useRef, useState } from 'react';
6
6
  import { useMapBoxInstance, useMapSettings } from '../Contexts';
7
+ import { useDynamicMapResize } from '../hooks';
7
8
  import { XyoMapStyle } from '../lib';
8
9
  export const MapBox = ({ accessToken, darkMode = false, zoom = 2, options, ...props }) => {
9
10
  const [map, setMap] = useState();
10
11
  const mapContainerRef = useRef(null);
11
- const { setMapBoxInstance } = useMapBoxInstance();
12
+ const mapCanvasRef = useRef(null);
13
+ const { setMapBoxInstance, map: mapInstance } = useMapBoxInstance();
12
14
  const { mapSettings } = useMapSettings();
15
+ const activeResize = mapSettings?.dynamicMapResize.value;
16
+ useDynamicMapResize(mapContainerRef, mapCanvasRef, mapInstance, activeResize);
13
17
  useEffect(() => {
14
18
  if (mapSettings?.preferDark?.value === true) {
15
19
  map?.setStyle(`mapbox://styles/${XyoMapStyle.Dark}`);
@@ -30,6 +34,8 @@ export const MapBox = ({ accessToken, darkMode = false, zoom = 2, options, ...pr
30
34
  // Allow external components to control the map
31
35
  setMapBoxInstance?.(map);
32
36
  setMap(map);
37
+ // save the map canvas ref to help with resizing
38
+ mapCanvasRef.current = document.querySelector('.mapboxgl-canvas');
33
39
  console.log('Created Map');
34
40
  return () => {
35
41
  console.log('Removing Map');
@@ -1 +1 @@
1
- {"version":3,"file":"MapBox.js","sourceRoot":"","sources":["../../../src/Components/MapBox.tsx"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,OAAO,8BAA8B,CAAA;AAErC,OAAO,EAAE,GAAG,EAAiB,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEnD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AASpC,MAAM,CAAC,MAAM,MAAM,GAA0B,CAAC,EAAE,WAAW,EAAE,QAAQ,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC9G,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,EAAO,CAAA;IACrC,MAAM,eAAe,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAA;IAC3D,MAAM,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAAA;IACjD,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,CAAA;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,EAAE,UAAU,EAAE,KAAK,KAAK,IAAI,EAAE;YAC3C,GAAG,EAAE,QAAQ,CAAC,mBAAmB,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;SACrD;aAAM;YACL,GAAG,EAAE,QAAQ,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAA;SACpF;IACH,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAA;IAEhC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;YAClB,WAAW;YACX,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACd,SAAS,EAAE,eAAe,CAAC,OAAO,IAAI,EAAE;YACxC,KAAK,EAAE,mBAAmB,WAAW,CAAC,KAAK,EAAE;YAC7C,IAAI;YACJ,GAAG,OAAO;SACX,CAAC,CAAA;QAEF,+CAA+C;QAC/C,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAA;QACxB,MAAM,CAAC,GAAG,CAAC,CAAA;QAEX,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAE1B,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;YAC3B,GAAG,CAAC,MAAM,EAAE,CAAA;QACd,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAA;IAE5E,OAAO,CACL,cACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,OAAO,GAAG,EAAE,CAAC,EAC3C,KAAK,EAAE;YACL,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,CAAC;YACN,GAAG,KAAK;SACT,GACD,CACH,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"MapBox.js","sourceRoot":"","sources":["../../../src/Components/MapBox.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultMapSettings.d.ts","sourceRoot":"","sources":["../../../src/Settings/DefaultMapSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,eAAO,MAAM,kBAAkB,EAAE,MAAM,UAwCrC,CAAA"}
1
+ {"version":3,"file":"DefaultMapSettings.d.ts","sourceRoot":"","sources":["../../../src/Settings/DefaultMapSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,eAAO,MAAM,kBAAkB,EAAE,MAAM,UA8CrC,CAAA"}
@@ -12,6 +12,12 @@ export const DefaultMapSettings = () => ({
12
12
  label: 'Debug Logging',
13
13
  value: false,
14
14
  },
15
+ dynamicMapResize: {
16
+ devMode: false,
17
+ field: 'dynamicMapResize',
18
+ label: 'Auto Map Resize',
19
+ value: true,
20
+ },
15
21
  enableControls: {
16
22
  devMode: true,
17
23
  field: 'enableControls',
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultMapSettings.js","sourceRoot":"","sources":["../../../src/Settings/DefaultMapSettings.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAqB,GAAG,EAAE,CAAC,CAAC;IACzD,UAAU,EAAE;QACV,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,KAAK;KACb;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,KAAK;KACb;IACD,cAAc,EAAE;QACd,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,KAAK;KACb;IACD,WAAW,EAAE;QACX,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,aAAa;QACpB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,KAAK;KACb;IACD,UAAU,EAAE;QACV,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,KAAK;KACb;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,KAAK;KACb;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"DefaultMapSettings.js","sourceRoot":"","sources":["../../../src/Settings/DefaultMapSettings.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAqB,GAAG,EAAE,CAAC,CAAC;IACzD,UAAU,EAAE;QACV,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,KAAK;KACb;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,KAAK;KACb;IACD,gBAAgB,EAAE;QAChB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,IAAI;KACZ;IACD,cAAc,EAAE;QACd,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,KAAK;KACb;IACD,WAAW,EAAE;QACX,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,aAAa;QACpB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,KAAK;KACb;IACD,UAAU,EAAE;QACV,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,KAAK;KACb;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,KAAK;KACb;CACF,CAAC,CAAA"}
@@ -6,6 +6,7 @@ export declare type MapSetting = {
6
6
  label: string;
7
7
  hidden?: boolean;
8
8
  devMode?: boolean;
9
+ dynamicMapResize?: boolean;
9
10
  };
10
11
  };
11
12
  //# sourceMappingURL=MapSetting.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MapSetting.d.ts","sourceRoot":"","sources":["../../../src/Settings/MapSetting.ts"],"names":[],"mappings":"AAAA,oBAAY,gBAAgB,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG,gBAAgB,GAAG,cAAc,GAAG,YAAY,CAAA;AAE/H,oBAAY,UAAU,GAAG;KACtB,KAAK,IAAI,gBAAgB,GAAG,MAAM,GAAG;QACpC,KAAK,EAAE,OAAO,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB;CACF,CAAA"}
1
+ {"version":3,"file":"MapSetting.d.ts","sourceRoot":"","sources":["../../../src/Settings/MapSetting.ts"],"names":[],"mappings":"AAAA,oBAAY,gBAAgB,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG,gBAAgB,GAAG,cAAc,GAAG,YAAY,CAAA;AAE/H,oBAAY,UAAU,GAAG;KACtB,KAAK,IAAI,gBAAgB,GAAG,MAAM,GAAG;QACpC,KAAK,EAAE,OAAO,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAC3B;CACF,CAAA"}
@@ -1,3 +1,4 @@
1
+ export * from './useDynamicMapResize';
1
2
  export * from './useDynamicPositioning';
2
3
  export * from './useFetchPayloads';
3
4
  export * from './useFindHashes';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA"}
@@ -1,3 +1,4 @@
1
+ export * from './useDynamicMapResize';
1
2
  export * from './useDynamicPositioning';
2
3
  export * from './useFetchPayloads';
3
4
  export * from './useFindHashes';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { Map } from 'mapbox-gl';
2
+ import { MutableRefObject } from 'react';
3
+ /**
4
+ * Inspired by - https://bl.ocks.org/danswick/fc56f37c10d40be62e4feac5984250d2
5
+ */
6
+ export declare const useDynamicMapResize: (mapContainerRef: MutableRefObject<HTMLDivElement | null>, mapCanvasRef: MutableRefObject<HTMLCanvasElement | null>, mapInstance?: Map, active?: boolean) => void;
7
+ //# sourceMappingURL=useDynamicMapResize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDynamicMapResize.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDynamicMapResize.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAgC,MAAM,OAAO,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,mBAAmB,oBACb,iBAAiB,cAAc,GAAG,IAAI,CAAC,gBAC1C,iBAAiB,iBAAiB,GAAG,IAAI,CAAC,gBAC1C,GAAG,2BAmClB,CAAA"}
@@ -0,0 +1,31 @@
1
+ import { useEffect, useMemo, useState } from 'react';
2
+ /**
3
+ * Inspired by - https://bl.ocks.org/danswick/fc56f37c10d40be62e4feac5984250d2
4
+ */
5
+ export const useDynamicMapResize = (mapContainerRef, mapCanvasRef, mapInstance, active = true) => {
6
+ const [dependenciesReady, setDependenciesReady] = useState(false);
7
+ const resizer = useMemo(() => new ResizeObserver(() => {
8
+ const width = mapContainerRef.current?.getBoundingClientRect().width;
9
+ if (width && mapCanvasRef.current) {
10
+ mapCanvasRef.current.style.width = `${width}px`;
11
+ // setTimeout allows for the smoothest animation (vs requestAnimationFrame, debouce, etc)
12
+ // likely because it lets mapbox resize once when the event loop is ready?
13
+ setTimeout(() => mapInstance?.resize());
14
+ }
15
+ }), [mapCanvasRef, mapContainerRef, mapInstance]);
16
+ useEffect(() => {
17
+ const dependenciesReady = !!(active && mapInstance && mapContainerRef?.current && mapCanvasRef.current);
18
+ setDependenciesReady(dependenciesReady);
19
+ }, [active, mapCanvasRef, mapContainerRef, mapInstance]);
20
+ useEffect(() => {
21
+ if (dependenciesReady) {
22
+ if (mapContainerRef.current) {
23
+ resizer.observe(mapContainerRef.current);
24
+ }
25
+ return () => {
26
+ resizer.disconnect();
27
+ };
28
+ }
29
+ }, [active, dependenciesReady, mapCanvasRef, mapContainerRef, mapInstance, resizer]);
30
+ };
31
+ //# sourceMappingURL=useDynamicMapResize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDynamicMapResize.js","sourceRoot":"","sources":["../../../src/hooks/useDynamicMapResize.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoB,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEtE;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,eAAwD,EACxD,YAAwD,EACxD,WAAiB,EACjB,MAAM,GAAG,IAAI,EACb,EAAE;IACF,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEjE,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CACH,IAAI,cAAc,CAAC,GAAG,EAAE;QACtB,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,qBAAqB,EAAE,CAAC,KAAK,CAAA;QACpE,IAAI,KAAK,IAAI,YAAY,CAAC,OAAO,EAAE;YACjC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,KAAK,IAAI,CAAA;YAC/C,yFAAyF;YACzF,0EAA0E;YAC1E,UAAU,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;SACxC;IACH,CAAC,CAAC,EACJ,CAAC,YAAY,EAAE,eAAe,EAAE,WAAW,CAAC,CAC7C,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,iBAAiB,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,WAAW,IAAI,eAAe,EAAE,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAA;QACvG,oBAAoB,CAAC,iBAAiB,CAAC,CAAA;IACzC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC,CAAA;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,iBAAiB,EAAE;YACrB,IAAI,eAAe,CAAC,OAAO,EAAE;gBAC3B,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;aACzC;YAED,OAAO,GAAG,EAAE;gBACV,OAAO,CAAC,UAAU,EAAE,CAAA;YACtB,CAAC,CAAA;SACF;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;AACtF,CAAC,CAAA"}
package/package.json CHANGED
@@ -12,11 +12,11 @@
12
12
  "dependencies": {
13
13
  "@xylabs/react-flexbox": "^2.14.20",
14
14
  "@xylabs/react-shared": "^2.14.20",
15
- "@xyo-network/react-app-settings": "^2.35.7",
16
- "@xyo-network/react-archive": "^2.35.7",
17
- "@xyo-network/react-archivist-api": "^2.35.7",
18
- "@xyo-network/react-network": "^2.35.7",
19
- "@xyo-network/react-shared": "^2.35.7",
15
+ "@xyo-network/react-app-settings": "^2.35.8",
16
+ "@xyo-network/react-archive": "^2.35.8",
17
+ "@xyo-network/react-archivist-api": "^2.35.8",
18
+ "@xyo-network/react-network": "^2.35.8",
19
+ "@xyo-network/react-shared": "^2.35.8",
20
20
  "@xyo-network/sdk-geo": "^2.6.19",
21
21
  "geojson": "^0.5.0",
22
22
  "mapbox-gl": "^2.10.0",
@@ -79,5 +79,5 @@
79
79
  },
80
80
  "sideEffects": false,
81
81
  "types": "dist/esm/index.d.ts",
82
- "version": "2.35.7"
82
+ "version": "2.35.8"
83
83
  }
@@ -0,0 +1,68 @@
1
+ import { Button } from '@mui/material'
2
+ import { ComponentStory, DecoratorFn, Meta } from '@storybook/react'
3
+ import { FlexGrowCol } from '@xylabs/react-flexbox'
4
+ import { useRef } from 'react'
5
+
6
+ import { MapBoxInstanceProvider, MapSettingsProvider } from '../Contexts'
7
+ import { DefaultMapSettings } from '../Settings'
8
+ import { MapBox } from './MapBox'
9
+
10
+ const WithMapboxProviders: DecoratorFn = (Story, props) => {
11
+ return (
12
+ <MapBoxInstanceProvider>
13
+ <MapSettingsProvider defaultMapSettings={DefaultMapSettings()}>
14
+ <Story {...props} />
15
+ </MapSettingsProvider>
16
+ </MapBoxInstanceProvider>
17
+ )
18
+ }
19
+
20
+ // eslint-disable-next-line import/no-default-export
21
+ export default {
22
+ argTypes: {
23
+ accessToken: {
24
+ defaultValue: process.env.STORYBOOK_MAPBOX_TOKEN,
25
+ },
26
+ },
27
+ component: MapBox,
28
+ decorators: [WithMapboxProviders],
29
+ parameters: {
30
+ docs: {
31
+ page: null,
32
+ },
33
+ },
34
+ title: 'map/Mapbox',
35
+ } as Meta
36
+
37
+ const Template: ComponentStory<typeof MapBox> = (args) => {
38
+ const containerRef = useRef<HTMLDivElement | null>()
39
+ const handleClick = () => {
40
+ if (containerRef.current) {
41
+ const containerWidth = containerRef.current.style.minWidth
42
+ if (containerWidth === '100%') {
43
+ containerRef.current.style.minWidth = '50%'
44
+ } else {
45
+ containerRef.current.style.minWidth = '100%'
46
+ }
47
+ }
48
+ }
49
+
50
+ return (
51
+ <FlexGrowCol rowGap={2} alignItems="start">
52
+ <Button variant="contained" sx={{ my: 2 }} onClick={handleClick}>
53
+ Toggle Container minWidth
54
+ </Button>
55
+ <div
56
+ ref={(ref) => (containerRef.current = ref)}
57
+ style={{ minHeight: 'calc(100vh - 2rem)', minWidth: '100%', position: 'relative', transition: 'min-width 300ms ease' }}
58
+ >
59
+ <MapBox {...args} />
60
+ </div>
61
+ </FlexGrowCol>
62
+ )
63
+ }
64
+
65
+ const Default = Template.bind({})
66
+ Default.args = {}
67
+
68
+ export { Default }
@@ -5,6 +5,7 @@ import { Map, MapboxOptions } from 'mapbox-gl'
5
5
  import { useEffect, useRef, useState } from 'react'
6
6
 
7
7
  import { useMapBoxInstance, useMapSettings } from '../Contexts'
8
+ import { useDynamicMapResize } from '../hooks'
8
9
  import { XyoMapStyle } from '../lib'
9
10
 
10
11
  export interface MapBoxProps {
@@ -17,9 +18,13 @@ export interface MapBoxProps {
17
18
  export const MapBox: React.FC<MapBoxProps> = ({ accessToken, darkMode = false, zoom = 2, options, ...props }) => {
18
19
  const [map, setMap] = useState<Map>()
19
20
  const mapContainerRef = useRef<HTMLDivElement | null>(null)
20
- const { setMapBoxInstance } = useMapBoxInstance()
21
+ const mapCanvasRef = useRef<HTMLCanvasElement | null>(null)
22
+ const { setMapBoxInstance, map: mapInstance } = useMapBoxInstance()
21
23
  const { mapSettings } = useMapSettings()
22
24
 
25
+ const activeResize = mapSettings?.dynamicMapResize.value
26
+ useDynamicMapResize(mapContainerRef, mapCanvasRef, mapInstance, activeResize)
27
+
23
28
  useEffect(() => {
24
29
  if (mapSettings?.preferDark?.value === true) {
25
30
  map?.setStyle(`mapbox://styles/${XyoMapStyle.Dark}`)
@@ -42,6 +47,9 @@ export const MapBox: React.FC<MapBoxProps> = ({ accessToken, darkMode = false, z
42
47
  setMapBoxInstance?.(map)
43
48
  setMap(map)
44
49
 
50
+ // save the map canvas ref to help with resizing
51
+ mapCanvasRef.current = document.querySelector('.mapboxgl-canvas')
52
+
45
53
  console.log('Created Map')
46
54
 
47
55
  return () => {
@@ -14,6 +14,12 @@ export const DefaultMapSettings: () => MapSetting = () => ({
14
14
  label: 'Debug Logging',
15
15
  value: false,
16
16
  },
17
+ dynamicMapResize: {
18
+ devMode: false,
19
+ field: 'dynamicMapResize',
20
+ label: 'Auto Map Resize',
21
+ value: true,
22
+ },
17
23
  enableControls: {
18
24
  devMode: true,
19
25
  field: 'enableControls',
@@ -7,5 +7,6 @@ export type MapSetting = {
7
7
  label: string
8
8
  hidden?: boolean
9
9
  devMode?: boolean
10
+ dynamicMapResize?: boolean
10
11
  }
11
12
  }
@@ -1,3 +1,4 @@
1
+ export * from './useDynamicMapResize'
1
2
  export * from './useDynamicPositioning'
2
3
  export * from './useFetchPayloads'
3
4
  export * from './useFindHashes'
@@ -0,0 +1,45 @@
1
+ import { Map } from 'mapbox-gl'
2
+ import { MutableRefObject, useEffect, useMemo, useState } from 'react'
3
+
4
+ /**
5
+ * Inspired by - https://bl.ocks.org/danswick/fc56f37c10d40be62e4feac5984250d2
6
+ */
7
+ export const useDynamicMapResize = (
8
+ mapContainerRef: MutableRefObject<HTMLDivElement | null>,
9
+ mapCanvasRef: MutableRefObject<HTMLCanvasElement | null>,
10
+ mapInstance?: Map,
11
+ active = true,
12
+ ) => {
13
+ const [dependenciesReady, setDependenciesReady] = useState(false)
14
+
15
+ const resizer = useMemo(
16
+ () =>
17
+ new ResizeObserver(() => {
18
+ const width = mapContainerRef.current?.getBoundingClientRect().width
19
+ if (width && mapCanvasRef.current) {
20
+ mapCanvasRef.current.style.width = `${width}px`
21
+ // setTimeout allows for the smoothest animation (vs requestAnimationFrame, debouce, etc)
22
+ // likely because it lets mapbox resize once when the event loop is ready?
23
+ setTimeout(() => mapInstance?.resize())
24
+ }
25
+ }),
26
+ [mapCanvasRef, mapContainerRef, mapInstance],
27
+ )
28
+
29
+ useEffect(() => {
30
+ const dependenciesReady = !!(active && mapInstance && mapContainerRef?.current && mapCanvasRef.current)
31
+ setDependenciesReady(dependenciesReady)
32
+ }, [active, mapCanvasRef, mapContainerRef, mapInstance])
33
+
34
+ useEffect(() => {
35
+ if (dependenciesReady) {
36
+ if (mapContainerRef.current) {
37
+ resizer.observe(mapContainerRef.current)
38
+ }
39
+
40
+ return () => {
41
+ resizer.disconnect()
42
+ }
43
+ }
44
+ }, [active, dependenciesReady, mapCanvasRef, mapContainerRef, mapInstance, resizer])
45
+ }