@macrostrat/map-interface 1.2.1 → 1.2.3

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 (126) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/{container.72611900.js → container.b61e4d0f.js} +2 -2
  3. package/dist/cjs/{container.72611900.js.map → container.b61e4d0f.js.map} +1 -1
  4. package/dist/cjs/{dev.7499151f.js → dev.8ee72000.js} +3 -3
  5. package/dist/{esm/dev.ccb6e774.js.map → cjs/dev.8ee72000.js.map} +1 -1
  6. package/dist/cjs/{expansion-panel.08532cee.js → expansion-panel.ef757efe.js} +6 -5
  7. package/dist/cjs/expansion-panel.ef757efe.js.map +1 -0
  8. package/dist/cjs/{header.58c5c012.js → header.b86c0710.js} +11 -5
  9. package/dist/cjs/header.b86c0710.js.map +1 -0
  10. package/dist/cjs/{headers.20eae5f7.js → headers.d9f3e324.js} +3 -3
  11. package/dist/cjs/{headers.20eae5f7.js.map → headers.d9f3e324.js.map} +1 -1
  12. package/dist/cjs/index.js +6 -6
  13. package/dist/cjs/{location-panel.c95f5e96.js → location-panel.6a4dc310.js} +7 -7
  14. package/dist/cjs/location-panel.6a4dc310.js.map +1 -0
  15. package/dist/cjs/{main.module.3f2b7c9f.js → main.module.0bbfa859.js} +4 -1
  16. package/dist/cjs/main.module.0bbfa859.js.map +1 -0
  17. package/dist/cjs/{main.module.ff1b1aca.css → main.module.338867af.css} +23 -11
  18. package/dist/cjs/main.module.338867af.css.map +1 -0
  19. package/dist/cjs/{main.module.02c4de16.css → main.module.3dbc089f.css} +22 -6
  20. package/dist/cjs/main.module.3dbc089f.css.map +1 -0
  21. package/dist/cjs/{main.module.4ecbaaa5.js → main.module.a3a78b0d.js} +4 -1
  22. package/dist/cjs/main.module.a3a78b0d.js.map +1 -0
  23. package/dist/cjs/{map-page.190b6723.js → map-page.cde24ee5.js} +6 -6
  24. package/dist/cjs/{map-page.190b6723.js.map → map-page.cde24ee5.js.map} +1 -1
  25. package/dist/cjs/map-view.12e9ea3e.js +178 -0
  26. package/dist/cjs/map-view.12e9ea3e.js.map +1 -0
  27. package/dist/cjs/{vector-tile-features.456f887b.js → vector-tile-features.77121785.js} +2 -2
  28. package/dist/cjs/{vector-tile-features.456f887b.js.map → vector-tile-features.77121785.js.map} +1 -1
  29. package/dist/esm/{container.16bde261.js → container.2ebe27af.js} +2 -2
  30. package/dist/esm/{container.16bde261.js.map → container.2ebe27af.js.map} +1 -1
  31. package/dist/esm/{dev.ccb6e774.js → dev.58b994e7.js} +3 -3
  32. package/dist/{cjs/dev.7499151f.js.map → esm/dev.58b994e7.js.map} +1 -1
  33. package/dist/esm/{expansion-panel.feff0e62.js → expansion-panel.465b822f.js} +7 -6
  34. package/dist/esm/expansion-panel.465b822f.js.map +1 -0
  35. package/dist/esm/{header.0f535ab1.js → header.b4aa864a.js} +12 -6
  36. package/dist/esm/header.b4aa864a.js.map +1 -0
  37. package/dist/esm/{headers.b25ff414.js → headers.32db7784.js} +4 -4
  38. package/dist/esm/{headers.b25ff414.js.map → headers.32db7784.js.map} +1 -1
  39. package/dist/esm/index.d.ts +8 -2
  40. package/dist/esm/index.d.ts.map +1 -1
  41. package/dist/esm/index.js +6 -6
  42. package/dist/esm/{location-panel.0b1f4ed2.js → location-panel.f22673f5.js} +8 -8
  43. package/dist/esm/location-panel.f22673f5.js.map +1 -0
  44. package/dist/esm/{main.module.67a908da.js → main.module.303f6d99.js} +4 -1
  45. package/dist/esm/main.module.303f6d99.js.map +1 -0
  46. package/dist/esm/{main.module.89579666.js → main.module.58922c04.js} +4 -1
  47. package/dist/esm/main.module.58922c04.js.map +1 -0
  48. package/dist/esm/{map-page.b953c404.js → map-page.f9f59ea0.js} +6 -6
  49. package/dist/esm/{map-page.b953c404.js.map → map-page.f9f59ea0.js.map} +1 -1
  50. package/dist/esm/map-view.4f256782.js +172 -0
  51. package/dist/esm/map-view.4f256782.js.map +1 -0
  52. package/dist/esm/{vector-tile-features.e1a24df0.js → vector-tile-features.53b48d66.js} +2 -2
  53. package/dist/esm/{vector-tile-features.e1a24df0.js.map → vector-tile-features.53b48d66.js.map} +1 -1
  54. package/dist/node/container.abd6f0d2.js.map +1 -1
  55. package/dist/node/{dev.15b4cdb0.js → dev.3cbf6106.js} +2 -2
  56. package/dist/node/{dev.15b4cdb0.js.map → dev.3cbf6106.js.map} +1 -1
  57. package/dist/node/expansion-panel.62240ee3.js +2 -0
  58. package/dist/node/expansion-panel.62240ee3.js.map +1 -0
  59. package/dist/node/header.4b58753a.js +2 -0
  60. package/dist/node/header.4b58753a.js.map +1 -0
  61. package/dist/node/{headers.0d494ac2.js → headers.2581f6d9.js} +2 -2
  62. package/dist/node/{headers.0d494ac2.js.map → headers.2581f6d9.js.map} +1 -1
  63. package/dist/node/index.js +1 -1
  64. package/dist/node/index.js.map +1 -1
  65. package/dist/node/{location-panel.d22d21fa.js → location-panel.c39983e3.js} +2 -2
  66. package/dist/node/location-panel.c39983e3.js.map +1 -0
  67. package/dist/node/main.module.2d51c752.css +2 -0
  68. package/dist/node/main.module.2d51c752.css.map +1 -0
  69. package/dist/node/main.module.3a8fef67.js +2 -0
  70. package/dist/node/main.module.3a8fef67.js.map +1 -0
  71. package/dist/node/main.module.5d5ab665.js +2 -0
  72. package/dist/node/main.module.5d5ab665.js.map +1 -0
  73. package/dist/node/main.module.ba3f4a78.css +2 -0
  74. package/dist/node/main.module.ba3f4a78.css.map +1 -0
  75. package/dist/node/{map-page.0b19d49e.js → map-page.f99c4a48.js} +2 -2
  76. package/dist/node/{map-page.0b19d49e.js.map → map-page.f99c4a48.js.map} +1 -1
  77. package/dist/node/map-view.77013338.js +2 -0
  78. package/dist/node/map-view.77013338.js.map +1 -0
  79. package/dist/node/{vector-tile-features.c02e240c.js → vector-tile-features.b5a23b71.js} +2 -2
  80. package/dist/node/{vector-tile-features.c02e240c.js.map → vector-tile-features.b5a23b71.js.map} +1 -1
  81. package/package.json +3 -3
  82. package/src/container.ts +1 -1
  83. package/src/expansion-panel/index.ts +1 -1
  84. package/src/expansion-panel/main.module.sass +20 -10
  85. package/src/location-panel/header.ts +31 -19
  86. package/src/location-panel/index.ts +6 -4
  87. package/src/location-panel/main.module.sass +16 -4
  88. package/src/{map-view/index.ts → map-view.ts} +51 -18
  89. package/dist/cjs/expansion-panel.08532cee.js.map +0 -1
  90. package/dist/cjs/header.58c5c012.js.map +0 -1
  91. package/dist/cjs/location-panel.c95f5e96.js.map +0 -1
  92. package/dist/cjs/main.module.02c4de16.css.map +0 -1
  93. package/dist/cjs/main.module.3f2b7c9f.js.map +0 -1
  94. package/dist/cjs/main.module.4ecbaaa5.js.map +0 -1
  95. package/dist/cjs/main.module.ff1b1aca.css.map +0 -1
  96. package/dist/cjs/map-view.93363b41.js +0 -167
  97. package/dist/cjs/map-view.93363b41.js.map +0 -1
  98. package/dist/cjs/terrain.90f76b4e.js +0 -59
  99. package/dist/cjs/terrain.90f76b4e.js.map +0 -1
  100. package/dist/esm/expansion-panel.feff0e62.js.map +0 -1
  101. package/dist/esm/header.0f535ab1.js.map +0 -1
  102. package/dist/esm/location-panel.0b1f4ed2.js.map +0 -1
  103. package/dist/esm/main.module.67a908da.js.map +0 -1
  104. package/dist/esm/main.module.89579666.js.map +0 -1
  105. package/dist/esm/map-view.a3fe6257.js +0 -161
  106. package/dist/esm/map-view.a3fe6257.js.map +0 -1
  107. package/dist/esm/terrain.f65cf7c5.js +0 -54
  108. package/dist/esm/terrain.f65cf7c5.js.map +0 -1
  109. package/dist/node/expansion-panel.1553938f.js +0 -2
  110. package/dist/node/expansion-panel.1553938f.js.map +0 -1
  111. package/dist/node/header.5f15d599.js +0 -2
  112. package/dist/node/header.5f15d599.js.map +0 -1
  113. package/dist/node/location-panel.d22d21fa.js.map +0 -1
  114. package/dist/node/main.module.2cc98713.css +0 -2
  115. package/dist/node/main.module.2cc98713.css.map +0 -1
  116. package/dist/node/main.module.78d7f40f.js +0 -2
  117. package/dist/node/main.module.78d7f40f.js.map +0 -1
  118. package/dist/node/main.module.d4e98e60.js +0 -2
  119. package/dist/node/main.module.d4e98e60.js.map +0 -1
  120. package/dist/node/main.module.f0530add.css +0 -2
  121. package/dist/node/main.module.f0530add.css.map +0 -1
  122. package/dist/node/map-view.c6746dca.js +0 -2
  123. package/dist/node/map-view.c6746dca.js.map +0 -1
  124. package/dist/node/terrain.96ae432a.js +0 -2
  125. package/dist/node/terrain.96ae432a.js.map +0 -1
  126. package/src/map-view/terrain.ts +0 -63
@@ -1,167 +0,0 @@
1
- var $35f1bc0112883d51$exports = require("./main.module.62939ea7.js");
2
- require("./main.module.f085a193.css");
3
- var $ecfbeec2ae4211a4$exports = require("./terrain.90f76b4e.js");
4
- var $2611a7b4364593e5$exports = require("./helpers.0f72ddaf.js");
5
- var $3490fc4f4bda12f7$exports = require("./utils.26f02633.js");
6
- var $3Vvow$macrostrathyper = require("@macrostrat/hyper");
7
- var $3Vvow$macrostratmapboxreact = require("@macrostrat/mapbox-react");
8
- var $3Vvow$macrostratmapboxutils = require("@macrostrat/mapbox-utils");
9
- var $3Vvow$classnames = require("classnames");
10
- var $3Vvow$mapboxgl = require("mapbox-gl");
11
- var $3Vvow$react = require("react");
12
- require("mapbox-gl/dist/mapbox-gl.css");
13
-
14
-
15
- function $parcel$interopDefault(a) {
16
- return a && a.__esModule ? a.default : a;
17
- }
18
-
19
- function $parcel$export(e, n, v, s) {
20
- Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
21
- }
22
-
23
- $parcel$export(module.exports, "MapView", () => $12b6032029db16d4$export$ab1e7a67d6ec5ad8);
24
- $parcel$export(module.exports, "MapTerrainManager", () => $12b6032029db16d4$export$cee395a8a2a00b29);
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
- const $12b6032029db16d4$var$h = (0, ($parcel$interopDefault($3Vvow$macrostrathyper))).styled((0, ($parcel$interopDefault($35f1bc0112883d51$exports))));
37
- function $12b6032029db16d4$var$defaultInitializeMap(container, args = {}) {
38
- const { mapPosition: mapPosition, ...rest } = args;
39
- console.log("Initializing map (default)", args);
40
- const map = new (0, ($parcel$interopDefault($3Vvow$mapboxgl))).Map({
41
- container: container,
42
- maxZoom: 18,
43
- //maxTileCacheSize: 0,
44
- logoPosition: "bottom-left",
45
- trackResize: true,
46
- antialias: true,
47
- optimizeForTerrain: true,
48
- ...rest
49
- });
50
- // set initial map position
51
- if (mapPosition != null) (0, $3Vvow$macrostratmapboxutils.setMapPosition)(map, mapPosition);
52
- //setMapPosition(map, mapPosition);
53
- return map;
54
- }
55
- const $12b6032029db16d4$var$defaultMapPosition = {
56
- camera: {
57
- lat: 34,
58
- lng: -120,
59
- altitude: 300000
60
- }
61
- };
62
- function $12b6032029db16d4$export$ab1e7a67d6ec5ad8(props) {
63
- let { terrainSourceID: terrainSourceID } = props;
64
- const { enableTerrain: enableTerrain = true, style: style, mapPosition: mapPosition = $12b6032029db16d4$var$defaultMapPosition, initializeMap: initializeMap = $12b6032029db16d4$var$defaultInitializeMap, children: children, mapboxToken: mapboxToken, accessToken: // Deprecated
65
- accessToken, infoMarkerPosition: infoMarkerPosition, transformRequest: transformRequest, projection: projection, onMapLoaded: onMapLoaded = null, onStyleLoaded: onStyleLoaded = null, onMapMoved: onMapMoved = null, ...rest } = props;
66
- if (enableTerrain) terrainSourceID ??= "mapbox-3d-dem";
67
- const _mapboxToken = mapboxToken ?? accessToken;
68
- if (_mapboxToken != null) (0, ($parcel$interopDefault($3Vvow$mapboxgl))).accessToken = _mapboxToken;
69
- const dispatch = (0, $3Vvow$macrostratmapboxreact.useMapDispatch)();
70
- let mapRef = (0, $3Vvow$macrostratmapboxreact.useMapRef)();
71
- const ref = (0, $3Vvow$react.useRef)();
72
- const parentRef = (0, $3Vvow$react.useRef)();
73
- (0, $3Vvow$react.useEffect)(()=>{
74
- if (style == null) return;
75
- let map = mapRef.current;
76
- if (map != null) {
77
- console.log("Setting style", style);
78
- map.setStyle(style);
79
- } else {
80
- console.log("Initializing map", style);
81
- const map = initializeMap(ref.current, {
82
- style: style,
83
- projection: projection,
84
- mapPosition: mapPosition,
85
- transformRequest: transformRequest,
86
- ...rest
87
- });
88
- dispatch({
89
- type: "set-map",
90
- payload: map
91
- });
92
- map.setPadding((0, $3490fc4f4bda12f7$exports.getMapPadding)(ref, parentRef), {
93
- animate: false
94
- });
95
- onMapLoaded?.(map);
96
- }
97
- const loadCallback = ()=>{
98
- onStyleLoaded?.(map);
99
- dispatch({
100
- type: "set-style-loaded",
101
- payload: true
102
- });
103
- };
104
- map = mapRef.current;
105
- if (map.isStyleLoaded()) // Catch a race condition where the style is loaded before the callback is set
106
- loadCallback();
107
- map.on("style.load", loadCallback);
108
- return ()=>{
109
- map.off("style.load", loadCallback);
110
- };
111
- }, [
112
- style
113
- ]);
114
- const _computedMapPosition = (0, $3Vvow$macrostratmapboxreact.useMapPosition)();
115
- const { mapUse3D: mapUse3D, mapIsRotated: mapIsRotated } = (0, $3Vvow$macrostratmapboxutils.mapViewInfo)(_computedMapPosition);
116
- // Get map projection
117
- const _projection = mapRef.current?.getProjection()?.name ?? "mercator";
118
- const className = (0, ($parcel$interopDefault($3Vvow$classnames)))({
119
- "is-rotated": mapIsRotated ?? false,
120
- "is-3d-available": mapUse3D ?? false
121
- }, `${_projection}-projection`);
122
- return $12b6032029db16d4$var$h("div.map-view-container.main-view", {
123
- ref: parentRef
124
- }, [
125
- $12b6032029db16d4$var$h("div.mapbox-map#map", {
126
- ref: ref,
127
- className: className
128
- }),
129
- $12b6032029db16d4$var$h((0, $2611a7b4364593e5$exports.MapLoadingReporter), {
130
- ignoredSources: [
131
- "elevationMarker",
132
- "crossSectionEndpoints"
133
- ]
134
- }),
135
- $12b6032029db16d4$var$h((0, $2611a7b4364593e5$exports.MapMovedReporter), {
136
- onMapMoved: onMapMoved
137
- }),
138
- $12b6032029db16d4$var$h((0, $2611a7b4364593e5$exports.MapResizeManager), {
139
- containerRef: ref
140
- }),
141
- $12b6032029db16d4$var$h((0, $2611a7b4364593e5$exports.MapPaddingManager), {
142
- containerRef: ref,
143
- parentRef: parentRef,
144
- infoMarkerPosition: infoMarkerPosition
145
- }),
146
- $12b6032029db16d4$var$h($12b6032029db16d4$export$cee395a8a2a00b29, {
147
- mapUse3D: mapUse3D,
148
- terrainSourceID: terrainSourceID
149
- }),
150
- children
151
- ]);
152
- }
153
- function $12b6032029db16d4$export$cee395a8a2a00b29({ mapUse3D: mapUse3D, terrainSourceID: terrainSourceID }) {
154
- const mapRef = (0, $3Vvow$macrostratmapboxreact.useMapRef)();
155
- (0, $3Vvow$react.useEffect)(()=>{
156
- const map = mapRef.current;
157
- if (map == null) return;
158
- (0, $ecfbeec2ae4211a4$exports.enable3DTerrain)(map, mapUse3D, terrainSourceID);
159
- }, [
160
- mapRef.current,
161
- mapUse3D
162
- ]);
163
- return null;
164
- }
165
-
166
-
167
- //# sourceMappingURL=map-view.93363b41.js.map
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["packages/map-interface/src/map-view/index.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport {\n useMapRef,\n useMapDispatch,\n useMapPosition,\n} from \"@macrostrat/mapbox-react\";\nimport {\n mapViewInfo,\n MapPosition,\n setMapPosition,\n} from \"@macrostrat/mapbox-utils\";\nimport classNames from \"classnames\";\nimport mapboxgl from \"mapbox-gl\";\nimport { useEffect, useRef, useCallback } from \"react\";\nimport styles from \"../main.module.sass\";\nimport { enable3DTerrain } from \"./terrain\";\nimport {\n MapLoadingReporter,\n MapMovedReporter,\n MapPaddingManager,\n MapResizeManager,\n} from \"../helpers\";\nimport \"mapbox-gl/dist/mapbox-gl.css\";\nimport { getMapPadding } from \"../utils\";\n\nconst h = hyper.styled(styles);\n\ntype MapboxCoreOptions = Omit<mapboxgl.MapboxOptions, \"container\">;\n\nexport interface MapViewProps extends MapboxCoreOptions {\n showLineSymbols?: boolean;\n children?: React.ReactNode;\n mapboxToken?: string;\n // Deprecated\n accessToken?: string;\n terrainSourceID?: string;\n enableTerrain?: boolean;\n infoMarkerPosition?: mapboxgl.LngLatLike;\n mapPosition?: MapPosition;\n initializeMap?: (\n container: HTMLElement,\n args: MapboxOptionsExt\n ) => mapboxgl.Map;\n onMapLoaded?: (map: mapboxgl.Map) => void;\n onStyleLoaded?: (map: mapboxgl.Map) => void;\n onMapMoved?: (mapPosition: MapPosition, map: mapboxgl.Map) => void;\n}\n\nexport interface MapboxOptionsExt extends MapboxCoreOptions {\n mapPosition?: MapPosition;\n}\n\nfunction defaultInitializeMap(container, args: MapboxOptionsExt = {}) {\n const { mapPosition, ...rest } = args;\n console.log(\"Initializing map (default)\", args);\n\n const map = new mapboxgl.Map({\n container,\n maxZoom: 18,\n //maxTileCacheSize: 0,\n logoPosition: \"bottom-left\",\n trackResize: true,\n antialias: true,\n optimizeForTerrain: true,\n ...rest,\n });\n\n // set initial map position\n if (mapPosition != null) {\n setMapPosition(map, mapPosition);\n }\n\n //setMapPosition(map, mapPosition);\n return map;\n}\n\nconst defaultMapPosition: MapPosition = {\n camera: {\n lat: 34,\n lng: -120,\n altitude: 300000,\n },\n};\n\nexport function MapView(props: MapViewProps) {\n let { terrainSourceID } = props;\n const {\n enableTerrain = true,\n style,\n mapPosition = defaultMapPosition,\n initializeMap = defaultInitializeMap,\n children,\n mapboxToken,\n // Deprecated\n accessToken,\n infoMarkerPosition,\n transformRequest,\n projection,\n onMapLoaded = null,\n onStyleLoaded = null,\n onMapMoved = null,\n ...rest\n } = props;\n if (enableTerrain) {\n terrainSourceID ??= \"mapbox-3d-dem\";\n }\n\n const _mapboxToken = mapboxToken ?? accessToken;\n\n if (_mapboxToken != null) {\n mapboxgl.accessToken = _mapboxToken;\n }\n\n const dispatch = useMapDispatch();\n let mapRef = useMapRef();\n const ref = useRef<HTMLDivElement>();\n const parentRef = useRef<HTMLDivElement>();\n\n useEffect(() => {\n if (style == null) return;\n let map = mapRef.current;\n if (map != null) {\n console.log(\"Setting style\", style);\n map.setStyle(style);\n } else {\n console.log(\"Initializing map\", style);\n const map = initializeMap(ref.current, {\n style,\n projection,\n mapPosition,\n transformRequest,\n ...rest,\n });\n dispatch({ type: \"set-map\", payload: map });\n map.setPadding(getMapPadding(ref, parentRef), { animate: false });\n onMapLoaded?.(map);\n }\n\n const loadCallback = () => {\n onStyleLoaded?.(map);\n dispatch({ type: \"set-style-loaded\", payload: true });\n };\n\n map = mapRef.current;\n if (map.isStyleLoaded()) {\n // Catch a race condition where the style is loaded before the callback is set\n loadCallback();\n }\n map.on(\"style.load\", loadCallback);\n return () => {\n map.off(\"style.load\", loadCallback);\n };\n }, [style]);\n\n const _computedMapPosition = useMapPosition();\n const { mapUse3D, mapIsRotated } = mapViewInfo(_computedMapPosition);\n\n // Get map projection\n const _projection = mapRef.current?.getProjection()?.name ?? \"mercator\";\n\n const className = classNames(\n {\n \"is-rotated\": mapIsRotated ?? false,\n \"is-3d-available\": mapUse3D ?? false,\n },\n `${_projection}-projection`\n );\n\n return h(\"div.map-view-container.main-view\", { ref: parentRef }, [\n h(\"div.mapbox-map#map\", { ref, className }),\n h(MapLoadingReporter, {\n ignoredSources: [\"elevationMarker\", \"crossSectionEndpoints\"],\n }),\n h(MapMovedReporter, { onMapMoved }),\n h(MapResizeManager, { containerRef: ref }),\n h(MapPaddingManager, { containerRef: ref, parentRef, infoMarkerPosition }),\n h(MapTerrainManager, { mapUse3D, terrainSourceID }),\n children,\n ]);\n}\n\nexport function MapTerrainManager({\n mapUse3D,\n terrainSourceID,\n}: {\n mapUse3D?: boolean;\n terrainSourceID?: string;\n}) {\n const mapRef = useMapRef();\n\n useEffect(() => {\n const map = mapRef.current;\n if (map == null) return;\n enable3DTerrain(map, mapUse3D, terrainSourceID);\n }, [mapRef.current, mapUse3D]);\n return null;\n}\n"],"names":[],"version":3,"file":"map-view.93363b41.js.map"}
@@ -1,59 +0,0 @@
1
-
2
- function $parcel$export(e, n, v, s) {
3
- Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
4
- }
5
-
6
- $parcel$export(module.exports, "enable3DTerrain", () => $ecfbeec2ae4211a4$export$b730542ee281c4b1);
7
- // We should merge this with code in @macrostrat/mapbox-react/src/terrain.ts:
8
- function $ecfbeec2ae4211a4$export$b730542ee281c4b1(map, shouldEnable, sourceID = null) {
9
- if (!map.style?._loaded) {
10
- map.once("style.load", ()=>{
11
- $ecfbeec2ae4211a4$export$b730542ee281c4b1(map, shouldEnable, sourceID);
12
- });
13
- return;
14
- }
15
- const currentTerrainSource = $ecfbeec2ae4211a4$var$getTerrainSourceID(map);
16
- let demSourceID = sourceID ?? currentTerrainSource ?? "mapbox-dem";
17
- console.log("Enabling 3D terrain with source", demSourceID);
18
- // Enable or disable terrain depending on our current desires...
19
- const currentTerrain = map.getTerrain();
20
- if (!shouldEnable) {
21
- if (currentTerrain != null) map.setTerrain(null);
22
- return;
23
- }
24
- if (currentTerrain != null) return;
25
- // Add a DEM source if one is not found already.
26
- if (map.getSource(demSourceID) == null) map.addSource(demSourceID, {
27
- type: "raster-dem",
28
- url: "mapbox://mapbox.mapbox-terrain-dem-v1",
29
- tileSize: 512,
30
- maxzoom: 14
31
- });
32
- // add a sky layer that will show when the map is highly pitched
33
- if (map.getLayer("sky") == null) map.addLayer({
34
- id: "sky",
35
- type: "sky",
36
- paint: {
37
- "sky-type": "atmosphere",
38
- "sky-atmosphere-sun": [
39
- 0.0,
40
- 0.0
41
- ],
42
- "sky-atmosphere-sun-intensity": 15
43
- }
44
- });
45
- map.setTerrain({
46
- source: demSourceID,
47
- exaggeration: 1
48
- });
49
- console.log(map.getTerrain());
50
- }
51
- function $ecfbeec2ae4211a4$var$getTerrainSourceID(map) {
52
- for (const [key, source] of Object.entries(map.getStyle().sources)){
53
- if (source.type == "raster-dem") return key;
54
- }
55
- return null;
56
- }
57
-
58
-
59
- //# sourceMappingURL=terrain.90f76b4e.js.map
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;AAAA,6EAA6E;AAEtE,SAAS,0CACd,GAAG,EACH,YAAqB,EACrB,WAA0B,IAAI;IAE9B,IAAI,CAAC,IAAI,KAAK,EAAE,SAAS;QACvB,IAAI,IAAI,CAAC,cAAc;YACrB,0CAAgB,KAAK,cAAc;QACrC;QACA;IACF;IAEA,MAAM,uBAAuB,yCAAmB;IAChD,IAAI,cAAc,YAAY,wBAAwB;IAEtD,QAAQ,GAAG,CAAC,mCAAmC;IAE/C,gEAAgE;IAChE,MAAM,iBAAiB,IAAI,UAAU;IAErC,IAAI,CAAC,cAAc;QACjB,IAAI,kBAAkB,MAAM,IAAI,UAAU,CAAC;QAC3C;IACF;IACA,IAAI,kBAAkB,MAAM;IAE5B,gDAAgD;IAChD,IAAI,IAAI,SAAS,CAAC,gBAAgB,MAChC,IAAI,SAAS,CAAC,aAAa;QACzB,MAAM;QACN,KAAK;QACL,UAAU;QACV,SAAS;IACX;IAGF,gEAAgE;IAChE,IAAI,IAAI,QAAQ,CAAC,UAAU,MACzB,IAAI,QAAQ,CAAC;QACX,IAAI;QACJ,MAAM;QACN,OAAO;YACL,YAAY;YACZ,sBAAsB;gBAAC;gBAAK;aAAI;YAChC,gCAAgC;QAClC;IACF;IAGF,IAAI,UAAU,CAAC;QAAE,QAAQ;QAAa,cAAc;IAAE;IACtD,QAAQ,GAAG,CAAC,IAAI,UAAU;AAC5B;AAEA,SAAS,yCAAmB,GAAG;IAC7B,KAAK,MAAM,CAAC,KAAK,OAAO,IAAI,OAAO,OAAO,CAAC,IAAI,QAAQ,GAAG,OAAO,EAAG;QAClE,IAAI,OAAO,IAAI,IAAI,cACjB,OAAO;IAEX;IACA,OAAO;AACT","sources":["packages/map-interface/src/map-view/terrain.ts"],"sourcesContent":["// We should merge this with code in @macrostrat/mapbox-react/src/terrain.ts:\n\nexport function enable3DTerrain(\n map,\n shouldEnable: boolean,\n sourceID: string | null = null\n) {\n if (!map.style?._loaded) {\n map.once(\"style.load\", () => {\n enable3DTerrain(map, shouldEnable, sourceID);\n });\n return;\n }\n\n const currentTerrainSource = getTerrainSourceID(map);\n let demSourceID = sourceID ?? currentTerrainSource ?? \"mapbox-dem\";\n\n console.log(\"Enabling 3D terrain with source\", demSourceID);\n\n // Enable or disable terrain depending on our current desires...\n const currentTerrain = map.getTerrain();\n\n if (!shouldEnable) {\n if (currentTerrain != null) map.setTerrain(null);\n return;\n }\n if (currentTerrain != null) return;\n\n // Add a DEM source if one is not found already.\n if (map.getSource(demSourceID) == null) {\n map.addSource(demSourceID, {\n type: \"raster-dem\",\n url: \"mapbox://mapbox.mapbox-terrain-dem-v1\",\n tileSize: 512,\n maxzoom: 14,\n });\n }\n\n // add a sky layer that will show when the map is highly pitched\n if (map.getLayer(\"sky\") == null) {\n map.addLayer({\n id: \"sky\",\n type: \"sky\",\n paint: {\n \"sky-type\": \"atmosphere\",\n \"sky-atmosphere-sun\": [0.0, 0.0],\n \"sky-atmosphere-sun-intensity\": 15,\n },\n });\n }\n\n map.setTerrain({ source: demSourceID, exaggeration: 1 });\n console.log(map.getTerrain());\n}\n\nfunction getTerrainSourceID(map) {\n for (const [key, source] of Object.entries(map.getStyle().sources)) {\n if (source.type == \"raster-dem\") {\n return key;\n }\n }\n return null;\n}\n"],"names":[],"version":3,"file":"terrain.90f76b4e.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;AAQA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,sEAAK;AAE5B,SAAS,0CAAsB,KAAK;IAClC,MAAM,YAAE,QAAQ,YAAE,QAAQ,YAAE,QAAQ,aAAE,SAAS,SAAE,KAAK,kBAAE,cAAc,EAAE,GACtE;IACF,MAAM,OAAO,WAAW,eAAe;IACvC,OAAO,wBACL,CAAA,GAAA,yCAAW,GACX;QACE,WAAW,CAAA,GAAA,iBAAS,EAAE,0BAA0B;QAChD,SAAS;eACT;QACA,WAAW;IACb,GACA;QAAC;QAAU,wBAAE,CAAA,GAAA,WAAG,GAAG;kBAAE;QAAK;KAAG;AAEjC;AAEA,SAAS,yCAAmB,KAAK;IAC/B,IAAI,SACF,KAAK,kBACL,iBAAiB,gBACjB,QAAQ,YACR,QAAQ,YACR,QAAQ,YACR,WAAW,KAAO,kBAClB,gBAAgB,iBAChB,SAAS,EACV,GAAG;IACJ,MAAM,CAAC,QAAQ,QAAQ,GAAG,CAAA,GAAA,eAAO,EAAE,YAAY;IAE/C,MAAM,YAAY;QAChB;QACA,QAAQ,CAAC;IACX;IAEA,OAAO,wBACL,4BACA;QACE,WAAW,CAAA,GAAA,iBAAS,EAAE,WAAW;YAC/B,UAAU;YACV,WAAW,CAAC;QACd;IACF,GACA;QACE,wBACE,2CACA;YACE,UAAU;YACV,UAAU;mBACV;4BACA;QACF,GACA,wBAAE,oCAAoC;YACpC,wBAAE,gCAAgC;YAClC;YACA;SACD;QAEH,wBAAE,CAAA,GAAA,eAAO,GAAG;oBAAE;QAAO,GAAG,wBAAE,0BAA0B,MAAM;KAC3D;AAEL;AAEO,SAAS,0CAAiB,KAAK;IACpC,IAAI,SAAE,KAAK,YAAE,QAAQ,aAAE,SAAS,iBAAE,gBAAgB,MAAM,GAAG;IAC3D,OAAO,wBAAE,0BAA0B;mBAAE;IAAU,GAAG;QAChD,wBAAE,qBAAqB,MAAM,iBAAiB,wBAAE,MAAM;QACtD,wBAAE,qBAAqB,MAAM;KAC9B;AACH;AAEA,SAAS,0CAAe,KAAK;IAC3B,OAAO,wBAAE,0CAAoB;QAC3B,GAAG,KAAK;QACR,WAAW;IACb;AACF;AAEA,SAAS,0CAAkB,KAAK;IAC9B,OAAO,wBAAE,0CAAoB;QAC3B,GAAG,KAAK;QACR,WAAW;QACX,gBAAgB;IAClB;AACF;AAEA,SAAS,0CAAuB,KAAK;IACnC,IAAI,SAAE,KAAK,YAAE,QAAQ,SAAE,KAAK,iBAAE,aAAa,aAAE,SAAS,EAAE,GAAG;IAC3D,MAAM,CAAC,QAAQ,UAAU,GAAG,CAAA,GAAA,eAAO,EAAE;IACrC,kBAAkB,wBAAE;QAAC,wBAAE,aAAa;QAAQ;KAAM;IAClD,OAAO,wBAAE,0BAA0B;mBAAE;IAAU,GAAG;QAChD,wBAAE,+BAA+B;YAC/B,wBAAE,iCAAiC;YACnC,wBAAE,iCAAiC;gBACjC,wBAAE,CAAA,GAAA,aAAK,GAAG;oBACR,OAAO;oBACP,SAAS;oBACT,QAAQ;oBACR,SAAS,IAAM,UAAU,CAAC;oBAC1B,MAAM;gBACR;aACD;SACF;QACD,wBACE,CAAA,GAAA,eAAO,GACP;oBAAE;QAAO,GACT,wBAAE,mCAAmC,MAAM;KAE9C;AACH;AAEA,SAAS,0CAAc,SAAE,KAAK,aAAE,SAAS,YAAE,QAAQ,EAAE;IACnD,OAAO,wBAAE,sBAAsB;mBAAE;IAAU,GAAG;QAC5C,wBAAE,qCAAqC;QACvC,wBAAE,mCAAmC,MAAM;KAC5C;AACH","sources":["packages/map-interface/src/expansion-panel/index.ts"],"sourcesContent":["import { useState } from \"react\";\nimport { Collapse, Icon } from \"@blueprintjs/core\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport classNames from \"classnames\";\nimport { Button } from \"@blueprintjs/core\";\nimport { PanelSubhead } from \"./headers\";\n\nconst h = hyper.styled(styles);\n\nfunction ExpansionPanelSummary(props) {\n const { expanded, children, onChange, className, title, titleComponent } =\n props;\n const icon = expanded ? \"chevron-up\" : \"chevron-down\";\n return h(\n PanelSubhead,\n {\n className: classNames(\"expansion-panel-header\", className),\n onClick: onChange,\n title,\n component: titleComponent,\n },\n [children, h(Icon, { icon })]\n );\n}\n\nfunction ExpansionPanelBase(props) {\n let {\n title,\n titleComponent = \"h3\",\n children,\n expanded,\n helpText,\n onChange = () => {},\n sideComponent = null,\n className,\n } = props;\n const [isOpen, setOpen] = useState(expanded || false);\n\n const onChange_ = () => {\n onChange();\n setOpen(!isOpen);\n };\n\n return h(\n \"div.expansion-panel-base\",\n {\n className: classNames(className, {\n expanded: isOpen,\n collapsed: !isOpen,\n }),\n },\n [\n h(\n ExpansionPanelSummary,\n {\n onChange: onChange_,\n expanded: isOpen,\n title,\n titleComponent,\n },\n h(\"div.expansion-summary-title-help\", [\n h(\"span.expansion-panel-subtext\", helpText),\n \" \",\n sideComponent,\n ])\n ),\n h(Collapse, { isOpen }, h(\"div.expansion-children\", null, children)),\n ]\n );\n}\n\nexport function InfoPanelSection(props) {\n let { title, children, className, headerElement = null } = props;\n return h(\"div.info-panel-section\", { className }, [\n h(\"div.panel-subhead\", null, headerElement ?? h(\"h3\", title)),\n h(\"div.panel-content\", null, children),\n ]);\n}\n\nfunction ExpansionPanel(props) {\n return h(ExpansionPanelBase, {\n ...props,\n className: \"expansion-panel\",\n });\n}\n\nfunction SubExpansionPanel(props) {\n return h(ExpansionPanelBase, {\n ...props,\n className: \"expansion-panel sub-expansion-panel\",\n titleComponent: \"h4\",\n });\n}\n\nfunction ExpandableDetailsPanel(props) {\n let { title, children, value, headerElement, className } = props;\n const [isOpen, setIsOpen] = useState(false);\n headerElement ??= h([h(\"div.title\", title), value]);\n return h(\"div.expandable-details\", { className }, [\n h(\"div.expandable-details-main\", [\n h(\"div.expandable-details-header\", headerElement),\n h(\"div.expandable-details-toggle\", [\n h(Button, {\n small: true,\n minimal: true,\n active: isOpen,\n onClick: () => setIsOpen(!isOpen),\n icon: \"more\",\n }),\n ]),\n ]),\n h(\n Collapse,\n { isOpen },\n h(\"div.expandable-details-children\", null, children)\n ),\n ]);\n}\n\nfunction ExpansionBody({ title, className, children }) {\n return h(\"div.expansion-body\", { className }, [\n h(\"div.expansion-panel-detail-header\", title),\n h(\"div.expansion-panel-detail-body\", null, children),\n ]);\n}\n\nexport {\n ExpansionPanel,\n ExpansionPanelSummary,\n ExpandableDetailsPanel,\n SubExpansionPanel,\n ExpansionBody,\n PanelSubhead,\n};\n"],"names":[],"version":3,"file":"expansion-panel.feff0e62.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;AAWA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,sEAAK;AAE5B,SAAS,qCAAe,YAAE,QAAQ,UAAE,MAAM,gBAAE,eAAe,OAAO;IAChE,MAAM,aAAa,CAAA,GAAA,oBAAY,EAAE;IAEjC,MAAM,oBAAoB,CAAA,GAAA,iBAAS,EAAE,eAAe;IAEpD,OAAO,wBAAE,yBAAyB;QAChC,wBAAE,CAAA,GAAA,0BAAkB,GAAG;YAAE,UAAU;oBAAU;wBAAQ;QAAW,GAAG,EAAE;QACrE,wBAAE,EAAE,CAAC,qBAAqB,YAAY,MAAM,sCAAgB;YAC1D,UAAU;QACZ;KACD;AACH;AAEA,SAAS,qCAAe,YAAE,QAAQ,YAAE,QAAQ,WAAE,OAAO,EAAE,GAAG,MAAM;IAC9D,MAAM,UAAU,CAAA,GAAA,iBAAS;IAEzB,IAAI,UAAU,CAAC,WAAW,CAAC;IAC3B,IAAI,YAAY,MACd,WAAW,CAAC,IAAI,EAAE,UAAU;IAE9B,WAAW;IAEX,OAAO,wBACL,CAAA,GAAA,aAAK,GACL;QACE,WAAW;QACX,WAAW,wBAAE,CAAA,GAAA,WAAG,GAAG;YAAE,MAAM;YAAQ,MAAM;QAAG;QAC5C,SAAS;QACT,OAAO;QACP;YACE,UAAU,SAAS,CAAC,SAAS,CAAC,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CACtD;gBACE,SAAS,KAAK;6BACZ;oBACA,QAAQ;oBACR,MAAM;oBACN,SAAS;gBACX;gBACA;YACF,GACA;gBACE,SAAS,KAAK;oBACZ,SAAS;oBACT,QAAQ;oBACR,MAAM;oBACN,SAAS;gBACX;YACF;QAEJ;QACA,GAAG,IAAI;IACT,GACA,YAAY;AAEhB;AAWO,SAAS,0CAAiB,KAA4B;IAC3D,MAAM,WACJ,OAAO,YACP,QAAQ,UACR,MAAM,QACN,OAAO,cACP,SAAS,0BACT,sBAAsB,YACtB,QAAQ,EACT,GAAG;IAEJ,IAAI,aAAa;IACjB,IAAI,UAAU,QAAQ,YAAY,MAChC,aAAa,wBAAE,sCAAgB;kBAC7B;gBACA;QACA,cAAc;IAChB;IAGF,OAAO,wBAAE,gCAAgC;QACvC;QACA;QACA,wBAAE;QACF,wBAAE,EAAE,CAAC,YAAY,MAAM,CAAA,GAAA,yCAAW,GAAG;sBACnC;kBACA;YACA,WAAW;QACb;QACA,wBAAE,EAAE,CAAC,aAAa,MAAM,CAAA,GAAA,yCAAQ,GAAG;uBACjC;YACA,WAAW;QACb;QACA,wBAAE,EAAE,CAAC,WAAW,MAAM,CAAA,GAAA,aAAK,GAAG;YAC5B,SAAS;YACT,MAAM;YACN,SAAS;QACX;KACD;AACH","sources":["packages/map-interface/src/location-panel/header.ts"],"sourcesContent":["import { Icon, Button } from \"@blueprintjs/core\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport { useToaster } from \"@macrostrat/ui-components\";\nimport { LngLatCoords, Elevation } from \"../location-info\";\nimport {\n LocationFocusButton,\n useFocusState,\n isCentered,\n} from \"@macrostrat/mapbox-react\";\n\nconst h = hyper.styled(styles);\n\nfunction PositionButton({ position, bounds, showCopyLink = false }) {\n const focusState = useFocusState(position);\n\n const copyLinkIsVisible = isCentered(focusState) && showCopyLink;\n\n return h(\"div.position-controls\", [\n h(LocationFocusButton, { location: position, bounds, focusState }, []),\n h.if(copyLinkIsVisible && position != null)(CopyLinkButton, {\n itemName: \"position\",\n }),\n ]);\n}\n\nfunction CopyLinkButton({ itemName, children, onClick, ...rest }) {\n const toaster = useToaster();\n\n let message = `Copied link`;\n if (itemName != null) {\n message += ` to ${itemName}`;\n }\n message += \"!\";\n\n return h(\n Button,\n {\n className: \"copy-link-button\",\n rightIcon: h(Icon, { icon: \"link\", size: 12 }),\n minimal: true,\n small: true,\n onClick() {\n navigator.clipboard.writeText(window.location.href).then(\n () => {\n toaster?.show({\n message,\n intent: \"success\",\n icon: \"clipboard\",\n timeout: 1000,\n });\n onClick?.();\n },\n () => {\n toaster?.show({\n message: \"Failed to copy link\",\n intent: \"danger\",\n icon: \"error\",\n timeout: 1000,\n });\n }\n );\n },\n ...rest,\n },\n children ?? \"Copy link\"\n );\n}\n\nexport interface InfoDrawerHeaderProps {\n onClose?: () => void;\n position?: mapboxgl.LngLat;\n zoom?: number;\n elevation?: number;\n showCopyPositionButton?: boolean;\n bounds?: mapboxgl.LngLatBounds;\n}\n\nexport function InfoDrawerHeader(props: InfoDrawerHeaderProps) {\n const {\n onClose,\n position,\n bounds,\n zoom = 7,\n elevation,\n showCopyPositionButton,\n children,\n } = props;\n\n let leftButton = null;\n if (bounds != null || position != null) {\n leftButton = h(PositionButton, {\n position,\n bounds,\n showCopyLink: showCopyPositionButton,\n });\n }\n\n return h(\"header.location-panel-header\", [\n leftButton,\n children,\n h(\"div.spacer\"),\n h.if(position != null)(LngLatCoords, {\n position,\n zoom,\n className: \"infodrawer-header-item\",\n }),\n h.if(elevation != null)(Elevation, {\n elevation,\n className: \"infodrawer-header-item\",\n }),\n h.if(onClose != null)(Button, {\n minimal: true,\n icon: \"cross\",\n onClick: onClose,\n }),\n ]);\n}\n"],"names":[],"version":3,"file":"header.0f535ab1.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;AAOA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,sEAAK;AAErB,SAAS,0CAAoB,KAAK;IACvC,MAAM,YAAY,CAAA,GAAA,iBAAS,EAAE,cAAc,MAAM,SAAS;IAC1D,OAAO,wBAAE,CAAA,GAAA,yCAAQ,GAAG;QAAE,GAAG,KAAK;mBAAE;IAAU;AAC5C;AASO,SAAS,0CAAe,KAA0B;IACvD,MAAM,aACJ,SAAS,iBACT,gBAAgB,aAChB,KAAK,WACL,OAAO,YACP,QAAQ,EACR,GAAG,MACJ,GAAG;IACJ,MAAM,SACJ,iBACA,wBAAE,CAAA,GAAA,yCAAe,GAAG;iBAAE;QAAS,GAAG,IAAI;IAAC,GAAG;QACxC,SAAS,OAAO,OAAO,wBAAE,MAAM;YAAC;SAAM;KACvC;IACH,OAAO,wBAAE,2CAAqB;mBAAE;IAAU,GAAG;QAC3C;QACA,wBACE,uBACA,wBAAE,2BAA2B,wBAAE,CAAA,GAAA,oBAAY,GAAG,MAAM;KAEvD;AACH;AAEO,MAAM,4CAAe;AAErB,SAAS,0CAAc,KAAK;IACjC,MAAM,YAAE,QAAQ,aAAE,SAAS,WAAE,UAAU,OAAO,GAAG,MAAM,GAAG;IAC1D,MAAM,MAAM,CAAA,GAAA,iBAAS,EAAE,kBAAkB,WAAW;iBAAE;IAAQ;IAC9D,OAAO,wBAAE,2CAAgB;QAAE,WAAW;QAAK,GAAG,IAAI;IAAC,GAAG;AACxD","sources":["packages/map-interface/src/location-panel/index.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport { InfoDrawerHeader, InfoDrawerHeaderProps } from \"./header\";\nimport classNames from \"classnames\";\nimport styles from \"./main.module.sass\";\nimport { ErrorBoundary } from \"@macrostrat/ui-components\";\nimport { PanelCard } from \"../container\";\n\nconst h = hyper.styled(styles);\n\nexport function InfoDrawerContainer(props) {\n const className = classNames(\"infodrawer\", props.className);\n return h(PanelCard, { ...props, className });\n}\n\ninterface BaseInfoDrawerProps extends InfoDrawerHeaderProps {\n className?: string;\n title?: string;\n headerElement?: JSX.Element;\n children?: React.ReactNode;\n}\n\nexport function BaseInfoDrawer(props: BaseInfoDrawerProps) {\n const {\n className,\n headerElement = null,\n title,\n onClose,\n children,\n ...rest\n } = props;\n const header =\n headerElement ??\n h(InfoDrawerHeader, { onClose, ...rest }, [\n title == null ? null : h(\"h3\", [title]),\n ]);\n return h(InfoDrawerContainer, { className }, [\n header,\n h(\n \"div.infodrawer-body\",\n h(\"div.infodrawer-contents\", h(ErrorBoundary, null, children))\n ),\n ]);\n}\n\nexport const DetailsPanel = BaseInfoDrawer;\n\nexport function LocationPanel(props) {\n const { children, className, loading = false, ...rest } = props;\n const cls = classNames(\"location-panel\", className, { loading });\n return h(BaseInfoDrawer, { className: cls, ...rest }, children);\n}\n"],"names":[],"version":3,"file":"location-panel.0b1f4ed2.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;;;;;;;;AAAA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AATA,4CAAqC,CAAC,uBAAuB,CAAC;AAC9D,4CAA+B,CAAC,iBAAiB,CAAC;AAClD,4CAAoC,CAAC,sBAAsB,CAAC;AAC5D,4CAAwC,CAAC,0BAA0B,CAAC;AACpE,4CAA2C,CAAC,6BAA6B,CAAC;AAC1E,4CAA8B,CAAC,gBAAgB,CAAC;AAChD,4CAA4B,CAAC,cAAc,CAAC;AAC5C,4CAA0C,CAAC,4BAA4B,CAAC;AACxE,2CAAsC,CAAC,wBAAwB,CAAC;AAChE,4CAA2B,CAAC,aAAa,CAAC","sources":["packages/map-interface/src/location-panel/main.module.sass"],"sourcesContent":[".copy-link-button:global(.bp5-minimal.bp5-button)\n color: var(--text-subtle-color)\n\n svg\n fill: var(--text-subtle-color)\n\n.location-panel-header\n padding: 5px\n display: flex\n flex-direction: row\n align-items: center\n gap: 1em\n min-height: 40px\n border-bottom: 1px solid var(--panel-rule-color)\n\n .spacer\n flex-grow: 1\n\n .left-icon\n padding: 7px\n\n .position-controls :global(.bp5-button)\n font-size: 12px !important\n\n // Text elements should\n h1, h2, h3, h4, h5, h6, p\n margin: 0\n &:first-child\n margin-left: 10px\n\n.infodrawer-header-item\n font-size: 12px\n\n :global(.secondary)\n font-size: 0.9em\n color: var(--text-subtle-color)\n\n.infodrawer\n pointer-events: all\n max-height: 100%\n max-width: 100%\n height: fit-content\n display: flex\n flex-direction: column\n overflow: hidden\n background-color: var(--panel-background-color)\n\n &:global(.bp5-card)\n padding: 0\n background-color: var(--panel-background-color)\n\n\n &.loading\n .infodrawer-body\n overflow-y: hidden\n min-height: 70px\n\n\n.infodrawer-contents\n padding: 0 1em 1em\n\n.infodrawer-body\n flex-shrink: 1\n min-height: 0\n transition: min-height 0.5s ease\n overflow-y: scroll\n position: relative\n\n// TODO: remove this when we have a better way to handle card media queries\n@media screen and (max-width: 768px)\n .infodrawer\n border-radius: var(--panel-border-radius, 0px)\n"],"names":[],"version":3,"file":"main.module.67a908da.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AAjBA,4CAAkC;AAClC,4CAA0B;AAC1B,4CAAuC;AACvC,4CAAoC;AACpC,4CAAwC;AACxC,4CAA2C;AAC3C,4CAAiD;AACjD,4CAAuC;AACvC,4CAA4C;AAC5C,4CAA4C;AAC5C,4CAA8C;AAC9C,4CAAgD;AAChD,4CAA8C;AAC9C,4CAAuC;AACvC,4CAAoC;AACpC,4CAAmC;AACnC,4CAAkD;AAClD,4CAAgD","sources":["packages/map-interface/src/expansion-panel/main.module.sass"],"sourcesContent":["\n.panel-subhead\n padding: 0.2em var(--box-horizontal-padding)\n border-top: 1px solid var(--panel-rule-color)\n border-bottom: 1px solid var(--panel-rule-color)\n background-color: var(--accent-color)\n display: flex\n flex-direction: row\n align-items: center\n z-index: 1\n gap: var(--box-horizontal-padding)\n top: -1px\n position: sticky\n h1, h2, h3, h4\n font-family: Montserrat,sans-serif\n font-weight: 700\n margin: 0.2em 0\n h4\n font-weight: 600\n .title\n flex-grow: 1\n\n// :global(.bp5-dark) .panel-subhead\n// margin 0 1px\n\n.info-panel-section\n &>.panel-subhead\n margin: -1px calc(var(--panel-padding-h) * -1) 0\n\n.expansion-panel\n padding: 0\n flex-wrap: wrap\n margin-top: -1px\n // &.collapsed\n // .expansion-panel-header\n // border-bottom-width: 0;\n\n.sub-expansion-panel\n margin: -1px calc(var(--panel-padding-h) * -0.5) 0\n overflow: hidden\n &:first-child\n .expansion-panel-header\n border-top-width: 0\n .panel-subhead\n border-top: none\n border-bottom: none\n\n .expansion-panel-header\n background-color: var(--accent-secondary-color)\n cursor: pointer\n &:hover\n background-color: var(--accent-secondary-hover-color)\n h2, h3, h4\n font-weight: 500\n border-bottom: 1px solid var(--tertiary-border-color)\n border-top: 1px solid var(--tertiary-border-color)\n margin-top: -1px\n padding: 5px 1em 5px\n align-items: center\n\n.expansion-summary-title-help\n margin-left: 5px\n :global(.bp5-icon)\n margin-left: 5px\n\n.expansion-panel-header\n cursor: pointer\n &:hover\n background-color: var(--accent-hover-color)\n :global(.bp5-icon)\n transform: translate(0,3px)\n\n.expansion-children\n padding: 5px 1em 10px\n .expansion-panel\n margin-left: -1em\n margin-right: -1em\n &:first-child\n margin-top: -5px\n\n.expansion-panel-subtext\n font-size: 85%\n font-weight: 400\n\n:global\n .expansion-panel-root\n padding-left: 15px !important\n\n .expansion-panel-detail\n display: block !important\n padding: 0 !important\n\n .expansion-panel-detail-sub\n display: block !important\n\n// New expandable panel for details\n.expandable-details-main\n display: flex\n flex-direction: row\n align-items: center\n justify-content: space-between\n margin: 3px 0\n\n.expandable-details-header\n display: inline-flex\n flex-direction: row\n align-items: baseline\n flex-grow: 1\n\n.expandable-details-children\n position: relative\n\n.expandable-details-toggle\n :global(.bp5-button)\n font-size: 10px\n\n.expandable-details\n &.macrostrat-unit\n .title:after\n content: none\n .title\n margin-right: 1em\n &:after\n content: \":\"\n\n.expansion-body\n display: inline-block\n //flex-direction row\n align-items: baseline\n background-color: var(--tertiary-background)\n padding: 2px 6px\n border-radius: 4px\n width: 100%\n box-shadow: 0px 1px 2px 1px rgba(0,0,0,0.2)\n margin-bottom: 6px\n\n.expansion-panel-detail-header\n font-size: 90%\n font-style: italic\n margin-right: 1em\n display: inline\n color: var(--secondary-color)\n &:after\n content: \":\"\n\n.expansion-panel-detail-body\n display: inline\n"],"names":[],"version":3,"file":"main.module.89579666.js.map"}
@@ -1,161 +0,0 @@
1
- import $44I7C$mainmodulef70e002bjs from "./main.module.f70e002b.js";
2
- import "../cjs/main.module.f085a193.css";
3
- import {enable3DTerrain as $286fbb15f2139dc1$export$b730542ee281c4b1} from "./terrain.f65cf7c5.js";
4
- import {MapLoadingReporter as $4bc3dd5f0732eed3$export$e57f9eaa51773f82, MapMovedReporter as $4bc3dd5f0732eed3$export$f6eeee399afc4e9a, MapResizeManager as $4bc3dd5f0732eed3$export$31b2e088aff2dc5d, MapPaddingManager as $4bc3dd5f0732eed3$export$2ab96428dea558d6} from "./helpers.fb1d7227.js";
5
- import {getMapPadding as $82fe09613877ffc2$export$bb78f9f01775eef1} from "./utils.d40349f0.js";
6
- import $44I7C$macrostrathyper from "@macrostrat/hyper";
7
- import {useMapDispatch as $44I7C$useMapDispatch, useMapRef as $44I7C$useMapRef, useMapPosition as $44I7C$useMapPosition} from "@macrostrat/mapbox-react";
8
- import {setMapPosition as $44I7C$setMapPosition, mapViewInfo as $44I7C$mapViewInfo} from "@macrostrat/mapbox-utils";
9
- import $44I7C$classnames from "classnames";
10
- import $44I7C$mapboxgl from "mapbox-gl";
11
- import {useRef as $44I7C$useRef, useEffect as $44I7C$useEffect} from "react";
12
- import "mapbox-gl/dist/mapbox-gl.css";
13
-
14
-
15
- function $parcel$interopDefault(a) {
16
- return a && a.__esModule ? a.default : a;
17
- }
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
- const $9e150e311a3261e9$var$h = (0, $44I7C$macrostrathyper).styled((0, ($parcel$interopDefault($44I7C$mainmodulef70e002bjs))));
30
- function $9e150e311a3261e9$var$defaultInitializeMap(container, args = {}) {
31
- const { mapPosition: mapPosition, ...rest } = args;
32
- console.log("Initializing map (default)", args);
33
- const map = new (0, $44I7C$mapboxgl).Map({
34
- container: container,
35
- maxZoom: 18,
36
- //maxTileCacheSize: 0,
37
- logoPosition: "bottom-left",
38
- trackResize: true,
39
- antialias: true,
40
- optimizeForTerrain: true,
41
- ...rest
42
- });
43
- // set initial map position
44
- if (mapPosition != null) (0, $44I7C$setMapPosition)(map, mapPosition);
45
- //setMapPosition(map, mapPosition);
46
- return map;
47
- }
48
- const $9e150e311a3261e9$var$defaultMapPosition = {
49
- camera: {
50
- lat: 34,
51
- lng: -120,
52
- altitude: 300000
53
- }
54
- };
55
- function $9e150e311a3261e9$export$ab1e7a67d6ec5ad8(props) {
56
- let { terrainSourceID: terrainSourceID } = props;
57
- const { enableTerrain: enableTerrain = true, style: style, mapPosition: mapPosition = $9e150e311a3261e9$var$defaultMapPosition, initializeMap: initializeMap = $9e150e311a3261e9$var$defaultInitializeMap, children: children, mapboxToken: mapboxToken, accessToken: // Deprecated
58
- accessToken, infoMarkerPosition: infoMarkerPosition, transformRequest: transformRequest, projection: projection, onMapLoaded: onMapLoaded = null, onStyleLoaded: onStyleLoaded = null, onMapMoved: onMapMoved = null, ...rest } = props;
59
- if (enableTerrain) terrainSourceID ??= "mapbox-3d-dem";
60
- const _mapboxToken = mapboxToken ?? accessToken;
61
- if (_mapboxToken != null) (0, $44I7C$mapboxgl).accessToken = _mapboxToken;
62
- const dispatch = (0, $44I7C$useMapDispatch)();
63
- let mapRef = (0, $44I7C$useMapRef)();
64
- const ref = (0, $44I7C$useRef)();
65
- const parentRef = (0, $44I7C$useRef)();
66
- (0, $44I7C$useEffect)(()=>{
67
- if (style == null) return;
68
- let map = mapRef.current;
69
- if (map != null) {
70
- console.log("Setting style", style);
71
- map.setStyle(style);
72
- } else {
73
- console.log("Initializing map", style);
74
- const map = initializeMap(ref.current, {
75
- style: style,
76
- projection: projection,
77
- mapPosition: mapPosition,
78
- transformRequest: transformRequest,
79
- ...rest
80
- });
81
- dispatch({
82
- type: "set-map",
83
- payload: map
84
- });
85
- map.setPadding((0, $82fe09613877ffc2$export$bb78f9f01775eef1)(ref, parentRef), {
86
- animate: false
87
- });
88
- onMapLoaded?.(map);
89
- }
90
- const loadCallback = ()=>{
91
- onStyleLoaded?.(map);
92
- dispatch({
93
- type: "set-style-loaded",
94
- payload: true
95
- });
96
- };
97
- map = mapRef.current;
98
- if (map.isStyleLoaded()) // Catch a race condition where the style is loaded before the callback is set
99
- loadCallback();
100
- map.on("style.load", loadCallback);
101
- return ()=>{
102
- map.off("style.load", loadCallback);
103
- };
104
- }, [
105
- style
106
- ]);
107
- const _computedMapPosition = (0, $44I7C$useMapPosition)();
108
- const { mapUse3D: mapUse3D, mapIsRotated: mapIsRotated } = (0, $44I7C$mapViewInfo)(_computedMapPosition);
109
- // Get map projection
110
- const _projection = mapRef.current?.getProjection()?.name ?? "mercator";
111
- const className = (0, $44I7C$classnames)({
112
- "is-rotated": mapIsRotated ?? false,
113
- "is-3d-available": mapUse3D ?? false
114
- }, `${_projection}-projection`);
115
- return $9e150e311a3261e9$var$h("div.map-view-container.main-view", {
116
- ref: parentRef
117
- }, [
118
- $9e150e311a3261e9$var$h("div.mapbox-map#map", {
119
- ref: ref,
120
- className: className
121
- }),
122
- $9e150e311a3261e9$var$h((0, $4bc3dd5f0732eed3$export$e57f9eaa51773f82), {
123
- ignoredSources: [
124
- "elevationMarker",
125
- "crossSectionEndpoints"
126
- ]
127
- }),
128
- $9e150e311a3261e9$var$h((0, $4bc3dd5f0732eed3$export$f6eeee399afc4e9a), {
129
- onMapMoved: onMapMoved
130
- }),
131
- $9e150e311a3261e9$var$h((0, $4bc3dd5f0732eed3$export$31b2e088aff2dc5d), {
132
- containerRef: ref
133
- }),
134
- $9e150e311a3261e9$var$h((0, $4bc3dd5f0732eed3$export$2ab96428dea558d6), {
135
- containerRef: ref,
136
- parentRef: parentRef,
137
- infoMarkerPosition: infoMarkerPosition
138
- }),
139
- $9e150e311a3261e9$var$h($9e150e311a3261e9$export$cee395a8a2a00b29, {
140
- mapUse3D: mapUse3D,
141
- terrainSourceID: terrainSourceID
142
- }),
143
- children
144
- ]);
145
- }
146
- function $9e150e311a3261e9$export$cee395a8a2a00b29({ mapUse3D: mapUse3D, terrainSourceID: terrainSourceID }) {
147
- const mapRef = (0, $44I7C$useMapRef)();
148
- (0, $44I7C$useEffect)(()=>{
149
- const map = mapRef.current;
150
- if (map == null) return;
151
- (0, $286fbb15f2139dc1$export$b730542ee281c4b1)(map, mapUse3D, terrainSourceID);
152
- }, [
153
- mapRef.current,
154
- mapUse3D
155
- ]);
156
- return null;
157
- }
158
-
159
-
160
- export {$9e150e311a3261e9$export$ab1e7a67d6ec5ad8 as MapView, $9e150e311a3261e9$export$cee395a8a2a00b29 as MapTerrainManager};
161
- //# sourceMappingURL=map-view.a3fe6257.js.map
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["packages/map-interface/src/map-view/index.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport {\n useMapRef,\n useMapDispatch,\n useMapPosition,\n} from \"@macrostrat/mapbox-react\";\nimport {\n mapViewInfo,\n MapPosition,\n setMapPosition,\n} from \"@macrostrat/mapbox-utils\";\nimport classNames from \"classnames\";\nimport mapboxgl from \"mapbox-gl\";\nimport { useEffect, useRef, useCallback } from \"react\";\nimport styles from \"../main.module.sass\";\nimport { enable3DTerrain } from \"./terrain\";\nimport {\n MapLoadingReporter,\n MapMovedReporter,\n MapPaddingManager,\n MapResizeManager,\n} from \"../helpers\";\nimport \"mapbox-gl/dist/mapbox-gl.css\";\nimport { getMapPadding } from \"../utils\";\n\nconst h = hyper.styled(styles);\n\ntype MapboxCoreOptions = Omit<mapboxgl.MapboxOptions, \"container\">;\n\nexport interface MapViewProps extends MapboxCoreOptions {\n showLineSymbols?: boolean;\n children?: React.ReactNode;\n mapboxToken?: string;\n // Deprecated\n accessToken?: string;\n terrainSourceID?: string;\n enableTerrain?: boolean;\n infoMarkerPosition?: mapboxgl.LngLatLike;\n mapPosition?: MapPosition;\n initializeMap?: (\n container: HTMLElement,\n args: MapboxOptionsExt\n ) => mapboxgl.Map;\n onMapLoaded?: (map: mapboxgl.Map) => void;\n onStyleLoaded?: (map: mapboxgl.Map) => void;\n onMapMoved?: (mapPosition: MapPosition, map: mapboxgl.Map) => void;\n}\n\nexport interface MapboxOptionsExt extends MapboxCoreOptions {\n mapPosition?: MapPosition;\n}\n\nfunction defaultInitializeMap(container, args: MapboxOptionsExt = {}) {\n const { mapPosition, ...rest } = args;\n console.log(\"Initializing map (default)\", args);\n\n const map = new mapboxgl.Map({\n container,\n maxZoom: 18,\n //maxTileCacheSize: 0,\n logoPosition: \"bottom-left\",\n trackResize: true,\n antialias: true,\n optimizeForTerrain: true,\n ...rest,\n });\n\n // set initial map position\n if (mapPosition != null) {\n setMapPosition(map, mapPosition);\n }\n\n //setMapPosition(map, mapPosition);\n return map;\n}\n\nconst defaultMapPosition: MapPosition = {\n camera: {\n lat: 34,\n lng: -120,\n altitude: 300000,\n },\n};\n\nexport function MapView(props: MapViewProps) {\n let { terrainSourceID } = props;\n const {\n enableTerrain = true,\n style,\n mapPosition = defaultMapPosition,\n initializeMap = defaultInitializeMap,\n children,\n mapboxToken,\n // Deprecated\n accessToken,\n infoMarkerPosition,\n transformRequest,\n projection,\n onMapLoaded = null,\n onStyleLoaded = null,\n onMapMoved = null,\n ...rest\n } = props;\n if (enableTerrain) {\n terrainSourceID ??= \"mapbox-3d-dem\";\n }\n\n const _mapboxToken = mapboxToken ?? accessToken;\n\n if (_mapboxToken != null) {\n mapboxgl.accessToken = _mapboxToken;\n }\n\n const dispatch = useMapDispatch();\n let mapRef = useMapRef();\n const ref = useRef<HTMLDivElement>();\n const parentRef = useRef<HTMLDivElement>();\n\n useEffect(() => {\n if (style == null) return;\n let map = mapRef.current;\n if (map != null) {\n console.log(\"Setting style\", style);\n map.setStyle(style);\n } else {\n console.log(\"Initializing map\", style);\n const map = initializeMap(ref.current, {\n style,\n projection,\n mapPosition,\n transformRequest,\n ...rest,\n });\n dispatch({ type: \"set-map\", payload: map });\n map.setPadding(getMapPadding(ref, parentRef), { animate: false });\n onMapLoaded?.(map);\n }\n\n const loadCallback = () => {\n onStyleLoaded?.(map);\n dispatch({ type: \"set-style-loaded\", payload: true });\n };\n\n map = mapRef.current;\n if (map.isStyleLoaded()) {\n // Catch a race condition where the style is loaded before the callback is set\n loadCallback();\n }\n map.on(\"style.load\", loadCallback);\n return () => {\n map.off(\"style.load\", loadCallback);\n };\n }, [style]);\n\n const _computedMapPosition = useMapPosition();\n const { mapUse3D, mapIsRotated } = mapViewInfo(_computedMapPosition);\n\n // Get map projection\n const _projection = mapRef.current?.getProjection()?.name ?? \"mercator\";\n\n const className = classNames(\n {\n \"is-rotated\": mapIsRotated ?? false,\n \"is-3d-available\": mapUse3D ?? false,\n },\n `${_projection}-projection`\n );\n\n return h(\"div.map-view-container.main-view\", { ref: parentRef }, [\n h(\"div.mapbox-map#map\", { ref, className }),\n h(MapLoadingReporter, {\n ignoredSources: [\"elevationMarker\", \"crossSectionEndpoints\"],\n }),\n h(MapMovedReporter, { onMapMoved }),\n h(MapResizeManager, { containerRef: ref }),\n h(MapPaddingManager, { containerRef: ref, parentRef, infoMarkerPosition }),\n h(MapTerrainManager, { mapUse3D, terrainSourceID }),\n children,\n ]);\n}\n\nexport function MapTerrainManager({\n mapUse3D,\n terrainSourceID,\n}: {\n mapUse3D?: boolean;\n terrainSourceID?: string;\n}) {\n const mapRef = useMapRef();\n\n useEffect(() => {\n const map = mapRef.current;\n if (map == null) return;\n enable3DTerrain(map, mapUse3D, terrainSourceID);\n }, [mapRef.current, mapUse3D]);\n return null;\n}\n"],"names":[],"version":3,"file":"map-view.a3fe6257.js.map"}
@@ -1,54 +0,0 @@
1
- // We should merge this with code in @macrostrat/mapbox-react/src/terrain.ts:
2
- function $286fbb15f2139dc1$export$b730542ee281c4b1(map, shouldEnable, sourceID = null) {
3
- if (!map.style?._loaded) {
4
- map.once("style.load", ()=>{
5
- $286fbb15f2139dc1$export$b730542ee281c4b1(map, shouldEnable, sourceID);
6
- });
7
- return;
8
- }
9
- const currentTerrainSource = $286fbb15f2139dc1$var$getTerrainSourceID(map);
10
- let demSourceID = sourceID ?? currentTerrainSource ?? "mapbox-dem";
11
- console.log("Enabling 3D terrain with source", demSourceID);
12
- // Enable or disable terrain depending on our current desires...
13
- const currentTerrain = map.getTerrain();
14
- if (!shouldEnable) {
15
- if (currentTerrain != null) map.setTerrain(null);
16
- return;
17
- }
18
- if (currentTerrain != null) return;
19
- // Add a DEM source if one is not found already.
20
- if (map.getSource(demSourceID) == null) map.addSource(demSourceID, {
21
- type: "raster-dem",
22
- url: "mapbox://mapbox.mapbox-terrain-dem-v1",
23
- tileSize: 512,
24
- maxzoom: 14
25
- });
26
- // add a sky layer that will show when the map is highly pitched
27
- if (map.getLayer("sky") == null) map.addLayer({
28
- id: "sky",
29
- type: "sky",
30
- paint: {
31
- "sky-type": "atmosphere",
32
- "sky-atmosphere-sun": [
33
- 0.0,
34
- 0.0
35
- ],
36
- "sky-atmosphere-sun-intensity": 15
37
- }
38
- });
39
- map.setTerrain({
40
- source: demSourceID,
41
- exaggeration: 1
42
- });
43
- console.log(map.getTerrain());
44
- }
45
- function $286fbb15f2139dc1$var$getTerrainSourceID(map) {
46
- for (const [key, source] of Object.entries(map.getStyle().sources)){
47
- if (source.type == "raster-dem") return key;
48
- }
49
- return null;
50
- }
51
-
52
-
53
- export {$286fbb15f2139dc1$export$b730542ee281c4b1 as enable3DTerrain};
54
- //# sourceMappingURL=terrain.f65cf7c5.js.map
@@ -1 +0,0 @@
1
- {"mappings":"AAAA,6EAA6E;AAEtE,SAAS,0CACd,GAAG,EACH,YAAqB,EACrB,WAA0B,IAAI;IAE9B,IAAI,CAAC,IAAI,KAAK,EAAE,SAAS;QACvB,IAAI,IAAI,CAAC,cAAc;YACrB,0CAAgB,KAAK,cAAc;QACrC;QACA;IACF;IAEA,MAAM,uBAAuB,yCAAmB;IAChD,IAAI,cAAc,YAAY,wBAAwB;IAEtD,QAAQ,GAAG,CAAC,mCAAmC;IAE/C,gEAAgE;IAChE,MAAM,iBAAiB,IAAI,UAAU;IAErC,IAAI,CAAC,cAAc;QACjB,IAAI,kBAAkB,MAAM,IAAI,UAAU,CAAC;QAC3C;IACF;IACA,IAAI,kBAAkB,MAAM;IAE5B,gDAAgD;IAChD,IAAI,IAAI,SAAS,CAAC,gBAAgB,MAChC,IAAI,SAAS,CAAC,aAAa;QACzB,MAAM;QACN,KAAK;QACL,UAAU;QACV,SAAS;IACX;IAGF,gEAAgE;IAChE,IAAI,IAAI,QAAQ,CAAC,UAAU,MACzB,IAAI,QAAQ,CAAC;QACX,IAAI;QACJ,MAAM;QACN,OAAO;YACL,YAAY;YACZ,sBAAsB;gBAAC;gBAAK;aAAI;YAChC,gCAAgC;QAClC;IACF;IAGF,IAAI,UAAU,CAAC;QAAE,QAAQ;QAAa,cAAc;IAAE;IACtD,QAAQ,GAAG,CAAC,IAAI,UAAU;AAC5B;AAEA,SAAS,yCAAmB,GAAG;IAC7B,KAAK,MAAM,CAAC,KAAK,OAAO,IAAI,OAAO,OAAO,CAAC,IAAI,QAAQ,GAAG,OAAO,EAAG;QAClE,IAAI,OAAO,IAAI,IAAI,cACjB,OAAO;IAEX;IACA,OAAO;AACT","sources":["packages/map-interface/src/map-view/terrain.ts"],"sourcesContent":["// We should merge this with code in @macrostrat/mapbox-react/src/terrain.ts:\n\nexport function enable3DTerrain(\n map,\n shouldEnable: boolean,\n sourceID: string | null = null\n) {\n if (!map.style?._loaded) {\n map.once(\"style.load\", () => {\n enable3DTerrain(map, shouldEnable, sourceID);\n });\n return;\n }\n\n const currentTerrainSource = getTerrainSourceID(map);\n let demSourceID = sourceID ?? currentTerrainSource ?? \"mapbox-dem\";\n\n console.log(\"Enabling 3D terrain with source\", demSourceID);\n\n // Enable or disable terrain depending on our current desires...\n const currentTerrain = map.getTerrain();\n\n if (!shouldEnable) {\n if (currentTerrain != null) map.setTerrain(null);\n return;\n }\n if (currentTerrain != null) return;\n\n // Add a DEM source if one is not found already.\n if (map.getSource(demSourceID) == null) {\n map.addSource(demSourceID, {\n type: \"raster-dem\",\n url: \"mapbox://mapbox.mapbox-terrain-dem-v1\",\n tileSize: 512,\n maxzoom: 14,\n });\n }\n\n // add a sky layer that will show when the map is highly pitched\n if (map.getLayer(\"sky\") == null) {\n map.addLayer({\n id: \"sky\",\n type: \"sky\",\n paint: {\n \"sky-type\": \"atmosphere\",\n \"sky-atmosphere-sun\": [0.0, 0.0],\n \"sky-atmosphere-sun-intensity\": 15,\n },\n });\n }\n\n map.setTerrain({ source: demSourceID, exaggeration: 1 });\n console.log(map.getTerrain());\n}\n\nfunction getTerrainSourceID(map) {\n for (const [key, source] of Object.entries(map.getStyle().sources)) {\n if (source.type == \"raster-dem\") {\n return key;\n }\n }\n return null;\n}\n"],"names":[],"version":3,"file":"terrain.f65cf7c5.js.map"}
@@ -1,2 +0,0 @@
1
- require("./main.module.78d7f40f.js"),require("./main.module.f0530add.css"),require("./headers.0d494ac2.js"),require("react"),require("@blueprintjs/core");var e=require("@macrostrat/hyper");function r(e){return e&&e.__esModule?e.default:e}require("classnames");var a={};a=new URL("main.module.78d7f40f.js","file:"+__filename).toString(),new URL("headers.0d494ac2.js","file:"+__filename).toString(),r(e).styled(r(a));
2
- //# sourceMappingURL=expansion-panel.1553938f.js.map
@@ -1 +0,0 @@
1
- {"mappings":"A,Q,8C,Q,+C,Q,0C,Q,S,Q,qB,I,E,Q,qB,S,E,C,E,O,G,E,U,C,E,O,C,C,C,Q,c,I,E,C,EEAA,EAAiB,IAAA,IAAoB,2CAAA,QAAA,YAA4C,QAAQ,GCAxE,IAAA,IAAoB,uCAAA,QAAA,YAAwC,QAAQ,GFQ3E,AAAA,AAAA,EAAA,GAAM,MAAM,CAAC,EAAA","sources":["<anon>","packages/map-interface/src/expansion-panel/index.ts","../../../../.yarn/berry/cache/@parcel-runtime-js-npm-2.13.3-f44fec8492-10c0.zip/node_modules/@parcel/runtime-js/lib/runtime-7acf631d60d17746.js","../../../../.yarn/berry/cache/@parcel-runtime-js-npm-2.13.3-f44fec8492-10c0.zip/node_modules/@parcel/runtime-js/lib/runtime-c25cf7ef94cb29eb.js"],"sourcesContent":["require(\"./main.module.78d7f40f.js\");\nrequire(\"./main.module.f0530add.css\");\nrequire(\"./headers.0d494ac2.js\");\nvar $i8XZZ$react = require(\"react\");\nvar $i8XZZ$blueprintjscore = require(\"@blueprintjs/core\");\nvar $i8XZZ$macrostrathyper = require(\"@macrostrat/hyper\");\nvar $i8XZZ$classnames = require(\"classnames\");\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n\n\nvar $2f4ada350b141b39$exports = {};\n$2f4ada350b141b39$exports = new URL(\"main.module.78d7f40f.js\", \"file:\" + __filename).toString();\n\n\n\nvar $33bf588cfa90d114$exports = {};\n$33bf588cfa90d114$exports = new URL(\"headers.0d494ac2.js\", \"file:\" + __filename).toString();\n\n\nconst $15797e7a878e886f$var$h = (0, ($parcel$interopDefault($i8XZZ$macrostrathyper))).styled((0, (/*@__PURE__*/$parcel$interopDefault($2f4ada350b141b39$exports))));\nfunction $15797e7a878e886f$export$cea00a9d724d5a32(props) {\n const { expanded: expanded, children: children, onChange: onChange, className: className, title: title, titleComponent: titleComponent } = props;\n const icon = expanded ? \"chevron-up\" : \"chevron-down\";\n return $15797e7a878e886f$var$h((0, $33bf588cfa90d114$exports.PanelSubhead), {\n className: (0, ($parcel$interopDefault($i8XZZ$classnames)))(\"expansion-panel-header\", className),\n onClick: onChange,\n title: title,\n component: titleComponent\n }, [\n children,\n $15797e7a878e886f$var$h((0, $i8XZZ$blueprintjscore.Icon), {\n icon: icon\n })\n ]);\n}\nfunction $15797e7a878e886f$var$ExpansionPanelBase(props) {\n let { title: title, titleComponent: titleComponent = \"h3\", children: children, expanded: expanded, helpText: helpText, onChange: onChange = ()=>{}, sideComponent: sideComponent = null, className: className } = props;\n const [isOpen, setOpen] = (0, $i8XZZ$react.useState)(expanded || false);\n const onChange_ = ()=>{\n onChange();\n setOpen(!isOpen);\n };\n return $15797e7a878e886f$var$h(\"div.expansion-panel-base\", {\n className: (0, ($parcel$interopDefault($i8XZZ$classnames)))(className, {\n expanded: isOpen,\n collapsed: !isOpen\n })\n }, [\n $15797e7a878e886f$var$h($15797e7a878e886f$export$cea00a9d724d5a32, {\n onChange: onChange_,\n expanded: isOpen,\n title: title,\n titleComponent: titleComponent\n }, $15797e7a878e886f$var$h(\"div.expansion-summary-title-help\", [\n $15797e7a878e886f$var$h(\"span.expansion-panel-subtext\", helpText),\n \" \",\n sideComponent\n ])),\n $15797e7a878e886f$var$h((0, $i8XZZ$blueprintjscore.Collapse), {\n isOpen: isOpen\n }, $15797e7a878e886f$var$h(\"div.expansion-children\", null, children))\n ]);\n}\nfunction $15797e7a878e886f$export$39c134eb0b07cf0e(props) {\n let { title: title, children: children, className: className, headerElement: headerElement = null } = props;\n return $15797e7a878e886f$var$h(\"div.info-panel-section\", {\n className: className\n }, [\n $15797e7a878e886f$var$h(\"div.panel-subhead\", null, headerElement ?? $15797e7a878e886f$var$h(\"h3\", title)),\n $15797e7a878e886f$var$h(\"div.panel-content\", null, children)\n ]);\n}\nfunction $15797e7a878e886f$export$40e646e38e6ed100(props) {\n return $15797e7a878e886f$var$h($15797e7a878e886f$var$ExpansionPanelBase, {\n ...props,\n className: \"expansion-panel\"\n });\n}\nfunction $15797e7a878e886f$export$d7160281aff7c3b8(props) {\n return $15797e7a878e886f$var$h($15797e7a878e886f$var$ExpansionPanelBase, {\n ...props,\n className: \"expansion-panel sub-expansion-panel\",\n titleComponent: \"h4\"\n });\n}\nfunction $15797e7a878e886f$export$44ad9ff780615135(props) {\n let { title: title, children: children, value: value, headerElement: headerElement, className: className } = props;\n const [isOpen, setIsOpen] = (0, $i8XZZ$react.useState)(false);\n headerElement ?? (headerElement = $15797e7a878e886f$var$h([\n $15797e7a878e886f$var$h(\"div.title\", title),\n value\n ]));\n return $15797e7a878e886f$var$h(\"div.expandable-details\", {\n className: className\n }, [\n $15797e7a878e886f$var$h(\"div.expandable-details-main\", [\n $15797e7a878e886f$var$h(\"div.expandable-details-header\", headerElement),\n $15797e7a878e886f$var$h(\"div.expandable-details-toggle\", [\n $15797e7a878e886f$var$h((0, $i8XZZ$blueprintjscore.Button), {\n small: true,\n minimal: true,\n active: isOpen,\n onClick: ()=>setIsOpen(!isOpen),\n icon: \"more\"\n })\n ])\n ]),\n $15797e7a878e886f$var$h((0, $i8XZZ$blueprintjscore.Collapse), {\n isOpen: isOpen\n }, $15797e7a878e886f$var$h(\"div.expandable-details-children\", null, children))\n ]);\n}\nfunction $15797e7a878e886f$export$263416b670b3f129({ title: title, className: className, children: children }) {\n return $15797e7a878e886f$var$h(\"div.expansion-body\", {\n className: className\n }, [\n $15797e7a878e886f$var$h(\"div.expansion-panel-detail-header\", title),\n $15797e7a878e886f$var$h(\"div.expansion-panel-detail-body\", null, children)\n ]);\n}\n\n\n//# sourceMappingURL=expansion-panel.1553938f.js.map\n","import { useState } from \"react\";\nimport { Collapse, Icon } from \"@blueprintjs/core\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport classNames from \"classnames\";\nimport { Button } from \"@blueprintjs/core\";\nimport { PanelSubhead } from \"./headers\";\n\nconst h = hyper.styled(styles);\n\nfunction ExpansionPanelSummary(props) {\n const { expanded, children, onChange, className, title, titleComponent } =\n props;\n const icon = expanded ? \"chevron-up\" : \"chevron-down\";\n return h(\n PanelSubhead,\n {\n className: classNames(\"expansion-panel-header\", className),\n onClick: onChange,\n title,\n component: titleComponent,\n },\n [children, h(Icon, { icon })]\n );\n}\n\nfunction ExpansionPanelBase(props) {\n let {\n title,\n titleComponent = \"h3\",\n children,\n expanded,\n helpText,\n onChange = () => {},\n sideComponent = null,\n className,\n } = props;\n const [isOpen, setOpen] = useState(expanded || false);\n\n const onChange_ = () => {\n onChange();\n setOpen(!isOpen);\n };\n\n return h(\n \"div.expansion-panel-base\",\n {\n className: classNames(className, {\n expanded: isOpen,\n collapsed: !isOpen,\n }),\n },\n [\n h(\n ExpansionPanelSummary,\n {\n onChange: onChange_,\n expanded: isOpen,\n title,\n titleComponent,\n },\n h(\"div.expansion-summary-title-help\", [\n h(\"span.expansion-panel-subtext\", helpText),\n \" \",\n sideComponent,\n ])\n ),\n h(Collapse, { isOpen }, h(\"div.expansion-children\", null, children)),\n ]\n );\n}\n\nexport function InfoPanelSection(props) {\n let { title, children, className, headerElement = null } = props;\n return h(\"div.info-panel-section\", { className }, [\n h(\"div.panel-subhead\", null, headerElement ?? h(\"h3\", title)),\n h(\"div.panel-content\", null, children),\n ]);\n}\n\nfunction ExpansionPanel(props) {\n return h(ExpansionPanelBase, {\n ...props,\n className: \"expansion-panel\",\n });\n}\n\nfunction SubExpansionPanel(props) {\n return h(ExpansionPanelBase, {\n ...props,\n className: \"expansion-panel sub-expansion-panel\",\n titleComponent: \"h4\",\n });\n}\n\nfunction ExpandableDetailsPanel(props) {\n let { title, children, value, headerElement, className } = props;\n const [isOpen, setIsOpen] = useState(false);\n headerElement ??= h([h(\"div.title\", title), value]);\n return h(\"div.expandable-details\", { className }, [\n h(\"div.expandable-details-main\", [\n h(\"div.expandable-details-header\", headerElement),\n h(\"div.expandable-details-toggle\", [\n h(Button, {\n small: true,\n minimal: true,\n active: isOpen,\n onClick: () => setIsOpen(!isOpen),\n icon: \"more\",\n }),\n ]),\n ]),\n h(\n Collapse,\n { isOpen },\n h(\"div.expandable-details-children\", null, children)\n ),\n ]);\n}\n\nfunction ExpansionBody({ title, className, children }) {\n return h(\"div.expansion-body\", { className }, [\n h(\"div.expansion-panel-detail-header\", title),\n h(\"div.expansion-panel-detail-body\", null, children),\n ]);\n}\n\nexport {\n ExpansionPanel,\n ExpansionPanelSummary,\n ExpandableDetailsPanel,\n SubExpansionPanel,\n ExpansionBody,\n PanelSubhead,\n};\n","module.exports = new __parcel__URL__(\"main.module.78d7f40f.js\").toString();","module.exports = new __parcel__URL__(\"headers.0d494ac2.js\").toString();"],"names":["require","$i8XZZ$macrostrathyper","$parcel$interopDefault","a","__esModule","default","$2f4ada350b141b39$exports","URL","__filename","toString","styled"],"version":3,"file":"expansion-panel.1553938f.js.map","sourceRoot":"../../../../"}
@@ -1,2 +0,0 @@
1
- require("./main.module.2cc98713.css"),require("./main.module.d4e98e60.js"),require("./location-info.9f59aad3.js"),require("@blueprintjs/core");var e=require("@macrostrat/hyper");function r(e){return e&&e.__esModule?e.default:e}require("@macrostrat/ui-components"),require("@macrostrat/mapbox-react");var a={};a=new URL("main.module.2cc98713.css","file:"+__filename).toString(),new URL("location-info.9f59aad3.js","file:"+__filename).toString(),r(e).styled(r(a));
2
- //# sourceMappingURL=header.5f15d599.js.map
@@ -1 +0,0 @@
1
- {"mappings":"A,Q,+C,Q,8C,Q,gD,Q,qB,I,E,Q,qB,S,E,C,E,O,G,E,U,C,E,O,C,C,C,Q,6B,Q,4B,I,E,C,EEAA,EAAiB,IAAA,IAAoB,4CAAA,QAAA,YAA6C,QAAQ,GCAzE,IAAA,IAAoB,6CAAA,QAAA,YAA8C,QAAQ,GFWjF,AAAA,AAAA,EAAA,GAAM,MAAM,CAAC,EAAA","sources":["<anon>","packages/map-interface/src/location-panel/header.ts","../../../../.yarn/berry/cache/@parcel-runtime-js-npm-2.13.3-f44fec8492-10c0.zip/node_modules/@parcel/runtime-js/lib/runtime-6d6e92b02eb73299.js","../../../../.yarn/berry/cache/@parcel-runtime-js-npm-2.13.3-f44fec8492-10c0.zip/node_modules/@parcel/runtime-js/lib/runtime-c5bf3b5be72c4e09.js"],"sourcesContent":["require(\"./main.module.2cc98713.css\");\nrequire(\"./main.module.d4e98e60.js\");\nrequire(\"./location-info.9f59aad3.js\");\nvar $9HnAS$blueprintjscore = require(\"@blueprintjs/core\");\nvar $9HnAS$macrostrathyper = require(\"@macrostrat/hyper\");\nvar $9HnAS$macrostratuicomponents = require(\"@macrostrat/ui-components\");\nvar $9HnAS$macrostratmapboxreact = require(\"@macrostrat/mapbox-react\");\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n\nvar $b3d3cdac95f8f8a9$exports = {};\n$b3d3cdac95f8f8a9$exports = new URL(\"main.module.2cc98713.css\", \"file:\" + __filename).toString();\n\n\n\nvar $7d4f3c2ee54a88a2$exports = {};\n$7d4f3c2ee54a88a2$exports = new URL(\"location-info.9f59aad3.js\", \"file:\" + __filename).toString();\n\n\n\nconst $1a913554a5c0869b$var$h = (0, ($parcel$interopDefault($9HnAS$macrostrathyper))).styled((0, (/*@__PURE__*/$parcel$interopDefault($b3d3cdac95f8f8a9$exports))));\nfunction $1a913554a5c0869b$var$PositionButton({ position: position, bounds: bounds, showCopyLink: showCopyLink = false }) {\n const focusState = (0, $9HnAS$macrostratmapboxreact.useFocusState)(position);\n const copyLinkIsVisible = (0, $9HnAS$macrostratmapboxreact.isCentered)(focusState) && showCopyLink;\n return $1a913554a5c0869b$var$h(\"div.position-controls\", [\n $1a913554a5c0869b$var$h((0, $9HnAS$macrostratmapboxreact.LocationFocusButton), {\n location: position,\n bounds: bounds,\n focusState: focusState\n }, []),\n $1a913554a5c0869b$var$h.if(copyLinkIsVisible && position != null)($1a913554a5c0869b$var$CopyLinkButton, {\n itemName: \"position\"\n })\n ]);\n}\nfunction $1a913554a5c0869b$var$CopyLinkButton({ itemName: itemName, children: children, onClick: onClick, ...rest }) {\n const toaster = (0, $9HnAS$macrostratuicomponents.useToaster)();\n let message = `Copied link`;\n if (itemName != null) message += ` to ${itemName}`;\n message += \"!\";\n return $1a913554a5c0869b$var$h((0, $9HnAS$blueprintjscore.Button), {\n className: \"copy-link-button\",\n rightIcon: $1a913554a5c0869b$var$h((0, $9HnAS$blueprintjscore.Icon), {\n icon: \"link\",\n size: 12\n }),\n minimal: true,\n small: true,\n onClick () {\n navigator.clipboard.writeText(window.location.href).then(()=>{\n toaster?.show({\n message: message,\n intent: \"success\",\n icon: \"clipboard\",\n timeout: 1000\n });\n onClick?.();\n }, ()=>{\n toaster?.show({\n message: \"Failed to copy link\",\n intent: \"danger\",\n icon: \"error\",\n timeout: 1000\n });\n });\n },\n ...rest\n }, children ?? \"Copy link\");\n}\nfunction $1a913554a5c0869b$export$e9ff14c4822c2e8c(props) {\n const { onClose: onClose, position: position, bounds: bounds, zoom: zoom = 7, elevation: elevation, showCopyPositionButton: showCopyPositionButton, children: children } = props;\n let leftButton = null;\n if (bounds != null || position != null) leftButton = $1a913554a5c0869b$var$h($1a913554a5c0869b$var$PositionButton, {\n position: position,\n bounds: bounds,\n showCopyLink: showCopyPositionButton\n });\n return $1a913554a5c0869b$var$h(\"header.location-panel-header\", [\n leftButton,\n children,\n $1a913554a5c0869b$var$h(\"div.spacer\"),\n $1a913554a5c0869b$var$h.if(position != null)((0, $7d4f3c2ee54a88a2$exports.LngLatCoords), {\n position: position,\n zoom: zoom,\n className: \"infodrawer-header-item\"\n }),\n $1a913554a5c0869b$var$h.if(elevation != null)((0, $7d4f3c2ee54a88a2$exports.Elevation), {\n elevation: elevation,\n className: \"infodrawer-header-item\"\n }),\n $1a913554a5c0869b$var$h.if(onClose != null)((0, $9HnAS$blueprintjscore.Button), {\n minimal: true,\n icon: \"cross\",\n onClick: onClose\n })\n ]);\n}\n\n\n//# sourceMappingURL=header.5f15d599.js.map\n","import { Icon, Button } from \"@blueprintjs/core\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport { useToaster } from \"@macrostrat/ui-components\";\nimport { LngLatCoords, Elevation } from \"../location-info\";\nimport {\n LocationFocusButton,\n useFocusState,\n isCentered,\n} from \"@macrostrat/mapbox-react\";\n\nconst h = hyper.styled(styles);\n\nfunction PositionButton({ position, bounds, showCopyLink = false }) {\n const focusState = useFocusState(position);\n\n const copyLinkIsVisible = isCentered(focusState) && showCopyLink;\n\n return h(\"div.position-controls\", [\n h(LocationFocusButton, { location: position, bounds, focusState }, []),\n h.if(copyLinkIsVisible && position != null)(CopyLinkButton, {\n itemName: \"position\",\n }),\n ]);\n}\n\nfunction CopyLinkButton({ itemName, children, onClick, ...rest }) {\n const toaster = useToaster();\n\n let message = `Copied link`;\n if (itemName != null) {\n message += ` to ${itemName}`;\n }\n message += \"!\";\n\n return h(\n Button,\n {\n className: \"copy-link-button\",\n rightIcon: h(Icon, { icon: \"link\", size: 12 }),\n minimal: true,\n small: true,\n onClick() {\n navigator.clipboard.writeText(window.location.href).then(\n () => {\n toaster?.show({\n message,\n intent: \"success\",\n icon: \"clipboard\",\n timeout: 1000,\n });\n onClick?.();\n },\n () => {\n toaster?.show({\n message: \"Failed to copy link\",\n intent: \"danger\",\n icon: \"error\",\n timeout: 1000,\n });\n }\n );\n },\n ...rest,\n },\n children ?? \"Copy link\"\n );\n}\n\nexport interface InfoDrawerHeaderProps {\n onClose?: () => void;\n position?: mapboxgl.LngLat;\n zoom?: number;\n elevation?: number;\n showCopyPositionButton?: boolean;\n bounds?: mapboxgl.LngLatBounds;\n}\n\nexport function InfoDrawerHeader(props: InfoDrawerHeaderProps) {\n const {\n onClose,\n position,\n bounds,\n zoom = 7,\n elevation,\n showCopyPositionButton,\n children,\n } = props;\n\n let leftButton = null;\n if (bounds != null || position != null) {\n leftButton = h(PositionButton, {\n position,\n bounds,\n showCopyLink: showCopyPositionButton,\n });\n }\n\n return h(\"header.location-panel-header\", [\n leftButton,\n children,\n h(\"div.spacer\"),\n h.if(position != null)(LngLatCoords, {\n position,\n zoom,\n className: \"infodrawer-header-item\",\n }),\n h.if(elevation != null)(Elevation, {\n elevation,\n className: \"infodrawer-header-item\",\n }),\n h.if(onClose != null)(Button, {\n minimal: true,\n icon: \"cross\",\n onClick: onClose,\n }),\n ]);\n}\n","module.exports = new __parcel__URL__(\"main.module.2cc98713.css\").toString();","module.exports = new __parcel__URL__(\"location-info.9f59aad3.js\").toString();"],"names":["require","$9HnAS$macrostrathyper","$parcel$interopDefault","a","__esModule","default","$b3d3cdac95f8f8a9$exports","URL","__filename","toString","styled"],"version":3,"file":"header.5f15d599.js.map","sourceRoot":"../../../../"}
@@ -1 +0,0 @@
1
- {"mappings":"A,Q,yC,Q,+C,Q,8C,Q,4C,I,E,Q,qB,S,E,C,E,O,G,E,U,C,E,O,C,C,C,Q,c,Q,6B,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,CEAiB,IAAA,IAAoB,sCAAA,QAAA,YAAuC,QAAQ,G,I,E,E,SCAnE,IAAA,IAAoB,yCAAA,QAAA,YAA0C,QAAQ,GFO7E,AAAA,AAAA,EAAA,GAAM,MAAM,CAAC,EAAA","sources":["<anon>","packages/map-interface/src/location-panel/index.ts","../../../../.yarn/berry/cache/@parcel-runtime-js-npm-2.13.3-f44fec8492-10c0.zip/node_modules/@parcel/runtime-js/lib/runtime-6eff41384e4a05ae.js","../../../../.yarn/berry/cache/@parcel-runtime-js-npm-2.13.3-f44fec8492-10c0.zip/node_modules/@parcel/runtime-js/lib/runtime-1fa26f28051dce2d.js"],"sourcesContent":["require(\"./header.5f15d599.js\");\nrequire(\"./main.module.2cc98713.css\");\nrequire(\"./main.module.d4e98e60.js\");\nrequire(\"./container.abd6f0d2.js\");\nvar $eV7Yx$macrostrathyper = require(\"@macrostrat/hyper\");\nvar $eV7Yx$classnames = require(\"classnames\");\nvar $eV7Yx$macrostratuicomponents = require(\"@macrostrat/ui-components\");\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire94c2\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire94c2\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\n\nvar $3661f7ed1614b54b$exports = {};\n$3661f7ed1614b54b$exports = new URL(\"header.5f15d599.js\", \"file:\" + __filename).toString();\n\n\n\n\nvar $2UJTP = parcelRequire(\"2UJTP\");\n\nvar $821c0ad2f6c90b1b$exports = {};\n$821c0ad2f6c90b1b$exports = new URL(\"container.abd6f0d2.js\", \"file:\" + __filename).toString();\n\n\nconst $6b3ac418f085f13e$var$h = (0, ($parcel$interopDefault($eV7Yx$macrostrathyper))).styled((0, (/*@__PURE__*/$parcel$interopDefault($2UJTP))));\nfunction $6b3ac418f085f13e$export$83f9a19cf91c2d06(props) {\n const className = (0, ($parcel$interopDefault($eV7Yx$classnames)))(\"infodrawer\", props.className);\n return $6b3ac418f085f13e$var$h((0, $821c0ad2f6c90b1b$exports.PanelCard), {\n ...props,\n className: className\n });\n}\nfunction $6b3ac418f085f13e$export$a5ddcc2a88716895(props) {\n const { className: className, headerElement: headerElement = null, title: title, onClose: onClose, children: children, ...rest } = props;\n const header = headerElement ?? $6b3ac418f085f13e$var$h((0, $3661f7ed1614b54b$exports.InfoDrawerHeader), {\n onClose: onClose,\n ...rest\n }, [\n title == null ? null : $6b3ac418f085f13e$var$h(\"h3\", [\n title\n ])\n ]);\n return $6b3ac418f085f13e$var$h($6b3ac418f085f13e$export$83f9a19cf91c2d06, {\n className: className\n }, [\n header,\n $6b3ac418f085f13e$var$h(\"div.infodrawer-body\", $6b3ac418f085f13e$var$h(\"div.infodrawer-contents\", $6b3ac418f085f13e$var$h((0, $eV7Yx$macrostratuicomponents.ErrorBoundary), null, children)))\n ]);\n}\nconst $6b3ac418f085f13e$export$e54a7f2505304e20 = $6b3ac418f085f13e$export$a5ddcc2a88716895;\nfunction $6b3ac418f085f13e$export$aa4baff5242ea6e1(props) {\n const { children: children, className: className, loading: loading = false, ...rest } = props;\n const cls = (0, ($parcel$interopDefault($eV7Yx$classnames)))(\"location-panel\", className, {\n loading: loading\n });\n return $6b3ac418f085f13e$var$h($6b3ac418f085f13e$export$a5ddcc2a88716895, {\n className: cls,\n ...rest\n }, children);\n}\n\n\n//# sourceMappingURL=location-panel.d22d21fa.js.map\n","import hyper from \"@macrostrat/hyper\";\nimport { InfoDrawerHeader, InfoDrawerHeaderProps } from \"./header\";\nimport classNames from \"classnames\";\nimport styles from \"./main.module.sass\";\nimport { ErrorBoundary } from \"@macrostrat/ui-components\";\nimport { PanelCard } from \"../container\";\n\nconst h = hyper.styled(styles);\n\nexport function InfoDrawerContainer(props) {\n const className = classNames(\"infodrawer\", props.className);\n return h(PanelCard, { ...props, className });\n}\n\ninterface BaseInfoDrawerProps extends InfoDrawerHeaderProps {\n className?: string;\n title?: string;\n headerElement?: JSX.Element;\n children?: React.ReactNode;\n}\n\nexport function BaseInfoDrawer(props: BaseInfoDrawerProps) {\n const {\n className,\n headerElement = null,\n title,\n onClose,\n children,\n ...rest\n } = props;\n const header =\n headerElement ??\n h(InfoDrawerHeader, { onClose, ...rest }, [\n title == null ? null : h(\"h3\", [title]),\n ]);\n return h(InfoDrawerContainer, { className }, [\n header,\n h(\n \"div.infodrawer-body\",\n h(\"div.infodrawer-contents\", h(ErrorBoundary, null, children))\n ),\n ]);\n}\n\nexport const DetailsPanel = BaseInfoDrawer;\n\nexport function LocationPanel(props) {\n const { children, className, loading = false, ...rest } = props;\n const cls = classNames(\"location-panel\", className, { loading });\n return h(BaseInfoDrawer, { className: cls, ...rest }, children);\n}\n","module.exports = new __parcel__URL__(\"header.5f15d599.js\").toString();","module.exports = new __parcel__URL__(\"container.abd6f0d2.js\").toString();"],"names":["require","$eV7Yx$macrostrathyper","$parcel$interopDefault","a","__esModule","default","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","URL","__filename","toString","$2UJTP","styled"],"version":3,"file":"location-panel.d22d21fa.js.map","sourceRoot":"../../../../"}