@macrostrat/map-interface 1.3.0 → 1.3.2

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 (247) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cjs/index.js +10 -10
  3. package/dist/cjs/{context-panel.3061a63e.js → map-interface.0e252a74.js} +3 -3
  4. package/dist/cjs/map-interface.0e252a74.js.map +1 -0
  5. package/dist/cjs/{main.module.13eb33f8.css → map-interface.1b386e07.css} +1 -1
  6. package/dist/cjs/{main.module.13eb33f8.css.map → map-interface.1b386e07.css.map} +1 -1
  7. package/dist/cjs/{header.356d9f4c.js → map-interface.1d19056e.js} +4 -4
  8. package/dist/cjs/{header.356d9f4c.js.map → map-interface.1d19056e.js.map} +1 -1
  9. package/dist/cjs/{main.module.becc2fe7.css → map-interface.26497065.css} +1 -1
  10. package/dist/cjs/{main.module.becc2fe7.css.map → map-interface.26497065.css.map} +1 -1
  11. package/dist/cjs/{main.module.a3a78b0d.js → map-interface.31742bd3.js} +1 -1
  12. package/dist/cjs/{main.module.a3a78b0d.js.map → map-interface.31742bd3.js.map} +1 -1
  13. package/dist/cjs/{expansion-panel.ef757efe.js → map-interface.354aaa39.js} +4 -4
  14. package/dist/cjs/map-interface.354aaa39.js.map +1 -0
  15. package/dist/cjs/{location-panel.c5a55484.js → map-interface.3934d6d6.js} +5 -5
  16. package/dist/cjs/{location-panel.c5a55484.js.map → map-interface.3934d6d6.js.map} +1 -1
  17. package/dist/cjs/{main.module.16d04f5b.css → map-interface.4a401c1f.css} +1 -1
  18. package/dist/cjs/{main.module.16d04f5b.css.map → map-interface.4a401c1f.css.map} +1 -1
  19. package/dist/cjs/{xray.a23f8660.js → map-interface.4c5addca.js} +2 -2
  20. package/dist/cjs/map-interface.4c5addca.js.map +1 -0
  21. package/dist/cjs/{helpers.5a745a3a.js → map-interface.5813e876.js} +2 -2
  22. package/dist/cjs/map-interface.5813e876.js.map +1 -0
  23. package/dist/cjs/{location-info.99003993.js → map-interface.64823b7c.js} +3 -3
  24. package/dist/cjs/{location-info.99003993.js.map → map-interface.64823b7c.js.map} +1 -1
  25. package/dist/cjs/{main.module.e958948e.js → map-interface.70458f75.js} +1 -1
  26. package/dist/cjs/{main.module.e958948e.js.map → map-interface.70458f75.js.map} +1 -1
  27. package/dist/cjs/{headers.d9f3e324.js → map-interface.7509f2c1.js} +3 -3
  28. package/dist/cjs/{headers.d9f3e324.js.map → map-interface.7509f2c1.js.map} +1 -1
  29. package/dist/cjs/{dev.079a11ee.js → map-interface.853e0edd.js} +5 -5
  30. package/dist/cjs/{dev.079a11ee.js.map → map-interface.853e0edd.js.map} +1 -1
  31. package/dist/cjs/{hash-string.62e84f08.js → map-interface.860fcb7e.js} +2 -2
  32. package/dist/cjs/map-interface.860fcb7e.js.map +1 -0
  33. package/dist/cjs/{controls.9d7ddc44.js → map-interface.99a048dc.js} +3 -3
  34. package/dist/cjs/{controls.9d7ddc44.js.map → map-interface.99a048dc.js.map} +1 -1
  35. package/dist/cjs/{main.module.e392b038.js → map-interface.a9fe0f5d.js} +1 -1
  36. package/dist/cjs/{main.module.e392b038.js.map → map-interface.a9fe0f5d.js.map} +1 -1
  37. package/dist/cjs/{main.module.ccec47df.js → map-interface.abe5fe65.js} +1 -1
  38. package/dist/cjs/{main.module.ccec47df.js.map → map-interface.abe5fe65.js.map} +1 -1
  39. package/dist/cjs/{main.module.338867af.css → map-interface.adb45df9.css} +1 -1
  40. package/dist/cjs/{main.module.338867af.css.map → map-interface.adb45df9.css.map} +1 -1
  41. package/dist/cjs/{main.module.e872989b.css → map-interface.ae4c52a6.css} +1 -1
  42. package/dist/cjs/{main.module.e872989b.css.map → map-interface.ae4c52a6.css.map} +1 -1
  43. package/dist/cjs/{container.fc5b1a23.js → map-interface.bda26b27.js} +4 -4
  44. package/dist/cjs/{container.fc5b1a23.js.map → map-interface.bda26b27.js.map} +1 -1
  45. package/dist/cjs/{main.module.0bbfa859.js → map-interface.cd485bb4.js} +1 -1
  46. package/dist/cjs/{main.module.0bbfa859.js.map → map-interface.cd485bb4.js.map} +1 -1
  47. package/dist/cjs/{utils.09cef979.js → map-interface.dfaad4a1.js} +1 -1
  48. package/dist/cjs/{utils.09cef979.js.map → map-interface.dfaad4a1.js.map} +1 -1
  49. package/dist/cjs/{map-view.e031052e.js → map-interface.e7194f92.js} +7 -5
  50. package/dist/cjs/map-interface.e7194f92.js.map +1 -0
  51. package/dist/cjs/{vector-tile-features.77121785.js → map-interface.e9bcd5c0.js} +6 -6
  52. package/dist/cjs/map-interface.e9bcd5c0.js.map +1 -0
  53. package/dist/cjs/{map-page.3c65558b.js → map-interface.f1eec151.js} +13 -12
  54. package/dist/cjs/map-interface.f1eec151.js.map +1 -0
  55. package/dist/cjs/{tile-extent.06a4b2ed.js → map-interface.f8826069.js} +12 -17
  56. package/dist/cjs/map-interface.f8826069.js.map +1 -0
  57. package/dist/cjs/{utils.26f02633.js → map-interface.ffb109ef.js} +1 -1
  58. package/dist/cjs/{utils.26f02633.js.map → map-interface.ffb109ef.js.map} +1 -1
  59. package/dist/esm/index.d.ts +43 -28
  60. package/dist/esm/index.d.ts.map +1 -1
  61. package/dist/esm/index.js +10 -10
  62. package/dist/esm/{main.module.58922c04.js → map-interface.01826888.js} +1 -1
  63. package/dist/esm/{main.module.58922c04.js.map → map-interface.01826888.js.map} +1 -1
  64. package/dist/esm/{main.module.504d756b.js → map-interface.065737fe.js} +1 -1
  65. package/dist/esm/{main.module.504d756b.js.map → map-interface.065737fe.js.map} +1 -1
  66. package/dist/esm/{context-panel.5dae1a8c.js → map-interface.0b1aa8f2.js} +4 -4
  67. package/dist/esm/map-interface.0b1aa8f2.js.map +1 -0
  68. package/dist/esm/{xray.c0663c25.js → map-interface.1843c708.js} +2 -2
  69. package/dist/esm/map-interface.1843c708.js.map +1 -0
  70. package/dist/esm/{headers.32db7784.js → map-interface.1db44824.js} +4 -4
  71. package/dist/esm/{headers.32db7784.js.map → map-interface.1db44824.js.map} +1 -1
  72. package/dist/esm/map-interface.22ea3934.js +41 -0
  73. package/dist/esm/map-interface.22ea3934.js.map +1 -0
  74. package/dist/esm/{dev.3d88888b.js → map-interface.25a708b1.js} +5 -5
  75. package/dist/esm/{dev.3d88888b.js.map → map-interface.25a708b1.js.map} +1 -1
  76. package/dist/esm/{container.1c2aa81d.js → map-interface.27587c50.js} +5 -5
  77. package/dist/esm/{container.1c2aa81d.js.map → map-interface.27587c50.js.map} +1 -1
  78. package/dist/esm/{utils.d40349f0.js → map-interface.3033c825.js} +1 -1
  79. package/dist/esm/{utils.d40349f0.js.map → map-interface.3033c825.js.map} +1 -1
  80. package/dist/esm/{location-info.4b39fdfc.js → map-interface.3ef9d0ae.js} +3 -3
  81. package/dist/esm/{location-info.4b39fdfc.js.map → map-interface.3ef9d0ae.js.map} +1 -1
  82. package/dist/esm/{expansion-panel.465b822f.js → map-interface.3f07937e.js} +5 -5
  83. package/dist/esm/map-interface.3f07937e.js.map +1 -0
  84. package/dist/esm/{helpers.d32a342a.js → map-interface.45814073.js} +2 -2
  85. package/dist/esm/map-interface.45814073.js.map +1 -0
  86. package/dist/esm/{main.module.9c57cc95.js → map-interface.473f1f2b.js} +1 -1
  87. package/dist/esm/{main.module.9c57cc95.js.map → map-interface.473f1f2b.js.map} +1 -1
  88. package/dist/esm/{controls.8efb9074.js → map-interface.50edfdfd.js} +4 -4
  89. package/dist/esm/{controls.8efb9074.js.map → map-interface.50edfdfd.js.map} +1 -1
  90. package/dist/esm/{vector-tile-features.53b48d66.js → map-interface.786d6e58.js} +7 -7
  91. package/dist/esm/map-interface.786d6e58.js.map +1 -0
  92. package/dist/esm/{main.module.5eb366de.js → map-interface.957e414c.js} +1 -1
  93. package/dist/esm/{main.module.5eb366de.js.map → map-interface.957e414c.js.map} +1 -1
  94. package/dist/esm/{map-view.d1c5b113.js → map-interface.9ce3d553.js} +8 -6
  95. package/dist/esm/map-interface.9ce3d553.js.map +1 -0
  96. package/dist/esm/{utils.122d1f2d.js → map-interface.c4fa120d.js} +1 -1
  97. package/dist/esm/{utils.122d1f2d.js.map → map-interface.c4fa120d.js.map} +1 -1
  98. package/dist/esm/{main.module.303f6d99.js → map-interface.c99b53b6.js} +1 -1
  99. package/dist/esm/{main.module.303f6d99.js.map → map-interface.c99b53b6.js.map} +1 -1
  100. package/dist/esm/{header.a3da6906.js → map-interface.e1493866.js} +5 -5
  101. package/dist/esm/{header.a3da6906.js.map → map-interface.e1493866.js.map} +1 -1
  102. package/dist/esm/{hash-string.836601b2.js → map-interface.e50c290f.js} +2 -2
  103. package/dist/esm/{hash-string.836601b2.js.map → map-interface.e50c290f.js.map} +1 -1
  104. package/dist/esm/{location-panel.c9942d88.js → map-interface.e5349e97.js} +6 -6
  105. package/dist/esm/{location-panel.c9942d88.js.map → map-interface.e5349e97.js.map} +1 -1
  106. package/dist/esm/{map-page.660a1723.js → map-interface.f4e2f84e.js} +14 -13
  107. package/dist/esm/map-interface.f4e2f84e.js.map +1 -0
  108. package/dist/node/index.js +1 -1
  109. package/dist/node/index.js.map +1 -1
  110. package/dist/node/{main.module.2d51c752.css → map-interface.07882229.css} +1 -1
  111. package/dist/node/map-interface.07882229.css.map +1 -0
  112. package/dist/node/map-interface.10f5ef81.js +2 -0
  113. package/dist/node/map-interface.10f5ef81.js.map +1 -0
  114. package/dist/node/map-interface.1a5eecac.js +2 -0
  115. package/dist/node/map-interface.1a5eecac.js.map +1 -0
  116. package/dist/node/{main.module.8a9943af.css → map-interface.1be49df8.css} +1 -1
  117. package/dist/node/map-interface.1be49df8.css.map +1 -0
  118. package/dist/node/map-interface.20c346ba.js +2 -0
  119. package/dist/node/map-interface.20c346ba.js.map +1 -0
  120. package/dist/node/map-interface.2d12b35c.js +2 -0
  121. package/dist/node/map-interface.2d12b35c.js.map +1 -0
  122. package/dist/node/map-interface.3ea55e0c.js +2 -0
  123. package/dist/node/map-interface.3ea55e0c.js.map +1 -0
  124. package/dist/node/map-interface.42a4b05a.js +2 -0
  125. package/dist/node/map-interface.42a4b05a.js.map +1 -0
  126. package/dist/node/{main.module.29a15f3d.css → map-interface.42ef081d.css} +1 -1
  127. package/dist/node/map-interface.42ef081d.css.map +1 -0
  128. package/dist/node/map-interface.47b81f95.js +2 -0
  129. package/dist/node/map-interface.47b81f95.js.map +1 -0
  130. package/dist/node/map-interface.55fa679c.js +2 -0
  131. package/dist/node/map-interface.55fa679c.js.map +1 -0
  132. package/dist/node/map-interface.62b147ce.js +2 -0
  133. package/dist/node/map-interface.62b147ce.js.map +1 -0
  134. package/dist/node/map-interface.713361a4.js +2 -0
  135. package/dist/node/map-interface.713361a4.js.map +1 -0
  136. package/dist/node/map-interface.722387fb.js +2 -0
  137. package/dist/node/map-interface.722387fb.js.map +1 -0
  138. package/dist/node/map-interface.83fa8028.js +2 -0
  139. package/dist/node/map-interface.83fa8028.js.map +1 -0
  140. package/dist/node/map-interface.971af4bc.js +2 -0
  141. package/dist/node/map-interface.971af4bc.js.map +1 -0
  142. package/dist/node/map-interface.992dea73.js +2 -0
  143. package/dist/node/map-interface.992dea73.js.map +1 -0
  144. package/dist/node/map-interface.b14f08e8.js +2 -0
  145. package/dist/node/map-interface.b14f08e8.js.map +1 -0
  146. package/dist/node/map-interface.bc0fb98b.js +2 -0
  147. package/dist/node/map-interface.bc0fb98b.js.map +1 -0
  148. package/dist/node/{main.module.3943144e.css → map-interface.bd78832e.css} +1 -1
  149. package/dist/node/map-interface.bd78832e.css.map +1 -0
  150. package/dist/node/map-interface.cf540298.js +2 -0
  151. package/dist/node/map-interface.cf540298.js.map +1 -0
  152. package/dist/node/{main.module.91a06e96.css → map-interface.d2fce135.css} +1 -1
  153. package/dist/node/map-interface.d2fce135.css.map +1 -0
  154. package/dist/node/map-interface.d92b296e.js +2 -0
  155. package/dist/node/map-interface.d92b296e.js.map +1 -0
  156. package/dist/node/map-interface.d9814996.js +2 -0
  157. package/dist/node/map-interface.d9814996.js.map +1 -0
  158. package/dist/node/map-interface.e0032d67.js +2 -0
  159. package/dist/node/map-interface.e0032d67.js.map +1 -0
  160. package/dist/node/map-interface.eb663cae.js +2 -0
  161. package/dist/node/map-interface.eb663cae.js.map +1 -0
  162. package/dist/node/map-interface.ed6b5586.js +2 -0
  163. package/dist/node/map-interface.ed6b5586.js.map +1 -0
  164. package/dist/node/map-interface.f4d2a5eb.js +2 -0
  165. package/dist/node/map-interface.f4d2a5eb.js.map +1 -0
  166. package/package.json +9 -9
  167. package/src/container.ts +3 -3
  168. package/src/context-panel/index.ts +8 -8
  169. package/src/dev/map-page.ts +5 -4
  170. package/src/dev/tile-extent.ts +17 -18
  171. package/src/dev/vector-tile-features.ts +11 -7
  172. package/src/dev/xray.ts +7 -3
  173. package/src/expansion-panel/headers.ts +1 -1
  174. package/src/expansion-panel/index.ts +4 -4
  175. package/src/helpers.ts +12 -5
  176. package/src/location-info/hash-string.ts +2 -2
  177. package/src/location-panel/header.ts +3 -3
  178. package/src/map-view.ts +5 -3
  179. package/dist/cjs/context-panel.3061a63e.js.map +0 -1
  180. package/dist/cjs/expansion-panel.ef757efe.js.map +0 -1
  181. package/dist/cjs/hash-string.62e84f08.js.map +0 -1
  182. package/dist/cjs/helpers.5a745a3a.js.map +0 -1
  183. package/dist/cjs/map-page.3c65558b.js.map +0 -1
  184. package/dist/cjs/map-view.e031052e.js.map +0 -1
  185. package/dist/cjs/tile-extent.06a4b2ed.js.map +0 -1
  186. package/dist/cjs/vector-tile-features.77121785.js.map +0 -1
  187. package/dist/cjs/xray.a23f8660.js.map +0 -1
  188. package/dist/esm/context-panel.5dae1a8c.js.map +0 -1
  189. package/dist/esm/expansion-panel.465b822f.js.map +0 -1
  190. package/dist/esm/helpers.d32a342a.js.map +0 -1
  191. package/dist/esm/map-page.660a1723.js.map +0 -1
  192. package/dist/esm/map-view.d1c5b113.js.map +0 -1
  193. package/dist/esm/tile-extent.ca526996.js +0 -46
  194. package/dist/esm/tile-extent.ca526996.js.map +0 -1
  195. package/dist/esm/vector-tile-features.53b48d66.js.map +0 -1
  196. package/dist/esm/xray.c0663c25.js.map +0 -1
  197. package/dist/node/container.ab523076.js +0 -2
  198. package/dist/node/container.ab523076.js.map +0 -1
  199. package/dist/node/context-panel.0ae29ecf.js +0 -2
  200. package/dist/node/context-panel.0ae29ecf.js.map +0 -1
  201. package/dist/node/controls.511f309b.js +0 -2
  202. package/dist/node/controls.511f309b.js.map +0 -1
  203. package/dist/node/dev.709287ba.js +0 -2
  204. package/dist/node/dev.709287ba.js.map +0 -1
  205. package/dist/node/expansion-panel.62240ee3.js +0 -2
  206. package/dist/node/expansion-panel.62240ee3.js.map +0 -1
  207. package/dist/node/hash-string.3fc8ceb0.js +0 -2
  208. package/dist/node/hash-string.3fc8ceb0.js.map +0 -1
  209. package/dist/node/header.98a4cf12.js +0 -2
  210. package/dist/node/header.98a4cf12.js.map +0 -1
  211. package/dist/node/headers.2581f6d9.js +0 -2
  212. package/dist/node/headers.2581f6d9.js.map +0 -1
  213. package/dist/node/helpers.6bda171f.js +0 -2
  214. package/dist/node/helpers.6bda171f.js.map +0 -1
  215. package/dist/node/location-info.db66c3fb.js +0 -2
  216. package/dist/node/location-info.db66c3fb.js.map +0 -1
  217. package/dist/node/location-panel.dd1d2b37.js +0 -2
  218. package/dist/node/location-panel.dd1d2b37.js.map +0 -1
  219. package/dist/node/main.module.29a15f3d.css.map +0 -1
  220. package/dist/node/main.module.2d51c752.css.map +0 -1
  221. package/dist/node/main.module.3943144e.css.map +0 -1
  222. package/dist/node/main.module.3a8fef67.js +0 -2
  223. package/dist/node/main.module.3a8fef67.js.map +0 -1
  224. package/dist/node/main.module.434acaf9.js +0 -2
  225. package/dist/node/main.module.434acaf9.js.map +0 -1
  226. package/dist/node/main.module.5d5ab665.js +0 -2
  227. package/dist/node/main.module.5d5ab665.js.map +0 -1
  228. package/dist/node/main.module.7c928a6f.js +0 -2
  229. package/dist/node/main.module.7c928a6f.js.map +0 -1
  230. package/dist/node/main.module.8a9943af.css.map +0 -1
  231. package/dist/node/main.module.91a06e96.css.map +0 -1
  232. package/dist/node/main.module.e200d631.js +0 -2
  233. package/dist/node/main.module.e200d631.js.map +0 -1
  234. package/dist/node/map-page.a9602658.js +0 -2
  235. package/dist/node/map-page.a9602658.js.map +0 -1
  236. package/dist/node/map-view.663640da.js +0 -2
  237. package/dist/node/map-view.663640da.js.map +0 -1
  238. package/dist/node/tile-extent.28db5d2c.js +0 -2
  239. package/dist/node/tile-extent.28db5d2c.js.map +0 -1
  240. package/dist/node/utils.274d0452.js +0 -2
  241. package/dist/node/utils.274d0452.js.map +0 -1
  242. package/dist/node/utils.dd92f725.js +0 -2
  243. package/dist/node/utils.dd92f725.js.map +0 -1
  244. package/dist/node/vector-tile-features.b5a23b71.js +0 -2
  245. package/dist/node/vector-tile-features.b5a23b71.js.map +0 -1
  246. package/dist/node/xray.bce11e7b.js +0 -2
  247. package/dist/node/xray.bce11e7b.js.map +0 -1
@@ -1 +1 @@
1
- {"mappings":";;;;;AAGA,SAAS,qCAAe,IAAI,EAAE,SAAS;IACrC,OAAO;QACL,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,UAAU,IAAI,EAAE;QAC3C,KAAK,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,UAAU,GAAG,EAAE;QACxC,OAAO,KAAK,GAAG,CAAC,UAAU,KAAK,GAAG,KAAK,KAAK,EAAE;QAC9C,QAAQ,KAAK,GAAG,CAAC,UAAU,MAAM,GAAG,KAAK,MAAM,EAAE;IACnD;AACF;AAEO,SAAS,0CAAc,GAAG,EAAE,SAAS;IAC1C,MAAM,OAAO,UAAU,OAAO,EAAE;IAChC,MAAM,YAAY,IAAI,OAAO,EAAE;IAC/B,IAAI,QAAQ,QAAQ,aAAa,MAAM;IACvC,OAAO,qCAAe,MAAM;AAC9B;AAEO,SAAS,0CAAa,MAAM,EAAE,SAAS,EAAE,cAAc;IAC5D,CAAA,GAAA,gBAAQ,EAAE;QACR,MAAM,MAAM,OAAO,OAAO;QAC1B,IAAI,OAAO,MAAM;QACjB,IAAI,kBAAkB,MAAM;YAC1B,UAAU,OAAO,EAAE;YACnB;QACF;QACA,MAAM,SAAS,UAAU,OAAO,IAAI,IAAI,CAAA,GAAA,aAAK;QAC7C,OAAO,SAAS,CAAC,gBAAgB,KAAK,CAAC;QACvC,UAAU,OAAO,GAAG;QACpB,OAAO,IAAM,OAAO,MAAM;IAC5B,GAAG;QAAC,OAAO,OAAO;QAAE;KAAe;AACrC","sources":["packages/map-interface/src/utils.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { Marker } from \"mapbox-gl\";\n\nfunction calcMapPadding(rect, childRect) {\n return {\n left: Math.max(rect.left - childRect.left, 0),\n top: Math.max(rect.top - childRect.top, 0),\n right: Math.max(childRect.right - rect.right, 0),\n bottom: Math.max(childRect.bottom - rect.bottom, 0),\n };\n}\n\nexport function getMapPadding(ref, parentRef) {\n const rect = parentRef.current?.getBoundingClientRect();\n const childRect = ref.current?.getBoundingClientRect();\n if (rect == null || childRect == null) return;\n return calcMapPadding(rect, childRect);\n}\n\nexport function useMapMarker(mapRef, markerRef, markerPosition) {\n useEffect(() => {\n const map = mapRef.current;\n if (map == null) return;\n if (markerPosition == null) {\n markerRef.current?.remove();\n return;\n }\n const marker = markerRef.current ?? new Marker();\n marker.setLngLat(markerPosition).addTo(map);\n markerRef.current = marker;\n return () => marker.remove();\n }, [mapRef.current, markerPosition]);\n}\n"],"names":[],"version":3,"file":"utils.d40349f0.js.map"}
1
+ {"mappings":";;;;;AAGA,SAAS,qCAAe,IAAI,EAAE,SAAS;IACrC,OAAO;QACL,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,UAAU,IAAI,EAAE;QAC3C,KAAK,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,UAAU,GAAG,EAAE;QACxC,OAAO,KAAK,GAAG,CAAC,UAAU,KAAK,GAAG,KAAK,KAAK,EAAE;QAC9C,QAAQ,KAAK,GAAG,CAAC,UAAU,MAAM,GAAG,KAAK,MAAM,EAAE;IACnD;AACF;AAEO,SAAS,0CAAc,GAAG,EAAE,SAAS;IAC1C,MAAM,OAAO,UAAU,OAAO,EAAE;IAChC,MAAM,YAAY,IAAI,OAAO,EAAE;IAC/B,IAAI,QAAQ,QAAQ,aAAa,MAAM;IACvC,OAAO,qCAAe,MAAM;AAC9B;AAEO,SAAS,0CAAa,MAAM,EAAE,SAAS,EAAE,cAAc;IAC5D,CAAA,GAAA,gBAAQ,EAAE;QACR,MAAM,MAAM,OAAO,OAAO;QAC1B,IAAI,OAAO,MAAM;QACjB,IAAI,kBAAkB,MAAM;YAC1B,UAAU,OAAO,EAAE;YACnB;QACF;QACA,MAAM,SAAS,UAAU,OAAO,IAAI,IAAI,CAAA,GAAA,aAAK;QAC7C,OAAO,SAAS,CAAC,gBAAgB,KAAK,CAAC;QACvC,UAAU,OAAO,GAAG;QACpB,OAAO,IAAM,OAAO,MAAM;IAC5B,GAAG;QAAC,OAAO,OAAO;QAAE;KAAe;AACrC","sources":["packages/map-interface/src/utils.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { Marker } from \"mapbox-gl\";\n\nfunction calcMapPadding(rect, childRect) {\n return {\n left: Math.max(rect.left - childRect.left, 0),\n top: Math.max(rect.top - childRect.top, 0),\n right: Math.max(childRect.right - rect.right, 0),\n bottom: Math.max(childRect.bottom - rect.bottom, 0),\n };\n}\n\nexport function getMapPadding(ref, parentRef) {\n const rect = parentRef.current?.getBoundingClientRect();\n const childRect = ref.current?.getBoundingClientRect();\n if (rect == null || childRect == null) return;\n return calcMapPadding(rect, childRect);\n}\n\nexport function useMapMarker(mapRef, markerRef, markerPosition) {\n useEffect(() => {\n const map = mapRef.current;\n if (map == null) return;\n if (markerPosition == null) {\n markerRef.current?.remove();\n return;\n }\n const marker = markerRef.current ?? new Marker();\n marker.setLngLat(markerPosition).addTo(map);\n markerRef.current = marker;\n return () => marker.remove();\n }, [mapRef.current, markerPosition]);\n}\n"],"names":[],"version":3,"file":"map-interface.3033c825.js.map"}
@@ -1,5 +1,5 @@
1
- import {formatValue as $3e1bd09be8f70c4c$export$7c4d25c0c3217d8c} from "./utils.122d1f2d.js";
2
- import {applyMapPositionToHash as $bb5f34705d9c44bc$export$8391d1abb505ffb3, getMapPositionForHash as $bb5f34705d9c44bc$export$80abf1cbcc3918e4} from "./hash-string.836601b2.js";
1
+ import {formatValue as $3e1bd09be8f70c4c$export$7c4d25c0c3217d8c} from "./map-interface.c4fa120d.js";
2
+ import {applyMapPositionToHash as $bb5f34705d9c44bc$export$8391d1abb505ffb3, getMapPositionForHash as $bb5f34705d9c44bc$export$80abf1cbcc3918e4} from "./map-interface.e50c290f.js";
3
3
  import $2Lirf$macrostrathyper from "@macrostrat/hyper";
4
4
  import {formatCoordForZoomLevel as $2Lirf$formatCoordForZoomLevel, normalizeLng as $2Lirf$normalizeLng, metersToFeet as $2Lirf$metersToFeet} from "@macrostrat/mapbox-utils";
5
5
  import {LngLat as $2Lirf$LngLat} from "mapbox-gl";
@@ -96,4 +96,4 @@ function $4fae2d573d730db8$export$58bfb4f6ec5aa58d(props) {
96
96
 
97
97
 
98
98
  export {$4fae2d573d730db8$export$716098b85fd0efdf as ValueWithUnit, $4fae2d573d730db8$export$af8082af0bea3eb1 as DegreeCoord, $4fae2d573d730db8$export$f195b3550849e560 as LngLatCoords, $4fae2d573d730db8$export$58bfb4f6ec5aa58d as Elevation, $bb5f34705d9c44bc$export$8391d1abb505ffb3 as applyMapPositionToHash, $bb5f34705d9c44bc$export$80abf1cbcc3918e4 as getMapPositionForHash};
99
- //# sourceMappingURL=location-info.4b39fdfc.js.map
99
+ //# sourceMappingURL=map-interface.3ef9d0ae.js.map
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;AAWO,SAAS,0CAAc,KAAK;IACjC,MAAM,SAAE,KAAK,QAAE,IAAI,EAAE,GAAG;IACxB,OAAO,CAAA,GAAA,sBAAA,EAAE,wBAAwB;QAC/B,CAAA,GAAA,sBAAA,EAAE,cAAc;YAAC;SAAM;QACvB,CAAA,GAAA,sBAAA,EAAE,eAAe;YAAC;SAAI;QACtB,CAAA,GAAA,sBAAA,EAAE,aAAa;YAAC;SAAK;KACtB;AACH;AAEO,SAAS,0CAAY,KAAK;IAC/B,MAAM,SAAE,KAAK,UAAE,MAAM,aAAE,YAAY,WAAG,SAAS,CAAA,GAAA,yCAAU,GAAG,GAAG;IAC/D,MAAM,YAAY,QAAQ,IAAI,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE;IAEnD,OAAO,CAAA,GAAA,sBAAA,EAAE,2CAAe;QACtB,OAAO,OAAO,KAAK,GAAG,CAAC,QAAQ,aAAa;QAC5C,MAAM;IACR;AACF;AAcO,SAAS,0CAAa,KAAkB;IAC7C,qCAAqC,GACrC,MAAM,YAAE,QAAQ,aAAE,SAAS,aAAE,SAAS,QAAE,IAAI,EAAE,GAAG;IACjD,IAAI,UAAE,MAAM,EAAE,GAAG;IACjB,IAAI,YAAY,MACd,OAAO;IAGT,IAAI;IACJ,IAAI;IACJ,IAAI,MAAM,OAAO,CAAC,WAChB,CAAC,KAAK,IAAI,GAAG;SACR,IAAI,oBAAoB,CAAA,GAAA,aAAK,GAClC,CAAC,KAAK,IAAI,GAAG,SAAS,OAAO;SACxB,IAAI,SAAS,UAAU;QAC5B,MAAM,SAAS,GAAG;QAClB,MAAM,SAAS,GAAG;IACpB,OAAO,IAAI,SAAS,UAAU;QAC5B,MAAM,SAAS,GAAG;QAClB,MAAM,SAAS,GAAG;IACpB;IAEA,IAAI,QAAQ,QAAQ,UAAU,QAAQ,aAAa,MACjD,SAAS,CAAC,KAAK,IAAM,CAAA,GAAA,8BAAsB,EAAE,KAAK;IAGpD,OAAO,CAAA,GAAA,sBAAA,EAAE,wBAAwB;mBAAE;IAAU,GAAG;QAC9C,CAAA,GAAA,sBAAA,EAAE,eAAe;YACf,CAAA,GAAA,sBAAA,EAAE,2CAAa;gBACb,OAAO;gBACP,QAAQ;oBAAC;oBAAK;iBAAI;2BAClB;wBACA;YACF;YACA;YACA,CAAA,GAAA,sBAAA,EAAE,2CAAa;gBACb,OAAO,CAAA,GAAA,mBAAW,EAAE;gBACpB,QAAQ;oBAAC;oBAAK;iBAAI;2BAClB;wBACA;YACF;SACD;KACF;AACH;AAEO,SAAS,0CAAU,KAAK;IAC7B,iFAAiF,GACjF,MAAM,aAAE,SAAS,aAAE,SAAS,eAAE,cAAc,MAAM,GAAG;IACrD,IAAI,aAAa,MAAM,OAAO;IAC9B,OAAO,CAAA,GAAA,sBAAA,EAAE,iBAAiB;mBAAE;IAAU,GAAG;QACvC,CAAA,GAAA,sBAAA,EAAE,2CAAe;YAAE,OAAO;YAAW,MAAM;QAAI;QAC/C,CAAA,GAAA,sBAAA,EAAE,EAAE,CAAC,aAAa,kBAAkB;YAClC;YACA,CAAA,GAAA,sBAAA,EAAE,2CAAe;gBAAE,OAAO,CAAA,GAAA,mBAAW,EAAE;gBAAY,MAAM;YAAK;YAC9D;SACD;KACF;AACH","sources":["packages/map-interface/src/location-info/index.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport {\n formatCoordForZoomLevel,\n metersToFeet,\n normalizeLng,\n} from \"@macrostrat/mapbox-utils\";\nimport { formatValue } from \"./utils\";\nimport { LngLat } from \"mapbox-gl\";\n\nexport * from \"./hash-string\";\n\nexport function ValueWithUnit(props) {\n const { value, unit } = props;\n return h(\"span.value-with-unit\", [\n h(\"span.value\", [value]),\n h(\"span.spacer\", [\" \"]),\n h(\"span.unit\", [unit]),\n ]);\n}\n\nexport function DegreeCoord(props) {\n const { value, labels, precision = 3, format = formatValue } = props;\n const direction = value < 0 ? labels[1] : labels[0];\n\n return h(ValueWithUnit, {\n value: format(Math.abs(value), precision) + \"°\",\n unit: direction,\n });\n}\n\nexport interface LngLatProps {\n /** Map position */\n position: mapboxgl.LngLatLike | null;\n className?: string;\n /** Zoom level (used to infer coordinate rounding if provided) */\n zoom?: number;\n /** Number of decimal places to round coordinates to */\n precision?: number;\n /** Function to format coordinates */\n format?: (val: number, precision: number) => string;\n}\n\nexport function LngLatCoords(props: LngLatProps) {\n /** Formatted geographic coordinates */\n const { position, className, precision, zoom } = props;\n let { format } = props;\n if (position == null) {\n return null;\n }\n\n let lat: number;\n let lng: number;\n if (Array.isArray(position)) {\n [lng, lat] = position;\n } else if (position instanceof LngLat) {\n [lng, lat] = position.toArray();\n } else if (\"lng\" in position) {\n lat = position.lat;\n lng = position.lng;\n } else if (\"lon\" in position) {\n lat = position.lat;\n lng = position.lon;\n }\n\n if (zoom != null && format == null && precision == null) {\n format = (val, _) => formatCoordForZoomLevel(val, zoom);\n }\n\n return h(\"div.lnglat-container\", { className }, [\n h(\"span.lnglat\", [\n h(DegreeCoord, {\n value: lat,\n labels: [\"N\", \"S\"],\n precision,\n format,\n }),\n \", \",\n h(DegreeCoord, {\n value: normalizeLng(lng),\n labels: [\"E\", \"W\"],\n precision,\n format,\n }),\n ]),\n ]);\n}\n\nexport function Elevation(props) {\n /** Renders an elevation value in meters and a parenthetical conversion to feet. */\n const { elevation, className, includeFeet = true } = props;\n if (elevation == null) return null;\n return h(\"div.elevation\", { className }, [\n h(ValueWithUnit, { value: elevation, unit: \"m\" }),\n h.if(includeFeet)(\"span.secondary\", [\n \" (\",\n h(ValueWithUnit, { value: metersToFeet(elevation), unit: \"ft\" }),\n \")\",\n ]),\n ]);\n}\n"],"names":[],"version":3,"file":"location-info.4b39fdfc.js.map"}
1
+ {"mappings":";;;;;;;;;;;AAWO,SAAS,0CAAc,KAAK;IACjC,MAAM,SAAE,KAAK,QAAE,IAAI,EAAE,GAAG;IACxB,OAAO,CAAA,GAAA,sBAAA,EAAE,wBAAwB;QAC/B,CAAA,GAAA,sBAAA,EAAE,cAAc;YAAC;SAAM;QACvB,CAAA,GAAA,sBAAA,EAAE,eAAe;YAAC;SAAI;QACtB,CAAA,GAAA,sBAAA,EAAE,aAAa;YAAC;SAAK;KACtB;AACH;AAEO,SAAS,0CAAY,KAAK;IAC/B,MAAM,SAAE,KAAK,UAAE,MAAM,aAAE,YAAY,WAAG,SAAS,CAAA,GAAA,yCAAU,GAAG,GAAG;IAC/D,MAAM,YAAY,QAAQ,IAAI,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE;IAEnD,OAAO,CAAA,GAAA,sBAAA,EAAE,2CAAe;QACtB,OAAO,OAAO,KAAK,GAAG,CAAC,QAAQ,aAAa;QAC5C,MAAM;IACR;AACF;AAcO,SAAS,0CAAa,KAAkB;IAC7C,qCAAqC,GACrC,MAAM,YAAE,QAAQ,aAAE,SAAS,aAAE,SAAS,QAAE,IAAI,EAAE,GAAG;IACjD,IAAI,UAAE,MAAM,EAAE,GAAG;IACjB,IAAI,YAAY,MACd,OAAO;IAGT,IAAI;IACJ,IAAI;IACJ,IAAI,MAAM,OAAO,CAAC,WAChB,CAAC,KAAK,IAAI,GAAG;SACR,IAAI,oBAAoB,CAAA,GAAA,aAAK,GAClC,CAAC,KAAK,IAAI,GAAG,SAAS,OAAO;SACxB,IAAI,SAAS,UAAU;QAC5B,MAAM,SAAS,GAAG;QAClB,MAAM,SAAS,GAAG;IACpB,OAAO,IAAI,SAAS,UAAU;QAC5B,MAAM,SAAS,GAAG;QAClB,MAAM,SAAS,GAAG;IACpB;IAEA,IAAI,QAAQ,QAAQ,UAAU,QAAQ,aAAa,MACjD,SAAS,CAAC,KAAK,IAAM,CAAA,GAAA,8BAAsB,EAAE,KAAK;IAGpD,OAAO,CAAA,GAAA,sBAAA,EAAE,wBAAwB;mBAAE;IAAU,GAAG;QAC9C,CAAA,GAAA,sBAAA,EAAE,eAAe;YACf,CAAA,GAAA,sBAAA,EAAE,2CAAa;gBACb,OAAO;gBACP,QAAQ;oBAAC;oBAAK;iBAAI;2BAClB;wBACA;YACF;YACA;YACA,CAAA,GAAA,sBAAA,EAAE,2CAAa;gBACb,OAAO,CAAA,GAAA,mBAAW,EAAE;gBACpB,QAAQ;oBAAC;oBAAK;iBAAI;2BAClB;wBACA;YACF;SACD;KACF;AACH;AAEO,SAAS,0CAAU,KAAK;IAC7B,iFAAiF,GACjF,MAAM,aAAE,SAAS,aAAE,SAAS,eAAE,cAAc,MAAM,GAAG;IACrD,IAAI,aAAa,MAAM,OAAO;IAC9B,OAAO,CAAA,GAAA,sBAAA,EAAE,iBAAiB;mBAAE;IAAU,GAAG;QACvC,CAAA,GAAA,sBAAA,EAAE,2CAAe;YAAE,OAAO;YAAW,MAAM;QAAI;QAC/C,CAAA,GAAA,sBAAA,EAAE,EAAE,CAAC,aAAa,kBAAkB;YAClC;YACA,CAAA,GAAA,sBAAA,EAAE,2CAAe;gBAAE,OAAO,CAAA,GAAA,mBAAW,EAAE;gBAAY,MAAM;YAAK;YAC9D;SACD;KACF;AACH","sources":["packages/map-interface/src/location-info/index.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport {\n formatCoordForZoomLevel,\n metersToFeet,\n normalizeLng,\n} from \"@macrostrat/mapbox-utils\";\nimport { formatValue } from \"./utils\";\nimport { LngLat } from \"mapbox-gl\";\n\nexport * from \"./hash-string\";\n\nexport function ValueWithUnit(props) {\n const { value, unit } = props;\n return h(\"span.value-with-unit\", [\n h(\"span.value\", [value]),\n h(\"span.spacer\", [\" \"]),\n h(\"span.unit\", [unit]),\n ]);\n}\n\nexport function DegreeCoord(props) {\n const { value, labels, precision = 3, format = formatValue } = props;\n const direction = value < 0 ? labels[1] : labels[0];\n\n return h(ValueWithUnit, {\n value: format(Math.abs(value), precision) + \"°\",\n unit: direction,\n });\n}\n\nexport interface LngLatProps {\n /** Map position */\n position: mapboxgl.LngLatLike | null;\n className?: string;\n /** Zoom level (used to infer coordinate rounding if provided) */\n zoom?: number;\n /** Number of decimal places to round coordinates to */\n precision?: number;\n /** Function to format coordinates */\n format?: (val: number, precision: number) => string;\n}\n\nexport function LngLatCoords(props: LngLatProps) {\n /** Formatted geographic coordinates */\n const { position, className, precision, zoom } = props;\n let { format } = props;\n if (position == null) {\n return null;\n }\n\n let lat: number;\n let lng: number;\n if (Array.isArray(position)) {\n [lng, lat] = position;\n } else if (position instanceof LngLat) {\n [lng, lat] = position.toArray();\n } else if (\"lng\" in position) {\n lat = position.lat;\n lng = position.lng;\n } else if (\"lon\" in position) {\n lat = position.lat;\n lng = position.lon;\n }\n\n if (zoom != null && format == null && precision == null) {\n format = (val, _) => formatCoordForZoomLevel(val, zoom);\n }\n\n return h(\"div.lnglat-container\", { className }, [\n h(\"span.lnglat\", [\n h(DegreeCoord, {\n value: lat,\n labels: [\"N\", \"S\"],\n precision,\n format,\n }),\n \", \",\n h(DegreeCoord, {\n value: normalizeLng(lng),\n labels: [\"E\", \"W\"],\n precision,\n format,\n }),\n ]),\n ]);\n}\n\nexport function Elevation(props) {\n /** Renders an elevation value in meters and a parenthetical conversion to feet. */\n const { elevation, className, includeFeet = true } = props;\n if (elevation == null) return null;\n return h(\"div.elevation\", { className }, [\n h(ValueWithUnit, { value: elevation, unit: \"m\" }),\n h.if(includeFeet)(\"span.secondary\", [\n \" (\",\n h(ValueWithUnit, { value: metersToFeet(elevation), unit: \"ft\" }),\n \")\",\n ]),\n ]);\n}\n"],"names":[],"version":3,"file":"map-interface.3ef9d0ae.js.map"}
@@ -1,6 +1,6 @@
1
- import $h94Kl$mainmodule58922c04js from "./main.module.58922c04.js";
2
- import "../cjs/main.module.338867af.css";
3
- import {PanelSubhead as $72e497a412b1da0a$export$ed081779ec3709aa} from "./headers.32db7784.js";
1
+ import $h94Kl$mapinterface01826888js from "./map-interface.01826888.js";
2
+ import "../cjs/map-interface.adb45df9.css";
3
+ import {PanelSubhead as $72e497a412b1da0a$export$ed081779ec3709aa} from "./map-interface.1db44824.js";
4
4
  import {useState as $h94Kl$useState} from "react";
5
5
  import {Icon as $h94Kl$Icon, Collapse as $h94Kl$Collapse, Button as $h94Kl$Button} from "@blueprintjs/core";
6
6
  import $h94Kl$macrostrathyper from "@macrostrat/hyper";
@@ -16,7 +16,7 @@ function $parcel$interopDefault(a) {
16
16
 
17
17
 
18
18
 
19
- const $d570ac304373e71c$var$h = (0, $h94Kl$macrostrathyper).styled((0, ($parcel$interopDefault($h94Kl$mainmodule58922c04js))));
19
+ const $d570ac304373e71c$var$h = (0, $h94Kl$macrostrathyper).styled((0, ($parcel$interopDefault($h94Kl$mapinterface01826888js))));
20
20
  function $d570ac304373e71c$export$cea00a9d724d5a32(props) {
21
21
  const { expanded: expanded, children: children, onChange: onChange, className: className, title: title, titleComponent: titleComponent } = props;
22
22
  const icon = expanded ? "chevron-up" : "chevron-down";
@@ -121,4 +121,4 @@ function $d570ac304373e71c$export$263416b670b3f129({ title: title, className: cl
121
121
 
122
122
 
123
123
  export {$d570ac304373e71c$export$cea00a9d724d5a32 as ExpansionPanelSummary, $d570ac304373e71c$export$39c134eb0b07cf0e as InfoPanelSection, $d570ac304373e71c$export$40e646e38e6ed100 as ExpansionPanel, $d570ac304373e71c$export$d7160281aff7c3b8 as SubExpansionPanel, $d570ac304373e71c$export$44ad9ff780615135 as ExpandableDetailsPanel, $d570ac304373e71c$export$263416b670b3f129 as ExpansionBody, $72e497a412b1da0a$export$ed081779ec3709aa as PanelSubhead};
124
- //# sourceMappingURL=expansion-panel.465b822f.js.map
124
+ //# sourceMappingURL=map-interface.3f07937e.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;;;;;;;;;;AAQA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,wEAAK;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;YAAM,WAAW;QAAuB;KAAG;AAEpE;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, className: \"expansion-panel-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":"map-interface.3f07937e.js.map"}
@@ -1,4 +1,4 @@
1
- import {getMapPadding as $82fe09613877ffc2$export$bb78f9f01775eef1, useMapMarker as $82fe09613877ffc2$export$278090850f6b3a9f} from "./utils.d40349f0.js";
1
+ import {getMapPadding as $82fe09613877ffc2$export$bb78f9f01775eef1, useMapMarker as $82fe09613877ffc2$export$278090850f6b3a9f} from "./map-interface.3033c825.js";
2
2
  import {useMapRef as $ctV7I$useMapRef, useMapEaseTo as $ctV7I$useMapEaseTo, useMapDispatch as $ctV7I$useMapDispatch, useMapInitialized as $ctV7I$useMapInitialized} from "@macrostrat/mapbox-react";
3
3
  import {useRef as $ctV7I$useRef, useState as $ctV7I$useState, useCallback as $ctV7I$useCallback, useMemo as $ctV7I$useMemo, useEffect as $ctV7I$useEffect} from "react";
4
4
  import {debounce as $ctV7I$debounce} from "underscore";
@@ -189,4 +189,4 @@ const $4bc3dd5f0732eed3$export$566518253d2584f8 = $4bc3dd5f0732eed3$export$6daf1
189
189
 
190
190
 
191
191
  export {$4bc3dd5f0732eed3$export$31b2e088aff2dc5d as MapResizeManager, $4bc3dd5f0732eed3$export$2ab96428dea558d6 as MapPaddingManager, $4bc3dd5f0732eed3$export$f6eeee399afc4e9a as MapMovedReporter, $4bc3dd5f0732eed3$export$e57f9eaa51773f82 as MapLoadingReporter, $4bc3dd5f0732eed3$export$5c90a91c7455938c as MapMarker, $4bc3dd5f0732eed3$export$6daf1520df36ae21 as useBasicMapStyle, $4bc3dd5f0732eed3$export$3503bf0b3851527b as getBasicMapStyle, $4bc3dd5f0732eed3$export$566518253d2584f8 as useBasicStylePair};
192
- //# sourceMappingURL=helpers.d32a342a.js.map
192
+ //# sourceMappingURL=map-interface.45814073.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["packages/map-interface/src/helpers.ts"],"sourcesContent":["import {\n useMapRef,\n useMapEaseTo,\n useMapDispatch,\n useMapStatus,\n useMapInitialized,\n} from \"@macrostrat/mapbox-react\";\nimport { useMemo, useRef } from \"react\";\nimport { debounce } from \"underscore\";\nimport useResizeObserver from \"use-resize-observer\";\n\nimport { getMapPosition } from \"@macrostrat/mapbox-utils\";\nimport mapboxgl from \"mapbox-gl\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { getMapPadding, useMapMarker } from \"./utils\";\nimport { useInDarkMode } from \"@macrostrat/ui-components\";\n\nexport function MapResizeManager({ containerRef }) {\n const mapRef = useMapRef();\n\n const debouncedResize = useRef(\n debounce(() => {\n mapRef.current?.resize();\n }, 100),\n );\n\n useResizeObserver({\n ref: containerRef,\n onResize: debouncedResize.current,\n });\n\n return null;\n}\n\ninterface MapPaddingManagerProps {\n containerRef: React.RefObject<HTMLDivElement>;\n parentRef: React.RefObject<HTMLDivElement>;\n infoMarkerPosition: mapboxgl.LngLatLike;\n debounceTime?: number;\n}\n\nexport function MapPaddingManager({\n containerRef,\n parentRef,\n infoMarkerPosition,\n debounceTime = 200,\n}: MapPaddingManagerProps) {\n const mapRef = useMapRef();\n\n const [padding, setPadding] = useState(\n getMapPadding(containerRef, parentRef),\n );\n\n const _updateMapPadding = useCallback(() => {\n const newPadding = getMapPadding(containerRef, parentRef);\n setPadding(newPadding);\n }, [containerRef.current, parentRef.current]);\n\n const updateMapPadding = useMemo(\n () => debounce(_updateMapPadding, debounceTime),\n [_updateMapPadding, debounceTime],\n );\n\n useEffect(() => {\n const map = mapRef.current;\n if (map == null) return;\n // Update map padding on load\n updateMapPadding();\n }, [mapRef.current]);\n\n useResizeObserver({\n ref: parentRef,\n onResize(sz) {\n updateMapPadding();\n },\n round(n) {\n return Math.round(n);\n },\n });\n\n // Ideally, we would not have to do this when we know the infobox is loaded\n useMapEaseTo({ center: infoMarkerPosition, padding });\n\n return null;\n}\n\nexport function MapMovedReporter({ onMapMoved = null }) {\n const mapRef = useMapRef();\n const dispatch = useMapDispatch();\n const isInitialized = useMapInitialized();\n\n const mapMovedCallback = useCallback(() => {\n const map = mapRef.current;\n if (map == null) return;\n const mapPosition = getMapPosition(map);\n dispatch({ type: \"map-moved\", payload: mapPosition });\n onMapMoved?.(mapPosition, map);\n }, [onMapMoved, dispatch, isInitialized]);\n\n useEffect(() => {\n // Get the current value of the map. Useful for gradually moving away\n // from class component\n const map = mapRef.current;\n if (map == null) return;\n // Update the URI when the map moves\n mapMovedCallback();\n const cb = debounce(mapMovedCallback, 100);\n map.on(\"moveend\", cb);\n return () => {\n map?.off(\"moveend\", cb);\n };\n }, [mapMovedCallback]);\n return null;\n}\n\ninterface MapLoadingReporterProps {\n ignoredSources?: string[];\n onMapLoading?: (evt: mapboxgl.MapEvent) => void;\n onMapIdle?: (evt: mapboxgl.MapEvent) => void;\n mapIsLoading?: boolean;\n}\n\nexport function MapLoadingReporter({\n ignoredSources,\n onMapLoading = null,\n onMapIdle = null,\n mapIsLoading,\n}: MapLoadingReporterProps) {\n const mapRef = useMapRef();\n const loadingRef = useRef(false);\n const dispatch = useMapDispatch();\n const isInitialized = useMapInitialized();\n\n useEffect(() => {\n const map = mapRef.current;\n const mapIsLoading = loadingRef.current;\n if (map == null) return;\n\n let didSendLoading = false;\n\n const loadingCallback = (evt) => {\n if (ignoredSources.includes(evt.sourceId) || mapIsLoading) return;\n if (didSendLoading) return;\n onMapLoading?.(evt);\n dispatch({ type: \"set-loading\", payload: true });\n loadingRef.current = true;\n didSendLoading = true;\n };\n const idleCallback = (evt) => {\n if (!mapIsLoading) return;\n dispatch({ type: \"set-loading\", payload: false });\n loadingRef.current = false;\n onMapIdle?.(evt);\n };\n map.on(\"sourcedataloading\", loadingCallback);\n map.on(\"idle\", idleCallback);\n return () => {\n map?.off(\"sourcedataloading\", loadingCallback);\n map?.off(\"idle\", idleCallback);\n };\n }, [ignoredSources, mapIsLoading, isInitialized]);\n return null;\n}\n\nexport function MapMarker({ position, setPosition, centerMarker = true }) {\n const mapRef = useMapRef();\n const markerRef = useRef(null);\n const isInitialized = useMapInitialized();\n\n useMapMarker(mapRef, markerRef, position);\n\n useEffect(() => {\n const map = mapRef.current;\n if (map == null || setPosition == null) return;\n\n const handleMapClick = (event: mapboxgl.MapMouseEvent) => {\n setPosition(event.lngLat, event, mapRef.current);\n // We should integrate this with the \"easeToCenter\" hook\n if (centerMarker) {\n mapRef.current?.flyTo({ center: event.lngLat, duration: 800 });\n }\n };\n\n map.on(\"click\", handleMapClick);\n\n return () => {\n map?.off(\"click\", handleMapClick);\n };\n }, [setPosition, isInitialized]);\n\n return null;\n}\n\nexport function useBasicMapStyle(\n opts: {\n styleType?: \"macrostrat\" | \"standard\";\n } = {},\n) {\n const { styleType } = opts;\n const inDarkMode = useInDarkMode();\n\n const props = useMemo(() => {\n return { styleType, inDarkMode };\n }, [styleType, inDarkMode]);\n\n return getBasicMapStyle(props);\n}\n\nexport function getBasicMapStyle(opts: {\n styleType?: \"macrostrat\" | \"standard\";\n inDarkMode?: boolean;\n}) {\n const { styleType = \"macrostrat\", inDarkMode = false } = opts ?? {};\n\n if (styleType == \"macrostrat\") {\n return inDarkMode\n ? \"mapbox://styles/jczaplewski/cl5uoqzzq003614o6url9ou9z?optimize=true\"\n : \"mapbox://styles/jczaplewski/clatdbkw4002q14lov8zx0bm0?optimize=true\";\n } else {\n return inDarkMode\n ? \"mapbox://styles/mapbox/dark-v10\"\n : \"mapbox://styles/mapbox/light-v10\";\n }\n}\n\nexport const useBasicStylePair = useBasicMapStyle;\n"],"names":[],"version":3,"file":"map-interface.45814073.js.map"}
@@ -25,4 +25,4 @@ $fbe402416678c280$export$764ade2d69041360 = `_8hZKsW_status-tongue`;
25
25
 
26
26
 
27
27
  export {$fbe402416678c280$exports as default};
28
- //# sourceMappingURL=main.module.9c57cc95.js.map
28
+ //# sourceMappingURL=map-interface.473f1f2b.js.map
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;AAAA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AALA,4CAAmC,CAAC,sBAAsB,CAAC;AAC3D,4CAA2B,CAAC,cAAc,CAAC;AAC3C,4CAAkC,CAAC,qBAAqB,CAAC;AACzD,4CAA8B,CAAC,iBAAiB,CAAC;AACjD,4CAAqC,CAAC,wBAAwB,CAAC;AAC/D,4CAAkC,CAAC,qBAAqB,CAAC","sources":["packages/map-interface/src/context-panel/main.module.sass"],"sourcesContent":[".searchbar-holder\n transition: margin 300ms\n display: flex\n flex-direction: column\n margin: 0\n\n .navbar-holder\n display: flex\n flex-direction: row\n\n .searchbar\n width: 100%\n background-color: var(--panel-background-color)\n border-radius: var(--map-panel-border-radius, 5px)\n padding: var(--navbar-padding, 10px)\n display: flex\n flex-direction: row\n align-items: center\n gap: 5px\n\n :global(.bp5-input-group)\n flex-grow: 1\n cursor: text\n\n.navbar\n min-height: 50px\n\n:global(.bp5-navbar) > .loading-button\n width: 40px\n height: 40px\n\n.status-tongue:global(.bp5-card)\n background-color: var(--panel-background-color)\n margin: 5px\n margin-bottom: 0\n margin-top: -12px\n padding: 0\n padding-top: 12px\n overflow: hidden\n\n@media screen and (max-width: 768px)\n .status-tongue\n max-width: 100vw\n margin: 0\n border-radius: 0\n margin-top: -3px\n"],"names":[],"version":3,"file":"main.module.9c57cc95.js.map"}
1
+ {"mappings":";;;;;;;;;;;;AAAA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AALA,4CAAmC,CAAC,sBAAsB,CAAC;AAC3D,4CAA2B,CAAC,cAAc,CAAC;AAC3C,4CAAkC,CAAC,qBAAqB,CAAC;AACzD,4CAA8B,CAAC,iBAAiB,CAAC;AACjD,4CAAqC,CAAC,wBAAwB,CAAC;AAC/D,4CAAkC,CAAC,qBAAqB,CAAC","sources":["packages/map-interface/src/context-panel/main.module.sass"],"sourcesContent":[".searchbar-holder\n transition: margin 300ms\n display: flex\n flex-direction: column\n margin: 0\n\n .navbar-holder\n display: flex\n flex-direction: row\n\n .searchbar\n width: 100%\n background-color: var(--panel-background-color)\n border-radius: var(--map-panel-border-radius, 5px)\n padding: var(--navbar-padding, 10px)\n display: flex\n flex-direction: row\n align-items: center\n gap: 5px\n\n :global(.bp5-input-group)\n flex-grow: 1\n cursor: text\n\n.navbar\n min-height: 50px\n\n:global(.bp5-navbar) > .loading-button\n width: 40px\n height: 40px\n\n.status-tongue:global(.bp5-card)\n background-color: var(--panel-background-color)\n margin: 5px\n margin-bottom: 0\n margin-top: -12px\n padding: 0\n padding-top: 12px\n overflow: hidden\n\n@media screen and (max-width: 768px)\n .status-tongue\n max-width: 100vw\n margin: 0\n border-radius: 0\n margin-top: -3px\n"],"names":[],"version":3,"file":"map-interface.473f1f2b.js.map"}
@@ -1,5 +1,5 @@
1
- import $9t1N0$mainmodule504d756bjs from "./main.module.504d756b.js";
2
- import "../cjs/main.module.16d04f5b.css";
1
+ import $9t1N0$mapinterface065737fejs from "./map-interface.065737fe.js";
2
+ import "../cjs/map-interface.4a401c1f.css";
3
3
  import {useRef as $9t1N0$useRef} from "react";
4
4
  import {ScaleControl as $9t1N0$ScaleControl, GeolocateControl as $9t1N0$GeolocateControl} from "mapbox-gl";
5
5
  import $9t1N0$macrostrathyper from "@macrostrat/hyper";
@@ -16,7 +16,7 @@ function $parcel$interopDefault(a) {
16
16
 
17
17
 
18
18
 
19
- const $91d5aa004eeb2226$var$h = (0, $9t1N0$macrostrathyper).styled((0, ($parcel$interopDefault($9t1N0$mainmodule504d756bjs))));
19
+ const $91d5aa004eeb2226$var$h = (0, $9t1N0$macrostrathyper).styled((0, ($parcel$interopDefault($9t1N0$mapinterface065737fejs))));
20
20
  function $91d5aa004eeb2226$var$ScaleControl(props) {
21
21
  const optionsRef = (0, $9t1N0$useRef)({
22
22
  maxWidth: 200,
@@ -71,4 +71,4 @@ function $91d5aa004eeb2226$export$db1a2e058a06fb5c({ children: children }) {
71
71
 
72
72
 
73
73
  export {$91d5aa004eeb2226$export$db1a2e058a06fb5c as MapBottomControls};
74
- //# sourceMappingURL=controls.8efb9074.js.map
74
+ //# sourceMappingURL=map-interface.50edfdfd.js.map
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;AAcA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,sEAAK;AAE5B,SAAS,mCAAa,KAAK;IACzB,MAAM,aAAa,CAAA,GAAA,aAAK,EAAE;QACxB,UAAU;QACV,MAAM;IACR;IACA,OAAO,wBAAE,CAAA,GAAA,wBAAgB,GAAG;QAC1B,WAAW;QACX,SAAS,CAAA,GAAA,mBAAe;QACxB,SAAS,WAAW,OAAO;QAC3B,GAAG,KAAK;IACV;AACF;AAEA,SAAS,yCAAmB,KAAK;IAC/B,MAAM,aAAa,CAAA,GAAA,aAAK,EAAE;QACxB,oBAAoB;QACpB,kBAAkB;QAClB,mBAAmB;QACnB,iBAAiB;YACf,oBAAoB;QACtB;IACF;IACA,OAAO,wBAAE,CAAA,GAAA,wBAAgB,GAAG;QAC1B,SAAS,CAAA,GAAA,uBAAe;QACxB,SAAS,WAAW,OAAO;QAC3B,GAAG,KAAK;IACV;AACF;AAEO,SAAS,0CAAkB,YAAE,QAAQ,EAAE;IAC5C,MAAM,iBAAE,aAAa,EAAE,GAAG,CAAA,GAAA,mBAAW;IAErC,IAAI,CAAC,eACH,OAAO;IAGT,OAAO,wBAAE,oBAAoB;QAC3B,wBAAE;QACF,wBAAE,CAAA,GAAA,oBAAY,GAAG;YAAE,WAAW;QAAiB;QAC/C,wBAAE,CAAA,GAAA,qBAAa,GAAG;YAAE,WAAW;QAAkB;QACjD,wBAAE,CAAA,GAAA,mBAAW,GAAG;YAAE,WAAW;QAAgB;QAC7C,wBAAE,0CAAoB;YAAE,WAAW;QAAsB;QACzD,+DAA+D;QAC/D,wBAAE,CAAA,GAAA,yBAAiB,GAAG;YAAE,WAAW;QAAc;QACjD;KACD;AACH","sources":["packages/map-interface/src/controls.ts"],"sourcesContent":["import { useRef } from \"react\";\nimport { GeolocateControl } from \"mapbox-gl\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport {\n CompassControl,\n GlobeControl,\n ThreeDControl,\n MapControlWrapper,\n useMapStatus,\n} from \"@macrostrat/mapbox-react\";\nimport { ScaleControl as BaseScaleControl } from \"mapbox-gl\";\nimport { DevToolsButtonSlot } from \"@macrostrat/ui-components\";\n\nconst h = hyper.styled(styles);\n\nfunction ScaleControl(props) {\n const optionsRef = useRef({\n maxWidth: 200,\n unit: \"metric\",\n });\n return h(MapControlWrapper, {\n className: \"map-scale-control\",\n control: BaseScaleControl,\n options: optionsRef.current,\n ...props,\n });\n}\n\nfunction GeolocationControl(props) {\n const optionsRef = useRef({\n showAccuracyCircle: true,\n showUserLocation: true,\n trackUserLocation: true,\n positionOptions: {\n enableHighAccuracy: true,\n },\n });\n return h(MapControlWrapper, {\n control: GeolocateControl,\n options: optionsRef.current,\n ...props,\n });\n}\n\nexport function MapBottomControls({ children }) {\n const { isInitialized } = useMapStatus();\n\n if (!isInitialized) {\n return null;\n }\n\n return h(\"div.map-controls\", [\n h(ScaleControl),\n h(ThreeDControl, { className: \"map-3d-control\" }),\n h(CompassControl, { className: \"compass-control\" }),\n h(GlobeControl, { className: \"globe-control\" }),\n h(GeolocationControl, { className: \"geolocation-control\" }),\n // If we have global development tools enabled, show the button\n h(DevToolsButtonSlot, { className: \"map-control\" }),\n children,\n ]);\n}\n"],"names":[],"version":3,"file":"controls.8efb9074.js.map"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;;AAcA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,wEAAK;AAE5B,SAAS,mCAAa,KAAK;IACzB,MAAM,aAAa,CAAA,GAAA,aAAK,EAAE;QACxB,UAAU;QACV,MAAM;IACR;IACA,OAAO,wBAAE,CAAA,GAAA,wBAAgB,GAAG;QAC1B,WAAW;QACX,SAAS,CAAA,GAAA,mBAAe;QACxB,SAAS,WAAW,OAAO;QAC3B,GAAG,KAAK;IACV;AACF;AAEA,SAAS,yCAAmB,KAAK;IAC/B,MAAM,aAAa,CAAA,GAAA,aAAK,EAAE;QACxB,oBAAoB;QACpB,kBAAkB;QAClB,mBAAmB;QACnB,iBAAiB;YACf,oBAAoB;QACtB;IACF;IACA,OAAO,wBAAE,CAAA,GAAA,wBAAgB,GAAG;QAC1B,SAAS,CAAA,GAAA,uBAAe;QACxB,SAAS,WAAW,OAAO;QAC3B,GAAG,KAAK;IACV;AACF;AAEO,SAAS,0CAAkB,YAAE,QAAQ,EAAE;IAC5C,MAAM,iBAAE,aAAa,EAAE,GAAG,CAAA,GAAA,mBAAW;IAErC,IAAI,CAAC,eACH,OAAO;IAGT,OAAO,wBAAE,oBAAoB;QAC3B,wBAAE;QACF,wBAAE,CAAA,GAAA,oBAAY,GAAG;YAAE,WAAW;QAAiB;QAC/C,wBAAE,CAAA,GAAA,qBAAa,GAAG;YAAE,WAAW;QAAkB;QACjD,wBAAE,CAAA,GAAA,mBAAW,GAAG;YAAE,WAAW;QAAgB;QAC7C,wBAAE,0CAAoB;YAAE,WAAW;QAAsB;QACzD,+DAA+D;QAC/D,wBAAE,CAAA,GAAA,yBAAiB,GAAG;YAAE,WAAW;QAAc;QACjD;KACD;AACH","sources":["packages/map-interface/src/controls.ts"],"sourcesContent":["import { useRef } from \"react\";\nimport { GeolocateControl } from \"mapbox-gl\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport {\n CompassControl,\n GlobeControl,\n ThreeDControl,\n MapControlWrapper,\n useMapStatus,\n} from \"@macrostrat/mapbox-react\";\nimport { ScaleControl as BaseScaleControl } from \"mapbox-gl\";\nimport { DevToolsButtonSlot } from \"@macrostrat/ui-components\";\n\nconst h = hyper.styled(styles);\n\nfunction ScaleControl(props) {\n const optionsRef = useRef({\n maxWidth: 200,\n unit: \"metric\",\n });\n return h(MapControlWrapper, {\n className: \"map-scale-control\",\n control: BaseScaleControl,\n options: optionsRef.current,\n ...props,\n });\n}\n\nfunction GeolocationControl(props) {\n const optionsRef = useRef({\n showAccuracyCircle: true,\n showUserLocation: true,\n trackUserLocation: true,\n positionOptions: {\n enableHighAccuracy: true,\n },\n });\n return h(MapControlWrapper, {\n control: GeolocateControl,\n options: optionsRef.current,\n ...props,\n });\n}\n\nexport function MapBottomControls({ children }) {\n const { isInitialized } = useMapStatus();\n\n if (!isInitialized) {\n return null;\n }\n\n return h(\"div.map-controls\", [\n h(ScaleControl),\n h(ThreeDControl, { className: \"map-3d-control\" }),\n h(CompassControl, { className: \"compass-control\" }),\n h(GlobeControl, { className: \"globe-control\" }),\n h(GeolocationControl, { className: \"geolocation-control\" }),\n // If we have global development tools enabled, show the button\n h(DevToolsButtonSlot, { className: \"map-control\" }),\n children,\n ]);\n}\n"],"names":[],"version":3,"file":"map-interface.50edfdfd.js.map"}
@@ -1,6 +1,6 @@
1
- import $ddM1H$mainmodule5eb366dejs from "./main.module.5eb366de.js";
2
- import "../cjs/main.module.becc2fe7.css";
3
- import {ExpansionPanel as $d570ac304373e71c$export$40e646e38e6ed100} from "./expansion-panel.465b822f.js";
1
+ import $ddM1H$mapinterface957e414cjs from "./map-interface.957e414c.js";
2
+ import "../cjs/map-interface.26497065.css";
3
+ import {ExpansionPanel as $d570ac304373e71c$export$40e646e38e6ed100} from "./map-interface.3f07937e.js";
4
4
  import {Button as $ddM1H$Button, Intent as $ddM1H$Intent, Spinner as $ddM1H$Spinner, Switch as $ddM1H$Switch} from "@blueprintjs/core";
5
5
  import {useMapRef as $ddM1H$useMapRef, useMapStatus as $ddM1H$useMapStatus} from "@macrostrat/mapbox-react";
6
6
  import $ddM1H$macrostrathyper from "@macrostrat/hyper";
@@ -20,7 +20,7 @@ function $parcel$interopDefault(a) {
20
20
 
21
21
 
22
22
 
23
- const $b8c84b63e75fe4f2$var$h = (0, $ddM1H$macrostrathyper).styled((0, ($parcel$interopDefault($ddM1H$mainmodule5eb366dejs))));
23
+ const $b8c84b63e75fe4f2$var$h = (0, $ddM1H$macrostrathyper).styled((0, ($parcel$interopDefault($ddM1H$mapinterface957e414cjs))));
24
24
  function $b8c84b63e75fe4f2$export$2906e7f4b228efe9({ data: data, ...rest }) {
25
25
  // Instead of managing hover state with CSS, we use a state variable,
26
26
  // so that the button re-renders when the state changes
@@ -200,7 +200,7 @@ function $b8c84b63e75fe4f2$var$UnitNumber({ value: value, unit: unit, precision:
200
200
  $b8c84b63e75fe4f2$var$h("span.unit", unit)
201
201
  ]);
202
202
  }
203
- function $b8c84b63e75fe4f2$export$43277c51a01761c1({ features: features, focusedSource: focusedSource = null }) {
203
+ function $b8c84b63e75fe4f2$export$43277c51a01761c1({ features: features, focusedSource: focusedSource = null, focusedSourceTitle: focusedSourceTitle = null }) {
204
204
  if (features == null) return null;
205
205
  let focusedSourcePanel = null;
206
206
  let filteredFeatures = features;
@@ -208,7 +208,7 @@ function $b8c84b63e75fe4f2$export$43277c51a01761c1({ features: features, focused
208
208
  if (focusedSource != null) {
209
209
  title = "Basemap features";
210
210
  focusedSourcePanel = $b8c84b63e75fe4f2$var$h((0, $d570ac304373e71c$export$40e646e38e6ed100), {
211
- title: "Macrostrat features",
211
+ title: focusedSourceTitle ?? "Macrostrat features",
212
212
  className: "macrostrat-features",
213
213
  expanded: true
214
214
  }, [
@@ -255,4 +255,4 @@ function $b8c84b63e75fe4f2$export$617d79dae526d2cf({ features: features }) {
255
255
 
256
256
 
257
257
  export {$b8c84b63e75fe4f2$export$2906e7f4b228efe9 as FeatureProperties, $b8c84b63e75fe4f2$export$dc87b4d46cea200d as FeatureRecord, $b8c84b63e75fe4f2$export$214daccdda0f4ac6 as FeatureSelectionHandler, $b8c84b63e75fe4f2$export$617d79dae526d2cf as Features, $b8c84b63e75fe4f2$export$43c75dec9d0b96c as TileInfo, $b8c84b63e75fe4f2$export$43277c51a01761c1 as FeaturePanel};
258
- //# sourceMappingURL=vector-tile-features.53b48d66.js.map
258
+ //# sourceMappingURL=map-interface.786d6e58.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["packages/map-interface/src/dev/vector-tile-features.ts"],"sourcesContent":["import { Spinner, Switch, Button, Intent } from \"@blueprintjs/core\";\nimport { useMapRef, useMapStatus } from \"@macrostrat/mapbox-react\";\nimport mapboxgl from \"mapbox-gl\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { JSONView } from \"@macrostrat/ui-components\";\nimport { group } from \"d3-array\";\nimport { ExpansionPanel } from \"../expansion-panel\";\n\nconst h = hyper.styled(styles);\n\nexport function FeatureProperties({ data, ...rest }) {\n // Instead of managing hover state with CSS, we use a state variable,\n // so that the button re-renders when the state changes\n const [showControls, setShowControls] = useState(false);\n const onMouseEnter = useCallback(() => setShowControls(true), []);\n const onMouseLeave = useCallback(() => setShowControls(false), []);\n\n return h(\"div.feature-properties\", { onMouseEnter, onMouseLeave }, [\n h.if(showControls)(\"div.controls\", h(CopyJSONButton, { data })),\n h(JSONView, {\n data,\n hideRoot: true,\n ...rest,\n }),\n ]);\n}\n\nexport function FeatureRecord({ feature }) {\n const props = feature.properties;\n return h(\"div.feature-record\", [\n h.if(Object.keys(props).length > 0)(FeatureProperties, { data: props }),\n ]);\n}\n\nfunction CopyJSONButton({ data }) {\n const [copied, setCopied] = useState(false);\n return h(Button, {\n icon: copied ? \"tick\" : \"clipboard\",\n intent: copied ? Intent.SUCCESS : Intent.NONE,\n minimal: true,\n small: true,\n onClick() {\n navigator.clipboard.writeText(JSON.stringify(data, null, 2));\n setCopied(true);\n },\n });\n}\n\n/** This component wraps queryRenderedFeatures to get features at a given location */\nexport function FeatureSelectionHandler({\n selectedLocation,\n setFeatures,\n radius = 2,\n}: {\n selectedLocation: mapboxgl.LngLat;\n setFeatures: (features: mapboxgl.MapboxGeoJSONFeature[]) => void;\n radius?: number;\n}) {\n const mapRef = useMapRef();\n const isLoading = useMapStatus((s) => s.isLoading);\n const isInitialized = useMapStatus((s) => s.isInitialized);\n const prevLocation = useRef(null);\n const prevFeatures = useRef([]);\n\n useEffect(() => {\n const map = mapRef?.current;\n if (map == null) return;\n if (selectedLocation == null) {\n setFeatures(null);\n return;\n }\n\n if (!isInitialized) return;\n\n const hasPreviouslyLoadedFeatures = prevFeatures.current.length > 0;\n\n const locationMemo = JSON.stringify(selectedLocation);\n if (locationMemo == prevLocation.current && hasPreviouslyLoadedFeatures)\n return;\n\n prevLocation.current = locationMemo;\n\n // Don't update if the location hasn't changed\n //if (selectedLocation == prevLocation) return;\n\n const r = radius;\n const pt = map.project(selectedLocation);\n\n const bbox: [mapboxgl.PointLike, mapboxgl.PointLike] = [\n [pt.x - r, pt.y - r],\n [pt.x + r, pt.y + r],\n ];\n const features = map.queryRenderedFeatures(bbox);\n prevFeatures.current = features ?? [];\n setFeatures(features);\n }, [isInitialized, selectedLocation, isLoading]);\n\n return null;\n}\n\nfunction FeatureHeader({ feature }) {\n return h(\"div.feature-header\", [\n h(\"h3\", [\n h(KeyValue, { label: \"Source\", value: feature.source }),\n h(KeyValue, { label: \"Source layer\", value: feature.sourceLayer }),\n ]),\n ]);\n}\n\nfunction KeyValue({ label, value }) {\n return h(\"span.key-value\", [h(\"span.key\", label), h(\"code.value\", value)]);\n}\n\nfunction LoadingAwareFeatureSet({ features, sourceID }) {\n const map = useMapRef();\n if (map?.current == null) return null;\n const [isLoaded, setIsLoaded] = useState(false);\n\n const sourceFeatures = features.filter((d) => d.source == \"burwell\");\n\n useEffect(() => {\n if (sourceFeatures.length > 0) {\n setIsLoaded(true);\n return;\n }\n\n const isLoaded = map.current.isSourceLoaded(sourceID);\n setIsLoaded(isLoaded);\n if (!isLoaded) {\n map.current.once(\"sourcedata\", (e) => {\n if (e.sourceId == sourceID) {\n setIsLoaded(true);\n }\n });\n }\n }, [map.current, sourceID, sourceFeatures.length]);\n\n if (!isLoaded) return h(Spinner);\n return h(Features, { features: sourceFeatures });\n}\n\nexport function TileInfo({ feature, showExtent, setShowExtent }) {\n if (feature == null) return null;\n const size = feature._vectorTileFeature._pbf.length;\n return h(\"div.tile-info\", [\n h(\"h3\", \"Tile\"),\n h(\"div.tile-index\", [\n h(KeyValue, { label: \"x\", value: feature._x }),\n h(KeyValue, { label: \"y\", value: feature._y }),\n h(KeyValue, { label: \"z\", value: feature._z }),\n ]),\n h(\"div.spacer\"),\n h(KeyValue, { label: \"Size\", value: formatSize(size) }),\n h(Switch, {\n label: \"Show extent\",\n alignIndicator: \"right\",\n checked: showExtent,\n onChange() {\n setShowExtent(!showExtent);\n },\n }),\n ]);\n}\n\nfunction formatSize(size: number) {\n if (size > 1000000)\n return h(UnitNumber, { value: size / 1000000, unit: \"Mb\" });\n if (size > 1000) return h(UnitNumber, { value: size / 1000, unit: \"Kb\" });\n return `${size} bytes`;\n}\n\nfunction UnitNumber({ value, unit, precision = 1 }) {\n return h(\"span.unit-number\", [\n h(\"span.number\", value.toFixed(precision)),\n h(\"span.unit\", unit),\n ]);\n}\n\nexport function FeaturePanel({\n features,\n focusedSource = null,\n focusedSourceTitle = null,\n}) {\n if (features == null) return null;\n\n let focusedSourcePanel = null;\n let filteredFeatures = features;\n let title = \"Features\";\n\n if (focusedSource != null) {\n title = \"Basemap features\";\n focusedSourcePanel = h(\n ExpansionPanel,\n {\n title: focusedSourceTitle ?? \"Macrostrat features\",\n className: \"macrostrat-features\",\n expanded: true,\n },\n [\n h(LoadingAwareFeatureSet, {\n features,\n sourceID: focusedSource,\n }),\n ],\n );\n filteredFeatures = features.filter((d) => d.source != focusedSource);\n }\n\n return h(\"div.feature-panel\", [\n focusedSourcePanel,\n h(\n ExpansionPanel,\n { title, className: \"basemap-features\", expanded: focusedSource == null },\n [\n h(FeatureGroups, {\n features: filteredFeatures,\n }),\n ],\n ),\n ]);\n}\n\nfunction FeatureGroups({ features }) {\n /** Group features by source and sourceLayer */\n if (features == null) return null;\n\n const groups = group(features, (d: any) => `${d.source} - ${d.sourceLayer}`);\n\n return h(\n \"div.feature-groups\",\n Array.from(groups).map(([key, features]) => {\n return h(\"div.feature-group\", [\n h(FeatureHeader, { feature: features[0] }),\n h(Features, { features }),\n ]);\n }),\n );\n}\n\nexport function Features({ features }) {\n return h(\n \"div.features\",\n features.map((feature, i) => h(FeatureRecord, { key: i, feature })),\n );\n}\n"],"names":[],"version":3,"file":"map-interface.786d6e58.js.map"}
@@ -49,4 +49,4 @@ $bfe9593b6c29b10b$export$ee954d6f5e1b21cc = "dev-index-page_48e225";
49
49
 
50
50
 
51
51
  export {$bfe9593b6c29b10b$exports as default};
52
- //# sourceMappingURL=main.module.5eb366de.js.map
52
+ //# sourceMappingURL=map-interface.957e414c.js.map
@@ -1 +1 @@
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;AAbA,4CAAkC;AAClC,4CAA8B;AAC9B,4CAAwB;AACxB,4CAA0B;AAC1B,4CAAuC;AACvC,4CAA6B;AAC7B,4CAAmC;AACnC,2CAAkC;AAClC,4CAA8B;AAC9B,4CAAmC;AACnC,2CAAgC;AAChC,4CAAyB;AACzB,4CAAyB;AACzB,4CAAmC","sources":["packages/map-interface/src/dev/main.module.sass"],"sourcesContent":[".feature-panel\n position: relative\n margin: 0 -1em\n\n.key-value\n display: inline-block\n margin-right: 1em\n\n .key\n font-weight: bold\n font-size: 0.9em\n\n &:after\n content: ': '\n\n .value\n font-size: 0.9em\n\n.feature-properties\n position: relative\n\n &:before\n content: \"–\"\n position: absolute\n top: 4px\n left: 0\n\n .controls\n display: flex\n flex-direction: row\n align-items: flex-end\n position: absolute\n top: 0\n right: 0\n gap: 0.5em\n\n.feature-header h3\n margin-bottom: 0\n margin-top: 0.5em\n\n.feature-group\n border-bottom: 1px solid var(--panel-rule-inner)\n margin-bottom: 0.5em\n\n &:last-child\n border-bottom: none\n\n.tile-info\n display: flex\n flex-direction: row\n align-items: baseline\n\n h3\n margin-right: 0.5em\n\n.opacity-slider\n margin: 0 1em 0.5em\n\n :global\n .bp5-slider-handle .bp5-slider-label\n background-color: var(--secondary-color)\n color: var(--text-color)\n\n.unit-number\n .unit\n font-size: 0.9em\n margin-left: 0.2em\n font-weight: bold\n\n.page\n margin: 2em auto\n max-width: 50em\n\n.dev-index-page\n overflow-y: scroll\n"],"names":[],"version":3,"file":"main.module.5eb366de.js.map"}
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;AAbA,4CAAkC;AAClC,4CAA8B;AAC9B,4CAAwB;AACxB,4CAA0B;AAC1B,4CAAuC;AACvC,4CAA6B;AAC7B,4CAAmC;AACnC,2CAAkC;AAClC,4CAA8B;AAC9B,4CAAmC;AACnC,2CAAgC;AAChC,4CAAyB;AACzB,4CAAyB;AACzB,4CAAmC","sources":["packages/map-interface/src/dev/main.module.sass"],"sourcesContent":[".feature-panel\n position: relative\n margin: 0 -1em\n\n.key-value\n display: inline-block\n margin-right: 1em\n\n .key\n font-weight: bold\n font-size: 0.9em\n\n &:after\n content: ': '\n\n .value\n font-size: 0.9em\n\n.feature-properties\n position: relative\n\n &:before\n content: \"–\"\n position: absolute\n top: 4px\n left: 0\n\n .controls\n display: flex\n flex-direction: row\n align-items: flex-end\n position: absolute\n top: 0\n right: 0\n gap: 0.5em\n\n.feature-header h3\n margin-bottom: 0\n margin-top: 0.5em\n\n.feature-group\n border-bottom: 1px solid var(--panel-rule-inner)\n margin-bottom: 0.5em\n\n &:last-child\n border-bottom: none\n\n.tile-info\n display: flex\n flex-direction: row\n align-items: baseline\n\n h3\n margin-right: 0.5em\n\n.opacity-slider\n margin: 0 1em 0.5em\n\n :global\n .bp5-slider-handle .bp5-slider-label\n background-color: var(--secondary-color)\n color: var(--text-color)\n\n.unit-number\n .unit\n font-size: 0.9em\n margin-left: 0.2em\n font-weight: bold\n\n.page\n margin: 2em auto\n max-width: 50em\n\n.dev-index-page\n overflow-y: scroll\n"],"names":[],"version":3,"file":"map-interface.957e414c.js.map"}
@@ -1,7 +1,7 @@
1
- import $jKrEn$mainmodule504d756bjs from "./main.module.504d756b.js";
2
- import "../cjs/main.module.16d04f5b.css";
3
- import {MapLoadingReporter as $4bc3dd5f0732eed3$export$e57f9eaa51773f82, MapMovedReporter as $4bc3dd5f0732eed3$export$f6eeee399afc4e9a, MapResizeManager as $4bc3dd5f0732eed3$export$31b2e088aff2dc5d, MapPaddingManager as $4bc3dd5f0732eed3$export$2ab96428dea558d6} from "./helpers.d32a342a.js";
4
- import {getMapPadding as $82fe09613877ffc2$export$bb78f9f01775eef1} from "./utils.d40349f0.js";
1
+ import $jKrEn$mapinterface065737fejs from "./map-interface.065737fe.js";
2
+ import "../cjs/map-interface.4a401c1f.css";
3
+ import {MapLoadingReporter as $4bc3dd5f0732eed3$export$e57f9eaa51773f82, MapMovedReporter as $4bc3dd5f0732eed3$export$f6eeee399afc4e9a, MapPaddingManager as $4bc3dd5f0732eed3$export$2ab96428dea558d6, MapResizeManager as $4bc3dd5f0732eed3$export$31b2e088aff2dc5d} from "./map-interface.45814073.js";
4
+ import {getMapPadding as $82fe09613877ffc2$export$bb78f9f01775eef1} from "./map-interface.3033c825.js";
5
5
  import $jKrEn$macrostrathyper from "@macrostrat/hyper";
6
6
  import {useMapDispatch as $jKrEn$useMapDispatch, useMapRef as $jKrEn$useMapRef, useMapStatus as $jKrEn$useMapStatus, getTerrainLayerForStyle as $jKrEn$getTerrainLayerForStyle, useMapPosition as $jKrEn$useMapPosition, use3DTerrain as $jKrEn$use3DTerrain} from "@macrostrat/mapbox-react";
7
7
  import {setMapPosition as $jKrEn$setMapPosition, getMapPosition as $jKrEn$getMapPosition, mapViewInfo as $jKrEn$mapViewInfo, mergeStyles as $jKrEn$mergeStyles, getMapboxStyle as $jKrEn$getMapboxStyle} from "@macrostrat/mapbox-utils";
@@ -26,7 +26,7 @@ function $parcel$interopDefault(a) {
26
26
 
27
27
 
28
28
 
29
- const $0118fc9193bb1bf4$var$h = (0, $jKrEn$macrostrathyper).styled((0, ($parcel$interopDefault($jKrEn$mainmodule504d756bjs))));
29
+ const $0118fc9193bb1bf4$var$h = (0, $jKrEn$macrostrathyper).styled((0, ($parcel$interopDefault($jKrEn$mapinterface065737fejs))));
30
30
  function $0118fc9193bb1bf4$var$defaultInitializeMap(container, args = {}) {
31
31
  const { mapPosition: mapPosition, ...rest } = args;
32
32
  const map = new (0, $jKrEn$mapboxgl).Map({
@@ -35,6 +35,8 @@ function $0118fc9193bb1bf4$var$defaultInitializeMap(container, args = {}) {
35
35
  logoPosition: "bottom-left",
36
36
  trackResize: true,
37
37
  antialias: true,
38
+ // This is a legacy option for Mapbox GL v2
39
+ // @ts-ignore
38
40
  optimizeForTerrain: true,
39
41
  ...rest
40
42
  });
@@ -197,4 +199,4 @@ function $0118fc9193bb1bf4$export$cee395a8a2a00b29({ mapUse3D: mapUse3D, terrain
197
199
 
198
200
 
199
201
  export {$0118fc9193bb1bf4$export$ab1e7a67d6ec5ad8 as MapView, $0118fc9193bb1bf4$export$cee395a8a2a00b29 as MapTerrainManager};
200
- //# sourceMappingURL=map-view.d1c5b113.js.map
202
+ //# sourceMappingURL=map-interface.9ce3d553.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["packages/map-interface/src/map-view.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport {\n useMapRef,\n useMapDispatch,\n useMapPosition,\n use3DTerrain,\n getTerrainLayerForStyle,\n useMapStatus,\n} from \"@macrostrat/mapbox-react\";\nimport {\n mapViewInfo,\n MapPosition,\n setMapPosition,\n getMapPosition,\n getMapboxStyle,\n mergeStyles,\n} from \"@macrostrat/mapbox-utils\";\nimport classNames from \"classnames\";\nimport mapboxgl from \"mapbox-gl\";\nimport { useEffect, useRef, useState } from \"react\";\nimport styles from \"./main.module.sass\";\nimport {\n MapLoadingReporter,\n MapMovedReporter,\n MapPaddingManager,\n MapResizeManager,\n} from \"./helpers\";\nimport \"mapbox-gl/dist/mapbox-gl.css\";\nimport { getMapPadding } from \"./utils\";\nimport { useAsyncEffect } from \"@macrostrat/ui-components\";\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 /** This map sets its own viewport, rather than being positioned by a parent.\n * This is a hack to ensure that the map can overflow its \"safe area\" when false */\n standalone?: boolean;\n /** Overlay styles to apply to the map: a list of mapbox style objects or fragments to\n * overlay on top of the main map style at runtime */\n overlayStyles?: Partial<mapboxgl.Style>[];\n /** A function to transform the map style before it is loaded */\n transformStyle?: (style: mapboxgl.Style) => mapboxgl.Style;\n}\n\nexport interface MapboxOptionsExt extends MapboxCoreOptions {\n mapPosition?: MapPosition;\n}\n\nfunction defaultInitializeMap(container, args: MapboxOptionsExt = {}) {\n const { mapPosition, ...rest } = args;\n\n const map = new mapboxgl.Map({\n container,\n maxZoom: 18,\n logoPosition: \"bottom-left\",\n trackResize: true,\n antialias: true,\n // This is a legacy option for Mapbox GL v2\n // @ts-ignore\n optimizeForTerrain: true,\n ...rest,\n });\n\n let _mapPosition = mapPosition;\n if (_mapPosition == null && rest.center == null && rest.bounds == null) {\n // If no map positioning information is provided, we use the default\n _mapPosition = defaultMapPosition;\n }\n\n // set initial map position\n if (_mapPosition != null) {\n setMapPosition(map, _mapPosition);\n }\n\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,\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 standalone = false,\n overlayStyles,\n transformStyle,\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 const [baseStyle, setBaseStyle] = useState<mapboxgl.Style>(null);\n const isStyleLoaded = useMapStatus((state) => state.isStyleLoaded);\n\n useEffect(() => {\n /** Manager to update map style */\n if (baseStyle == null) return;\n let map = mapRef.current;\n\n /** If we can, we try to update the map style with terrain information\n * immediately, before the style is loaded. This allows us to avoid a\n * flash of the map without terrain.\n *\n * To do this, we need to estimate the map position before load, which\n * doesn't always work.\n */\n // We either get the map position directly from the map or from props\n const estMapPosition: MapPosition | null =\n map == null ? mapPosition : getMapPosition(map);\n const { mapUse3D } = mapViewInfo(estMapPosition);\n\n let newStyle: mapboxgl.Style = baseStyle;\n\n const overlayStyles = props.overlayStyles ?? [];\n\n if (overlayStyles.length > 0) {\n newStyle = mergeStyles(newStyle, ...overlayStyles);\n }\n\n if (mapUse3D) {\n // We can update the style with terrain layers immediately\n const terrainStyle = getTerrainLayerForStyle(newStyle, terrainSourceID);\n newStyle = mergeStyles(newStyle, terrainStyle);\n }\n\n if (transformStyle != null) {\n newStyle = transformStyle(newStyle);\n }\n\n if (map != null) {\n console.log(\"Setting style\", newStyle);\n dispatch({ type: \"set-style-loaded\", payload: false });\n map.setStyle(newStyle);\n } else {\n console.log(\"Initializing map\", newStyle);\n const map = initializeMap(ref.current, {\n style: newStyle,\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 }, [baseStyle, overlayStyles, transformStyle]);\n\n /** Check back every 0.1 seconds to see if the map has loaded.\n * We do it this way because mapboxgl loading events are unreliable */\n useEffect(() => {\n if (isStyleLoaded) return;\n const interval = setInterval(() => {\n const map = mapRef.current;\n if (map == null) return;\n if (map.isStyleLoaded()) {\n // Wait a tick before setting the style loaded state\n dispatch({ type: \"set-style-loaded\", payload: true });\n onStyleLoaded?.(map);\n clearInterval(interval);\n }\n }, 50);\n return () => clearInterval(interval);\n }, [isStyleLoaded]);\n\n useAsyncEffect(async () => {\n /** Manager to update map style */\n let newStyle: mapboxgl.Style;\n if (typeof style === \"string\") {\n newStyle = await getMapboxStyle(style, {\n access_token: mapboxgl.accessToken,\n });\n } else {\n newStyle = style;\n }\n setBaseStyle(newStyle);\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 const parentClassName = classNames({\n standalone,\n });\n\n return h(\n \"div.map-view-container.main-view\",\n { ref: parentRef, className: parentClassName },\n [\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, {\n containerRef: ref,\n parentRef,\n infoMarkerPosition,\n }),\n h(MapTerrainManager, { mapUse3D, terrainSourceID, style }),\n children,\n ],\n );\n}\n\nexport function MapTerrainManager({\n mapUse3D,\n terrainSourceID,\n style,\n}: {\n mapUse3D?: boolean;\n terrainSourceID?: string;\n style?: mapboxgl.Style | string;\n}) {\n use3DTerrain(mapUse3D, terrainSourceID);\n\n return null;\n}\n"],"names":[],"version":3,"file":"map-interface.9ce3d553.js.map"}
@@ -25,4 +25,4 @@ function $3e1bd09be8f70c4c$export$7c4d25c0c3217d8c(val, precision = 0) {
25
25
 
26
26
 
27
27
  export {$3e1bd09be8f70c4c$export$97c1b10e131a836d as fmt4, $3e1bd09be8f70c4c$export$b1cb0f7fb990b3ea as fmt3, $3e1bd09be8f70c4c$export$4c173b1b2f78faf7 as fmt2, $3e1bd09be8f70c4c$export$e54bbd2c33d17485 as fmt1, $3e1bd09be8f70c4c$export$bc135f63e2f56fd4 as fmtInt, $3e1bd09be8f70c4c$export$7c4d25c0c3217d8c as formatValue};
28
- //# sourceMappingURL=utils.122d1f2d.js.map
28
+ //# sourceMappingURL=map-interface.c4fa120d.js.map
@@ -1 +1 @@
1
- {"mappings":";;;AAEO,MAAM,4CAAO,CAAA,GAAA,aAAK,EAAE;AACpB,MAAM,4CAAO,CAAA,GAAA,aAAK,EAAE;AACpB,MAAM,4CAAO,CAAA,GAAA,aAAK,EAAE;AACpB,MAAM,4CAAO,CAAA,GAAA,aAAK,EAAE;AACpB,MAAM,4CAAS,CAAA,GAAA,aAAK,EAAE;AAEtB,SAAS,0CAAY,GAAW,EAAE,YAAoB,CAAC;IAC5D,OAAQ;QACN,KAAK;YACH,OAAO,0CAAK;QACd,KAAK;YACH,OAAO,0CAAK;QACd,KAAK;YACH,OAAO,0CAAK;QACd,KAAK;YACH,OAAO,0CAAK;QACd,KAAK;YACH,OAAO,0CAAO;QAChB;YACE,OAAO,0CAAK;IAChB;AACF","sources":["packages/map-interface/src/location-info/utils.ts"],"sourcesContent":["import { format } from \"d3-format\";\n\nexport const fmt4 = format(\".4~f\");\nexport const fmt3 = format(\".3~f\");\nexport const fmt2 = format(\".2~f\");\nexport const fmt1 = format(\".1~f\");\nexport const fmtInt = format(\".0f\");\n\nexport function formatValue(val: number, precision: number = 0): string {\n switch (precision) {\n case 4:\n return fmt4(val);\n case 3:\n return fmt3(val);\n case 2:\n return fmt2(val);\n case 1:\n return fmt1(val);\n case 0:\n return fmtInt(val);\n default:\n return fmt4(val);\n }\n}\n"],"names":[],"version":3,"file":"utils.122d1f2d.js.map"}
1
+ {"mappings":";;;AAEO,MAAM,4CAAO,CAAA,GAAA,aAAK,EAAE;AACpB,MAAM,4CAAO,CAAA,GAAA,aAAK,EAAE;AACpB,MAAM,4CAAO,CAAA,GAAA,aAAK,EAAE;AACpB,MAAM,4CAAO,CAAA,GAAA,aAAK,EAAE;AACpB,MAAM,4CAAS,CAAA,GAAA,aAAK,EAAE;AAEtB,SAAS,0CAAY,GAAW,EAAE,YAAoB,CAAC;IAC5D,OAAQ;QACN,KAAK;YACH,OAAO,0CAAK;QACd,KAAK;YACH,OAAO,0CAAK;QACd,KAAK;YACH,OAAO,0CAAK;QACd,KAAK;YACH,OAAO,0CAAK;QACd,KAAK;YACH,OAAO,0CAAO;QAChB;YACE,OAAO,0CAAK;IAChB;AACF","sources":["packages/map-interface/src/location-info/utils.ts"],"sourcesContent":["import { format } from \"d3-format\";\n\nexport const fmt4 = format(\".4~f\");\nexport const fmt3 = format(\".3~f\");\nexport const fmt2 = format(\".2~f\");\nexport const fmt1 = format(\".1~f\");\nexport const fmtInt = format(\".0f\");\n\nexport function formatValue(val: number, precision: number = 0): string {\n switch (precision) {\n case 4:\n return fmt4(val);\n case 3:\n return fmt3(val);\n case 2:\n return fmt2(val);\n case 1:\n return fmt1(val);\n case 0:\n return fmtInt(val);\n default:\n return fmt4(val);\n }\n}\n"],"names":[],"version":3,"file":"map-interface.c4fa120d.js.map"}
@@ -40,4 +40,4 @@ $29ab0212ea6844d0$export$8cc075c801fd6817 = `VPa3-W_spacer`;
40
40
 
41
41
 
42
42
  export {$29ab0212ea6844d0$exports as default};
43
- //# sourceMappingURL=main.module.303f6d99.js.map
43
+ //# sourceMappingURL=map-interface.c99b53b6.js.map
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AAVA,4CAAqC,CAAC,uBAAuB,CAAC;AAC9D,4CAAiC,CAAC,mBAAmB,CAAC;AACtD,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: var(--panel-header-gap, 0.5rem)\n min-height: var(--panel-header-height, 40px)\n border-bottom: 1px solid var(--panel-rule-color)\n &.fixed-height\n height: var(--panel-header-height, 40px)\n\n .spacer\n flex-grow: 1\n // Ensure the spacer is not extra wide\n margin-right: calc(-1 * var(--panel-header-gap, 0.5rem))\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 font-size: 16px\n overflow: hidden\n text-overflow: ellipsis\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-y: hidden\n background-color: var(--panel-background-color)\n --panel-padding: 0\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\n &>:first-child\n margin-top: 1rem\n &>div:first-child\n margin-top: 0\n &>:last-child\n margin-bottom: 1rem\n &>div:last-child\n margin-bottom: 0\n\n// The scrollable body of the infodrawer\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.303f6d99.js.map"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AAVA,4CAAqC,CAAC,uBAAuB,CAAC;AAC9D,4CAAiC,CAAC,mBAAmB,CAAC;AACtD,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: var(--panel-header-gap, 0.5rem)\n min-height: var(--panel-header-height, 40px)\n border-bottom: 1px solid var(--panel-rule-color)\n &.fixed-height\n height: var(--panel-header-height, 40px)\n\n .spacer\n flex-grow: 1\n // Ensure the spacer is not extra wide\n margin-right: calc(-1 * var(--panel-header-gap, 0.5rem))\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 font-size: 16px\n overflow: hidden\n text-overflow: ellipsis\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-y: hidden\n background-color: var(--panel-background-color)\n --panel-padding: 0\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\n &>:first-child\n margin-top: 1rem\n &>div:first-child\n margin-top: 0\n &>:last-child\n margin-bottom: 1rem\n &>div:last-child\n margin-bottom: 0\n\n// The scrollable body of the infodrawer\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":"map-interface.c99b53b6.js.map"}
@@ -1,6 +1,6 @@
1
- import "../cjs/main.module.13eb33f8.css";
2
- import $fU9jX$mainmodule303f6d99js from "./main.module.303f6d99.js";
3
- import {LngLatCoords as $4fae2d573d730db8$export$f195b3550849e560, Elevation as $4fae2d573d730db8$export$58bfb4f6ec5aa58d} from "./location-info.4b39fdfc.js";
1
+ import "../cjs/map-interface.1b386e07.css";
2
+ import $fU9jX$mapinterfacec99b53b6js from "./map-interface.c99b53b6.js";
3
+ import {Elevation as $4fae2d573d730db8$export$58bfb4f6ec5aa58d, LngLatCoords as $4fae2d573d730db8$export$f195b3550849e560} from "./map-interface.3ef9d0ae.js";
4
4
  import {Button as $fU9jX$Button, Icon as $fU9jX$Icon} from "@blueprintjs/core";
5
5
  import $fU9jX$macrostrathyper from "@macrostrat/hyper";
6
6
  import {useToaster as $fU9jX$useToaster} from "@macrostrat/ui-components";
@@ -18,7 +18,7 @@ function $parcel$interopDefault(a) {
18
18
 
19
19
 
20
20
 
21
- const $427faf94283514d4$var$h = (0, $fU9jX$macrostrathyper).styled((0, ($parcel$interopDefault($fU9jX$mainmodule303f6d99js))));
21
+ const $427faf94283514d4$var$h = (0, $fU9jX$macrostrathyper).styled((0, ($parcel$interopDefault($fU9jX$mapinterfacec99b53b6js))));
22
22
  function $427faf94283514d4$var$PositionButton({ position: position, bounds: bounds, showCopyLink: showCopyLink = false }) {
23
23
  const focusState = (0, $fU9jX$useFocusState)(position);
24
24
  const copyLinkIsVisible = (0, $fU9jX$isCentered)(focusState) && showCopyLink;
@@ -102,4 +102,4 @@ function $427faf94283514d4$export$e9ff14c4822c2e8c(props) {
102
102
 
103
103
 
104
104
  export {$427faf94283514d4$export$e9ff14c4822c2e8c as InfoDrawerHeader};
105
- //# sourceMappingURL=header.a3da6906.js.map
105
+ //# sourceMappingURL=map-interface.e1493866.js.map
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;AAcA,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;AAcO,SAAS,0CAAiB,KAA4B;IAC3D,MAAM,WACJ,OAAO,YACP,QAAQ,UACR,MAAM,QACN,OAAO,cACP,SAAS,0BACT,sBAAsB,eACtB,cAAc,iBACd,QAAQ,aACR,SAAS,EACV,GAAG;IAEJ,IAAI,aAAa;IACjB,IAAI,UAAU,QAAQ,YAAY,MAChC,aAAa,wBAAE,sCAAgB;kBAC7B;gBACA;QACA,cAAc;IAChB;IAGF,OAAO,wBACL,gCACA;QACE,WAAW,CAAA,GAAA,iBAAS,EAAE,WAAW;YAAE,gBAAgB;QAAY;IACjE,GACA;QACE;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;AAEL","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\";\nimport classNames from \"classnames\";\nimport type { ReactNode } from \"react\";\nimport type { LngLatBounds, LngLatLike } from \"mapbox-gl\";\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?: LngLatLike;\n zoom?: number;\n elevation?: number;\n showCopyPositionButton?: boolean;\n bounds?: LngLatBounds;\n fixedHeight?: boolean;\n children?: ReactNode;\n className?: string;\n}\n\nexport function InfoDrawerHeader(props: InfoDrawerHeaderProps) {\n const {\n onClose,\n position,\n bounds,\n zoom = 7,\n elevation,\n showCopyPositionButton,\n fixedHeight = false,\n children,\n className,\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(\n \"header.location-panel-header\",\n {\n className: classNames(className, { \"fixed-height\": fixedHeight }),\n },\n [\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}\n"],"names":[],"version":3,"file":"header.a3da6906.js.map"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;AAcA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,wEAAK;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;AAcO,SAAS,0CAAiB,KAA4B;IAC3D,MAAM,WACJ,OAAO,YACP,QAAQ,UACR,MAAM,QACN,OAAO,cACP,SAAS,0BACT,sBAAsB,eACtB,cAAc,iBACd,QAAQ,aACR,SAAS,EACV,GAAG;IAEJ,IAAI,aAAa;IACjB,IAAI,UAAU,QAAQ,YAAY,MAChC,aAAa,wBAAE,sCAAgB;kBAC7B;gBACA;QACA,cAAc;IAChB;IAGF,OAAO,wBACL,gCACA;QACE,WAAW,CAAA,GAAA,iBAAS,EAAE,WAAW;YAAE,gBAAgB;QAAY;IACjE,GACA;QACE;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;AAEL","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\";\nimport classNames from \"classnames\";\nimport type { ReactNode } from \"react\";\nimport type { LngLatBounds, LngLatLike } from \"mapbox-gl\";\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?: LngLatLike;\n zoom?: number;\n elevation?: number;\n showCopyPositionButton?: boolean;\n bounds?: LngLatBounds;\n fixedHeight?: boolean;\n children?: ReactNode;\n className?: string;\n}\n\nexport function InfoDrawerHeader(props: InfoDrawerHeaderProps) {\n const {\n onClose,\n position,\n bounds,\n zoom = 7,\n elevation,\n showCopyPositionButton,\n fixedHeight = false,\n children,\n className,\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(\n \"header.location-panel-header\",\n {\n className: classNames(className, { \"fixed-height\": fixedHeight }),\n },\n [\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}\n"],"names":[],"version":3,"file":"map-interface.e1493866.js.map"}
@@ -1,4 +1,4 @@
1
- import {fmt1 as $3e1bd09be8f70c4c$export$e54bbd2c33d17485, fmt2 as $3e1bd09be8f70c4c$export$4c173b1b2f78faf7, fmtInt as $3e1bd09be8f70c4c$export$bc135f63e2f56fd4} from "./utils.122d1f2d.js";
1
+ import {fmt1 as $3e1bd09be8f70c4c$export$e54bbd2c33d17485, fmt2 as $3e1bd09be8f70c4c$export$4c173b1b2f78faf7, fmtInt as $3e1bd09be8f70c4c$export$bc135f63e2f56fd4} from "./map-interface.c4fa120d.js";
2
2
  import {formatCoordForZoomLevel as $diowj$formatCoordForZoomLevel} from "@macrostrat/mapbox-utils";
3
3
 
4
4
 
@@ -58,4 +58,4 @@ function $bb5f34705d9c44bc$export$80abf1cbcc3918e4(hashData, centerPosition) {
58
58
 
59
59
 
60
60
  export {$bb5f34705d9c44bc$export$8391d1abb505ffb3 as applyMapPositionToHash, $bb5f34705d9c44bc$export$80abf1cbcc3918e4 as getMapPositionForHash};
61
- //# sourceMappingURL=hash-string.836601b2.js.map
61
+ //# sourceMappingURL=map-interface.e50c290f.js.map
@@ -1 +1 @@
1
- {"mappings":";;;;;AAgBO,SAAS,0CACd,IAAwB,EACxB,WAA+B;IAE/B,MAAM,MAAM,aAAa;IACzB,IAAI,OAAO,MAAM;IACjB,MAAM,OAAO,YAAY,MAAM,EAAE;IAEjC,KAAK,CAAC,GAAG,CAAA,GAAA,8BAAsB,EAAE,IAAI,GAAG,EAAE;IAC1C,KAAK,CAAC,GAAG,CAAA,GAAA,8BAAsB,EAAE,IAAI,GAAG,EAAE;IAE1C,IAAI,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,MAChD,KAAK,CAAC,GAAG,CAAA,GAAA,yCAAG,EAAE;SACT,IAAI,IAAI,QAAQ,IAAI;QACzB,IAAI,IAAI,QAAQ,GAAG,MACjB,KAAK,CAAC,GAAG,CAAA,GAAA,yCAAG,EAAE,IAAI,QAAQ,GAAG,QAAQ;aAErC,KAAK,CAAC,GAAG,CAAA,GAAA,yCAAK,EAAE,IAAI,QAAQ,IAAI;;IAGpC,IAAI,IAAI,OAAO,IAAI,GAAG;QACpB,IAAI,KAAK,IAAI,OAAO;QACpB,IAAI,KAAK,GAAG,MAAM;QAClB,KAAK,CAAC,GAAG,CAAA,GAAA,yCAAK,EAAE;IAClB;IACA,IAAI,IAAI,KAAK,IAAI,GACf,KAAK,CAAC,GAAG,CAAA,GAAA,yCAAK,EAAE,IAAI,KAAK;AAE7B;AAEA,SAAS,2BAAK,CAA6B;IACzC,IAAI,MAAM,OAAO,CAAC,IAChB,IAAI,CAAC,CAAC,EAAE;IAEV,OAAO,WAAW,EAAE,QAAQ;AAC9B;AAEO,SAAS,0CACd,QAA6B,EAC7B,cAA6B;IAE7B,MAAM,KACJ,IAAI,gBAAgB,OAAO,MAC3B,IAAI,gBAAgB,OAAO,MAC3B,mEAAmE;IACnE,IAAI,kBAAkB,OAAO,IAAI,MACjC,IAAI,MACJ,IAAI,GACL,GAAG;IAEJ,MAAM,MAAM,2BAAK;IACjB,MAAM,MAAM,2BAAK;IAEjB,IAAI,WAAW;IACf,IAAI,OAAO;IACX,MAAM,KAAK,EAAE,QAAQ;IACrB,IAAI,GAAG,QAAQ,CAAC,OACd,WAAW,2BAAK,GAAG,SAAS,CAAC,GAAG,GAAG,MAAM,GAAG,MAAM;SAC7C,IAAI,GAAG,QAAQ,CAAC,MACrB,WAAW,2BAAK,GAAG,SAAS,CAAC,GAAG,GAAG,MAAM,GAAG;SAE5C,OAAO,2BAAK;IAEd,MAAM,UAAU,2BAAK;IACrB,MAAM,QAAQ,2BAAK;IAEnB,IAAI,SAAS;IACb,IAAI,WAAW,KAAK,SAAS,KAAK,QAAQ,MACxC,SAAS;aACP;aACA;cACA;IACF;IAGF,OAAO;QACL,QAAQ;YACN,KAAK,2BAAK;YACV,KAAK,2BAAK;sBACV;YACA,SAAS,2BAAK;YACd,OAAO,2BAAK;QACd;gBACA;IACF;AACF","sources":["packages/map-interface/src/location-info/hash-string.ts"],"sourcesContent":["import {\n LatLng,\n MapPosition,\n formatCoordForZoomLevel,\n} from \"@macrostrat/mapbox-utils\";\nimport { ParsedQuery } from \"query-string\";\nimport { fmt1, fmt2, fmtInt } from \"./utils\";\n\ninterface LocationHashParams {\n x?: string;\n y?: string;\n z?: string;\n a?: string;\n e?: string;\n}\n\nexport function applyMapPositionToHash(\n args: LocationHashParams,\n mapPosition: MapPosition | null\n) {\n const pos = mapPosition?.camera;\n if (pos == null) return;\n const zoom = mapPosition.target?.zoom;\n\n args.x = formatCoordForZoomLevel(pos.lng, zoom);\n args.y = formatCoordForZoomLevel(pos.lat, zoom);\n\n if (pos.bearing == 0 && pos.pitch == 0 && zoom != null) {\n args.z = fmt1(zoom);\n } else if (pos.altitude != null) {\n if (pos.altitude > 5000) {\n args.z = fmt2(pos.altitude / 1000) + \"km\";\n } else {\n args.z = fmtInt(pos.altitude) + \"m\";\n }\n }\n if (pos.bearing != 0) {\n let az = pos.bearing;\n if (az < 0) az += 360;\n args.a = fmtInt(az);\n }\n if (pos.pitch != 0) {\n args.e = fmtInt(pos.pitch);\n }\n}\n\nfunction _fmt(x: string | number | string[]) {\n if (Array.isArray(x)) {\n x = x[0];\n }\n return parseFloat(x.toString());\n}\n\nexport function getMapPositionForHash(\n hashData: ParsedQuery<string>,\n centerPosition: LatLng | null\n): MapPosition {\n const {\n x = centerPosition?.lng ?? 0,\n y = centerPosition?.lat ?? 0,\n // Different default for zoom depending on whether we have a marker\n z = centerPosition != null ? 7 : 2,\n a = 0,\n e = 0,\n } = hashData;\n\n const lng = _fmt(x);\n const lat = _fmt(y);\n\n let altitude = null;\n let zoom = null;\n const _z = z.toString();\n if (_z.endsWith(\"km\")) {\n altitude = _fmt(_z.substring(0, _z.length - 2)) * 1000;\n } else if (_z.endsWith(\"m\")) {\n altitude = _fmt(_z.substring(0, _z.length - 1));\n } else {\n zoom = _fmt(z);\n }\n const bearing = _fmt(a);\n const pitch = _fmt(e);\n\n let target = undefined;\n if (bearing == 0 && pitch == 0 && zoom != null) {\n target = {\n lat,\n lng,\n zoom,\n };\n }\n\n return {\n camera: {\n lng: _fmt(x),\n lat: _fmt(y),\n altitude,\n bearing: _fmt(a),\n pitch: _fmt(e),\n },\n target,\n };\n}\n"],"names":[],"version":3,"file":"hash-string.836601b2.js.map"}
1
+ {"mappings":";;;;;AAgBO,SAAS,0CACd,IAAwB,EACxB,WAA+B;IAE/B,MAAM,MAAM,aAAa;IACzB,IAAI,OAAO,MAAM;IACjB,MAAM,OAAO,YAAY,MAAM,EAAE;IAEjC,KAAK,CAAC,GAAG,CAAA,GAAA,8BAAsB,EAAE,IAAI,GAAG,EAAE;IAC1C,KAAK,CAAC,GAAG,CAAA,GAAA,8BAAsB,EAAE,IAAI,GAAG,EAAE;IAE1C,IAAI,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,MAChD,KAAK,CAAC,GAAG,CAAA,GAAA,yCAAG,EAAE;SACT,IAAI,IAAI,QAAQ,IAAI;QACzB,IAAI,IAAI,QAAQ,GAAG,MACjB,KAAK,CAAC,GAAG,CAAA,GAAA,yCAAG,EAAE,IAAI,QAAQ,GAAG,QAAQ;aAErC,KAAK,CAAC,GAAG,CAAA,GAAA,yCAAK,EAAE,IAAI,QAAQ,IAAI;;IAGpC,IAAI,IAAI,OAAO,IAAI,GAAG;QACpB,IAAI,KAAK,IAAI,OAAO;QACpB,IAAI,KAAK,GAAG,MAAM;QAClB,KAAK,CAAC,GAAG,CAAA,GAAA,yCAAK,EAAE;IAClB;IACA,IAAI,IAAI,KAAK,IAAI,GACf,KAAK,CAAC,GAAG,CAAA,GAAA,yCAAK,EAAE,IAAI,KAAK;AAE7B;AAEA,SAAS,2BAAK,CAA6B;IACzC,IAAI,MAAM,OAAO,CAAC,IAChB,IAAI,CAAC,CAAC,EAAE;IAEV,OAAO,WAAW,EAAE,QAAQ;AAC9B;AAEO,SAAS,0CACd,QAA6B,EAC7B,cAA6B;IAE7B,MAAM,KACJ,IAAI,gBAAgB,OAAO,MAC3B,IAAI,gBAAgB,OAAO,MAC3B,mEAAmE;IACnE,IAAI,kBAAkB,OAAO,IAAI,MACjC,IAAI,MACJ,IAAI,GACL,GAAG;IAEJ,MAAM,MAAM,2BAAK;IACjB,MAAM,MAAM,2BAAK;IAEjB,IAAI,WAAW;IACf,IAAI,OAAO;IACX,MAAM,KAAK,EAAE,QAAQ;IACrB,IAAI,GAAG,QAAQ,CAAC,OACd,WAAW,2BAAK,GAAG,SAAS,CAAC,GAAG,GAAG,MAAM,GAAG,MAAM;SAC7C,IAAI,GAAG,QAAQ,CAAC,MACrB,WAAW,2BAAK,GAAG,SAAS,CAAC,GAAG,GAAG,MAAM,GAAG;SAE5C,OAAO,2BAAK;IAEd,MAAM,UAAU,2BAAK;IACrB,MAAM,QAAQ,2BAAK;IAEnB,IAAI,SAAS;IACb,IAAI,WAAW,KAAK,SAAS,KAAK,QAAQ,MACxC,SAAS;aACP;aACA;cACA;IACF;IAGF,OAAO;QACL,QAAQ;YACN,KAAK,2BAAK;YACV,KAAK,2BAAK;sBACV;YACA,SAAS,2BAAK;YACd,OAAO,2BAAK;QACd;gBACA;IACF;AACF","sources":["packages/map-interface/src/location-info/hash-string.ts"],"sourcesContent":["import {\n LatLng,\n MapPosition,\n formatCoordForZoomLevel,\n} from \"@macrostrat/mapbox-utils\";\nimport { ParsedQuery } from \"query-string\";\nimport { fmt1, fmt2, fmtInt } from \"./utils\";\n\ninterface LocationHashParams {\n x?: string;\n y?: string;\n z?: string;\n a?: string;\n e?: string;\n}\n\nexport function applyMapPositionToHash(\n args: LocationHashParams,\n mapPosition: MapPosition | null,\n) {\n const pos = mapPosition?.camera;\n if (pos == null) return;\n const zoom = mapPosition.target?.zoom;\n\n args.x = formatCoordForZoomLevel(pos.lng, zoom);\n args.y = formatCoordForZoomLevel(pos.lat, zoom);\n\n if (pos.bearing == 0 && pos.pitch == 0 && zoom != null) {\n args.z = fmt1(zoom);\n } else if (pos.altitude != null) {\n if (pos.altitude > 5000) {\n args.z = fmt2(pos.altitude / 1000) + \"km\";\n } else {\n args.z = fmtInt(pos.altitude) + \"m\";\n }\n }\n if (pos.bearing != 0) {\n let az = pos.bearing;\n if (az < 0) az += 360;\n args.a = fmtInt(az);\n }\n if (pos.pitch != 0) {\n args.e = fmtInt(pos.pitch);\n }\n}\n\nfunction _fmt(x: string | number | string[]) {\n if (Array.isArray(x)) {\n x = x[0];\n }\n return parseFloat(x.toString());\n}\n\nexport function getMapPositionForHash(\n hashData: ParsedQuery<string>,\n centerPosition: LatLng | null,\n): MapPosition {\n const {\n x = centerPosition?.lng ?? 0,\n y = centerPosition?.lat ?? 0,\n // Different default for zoom depending on whether we have a marker\n z = centerPosition != null ? 7 : 2,\n a = 0,\n e = 0,\n } = hashData;\n\n const lng = _fmt(x);\n const lat = _fmt(y);\n\n let altitude = null;\n let zoom = null;\n const _z = z.toString();\n if (_z.endsWith(\"km\")) {\n altitude = _fmt(_z.substring(0, _z.length - 2)) * 1000;\n } else if (_z.endsWith(\"m\")) {\n altitude = _fmt(_z.substring(0, _z.length - 1));\n } else {\n zoom = _fmt(z);\n }\n const bearing = _fmt(a);\n const pitch = _fmt(e);\n\n let target = undefined;\n if (bearing == 0 && pitch == 0 && zoom != null) {\n target = {\n lat,\n lng,\n zoom,\n };\n }\n\n return {\n camera: {\n lng: _fmt(x),\n lat: _fmt(y),\n altitude,\n bearing: _fmt(a),\n pitch: _fmt(e),\n },\n target,\n };\n}\n"],"names":[],"version":3,"file":"map-interface.e50c290f.js.map"}
@@ -1,7 +1,7 @@
1
- import {InfoDrawerHeader as $427faf94283514d4$export$e9ff14c4822c2e8c} from "./header.a3da6906.js";
2
- import "../cjs/main.module.13eb33f8.css";
3
- import $2cJVU$mainmodule303f6d99js from "./main.module.303f6d99.js";
4
- import {PanelCard as $4bdfa9cd8240b2fd$export$ec68dd77edbe678b} from "./container.1c2aa81d.js";
1
+ import {InfoDrawerHeader as $427faf94283514d4$export$e9ff14c4822c2e8c} from "./map-interface.e1493866.js";
2
+ import "../cjs/map-interface.1b386e07.css";
3
+ import $2cJVU$mapinterfacec99b53b6js from "./map-interface.c99b53b6.js";
4
+ import {PanelCard as $4bdfa9cd8240b2fd$export$ec68dd77edbe678b} from "./map-interface.27587c50.js";
5
5
  import $2cJVU$macrostrathyper from "@macrostrat/hyper";
6
6
  import $2cJVU$classnames from "classnames";
7
7
  import {ErrorBoundary as $2cJVU$ErrorBoundary} from "@macrostrat/ui-components";
@@ -16,7 +16,7 @@ function $parcel$interopDefault(a) {
16
16
 
17
17
 
18
18
 
19
- const $f50c3537aaff0cff$var$h = (0, $2cJVU$macrostrathyper).styled((0, ($parcel$interopDefault($2cJVU$mainmodule303f6d99js))));
19
+ const $f50c3537aaff0cff$var$h = (0, $2cJVU$macrostrathyper).styled((0, ($parcel$interopDefault($2cJVU$mapinterfacec99b53b6js))));
20
20
  function $f50c3537aaff0cff$export$83f9a19cf91c2d06(props) {
21
21
  const className = (0, $2cJVU$classnames)("infodrawer", props.className);
22
22
  return $f50c3537aaff0cff$var$h((0, $4bdfa9cd8240b2fd$export$ec68dd77edbe678b), {
@@ -55,4 +55,4 @@ function $f50c3537aaff0cff$export$aa4baff5242ea6e1(props) {
55
55
 
56
56
 
57
57
  export {$f50c3537aaff0cff$export$83f9a19cf91c2d06 as InfoDrawerContainer, $f50c3537aaff0cff$export$a5ddcc2a88716895 as BaseInfoDrawer, $f50c3537aaff0cff$export$e54a7f2505304e20 as DetailsPanel, $f50c3537aaff0cff$export$aa4baff5242ea6e1 as LocationPanel};
58
- //# sourceMappingURL=location-panel.c9942d88.js.map
58
+ //# sourceMappingURL=map-interface.e5349e97.js.map
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;AAQA,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;AAYO,SAAS,0CAAe,KAA0B;IACvD,MAAM,aACJ,SAAS,iBACT,gBAAgB,aAChB,KAAK,WACL,OAAO,YACP,QAAQ,oBACR,mBAAmB,2BACnB,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,wBAAE,uBAAuB,wBAAE,CAAA,GAAA,oBAAY,GAAG,wBAAE,kBAAkB;KAC/D;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\";\nimport { ComponentType } from \"react\";\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\ntype Component = string | ComponentType<any>;\n\ninterface BaseInfoDrawerProps extends InfoDrawerHeaderProps {\n className?: string;\n title?: string;\n headerElement?: JSX.Element;\n children?: React.ReactNode;\n contentContainer?: Component;\n}\n\nexport function BaseInfoDrawer(props: BaseInfoDrawerProps) {\n const {\n className,\n headerElement = null,\n title,\n onClose,\n children,\n contentContainer = \"div.infodrawer-contents\",\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(\"div.infodrawer-body\", h(ErrorBoundary, h(contentContainer, children))),\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.c9942d88.js.map"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;;AAQA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,wEAAK;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;AAYO,SAAS,0CAAe,KAA0B;IACvD,MAAM,aACJ,SAAS,iBACT,gBAAgB,aAChB,KAAK,WACL,OAAO,YACP,QAAQ,oBACR,mBAAmB,2BACnB,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,wBAAE,uBAAuB,wBAAE,CAAA,GAAA,oBAAY,GAAG,wBAAE,kBAAkB;KAC/D;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\";\nimport { ComponentType } from \"react\";\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\ntype Component = string | ComponentType<any>;\n\ninterface BaseInfoDrawerProps extends InfoDrawerHeaderProps {\n className?: string;\n title?: string;\n headerElement?: JSX.Element;\n children?: React.ReactNode;\n contentContainer?: Component;\n}\n\nexport function BaseInfoDrawer(props: BaseInfoDrawerProps) {\n const {\n className,\n headerElement = null,\n title,\n onClose,\n children,\n contentContainer = \"div.infodrawer-contents\",\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(\"div.infodrawer-body\", h(ErrorBoundary, h(contentContainer, children))),\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":"map-interface.e5349e97.js.map"}