@macrostrat/column-views 3.0.1 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/age-axis.cjs +3 -1
  3. package/dist/age-axis.cjs.map +1 -1
  4. package/dist/age-model-overlay.cjs +3 -1
  5. package/dist/age-model-overlay.cjs.map +1 -1
  6. package/dist/age-model-overlay.module.sass.cjs +1 -2
  7. package/dist/age-model-overlay.module.sass.cjs.map +1 -1
  8. package/dist/column.cjs +3 -1
  9. package/dist/column.cjs.map +1 -1
  10. package/dist/correlation-chart/main.cjs +5 -2
  11. package/dist/correlation-chart/main.cjs.map +1 -1
  12. package/dist/data-provider/base.cjs +8 -5
  13. package/dist/data-provider/base.cjs.map +1 -1
  14. package/dist/data-provider/column-nav.cjs +3 -1
  15. package/dist/data-provider/column-nav.cjs.map +1 -1
  16. package/dist/data-provider/core.cjs +4 -2
  17. package/dist/data-provider/core.cjs.map +1 -1
  18. package/dist/data-provider/fetch.cjs +4 -2
  19. package/dist/data-provider/fetch.cjs.map +1 -1
  20. package/dist/data-provider/store.cjs +7 -5
  21. package/dist/data-provider/store.cjs.map +1 -1
  22. package/dist/facets/carbon-isotopes/data-area.cjs +4 -2
  23. package/dist/facets/carbon-isotopes/data-area.cjs.map +1 -1
  24. package/dist/facets/carbon-isotopes/data-provider.cjs +3 -1
  25. package/dist/facets/carbon-isotopes/data-provider.cjs.map +1 -1
  26. package/dist/facets/carbon-isotopes/isotopes-column.cjs +5 -2
  27. package/dist/facets/carbon-isotopes/isotopes-column.cjs.map +1 -1
  28. package/dist/facets/detrital-zircon/index.cjs +5 -2
  29. package/dist/facets/detrital-zircon/index.cjs.map +1 -1
  30. package/dist/facets/detrital-zircon/index.module.sass.cjs +1 -2
  31. package/dist/facets/detrital-zircon/index.module.sass.cjs.map +1 -1
  32. package/dist/facets/fossils/index.cjs +3 -1
  33. package/dist/facets/fossils/index.cjs.map +1 -1
  34. package/dist/facets/fossils/taxon-ranges.cjs +3 -1
  35. package/dist/facets/fossils/taxon-ranges.cjs.map +1 -1
  36. package/dist/facets/fossils/taxon-ranges.module.sass.cjs +1 -2
  37. package/dist/facets/fossils/taxon-ranges.module.sass.cjs.map +1 -1
  38. package/dist/facets/measurements/base.cjs +3 -1
  39. package/dist/facets/measurements/base.cjs.map +1 -1
  40. package/dist/facets/measurements/base.module.sass.cjs +1 -2
  41. package/dist/facets/measurements/base.module.sass.cjs.map +1 -1
  42. package/dist/facets/measurements/sgp.cjs +5 -3
  43. package/dist/facets/measurements/sgp.cjs.map +1 -1
  44. package/dist/maps/_shared/inset-map.cjs +5 -3
  45. package/dist/maps/_shared/inset-map.cjs.map +1 -1
  46. package/dist/maps/column-correlation/core.cjs +7 -5
  47. package/dist/maps/column-correlation/core.cjs.map +1 -1
  48. package/dist/maps/column-correlation/state.cjs +5 -2
  49. package/dist/maps/column-correlation/state.cjs.map +1 -1
  50. package/dist/maps/column-navigation/mapbox/index.cjs +7 -5
  51. package/dist/maps/column-navigation/mapbox/index.cjs.map +1 -1
  52. package/dist/maps/column-navigation/mapbox/state.cjs +3 -1
  53. package/dist/maps/column-navigation/mapbox/state.cjs.map +1 -1
  54. package/dist/maps/column-navigation/svg/index.cjs +9 -7
  55. package/dist/maps/column-navigation/svg/index.cjs.map +1 -1
  56. package/dist/maps/column-navigation/svg/layers.cjs +16 -13
  57. package/dist/maps/column-navigation/svg/layers.cjs.map +1 -1
  58. package/dist/notes.cjs +5 -3
  59. package/dist/notes.cjs.map +1 -1
  60. package/dist/section.cjs +3 -1
  61. package/dist/section.cjs.map +1 -1
  62. package/dist/unit-details/modal-panel.cjs +6 -4
  63. package/dist/unit-details/modal-panel.cjs.map +1 -1
  64. package/dist/unit-details/panel.cjs +8 -5
  65. package/dist/unit-details/panel.cjs.map +1 -1
  66. package/dist/unit-details/popover.cjs +5 -2
  67. package/dist/unit-details/popover.cjs.map +1 -1
  68. package/dist/unit-details/popover.module.sass.cjs +1 -2
  69. package/dist/unit-details/popover.module.sass.cjs.map +1 -1
  70. package/dist/units/boxes.cjs +5 -2
  71. package/dist/units/boxes.cjs.map +1 -1
  72. package/dist/units/colors.cjs +3 -1
  73. package/dist/units/colors.cjs.map +1 -1
  74. package/dist/units/composite.cjs +1 -1
  75. package/dist/units/composite.cjs.map +1 -1
  76. package/dist/units/composite.module.sass.cjs +1 -2
  77. package/dist/units/composite.module.sass.cjs.map +1 -1
  78. package/dist/units/index.cjs +10 -8
  79. package/dist/units/index.cjs.map +1 -1
  80. package/dist/units/names.cjs +7 -4
  81. package/dist/units/names.cjs.map +1 -1
  82. package/package.json +22 -17
@@ -4,6 +4,8 @@ const h = require("@macrostrat/hyper");
4
4
  const uiComponents = require("@macrostrat/ui-components");
5
5
  const base = require("./base.cjs");
6
6
  const store = require("../../data-provider/store.cjs");
7
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
8
+ const h__default = /* @__PURE__ */ _interopDefault(h);
7
9
  function useSGPData({ col_id }) {
8
10
  return uiComponents.useAPIResult(
9
11
  "https://dev.macrostrat.org/api/pg/sgp_unit_matches",
@@ -19,7 +21,7 @@ function SGPMeasurementsColumn({ columnID }) {
19
21
  const scale = store.useCompositeScale();
20
22
  if (data == null || units == null || scale == null) return null;
21
23
  const data1 = prepareSGPData(data, scale, units, axisType);
22
- return h(base.BaseMeasurementsColumn, {
24
+ return h__default.default(base.BaseMeasurementsColumn, {
23
25
  data: data1,
24
26
  noteComponent: SGPSamplesNote,
25
27
  focusedNoteComponent: SGPSamplesNote
@@ -29,12 +31,12 @@ function SGPSamplesNote(props) {
29
31
  const { note, focused, sgpBaseURL = "https://sgp-search.io" } = props;
30
32
  const sgp_samples = note?.data;
31
33
  if (sgp_samples == null || sgp_samples.length === 0) return null;
32
- return h(base.TruncatedList, {
34
+ return h__default.default(base.TruncatedList, {
33
35
  className: "sgp-samples",
34
36
  data: sgp_samples,
35
37
  itemRenderer: (p) => {
36
38
  const sgpLink = sgpBaseURL + `/samples/${p.data.id}`;
37
- return h("a", { href: sgpLink, target: "_blank" }, p.data.name);
39
+ return h__default.default("a", { href: sgpLink, target: "_blank" }, p.data.name);
38
40
  },
39
41
  maxItems: focused ? Infinity : 5
40
42
  });
@@ -1 +1 @@
1
- {"version":3,"file":"sgp.cjs","sources":["../../../src/facets/measurements/sgp.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport { useAPIResult } from \"@macrostrat/ui-components\";\nimport {\n BaseMeasurementsColumn,\n groupNotesByPixelDistance,\n standardizeMeasurementHeight,\n TruncatedList,\n} from \"./base\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport {\n useCompositeScale,\n useMacrostratColumnData,\n} from \"../../data-provider\";\nimport type { CompositeColumnScale } from \"../../prepare-units\";\n\nfunction useSGPData({ col_id }) {\n return useAPIResult(\n \"https://dev.macrostrat.org/api/pg/sgp_unit_matches\",\n {\n col_id: `eq.${col_id}`,\n },\n (d) => d,\n );\n}\n\ninterface SGPSampleData {\n col_id: number;\n unit_id: number;\n sgp_samples: { name: string; id: number }[];\n}\n\nexport function SGPMeasurementsColumn({ columnID }) {\n const data: SGPSampleData[] | null = useSGPData({ col_id: columnID });\n const { axisType, units } = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n if (data == null || units == null || scale == null) return null;\n\n const data1 = prepareSGPData(data, scale, units, axisType);\n\n return h(BaseMeasurementsColumn, {\n data: data1,\n noteComponent: SGPSamplesNote,\n focusedNoteComponent: SGPSamplesNote,\n });\n}\n\nfunction SGPSamplesNote(props: {\n note: any;\n focused: boolean;\n sgpBaseURL?: string;\n}) {\n const { note, focused, sgpBaseURL = \"https://sgp-search.io\" } = props;\n const sgp_samples = note?.data;\n\n if (sgp_samples == null || sgp_samples.length === 0) return null;\n\n return h(TruncatedList, {\n className: \"sgp-samples\",\n data: sgp_samples,\n itemRenderer: (p) => {\n const sgpLink = sgpBaseURL + `/samples/${p.data.id}`;\n return h(\"a\", { href: sgpLink, target: \"_blank\" }, p.data.name);\n },\n maxItems: focused ? Infinity : 5,\n });\n}\n\nfunction prepareSGPData(\n data: SGPSampleData[],\n scale: CompositeColumnScale,\n units: UnitLong[],\n axisType: ColumnAxisType,\n) {\n // Find matching units for samples\n const d1 = data\n .map((sample) => {\n const data = sample.sgp_samples;\n if (data == null || data.length === 0) return null;\n const heightData = standardizeMeasurementHeight(\n { unit_id: sample.unit_id },\n units,\n axisType,\n );\n if (heightData == null) return null;\n data.sort((a, b) => a.id - b.id);\n return {\n ...heightData,\n data,\n id: sample.unit_id,\n };\n })\n .filter(Boolean);\n\n return groupNotesByPixelDistance(d1, scale, axisType, 5);\n}\n"],"names":["useAPIResult","useMacrostratColumnData","useCompositeScale","BaseMeasurementsColumn","TruncatedList","data","standardizeMeasurementHeight","groupNotesByPixelDistance"],"mappings":";;;;;;AAgBA,SAAS,WAAW,EAAE,UAAU;AAC9B,SAAOA,aAAAA;AAAAA,IACL;AAAA,IACA;AAAA,MACE,QAAQ,MAAM,MAAM;AAAA,IAAA;AAAA,IAEtB,CAAC,MAAM;AAAA,EAAA;AAEX;AAQO,SAAS,sBAAsB,EAAE,YAAY;AAClD,QAAM,OAA+B,WAAW,EAAE,QAAQ,UAAU;AACpE,QAAM,EAAE,UAAU,MAAA,IAAUC,8BAAA;AAC5B,QAAM,QAAQC,MAAAA,kBAAA;AAEd,MAAI,QAAQ,QAAQ,SAAS,QAAQ,SAAS,KAAM,QAAO;AAE3D,QAAM,QAAQ,eAAe,MAAM,OAAO,OAAO,QAAQ;AAEzD,SAAO,EAAEC,KAAAA,wBAAwB;AAAA,IAC/B,MAAM;AAAA,IACN,eAAe;AAAA,IACf,sBAAsB;AAAA,EAAA,CACvB;AACH;AAEA,SAAS,eAAe,OAIrB;AACD,QAAM,EAAE,MAAM,SAAS,aAAa,4BAA4B;AAChE,QAAM,cAAc,MAAM;AAE1B,MAAI,eAAe,QAAQ,YAAY,WAAW,EAAG,QAAO;AAE5D,SAAO,EAAEC,KAAAA,eAAe;AAAA,IACtB,WAAW;AAAA,IACX,MAAM;AAAA,IACN,cAAc,CAAC,MAAM;AACnB,YAAM,UAAU,aAAa,YAAY,EAAE,KAAK,EAAE;AAClD,aAAO,EAAE,KAAK,EAAE,MAAM,SAAS,QAAQ,YAAY,EAAE,KAAK,IAAI;AAAA,IAChE;AAAA,IACA,UAAU,UAAU,WAAW;AAAA,EAAA,CAChC;AACH;AAEA,SAAS,eACP,MACA,OACA,OACA,UACA;AAEA,QAAM,KAAK,KACR,IAAI,CAAC,WAAW;AACf,UAAMC,QAAO,OAAO;AACpB,QAAIA,SAAQ,QAAQA,MAAK,WAAW,EAAG,QAAO;AAC9C,UAAM,aAAaC,KAAAA;AAAAA,MACjB,EAAE,SAAS,OAAO,QAAA;AAAA,MAClB;AAAA,MACA;AAAA,IAAA;AAEF,QAAI,cAAc,KAAM,QAAO;AAC/BD,UAAK,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AAC/B,WAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAAA;AAAAA,MACA,IAAI,OAAO;AAAA,IAAA;AAAA,EAEf,CAAC,EACA,OAAO,OAAO;AAEjB,SAAOE,KAAAA,0BAA0B,IAAI,OAAO,UAAU,CAAC;AACzD;;"}
1
+ {"version":3,"file":"sgp.cjs","sources":["../../../src/facets/measurements/sgp.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport { useAPIResult } from \"@macrostrat/ui-components\";\nimport {\n BaseMeasurementsColumn,\n groupNotesByPixelDistance,\n standardizeMeasurementHeight,\n TruncatedList,\n} from \"./base\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport {\n useCompositeScale,\n useMacrostratColumnData,\n} from \"../../data-provider\";\nimport type { CompositeColumnScale } from \"../../prepare-units\";\n\nfunction useSGPData({ col_id }) {\n return useAPIResult(\n \"https://dev.macrostrat.org/api/pg/sgp_unit_matches\",\n {\n col_id: `eq.${col_id}`,\n },\n (d) => d,\n );\n}\n\ninterface SGPSampleData {\n col_id: number;\n unit_id: number;\n sgp_samples: { name: string; id: number }[];\n}\n\nexport function SGPMeasurementsColumn({ columnID }) {\n const data: SGPSampleData[] | null = useSGPData({ col_id: columnID });\n const { axisType, units } = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n if (data == null || units == null || scale == null) return null;\n\n const data1 = prepareSGPData(data, scale, units, axisType);\n\n return h(BaseMeasurementsColumn, {\n data: data1,\n noteComponent: SGPSamplesNote,\n focusedNoteComponent: SGPSamplesNote,\n });\n}\n\nfunction SGPSamplesNote(props: {\n note: any;\n focused: boolean;\n sgpBaseURL?: string;\n}) {\n const { note, focused, sgpBaseURL = \"https://sgp-search.io\" } = props;\n const sgp_samples = note?.data;\n\n if (sgp_samples == null || sgp_samples.length === 0) return null;\n\n return h(TruncatedList, {\n className: \"sgp-samples\",\n data: sgp_samples,\n itemRenderer: (p) => {\n const sgpLink = sgpBaseURL + `/samples/${p.data.id}`;\n return h(\"a\", { href: sgpLink, target: \"_blank\" }, p.data.name);\n },\n maxItems: focused ? Infinity : 5,\n });\n}\n\nfunction prepareSGPData(\n data: SGPSampleData[],\n scale: CompositeColumnScale,\n units: UnitLong[],\n axisType: ColumnAxisType,\n) {\n // Find matching units for samples\n const d1 = data\n .map((sample) => {\n const data = sample.sgp_samples;\n if (data == null || data.length === 0) return null;\n const heightData = standardizeMeasurementHeight(\n { unit_id: sample.unit_id },\n units,\n axisType,\n );\n if (heightData == null) return null;\n data.sort((a, b) => a.id - b.id);\n return {\n ...heightData,\n data,\n id: sample.unit_id,\n };\n })\n .filter(Boolean);\n\n return groupNotesByPixelDistance(d1, scale, axisType, 5);\n}\n"],"names":["useAPIResult","useMacrostratColumnData","useCompositeScale","h","BaseMeasurementsColumn","TruncatedList","data","standardizeMeasurementHeight","groupNotesByPixelDistance"],"mappings":";;;;;;;;AAgBA,SAAS,WAAW,EAAE,UAAU;AAC9B,SAAOA,aAAAA;AAAAA,IACL;AAAA,IACA;AAAA,MACE,QAAQ,MAAM,MAAM;AAAA,IAAA;AAAA,IAEtB,CAAC,MAAM;AAAA,EAAA;AAEX;AAQO,SAAS,sBAAsB,EAAE,YAAY;AAClD,QAAM,OAA+B,WAAW,EAAE,QAAQ,UAAU;AACpE,QAAM,EAAE,UAAU,MAAA,IAAUC,8BAAA;AAC5B,QAAM,QAAQC,MAAAA,kBAAA;AAEd,MAAI,QAAQ,QAAQ,SAAS,QAAQ,SAAS,KAAM,QAAO;AAE3D,QAAM,QAAQ,eAAe,MAAM,OAAO,OAAO,QAAQ;AAEzD,SAAOC,WAAAA,QAAEC,KAAAA,wBAAwB;AAAA,IAC/B,MAAM;AAAA,IACN,eAAe;AAAA,IACf,sBAAsB;AAAA,EAAA,CACvB;AACH;AAEA,SAAS,eAAe,OAIrB;AACD,QAAM,EAAE,MAAM,SAAS,aAAa,4BAA4B;AAChE,QAAM,cAAc,MAAM;AAE1B,MAAI,eAAe,QAAQ,YAAY,WAAW,EAAG,QAAO;AAE5D,SAAOD,WAAAA,QAAEE,KAAAA,eAAe;AAAA,IACtB,WAAW;AAAA,IACX,MAAM;AAAA,IACN,cAAc,CAAC,MAAM;AACnB,YAAM,UAAU,aAAa,YAAY,EAAE,KAAK,EAAE;AAClD,aAAOF,mBAAE,KAAK,EAAE,MAAM,SAAS,QAAQ,YAAY,EAAE,KAAK,IAAI;AAAA,IAChE;AAAA,IACA,UAAU,UAAU,WAAW;AAAA,EAAA,CAChC;AACH;AAEA,SAAS,eACP,MACA,OACA,OACA,UACA;AAEA,QAAM,KAAK,KACR,IAAI,CAAC,WAAW;AACf,UAAMG,QAAO,OAAO;AACpB,QAAIA,SAAQ,QAAQA,MAAK,WAAW,EAAG,QAAO;AAC9C,UAAM,aAAaC,KAAAA;AAAAA,MACjB,EAAE,SAAS,OAAO,QAAA;AAAA,MAClB;AAAA,MACA;AAAA,IAAA;AAEF,QAAI,cAAc,KAAM,QAAO;AAC/BD,UAAK,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AAC/B,WAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAAA;AAAAA,MACA,IAAI,OAAO;AAAA,IAAA;AAAA,EAEf,CAAC,EACA,OAAO,OAAO;AAEjB,SAAOE,KAAAA,0BAA0B,IAAI,OAAO,UAAU,CAAC;AACzD;;"}
@@ -6,6 +6,8 @@ const h = require("@macrostrat/hyper");
6
6
  const mapboxReact = require("@macrostrat/mapbox-react");
7
7
  const uiComponents = require("@macrostrat/ui-components");
8
8
  const mapboxUtils = require("@macrostrat/mapbox-utils");
9
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
10
+ const h__default = /* @__PURE__ */ _interopDefault(h);
9
11
  function InsetMap({
10
12
  controls,
11
13
  className,
@@ -39,10 +41,10 @@ function InsetMap({
39
41
  },
40
42
  [mapStyle, showLabels, showRoads, showAdmin]
41
43
  );
42
- return h("div.inset-map", { className, style }, [
43
- h(mapboxReact.MapboxMapProvider, [
44
+ return h__default.default("div.inset-map", { className, style }, [
45
+ h__default.default(mapboxReact.MapboxMapProvider, [
44
46
  controls,
45
- h(
47
+ h__default.default(
46
48
  mapInterface.MapView,
47
49
  {
48
50
  style: _style,
@@ -1 +1 @@
1
- {"version":3,"file":"inset-map.cjs","sources":["../../../src/maps/_shared/inset-map.ts"],"sourcesContent":["import { useCallback, useMemo } from \"react\";\nimport {\n MapView,\n getBasicMapStyle,\n MapViewProps,\n} from \"@macrostrat/map-interface\";\nimport h from \"@macrostrat/hyper\";\nimport { MapboxMapProvider } from \"@macrostrat/mapbox-react\";\nimport { useInDarkMode } from \"@macrostrat/ui-components\";\nimport {\n removeMapLabels,\n removeSourceFromStyle,\n} from \"@macrostrat/mapbox-utils\";\nimport type { ReactNode, CSSProperties } from \"react\";\n\nexport interface InsetMapProps extends Omit<MapViewProps, \"style\"> {\n controls?: ReactNode;\n className?: string;\n children?: ReactNode;\n style?: CSSProperties;\n mapStyle?: mapboxgl.Style | string;\n showLabels?: boolean;\n showAdmin?: boolean;\n showRoads?: boolean;\n}\n\nexport function InsetMap({\n controls,\n className,\n children,\n style,\n mapStyle,\n accessToken,\n showLabels = false,\n showAdmin = false,\n showRoads = false,\n ...rest\n}: InsetMapProps) {\n const inDarkMode = useInDarkMode();\n const _style = useMemo((): mapboxgl.Style | string => {\n return mapStyle ?? getBasicMapStyle({ inDarkMode });\n }, [mapStyle, inDarkMode]);\n\n const transformStyle = useCallback(\n (style) => {\n let newStyle = style;\n if (!showLabels) {\n newStyle = removeMapLabels(newStyle);\n }\n if (!showAdmin) {\n newStyle = removeSourceFromStyle(newStyle, null, \"admin\");\n }\n if (!showRoads) {\n newStyle = removeSourceFromStyle(newStyle, null, \"road\");\n newStyle = removeSourceFromStyle(newStyle, null, \"aeroway\");\n }\n return newStyle;\n },\n [mapStyle, showLabels, showRoads, showAdmin],\n );\n\n return h(\"div.inset-map\", { className, style }, [\n h(MapboxMapProvider, [\n controls,\n h(\n MapView,\n {\n style: _style,\n accessToken,\n standalone: true,\n /* Default map position that centers on the bulk of Macrostrat columns\n */\n mapPosition: {\n camera: {\n lng: -100,\n lat: 38,\n altitude: 5000000,\n },\n },\n transformStyle,\n ...rest,\n },\n children,\n ),\n ]),\n ]);\n}\n"],"names":["useInDarkMode","useMemo","getBasicMapStyle","useCallback","style","removeMapLabels","removeSourceFromStyle","MapboxMapProvider","MapView"],"mappings":";;;;;;;;AA0BO,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,GAAG;AACL,GAAkB;AAChB,QAAM,aAAaA,aAAAA,cAAA;AACnB,QAAM,SAASC,MAAAA,QAAQ,MAA+B;AACpD,WAAO,YAAYC,aAAAA,iBAAiB,EAAE,YAAY;AAAA,EACpD,GAAG,CAAC,UAAU,UAAU,CAAC;AAEzB,QAAM,iBAAiBC,MAAAA;AAAAA,IACrB,CAACC,WAAU;AACT,UAAI,WAAWA;AACf,UAAI,CAAC,YAAY;AACf,mBAAWC,YAAAA,gBAAgB,QAAQ;AAAA,MACrC;AACA,UAAI,CAAC,WAAW;AACd,mBAAWC,YAAAA,sBAAsB,UAAU,MAAM,OAAO;AAAA,MAC1D;AACA,UAAI,CAAC,WAAW;AACd,mBAAWA,YAAAA,sBAAsB,UAAU,MAAM,MAAM;AACvD,mBAAWA,YAAAA,sBAAsB,UAAU,MAAM,SAAS;AAAA,MAC5D;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,UAAU,YAAY,WAAW,SAAS;AAAA,EAAA;AAG7C,SAAO,EAAE,iBAAiB,EAAE,WAAW,SAAS;AAAA,IAC9C,EAAEC,YAAAA,mBAAmB;AAAA,MACnB;AAAA,MACA;AAAA,QACEC,aAAAA;AAAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP;AAAA,UACA,YAAY;AAAA;AAAA;AAAA,UAGZ,aAAa;AAAA,YACX,QAAQ;AAAA,cACN,KAAK;AAAA,cACL,KAAK;AAAA,cACL,UAAU;AAAA,YAAA;AAAA,UACZ;AAAA,UAEF;AAAA,UACA,GAAG;AAAA,QAAA;AAAA,QAEL;AAAA,MAAA;AAAA,IACF,CACD;AAAA,EAAA,CACF;AACH;;"}
1
+ {"version":3,"file":"inset-map.cjs","sources":["../../../src/maps/_shared/inset-map.ts"],"sourcesContent":["import { useCallback, useMemo } from \"react\";\nimport {\n MapView,\n getBasicMapStyle,\n MapViewProps,\n} from \"@macrostrat/map-interface\";\nimport h from \"@macrostrat/hyper\";\nimport { MapboxMapProvider } from \"@macrostrat/mapbox-react\";\nimport { useInDarkMode } from \"@macrostrat/ui-components\";\nimport {\n removeMapLabels,\n removeSourceFromStyle,\n} from \"@macrostrat/mapbox-utils\";\nimport type { ReactNode, CSSProperties } from \"react\";\n\nexport interface InsetMapProps extends Omit<MapViewProps, \"style\"> {\n controls?: ReactNode;\n className?: string;\n children?: ReactNode;\n style?: CSSProperties;\n mapStyle?: mapboxgl.Style | string;\n showLabels?: boolean;\n showAdmin?: boolean;\n showRoads?: boolean;\n}\n\nexport function InsetMap({\n controls,\n className,\n children,\n style,\n mapStyle,\n accessToken,\n showLabels = false,\n showAdmin = false,\n showRoads = false,\n ...rest\n}: InsetMapProps) {\n const inDarkMode = useInDarkMode();\n const _style = useMemo((): mapboxgl.Style | string => {\n return mapStyle ?? getBasicMapStyle({ inDarkMode });\n }, [mapStyle, inDarkMode]);\n\n const transformStyle = useCallback(\n (style) => {\n let newStyle = style;\n if (!showLabels) {\n newStyle = removeMapLabels(newStyle);\n }\n if (!showAdmin) {\n newStyle = removeSourceFromStyle(newStyle, null, \"admin\");\n }\n if (!showRoads) {\n newStyle = removeSourceFromStyle(newStyle, null, \"road\");\n newStyle = removeSourceFromStyle(newStyle, null, \"aeroway\");\n }\n return newStyle;\n },\n [mapStyle, showLabels, showRoads, showAdmin],\n );\n\n return h(\"div.inset-map\", { className, style }, [\n h(MapboxMapProvider, [\n controls,\n h(\n MapView,\n {\n style: _style,\n accessToken,\n standalone: true,\n /* Default map position that centers on the bulk of Macrostrat columns\n */\n mapPosition: {\n camera: {\n lng: -100,\n lat: 38,\n altitude: 5000000,\n },\n },\n transformStyle,\n ...rest,\n },\n children,\n ),\n ]),\n ]);\n}\n"],"names":["useInDarkMode","useMemo","getBasicMapStyle","useCallback","style","removeMapLabels","removeSourceFromStyle","h","MapboxMapProvider","MapView"],"mappings":";;;;;;;;;;AA0BO,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,GAAG;AACL,GAAkB;AAChB,QAAM,aAAaA,aAAAA,cAAA;AACnB,QAAM,SAASC,MAAAA,QAAQ,MAA+B;AACpD,WAAO,YAAYC,aAAAA,iBAAiB,EAAE,YAAY;AAAA,EACpD,GAAG,CAAC,UAAU,UAAU,CAAC;AAEzB,QAAM,iBAAiBC,MAAAA;AAAAA,IACrB,CAACC,WAAU;AACT,UAAI,WAAWA;AACf,UAAI,CAAC,YAAY;AACf,mBAAWC,YAAAA,gBAAgB,QAAQ;AAAA,MACrC;AACA,UAAI,CAAC,WAAW;AACd,mBAAWC,YAAAA,sBAAsB,UAAU,MAAM,OAAO;AAAA,MAC1D;AACA,UAAI,CAAC,WAAW;AACd,mBAAWA,YAAAA,sBAAsB,UAAU,MAAM,MAAM;AACvD,mBAAWA,YAAAA,sBAAsB,UAAU,MAAM,SAAS;AAAA,MAC5D;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,UAAU,YAAY,WAAW,SAAS;AAAA,EAAA;AAG7C,SAAOC,WAAAA,QAAE,iBAAiB,EAAE,WAAW,SAAS;AAAA,IAC9CA,WAAAA,QAAEC,YAAAA,mBAAmB;AAAA,MACnB;AAAA,MACAD,WAAAA;AAAAA,QACEE,aAAAA;AAAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP;AAAA,UACA,YAAY;AAAA;AAAA;AAAA,UAGZ,aAAa;AAAA,YACX,QAAQ;AAAA,cACN,KAAK;AAAA,cACL,KAAK;AAAA,cACL,UAAU;AAAA,YAAA;AAAA,UACZ;AAAA,UAEF;AAAA,UACA,GAAG;AAAA,QAAA;AAAA,QAEL;AAAA,MAAA;AAAA,IACF,CACD;AAAA,EAAA,CACF;AACH;;"}
@@ -9,6 +9,8 @@ const state = require("./state.cjs");
9
9
  const mapStyles = require("@macrostrat/map-styles");
10
10
  const styles = require("../_shared/styles.cjs");
11
11
  const insetMap = require("../_shared/inset-map.cjs");
12
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
13
+ const h__default = /* @__PURE__ */ _interopDefault(h);
12
14
  function ColumnCorrelationMap(props) {
13
15
  const { padding = 50, children, columnColor, projectID, ...rest } = props;
14
16
  const overlayStyles = React.useMemo(() => {
@@ -18,7 +20,7 @@ function ColumnCorrelationMap(props) {
18
20
  lineOfSectionStyle
19
21
  ];
20
22
  }, [columnColor]);
21
- return h(
23
+ return h__default.default(
22
24
  insetMap.InsetMap,
23
25
  {
24
26
  ...rest,
@@ -27,10 +29,10 @@ function ColumnCorrelationMap(props) {
27
29
  overlayStyles
28
30
  },
29
31
  [
30
- h(ColumnsLayer),
31
- h(SelectedColumnsLayer),
32
- h(MapClickHandler),
33
- h(SectionLine, { padding }),
32
+ h__default.default(ColumnsLayer),
33
+ h__default.default(SelectedColumnsLayer),
34
+ h__default.default(MapClickHandler),
35
+ h__default.default(SectionLine, { padding }),
34
36
  children
35
37
  ]
36
38
  );
@@ -1 +1 @@
1
- {"version":3,"file":"core.cjs","sources":["../../../src/maps/column-correlation/core.ts"],"sourcesContent":["import {\n useMapClickHandler,\n useMapEaseTo,\n useMapStyleOperator,\n} from \"@macrostrat/mapbox-react\";\nimport { LngLatBounds, Style } from \"mapbox-gl\";\nimport h from \"@macrostrat/hyper\";\nimport { Feature, FeatureCollection } from \"geojson\";\nimport { ReactNode, useMemo } from \"react\";\nimport { setGeoJSON, buildGeoJSONSource } from \"@macrostrat/mapbox-utils\";\n\nimport { useCorrelationMapStore } from \"./state\";\nimport { buildColumnsStyle, InsetMap, InsetMapProps } from \"../_shared\";\nimport { buildCrossSectionLayers } from \"@macrostrat/map-styles\";\n\nexport interface CorrelationMapProps extends InsetMapProps {\n padding?: number;\n children?: ReactNode;\n accessToken?: string;\n columnColor?: string;\n}\n\nexport function ColumnCorrelationMap(props: CorrelationMapProps) {\n const { padding = 50, children, columnColor, projectID, ...rest } = props;\n\n const overlayStyles: Partial<Style>[] = useMemo(() => {\n return [\n buildColumnsStyle(columnColor) as Style,\n selectedColumnsStyle as Style,\n lineOfSectionStyle as Style,\n ];\n }, [columnColor]);\n\n return h(\n InsetMap,\n {\n ...rest,\n boxZoom: false,\n dragRotate: false,\n overlayStyles,\n },\n [\n h(ColumnsLayer),\n h(SelectedColumnsLayer),\n h(MapClickHandler),\n h(SectionLine, { padding }),\n children,\n ],\n );\n}\n\nfunction MapClickHandler() {\n const onClickMap = useCorrelationMapStore((state) => state.onClickMap);\n\n useMapClickHandler(\n (e) => {\n onClickMap(e, { type: \"Point\", coordinates: e.lngLat.toArray() });\n },\n [onClickMap],\n );\n\n return null;\n}\n\nfunction SelectedColumnsLayer() {\n const focusedColumns = useCorrelationMapStore(\n (state) => state.focusedColumns,\n );\n\n useMapStyleOperator(\n (map) => {\n let features = focusedColumns;\n\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features,\n };\n\n const columnCentroidLine: Feature = {\n type: \"Feature\",\n geometry: {\n type: \"LineString\",\n coordinates: features.map(\n (col) => col.properties.centroid.geometry.coordinates,\n ),\n },\n properties: {},\n };\n\n setGeoJSON(map, \"selected-columns\", data);\n setGeoJSON(map, \"selected-column-centroids\", {\n type: \"FeatureCollection\",\n features: [columnCentroidLine],\n });\n },\n [focusedColumns],\n );\n return null;\n}\n\nfunction ColumnsLayer({ enabled = true }) {\n const columns = useCorrelationMapStore((state) => state.columns);\n\n useMapStyleOperator(\n (map) => {\n if (columns == null) {\n return;\n }\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features: columns,\n };\n\n console.log(\" columns\", data);\n setGeoJSON(map, \"columns\", data);\n },\n [columns, enabled],\n );\n return null;\n}\n\nconst selectedColumnsStyle: Style = {\n version: 8,\n sources: {\n \"selected-columns\": buildGeoJSONSource(),\n \"selected-column-centroids\": buildGeoJSONSource(),\n },\n layers: [\n {\n id: \"selected-columns-fill\",\n type: \"fill\",\n source: \"selected-columns\",\n paint: {\n \"fill-color\": \"rgba(255, 0, 0, 0.1)\",\n },\n },\n {\n id: \"selected-column-centroids-line\",\n type: \"line\",\n source: \"selected-column-centroids\",\n paint: {\n \"line-color\": \"rgba(255, 0, 0, 0.8)\",\n \"line-width\": 2,\n \"line-dasharray\": [2, 2],\n },\n },\n {\n id: \"selected-column-centroids-points\",\n type: \"circle\",\n source: \"selected-column-centroids\",\n paint: {\n \"circle-radius\": 4,\n \"circle-color\": \"rgba(255, 0, 0, 0.8)\",\n },\n },\n ],\n};\n\nconst lineOfSectionStyle: Style = {\n version: 8,\n sources: {\n elevationMarker: buildGeoJSONSource(),\n crossSectionLine: buildGeoJSONSource(),\n crossSectionEndpoints: buildGeoJSONSource(),\n },\n layers: buildCrossSectionLayers(),\n};\n\nfunction SectionLine({ padding }: { padding: number }) {\n const focusedLine = useCorrelationMapStore((state) => state.focusedLine);\n\n // Setup focused line\n useMapStyleOperator(\n (map) => {\n if (focusedLine == null) {\n return;\n }\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features: [\n {\n type: \"Feature\",\n geometry: focusedLine,\n properties: { id: \"focusedLine\" },\n },\n ],\n };\n\n setGeoJSON(map, \"crossSectionLine\", data);\n setGeoJSON(map, \"crossSectionEndpoints\", {\n type: \"FeatureCollection\",\n features: focusedLine.coordinates.map((coord) => ({\n type: \"Feature\",\n geometry: { type: \"Point\", coordinates: coord },\n properties: {},\n })),\n });\n },\n [focusedLine],\n );\n\n const bounds = useMemo(() => {\n if (focusedLine == null || focusedLine?.coordinates.length < 2) {\n return null;\n }\n let bounds = new LngLatBounds();\n for (let coord of focusedLine.coordinates) {\n bounds.extend(coord);\n }\n return bounds;\n }, [focusedLine]);\n\n useMapEaseTo({ bounds, padding, trackResize: true });\n\n return null;\n}\n"],"names":["useMemo","buildColumnsStyle","InsetMap","useCorrelationMapStore","state","useMapClickHandler","useMapStyleOperator","setGeoJSON","buildGeoJSONSource","buildCrossSectionLayers","bounds","LngLatBounds","useMapEaseTo"],"mappings":"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"}
1
+ {"version":3,"file":"core.cjs","sources":["../../../src/maps/column-correlation/core.ts"],"sourcesContent":["import {\n useMapClickHandler,\n useMapEaseTo,\n useMapStyleOperator,\n} from \"@macrostrat/mapbox-react\";\nimport { LngLatBounds, Style } from \"mapbox-gl\";\nimport h from \"@macrostrat/hyper\";\nimport { Feature, FeatureCollection } from \"geojson\";\nimport { ReactNode, useMemo } from \"react\";\nimport { setGeoJSON, buildGeoJSONSource } from \"@macrostrat/mapbox-utils\";\n\nimport { useCorrelationMapStore } from \"./state\";\nimport { buildColumnsStyle, InsetMap, InsetMapProps } from \"../_shared\";\nimport { buildCrossSectionLayers } from \"@macrostrat/map-styles\";\n\nexport interface CorrelationMapProps extends InsetMapProps {\n padding?: number;\n children?: ReactNode;\n accessToken?: string;\n columnColor?: string;\n}\n\nexport function ColumnCorrelationMap(props: CorrelationMapProps) {\n const { padding = 50, children, columnColor, projectID, ...rest } = props;\n\n const overlayStyles: Partial<Style>[] = useMemo(() => {\n return [\n buildColumnsStyle(columnColor) as Style,\n selectedColumnsStyle as Style,\n lineOfSectionStyle as Style,\n ];\n }, [columnColor]);\n\n return h(\n InsetMap,\n {\n ...rest,\n boxZoom: false,\n dragRotate: false,\n overlayStyles,\n },\n [\n h(ColumnsLayer),\n h(SelectedColumnsLayer),\n h(MapClickHandler),\n h(SectionLine, { padding }),\n children,\n ],\n );\n}\n\nfunction MapClickHandler() {\n const onClickMap = useCorrelationMapStore((state) => state.onClickMap);\n\n useMapClickHandler(\n (e) => {\n onClickMap(e, { type: \"Point\", coordinates: e.lngLat.toArray() });\n },\n [onClickMap],\n );\n\n return null;\n}\n\nfunction SelectedColumnsLayer() {\n const focusedColumns = useCorrelationMapStore(\n (state) => state.focusedColumns,\n );\n\n useMapStyleOperator(\n (map) => {\n let features = focusedColumns;\n\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features,\n };\n\n const columnCentroidLine: Feature = {\n type: \"Feature\",\n geometry: {\n type: \"LineString\",\n coordinates: features.map(\n (col) => col.properties.centroid.geometry.coordinates,\n ),\n },\n properties: {},\n };\n\n setGeoJSON(map, \"selected-columns\", data);\n setGeoJSON(map, \"selected-column-centroids\", {\n type: \"FeatureCollection\",\n features: [columnCentroidLine],\n });\n },\n [focusedColumns],\n );\n return null;\n}\n\nfunction ColumnsLayer({ enabled = true }) {\n const columns = useCorrelationMapStore((state) => state.columns);\n\n useMapStyleOperator(\n (map) => {\n if (columns == null) {\n return;\n }\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features: columns,\n };\n\n console.log(\" columns\", data);\n setGeoJSON(map, \"columns\", data);\n },\n [columns, enabled],\n );\n return null;\n}\n\nconst selectedColumnsStyle: Style = {\n version: 8,\n sources: {\n \"selected-columns\": buildGeoJSONSource(),\n \"selected-column-centroids\": buildGeoJSONSource(),\n },\n layers: [\n {\n id: \"selected-columns-fill\",\n type: \"fill\",\n source: \"selected-columns\",\n paint: {\n \"fill-color\": \"rgba(255, 0, 0, 0.1)\",\n },\n },\n {\n id: \"selected-column-centroids-line\",\n type: \"line\",\n source: \"selected-column-centroids\",\n paint: {\n \"line-color\": \"rgba(255, 0, 0, 0.8)\",\n \"line-width\": 2,\n \"line-dasharray\": [2, 2],\n },\n },\n {\n id: \"selected-column-centroids-points\",\n type: \"circle\",\n source: \"selected-column-centroids\",\n paint: {\n \"circle-radius\": 4,\n \"circle-color\": \"rgba(255, 0, 0, 0.8)\",\n },\n },\n ],\n};\n\nconst lineOfSectionStyle: Style = {\n version: 8,\n sources: {\n elevationMarker: buildGeoJSONSource(),\n crossSectionLine: buildGeoJSONSource(),\n crossSectionEndpoints: buildGeoJSONSource(),\n },\n layers: buildCrossSectionLayers(),\n};\n\nfunction SectionLine({ padding }: { padding: number }) {\n const focusedLine = useCorrelationMapStore((state) => state.focusedLine);\n\n // Setup focused line\n useMapStyleOperator(\n (map) => {\n if (focusedLine == null) {\n return;\n }\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features: [\n {\n type: \"Feature\",\n geometry: focusedLine,\n properties: { id: \"focusedLine\" },\n },\n ],\n };\n\n setGeoJSON(map, \"crossSectionLine\", data);\n setGeoJSON(map, \"crossSectionEndpoints\", {\n type: \"FeatureCollection\",\n features: focusedLine.coordinates.map((coord) => ({\n type: \"Feature\",\n geometry: { type: \"Point\", coordinates: coord },\n properties: {},\n })),\n });\n },\n [focusedLine],\n );\n\n const bounds = useMemo(() => {\n if (focusedLine == null || focusedLine?.coordinates.length < 2) {\n return null;\n }\n let bounds = new LngLatBounds();\n for (let coord of focusedLine.coordinates) {\n bounds.extend(coord);\n }\n return bounds;\n }, [focusedLine]);\n\n useMapEaseTo({ bounds, padding, trackResize: true });\n\n return null;\n}\n"],"names":["useMemo","buildColumnsStyle","h","InsetMap","useCorrelationMapStore","state","useMapClickHandler","useMapStyleOperator","setGeoJSON","buildGeoJSONSource","buildCrossSectionLayers","bounds","LngLatBounds","useMapEaseTo"],"mappings":"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"}
@@ -11,6 +11,9 @@ const zustandComputed = require("zustand-computed");
11
11
  const base = require("../../data-provider/base.cjs");
12
12
  const buffer = require("@turf/buffer");
13
13
  const booleanPointInPolygon = require("@turf/boolean-point-in-polygon");
14
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
15
+ const distance__default = /* @__PURE__ */ _interopDefault(distance);
16
+ const h__default = /* @__PURE__ */ _interopDefault(h);
14
17
  const CorrelationStoreContext = React.createContext(null);
15
18
  const computed = zustandComputed.createComputed((state) => {
16
19
  return {
@@ -62,7 +65,7 @@ function ColumnCorrelationProvider({
62
65
  React.useEffect(() => {
63
66
  onSelectColumns?.(focusedColumns, _focusedLine);
64
67
  }, [focusedColumns, _focusedLine]);
65
- return h(CorrelationStoreContext.Provider, { value: store }, children);
68
+ return h__default.default(CorrelationStoreContext.Provider, { value: store }, children);
66
69
  }
67
70
  function useCorrelationMapStore(selector) {
68
71
  const storeApi = React.useContext(CorrelationStoreContext);
@@ -106,7 +109,7 @@ function orderColumnsByDistance(columns, line) {
106
109
  (point) => nearestPointOnLine.nearestPointOnLine(line, point)
107
110
  );
108
111
  const distances = projectedPoints.map(
109
- (point) => distance(point.geometry.coordinates, line.coordinates[0])
112
+ (point) => distance__default.default(point.geometry.coordinates, line.coordinates[0])
110
113
  );
111
114
  let newColumns = columns.map((col, i) => {
112
115
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"state.cjs","sources":["../../../src/maps/column-correlation/state.ts"],"sourcesContent":["import { LineString, Point } from \"geojson\";\nimport { create, StoreApi, useStore } from \"zustand\";\nimport type { ColumnGeoJSONRecord } from \"@macrostrat/api-types\";\n// Turf intersection\nimport { lineIntersect } from \"@turf/line-intersect\";\nimport distance from \"@turf/distance\";\nimport { nearestPointOnLine } from \"@turf/nearest-point-on-line\";\nimport { centroid } from \"@turf/centroid\";\nimport {\n createContext,\n useState,\n useContext,\n ReactNode,\n useEffect,\n} from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport { createComputed } from \"zustand-computed\";\nimport { useMacrostratColumns } from \"../../data-provider/base\";\nimport { buffer } from \"@turf/buffer\";\nimport { booleanPointInPolygon } from \"@turf/boolean-point-in-polygon\";\n\nexport interface CorrelationMapInput {\n columns: ColumnGeoJSONRecord[];\n focusedLine: LineString | null;\n}\n\nexport interface CorrelationMapStore extends CorrelationMapInput {\n onClickMap: (event: mapboxgl.MapMouseEvent, point: Point) => void;\n}\n\nexport interface CorrelationProviderProps extends CorrelationMapInput {\n projectID?: number;\n inProcess?: boolean;\n columns: ColumnGeoJSONRecord[] | null;\n children: ReactNode;\n onSelectColumns?: (\n columns: FocusedColumnGeoJSONRecord[],\n line: LineString | null,\n ) => void;\n}\n\nconst CorrelationStoreContext =\n createContext<StoreApi<CorrelationMapStore> | null>(null);\n\ntype ComputedStore = {\n focusedColumns: FocusedColumnGeoJSONRecord[];\n};\n\n/** A computed store that will automatically update when the state changes */\nconst computed = createComputed((state: CorrelationMapStore): ComputedStore => {\n return {\n // We compute the focused columns based on columns and focusedLine\n focusedColumns: buildCorrelationColumns(state.columns, state.focusedLine),\n };\n}) as any;\n\nexport function ColumnCorrelationProvider({\n children,\n columns,\n projectID,\n inProcess,\n focusedLine,\n onSelectColumns,\n}: CorrelationProviderProps) {\n const [store] = useState(() => {\n return create<CorrelationMapStore & ComputedStore>(\n computed((set, get): CorrelationMapStore => {\n return {\n focusedLine,\n projectID,\n columns: null,\n onClickMap(event: mapboxgl.MapMouseEvent, point: Point) {\n const state = get();\n // Check if shift key is pressed\n const shiftKeyPressed = event.originalEvent.shiftKey;\n let existingCoords = state.focusedLine?.coordinates ?? [];\n\n if (existingCoords.length >= 2 && !shiftKeyPressed) {\n // Reset the line to zero length\n existingCoords = [];\n }\n set({\n focusedLine: {\n type: \"LineString\",\n coordinates: [...existingCoords, point.coordinates],\n },\n });\n },\n };\n }),\n );\n });\n\n // Set up the store\n /** TODO: move the fetching of all columns to within the map */\n const _columns = useMacrostratColumns(projectID, inProcess);\n useEffect(() => {\n if (_columns != null) {\n store.setState({ columns: _columns });\n }\n }, [_columns]);\n\n // Kind of an awkward way to do this but we need to allow the selector to run\n const focusedColumns = useStore(store, (state) => state.focusedColumns);\n const _focusedLine = useStore(store, (state) => state.focusedLine);\n\n useEffect(() => {\n onSelectColumns?.(focusedColumns, _focusedLine);\n }, [focusedColumns, _focusedLine]);\n\n return h(CorrelationStoreContext.Provider, { value: store }, children);\n}\n\nexport function useCorrelationMapStore(\n selector: (state: CorrelationMapStore & ComputedStore) => any,\n) {\n const storeApi = useContext(CorrelationStoreContext);\n if (storeApi == null) {\n throw new Error(\"Missing CorrelationMapProvider\");\n }\n return useStore(storeApi, selector);\n}\n\nfunction buildCorrelationColumns(\n columns: ColumnGeoJSONRecord[],\n line: LineString,\n): FocusedColumnGeoJSONRecord[] {\n if (columns == null || line == null || line.coordinates.length < 2) {\n return [];\n }\n return orderColumnsByDistance(\n computeIntersectingColumns(columns, line),\n line,\n );\n}\n\nfunction computeIntersectingColumns(\n columns: ColumnGeoJSONRecord[],\n line: LineString,\n): ColumnGeoJSONRecord[] {\n if (columns == null || line == null) {\n return [];\n }\n\n /** eODP-focused process. Find buffers around line and then find columns intersecting that buffer */\n const bufferedLine = buffer(line, 1, { units: \"degrees\" });\n\n const nearbyPoints = columns.filter((col) => {\n if (col.geometry?.type != \"Point\") {\n return false;\n }\n return booleanPointInPolygon(col.geometry, bufferedLine);\n });\n\n const intersectingPolygons = columns.filter((col) => {\n const poly = col.geometry;\n\n // Some in-process datasets seem to have null geometries\n if (poly == null) return false;\n if (poly.type != \"Polygon\" && poly.type != \"MultiPolygon\") return false;\n\n const intersection = lineIntersect(line, poly);\n return intersection.features.length > 0;\n });\n\n return [...intersectingPolygons, ...nearbyPoints];\n}\n\ninterface FocusedColumnGeoJSONRecord extends ColumnGeoJSONRecord {\n properties: {\n centroid: Point;\n nearestPointOnLine: Point;\n distanceAlongLine: number;\n } & ColumnGeoJSONRecord[\"properties\"];\n}\n\nfunction orderColumnsByDistance(\n columns: ColumnGeoJSONRecord[],\n line: LineString,\n): FocusedColumnGeoJSONRecord[] {\n const centroids = columns.map((col) => centroid(col.geometry));\n const projectedPoints = centroids.map((point) =>\n nearestPointOnLine(line, point),\n );\n const distances = projectedPoints.map((point) =>\n distance(point.geometry.coordinates, line.coordinates[0]),\n );\n\n let newColumns = columns.map((col, i) => {\n return {\n ...col,\n properties: {\n ...col.properties,\n centroid: centroids[i],\n nearestPointOnLine: projectedPoints[i],\n distanceAlongLine: distances[i],\n },\n };\n });\n\n return sorted(newColumns, (d) => d.properties.distanceAlongLine);\n}\n\nfunction sorted(data, accessor: (d) => number) {\n return data.sort((a, b) => accessor(a) - accessor(b));\n}\n"],"names":["createContext","createComputed","useState","create","useMacrostratColumns","useEffect","useStore","useContext","buffer","booleanPointInPolygon","lineIntersect","centroid","nearestPointOnLine"],"mappings":"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"}
1
+ {"version":3,"file":"state.cjs","sources":["../../../src/maps/column-correlation/state.ts"],"sourcesContent":["import { LineString, Point } from \"geojson\";\nimport { create, StoreApi, useStore } from \"zustand\";\nimport type { ColumnGeoJSONRecord } from \"@macrostrat/api-types\";\n// Turf intersection\nimport { lineIntersect } from \"@turf/line-intersect\";\nimport distance from \"@turf/distance\";\nimport { nearestPointOnLine } from \"@turf/nearest-point-on-line\";\nimport { centroid } from \"@turf/centroid\";\nimport {\n createContext,\n useState,\n useContext,\n ReactNode,\n useEffect,\n} from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport { createComputed } from \"zustand-computed\";\nimport { useMacrostratColumns } from \"../../data-provider/base\";\nimport { buffer } from \"@turf/buffer\";\nimport { booleanPointInPolygon } from \"@turf/boolean-point-in-polygon\";\n\nexport interface CorrelationMapInput {\n columns: ColumnGeoJSONRecord[];\n focusedLine: LineString | null;\n}\n\nexport interface CorrelationMapStore extends CorrelationMapInput {\n onClickMap: (event: mapboxgl.MapMouseEvent, point: Point) => void;\n}\n\nexport interface CorrelationProviderProps extends CorrelationMapInput {\n projectID?: number;\n inProcess?: boolean;\n columns: ColumnGeoJSONRecord[] | null;\n children: ReactNode;\n onSelectColumns?: (\n columns: FocusedColumnGeoJSONRecord[],\n line: LineString | null,\n ) => void;\n}\n\nconst CorrelationStoreContext =\n createContext<StoreApi<CorrelationMapStore> | null>(null);\n\ntype ComputedStore = {\n focusedColumns: FocusedColumnGeoJSONRecord[];\n};\n\n/** A computed store that will automatically update when the state changes */\nconst computed = createComputed((state: CorrelationMapStore): ComputedStore => {\n return {\n // We compute the focused columns based on columns and focusedLine\n focusedColumns: buildCorrelationColumns(state.columns, state.focusedLine),\n };\n}) as any;\n\nexport function ColumnCorrelationProvider({\n children,\n columns,\n projectID,\n inProcess,\n focusedLine,\n onSelectColumns,\n}: CorrelationProviderProps) {\n const [store] = useState(() => {\n return create<CorrelationMapStore & ComputedStore>(\n computed((set, get): CorrelationMapStore => {\n return {\n focusedLine,\n projectID,\n columns: null,\n onClickMap(event: mapboxgl.MapMouseEvent, point: Point) {\n const state = get();\n // Check if shift key is pressed\n const shiftKeyPressed = event.originalEvent.shiftKey;\n let existingCoords = state.focusedLine?.coordinates ?? [];\n\n if (existingCoords.length >= 2 && !shiftKeyPressed) {\n // Reset the line to zero length\n existingCoords = [];\n }\n set({\n focusedLine: {\n type: \"LineString\",\n coordinates: [...existingCoords, point.coordinates],\n },\n });\n },\n };\n }),\n );\n });\n\n // Set up the store\n /** TODO: move the fetching of all columns to within the map */\n const _columns = useMacrostratColumns(projectID, inProcess);\n useEffect(() => {\n if (_columns != null) {\n store.setState({ columns: _columns });\n }\n }, [_columns]);\n\n // Kind of an awkward way to do this but we need to allow the selector to run\n const focusedColumns = useStore(store, (state) => state.focusedColumns);\n const _focusedLine = useStore(store, (state) => state.focusedLine);\n\n useEffect(() => {\n onSelectColumns?.(focusedColumns, _focusedLine);\n }, [focusedColumns, _focusedLine]);\n\n return h(CorrelationStoreContext.Provider, { value: store }, children);\n}\n\nexport function useCorrelationMapStore(\n selector: (state: CorrelationMapStore & ComputedStore) => any,\n) {\n const storeApi = useContext(CorrelationStoreContext);\n if (storeApi == null) {\n throw new Error(\"Missing CorrelationMapProvider\");\n }\n return useStore(storeApi, selector);\n}\n\nfunction buildCorrelationColumns(\n columns: ColumnGeoJSONRecord[],\n line: LineString,\n): FocusedColumnGeoJSONRecord[] {\n if (columns == null || line == null || line.coordinates.length < 2) {\n return [];\n }\n return orderColumnsByDistance(\n computeIntersectingColumns(columns, line),\n line,\n );\n}\n\nfunction computeIntersectingColumns(\n columns: ColumnGeoJSONRecord[],\n line: LineString,\n): ColumnGeoJSONRecord[] {\n if (columns == null || line == null) {\n return [];\n }\n\n /** eODP-focused process. Find buffers around line and then find columns intersecting that buffer */\n const bufferedLine = buffer(line, 1, { units: \"degrees\" });\n\n const nearbyPoints = columns.filter((col) => {\n if (col.geometry?.type != \"Point\") {\n return false;\n }\n return booleanPointInPolygon(col.geometry, bufferedLine);\n });\n\n const intersectingPolygons = columns.filter((col) => {\n const poly = col.geometry;\n\n // Some in-process datasets seem to have null geometries\n if (poly == null) return false;\n if (poly.type != \"Polygon\" && poly.type != \"MultiPolygon\") return false;\n\n const intersection = lineIntersect(line, poly);\n return intersection.features.length > 0;\n });\n\n return [...intersectingPolygons, ...nearbyPoints];\n}\n\ninterface FocusedColumnGeoJSONRecord extends ColumnGeoJSONRecord {\n properties: {\n centroid: Point;\n nearestPointOnLine: Point;\n distanceAlongLine: number;\n } & ColumnGeoJSONRecord[\"properties\"];\n}\n\nfunction orderColumnsByDistance(\n columns: ColumnGeoJSONRecord[],\n line: LineString,\n): FocusedColumnGeoJSONRecord[] {\n const centroids = columns.map((col) => centroid(col.geometry));\n const projectedPoints = centroids.map((point) =>\n nearestPointOnLine(line, point),\n );\n const distances = projectedPoints.map((point) =>\n distance(point.geometry.coordinates, line.coordinates[0]),\n );\n\n let newColumns = columns.map((col, i) => {\n return {\n ...col,\n properties: {\n ...col.properties,\n centroid: centroids[i],\n nearestPointOnLine: projectedPoints[i],\n distanceAlongLine: distances[i],\n },\n };\n });\n\n return sorted(newColumns, (d) => d.properties.distanceAlongLine);\n}\n\nfunction sorted(data, accessor: (d) => number) {\n return data.sort((a, b) => accessor(a) - accessor(b));\n}\n"],"names":["createContext","createComputed","useState","create","useMacrostratColumns","useEffect","useStore","h","useContext","buffer","booleanPointInPolygon","lineIntersect","centroid","nearestPointOnLine","distance"],"mappings":";;;;;;;;;;;;;;;;AAyCA,MAAM,0BACJA,MAAAA,cAAoD,IAAI;AAO1D,MAAM,WAAWC,gBAAAA,eAAe,CAAC,UAA8C;AAC7E,SAAO;AAAA;AAAA,IAEL,gBAAgB,wBAAwB,MAAM,SAAS,MAAM,WAAW;AAAA,EAAA;AAE5E,CAAC;AAEM,SAAS,0BAA0B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6B;AAC3B,QAAM,CAAC,KAAK,IAAIC,MAAAA,SAAS,MAAM;AAC7B,WAAOC,QAAAA;AAAAA,MACL,SAAS,CAAC,KAAK,QAA6B;AAC1C,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA,SAAS;AAAA,UACT,WAAW,OAA+B,OAAc;AACtD,kBAAM,QAAQ,IAAA;AAEd,kBAAM,kBAAkB,MAAM,cAAc;AAC5C,gBAAI,iBAAiB,MAAM,aAAa,eAAe,CAAA;AAEvD,gBAAI,eAAe,UAAU,KAAK,CAAC,iBAAiB;AAElD,+BAAiB,CAAA;AAAA,YACnB;AACA,gBAAI;AAAA,cACF,aAAa;AAAA,gBACX,MAAM;AAAA,gBACN,aAAa,CAAC,GAAG,gBAAgB,MAAM,WAAW;AAAA,cAAA;AAAA,YACpD,CACD;AAAA,UACH;AAAA,QAAA;AAAA,MAEJ,CAAC;AAAA,IAAA;AAAA,EAEL,CAAC;AAID,QAAM,WAAWC,KAAAA,qBAAqB,WAAW,SAAS;AAC1DC,QAAAA,UAAU,MAAM;AACd,QAAI,YAAY,MAAM;AACpB,YAAM,SAAS,EAAE,SAAS,SAAA,CAAU;AAAA,IACtC;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAGb,QAAM,iBAAiBC,QAAAA,SAAS,OAAO,CAAC,UAAU,MAAM,cAAc;AACtE,QAAM,eAAeA,QAAAA,SAAS,OAAO,CAAC,UAAU,MAAM,WAAW;AAEjED,QAAAA,UAAU,MAAM;AACd,sBAAkB,gBAAgB,YAAY;AAAA,EAChD,GAAG,CAAC,gBAAgB,YAAY,CAAC;AAEjC,SAAOE,WAAAA,QAAE,wBAAwB,UAAU,EAAE,OAAO,MAAA,GAAS,QAAQ;AACvE;AAEO,SAAS,uBACd,UACA;AACA,QAAM,WAAWC,MAAAA,WAAW,uBAAuB;AACnD,MAAI,YAAY,MAAM;AACpB,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AACA,SAAOF,QAAAA,SAAS,UAAU,QAAQ;AACpC;AAEA,SAAS,wBACP,SACA,MAC8B;AAC9B,MAAI,WAAW,QAAQ,QAAQ,QAAQ,KAAK,YAAY,SAAS,GAAG;AAClE,WAAO,CAAA;AAAA,EACT;AACA,SAAO;AAAA,IACL,2BAA2B,SAAS,IAAI;AAAA,IACxC;AAAA,EAAA;AAEJ;AAEA,SAAS,2BACP,SACA,MACuB;AACvB,MAAI,WAAW,QAAQ,QAAQ,MAAM;AACnC,WAAO,CAAA;AAAA,EACT;AAGA,QAAM,eAAeG,OAAAA,OAAO,MAAM,GAAG,EAAE,OAAO,WAAW;AAEzD,QAAM,eAAe,QAAQ,OAAO,CAAC,QAAQ;AAC3C,QAAI,IAAI,UAAU,QAAQ,SAAS;AACjC,aAAO;AAAA,IACT;AACA,WAAOC,4CAAsB,IAAI,UAAU,YAAY;AAAA,EACzD,CAAC;AAED,QAAM,uBAAuB,QAAQ,OAAO,CAAC,QAAQ;AACnD,UAAM,OAAO,IAAI;AAGjB,QAAI,QAAQ,KAAM,QAAO;AACzB,QAAI,KAAK,QAAQ,aAAa,KAAK,QAAQ,eAAgB,QAAO;AAElE,UAAM,eAAeC,cAAAA,cAAc,MAAM,IAAI;AAC7C,WAAO,aAAa,SAAS,SAAS;AAAA,EACxC,CAAC;AAED,SAAO,CAAC,GAAG,sBAAsB,GAAG,YAAY;AAClD;AAUA,SAAS,uBACP,SACA,MAC8B;AAC9B,QAAM,YAAY,QAAQ,IAAI,CAAC,QAAQC,kBAAS,IAAI,QAAQ,CAAC;AAC7D,QAAM,kBAAkB,UAAU;AAAA,IAAI,CAAC,UACrCC,sCAAmB,MAAM,KAAK;AAAA,EAAA;AAEhC,QAAM,YAAY,gBAAgB;AAAA,IAAI,CAAC,UACrCC,kBAAAA,QAAS,MAAM,SAAS,aAAa,KAAK,YAAY,CAAC,CAAC;AAAA,EAAA;AAG1D,MAAI,aAAa,QAAQ,IAAI,CAAC,KAAK,MAAM;AACvC,WAAO;AAAA,MACL,GAAG;AAAA,MACH,YAAY;AAAA,QACV,GAAG,IAAI;AAAA,QACP,UAAU,UAAU,CAAC;AAAA,QACrB,oBAAoB,gBAAgB,CAAC;AAAA,QACrC,mBAAmB,UAAU,CAAC;AAAA,MAAA;AAAA,IAChC;AAAA,EAEJ,CAAC;AAED,SAAO,OAAO,YAAY,CAAC,MAAM,EAAE,WAAW,iBAAiB;AACjE;AAEA,SAAS,OAAO,MAAM,UAAyB;AAC7C,SAAO,KAAK,KAAK,CAAC,GAAG,MAAM,SAAS,CAAC,IAAI,SAAS,CAAC,CAAC;AACtD;;;"}
@@ -9,6 +9,8 @@ const d3Geo = require("d3-geo");
9
9
  const keyboardNavigation = require("./keyboard-navigation.cjs");
10
10
  const styles = require("../../_shared/styles.cjs");
11
11
  const insetMap = require("../../_shared/inset-map.cjs");
12
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
13
+ const h__default = /* @__PURE__ */ _interopDefault(h);
12
14
  function ColumnNavigationMap(props) {
13
15
  const {
14
16
  columns,
@@ -22,7 +24,7 @@ function ColumnNavigationMap(props) {
22
24
  inProcess,
23
25
  ...rest
24
26
  } = props;
25
- return h(
27
+ return h__default.default(
26
28
  state.ColumnNavigationProvider,
27
29
  {
28
30
  columns,
@@ -34,7 +36,7 @@ function ColumnNavigationMap(props) {
34
36
  projectID,
35
37
  inProcess
36
38
  },
37
- h(_ColumnNavigationMap, props)
39
+ h__default.default(_ColumnNavigationMap, props)
38
40
  );
39
41
  }
40
42
  function _ColumnNavigationMap(props) {
@@ -54,7 +56,7 @@ function _ColumnNavigationMap(props) {
54
56
  }
55
57
  return styles$1;
56
58
  }, [columnColor, showTriangulation, triangulationColor]);
57
- return h(
59
+ return h__default.default(
58
60
  insetMap.InsetMap,
59
61
  {
60
62
  ...rest,
@@ -63,9 +65,9 @@ function _ColumnNavigationMap(props) {
63
65
  overlayStyles
64
66
  },
65
67
  [
66
- h(ColumnsLayer),
68
+ h__default.default(ColumnsLayer),
67
69
  children,
68
- h.if(keyboardNavigation$1)(keyboardNavigation.ColumnKeyboardNavigation, { showTriangulation })
70
+ h__default.default.if(keyboardNavigation$1)(keyboardNavigation.ColumnKeyboardNavigation, { showTriangulation })
69
71
  ]
70
72
  );
71
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../src/maps/column-navigation/mapbox/index.ts"],"sourcesContent":["import { useMapStyleOperator } from \"@macrostrat/mapbox-react\";\nimport h from \"@macrostrat/hyper\";\nimport { FeatureCollection } from \"geojson\";\nimport { ReactNode, useMemo, useRef } from \"react\";\nimport { buildColumnsStyle, InsetMapProps } from \"../../_shared\";\nimport { setGeoJSON } from \"@macrostrat/mapbox-utils\";\n\nimport {\n ColumnNavigationProvider,\n NavigationProviderProps,\n useColumnNavigationStore,\n} from \"./state\";\nimport { InsetMap } from \"../../_shared\";\nimport { geoCentroid } from \"d3-geo\";\nimport {\n ColumnKeyboardNavigation,\n buildKeyboardNavigationStyle,\n} from \"./keyboard-navigation\";\n\nexport interface ColumnNavigationMapProps extends InsetMapProps {\n padding?: number;\n children?: ReactNode;\n accessToken?: string;\n selectedColumn?: number;\n hoveredColumn?: number;\n onSelectColumn?: (colID: number | null) => void;\n onHoverColumn?: (colID: number | null) => void;\n showTriangulation?: boolean;\n columnColor?: string;\n triangulationColor?: string;\n keyboardNavigation?: boolean;\n}\n\nexport function ColumnNavigationMap(\n props: ColumnNavigationMapProps & NavigationProviderProps,\n) {\n const {\n columns,\n columnIDs,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n children,\n inProcess,\n ...rest\n } = props;\n\n return h(\n ColumnNavigationProvider,\n {\n columns,\n columnIDs,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n inProcess,\n },\n h(_ColumnNavigationMap, props),\n );\n}\n\nfunction _ColumnNavigationMap(props: ColumnNavigationMapProps) {\n const {\n padding = 50,\n children,\n columnColor,\n showTriangulation,\n triangulationColor,\n keyboardNavigation = true,\n ...rest\n } = props;\n\n const overlayStyles = useMemo(() => {\n let styles: any[] = [buildColumnsStyle(columnColor)];\n if (showTriangulation) {\n styles.push(buildKeyboardNavigationStyle(triangulationColor));\n }\n return styles;\n }, [columnColor, showTriangulation, triangulationColor]);\n\n return h(\n InsetMap,\n {\n ...rest,\n boxZoom: false,\n dragRotate: false,\n overlayStyles,\n },\n [\n h(ColumnsLayer),\n children,\n h.if(keyboardNavigation)(ColumnKeyboardNavigation, { showTriangulation }),\n ],\n );\n}\n\nfunction ColumnsLayer({ enabled = true }) {\n const columns = useColumnNavigationStore((state) => state.columns);\n const selectedColumn = useColumnNavigationStore(\n (state) => state.selectedColumn,\n );\n const hoveredColumn = useColumnNavigationStore(\n (state) => state.hoveredColumn,\n );\n const selectColumn = useColumnNavigationStore((state) => state.selectColumn);\n const setHoveredColumn = useColumnNavigationStore(\n (state) => state.setHoveredColumn,\n );\n\n useMapStyleOperator(\n (map) => {\n if (columns == null) {\n return;\n }\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features: columns,\n };\n\n setGeoJSON(map, \"columns\", data);\n\n const mouseMove = (event) => {\n if (event.features.length == 0) return;\n const hoveredFeature = event.features[0];\n setHoveredColumn(hoveredFeature.id);\n map.getCanvas().style.cursor = \"pointer\";\n };\n const mouseLeave = () => {\n setHoveredColumn(null);\n map.getCanvas().style.cursor = \"\";\n };\n\n const clickHandler = (event) => {\n if (event.features.length == 0) return;\n const selectedColumn = event.features[0];\n const id = selectedColumn.id;\n selectColumn(id);\n };\n\n // Setup hover styles on map\n const layers = [\"columns-points\", \"columns-fill\"];\n map.on(\"mousemove\", layers, mouseMove);\n map.on(\"mouseleave\", layers, mouseLeave);\n map.on(\"click\", layers, clickHandler);\n\n return () => {\n map.off(\"mouseenter\", layers, mouseMove);\n map.off(\"mouseleave\", layers, mouseLeave);\n map.off(\"click\", layers, clickHandler);\n };\n },\n [columns, enabled],\n );\n\n const hoveredColumnRef = useRef(null);\n useMapStyleOperator(\n (map) => {\n const prevHoveredColumn = hoveredColumnRef.current;\n if (hoveredColumn == prevHoveredColumn) return;\n if (prevHoveredColumn != null) {\n // Deselect previous column\n map.setFeatureState(\n { source: \"columns\", id: prevHoveredColumn },\n { hover: false },\n );\n }\n hoveredColumnRef.current = hoveredColumn;\n // Select the current column\n map.setFeatureState(\n { source: \"columns\", id: hoveredColumn },\n { hover: true },\n );\n },\n [hoveredColumn, columns],\n );\n\n /** Set feature state for selected columns */\n const selectedColumnRef = useRef(null);\n const initialRenderRef = useRef(true);\n useMapStyleOperator(\n (map) => {\n if (columns == null) return;\n const prevSelectedColumn = selectedColumnRef.current;\n if (selectedColumn == prevSelectedColumn) return;\n if (prevSelectedColumn != null) {\n // Deselect previous column\n map.setFeatureState(\n { source: \"columns\", id: prevSelectedColumn },\n { selected: false },\n );\n }\n\n selectedColumnRef.current = selectedColumn;\n\n // Select the current column\n map.setFeatureState(\n { source: \"columns\", id: selectedColumn },\n { selected: true },\n );\n\n // Center the selected column\n const columnGeometry = columns.find(\n (d) => d.id == selectedColumn,\n )?.geometry;\n if (columnGeometry == null) return;\n const center = geoCentroid(columnGeometry);\n\n const isInitialRender = initialRenderRef.current;\n\n map.easeTo({ center }, { duration: isInitialRender ? 0 : 500 });\n if (isInitialRender) {\n initialRenderRef.current = false;\n }\n },\n [selectedColumn, columns],\n );\n\n return null;\n}\n"],"names":["ColumnNavigationProvider","keyboardNavigation","useMemo","styles","buildColumnsStyle","buildKeyboardNavigationStyle","InsetMap","ColumnKeyboardNavigation","useColumnNavigationStore","state","useMapStyleOperator","setGeoJSON","selectedColumn","useRef","geoCentroid"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/maps/column-navigation/mapbox/index.ts"],"sourcesContent":["import { useMapStyleOperator } from \"@macrostrat/mapbox-react\";\nimport h from \"@macrostrat/hyper\";\nimport { FeatureCollection } from \"geojson\";\nimport { ReactNode, useMemo, useRef } from \"react\";\nimport { buildColumnsStyle, InsetMapProps } from \"../../_shared\";\nimport { setGeoJSON } from \"@macrostrat/mapbox-utils\";\n\nimport {\n ColumnNavigationProvider,\n NavigationProviderProps,\n useColumnNavigationStore,\n} from \"./state\";\nimport { InsetMap } from \"../../_shared\";\nimport { geoCentroid } from \"d3-geo\";\nimport {\n ColumnKeyboardNavigation,\n buildKeyboardNavigationStyle,\n} from \"./keyboard-navigation\";\n\nexport interface ColumnNavigationMapProps extends InsetMapProps {\n padding?: number;\n children?: ReactNode;\n accessToken?: string;\n selectedColumn?: number;\n hoveredColumn?: number;\n onSelectColumn?: (colID: number | null) => void;\n onHoverColumn?: (colID: number | null) => void;\n showTriangulation?: boolean;\n columnColor?: string;\n triangulationColor?: string;\n keyboardNavigation?: boolean;\n}\n\nexport function ColumnNavigationMap(\n props: ColumnNavigationMapProps & NavigationProviderProps,\n) {\n const {\n columns,\n columnIDs,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n children,\n inProcess,\n ...rest\n } = props;\n\n return h(\n ColumnNavigationProvider,\n {\n columns,\n columnIDs,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n inProcess,\n },\n h(_ColumnNavigationMap, props),\n );\n}\n\nfunction _ColumnNavigationMap(props: ColumnNavigationMapProps) {\n const {\n padding = 50,\n children,\n columnColor,\n showTriangulation,\n triangulationColor,\n keyboardNavigation = true,\n ...rest\n } = props;\n\n const overlayStyles = useMemo(() => {\n let styles: any[] = [buildColumnsStyle(columnColor)];\n if (showTriangulation) {\n styles.push(buildKeyboardNavigationStyle(triangulationColor));\n }\n return styles;\n }, [columnColor, showTriangulation, triangulationColor]);\n\n return h(\n InsetMap,\n {\n ...rest,\n boxZoom: false,\n dragRotate: false,\n overlayStyles,\n },\n [\n h(ColumnsLayer),\n children,\n h.if(keyboardNavigation)(ColumnKeyboardNavigation, { showTriangulation }),\n ],\n );\n}\n\nfunction ColumnsLayer({ enabled = true }) {\n const columns = useColumnNavigationStore((state) => state.columns);\n const selectedColumn = useColumnNavigationStore(\n (state) => state.selectedColumn,\n );\n const hoveredColumn = useColumnNavigationStore(\n (state) => state.hoveredColumn,\n );\n const selectColumn = useColumnNavigationStore((state) => state.selectColumn);\n const setHoveredColumn = useColumnNavigationStore(\n (state) => state.setHoveredColumn,\n );\n\n useMapStyleOperator(\n (map) => {\n if (columns == null) {\n return;\n }\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features: columns,\n };\n\n setGeoJSON(map, \"columns\", data);\n\n const mouseMove = (event) => {\n if (event.features.length == 0) return;\n const hoveredFeature = event.features[0];\n setHoveredColumn(hoveredFeature.id);\n map.getCanvas().style.cursor = \"pointer\";\n };\n const mouseLeave = () => {\n setHoveredColumn(null);\n map.getCanvas().style.cursor = \"\";\n };\n\n const clickHandler = (event) => {\n if (event.features.length == 0) return;\n const selectedColumn = event.features[0];\n const id = selectedColumn.id;\n selectColumn(id);\n };\n\n // Setup hover styles on map\n const layers = [\"columns-points\", \"columns-fill\"];\n map.on(\"mousemove\", layers, mouseMove);\n map.on(\"mouseleave\", layers, mouseLeave);\n map.on(\"click\", layers, clickHandler);\n\n return () => {\n map.off(\"mouseenter\", layers, mouseMove);\n map.off(\"mouseleave\", layers, mouseLeave);\n map.off(\"click\", layers, clickHandler);\n };\n },\n [columns, enabled],\n );\n\n const hoveredColumnRef = useRef(null);\n useMapStyleOperator(\n (map) => {\n const prevHoveredColumn = hoveredColumnRef.current;\n if (hoveredColumn == prevHoveredColumn) return;\n if (prevHoveredColumn != null) {\n // Deselect previous column\n map.setFeatureState(\n { source: \"columns\", id: prevHoveredColumn },\n { hover: false },\n );\n }\n hoveredColumnRef.current = hoveredColumn;\n // Select the current column\n map.setFeatureState(\n { source: \"columns\", id: hoveredColumn },\n { hover: true },\n );\n },\n [hoveredColumn, columns],\n );\n\n /** Set feature state for selected columns */\n const selectedColumnRef = useRef(null);\n const initialRenderRef = useRef(true);\n useMapStyleOperator(\n (map) => {\n if (columns == null) return;\n const prevSelectedColumn = selectedColumnRef.current;\n if (selectedColumn == prevSelectedColumn) return;\n if (prevSelectedColumn != null) {\n // Deselect previous column\n map.setFeatureState(\n { source: \"columns\", id: prevSelectedColumn },\n { selected: false },\n );\n }\n\n selectedColumnRef.current = selectedColumn;\n\n // Select the current column\n map.setFeatureState(\n { source: \"columns\", id: selectedColumn },\n { selected: true },\n );\n\n // Center the selected column\n const columnGeometry = columns.find(\n (d) => d.id == selectedColumn,\n )?.geometry;\n if (columnGeometry == null) return;\n const center = geoCentroid(columnGeometry);\n\n const isInitialRender = initialRenderRef.current;\n\n map.easeTo({ center }, { duration: isInitialRender ? 0 : 500 });\n if (isInitialRender) {\n initialRenderRef.current = false;\n }\n },\n [selectedColumn, columns],\n );\n\n return null;\n}\n"],"names":["h","ColumnNavigationProvider","keyboardNavigation","useMemo","styles","buildColumnsStyle","buildKeyboardNavigationStyle","InsetMap","ColumnKeyboardNavigation","useColumnNavigationStore","state","useMapStyleOperator","setGeoJSON","selectedColumn","useRef","geoCentroid"],"mappings":";;;;;;;;;;;;;AAiCO,SAAS,oBACd,OACA;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,IACD;AAEJ,SAAOA,WAAAA;AAAAA,IACLC,MAAAA;AAAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEFD,WAAAA,QAAE,sBAAsB,KAAK;AAAA,EAAA;AAEjC;AAEA,SAAS,qBAAqB,OAAiC;AAC7D,QAAM;AAAA,IACJ,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAAA,oBACAE,uBAAqB;AAAA,IACrB,GAAG;AAAA,EAAA,IACD;AAEJ,QAAM,gBAAgBC,MAAAA,QAAQ,MAAM;AAClC,QAAIC,WAAgB,CAACC,yBAAkB,WAAW,CAAC;AACnD,QAAI,mBAAmB;AACrBD,eAAO,KAAKE,gDAA6B,kBAAkB,CAAC;AAAA,IAC9D;AACA,WAAOF;AAAAA,EACT,GAAG,CAAC,aAAa,mBAAmB,kBAAkB,CAAC;AAEvD,SAAOJ,WAAAA;AAAAA,IACLO,SAAAA;AAAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,SAAS;AAAA,MACT,YAAY;AAAA,MACZ;AAAA,IAAA;AAAA,IAEF;AAAA,MACEP,WAAAA,QAAE,YAAY;AAAA,MACd;AAAA,MACAA,WAAAA,QAAE,GAAGE,oBAAkB,EAAEM,mBAAAA,0BAA0B,EAAE,mBAAmB;AAAA,IAAA;AAAA,EAC1E;AAEJ;AAEA,SAAS,aAAa,EAAE,UAAU,QAAQ;AACxC,QAAM,UAAUC,MAAAA,yBAAyB,CAACC,WAAUA,OAAM,OAAO;AACjE,QAAM,iBAAiBD,MAAAA;AAAAA,IACrB,CAACC,WAAUA,OAAM;AAAA,EAAA;AAEnB,QAAM,gBAAgBD,MAAAA;AAAAA,IACpB,CAACC,WAAUA,OAAM;AAAA,EAAA;AAEnB,QAAM,eAAeD,MAAAA,yBAAyB,CAACC,WAAUA,OAAM,YAAY;AAC3E,QAAM,mBAAmBD,MAAAA;AAAAA,IACvB,CAACC,WAAUA,OAAM;AAAA,EAAA;AAGnBC,cAAAA;AAAAA,IACE,CAAC,QAAQ;AACP,UAAI,WAAW,MAAM;AACnB;AAAA,MACF;AACA,YAAM,OAA0B;AAAA,QAC9B,MAAM;AAAA,QACN,UAAU;AAAA,MAAA;AAGZC,6BAAW,KAAK,WAAW,IAAI;AAE/B,YAAM,YAAY,CAAC,UAAU;AAC3B,YAAI,MAAM,SAAS,UAAU,EAAG;AAChC,cAAM,iBAAiB,MAAM,SAAS,CAAC;AACvC,yBAAiB,eAAe,EAAE;AAClC,YAAI,UAAA,EAAY,MAAM,SAAS;AAAA,MACjC;AACA,YAAM,aAAa,MAAM;AACvB,yBAAiB,IAAI;AACrB,YAAI,UAAA,EAAY,MAAM,SAAS;AAAA,MACjC;AAEA,YAAM,eAAe,CAAC,UAAU;AAC9B,YAAI,MAAM,SAAS,UAAU,EAAG;AAChC,cAAMC,kBAAiB,MAAM,SAAS,CAAC;AACvC,cAAM,KAAKA,gBAAe;AAC1B,qBAAa,EAAE;AAAA,MACjB;AAGA,YAAM,SAAS,CAAC,kBAAkB,cAAc;AAChD,UAAI,GAAG,aAAa,QAAQ,SAAS;AACrC,UAAI,GAAG,cAAc,QAAQ,UAAU;AACvC,UAAI,GAAG,SAAS,QAAQ,YAAY;AAEpC,aAAO,MAAM;AACX,YAAI,IAAI,cAAc,QAAQ,SAAS;AACvC,YAAI,IAAI,cAAc,QAAQ,UAAU;AACxC,YAAI,IAAI,SAAS,QAAQ,YAAY;AAAA,MACvC;AAAA,IACF;AAAA,IACA,CAAC,SAAS,OAAO;AAAA,EAAA;AAGnB,QAAM,mBAAmBC,MAAAA,OAAO,IAAI;AACpCH,cAAAA;AAAAA,IACE,CAAC,QAAQ;AACP,YAAM,oBAAoB,iBAAiB;AAC3C,UAAI,iBAAiB,kBAAmB;AACxC,UAAI,qBAAqB,MAAM;AAE7B,YAAI;AAAA,UACF,EAAE,QAAQ,WAAW,IAAI,kBAAA;AAAA,UACzB,EAAE,OAAO,MAAA;AAAA,QAAM;AAAA,MAEnB;AACA,uBAAiB,UAAU;AAE3B,UAAI;AAAA,QACF,EAAE,QAAQ,WAAW,IAAI,cAAA;AAAA,QACzB,EAAE,OAAO,KAAA;AAAA,MAAK;AAAA,IAElB;AAAA,IACA,CAAC,eAAe,OAAO;AAAA,EAAA;AAIzB,QAAM,oBAAoBG,MAAAA,OAAO,IAAI;AACrC,QAAM,mBAAmBA,MAAAA,OAAO,IAAI;AACpCH,cAAAA;AAAAA,IACE,CAAC,QAAQ;AACP,UAAI,WAAW,KAAM;AACrB,YAAM,qBAAqB,kBAAkB;AAC7C,UAAI,kBAAkB,mBAAoB;AAC1C,UAAI,sBAAsB,MAAM;AAE9B,YAAI;AAAA,UACF,EAAE,QAAQ,WAAW,IAAI,mBAAA;AAAA,UACzB,EAAE,UAAU,MAAA;AAAA,QAAM;AAAA,MAEtB;AAEA,wBAAkB,UAAU;AAG5B,UAAI;AAAA,QACF,EAAE,QAAQ,WAAW,IAAI,eAAA;AAAA,QACzB,EAAE,UAAU,KAAA;AAAA,MAAK;AAInB,YAAM,iBAAiB,QAAQ;AAAA,QAC7B,CAAC,MAAM,EAAE,MAAM;AAAA,MAAA,GACd;AACH,UAAI,kBAAkB,KAAM;AAC5B,YAAM,SAASI,MAAAA,YAAY,cAAc;AAEzC,YAAM,kBAAkB,iBAAiB;AAEzC,UAAI,OAAO,EAAE,OAAA,GAAU,EAAE,UAAU,kBAAkB,IAAI,KAAK;AAC9D,UAAI,iBAAiB;AACnB,yBAAiB,UAAU;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,OAAO;AAAA,EAAA;AAG1B,SAAO;AACT;;"}
@@ -4,6 +4,8 @@ const zustand = require("zustand");
4
4
  const React = require("react");
5
5
  const h = require("@macrostrat/hyper");
6
6
  const base = require("../../../data-provider/base.cjs");
7
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
8
+ const h__default = /* @__PURE__ */ _interopDefault(h);
7
9
  const NavigationStoreContext = React.createContext(
8
10
  null
9
11
  );
@@ -57,7 +59,7 @@ function ColumnNavigationProvider({
57
59
  }
58
60
  selectColumn(selectedColumn);
59
61
  }, [selectedColumn]);
60
- return h(NavigationStoreContext.Provider, { value: store }, children);
62
+ return h__default.default(NavigationStoreContext.Provider, { value: store }, children);
61
63
  }
62
64
  function useColumnNavigationStore(selector) {
63
65
  const storeApi = React.useContext(NavigationStoreContext);
@@ -1 +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;;;"}
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","h","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,SAAOC,WAAAA,QAAE,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;;;"}
@@ -6,6 +6,8 @@ const svgMapComponents = require("@macrostrat/svg-map-components");
6
6
  const d3Geo = require("d3-geo");
7
7
  const uiComponents = require("@macrostrat/ui-components");
8
8
  const layers = require("./layers.cjs");
9
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
10
+ const h__default = /* @__PURE__ */ _interopDefault(h);
9
11
  function ResizableMapFrame(props) {
10
12
  const { center, children, style, margin, className, allowZoom, ...rest } = props;
11
13
  let { scale } = props;
@@ -22,8 +24,8 @@ function ResizableMapFrame(props) {
22
24
  2 * Math.max(width, height)
23
25
  ];
24
26
  }
25
- return h("div.map-area", { ref, style, className }, [
26
- h(
27
+ return h__default.default("div.map-area", { ref, style, className }, [
28
+ h__default.default(
27
29
  svgMapComponents.Globe,
28
30
  {
29
31
  width,
@@ -37,7 +39,7 @@ function ResizableMapFrame(props) {
37
39
  ...rest,
38
40
  scale
39
41
  },
40
- [h(svgMapComponents.LandLayer), children]
42
+ [h__default.default(svgMapComponents.LandLayer), children]
41
43
  )
42
44
  ]);
43
45
  }
@@ -59,25 +61,25 @@ function ColumnNavigationSVGMap(props) {
59
61
  if (currentColumn != null) {
60
62
  _center = d3Geo.geoCentroid(currentColumn);
61
63
  }
62
- return h(
64
+ return h__default.default(
63
65
  ResizableMapFrame,
64
66
  { center: _center, style, margin, scale, className },
65
67
  [
66
68
  children,
67
- h(layers.Columns, {
69
+ h__default.default(layers.Columns, {
68
70
  onChange: setCurrentColumn,
69
71
  col_id: currentColumn?.properties.col_id,
70
72
  showDebugLayers,
71
73
  ...rest
72
74
  }),
73
- h.if(showInProcessColumns)(layers.Columns, {
75
+ h__default.default.if(showInProcessColumns)(layers.Columns, {
74
76
  onChange: setCurrentColumn,
75
77
  col_id: currentColumn?.properties.col_id,
76
78
  status_code: "in process",
77
79
  color: "rgba(200,150,150, 0.5)",
78
80
  ...rest
79
81
  }),
80
- h.if(currentColumn != null)(layers.CurrentColumn, { feature: currentColumn })
82
+ h__default.default.if(currentColumn != null)(layers.CurrentColumn, { feature: currentColumn })
81
83
  ]
82
84
  );
83
85
  }
@@ -1 +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;;;;;;;;;"}
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","h","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,SAAOC,WAAAA,QAAE,gBAAgB,EAAE,KAAK,OAAO,aAAa;AAAA,IAClDA,WAAAA;AAAAA,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,CAACD,WAAAA,QAAEE,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,SAAOH,WAAAA;AAAAA,IACL;AAAA,IACA,EAAE,QAAQ,SAAS,OAAO,QAAQ,OAAO,UAAA;AAAA,IACzC;AAAA,MACE;AAAA,MACAA,WAAAA,QAAEI,OAAAA,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ,eAAe,WAAW;AAAA,QAClC;AAAA,QACA,GAAG;AAAA,MAAA,CACJ;AAAA,MACDJ,WAAAA,QAAE,GAAG,oBAAoB,EAAEI,gBAAS;AAAA,QAClC,UAAU;AAAA,QACV,QAAQ,eAAe,WAAW;AAAA,QAClC,aAAa;AAAA,QACb,OAAO;AAAA,QACP,GAAG;AAAA,MAAA,CACJ;AAAA,MACDJ,WAAAA,QAAE,GAAG,iBAAiB,IAAI,EAAEK,sBAAe,EAAE,SAAS,cAAA,CAAe;AAAA,IAAA;AAAA,EACvE;AAEJ;;;;;;;;;"}
@@ -7,6 +7,9 @@ const chroma = require("chroma-js");
7
7
  const React = require("react");
8
8
  const keyboardNavigation = require("../utils/keyboard-navigation.cjs");
9
9
  const fetch = require("../../../data-provider/fetch.cjs");
10
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
11
+ const h__default = /* @__PURE__ */ _interopDefault(h);
12
+ const chroma__default = /* @__PURE__ */ _interopDefault(chroma);
10
13
  const defaultStyle = {
11
14
  fill: "rgb(239, 180, 249)",
12
15
  stroke: "magenta"
@@ -19,7 +22,7 @@ function MeasurementsLayer(props) {
19
22
  response: "light"
20
23
  });
21
24
  if (res == null) return null;
22
- return h(svgMapComponents.FeatureLayer, {
25
+ return h__default.default(svgMapComponents.FeatureLayer, {
23
26
  useCanvas: false,
24
27
  style,
25
28
  features: res.features?.filter((d) => d.properties.unit_id != null) ?? []
@@ -32,8 +35,8 @@ function ColumnFeatures(props) {
32
35
  color = "rgba(150,150,150, 1)",
33
36
  singleFeature = true
34
37
  } = props;
35
- const c = chroma(color);
36
- return h(
38
+ const c = chroma__default.default(color);
39
+ return h__default.default(
37
40
  svgMapComponents.FeatureLayer,
38
41
  {
39
42
  className: "columns",
@@ -44,7 +47,7 @@ function ColumnFeatures(props) {
44
47
  }
45
48
  },
46
49
  features?.map((f) => {
47
- return h(svgMapComponents.Feature, {
50
+ return h__default.default(svgMapComponents.Feature, {
48
51
  id: f.id ?? f.properties.col_id,
49
52
  onClick,
50
53
  feature: f
@@ -82,8 +85,8 @@ function ColumnKeyboardNavigation(props) {
82
85
  );
83
86
  if (neighbors == null) return null;
84
87
  const neighborFeatures = neighbors.map((d) => features[d]);
85
- return h.if(showLayers)([
86
- h(svgMapComponents.FeatureLayer, {
88
+ return h__default.default.if(showLayers)([
89
+ h__default.default(svgMapComponents.FeatureLayer, {
87
90
  features: tri.links().features,
88
91
  useCanvas: false,
89
92
  style: {
@@ -91,7 +94,7 @@ function ColumnKeyboardNavigation(props) {
91
94
  fill: "transparent"
92
95
  }
93
96
  }),
94
- h(svgMapComponents.FeatureLayer, {
97
+ h__default.default(svgMapComponents.FeatureLayer, {
95
98
  features: neighborFeatures,
96
99
  useCanvas: false,
97
100
  style: {
@@ -100,7 +103,7 @@ function ColumnKeyboardNavigation(props) {
100
103
  fill: "rgba(93, 101, 212, 0.5)"
101
104
  }
102
105
  }),
103
- h(svgMapComponents.FeatureLayer, {
106
+ h__default.default(svgMapComponents.FeatureLayer, {
104
107
  features: [
105
108
  {
106
109
  type: "Feature",
@@ -140,8 +143,8 @@ const Columns = (props) => {
140
143
  if (filterColumns != null) {
141
144
  features = features.filter(filterColumns);
142
145
  }
143
- return h([
144
- h(ColumnKeyboardNavigation, {
146
+ return h__default.default([
147
+ h__default.default(ColumnKeyboardNavigation, {
145
148
  features,
146
149
  col_id,
147
150
  onChange,
@@ -149,15 +152,15 @@ const Columns = (props) => {
149
152
  project_id,
150
153
  showLayers: showDebugLayers
151
154
  }),
152
- h(ColumnFeatures, { features, onClick: onChange, color })
155
+ h__default.default(ColumnFeatures, { features, onClick: onChange, color })
153
156
  ]);
154
157
  };
155
158
  const ColumnCenters = (props) => {
156
- return h(Columns, { apiRoute: "/defs/columns", ...props });
159
+ return h__default.default(Columns, { apiRoute: "/defs/columns", ...props });
157
160
  };
158
161
  const CurrentColumn = (props) => {
159
162
  const { feature } = props;
160
- return h(svgMapComponents.FeatureLayer, {
163
+ return h__default.default(svgMapComponents.FeatureLayer, {
161
164
  features: [feature],
162
165
  style: {
163
166
  fill: "rgba(255,0,0,0.4)",