@macrostrat/column-views 2.4.4 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (657) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/age-axis.cjs +123 -0
  3. package/dist/age-axis.cjs.map +1 -0
  4. package/dist/age-axis.d.ts +33 -0
  5. package/dist/age-axis.js +123 -0
  6. package/dist/age-axis.js.map +1 -0
  7. package/dist/age-axis.module.sass.cjs +18 -0
  8. package/dist/age-axis.module.sass.cjs.map +1 -0
  9. package/dist/age-axis.module.sass.js +18 -0
  10. package/dist/age-axis.module.sass.js.map +1 -0
  11. package/dist/age-model-overlay.cjs +48 -0
  12. package/dist/age-model-overlay.cjs.map +1 -0
  13. package/dist/age-model-overlay.d.ts +24 -0
  14. package/dist/age-model-overlay.js +48 -0
  15. package/dist/age-model-overlay.js.map +1 -0
  16. package/dist/age-model-overlay.module.sass.cjs +8 -0
  17. package/dist/age-model-overlay.module.sass.cjs.map +1 -0
  18. package/dist/age-model-overlay.module.sass.js +8 -0
  19. package/dist/age-model-overlay.module.sass.js.map +1 -0
  20. package/dist/column-views.css +685 -0
  21. package/dist/column.cjs +247 -0
  22. package/dist/column.cjs.map +1 -0
  23. package/dist/column.d.ts +44 -0
  24. package/dist/column.js +247 -0
  25. package/dist/column.js.map +1 -0
  26. package/dist/column.module.sass.cjs +33 -0
  27. package/dist/column.module.sass.cjs.map +1 -0
  28. package/dist/column.module.sass.js +33 -0
  29. package/dist/column.module.sass.js.map +1 -0
  30. package/dist/correlation-chart/hash-string.cjs +46 -0
  31. package/dist/correlation-chart/hash-string.cjs.map +1 -0
  32. package/dist/correlation-chart/hash-string.d.ts +3 -0
  33. package/dist/correlation-chart/hash-string.js +46 -0
  34. package/dist/correlation-chart/hash-string.js.map +1 -0
  35. package/dist/correlation-chart/index.d.ts +2 -0
  36. package/dist/correlation-chart/main.cjs +202 -0
  37. package/dist/correlation-chart/main.cjs.map +1 -0
  38. package/dist/correlation-chart/main.d.ts +15 -0
  39. package/dist/correlation-chart/main.js +202 -0
  40. package/dist/correlation-chart/main.js.map +1 -0
  41. package/dist/correlation-chart/main.module.sass.cjs +28 -0
  42. package/dist/correlation-chart/main.module.sass.cjs.map +1 -0
  43. package/dist/correlation-chart/main.module.sass.js +28 -0
  44. package/dist/correlation-chart/main.module.sass.js.map +1 -0
  45. package/dist/correlation-chart/prepare-data.cjs +62 -0
  46. package/dist/correlation-chart/prepare-data.cjs.map +1 -0
  47. package/dist/correlation-chart/prepare-data.d.ts +52 -0
  48. package/dist/correlation-chart/prepare-data.js +62 -0
  49. package/dist/correlation-chart/prepare-data.js.map +1 -0
  50. package/dist/correlation-chart/stories/utils.d.ts +6 -0
  51. package/dist/correlation-chart/unconformity-line.d.ts +3 -0
  52. package/dist/data-provider/base.cjs +349 -0
  53. package/dist/data-provider/base.cjs.map +1 -0
  54. package/dist/data-provider/base.d.ts +65 -0
  55. package/dist/data-provider/base.js +349 -0
  56. package/dist/data-provider/base.js.map +1 -0
  57. package/dist/data-provider/column-nav.cjs +36 -0
  58. package/dist/data-provider/column-nav.cjs.map +1 -0
  59. package/dist/data-provider/column-nav.d.ts +13 -0
  60. package/dist/data-provider/column-nav.js +36 -0
  61. package/dist/data-provider/column-nav.js.map +1 -0
  62. package/dist/data-provider/core.cjs +56 -0
  63. package/dist/data-provider/core.cjs.map +1 -0
  64. package/dist/data-provider/core.d.ts +31 -0
  65. package/dist/data-provider/core.js +56 -0
  66. package/dist/{esm/column-views.67804ce5.js.map → data-provider/core.js.map} +1 -1
  67. package/dist/data-provider/fetch.cjs +210 -0
  68. package/dist/data-provider/fetch.cjs.map +1 -0
  69. package/dist/data-provider/fetch.d.ts +27 -0
  70. package/dist/data-provider/fetch.js +210 -0
  71. package/dist/data-provider/fetch.js.map +1 -0
  72. package/dist/data-provider/index.d.ts +5 -0
  73. package/dist/data-provider/store.cjs +107 -0
  74. package/dist/data-provider/store.cjs.map +1 -0
  75. package/dist/data-provider/store.d.ts +34 -0
  76. package/dist/data-provider/store.js +107 -0
  77. package/dist/data-provider/store.js.map +1 -0
  78. package/dist/data-provider/unit-selection.cjs +225 -0
  79. package/dist/data-provider/unit-selection.cjs.map +1 -0
  80. package/dist/data-provider/unit-selection.d.ts +49 -0
  81. package/dist/data-provider/unit-selection.js +225 -0
  82. package/dist/data-provider/unit-selection.js.map +1 -0
  83. package/dist/facets/carbon-isotopes/data-area.cjs +64 -0
  84. package/dist/facets/carbon-isotopes/data-area.cjs.map +1 -0
  85. package/dist/facets/carbon-isotopes/data-area.d.ts +13 -0
  86. package/dist/facets/carbon-isotopes/data-area.js +64 -0
  87. package/dist/facets/carbon-isotopes/data-area.js.map +1 -0
  88. package/dist/facets/carbon-isotopes/data-provider.cjs +20 -0
  89. package/dist/facets/carbon-isotopes/data-provider.cjs.map +1 -0
  90. package/dist/facets/carbon-isotopes/data-provider.d.ts +4 -0
  91. package/dist/facets/carbon-isotopes/data-provider.js +20 -0
  92. package/dist/facets/carbon-isotopes/data-provider.js.map +1 -0
  93. package/dist/facets/carbon-isotopes/index.d.ts +2 -0
  94. package/dist/facets/carbon-isotopes/isotopes-column.cjs +174 -0
  95. package/dist/facets/carbon-isotopes/isotopes-column.cjs.map +1 -0
  96. package/dist/facets/carbon-isotopes/isotopes-column.d.ts +19 -0
  97. package/dist/facets/carbon-isotopes/isotopes-column.js +174 -0
  98. package/dist/facets/carbon-isotopes/isotopes-column.js.map +1 -0
  99. package/dist/facets/carbon-isotopes/isotopes-column.module.sass.cjs +15 -0
  100. package/dist/facets/carbon-isotopes/isotopes-column.module.sass.cjs.map +1 -0
  101. package/dist/facets/carbon-isotopes/isotopes-column.module.sass.js +15 -0
  102. package/dist/facets/carbon-isotopes/isotopes-column.module.sass.js.map +1 -0
  103. package/dist/facets/detrital-zircon/index.cjs +108 -0
  104. package/dist/facets/detrital-zircon/index.cjs.map +1 -0
  105. package/dist/facets/detrital-zircon/index.d.ts +24 -0
  106. package/dist/facets/detrital-zircon/index.js +108 -0
  107. package/dist/facets/detrital-zircon/index.js.map +1 -0
  108. package/dist/facets/detrital-zircon/index.module.sass.cjs +11 -0
  109. package/dist/facets/detrital-zircon/index.module.sass.cjs.map +1 -0
  110. package/dist/facets/detrital-zircon/index.module.sass.js +11 -0
  111. package/dist/facets/detrital-zircon/index.module.sass.js.map +1 -0
  112. package/dist/facets/detrital-zircon/provider.cjs +22 -0
  113. package/dist/facets/detrital-zircon/provider.cjs.map +1 -0
  114. package/dist/facets/detrital-zircon/provider.d.ts +31 -0
  115. package/dist/facets/detrital-zircon/provider.js +22 -0
  116. package/dist/facets/detrital-zircon/provider.js.map +1 -0
  117. package/dist/facets/fossils/index.cjs +120 -0
  118. package/dist/facets/fossils/index.cjs.map +1 -0
  119. package/dist/facets/fossils/index.d.ts +7 -0
  120. package/dist/facets/fossils/index.js +120 -0
  121. package/dist/facets/fossils/index.js.map +1 -0
  122. package/dist/facets/fossils/provider.cjs +99 -0
  123. package/dist/facets/fossils/provider.cjs.map +1 -0
  124. package/dist/facets/fossils/provider.d.ts +29 -0
  125. package/dist/facets/fossils/provider.js +99 -0
  126. package/dist/facets/fossils/provider.js.map +1 -0
  127. package/dist/facets/fossils/taxon-ranges.cjs +145 -0
  128. package/dist/facets/fossils/taxon-ranges.cjs.map +1 -0
  129. package/dist/facets/fossils/taxon-ranges.d.ts +3 -0
  130. package/dist/facets/fossils/taxon-ranges.js +145 -0
  131. package/dist/facets/fossils/taxon-ranges.js.map +1 -0
  132. package/dist/facets/fossils/taxon-ranges.module.sass.cjs +13 -0
  133. package/dist/facets/fossils/taxon-ranges.module.sass.cjs.map +1 -0
  134. package/dist/facets/fossils/taxon-ranges.module.sass.js +13 -0
  135. package/dist/facets/fossils/taxon-ranges.module.sass.js.map +1 -0
  136. package/dist/facets/index.d.ts +4 -0
  137. package/dist/facets/measurements/base.cjs +128 -0
  138. package/dist/facets/measurements/base.cjs.map +1 -0
  139. package/dist/facets/measurements/base.d.ts +46 -0
  140. package/dist/facets/measurements/base.js +128 -0
  141. package/dist/facets/measurements/base.js.map +1 -0
  142. package/dist/facets/measurements/base.module.sass.cjs +8 -0
  143. package/dist/facets/measurements/base.module.sass.cjs.map +1 -0
  144. package/dist/facets/measurements/base.module.sass.js +8 -0
  145. package/dist/facets/measurements/base.module.sass.js.map +1 -0
  146. package/dist/facets/measurements/index.d.ts +2 -0
  147. package/dist/facets/measurements/sgp.cjs +62 -0
  148. package/dist/facets/measurements/sgp.cjs.map +1 -0
  149. package/dist/facets/measurements/sgp.d.ts +3 -0
  150. package/dist/facets/measurements/sgp.js +62 -0
  151. package/dist/facets/measurements/sgp.js.map +1 -0
  152. package/dist/index.cjs +164 -0
  153. package/dist/index.cjs.map +1 -0
  154. package/dist/index.d.ts +11 -0
  155. package/dist/index.js +164 -0
  156. package/dist/index.js.map +1 -0
  157. package/dist/maps/_shared/index.d.ts +2 -0
  158. package/dist/maps/_shared/inset-map.cjs +69 -0
  159. package/dist/maps/_shared/inset-map.cjs.map +1 -0
  160. package/dist/maps/_shared/inset-map.d.ts +16 -0
  161. package/dist/maps/_shared/inset-map.js +69 -0
  162. package/dist/maps/_shared/inset-map.js.map +1 -0
  163. package/dist/maps/_shared/styles.cjs +68 -0
  164. package/dist/maps/_shared/styles.cjs.map +1 -0
  165. package/dist/maps/_shared/styles.d.ts +2 -0
  166. package/dist/maps/_shared/styles.js +68 -0
  167. package/dist/maps/_shared/styles.js.map +1 -0
  168. package/dist/maps/column-correlation/core.cjs +185 -0
  169. package/dist/maps/column-correlation/core.cjs.map +1 -0
  170. package/dist/maps/column-correlation/core.d.ts +9 -0
  171. package/dist/maps/column-correlation/core.js +185 -0
  172. package/dist/maps/column-correlation/core.js.map +1 -0
  173. package/dist/maps/column-correlation/index.d.ts +2 -0
  174. package/dist/maps/column-correlation/state.cjs +129 -0
  175. package/dist/maps/column-correlation/state.cjs.map +1 -0
  176. package/dist/maps/column-correlation/state.d.ts +31 -0
  177. package/dist/maps/column-correlation/state.js +129 -0
  178. package/dist/maps/column-correlation/state.js.map +1 -0
  179. package/dist/maps/column-navigation/index.d.ts +2 -0
  180. package/dist/maps/column-navigation/mapbox/index.cjs +175 -0
  181. package/dist/maps/column-navigation/mapbox/index.cjs.map +1 -0
  182. package/dist/maps/column-navigation/mapbox/index.d.ts +17 -0
  183. package/dist/maps/column-navigation/mapbox/index.js +175 -0
  184. package/dist/maps/column-navigation/mapbox/index.js.map +1 -0
  185. package/dist/maps/column-navigation/mapbox/keyboard-navigation.cjs +99 -0
  186. package/dist/maps/column-navigation/mapbox/keyboard-navigation.cjs.map +1 -0
  187. package/dist/maps/column-navigation/mapbox/keyboard-navigation.d.ts +31 -0
  188. package/dist/maps/column-navigation/mapbox/keyboard-navigation.js +99 -0
  189. package/dist/maps/column-navigation/mapbox/keyboard-navigation.js.map +1 -0
  190. package/dist/maps/column-navigation/mapbox/state.cjs +71 -0
  191. package/dist/maps/column-navigation/mapbox/state.cjs.map +1 -0
  192. package/dist/maps/column-navigation/mapbox/state.d.ts +23 -0
  193. package/dist/maps/column-navigation/mapbox/state.js +71 -0
  194. package/dist/maps/column-navigation/mapbox/state.js.map +1 -0
  195. package/dist/maps/column-navigation/svg/animated.d.ts +1 -0
  196. package/dist/maps/column-navigation/svg/index.cjs +92 -0
  197. package/dist/maps/column-navigation/svg/index.cjs.map +1 -0
  198. package/dist/maps/column-navigation/svg/index.d.ts +9 -0
  199. package/dist/maps/column-navigation/svg/index.js +93 -0
  200. package/dist/maps/column-navigation/svg/index.js.map +1 -0
  201. package/dist/maps/column-navigation/svg/layers.cjs +175 -0
  202. package/dist/maps/column-navigation/svg/layers.cjs.map +1 -0
  203. package/dist/maps/column-navigation/svg/layers.d.ts +54 -0
  204. package/dist/maps/column-navigation/svg/layers.js +175 -0
  205. package/dist/maps/column-navigation/svg/layers.js.map +1 -0
  206. package/dist/maps/column-navigation/utils/keyboard-navigation.cjs +50 -0
  207. package/dist/maps/column-navigation/utils/keyboard-navigation.cjs.map +1 -0
  208. package/dist/maps/column-navigation/utils/keyboard-navigation.d.ts +10 -0
  209. package/dist/maps/column-navigation/utils/keyboard-navigation.js +50 -0
  210. package/dist/maps/column-navigation/utils/keyboard-navigation.js.map +1 -0
  211. package/dist/maps/index.d.ts +3 -0
  212. package/dist/notes.cjs +41 -0
  213. package/dist/notes.cjs.map +1 -0
  214. package/dist/notes.d.ts +12 -0
  215. package/dist/notes.js +41 -0
  216. package/dist/notes.js.map +1 -0
  217. package/dist/prepare-units/composite-scale.cjs +284 -0
  218. package/dist/prepare-units/composite-scale.cjs.map +1 -0
  219. package/dist/prepare-units/composite-scale.d.ts +19 -0
  220. package/dist/prepare-units/composite-scale.js +284 -0
  221. package/dist/prepare-units/composite-scale.js.map +1 -0
  222. package/dist/prepare-units/dynamic-scales.cjs +190 -0
  223. package/dist/prepare-units/dynamic-scales.cjs.map +1 -0
  224. package/dist/prepare-units/dynamic-scales.d.ts +13 -0
  225. package/dist/prepare-units/dynamic-scales.js +190 -0
  226. package/dist/prepare-units/dynamic-scales.js.map +1 -0
  227. package/dist/prepare-units/helpers.cjs +198 -0
  228. package/dist/prepare-units/helpers.cjs.map +1 -0
  229. package/dist/prepare-units/helpers.d.ts +10 -0
  230. package/dist/prepare-units/helpers.js +198 -0
  231. package/dist/prepare-units/helpers.js.map +1 -0
  232. package/dist/prepare-units/index.cjs +130 -0
  233. package/dist/prepare-units/index.cjs.map +1 -0
  234. package/dist/prepare-units/index.d.ts +10 -0
  235. package/dist/prepare-units/index.js +131 -0
  236. package/dist/prepare-units/index.js.map +1 -0
  237. package/dist/prepare-units/types.cjs +16 -0
  238. package/dist/prepare-units/types.cjs.map +1 -0
  239. package/dist/prepare-units/types.d.ts +99 -0
  240. package/dist/prepare-units/types.js +16 -0
  241. package/dist/prepare-units/types.js.map +1 -0
  242. package/dist/prepare-units/utils.cjs +99 -0
  243. package/dist/prepare-units/utils.cjs.map +1 -0
  244. package/dist/prepare-units/utils.d.ts +39 -0
  245. package/dist/prepare-units/utils.js +99 -0
  246. package/dist/prepare-units/utils.js.map +1 -0
  247. package/dist/section.cjs +269 -0
  248. package/dist/section.cjs.map +1 -0
  249. package/dist/section.d.ts +45 -0
  250. package/dist/section.js +269 -0
  251. package/dist/section.js.map +1 -0
  252. package/dist/unit-details/index.d.ts +3 -0
  253. package/dist/unit-details/modal-panel.cjs +57 -0
  254. package/dist/unit-details/modal-panel.cjs.map +1 -0
  255. package/dist/unit-details/modal-panel.d.ts +1 -0
  256. package/dist/unit-details/modal-panel.js +57 -0
  257. package/dist/unit-details/modal-panel.js.map +1 -0
  258. package/dist/unit-details/panel.cjs +627 -0
  259. package/dist/unit-details/panel.cjs.map +1 -0
  260. package/dist/unit-details/panel.d.ts +87 -0
  261. package/dist/unit-details/panel.js +627 -0
  262. package/dist/unit-details/panel.js.map +1 -0
  263. package/dist/unit-details/panel.module.sass.cjs +42 -0
  264. package/dist/unit-details/panel.module.sass.cjs.map +1 -0
  265. package/dist/unit-details/panel.module.sass.js +42 -0
  266. package/dist/unit-details/panel.module.sass.js.map +1 -0
  267. package/dist/unit-details/popover.cjs +81 -0
  268. package/dist/unit-details/popover.cjs.map +1 -0
  269. package/dist/unit-details/popover.d.ts +9 -0
  270. package/dist/unit-details/popover.js +81 -0
  271. package/dist/unit-details/popover.js.map +1 -0
  272. package/dist/unit-details/popover.module.sass.cjs +10 -0
  273. package/dist/unit-details/popover.module.sass.cjs.map +1 -0
  274. package/dist/unit-details/popover.module.sass.js +10 -0
  275. package/dist/unit-details/popover.module.sass.js.map +1 -0
  276. package/dist/units/boxes.cjs +187 -0
  277. package/dist/units/boxes.cjs.map +1 -0
  278. package/dist/units/boxes.d.ts +54 -0
  279. package/dist/units/boxes.js +187 -0
  280. package/dist/units/boxes.js.map +1 -0
  281. package/dist/units/boxes.module.sass.cjs +11 -0
  282. package/dist/units/boxes.module.sass.cjs.map +1 -0
  283. package/dist/units/boxes.module.sass.js +11 -0
  284. package/dist/units/boxes.module.sass.js.map +1 -0
  285. package/dist/units/colors.cjs +52 -0
  286. package/dist/units/colors.cjs.map +1 -0
  287. package/dist/units/colors.d.ts +7 -0
  288. package/dist/units/colors.js +52 -0
  289. package/dist/units/colors.js.map +1 -0
  290. package/dist/units/composite.cjs +157 -0
  291. package/dist/units/composite.cjs.map +1 -0
  292. package/dist/units/composite.d.ts +39 -0
  293. package/dist/units/composite.js +157 -0
  294. package/dist/units/composite.js.map +1 -0
  295. package/dist/units/composite.module.sass.cjs +7 -0
  296. package/dist/units/composite.module.sass.cjs.map +1 -0
  297. package/dist/units/composite.module.sass.js +7 -0
  298. package/dist/units/composite.module.sass.js.map +1 -0
  299. package/dist/units/index.cjs +117 -0
  300. package/dist/units/index.cjs.map +1 -0
  301. package/dist/units/index.d.ts +40 -0
  302. package/dist/units/index.js +118 -0
  303. package/dist/units/index.js.map +1 -0
  304. package/dist/units/names.cjs +72 -0
  305. package/dist/units/names.cjs.map +1 -0
  306. package/dist/units/names.d.ts +33 -0
  307. package/dist/units/names.js +72 -0
  308. package/dist/units/names.js.map +1 -0
  309. package/dist/units/resolvers.cjs +114 -0
  310. package/dist/units/resolvers.cjs.map +1 -0
  311. package/dist/units/resolvers.d.ts +3 -0
  312. package/dist/units/resolvers.js +114 -0
  313. package/dist/units/resolvers.js.map +1 -0
  314. package/dist/units/types.d.ts +16 -0
  315. package/package.json +52 -55
  316. package/src/unit-details/popover.module.sass +3 -3
  317. package/dist/esm/column-views.006d5180.js +0 -97
  318. package/dist/esm/column-views.006d5180.js.map +0 -1
  319. package/dist/esm/column-views.052498a6.js +0 -93
  320. package/dist/esm/column-views.052498a6.js.map +0 -1
  321. package/dist/esm/column-views.079119f4.js +0 -17
  322. package/dist/esm/column-views.079119f4.js.map +0 -1
  323. package/dist/esm/column-views.0abf7e10.js +0 -67
  324. package/dist/esm/column-views.0abf7e10.js.map +0 -1
  325. package/dist/esm/column-views.0b3c0d18.js +0 -322
  326. package/dist/esm/column-views.0b3c0d18.js.map +0 -1
  327. package/dist/esm/column-views.0ed9da35.js +0 -141
  328. package/dist/esm/column-views.0ed9da35.js.map +0 -1
  329. package/dist/esm/column-views.0faf79a9.js +0 -142
  330. package/dist/esm/column-views.0faf79a9.js.map +0 -1
  331. package/dist/esm/column-views.16cc7a58.css +0 -37
  332. package/dist/esm/column-views.16cc7a58.css.map +0 -1
  333. package/dist/esm/column-views.17a70358.js +0 -16
  334. package/dist/esm/column-views.17a70358.js.map +0 -1
  335. package/dist/esm/column-views.19539293.js +0 -86
  336. package/dist/esm/column-views.19539293.js.map +0 -1
  337. package/dist/esm/column-views.1af3ec1f.js +0 -139
  338. package/dist/esm/column-views.1af3ec1f.js.map +0 -1
  339. package/dist/esm/column-views.1cd55918.js +0 -206
  340. package/dist/esm/column-views.1cd55918.js.map +0 -1
  341. package/dist/esm/column-views.22ec902b.js +0 -34
  342. package/dist/esm/column-views.22ec902b.js.map +0 -1
  343. package/dist/esm/column-views.2a0010a3.js +0 -15
  344. package/dist/esm/column-views.2a0010a3.js.map +0 -1
  345. package/dist/esm/column-views.2c45a7b5.js +0 -25
  346. package/dist/esm/column-views.2c45a7b5.js.map +0 -1
  347. package/dist/esm/column-views.321af3ae.css +0 -59
  348. package/dist/esm/column-views.321af3ae.css.map +0 -1
  349. package/dist/esm/column-views.334c3947.js +0 -75
  350. package/dist/esm/column-views.334c3947.js.map +0 -1
  351. package/dist/esm/column-views.33796541.js +0 -88
  352. package/dist/esm/column-views.33796541.js.map +0 -1
  353. package/dist/esm/column-views.337b40a2.js +0 -199
  354. package/dist/esm/column-views.337b40a2.js.map +0 -1
  355. package/dist/esm/column-views.338a7a83.css +0 -134
  356. package/dist/esm/column-views.338a7a83.css.map +0 -1
  357. package/dist/esm/column-views.33d35a44.js +0 -118
  358. package/dist/esm/column-views.33d35a44.js.map +0 -1
  359. package/dist/esm/column-views.3465c8ad.js +0 -16
  360. package/dist/esm/column-views.3465c8ad.js.map +0 -1
  361. package/dist/esm/column-views.362aae9a.js +0 -113
  362. package/dist/esm/column-views.362aae9a.js.map +0 -1
  363. package/dist/esm/column-views.3b972a9b.css +0 -4
  364. package/dist/esm/column-views.3b972a9b.css.map +0 -1
  365. package/dist/esm/column-views.3de4dc43.js +0 -66
  366. package/dist/esm/column-views.3de4dc43.js.map +0 -1
  367. package/dist/esm/column-views.40cd59b5.js +0 -13
  368. package/dist/esm/column-views.40cd59b5.js.map +0 -1
  369. package/dist/esm/column-views.4252a555.js +0 -248
  370. package/dist/esm/column-views.4252a555.js.map +0 -1
  371. package/dist/esm/column-views.45c70ba4.js +0 -38
  372. package/dist/esm/column-views.45c70ba4.js.map +0 -1
  373. package/dist/esm/column-views.47b7d9ca.js +0 -206
  374. package/dist/esm/column-views.47b7d9ca.js.map +0 -1
  375. package/dist/esm/column-views.47ca059d.js +0 -225
  376. package/dist/esm/column-views.47ca059d.js.map +0 -1
  377. package/dist/esm/column-views.4d374a35.js +0 -19
  378. package/dist/esm/column-views.4d374a35.js.map +0 -1
  379. package/dist/esm/column-views.54c1f382.css +0 -23
  380. package/dist/esm/column-views.54c1f382.css.map +0 -1
  381. package/dist/esm/column-views.562db43a.css +0 -148
  382. package/dist/esm/column-views.562db43a.css.map +0 -1
  383. package/dist/esm/column-views.5e1c216f.js +0 -180
  384. package/dist/esm/column-views.5e1c216f.js.map +0 -1
  385. package/dist/esm/column-views.60e97132.js +0 -20
  386. package/dist/esm/column-views.60e97132.js.map +0 -1
  387. package/dist/esm/column-views.636d6553.js +0 -343
  388. package/dist/esm/column-views.636d6553.js.map +0 -1
  389. package/dist/esm/column-views.64f6ddd3.js +0 -9
  390. package/dist/esm/column-views.64f6ddd3.js.map +0 -1
  391. package/dist/esm/column-views.6519a353.js +0 -9
  392. package/dist/esm/column-views.6519a353.js.map +0 -1
  393. package/dist/esm/column-views.67804ce5.js +0 -68
  394. package/dist/esm/column-views.6992ca88.js +0 -25
  395. package/dist/esm/column-views.6992ca88.js.map +0 -1
  396. package/dist/esm/column-views.6a954628.js +0 -70
  397. package/dist/esm/column-views.6a954628.js.map +0 -1
  398. package/dist/esm/column-views.6c670c13.css +0 -26
  399. package/dist/esm/column-views.6c670c13.css.map +0 -1
  400. package/dist/esm/column-views.6cff6659.js +0 -11
  401. package/dist/esm/column-views.6cff6659.js.map +0 -1
  402. package/dist/esm/column-views.6d6b73b4.js +0 -55
  403. package/dist/esm/column-views.6d6b73b4.js.map +0 -1
  404. package/dist/esm/column-views.6f9511d1.css +0 -25
  405. package/dist/esm/column-views.6f9511d1.css.map +0 -1
  406. package/dist/esm/column-views.6fff7602.js +0 -94
  407. package/dist/esm/column-views.6fff7602.js.map +0 -1
  408. package/dist/esm/column-views.70387120.js +0 -9
  409. package/dist/esm/column-views.70387120.js.map +0 -1
  410. package/dist/esm/column-views.708140ab.css +0 -36
  411. package/dist/esm/column-views.708140ab.css.map +0 -1
  412. package/dist/esm/column-views.74837922.js +0 -112
  413. package/dist/esm/column-views.74837922.js.map +0 -1
  414. package/dist/esm/column-views.76fb9948.js +0 -169
  415. package/dist/esm/column-views.76fb9948.js.map +0 -1
  416. package/dist/esm/column-views.7bfb4318.js +0 -161
  417. package/dist/esm/column-views.7bfb4318.js.map +0 -1
  418. package/dist/esm/column-views.7dc53f1b.js +0 -168
  419. package/dist/esm/column-views.7dc53f1b.js.map +0 -1
  420. package/dist/esm/column-views.85df21ec.js +0 -567
  421. package/dist/esm/column-views.85df21ec.js.map +0 -1
  422. package/dist/esm/column-views.87c589b7.js +0 -72
  423. package/dist/esm/column-views.87c589b7.js.map +0 -1
  424. package/dist/esm/column-views.8da2b857.js +0 -81
  425. package/dist/esm/column-views.8da2b857.js.map +0 -1
  426. package/dist/esm/column-views.8fb37de7.js +0 -9
  427. package/dist/esm/column-views.8fb37de7.js.map +0 -1
  428. package/dist/esm/column-views.9512c5d5.js +0 -240
  429. package/dist/esm/column-views.9512c5d5.js.map +0 -1
  430. package/dist/esm/column-views.9905b91c.js +0 -11
  431. package/dist/esm/column-views.9905b91c.js.map +0 -1
  432. package/dist/esm/column-views.9b77388d.js +0 -41
  433. package/dist/esm/column-views.9b77388d.js.map +0 -1
  434. package/dist/esm/column-views.a4f394fe.js +0 -127
  435. package/dist/esm/column-views.a4f394fe.js.map +0 -1
  436. package/dist/esm/column-views.a7c5ae16.js +0 -25
  437. package/dist/esm/column-views.a7c5ae16.js.map +0 -1
  438. package/dist/esm/column-views.aa9ede4d.js +0 -206
  439. package/dist/esm/column-views.aa9ede4d.js.map +0 -1
  440. package/dist/esm/column-views.b7cf0da2.js +0 -60
  441. package/dist/esm/column-views.b7cf0da2.js.map +0 -1
  442. package/dist/esm/column-views.beb54e95.js +0 -39
  443. package/dist/esm/column-views.beb54e95.js.map +0 -1
  444. package/dist/esm/column-views.c47dba5f.js +0 -9
  445. package/dist/esm/column-views.c47dba5f.js.map +0 -1
  446. package/dist/esm/column-views.c750a6df.js +0 -9
  447. package/dist/esm/column-views.c750a6df.js.map +0 -1
  448. package/dist/esm/column-views.cb1cc9f2.js +0 -134
  449. package/dist/esm/column-views.cb1cc9f2.js.map +0 -1
  450. package/dist/esm/column-views.cb6fc808.css +0 -54
  451. package/dist/esm/column-views.cb6fc808.css.map +0 -1
  452. package/dist/esm/column-views.cc733361.js +0 -55
  453. package/dist/esm/column-views.cc733361.js.map +0 -1
  454. package/dist/esm/column-views.ce000969.js +0 -187
  455. package/dist/esm/column-views.ce000969.js.map +0 -1
  456. package/dist/esm/column-views.d5e788e8.js +0 -31
  457. package/dist/esm/column-views.d5e788e8.js.map +0 -1
  458. package/dist/esm/column-views.d7740949.js +0 -152
  459. package/dist/esm/column-views.d7740949.js.map +0 -1
  460. package/dist/esm/column-views.d7e6bf67.js +0 -70
  461. package/dist/esm/column-views.d7e6bf67.js.map +0 -1
  462. package/dist/esm/column-views.dac0a3bb.js +0 -149
  463. package/dist/esm/column-views.dac0a3bb.js.map +0 -1
  464. package/dist/esm/column-views.dc42f5d0.js +0 -48
  465. package/dist/esm/column-views.dc42f5d0.js.map +0 -1
  466. package/dist/esm/column-views.e13a0a76.js +0 -138
  467. package/dist/esm/column-views.e13a0a76.js.map +0 -1
  468. package/dist/esm/column-views.e40b8bfb.css +0 -14
  469. package/dist/esm/column-views.e40b8bfb.css.map +0 -1
  470. package/dist/esm/column-views.e93478c3.css +0 -194
  471. package/dist/esm/column-views.e93478c3.css.map +0 -1
  472. package/dist/esm/column-views.ea08f667.js +0 -218
  473. package/dist/esm/column-views.ea08f667.js.map +0 -1
  474. package/dist/esm/column-views.ebb5f280.js +0 -13
  475. package/dist/esm/column-views.ebb5f280.js.map +0 -1
  476. package/dist/esm/column-views.edf77621.js +0 -22
  477. package/dist/esm/column-views.edf77621.js.map +0 -1
  478. package/dist/esm/column-views.f9dab157.js +0 -3
  479. package/dist/esm/column-views.f9dab157.js.map +0 -1
  480. package/dist/esm/column-views.fcf25ec6.js +0 -76
  481. package/dist/esm/column-views.fcf25ec6.js.map +0 -1
  482. package/dist/esm/column-views.fe42d2fc.js +0 -134
  483. package/dist/esm/column-views.fe42d2fc.js.map +0 -1
  484. package/dist/esm/index.d.ts +0 -1008
  485. package/dist/esm/index.d.ts.map +0 -1
  486. package/dist/esm/index.js +0 -27
  487. package/dist/esm/index.js.map +0 -1
  488. package/dist/node/column-views.012fa10c.js +0 -2
  489. package/dist/node/column-views.012fa10c.js.map +0 -1
  490. package/dist/node/column-views.048fdcaf.js +0 -2
  491. package/dist/node/column-views.048fdcaf.js.map +0 -1
  492. package/dist/node/column-views.04a72b35.js +0 -2
  493. package/dist/node/column-views.04a72b35.js.map +0 -1
  494. package/dist/node/column-views.0840b115.css +0 -2
  495. package/dist/node/column-views.0840b115.css.map +0 -1
  496. package/dist/node/column-views.0af5912d.js +0 -2
  497. package/dist/node/column-views.0af5912d.js.map +0 -1
  498. package/dist/node/column-views.0bd15ee4.js +0 -2
  499. package/dist/node/column-views.0bd15ee4.js.map +0 -1
  500. package/dist/node/column-views.0d254fd3.js +0 -2
  501. package/dist/node/column-views.0d254fd3.js.map +0 -1
  502. package/dist/node/column-views.109cb0c8.js +0 -2
  503. package/dist/node/column-views.109cb0c8.js.map +0 -1
  504. package/dist/node/column-views.1261be59.js +0 -2
  505. package/dist/node/column-views.1261be59.js.map +0 -1
  506. package/dist/node/column-views.133855e6.js +0 -2
  507. package/dist/node/column-views.133855e6.js.map +0 -1
  508. package/dist/node/column-views.15b5cecc.js +0 -2
  509. package/dist/node/column-views.15b5cecc.js.map +0 -1
  510. package/dist/node/column-views.183745c0.js +0 -2
  511. package/dist/node/column-views.183745c0.js.map +0 -1
  512. package/dist/node/column-views.2e2158f5.js +0 -2
  513. package/dist/node/column-views.2e2158f5.js.map +0 -1
  514. package/dist/node/column-views.306acd3f.js +0 -2
  515. package/dist/node/column-views.306acd3f.js.map +0 -1
  516. package/dist/node/column-views.31153f29.js +0 -2
  517. package/dist/node/column-views.31153f29.js.map +0 -1
  518. package/dist/node/column-views.31da008b.js +0 -2
  519. package/dist/node/column-views.31da008b.js.map +0 -1
  520. package/dist/node/column-views.3a079e34.css +0 -2
  521. package/dist/node/column-views.3a079e34.css.map +0 -1
  522. package/dist/node/column-views.40e758b3.js +0 -2
  523. package/dist/node/column-views.40e758b3.js.map +0 -1
  524. package/dist/node/column-views.41876859.js +0 -2
  525. package/dist/node/column-views.41876859.js.map +0 -1
  526. package/dist/node/column-views.4a28d695.js +0 -2
  527. package/dist/node/column-views.4a28d695.js.map +0 -1
  528. package/dist/node/column-views.4ec769a6.js +0 -2
  529. package/dist/node/column-views.4ec769a6.js.map +0 -1
  530. package/dist/node/column-views.50a992d3.css +0 -2
  531. package/dist/node/column-views.50a992d3.css.map +0 -1
  532. package/dist/node/column-views.51fbed89.js +0 -2
  533. package/dist/node/column-views.51fbed89.js.map +0 -1
  534. package/dist/node/column-views.5950c8eb.js +0 -2
  535. package/dist/node/column-views.5950c8eb.js.map +0 -1
  536. package/dist/node/column-views.5987bc26.js +0 -2
  537. package/dist/node/column-views.5987bc26.js.map +0 -1
  538. package/dist/node/column-views.5a9331a9.js +0 -2
  539. package/dist/node/column-views.5a9331a9.js.map +0 -1
  540. package/dist/node/column-views.5bb858c9.js +0 -2
  541. package/dist/node/column-views.5bb858c9.js.map +0 -1
  542. package/dist/node/column-views.5c1b0eeb.css +0 -2
  543. package/dist/node/column-views.5c1b0eeb.css.map +0 -1
  544. package/dist/node/column-views.5cbada24.js +0 -2
  545. package/dist/node/column-views.5cbada24.js.map +0 -1
  546. package/dist/node/column-views.5fcd2be6.js +0 -2
  547. package/dist/node/column-views.5fcd2be6.js.map +0 -1
  548. package/dist/node/column-views.672b683c.js +0 -2
  549. package/dist/node/column-views.672b683c.js.map +0 -1
  550. package/dist/node/column-views.6a0a35e7.js +0 -2
  551. package/dist/node/column-views.6a0a35e7.js.map +0 -1
  552. package/dist/node/column-views.6a4c2100.css +0 -2
  553. package/dist/node/column-views.6a4c2100.css.map +0 -1
  554. package/dist/node/column-views.6a9da051.js +0 -2
  555. package/dist/node/column-views.6a9da051.js.map +0 -1
  556. package/dist/node/column-views.6bba8c57.js +0 -2
  557. package/dist/node/column-views.6bba8c57.js.map +0 -1
  558. package/dist/node/column-views.75ba0464.css +0 -2
  559. package/dist/node/column-views.75ba0464.css.map +0 -1
  560. package/dist/node/column-views.78b2d234.js +0 -2
  561. package/dist/node/column-views.78b2d234.js.map +0 -1
  562. package/dist/node/column-views.7b6e7d82.js +0 -2
  563. package/dist/node/column-views.7b6e7d82.js.map +0 -1
  564. package/dist/node/column-views.7b9bd06e.css +0 -2
  565. package/dist/node/column-views.7b9bd06e.css.map +0 -1
  566. package/dist/node/column-views.7d45bbeb.js +0 -2
  567. package/dist/node/column-views.7d45bbeb.js.map +0 -1
  568. package/dist/node/column-views.7f9c7448.js +0 -2
  569. package/dist/node/column-views.7f9c7448.js.map +0 -1
  570. package/dist/node/column-views.82cf7c0d.js +0 -2
  571. package/dist/node/column-views.82cf7c0d.js.map +0 -1
  572. package/dist/node/column-views.869c7199.js +0 -2
  573. package/dist/node/column-views.869c7199.js.map +0 -1
  574. package/dist/node/column-views.8bee789c.js +0 -2
  575. package/dist/node/column-views.8bee789c.js.map +0 -1
  576. package/dist/node/column-views.90c36c0b.js +0 -2
  577. package/dist/node/column-views.90c36c0b.js.map +0 -1
  578. package/dist/node/column-views.951e3e9a.js +0 -2
  579. package/dist/node/column-views.951e3e9a.js.map +0 -1
  580. package/dist/node/column-views.95411f1b.js +0 -2
  581. package/dist/node/column-views.95411f1b.js.map +0 -1
  582. package/dist/node/column-views.9cb13e51.css +0 -2
  583. package/dist/node/column-views.9cb13e51.css.map +0 -1
  584. package/dist/node/column-views.a0969fc8.js +0 -2
  585. package/dist/node/column-views.a0969fc8.js.map +0 -1
  586. package/dist/node/column-views.a2476e39.js +0 -2
  587. package/dist/node/column-views.a2476e39.js.map +0 -1
  588. package/dist/node/column-views.a8f5ee28.js +0 -2
  589. package/dist/node/column-views.a8f5ee28.js.map +0 -1
  590. package/dist/node/column-views.ad60c02f.js +0 -2
  591. package/dist/node/column-views.ad60c02f.js.map +0 -1
  592. package/dist/node/column-views.add5e42b.js +0 -2
  593. package/dist/node/column-views.add5e42b.js.map +0 -1
  594. package/dist/node/column-views.b169b4b5.css +0 -2
  595. package/dist/node/column-views.b169b4b5.css.map +0 -1
  596. package/dist/node/column-views.b2e5f823.js +0 -2
  597. package/dist/node/column-views.b2e5f823.js.map +0 -1
  598. package/dist/node/column-views.b57e5e6e.js +0 -2
  599. package/dist/node/column-views.b57e5e6e.js.map +0 -1
  600. package/dist/node/column-views.b762c9a8.js +0 -2
  601. package/dist/node/column-views.b762c9a8.js.map +0 -1
  602. package/dist/node/column-views.ba9108fe.js +0 -2
  603. package/dist/node/column-views.ba9108fe.js.map +0 -1
  604. package/dist/node/column-views.c16a19fb.js +0 -2
  605. package/dist/node/column-views.c16a19fb.js.map +0 -1
  606. package/dist/node/column-views.c3097d9a.js +0 -2
  607. package/dist/node/column-views.c3097d9a.js.map +0 -1
  608. package/dist/node/column-views.c4c15e2b.js +0 -2
  609. package/dist/node/column-views.c4c15e2b.js.map +0 -1
  610. package/dist/node/column-views.c651b684.js +0 -2
  611. package/dist/node/column-views.c651b684.js.map +0 -1
  612. package/dist/node/column-views.c968a185.css +0 -2
  613. package/dist/node/column-views.c968a185.css.map +0 -1
  614. package/dist/node/column-views.ccfb9afb.css +0 -2
  615. package/dist/node/column-views.ccfb9afb.css.map +0 -1
  616. package/dist/node/column-views.cdcce702.js +0 -2
  617. package/dist/node/column-views.cdcce702.js.map +0 -1
  618. package/dist/node/column-views.cf41a6d7.js +0 -2
  619. package/dist/node/column-views.cf41a6d7.js.map +0 -1
  620. package/dist/node/column-views.d22bf15c.js +0 -2
  621. package/dist/node/column-views.d22bf15c.js.map +0 -1
  622. package/dist/node/column-views.d737de1e.js +0 -2
  623. package/dist/node/column-views.d737de1e.js.map +0 -1
  624. package/dist/node/column-views.da902c44.js +0 -2
  625. package/dist/node/column-views.da902c44.js.map +0 -1
  626. package/dist/node/column-views.db3377d8.js +0 -2
  627. package/dist/node/column-views.db3377d8.js.map +0 -1
  628. package/dist/node/column-views.dbb4a46b.js +0 -2
  629. package/dist/node/column-views.dbb4a46b.js.map +0 -1
  630. package/dist/node/column-views.ddc6184e.css +0 -2
  631. package/dist/node/column-views.ddc6184e.css.map +0 -1
  632. package/dist/node/column-views.e0e20136.js +0 -2
  633. package/dist/node/column-views.e0e20136.js.map +0 -1
  634. package/dist/node/column-views.e2562224.js +0 -2
  635. package/dist/node/column-views.e2562224.js.map +0 -1
  636. package/dist/node/column-views.e6720522.js +0 -2
  637. package/dist/node/column-views.e6720522.js.map +0 -1
  638. package/dist/node/column-views.e7e26765.js +0 -2
  639. package/dist/node/column-views.e7e26765.js.map +0 -1
  640. package/dist/node/column-views.e93b3bdb.js +0 -2
  641. package/dist/node/column-views.e93b3bdb.js.map +0 -1
  642. package/dist/node/column-views.ebb44b7d.js +0 -2
  643. package/dist/node/column-views.ebb44b7d.js.map +0 -1
  644. package/dist/node/column-views.ec0087a2.js +0 -2
  645. package/dist/node/column-views.ec0087a2.js.map +0 -1
  646. package/dist/node/column-views.eea80478.js +0 -2
  647. package/dist/node/column-views.eea80478.js.map +0 -1
  648. package/dist/node/column-views.fb3ed7cc.js +0 -2
  649. package/dist/node/column-views.fb3ed7cc.js.map +0 -1
  650. package/dist/node/column-views.fc4c2c61.js +0 -2
  651. package/dist/node/column-views.fc4c2c61.js.map +0 -1
  652. package/dist/node/column-views.fcb243a2.js +0 -2
  653. package/dist/node/column-views.fcb243a2.js.map +0 -1
  654. package/dist/node/column-views.fea32686.js +0 -2
  655. package/dist/node/column-views.fea32686.js.map +0 -1
  656. package/dist/node/index.js +0 -2
  657. package/dist/node/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard-navigation.cjs","sources":["../../../../src/maps/column-navigation/mapbox/keyboard-navigation.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { buildGeoJSONSource, setGeoJSON } from \"@macrostrat/mapbox-utils\";\nimport { useMapRef, useMapStyleOperator } from \"@macrostrat/mapbox-react\";\nimport { useColumnNavigationStore } from \"./state\";\nimport {\n buildTriangulation,\n buildKeyMapping,\n} from \"../utils/keyboard-navigation\";\n\ninterface KeyboardNavProps {\n showTriangulation: boolean;\n}\n\nexport function ColumnKeyboardNavigation(props: KeyboardNavProps) {\n /** Keyboard navigation of columns using a Delaunay triangulation */\n const { showTriangulation = false } = props;\n const columns = useColumnNavigationStore((state) => state.columns);\n const col_id = useColumnNavigationStore((state) => state.selectedColumn);\n const selectColumn = useColumnNavigationStore((state) => state.selectColumn);\n\n const voronoi = useMemo(() => {\n if (!columns || columns.length == 0) return null;\n return buildTriangulation(columns);\n }, [columns]);\n\n const mapRef = useMapRef();\n const map = mapRef.current;\n\n const keyMapping = useMemo(() => {\n if (columns == null || voronoi == null || map == null) return null;\n\n const projection = (d) => {\n const pt = map.project(d);\n return [pt.x, pt.y];\n };\n\n const currentIndex = columns.findIndex(\n (d) => d.properties.col_id == col_id,\n );\n\n const neighbors = voronoi.tri.delaunay.neighbors[currentIndex];\n return buildKeyMapping(\n neighbors,\n voronoi.centroids,\n currentIndex,\n projection,\n );\n }, [col_id, columns, voronoi, map]);\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (keyMapping == null) return;\n const nextColumnIx = keyMapping[event.which];\n if (nextColumnIx == null) return;\n event.preventDefault();\n event.stopPropagation();\n // @ts-ignore\n selectColumn(columns[nextColumnIx].id);\n return false;\n },\n [keyMapping, selectColumn],\n );\n\n useEffect(() => {\n if (map == null) return;\n const canvas = map.getCanvas();\n canvas.addEventListener(\"keydown\", onKeyDown);\n return () => {\n canvas.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [map, onKeyDown]);\n\n useMapStyleOperator(\n (map) => {\n if (voronoi == null || !showTriangulation) return;\n const { features } = voronoi.tri.links();\n\n setGeoJSON(map, \"column-links\", {\n type: \"FeatureCollection\",\n features,\n });\n },\n [voronoi, showTriangulation],\n );\n\n //if (neighbors == null) return null;\n //const neighborFeatures = neighbors.map((d) => features[d]);\n\n return null;\n}\n\nexport function buildKeyboardNavigationStyle(color: string = \"purple\") {\n return {\n sources: {\n \"column-links\": buildGeoJSONSource(),\n //neighbors: buildGeoJSONSource(),\n },\n layers: [\n {\n id: \"column-links\",\n type: \"line\",\n source: \"column-links\",\n paint: {\n \"line-color\": color,\n \"line-width\": 1.5,\n },\n },\n {\n id: \"column-centers\",\n type: \"circle\",\n source: \"column-links\",\n paint: {\n \"circle-radius\": 2,\n \"circle-color\": color,\n },\n },\n ],\n };\n}\n"],"names":["useColumnNavigationStore","state","useMemo","buildTriangulation","useMapRef","buildKeyMapping","useCallback","useEffect","useMapStyleOperator","map","setGeoJSON","buildGeoJSONSource"],"mappings":";;;;;;;AAaO,SAAS,yBAAyB,OAAyB;AAEhE,QAAM,EAAE,oBAAoB,MAAA,IAAU;AACtC,QAAM,UAAUA,MAAAA,yBAAyB,CAACC,WAAUA,OAAM,OAAO;AACjE,QAAM,SAASD,MAAAA,yBAAyB,CAACC,WAAUA,OAAM,cAAc;AACvE,QAAM,eAAeD,MAAAA,yBAAyB,CAACC,WAAUA,OAAM,YAAY;AAE3E,QAAM,UAAUC,MAAAA,QAAQ,MAAM;AAC5B,QAAI,CAAC,WAAW,QAAQ,UAAU,EAAG,QAAO;AAC5C,WAAOC,mBAAAA,mBAAmB,OAAO;AAAA,EACnC,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,SAASC,YAAAA,UAAA;AACf,QAAM,MAAM,OAAO;AAEnB,QAAM,aAAaF,MAAAA,QAAQ,MAAM;AAC/B,QAAI,WAAW,QAAQ,WAAW,QAAQ,OAAO,KAAM,QAAO;AAE9D,UAAM,aAAa,CAAC,MAAM;AACxB,YAAM,KAAK,IAAI,QAAQ,CAAC;AACxB,aAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,IACpB;AAEA,UAAM,eAAe,QAAQ;AAAA,MAC3B,CAAC,MAAM,EAAE,WAAW,UAAU;AAAA,IAAA;AAGhC,UAAM,YAAY,QAAQ,IAAI,SAAS,UAAU,YAAY;AAC7D,WAAOG,mBAAAA;AAAAA,MACL;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ,GAAG,CAAC,QAAQ,SAAS,SAAS,GAAG,CAAC;AAElC,QAAM,YAAYC,MAAAA;AAAAA,IAChB,CAAC,UAAyB;AACxB,UAAI,cAAc,KAAM;AACxB,YAAM,eAAe,WAAW,MAAM,KAAK;AAC3C,UAAI,gBAAgB,KAAM;AAC1B,YAAM,eAAA;AACN,YAAM,gBAAA;AAEN,mBAAa,QAAQ,YAAY,EAAE,EAAE;AACrC,aAAO;AAAA,IACT;AAAA,IACA,CAAC,YAAY,YAAY;AAAA,EAAA;AAG3BC,QAAAA,UAAU,MAAM;AACd,QAAI,OAAO,KAAM;AACjB,UAAM,SAAS,IAAI,UAAA;AACnB,WAAO,iBAAiB,WAAW,SAAS;AAC5C,WAAO,MAAM;AACX,aAAO,oBAAoB,WAAW,SAAS;AAAA,IACjD;AAAA,EACF,GAAG,CAAC,KAAK,SAAS,CAAC;AAEnBC,cAAAA;AAAAA,IACE,CAACC,SAAQ;AACP,UAAI,WAAW,QAAQ,CAAC,kBAAmB;AAC3C,YAAM,EAAE,SAAA,IAAa,QAAQ,IAAI,MAAA;AAEjCC,kBAAAA,WAAWD,MAAK,gBAAgB;AAAA,QAC9B,MAAM;AAAA,QACN;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA,CAAC,SAAS,iBAAiB;AAAA,EAAA;AAM7B,SAAO;AACT;AAEO,SAAS,6BAA6B,QAAgB,UAAU;AACrE,SAAO;AAAA,IACL,SAAS;AAAA,MACP,gBAAgBE,YAAAA,mBAAA;AAAA;AAAA,IAAmB;AAAA,IAGrC,QAAQ;AAAA,MACN;AAAA,QACE,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,UACL,cAAc;AAAA,UACd,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,MAEF;AAAA,QACE,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,QAAA;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEJ;;;"}
@@ -0,0 +1,31 @@
1
+ interface KeyboardNavProps {
2
+ showTriangulation: boolean;
3
+ }
4
+ export declare function ColumnKeyboardNavigation(props: KeyboardNavProps): any;
5
+ export declare function buildKeyboardNavigationStyle(color?: string): {
6
+ sources: {
7
+ "column-links": GeoJSONSourceRaw;
8
+ };
9
+ layers: ({
10
+ id: string;
11
+ type: string;
12
+ source: string;
13
+ paint: {
14
+ "line-color": string;
15
+ "line-width": number;
16
+ "circle-radius"?: undefined;
17
+ "circle-color"?: undefined;
18
+ };
19
+ } | {
20
+ id: string;
21
+ type: string;
22
+ source: string;
23
+ paint: {
24
+ "circle-radius": number;
25
+ "circle-color": string;
26
+ "line-color"?: undefined;
27
+ "line-width"?: undefined;
28
+ };
29
+ })[];
30
+ };
31
+ export {};
@@ -0,0 +1,99 @@
1
+ import { useMemo, useCallback, useEffect } from "react";
2
+ import { buildGeoJSONSource, setGeoJSON } from "@macrostrat/mapbox-utils";
3
+ import { useMapRef, useMapStyleOperator } from "@macrostrat/mapbox-react";
4
+ import { useColumnNavigationStore } from "./state.js";
5
+ import { buildTriangulation, buildKeyMapping } from "../utils/keyboard-navigation.js";
6
+ function ColumnKeyboardNavigation(props) {
7
+ const { showTriangulation = false } = props;
8
+ const columns = useColumnNavigationStore((state) => state.columns);
9
+ const col_id = useColumnNavigationStore((state) => state.selectedColumn);
10
+ const selectColumn = useColumnNavigationStore((state) => state.selectColumn);
11
+ const voronoi = useMemo(() => {
12
+ if (!columns || columns.length == 0) return null;
13
+ return buildTriangulation(columns);
14
+ }, [columns]);
15
+ const mapRef = useMapRef();
16
+ const map = mapRef.current;
17
+ const keyMapping = useMemo(() => {
18
+ if (columns == null || voronoi == null || map == null) return null;
19
+ const projection = (d) => {
20
+ const pt = map.project(d);
21
+ return [pt.x, pt.y];
22
+ };
23
+ const currentIndex = columns.findIndex(
24
+ (d) => d.properties.col_id == col_id
25
+ );
26
+ const neighbors = voronoi.tri.delaunay.neighbors[currentIndex];
27
+ return buildKeyMapping(
28
+ neighbors,
29
+ voronoi.centroids,
30
+ currentIndex,
31
+ projection
32
+ );
33
+ }, [col_id, columns, voronoi, map]);
34
+ const onKeyDown = useCallback(
35
+ (event) => {
36
+ if (keyMapping == null) return;
37
+ const nextColumnIx = keyMapping[event.which];
38
+ if (nextColumnIx == null) return;
39
+ event.preventDefault();
40
+ event.stopPropagation();
41
+ selectColumn(columns[nextColumnIx].id);
42
+ return false;
43
+ },
44
+ [keyMapping, selectColumn]
45
+ );
46
+ useEffect(() => {
47
+ if (map == null) return;
48
+ const canvas = map.getCanvas();
49
+ canvas.addEventListener("keydown", onKeyDown);
50
+ return () => {
51
+ canvas.removeEventListener("keydown", onKeyDown);
52
+ };
53
+ }, [map, onKeyDown]);
54
+ useMapStyleOperator(
55
+ (map2) => {
56
+ if (voronoi == null || !showTriangulation) return;
57
+ const { features } = voronoi.tri.links();
58
+ setGeoJSON(map2, "column-links", {
59
+ type: "FeatureCollection",
60
+ features
61
+ });
62
+ },
63
+ [voronoi, showTriangulation]
64
+ );
65
+ return null;
66
+ }
67
+ function buildKeyboardNavigationStyle(color = "purple") {
68
+ return {
69
+ sources: {
70
+ "column-links": buildGeoJSONSource()
71
+ //neighbors: buildGeoJSONSource(),
72
+ },
73
+ layers: [
74
+ {
75
+ id: "column-links",
76
+ type: "line",
77
+ source: "column-links",
78
+ paint: {
79
+ "line-color": color,
80
+ "line-width": 1.5
81
+ }
82
+ },
83
+ {
84
+ id: "column-centers",
85
+ type: "circle",
86
+ source: "column-links",
87
+ paint: {
88
+ "circle-radius": 2,
89
+ "circle-color": color
90
+ }
91
+ }
92
+ ]
93
+ };
94
+ }
95
+ export {
96
+ ColumnKeyboardNavigation,
97
+ buildKeyboardNavigationStyle
98
+ };
99
+ //# sourceMappingURL=keyboard-navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard-navigation.js","sources":["../../../../src/maps/column-navigation/mapbox/keyboard-navigation.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { buildGeoJSONSource, setGeoJSON } from \"@macrostrat/mapbox-utils\";\nimport { useMapRef, useMapStyleOperator } from \"@macrostrat/mapbox-react\";\nimport { useColumnNavigationStore } from \"./state\";\nimport {\n buildTriangulation,\n buildKeyMapping,\n} from \"../utils/keyboard-navigation\";\n\ninterface KeyboardNavProps {\n showTriangulation: boolean;\n}\n\nexport function ColumnKeyboardNavigation(props: KeyboardNavProps) {\n /** Keyboard navigation of columns using a Delaunay triangulation */\n const { showTriangulation = false } = props;\n const columns = useColumnNavigationStore((state) => state.columns);\n const col_id = useColumnNavigationStore((state) => state.selectedColumn);\n const selectColumn = useColumnNavigationStore((state) => state.selectColumn);\n\n const voronoi = useMemo(() => {\n if (!columns || columns.length == 0) return null;\n return buildTriangulation(columns);\n }, [columns]);\n\n const mapRef = useMapRef();\n const map = mapRef.current;\n\n const keyMapping = useMemo(() => {\n if (columns == null || voronoi == null || map == null) return null;\n\n const projection = (d) => {\n const pt = map.project(d);\n return [pt.x, pt.y];\n };\n\n const currentIndex = columns.findIndex(\n (d) => d.properties.col_id == col_id,\n );\n\n const neighbors = voronoi.tri.delaunay.neighbors[currentIndex];\n return buildKeyMapping(\n neighbors,\n voronoi.centroids,\n currentIndex,\n projection,\n );\n }, [col_id, columns, voronoi, map]);\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (keyMapping == null) return;\n const nextColumnIx = keyMapping[event.which];\n if (nextColumnIx == null) return;\n event.preventDefault();\n event.stopPropagation();\n // @ts-ignore\n selectColumn(columns[nextColumnIx].id);\n return false;\n },\n [keyMapping, selectColumn],\n );\n\n useEffect(() => {\n if (map == null) return;\n const canvas = map.getCanvas();\n canvas.addEventListener(\"keydown\", onKeyDown);\n return () => {\n canvas.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [map, onKeyDown]);\n\n useMapStyleOperator(\n (map) => {\n if (voronoi == null || !showTriangulation) return;\n const { features } = voronoi.tri.links();\n\n setGeoJSON(map, \"column-links\", {\n type: \"FeatureCollection\",\n features,\n });\n },\n [voronoi, showTriangulation],\n );\n\n //if (neighbors == null) return null;\n //const neighborFeatures = neighbors.map((d) => features[d]);\n\n return null;\n}\n\nexport function buildKeyboardNavigationStyle(color: string = \"purple\") {\n return {\n sources: {\n \"column-links\": buildGeoJSONSource(),\n //neighbors: buildGeoJSONSource(),\n },\n layers: [\n {\n id: \"column-links\",\n type: \"line\",\n source: \"column-links\",\n paint: {\n \"line-color\": color,\n \"line-width\": 1.5,\n },\n },\n {\n id: \"column-centers\",\n type: \"circle\",\n source: \"column-links\",\n paint: {\n \"circle-radius\": 2,\n \"circle-color\": color,\n },\n },\n ],\n };\n}\n"],"names":["map"],"mappings":";;;;;AAaO,SAAS,yBAAyB,OAAyB;AAEhE,QAAM,EAAE,oBAAoB,MAAA,IAAU;AACtC,QAAM,UAAU,yBAAyB,CAAC,UAAU,MAAM,OAAO;AACjE,QAAM,SAAS,yBAAyB,CAAC,UAAU,MAAM,cAAc;AACvE,QAAM,eAAe,yBAAyB,CAAC,UAAU,MAAM,YAAY;AAE3E,QAAM,UAAU,QAAQ,MAAM;AAC5B,QAAI,CAAC,WAAW,QAAQ,UAAU,EAAG,QAAO;AAC5C,WAAO,mBAAmB,OAAO;AAAA,EACnC,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,SAAS,UAAA;AACf,QAAM,MAAM,OAAO;AAEnB,QAAM,aAAa,QAAQ,MAAM;AAC/B,QAAI,WAAW,QAAQ,WAAW,QAAQ,OAAO,KAAM,QAAO;AAE9D,UAAM,aAAa,CAAC,MAAM;AACxB,YAAM,KAAK,IAAI,QAAQ,CAAC;AACxB,aAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,IACpB;AAEA,UAAM,eAAe,QAAQ;AAAA,MAC3B,CAAC,MAAM,EAAE,WAAW,UAAU;AAAA,IAAA;AAGhC,UAAM,YAAY,QAAQ,IAAI,SAAS,UAAU,YAAY;AAC7D,WAAO;AAAA,MACL;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ,GAAG,CAAC,QAAQ,SAAS,SAAS,GAAG,CAAC;AAElC,QAAM,YAAY;AAAA,IAChB,CAAC,UAAyB;AACxB,UAAI,cAAc,KAAM;AACxB,YAAM,eAAe,WAAW,MAAM,KAAK;AAC3C,UAAI,gBAAgB,KAAM;AAC1B,YAAM,eAAA;AACN,YAAM,gBAAA;AAEN,mBAAa,QAAQ,YAAY,EAAE,EAAE;AACrC,aAAO;AAAA,IACT;AAAA,IACA,CAAC,YAAY,YAAY;AAAA,EAAA;AAG3B,YAAU,MAAM;AACd,QAAI,OAAO,KAAM;AACjB,UAAM,SAAS,IAAI,UAAA;AACnB,WAAO,iBAAiB,WAAW,SAAS;AAC5C,WAAO,MAAM;AACX,aAAO,oBAAoB,WAAW,SAAS;AAAA,IACjD;AAAA,EACF,GAAG,CAAC,KAAK,SAAS,CAAC;AAEnB;AAAA,IACE,CAACA,SAAQ;AACP,UAAI,WAAW,QAAQ,CAAC,kBAAmB;AAC3C,YAAM,EAAE,SAAA,IAAa,QAAQ,IAAI,MAAA;AAEjC,iBAAWA,MAAK,gBAAgB;AAAA,QAC9B,MAAM;AAAA,QACN;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA,CAAC,SAAS,iBAAiB;AAAA,EAAA;AAM7B,SAAO;AACT;AAEO,SAAS,6BAA6B,QAAgB,UAAU;AACrE,SAAO;AAAA,IACL,SAAS;AAAA,MACP,gBAAgB,mBAAA;AAAA;AAAA,IAAmB;AAAA,IAGrC,QAAQ;AAAA,MACN;AAAA,QACE,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,UACL,cAAc;AAAA,UACd,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,MAEF;AAAA,QACE,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,UACL,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,QAAA;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEJ;"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const zustand = require("zustand");
4
+ const React = require("react");
5
+ const h = require("@macrostrat/hyper");
6
+ const base = require("../../../data-provider/base.cjs");
7
+ const NavigationStoreContext = React.createContext(
8
+ null
9
+ );
10
+ function ColumnNavigationProvider({
11
+ children,
12
+ columns,
13
+ columnIDs,
14
+ selectedColumn,
15
+ projectID,
16
+ inProcess,
17
+ onSelectColumn,
18
+ onHoverColumn
19
+ }) {
20
+ base.useMacrostratStore((s) => s.getColumns);
21
+ const [store] = React.useState(() => {
22
+ return zustand.create((set, get) => {
23
+ return {
24
+ columns: null,
25
+ selectedColumn: null,
26
+ hoveredColumn: null,
27
+ selectColumn(columnID) {
28
+ set({ selectedColumn: columnID, hoveredColumn: null });
29
+ const { columns: columns2 } = get();
30
+ const column = columns2?.find((d) => d.id == columnID);
31
+ onSelectColumn?.(columnID, column);
32
+ },
33
+ setHoveredColumn(columnID) {
34
+ set({ hoveredColumn: columnID });
35
+ const { columns: columns2 } = get();
36
+ const column = columns2?.find((d) => d.id == columnID);
37
+ onHoverColumn?.(columnID, column);
38
+ }
39
+ };
40
+ });
41
+ });
42
+ let _columns = columns ?? base.useMacrostratColumns(projectID, inProcess);
43
+ if (columnIDs?.length > 0) {
44
+ _columns = React.useMemo(() => {
45
+ return _columns?.filter((d) => columnIDs.includes(d.properties.col_id));
46
+ }, [columnIDs, _columns]);
47
+ }
48
+ React.useEffect(() => {
49
+ if (_columns?.length > 0) {
50
+ store.setState({ columns: _columns, selectedColumn });
51
+ }
52
+ }, [_columns]);
53
+ React.useEffect(() => {
54
+ const { selectColumn, selectedColumn: _internalSelectedColumn } = store.getState();
55
+ if (selectedColumn == _internalSelectedColumn) {
56
+ return;
57
+ }
58
+ selectColumn(selectedColumn);
59
+ }, [selectedColumn]);
60
+ return h(NavigationStoreContext.Provider, { value: store }, children);
61
+ }
62
+ function useColumnNavigationStore(selector) {
63
+ const storeApi = React.useContext(NavigationStoreContext);
64
+ if (storeApi == null) {
65
+ throw new Error("Missing ColumnNavigationProvider");
66
+ }
67
+ return zustand.useStore(storeApi, selector);
68
+ }
69
+ exports.ColumnNavigationProvider = ColumnNavigationProvider;
70
+ exports.useColumnNavigationStore = useColumnNavigationStore;
71
+ //# sourceMappingURL=state.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.cjs","sources":["../../../../src/maps/column-navigation/mapbox/state.ts"],"sourcesContent":["import { create, StoreApi, useStore } from \"zustand\";\nimport type { ColumnGeoJSONRecordWithID } from \"@macrostrat/api-types\";\nimport {\n createContext,\n useState,\n useContext,\n ReactNode,\n useEffect,\n useMemo,\n} from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport {\n useMacrostratColumns,\n useMacrostratStore,\n} from \"../../../data-provider\";\n\nexport interface NavigationStore {\n columns: ColumnGeoJSONRecordWithID[];\n selectedColumn: number | null;\n hoveredColumn: number | null;\n selectColumn: (columnID: number | null) => void;\n setHoveredColumn: (columnID: number | null) => void;\n}\n\nexport interface NavigationProviderProps {\n projectID?: number;\n inProcess?: boolean;\n selectedColumn?: number | null;\n hoveredColumn?: number | null;\n columns?: ColumnGeoJSONRecordWithID[] | null;\n columnIDs?: number[] | null;\n children: ReactNode;\n onSelectColumn?: (col_id: number | null, column: any) => void;\n onHoverColumn?: (col_id: number | null, column: any) => void;\n}\n\nconst NavigationStoreContext = createContext<StoreApi<NavigationStore> | null>(\n null,\n);\n\nexport function ColumnNavigationProvider({\n children,\n columns,\n columnIDs,\n selectedColumn,\n projectID,\n inProcess,\n onSelectColumn,\n onHoverColumn,\n}: NavigationProviderProps) {\n const getColumns = useMacrostratStore((s) => s.getColumns);\n\n const [store] = useState(() => {\n return create<NavigationStore>((set, get): NavigationStore => {\n return {\n columns: null,\n selectedColumn: null,\n hoveredColumn: null,\n selectColumn(columnID: number | null) {\n set({ selectedColumn: columnID, hoveredColumn: null });\n const { columns } = get();\n const column = columns?.find((d) => d.id == columnID);\n onSelectColumn?.(columnID, column);\n },\n setHoveredColumn(columnID: number | null) {\n set({ hoveredColumn: columnID });\n const { columns } = get();\n const column = columns?.find((d) => d.id == columnID);\n onHoverColumn?.(columnID, column);\n },\n };\n });\n });\n\n // Set up the store\n /** TODO: unify handling of columns between parts of application */\n // useAsyncEffect(async () => {\n // let _columns = columns ?? (await getColumns(projectID, inProcess));\n // store.setState({ columns: _columns, selectedColumn });\n // }, [projectID, inProcess, columns, getColumns]);\n\n let _columns = columns ?? useMacrostratColumns(projectID, inProcess);\n\n // filter columns if specified\n if (columnIDs?.length > 0) {\n _columns = useMemo(() => {\n return _columns?.filter((d) => columnIDs.includes(d.properties.col_id));\n }, [columnIDs, _columns]);\n }\n\n useEffect(() => {\n if (_columns?.length > 0) {\n store.setState({ columns: _columns, selectedColumn });\n }\n }, [_columns]);\n // Update selected column if it is changed externally\n\n // Kind of an awkward way to do this but we need to allow the selector to run\n useEffect(() => {\n const { selectColumn, selectedColumn: _internalSelectedColumn } =\n store.getState();\n if (selectedColumn == _internalSelectedColumn) {\n return;\n }\n selectColumn(selectedColumn);\n }, [selectedColumn]);\n\n return h(NavigationStoreContext.Provider, { value: store }, children);\n}\n\nexport function useColumnNavigationStore(\n selector: (state: NavigationStore) => any,\n) {\n const storeApi = useContext(NavigationStoreContext);\n if (storeApi == null) {\n throw new Error(\"Missing ColumnNavigationProvider\");\n }\n return useStore(storeApi, selector);\n}\n"],"names":["createContext","useMacrostratStore","useState","create","columns","useMacrostratColumns","useMemo","useEffect","useContext","useStore"],"mappings":";;;;;;AAoCA,MAAM,yBAAyBA,MAAAA;AAAAA,EAC7B;AACF;AAEO,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA4B;AACPC,0BAAmB,CAAC,MAAM,EAAE,UAAU;AAEzD,QAAM,CAAC,KAAK,IAAIC,MAAAA,SAAS,MAAM;AAC7B,WAAOC,QAAAA,OAAwB,CAAC,KAAK,QAAyB;AAC5D,aAAO;AAAA,QACL,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACf,aAAa,UAAyB;AACpC,cAAI,EAAE,gBAAgB,UAAU,eAAe,MAAM;AACrD,gBAAM,EAAE,SAAAC,SAAAA,IAAY,IAAA;AACpB,gBAAM,SAASA,UAAS,KAAK,CAAC,MAAM,EAAE,MAAM,QAAQ;AACpD,2BAAiB,UAAU,MAAM;AAAA,QACnC;AAAA,QACA,iBAAiB,UAAyB;AACxC,cAAI,EAAE,eAAe,UAAU;AAC/B,gBAAM,EAAE,SAAAA,SAAAA,IAAY,IAAA;AACpB,gBAAM,SAASA,UAAS,KAAK,CAAC,MAAM,EAAE,MAAM,QAAQ;AACpD,0BAAgB,UAAU,MAAM;AAAA,QAClC;AAAA,MAAA;AAAA,IAEJ,CAAC;AAAA,EACH,CAAC;AASD,MAAI,WAAW,WAAWC,0BAAqB,WAAW,SAAS;AAGnE,MAAI,WAAW,SAAS,GAAG;AACzB,eAAWC,MAAAA,QAAQ,MAAM;AACvB,aAAO,UAAU,OAAO,CAAC,MAAM,UAAU,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,IACxE,GAAG,CAAC,WAAW,QAAQ,CAAC;AAAA,EAC1B;AAEAC,QAAAA,UAAU,MAAM;AACd,QAAI,UAAU,SAAS,GAAG;AACxB,YAAM,SAAS,EAAE,SAAS,UAAU,gBAAgB;AAAA,IACtD;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAIbA,QAAAA,UAAU,MAAM;AACd,UAAM,EAAE,cAAc,gBAAgB,wBAAA,IACpC,MAAM,SAAA;AACR,QAAI,kBAAkB,yBAAyB;AAC7C;AAAA,IACF;AACA,iBAAa,cAAc;AAAA,EAC7B,GAAG,CAAC,cAAc,CAAC;AAEnB,SAAO,EAAE,uBAAuB,UAAU,EAAE,OAAO,MAAA,GAAS,QAAQ;AACtE;AAEO,SAAS,yBACd,UACA;AACA,QAAM,WAAWC,MAAAA,WAAW,sBAAsB;AAClD,MAAI,YAAY,MAAM;AACpB,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AACA,SAAOC,QAAAA,SAAS,UAAU,QAAQ;AACpC;;;"}
@@ -0,0 +1,23 @@
1
+ import { StoreApi } from 'zustand';
2
+ import { ColumnGeoJSONRecordWithID } from '@macrostrat/api-types';
3
+ import { ReactNode } from 'react';
4
+ export interface NavigationStore {
5
+ columns: ColumnGeoJSONRecordWithID[];
6
+ selectedColumn: number | null;
7
+ hoveredColumn: number | null;
8
+ selectColumn: (columnID: number | null) => void;
9
+ setHoveredColumn: (columnID: number | null) => void;
10
+ }
11
+ export interface NavigationProviderProps {
12
+ projectID?: number;
13
+ inProcess?: boolean;
14
+ selectedColumn?: number | null;
15
+ hoveredColumn?: number | null;
16
+ columns?: ColumnGeoJSONRecordWithID[] | null;
17
+ columnIDs?: number[] | null;
18
+ children: ReactNode;
19
+ onSelectColumn?: (col_id: number | null, column: any) => void;
20
+ onHoverColumn?: (col_id: number | null, column: any) => void;
21
+ }
22
+ export declare function ColumnNavigationProvider({ children, columns, columnIDs, selectedColumn, projectID, inProcess, onSelectColumn, onHoverColumn, }: NavigationProviderProps): import('react').FunctionComponentElement<import('react').ProviderProps<StoreApi<NavigationStore>>>;
23
+ export declare function useColumnNavigationStore(selector: (state: NavigationStore) => any): any;
@@ -0,0 +1,71 @@
1
+ import { create, useStore } from "zustand";
2
+ import { useState, useMemo, useEffect, createContext, useContext } from "react";
3
+ import h from "@macrostrat/hyper";
4
+ import { useMacrostratStore, useMacrostratColumns } from "../../../data-provider/base.js";
5
+ const NavigationStoreContext = createContext(
6
+ null
7
+ );
8
+ function ColumnNavigationProvider({
9
+ children,
10
+ columns,
11
+ columnIDs,
12
+ selectedColumn,
13
+ projectID,
14
+ inProcess,
15
+ onSelectColumn,
16
+ onHoverColumn
17
+ }) {
18
+ useMacrostratStore((s) => s.getColumns);
19
+ const [store] = useState(() => {
20
+ return create((set, get) => {
21
+ return {
22
+ columns: null,
23
+ selectedColumn: null,
24
+ hoveredColumn: null,
25
+ selectColumn(columnID) {
26
+ set({ selectedColumn: columnID, hoveredColumn: null });
27
+ const { columns: columns2 } = get();
28
+ const column = columns2?.find((d) => d.id == columnID);
29
+ onSelectColumn?.(columnID, column);
30
+ },
31
+ setHoveredColumn(columnID) {
32
+ set({ hoveredColumn: columnID });
33
+ const { columns: columns2 } = get();
34
+ const column = columns2?.find((d) => d.id == columnID);
35
+ onHoverColumn?.(columnID, column);
36
+ }
37
+ };
38
+ });
39
+ });
40
+ let _columns = columns ?? useMacrostratColumns(projectID, inProcess);
41
+ if (columnIDs?.length > 0) {
42
+ _columns = useMemo(() => {
43
+ return _columns?.filter((d) => columnIDs.includes(d.properties.col_id));
44
+ }, [columnIDs, _columns]);
45
+ }
46
+ useEffect(() => {
47
+ if (_columns?.length > 0) {
48
+ store.setState({ columns: _columns, selectedColumn });
49
+ }
50
+ }, [_columns]);
51
+ useEffect(() => {
52
+ const { selectColumn, selectedColumn: _internalSelectedColumn } = store.getState();
53
+ if (selectedColumn == _internalSelectedColumn) {
54
+ return;
55
+ }
56
+ selectColumn(selectedColumn);
57
+ }, [selectedColumn]);
58
+ return h(NavigationStoreContext.Provider, { value: store }, children);
59
+ }
60
+ function useColumnNavigationStore(selector) {
61
+ const storeApi = useContext(NavigationStoreContext);
62
+ if (storeApi == null) {
63
+ throw new Error("Missing ColumnNavigationProvider");
64
+ }
65
+ return useStore(storeApi, selector);
66
+ }
67
+ export {
68
+ ColumnNavigationProvider,
69
+ useColumnNavigationStore
70
+ };
71
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sources":["../../../../src/maps/column-navigation/mapbox/state.ts"],"sourcesContent":["import { create, StoreApi, useStore } from \"zustand\";\nimport type { ColumnGeoJSONRecordWithID } from \"@macrostrat/api-types\";\nimport {\n createContext,\n useState,\n useContext,\n ReactNode,\n useEffect,\n useMemo,\n} from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport {\n useMacrostratColumns,\n useMacrostratStore,\n} from \"../../../data-provider\";\n\nexport interface NavigationStore {\n columns: ColumnGeoJSONRecordWithID[];\n selectedColumn: number | null;\n hoveredColumn: number | null;\n selectColumn: (columnID: number | null) => void;\n setHoveredColumn: (columnID: number | null) => void;\n}\n\nexport interface NavigationProviderProps {\n projectID?: number;\n inProcess?: boolean;\n selectedColumn?: number | null;\n hoveredColumn?: number | null;\n columns?: ColumnGeoJSONRecordWithID[] | null;\n columnIDs?: number[] | null;\n children: ReactNode;\n onSelectColumn?: (col_id: number | null, column: any) => void;\n onHoverColumn?: (col_id: number | null, column: any) => void;\n}\n\nconst NavigationStoreContext = createContext<StoreApi<NavigationStore> | null>(\n null,\n);\n\nexport function ColumnNavigationProvider({\n children,\n columns,\n columnIDs,\n selectedColumn,\n projectID,\n inProcess,\n onSelectColumn,\n onHoverColumn,\n}: NavigationProviderProps) {\n const getColumns = useMacrostratStore((s) => s.getColumns);\n\n const [store] = useState(() => {\n return create<NavigationStore>((set, get): NavigationStore => {\n return {\n columns: null,\n selectedColumn: null,\n hoveredColumn: null,\n selectColumn(columnID: number | null) {\n set({ selectedColumn: columnID, hoveredColumn: null });\n const { columns } = get();\n const column = columns?.find((d) => d.id == columnID);\n onSelectColumn?.(columnID, column);\n },\n setHoveredColumn(columnID: number | null) {\n set({ hoveredColumn: columnID });\n const { columns } = get();\n const column = columns?.find((d) => d.id == columnID);\n onHoverColumn?.(columnID, column);\n },\n };\n });\n });\n\n // Set up the store\n /** TODO: unify handling of columns between parts of application */\n // useAsyncEffect(async () => {\n // let _columns = columns ?? (await getColumns(projectID, inProcess));\n // store.setState({ columns: _columns, selectedColumn });\n // }, [projectID, inProcess, columns, getColumns]);\n\n let _columns = columns ?? useMacrostratColumns(projectID, inProcess);\n\n // filter columns if specified\n if (columnIDs?.length > 0) {\n _columns = useMemo(() => {\n return _columns?.filter((d) => columnIDs.includes(d.properties.col_id));\n }, [columnIDs, _columns]);\n }\n\n useEffect(() => {\n if (_columns?.length > 0) {\n store.setState({ columns: _columns, selectedColumn });\n }\n }, [_columns]);\n // Update selected column if it is changed externally\n\n // Kind of an awkward way to do this but we need to allow the selector to run\n useEffect(() => {\n const { selectColumn, selectedColumn: _internalSelectedColumn } =\n store.getState();\n if (selectedColumn == _internalSelectedColumn) {\n return;\n }\n selectColumn(selectedColumn);\n }, [selectedColumn]);\n\n return h(NavigationStoreContext.Provider, { value: store }, children);\n}\n\nexport function useColumnNavigationStore(\n selector: (state: NavigationStore) => any,\n) {\n const storeApi = useContext(NavigationStoreContext);\n if (storeApi == null) {\n throw new Error(\"Missing ColumnNavigationProvider\");\n }\n return useStore(storeApi, selector);\n}\n"],"names":["columns"],"mappings":";;;;AAoCA,MAAM,yBAAyB;AAAA,EAC7B;AACF;AAEO,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA4B;AACP,qBAAmB,CAAC,MAAM,EAAE,UAAU;AAEzD,QAAM,CAAC,KAAK,IAAI,SAAS,MAAM;AAC7B,WAAO,OAAwB,CAAC,KAAK,QAAyB;AAC5D,aAAO;AAAA,QACL,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACf,aAAa,UAAyB;AACpC,cAAI,EAAE,gBAAgB,UAAU,eAAe,MAAM;AACrD,gBAAM,EAAE,SAAAA,SAAAA,IAAY,IAAA;AACpB,gBAAM,SAASA,UAAS,KAAK,CAAC,MAAM,EAAE,MAAM,QAAQ;AACpD,2BAAiB,UAAU,MAAM;AAAA,QACnC;AAAA,QACA,iBAAiB,UAAyB;AACxC,cAAI,EAAE,eAAe,UAAU;AAC/B,gBAAM,EAAE,SAAAA,SAAAA,IAAY,IAAA;AACpB,gBAAM,SAASA,UAAS,KAAK,CAAC,MAAM,EAAE,MAAM,QAAQ;AACpD,0BAAgB,UAAU,MAAM;AAAA,QAClC;AAAA,MAAA;AAAA,IAEJ,CAAC;AAAA,EACH,CAAC;AASD,MAAI,WAAW,WAAW,qBAAqB,WAAW,SAAS;AAGnE,MAAI,WAAW,SAAS,GAAG;AACzB,eAAW,QAAQ,MAAM;AACvB,aAAO,UAAU,OAAO,CAAC,MAAM,UAAU,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,IACxE,GAAG,CAAC,WAAW,QAAQ,CAAC;AAAA,EAC1B;AAEA,YAAU,MAAM;AACd,QAAI,UAAU,SAAS,GAAG;AACxB,YAAM,SAAS,EAAE,SAAS,UAAU,gBAAgB;AAAA,IACtD;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAIb,YAAU,MAAM;AACd,UAAM,EAAE,cAAc,gBAAgB,wBAAA,IACpC,MAAM,SAAA;AACR,QAAI,kBAAkB,yBAAyB;AAC7C;AAAA,IACF;AACA,iBAAa,cAAc;AAAA,EAC7B,GAAG,CAAC,cAAc,CAAC;AAEnB,SAAO,EAAE,uBAAuB,UAAU,EAAE,OAAO,MAAA,GAAS,QAAQ;AACtE;AAEO,SAAS,yBACd,UACA;AACA,QAAM,WAAW,WAAW,sBAAsB;AAClD,MAAI,YAAY,MAAM;AACpB,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AACA,SAAO,SAAS,UAAU,QAAQ;AACpC;"}
@@ -0,0 +1 @@
1
+ export declare const AnimatedMapView: (props: any) => import('react').FunctionComponentElement<any>;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ const h = require("@macrostrat/hyper");
5
+ const svgMapComponents = require("@macrostrat/svg-map-components");
6
+ const d3Geo = require("d3-geo");
7
+ const uiComponents = require("@macrostrat/ui-components");
8
+ const layers = require("./layers.cjs");
9
+ function ResizableMapFrame(props) {
10
+ const { center, children, style, margin, className, allowZoom, ...rest } = props;
11
+ let { scale } = props;
12
+ const ref = React.useRef(null);
13
+ const sz = uiComponents.useElementSize(ref);
14
+ const { width, height } = sz ?? { width: 0, height: 0 };
15
+ if (scale == null) {
16
+ scale = Math.min(width, height) + 2 * margin;
17
+ }
18
+ let zoomScaleExtent = null;
19
+ if (allowZoom) {
20
+ zoomScaleExtent = [
21
+ 0.1 * Math.min(width, height),
22
+ 2 * Math.max(width, height)
23
+ ];
24
+ }
25
+ return h("div.map-area", { ref, style, className }, [
26
+ h(
27
+ svgMapComponents.Globe,
28
+ {
29
+ width,
30
+ height,
31
+ margin,
32
+ center,
33
+ allowDrag: true,
34
+ allowZoom,
35
+ keepNorthUp: true,
36
+ zoomScaleExtent,
37
+ ...rest,
38
+ scale
39
+ },
40
+ [h(svgMapComponents.LandLayer), children]
41
+ )
42
+ ]);
43
+ }
44
+ function ColumnNavigationSVGMap(props) {
45
+ const {
46
+ currentColumn,
47
+ setCurrentColumn,
48
+ children,
49
+ style,
50
+ margin = 10,
51
+ scale,
52
+ className,
53
+ showInProcessColumns = false,
54
+ showDebugLayers = false,
55
+ center,
56
+ ...rest
57
+ } = props;
58
+ let _center = center ?? [-100, 38];
59
+ if (currentColumn != null) {
60
+ _center = d3Geo.geoCentroid(currentColumn);
61
+ }
62
+ return h(
63
+ ResizableMapFrame,
64
+ { center: _center, style, margin, scale, className },
65
+ [
66
+ children,
67
+ h(layers.Columns, {
68
+ onChange: setCurrentColumn,
69
+ col_id: currentColumn?.properties.col_id,
70
+ showDebugLayers,
71
+ ...rest
72
+ }),
73
+ h.if(showInProcessColumns)(layers.Columns, {
74
+ onChange: setCurrentColumn,
75
+ col_id: currentColumn?.properties.col_id,
76
+ status_code: "in process",
77
+ color: "rgba(200,150,150, 0.5)",
78
+ ...rest
79
+ }),
80
+ h.if(currentColumn != null)(layers.CurrentColumn, { feature: currentColumn })
81
+ ]
82
+ );
83
+ }
84
+ exports.ColumnCenters = layers.ColumnCenters;
85
+ exports.ColumnFeatures = layers.ColumnFeatures;
86
+ exports.ColumnKeyboardNavigation = layers.ColumnKeyboardNavigation;
87
+ exports.Columns = layers.Columns;
88
+ exports.CurrentColumn = layers.CurrentColumn;
89
+ exports.MeasurementsLayer = layers.MeasurementsLayer;
90
+ exports.ColumnNavigationSVGMap = ColumnNavigationSVGMap;
91
+ exports.ResizableMapFrame = ResizableMapFrame;
92
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/maps/column-navigation/svg/index.ts"],"sourcesContent":["import { useRef } from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport { Globe, LandLayer } from \"@macrostrat/svg-map-components\";\nimport { geoCentroid } from \"d3-geo\";\nimport { useElementSize } from \"@macrostrat/ui-components\";\nimport { Columns, CurrentColumn } from \"./layers\";\nimport type { LngLatLike } from \"mapbox-gl\";\n\nexport function ResizableMapFrame(props) {\n const { center, children, style, margin, className, allowZoom, ...rest } =\n props;\n let { scale } = props;\n const ref = useRef(null);\n const sz = useElementSize(ref);\n const { width, height } = sz ?? { width: 0, height: 0 };\n if (scale == null) {\n scale = Math.min(width, height) + 2 * margin;\n }\n\n let zoomScaleExtent = null;\n\n if (allowZoom) {\n zoomScaleExtent = [\n 0.1 * Math.min(width, height),\n 2 * Math.max(width, height),\n ];\n }\n\n return h(\"div.map-area\", { ref, style, className }, [\n h(\n Globe,\n {\n width,\n height,\n margin,\n center,\n allowDrag: true,\n allowZoom,\n keepNorthUp: true,\n zoomScaleExtent,\n ...rest,\n scale,\n },\n [h(LandLayer), children],\n ),\n ]);\n}\n\ntype ColumnNavigationSVGMapProps = any;\nexport type { ColumnNavigationSVGMapProps };\n\nexport function ColumnNavigationSVGMap(props) {\n const {\n currentColumn,\n setCurrentColumn,\n children,\n style,\n margin = 10,\n scale,\n className,\n showInProcessColumns = false,\n showDebugLayers = false,\n center,\n ...rest\n } = props;\n\n let _center: LngLatLike | null = center ?? [-100, 38];\n // Override center if currentColumn is set\n if (currentColumn != null) {\n _center = geoCentroid(currentColumn);\n }\n\n return h(\n ResizableMapFrame,\n { center: _center, style, margin, scale, className },\n [\n children,\n h(Columns, {\n onChange: setCurrentColumn,\n col_id: currentColumn?.properties.col_id,\n showDebugLayers,\n ...rest,\n }),\n h.if(showInProcessColumns)(Columns, {\n onChange: setCurrentColumn,\n col_id: currentColumn?.properties.col_id,\n status_code: \"in process\",\n color: \"rgba(200,150,150, 0.5)\",\n ...rest,\n }),\n h.if(currentColumn != null)(CurrentColumn, { feature: currentColumn }),\n ],\n );\n}\n\nexport * from \"./layers\";\n"],"names":["useRef","useElementSize","Globe","LandLayer","geoCentroid","Columns","CurrentColumn"],"mappings":";;;;;;;;AAQO,SAAS,kBAAkB,OAAO;AACvC,QAAM,EAAE,QAAQ,UAAU,OAAO,QAAQ,WAAW,WAAW,GAAG,KAAA,IAChE;AACF,MAAI,EAAE,UAAU;AAChB,QAAM,MAAMA,MAAAA,OAAO,IAAI;AACvB,QAAM,KAAKC,aAAAA,eAAe,GAAG;AAC7B,QAAM,EAAE,OAAO,WAAW,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAA;AACpD,MAAI,SAAS,MAAM;AACjB,YAAQ,KAAK,IAAI,OAAO,MAAM,IAAI,IAAI;AAAA,EACxC;AAEA,MAAI,kBAAkB;AAEtB,MAAI,WAAW;AACb,sBAAkB;AAAA,MAChB,MAAM,KAAK,IAAI,OAAO,MAAM;AAAA,MAC5B,IAAI,KAAK,IAAI,OAAO,MAAM;AAAA,IAAA;AAAA,EAE9B;AAEA,SAAO,EAAE,gBAAgB,EAAE,KAAK,OAAO,aAAa;AAAA,IAClD;AAAA,MACEC,iBAAAA;AAAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,aAAa;AAAA,QACb;AAAA,QACA,GAAG;AAAA,QACH;AAAA,MAAA;AAAA,MAEF,CAAC,EAAEC,iBAAAA,SAAS,GAAG,QAAQ;AAAA,IAAA;AAAA,EACzB,CACD;AACH;AAKO,SAAS,uBAAuB,OAAO;AAC5C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,uBAAuB;AAAA,IACvB,kBAAkB;AAAA,IAClB;AAAA,IACA,GAAG;AAAA,EAAA,IACD;AAEJ,MAAI,UAA6B,UAAU,CAAC,MAAM,EAAE;AAEpD,MAAI,iBAAiB,MAAM;AACzB,cAAUC,MAAAA,YAAY,aAAa;AAAA,EACrC;AAEA,SAAO;AAAA,IACL;AAAA,IACA,EAAE,QAAQ,SAAS,OAAO,QAAQ,OAAO,UAAA;AAAA,IACzC;AAAA,MACE;AAAA,MACA,EAAEC,OAAAA,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ,eAAe,WAAW;AAAA,QAClC;AAAA,QACA,GAAG;AAAA,MAAA,CACJ;AAAA,MACD,EAAE,GAAG,oBAAoB,EAAEA,gBAAS;AAAA,QAClC,UAAU;AAAA,QACV,QAAQ,eAAe,WAAW;AAAA,QAClC,aAAa;AAAA,QACb,OAAO;AAAA,QACP,GAAG;AAAA,MAAA,CACJ;AAAA,MACD,EAAE,GAAG,iBAAiB,IAAI,EAAEC,sBAAe,EAAE,SAAS,cAAA,CAAe;AAAA,IAAA;AAAA,EACvE;AAEJ;;;;;;;;;"}
@@ -0,0 +1,9 @@
1
+ export declare function ResizableMapFrame(props: any): import('react').ReactElement<{
2
+ ref: import('react').MutableRefObject<any>;
3
+ style: any;
4
+ className: any;
5
+ }, string | import('react').JSXElementConstructor<any>>;
6
+ type ColumnNavigationSVGMapProps = any;
7
+ export type { ColumnNavigationSVGMapProps };
8
+ export declare function ColumnNavigationSVGMap(props: any): import('react').FunctionComponentElement<any>;
9
+ export * from './layers';
@@ -0,0 +1,93 @@
1
+ import { useRef } from "react";
2
+ import h from "@macrostrat/hyper";
3
+ import { Globe, LandLayer } from "@macrostrat/svg-map-components";
4
+ import { geoCentroid } from "d3-geo";
5
+ import { useElementSize } from "@macrostrat/ui-components";
6
+ import { Columns, CurrentColumn } from "./layers.js";
7
+ import { ColumnCenters, ColumnFeatures, ColumnKeyboardNavigation, MeasurementsLayer } from "./layers.js";
8
+ function ResizableMapFrame(props) {
9
+ const { center, children, style, margin, className, allowZoom, ...rest } = props;
10
+ let { scale } = props;
11
+ const ref = useRef(null);
12
+ const sz = useElementSize(ref);
13
+ const { width, height } = sz ?? { width: 0, height: 0 };
14
+ if (scale == null) {
15
+ scale = Math.min(width, height) + 2 * margin;
16
+ }
17
+ let zoomScaleExtent = null;
18
+ if (allowZoom) {
19
+ zoomScaleExtent = [
20
+ 0.1 * Math.min(width, height),
21
+ 2 * Math.max(width, height)
22
+ ];
23
+ }
24
+ return h("div.map-area", { ref, style, className }, [
25
+ h(
26
+ Globe,
27
+ {
28
+ width,
29
+ height,
30
+ margin,
31
+ center,
32
+ allowDrag: true,
33
+ allowZoom,
34
+ keepNorthUp: true,
35
+ zoomScaleExtent,
36
+ ...rest,
37
+ scale
38
+ },
39
+ [h(LandLayer), children]
40
+ )
41
+ ]);
42
+ }
43
+ function ColumnNavigationSVGMap(props) {
44
+ const {
45
+ currentColumn,
46
+ setCurrentColumn,
47
+ children,
48
+ style,
49
+ margin = 10,
50
+ scale,
51
+ className,
52
+ showInProcessColumns = false,
53
+ showDebugLayers = false,
54
+ center,
55
+ ...rest
56
+ } = props;
57
+ let _center = center ?? [-100, 38];
58
+ if (currentColumn != null) {
59
+ _center = geoCentroid(currentColumn);
60
+ }
61
+ return h(
62
+ ResizableMapFrame,
63
+ { center: _center, style, margin, scale, className },
64
+ [
65
+ children,
66
+ h(Columns, {
67
+ onChange: setCurrentColumn,
68
+ col_id: currentColumn?.properties.col_id,
69
+ showDebugLayers,
70
+ ...rest
71
+ }),
72
+ h.if(showInProcessColumns)(Columns, {
73
+ onChange: setCurrentColumn,
74
+ col_id: currentColumn?.properties.col_id,
75
+ status_code: "in process",
76
+ color: "rgba(200,150,150, 0.5)",
77
+ ...rest
78
+ }),
79
+ h.if(currentColumn != null)(CurrentColumn, { feature: currentColumn })
80
+ ]
81
+ );
82
+ }
83
+ export {
84
+ ColumnCenters,
85
+ ColumnFeatures,
86
+ ColumnKeyboardNavigation,
87
+ ColumnNavigationSVGMap,
88
+ Columns,
89
+ CurrentColumn,
90
+ MeasurementsLayer,
91
+ ResizableMapFrame
92
+ };
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/maps/column-navigation/svg/index.ts"],"sourcesContent":["import { useRef } from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport { Globe, LandLayer } from \"@macrostrat/svg-map-components\";\nimport { geoCentroid } from \"d3-geo\";\nimport { useElementSize } from \"@macrostrat/ui-components\";\nimport { Columns, CurrentColumn } from \"./layers\";\nimport type { LngLatLike } from \"mapbox-gl\";\n\nexport function ResizableMapFrame(props) {\n const { center, children, style, margin, className, allowZoom, ...rest } =\n props;\n let { scale } = props;\n const ref = useRef(null);\n const sz = useElementSize(ref);\n const { width, height } = sz ?? { width: 0, height: 0 };\n if (scale == null) {\n scale = Math.min(width, height) + 2 * margin;\n }\n\n let zoomScaleExtent = null;\n\n if (allowZoom) {\n zoomScaleExtent = [\n 0.1 * Math.min(width, height),\n 2 * Math.max(width, height),\n ];\n }\n\n return h(\"div.map-area\", { ref, style, className }, [\n h(\n Globe,\n {\n width,\n height,\n margin,\n center,\n allowDrag: true,\n allowZoom,\n keepNorthUp: true,\n zoomScaleExtent,\n ...rest,\n scale,\n },\n [h(LandLayer), children],\n ),\n ]);\n}\n\ntype ColumnNavigationSVGMapProps = any;\nexport type { ColumnNavigationSVGMapProps };\n\nexport function ColumnNavigationSVGMap(props) {\n const {\n currentColumn,\n setCurrentColumn,\n children,\n style,\n margin = 10,\n scale,\n className,\n showInProcessColumns = false,\n showDebugLayers = false,\n center,\n ...rest\n } = props;\n\n let _center: LngLatLike | null = center ?? [-100, 38];\n // Override center if currentColumn is set\n if (currentColumn != null) {\n _center = geoCentroid(currentColumn);\n }\n\n return h(\n ResizableMapFrame,\n { center: _center, style, margin, scale, className },\n [\n children,\n h(Columns, {\n onChange: setCurrentColumn,\n col_id: currentColumn?.properties.col_id,\n showDebugLayers,\n ...rest,\n }),\n h.if(showInProcessColumns)(Columns, {\n onChange: setCurrentColumn,\n col_id: currentColumn?.properties.col_id,\n status_code: \"in process\",\n color: \"rgba(200,150,150, 0.5)\",\n ...rest,\n }),\n h.if(currentColumn != null)(CurrentColumn, { feature: currentColumn }),\n ],\n );\n}\n\nexport * from \"./layers\";\n"],"names":[],"mappings":";;;;;;;AAQO,SAAS,kBAAkB,OAAO;AACvC,QAAM,EAAE,QAAQ,UAAU,OAAO,QAAQ,WAAW,WAAW,GAAG,KAAA,IAChE;AACF,MAAI,EAAE,UAAU;AAChB,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,KAAK,eAAe,GAAG;AAC7B,QAAM,EAAE,OAAO,WAAW,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAA;AACpD,MAAI,SAAS,MAAM;AACjB,YAAQ,KAAK,IAAI,OAAO,MAAM,IAAI,IAAI;AAAA,EACxC;AAEA,MAAI,kBAAkB;AAEtB,MAAI,WAAW;AACb,sBAAkB;AAAA,MAChB,MAAM,KAAK,IAAI,OAAO,MAAM;AAAA,MAC5B,IAAI,KAAK,IAAI,OAAO,MAAM;AAAA,IAAA;AAAA,EAE9B;AAEA,SAAO,EAAE,gBAAgB,EAAE,KAAK,OAAO,aAAa;AAAA,IAClD;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,aAAa;AAAA,QACb;AAAA,QACA,GAAG;AAAA,QACH;AAAA,MAAA;AAAA,MAEF,CAAC,EAAE,SAAS,GAAG,QAAQ;AAAA,IAAA;AAAA,EACzB,CACD;AACH;AAKO,SAAS,uBAAuB,OAAO;AAC5C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,uBAAuB;AAAA,IACvB,kBAAkB;AAAA,IAClB;AAAA,IACA,GAAG;AAAA,EAAA,IACD;AAEJ,MAAI,UAA6B,UAAU,CAAC,MAAM,EAAE;AAEpD,MAAI,iBAAiB,MAAM;AACzB,cAAU,YAAY,aAAa;AAAA,EACrC;AAEA,SAAO;AAAA,IACL;AAAA,IACA,EAAE,QAAQ,SAAS,OAAO,QAAQ,OAAO,UAAA;AAAA,IACzC;AAAA,MACE;AAAA,MACA,EAAE,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ,eAAe,WAAW;AAAA,QAClC;AAAA,QACA,GAAG;AAAA,MAAA,CACJ;AAAA,MACD,EAAE,GAAG,oBAAoB,EAAE,SAAS;AAAA,QAClC,UAAU;AAAA,QACV,QAAQ,eAAe,WAAW;AAAA,QAClC,aAAa;AAAA,QACb,OAAO;AAAA,QACP,GAAG;AAAA,MAAA,CACJ;AAAA,MACD,EAAE,GAAG,iBAAiB,IAAI,EAAE,eAAe,EAAE,SAAS,cAAA,CAAe;AAAA,IAAA;AAAA,EACvE;AAEJ;"}