@macrostrat/column-views 3.9.0 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/index.cjs +15 -42
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.ts +2 -1
  5. package/dist/index.js +1 -34
  6. package/dist/index.js.map +1 -1
  7. package/dist/units/boxes.cjs +3 -3
  8. package/dist/units/boxes.cjs.map +1 -1
  9. package/dist/units/boxes.js +3 -3
  10. package/dist/units/boxes.js.map +1 -1
  11. package/dist/units/index.cjs +7 -11
  12. package/dist/units/index.cjs.map +1 -1
  13. package/dist/units/index.d.ts +0 -1
  14. package/dist/units/index.js +4 -9
  15. package/dist/units/index.js.map +1 -1
  16. package/package.json +6 -27
  17. package/src/index.ts +3 -1
  18. package/src/units/boxes.ts +7 -4
  19. package/src/units/index.ts +9 -26
  20. package/dist/maps/column-correlation/core.cjs +0 -288
  21. package/dist/maps/column-correlation/core.cjs.map +0 -1
  22. package/dist/maps/column-correlation/core.d.ts +0 -9
  23. package/dist/maps/column-correlation/core.js +0 -286
  24. package/dist/maps/column-correlation/core.js.map +0 -1
  25. package/dist/maps/column-correlation/index.d.ts +0 -2
  26. package/dist/maps/column-correlation/state.cjs +0 -193
  27. package/dist/maps/column-correlation/state.cjs.map +0 -1
  28. package/dist/maps/column-correlation/state.d.ts +0 -62
  29. package/dist/maps/column-correlation/state.js +0 -190
  30. package/dist/maps/column-correlation/state.js.map +0 -1
  31. package/dist/maps/column-navigation/index.d.ts +0 -2
  32. package/dist/maps/column-navigation/mapbox/index.cjs +0 -215
  33. package/dist/maps/column-navigation/mapbox/index.cjs.map +0 -1
  34. package/dist/maps/column-navigation/mapbox/index.d.ts +0 -38
  35. package/dist/maps/column-navigation/mapbox/index.js +0 -213
  36. package/dist/maps/column-navigation/mapbox/index.js.map +0 -1
  37. package/dist/maps/column-navigation/mapbox/keyboard-navigation.cjs +0 -105
  38. package/dist/maps/column-navigation/mapbox/keyboard-navigation.cjs.map +0 -1
  39. package/dist/maps/column-navigation/mapbox/keyboard-navigation.d.ts +0 -8
  40. package/dist/maps/column-navigation/mapbox/keyboard-navigation.js +0 -105
  41. package/dist/maps/column-navigation/mapbox/keyboard-navigation.js.map +0 -1
  42. package/dist/maps/column-navigation/mapbox/state.cjs +0 -73
  43. package/dist/maps/column-navigation/mapbox/state.cjs.map +0 -1
  44. package/dist/maps/column-navigation/mapbox/state.d.ts +0 -23
  45. package/dist/maps/column-navigation/mapbox/state.js +0 -71
  46. package/dist/maps/column-navigation/mapbox/state.js.map +0 -1
  47. package/dist/maps/column-navigation/svg/animated.d.ts +0 -1
  48. package/dist/maps/column-navigation/svg/data-fetcher.cjs +0 -25
  49. package/dist/maps/column-navigation/svg/data-fetcher.cjs.map +0 -1
  50. package/dist/maps/column-navigation/svg/data-fetcher.d.ts +0 -6
  51. package/dist/maps/column-navigation/svg/data-fetcher.js +0 -25
  52. package/dist/maps/column-navigation/svg/data-fetcher.js.map +0 -1
  53. package/dist/maps/column-navigation/svg/index.cjs +0 -94
  54. package/dist/maps/column-navigation/svg/index.cjs.map +0 -1
  55. package/dist/maps/column-navigation/svg/index.d.ts +0 -9
  56. package/dist/maps/column-navigation/svg/index.js +0 -93
  57. package/dist/maps/column-navigation/svg/index.js.map +0 -1
  58. package/dist/maps/column-navigation/svg/layers.cjs +0 -177
  59. package/dist/maps/column-navigation/svg/layers.cjs.map +0 -1
  60. package/dist/maps/column-navigation/svg/layers.d.ts +0 -54
  61. package/dist/maps/column-navigation/svg/layers.js +0 -174
  62. package/dist/maps/column-navigation/svg/layers.js.map +0 -1
  63. package/dist/maps/column-navigation/utils/keyboard-navigation.cjs +0 -50
  64. package/dist/maps/column-navigation/utils/keyboard-navigation.cjs.map +0 -1
  65. package/dist/maps/column-navigation/utils/keyboard-navigation.d.ts +0 -10
  66. package/dist/maps/column-navigation/utils/keyboard-navigation.js +0 -50
  67. package/dist/maps/column-navigation/utils/keyboard-navigation.js.map +0 -1
  68. package/dist/maps/index.d.ts +0 -4
  69. package/dist/maps/inset-map/index.cjs +0 -71
  70. package/dist/maps/inset-map/index.cjs.map +0 -1
  71. package/dist/maps/inset-map/index.d.ts +0 -16
  72. package/dist/maps/inset-map/index.js +0 -69
  73. package/dist/maps/inset-map/index.js.map +0 -1
  74. package/dist/maps/layers/columns.cjs +0 -165
  75. package/dist/maps/layers/columns.cjs.map +0 -1
  76. package/dist/maps/layers/columns.d.ts +0 -28
  77. package/dist/maps/layers/columns.js +0 -165
  78. package/dist/maps/layers/columns.js.map +0 -1
  79. package/dist/maps/layers/index.d.ts +0 -2
  80. package/dist/maps/layers/units.cjs +0 -207
  81. package/dist/maps/layers/units.cjs.map +0 -1
  82. package/dist/maps/layers/units.d.ts +0 -14
  83. package/dist/maps/layers/units.js +0 -204
  84. package/dist/maps/layers/units.js.map +0 -1
  85. package/dist/units/colors.cjs +0 -115
  86. package/dist/units/colors.cjs.map +0 -1
  87. package/dist/units/colors.d.ts +0 -20
  88. package/dist/units/colors.js +0 -113
  89. package/dist/units/colors.js.map +0 -1
  90. package/dist/units/resolvers.cjs +0 -125
  91. package/dist/units/resolvers.cjs.map +0 -1
  92. package/dist/units/resolvers.d.ts +0 -8
  93. package/dist/units/resolvers.js +0 -125
  94. package/dist/units/resolvers.js.map +0 -1
  95. package/src/maps/column-correlation/column-correlation-map.stories.ts +0 -108
  96. package/src/maps/column-correlation/core.ts +0 -342
  97. package/src/maps/column-correlation/index.ts +0 -2
  98. package/src/maps/column-correlation/state.ts +0 -315
  99. package/src/maps/column-navigation/index.ts +0 -2
  100. package/src/maps/column-navigation/mapbox/column-navigation-map.stories.ts +0 -278
  101. package/src/maps/column-navigation/mapbox/index.ts +0 -276
  102. package/src/maps/column-navigation/mapbox/keyboard-navigation.ts +0 -133
  103. package/src/maps/column-navigation/mapbox/state.ts +0 -119
  104. package/src/maps/column-navigation/svg/animated.ts +0 -78
  105. package/src/maps/column-navigation/svg/column-navigation-svg-map.stories.ts +0 -46
  106. package/src/maps/column-navigation/svg/data-fetcher.ts +0 -34
  107. package/src/maps/column-navigation/svg/index.ts +0 -96
  108. package/src/maps/column-navigation/svg/layers.ts +0 -233
  109. package/src/maps/column-navigation/utils/keyboard-navigation.ts +0 -58
  110. package/src/maps/index.ts +0 -4
  111. package/src/maps/inset-map/index.ts +0 -87
  112. package/src/maps/inset-map/inset-map.stories.ts +0 -20
  113. package/src/maps/layers/columns.ts +0 -216
  114. package/src/maps/layers/index.ts +0 -2
  115. package/src/maps/layers/units.ts +0 -286
  116. package/src/maps/unit-map.stories.ts +0 -79
  117. package/src/units/colors.ts +0 -183
  118. package/src/units/resolvers.ts +0 -141
@@ -3,13 +3,11 @@ import { useGeologicPattern, useColumnLayout, LithologyColumn } from "@macrostra
3
3
  import { UnitNamesColumn } from "./names.js";
4
4
  import { UnitBoxes } from "./boxes.js";
5
5
  import { useInDarkMode } from "@macrostrat/ui-components";
6
- import { getMixedUnitColor } from "./colors.js";
7
- import { flattenLithologies, getMixedColorForData } from "./colors.js";
6
+ import { getBestFGDCPatternForUnit, getMixedUnitColor } from "@macrostrat/stratigraphy-utils";
8
7
  import { TrackedLabeledUnit } from "./composite.js";
9
8
  import { AnnotatedUnitsColumn, ColumnNotesProvider, CompositeUnitComponent, CompositeUnitsColumn, LabelTrackerProvider, SectionLabelsColumn } from "./composite.js";
10
9
  import { useLithologies, useEnvironments } from "@macrostrat/data-provider";
11
10
  import { useMemo } from "react";
12
- import { resolveID } from "./resolvers.js";
13
11
  function UnitsColumn({ width = 100 }) {
14
12
  return h(LithologyColumn, { width }, h(UnitBoxes));
15
13
  }
@@ -49,7 +47,7 @@ function UnitComponent({
49
47
  let reducedWidth = _nColumns;
50
48
  if ("layout" in division) {
51
49
  const layout = division.layout;
52
- _nColumns = Math.min(_nColumns, layout.totalColumns);
50
+ _nColumns = layout.totalColumns;
53
51
  columnIx = layout.column;
54
52
  reducedWidth = width / layout.totalColumns / layout.nColumns;
55
53
  x = columnIx * width / _nColumns;
@@ -73,7 +71,7 @@ function useUnitColor(unit, opts = {}) {
73
71
  function ColoredUnitComponent(props) {
74
72
  const backgroundColor = useUnitColor(props.division);
75
73
  const patternID = useMemo(() => {
76
- return resolveID(props.division);
74
+ return getBestFGDCPatternForUnit(props.division);
77
75
  }, [props.division?.unit_id]);
78
76
  const fill = useGeologicPattern(patternID);
79
77
  return h(UnitComponent, {
@@ -102,7 +100,7 @@ function useUnitColorByEnvironment(unit, opts = {}) {
102
100
  function EnvironmentColoredUnitComponent(props) {
103
101
  const backgroundColor = useUnitColorByEnvironment(props.division);
104
102
  const patternID = useMemo(() => {
105
- return resolveID(props.division);
103
+ return getBestFGDCPatternForUnit(props.division);
106
104
  }, [props.division?.unit_id]);
107
105
  const fill = useGeologicPattern(patternID);
108
106
  return h(UnitComponent, {
@@ -125,9 +123,6 @@ export {
125
123
  TrackedLabeledUnit,
126
124
  UnitComponent,
127
125
  UnitsColumn,
128
- flattenLithologies,
129
- getMixedColorForData,
130
- getMixedUnitColor,
131
126
  useUnitColor,
132
127
  useUnitColorByEnvironment
133
128
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/units/index.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport {\n LithologyColumn,\n useGeologicPattern,\n} from \"@macrostrat/column-components\";\nimport { UnitNamesColumn } from \"./names\";\nimport { ICompositeUnitProps } from \"./composite\";\nimport { UnitBoxes, UnitProps } from \"./boxes\";\nimport { useColumnLayout } from \"@macrostrat/column-components\";\nimport { useInDarkMode } from \"@macrostrat/ui-components\";\nimport { getMixedUnitColor } from \"./colors\";\nimport { TrackedLabeledUnit } from \"./composite\";\nimport { useEnvironments, useLithologies } from \"@macrostrat/data-provider\";\nimport { useMemo } from \"react\";\nimport { resolveID } from \"./resolvers\";\nimport { BaseUnit, Lithology } from \"@macrostrat/api-types\";\nimport { UnitWithLayoutParameters } from \"../prepare-units/helpers.ts\";\n\nexport * from \"./composite\";\nexport * from \"./types\";\nexport * from \"./colors\";\n\nexport function UnitsColumn({ width = 100 }) {\n /*\n A column showing units with USGS color fill\n */\n return h(LithologyColumn, { width }, h(UnitBoxes));\n}\n\nexport function SimpleUnitsColumn(props: ICompositeUnitProps) {\n /*\n A column with units and names either\n overlapping or offset to the right\n */\n const { columnWidth, width, gutterWidth = 0, labelOffset = 30 } = props;\n\n return h([\n h(UnitsColumn, {\n width: columnWidth,\n }),\n h(UnitNamesColumn, {\n transform: `translate(${columnWidth + gutterWidth})`,\n paddingLeft: labelOffset,\n width: width - columnWidth - gutterWidth,\n }),\n ]);\n}\n\nexport function BasicUnitComponent({ division, ...rest }) {\n /** A unit that allows directly setting colors and patterns. */\n\n return h(UnitComponent, {\n division,\n ...rest,\n backgroundColor: division.color,\n patternID: division.patternID,\n });\n}\n\ninterface UnitComponentProps<T extends BaseUnit> {\n division: UnitWithLayoutParameters<T> | T;\n nColumns: number;\n width?: number;\n}\n\nexport function UnitComponent<T extends BaseUnit>({\n division,\n nColumns = 2,\n ...rest\n}: UnitComponentProps<T>) {\n const width = rest.width ?? useColumnLayout()?.width;\n\n let _nColumns = nColumns;\n if (isNaN(_nColumns)) {\n _nColumns = 2;\n }\n let columnIx = 0;\n let x = 0;\n\n let reducedWidth = _nColumns;\n if (\"layout\" in division) {\n const layout = division.layout;\n _nColumns = Math.min(_nColumns, layout.totalColumns);\n columnIx = layout.column;\n reducedWidth = width / layout.totalColumns / layout.nColumns;\n x = (columnIx * width) / _nColumns;\n }\n return h(TrackedLabeledUnit, {\n division,\n ...rest,\n width: reducedWidth,\n x,\n });\n}\n\ninterface UnitColorOptions {\n asBackground?: boolean;\n}\n\nexport function useUnitColor(unit, opts: UnitColorOptions = {}): string | null {\n /** Get the color for a unit based on its lithology */\n const lithMap = useLithologies();\n const inDarkMode = useInDarkMode();\n const { asBackground = true } = opts;\n\n return useMemo(() => {\n if (unit == null || lithMap == null) return null;\n return getMixedUnitColor(unit, lithMap, inDarkMode, asBackground);\n }, [unit?.unit_id, lithMap, inDarkMode, asBackground]);\n}\n\nexport function ColoredUnitComponent(props) {\n /** A unit component that is colored using a mixture of lithologies.\n * This is a separate component because it depends on more providers/contexts to determine coloring. */\n const backgroundColor = useUnitColor(props.division);\n\n const patternID = useMemo(() => {\n return resolveID(props.division); // ?? getPatternID(props.division.lith, lithMap);\n }, [props.division?.unit_id]);\n\n const fill = useGeologicPattern(patternID);\n\n return h(UnitComponent, {\n fill,\n backgroundColor,\n ...props,\n });\n}\n\nexport function useUnitColorByEnvironment(\n unit,\n opts: UnitColorOptions = {},\n): string | null {\n /** Get the color for a unit based on its lithology */\n const environmentMap = useEnvironments();\n const lithMap = useLithologies();\n const inDarkMode = useInDarkMode();\n const { asBackground = true } = opts;\n\n return useMemo(() => {\n if (unit == null || environmentMap == null) return null;\n let c = getMixedUnitColor(unit, environmentMap, inDarkMode, asBackground, {\n key: \"environ\",\n id_key: \"environ_id\",\n });\n if (c != null) {\n return c;\n }\n // Fallback to lithology color if no environment color is found\n return getMixedUnitColor(unit, lithMap, inDarkMode, asBackground);\n }, [unit?.unit_id, environmentMap, lithMap, inDarkMode, asBackground]);\n}\n\nexport function EnvironmentColoredUnitComponent(props) {\n /** A unit component that is colored using a mixture of lithologies.\n * This is a separate component because it depends on more providers/contexts to determine coloring. */\n const backgroundColor = useUnitColorByEnvironment(props.division);\n\n const patternID = useMemo(() => {\n return resolveID(props.division); // ?? getPatternID(props.division.lith, lithMap);\n }, [props.division?.unit_id]);\n\n const fill = useGeologicPattern(patternID);\n\n return h(UnitComponent, {\n fill,\n backgroundColor,\n ...props,\n });\n}\n\nfunction getPatternID(\n liths: Array<Lithology>,\n lithMap: Map<number, Lithology>,\n): string | null {\n if (lithMap == null || liths == null || liths.length == 0) {\n return null;\n }\n const patternIDs = new Set<string>();\n for (const lith of liths) {\n const lithData = lithMap.get(lith.lith_id);\n if (lithData) {\n patternIDs.add(`${lithData.fill}`);\n }\n }\n let id = patternIDs.values()[0];\n if (id == \"0\") return null;\n return id;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/units/index.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport {\n LithologyColumn,\n useGeologicPattern,\n} from \"@macrostrat/column-components\";\nimport { UnitNamesColumn } from \"./names\";\nimport { ICompositeUnitProps } from \"./composite\";\nimport { UnitBoxes } from \"./boxes\";\nimport { useColumnLayout } from \"@macrostrat/column-components\";\nimport { useInDarkMode } from \"@macrostrat/ui-components\";\nimport {\n getBestFGDCPatternForUnit,\n getMixedUnitColor,\n} from \"@macrostrat/stratigraphy-utils\";\nimport { TrackedLabeledUnit } from \"./composite\";\nimport { useEnvironments, useLithologies } from \"@macrostrat/data-provider\";\nimport { useMemo } from \"react\";\nimport { BaseUnit, Lithology } from \"@macrostrat/api-types\";\nimport { UnitWithLayoutParameters } from \"../prepare-units/helpers.ts\";\n\nexport * from \"./composite\";\nexport * from \"./types\";\n\nexport function UnitsColumn({ width = 100 }) {\n /*\n A column showing units with USGS color fill\n */\n return h(LithologyColumn, { width }, h(UnitBoxes));\n}\n\nexport function SimpleUnitsColumn(props: ICompositeUnitProps) {\n /*\n A column with units and names either\n overlapping or offset to the right\n */\n const { columnWidth, width, gutterWidth = 0, labelOffset = 30 } = props;\n\n return h([\n h(UnitsColumn, {\n width: columnWidth,\n }),\n h(UnitNamesColumn, {\n transform: `translate(${columnWidth + gutterWidth})`,\n paddingLeft: labelOffset,\n width: width - columnWidth - gutterWidth,\n }),\n ]);\n}\n\nexport function BasicUnitComponent({ division, ...rest }) {\n /** A unit that allows directly setting colors and patterns. */\n\n return h(UnitComponent, {\n division,\n ...rest,\n backgroundColor: division.color,\n patternID: division.patternID,\n });\n}\n\ninterface UnitComponentProps<T extends BaseUnit> {\n division: UnitWithLayoutParameters<T> | T;\n nColumns: number;\n width?: number;\n}\n\nexport function UnitComponent<T extends BaseUnit>({\n division,\n nColumns = 2,\n ...rest\n}: UnitComponentProps<T>) {\n const width = rest.width ?? useColumnLayout()?.width;\n\n let _nColumns = nColumns;\n if (isNaN(_nColumns)) {\n _nColumns = 2;\n }\n let columnIx = 0;\n let x = 0;\n\n let reducedWidth = _nColumns;\n if (\"layout\" in division) {\n const layout = division.layout;\n _nColumns = layout.totalColumns;\n columnIx = layout.column;\n reducedWidth = width / layout.totalColumns / layout.nColumns;\n x = (columnIx * width) / _nColumns;\n }\n\n return h(TrackedLabeledUnit, {\n division,\n ...rest,\n width: reducedWidth,\n x,\n });\n}\n\ninterface UnitColorOptions {\n asBackground?: boolean;\n}\n\nexport function useUnitColor(unit, opts: UnitColorOptions = {}): string | null {\n /** Get the color for a unit based on its lithology */\n const lithMap = useLithologies();\n const inDarkMode = useInDarkMode();\n const { asBackground = true } = opts;\n\n return useMemo(() => {\n if (unit == null || lithMap == null) return null;\n return getMixedUnitColor(unit, lithMap, inDarkMode, asBackground);\n }, [unit?.unit_id, lithMap, inDarkMode, asBackground]);\n}\n\nexport function ColoredUnitComponent(props) {\n /** A unit component that is colored using a mixture of lithologies.\n * This is a separate component because it depends on more providers/contexts to determine coloring. */\n const backgroundColor = useUnitColor(props.division);\n\n const patternID = useMemo(() => {\n return getBestFGDCPatternForUnit(props.division); // ?? getPatternID(props.division.lith, lithMap);\n }, [props.division?.unit_id]);\n\n const fill = useGeologicPattern(patternID);\n\n return h(UnitComponent, {\n fill,\n backgroundColor,\n ...props,\n });\n}\n\nexport function useUnitColorByEnvironment(\n unit,\n opts: UnitColorOptions = {},\n): string | null {\n /** Get the color for a unit based on its lithology */\n const environmentMap = useEnvironments();\n const lithMap = useLithologies();\n const inDarkMode = useInDarkMode();\n const { asBackground = true } = opts;\n\n return useMemo(() => {\n if (unit == null || environmentMap == null) return null;\n let c = getMixedUnitColor(unit, environmentMap, inDarkMode, asBackground, {\n key: \"environ\",\n id_key: \"environ_id\",\n });\n if (c != null) {\n return c;\n }\n // Fallback to lithology color if no environment color is found\n return getMixedUnitColor(unit, lithMap, inDarkMode, asBackground);\n }, [unit?.unit_id, environmentMap, lithMap, inDarkMode, asBackground]);\n}\n\nexport function EnvironmentColoredUnitComponent(props) {\n /** A unit component that is colored using a mixture of lithologies.\n * This is a separate component because it depends on more providers/contexts to determine coloring. */\n const backgroundColor = useUnitColorByEnvironment(props.division);\n\n const patternID = useMemo(() => {\n return getBestFGDCPatternForUnit(props.division); // ?? getPatternID(props.division.lith, lithMap);\n }, [props.division?.unit_id]);\n\n const fill = useGeologicPattern(patternID);\n\n return h(UnitComponent, {\n fill,\n backgroundColor,\n ...props,\n });\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@macrostrat/column-views",
3
- "version": "3.9.0",
3
+ "version": "3.10.0",
4
4
  "description": "Data views for Macrostrat stratigraphic columns",
5
5
  "repository": {
6
6
  "type": "git",
@@ -46,50 +46,29 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "@blueprintjs/core": "^6.14.0",
49
- "@macrostrat/api-types": "^1.2.0",
49
+ "@macrostrat/api-types": "^1.3.0",
50
50
  "@macrostrat/color-utils": "^1.2.2",
51
51
  "@macrostrat/column-components": "^2.1.0",
52
52
  "@macrostrat/data-components": "^1.5.1",
53
53
  "@macrostrat/data-provider": "^1.2.0",
54
54
  "@macrostrat/hyper": "^3.1.1",
55
- "@macrostrat/map-interface": "^2.3.1",
56
- "@macrostrat/map-styles": "^2.2.7",
57
- "@macrostrat/mapbox-react": "^3.3.3",
58
- "@macrostrat/mapbox-utils": "^1.8.0",
59
- "@macrostrat/scoped-store": "^1.0.1",
60
- "@macrostrat/stratigraphy-utils": "^1.3.0",
61
- "@macrostrat/svg-map-components": "^2.0.3",
55
+ "@macrostrat/map-views": "^1.0.0",
56
+ "@macrostrat/scoped-store": "^1.1.0",
57
+ "@macrostrat/stratigraphy-utils": "^1.4.0",
62
58
  "@macrostrat/timescale": "^3.2.0",
63
59
  "@macrostrat/ui-components": "^5.2.0",
64
- "@turf/boolean-point-in-polygon": "^7.3.2",
65
- "@turf/buffer": "^7.3.2",
66
- "@turf/centroid": "^7.3.2",
67
- "@turf/distance": "^7.3.2",
68
- "@turf/line-intersect": "^7.3.2",
69
- "@turf/nearest-point-on-line": "^7.3.2",
70
60
  "@types/chroma-js": "^3.1.1",
71
61
  "@types/d3-format": "^3.0.4",
72
- "@types/d3-geo": "^3.1.0",
73
62
  "@types/d3-shape": "^3.1.7",
74
- "@types/topojson-client": "^3.1.5",
75
63
  "@visx/axis": "^3.12.0",
76
64
  "chroma-js": "^3.2.0",
77
65
  "classnames": "^2.5.1",
78
- "cross-fetch": "^4.1.0",
79
66
  "d3-array": "^3.2.4",
80
67
  "d3-format": "^3.1.2",
81
- "d3-geo": "^3.1.1",
82
- "d3-geo-voronoi": "^2.1.0",
83
68
  "d3-path": "^3.1.0",
84
69
  "d3-scale": "^4.0.2",
85
70
  "d3-shape": "^3.2.0",
86
- "jotai": "^2.20.0",
87
- "mapbox-gl": "^3.0.0",
88
- "p-map": "^7.0.4",
89
- "react-spring": "^9.7.5",
90
- "topojson-client": "^3.1.0",
91
- "zustand": "^5.0.3",
92
- "zustand-computed": "^2.0.2"
71
+ "jotai": "^2.20.0"
93
72
  },
94
73
  "devDependencies": {
95
74
  "@macrostrat/web-components-bundler": "1.0.1",
package/src/index.ts CHANGED
@@ -5,8 +5,10 @@ export * from "./prepare-units";
5
5
  export * from "./animated-age-window";
6
6
  export * from "./column";
7
7
  export * from "./unit-details";
8
- export * from "./maps";
9
8
  export * from "./age-model-overlay";
10
9
  export * from "./correlation-chart";
11
10
  export * from "./notes";
12
11
  export * from "./facets";
12
+
13
+ /** Legacy views */
14
+ export * from "@macrostrat/map-views";
@@ -11,15 +11,18 @@ import {
11
11
  import { SizeAwareLabel, Clickable } from "@macrostrat/ui-components";
12
12
  import hyper from "@macrostrat/hyper";
13
13
  import { ReactNode, useContext, useMemo } from "react";
14
- import { resolveID, scalePattern } from "./resolvers";
15
14
  import { useUnitSelectionTarget } from "../data-provider";
16
15
  import { useLithologies } from "@macrostrat/data-provider";
17
16
  import { IUnit } from "./types";
18
17
  import styles from "./boxes.module.sass";
19
18
  import classNames from "classnames";
20
19
  import { getUnitHeightRange } from "../prepare-units/utils";
21
- import { getMixedUnitColor } from "./colors";
22
20
  import type { RectBounds } from "./types";
21
+ import {
22
+ getBestFGDCPatternForUnit,
23
+ scalePattern,
24
+ getMixedUnitColor,
25
+ } from "@macrostrat/stratigraphy-utils";
23
26
 
24
27
  const h = hyper.styled(styles);
25
28
 
@@ -158,7 +161,7 @@ function Unit(props: UnitProps) {
158
161
  overflowTop: hasOverflowTop,
159
162
  overflowBottom: hasOverflowBottom,
160
163
  };
161
- const _patternID = patternID ?? resolveID(d);
164
+ const _patternID = patternID ?? getBestFGDCPatternForUnit(d);
162
165
  let _fill = fill ?? useGeologicPattern(_patternID, defaultFill);
163
166
 
164
167
  const hasBackgroundColor = backgroundColor != null;
@@ -289,7 +292,7 @@ function UnitBoxes<T>(props: {
289
292
 
290
293
  return h(
291
294
  PatternDefsProvider,
292
- { resolveID, scalePattern },
295
+ { resolveID: getBestFGDCPatternForUnit, scalePattern },
293
296
  h("g.divisions", children),
294
297
  );
295
298
  }
@@ -5,20 +5,21 @@ import {
5
5
  } from "@macrostrat/column-components";
6
6
  import { UnitNamesColumn } from "./names";
7
7
  import { ICompositeUnitProps } from "./composite";
8
- import { UnitBoxes, UnitProps } from "./boxes";
8
+ import { UnitBoxes } from "./boxes";
9
9
  import { useColumnLayout } from "@macrostrat/column-components";
10
10
  import { useInDarkMode } from "@macrostrat/ui-components";
11
- import { getMixedUnitColor } from "./colors";
11
+ import {
12
+ getBestFGDCPatternForUnit,
13
+ getMixedUnitColor,
14
+ } from "@macrostrat/stratigraphy-utils";
12
15
  import { TrackedLabeledUnit } from "./composite";
13
16
  import { useEnvironments, useLithologies } from "@macrostrat/data-provider";
14
17
  import { useMemo } from "react";
15
- import { resolveID } from "./resolvers";
16
18
  import { BaseUnit, Lithology } from "@macrostrat/api-types";
17
19
  import { UnitWithLayoutParameters } from "../prepare-units/helpers.ts";
18
20
 
19
21
  export * from "./composite";
20
22
  export * from "./types";
21
- export * from "./colors";
22
23
 
23
24
  export function UnitsColumn({ width = 100 }) {
24
25
  /*
@@ -80,11 +81,12 @@ export function UnitComponent<T extends BaseUnit>({
80
81
  let reducedWidth = _nColumns;
81
82
  if ("layout" in division) {
82
83
  const layout = division.layout;
83
- _nColumns = Math.min(_nColumns, layout.totalColumns);
84
+ _nColumns = layout.totalColumns;
84
85
  columnIx = layout.column;
85
86
  reducedWidth = width / layout.totalColumns / layout.nColumns;
86
87
  x = (columnIx * width) / _nColumns;
87
88
  }
89
+
88
90
  return h(TrackedLabeledUnit, {
89
91
  division,
90
92
  ...rest,
@@ -115,7 +117,7 @@ export function ColoredUnitComponent(props) {
115
117
  const backgroundColor = useUnitColor(props.division);
116
118
 
117
119
  const patternID = useMemo(() => {
118
- return resolveID(props.division); // ?? getPatternID(props.division.lith, lithMap);
120
+ return getBestFGDCPatternForUnit(props.division); // ?? getPatternID(props.division.lith, lithMap);
119
121
  }, [props.division?.unit_id]);
120
122
 
121
123
  const fill = useGeologicPattern(patternID);
@@ -157,7 +159,7 @@ export function EnvironmentColoredUnitComponent(props) {
157
159
  const backgroundColor = useUnitColorByEnvironment(props.division);
158
160
 
159
161
  const patternID = useMemo(() => {
160
- return resolveID(props.division); // ?? getPatternID(props.division.lith, lithMap);
162
+ return getBestFGDCPatternForUnit(props.division); // ?? getPatternID(props.division.lith, lithMap);
161
163
  }, [props.division?.unit_id]);
162
164
 
163
165
  const fill = useGeologicPattern(patternID);
@@ -168,22 +170,3 @@ export function EnvironmentColoredUnitComponent(props) {
168
170
  ...props,
169
171
  });
170
172
  }
171
-
172
- function getPatternID(
173
- liths: Array<Lithology>,
174
- lithMap: Map<number, Lithology>,
175
- ): string | null {
176
- if (lithMap == null || liths == null || liths.length == 0) {
177
- return null;
178
- }
179
- const patternIDs = new Set<string>();
180
- for (const lith of liths) {
181
- const lithData = lithMap.get(lith.lith_id);
182
- if (lithData) {
183
- patternIDs.add(`${lithData.fill}`);
184
- }
185
- }
186
- let id = patternIDs.values()[0];
187
- if (id == "0") return null;
188
- return id;
189
- }
@@ -1,288 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const mapboxReact = require("@macrostrat/mapbox-react");
4
- const mapboxGl = require("mapbox-gl");
5
- const h = require("@macrostrat/hyper");
6
- const React = require("react");
7
- const mapboxUtils = require("@macrostrat/mapbox-utils");
8
- const state = require("./state.cjs");
9
- const index = require("../inset-map/index.cjs");
10
- const mapStyles = require("@macrostrat/map-styles");
11
- const columns = require("../layers/columns.cjs");
12
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
13
- const h__default = /* @__PURE__ */ _interopDefault(h);
14
- function ColumnCorrelationMap(props) {
15
- const { padding = 50, children, columnColor, projectID, ...rest } = props;
16
- return h__default.default(
17
- index.InsetMap,
18
- {
19
- ...rest,
20
- boxZoom: false,
21
- dragRotate: false
22
- },
23
- [
24
- h__default.default(ColumnsLayer, { color: columnColor }),
25
- h__default.default(SelectedColumnsLayer),
26
- h__default.default(MapClickHandler),
27
- h__default.default(ColumnInteractionHandler),
28
- h__default.default(HoveredColumnHighlight),
29
- h__default.default(ColumnZoomer, { padding }),
30
- h__default.default(SectionLine, { padding }),
31
- children
32
- ]
33
- );
34
- }
35
- function ColumnZoomer({ padding }) {
36
- const zoomColumn = state.useCorrelationMapStore((state2) => state2.zoomColumn);
37
- const zoomNonce = state.useCorrelationMapStore((state2) => state2.zoomNonce);
38
- const columns2 = state.useCorrelationMapStore((state2) => state2.columns);
39
- const bounds = React.useMemo(() => {
40
- if (zoomColumn == null || columns2 == null) return null;
41
- const col = columns2.find((c) => c.properties?.col_id === zoomColumn);
42
- if (col?.geometry == null) return null;
43
- const b = new mapboxGl.LngLatBounds();
44
- forEachCoordinate(col.geometry, (coord) => b.extend(coord));
45
- return b.isEmpty() ? null : b;
46
- }, [zoomColumn, zoomNonce, columns2]);
47
- mapboxReact.useMapEaseTo({ bounds, padding: padding * 2 });
48
- return null;
49
- }
50
- function forEachCoordinate(geometry, fn) {
51
- const walk = (coords) => {
52
- if (typeof coords[0] === "number") {
53
- fn(coords);
54
- } else {
55
- for (const c of coords) walk(c);
56
- }
57
- };
58
- if (geometry?.coordinates != null) walk(geometry.coordinates);
59
- }
60
- const columnLayers = ["columns-fill", "columns-points"];
61
- function MapClickHandler() {
62
- const onClickMap = state.useCorrelationMapStore((state2) => state2.onClickMap);
63
- mapboxReact.useMapClickHandler(
64
- (e) => {
65
- onClickMap(e, { type: "Point", coordinates: e.lngLat.toArray() });
66
- },
67
- [onClickMap]
68
- );
69
- return null;
70
- }
71
- function ColumnInteractionHandler() {
72
- const toggleColumn = state.useCorrelationMapStore((state2) => state2.toggleColumn);
73
- const setHoveredColumn = state.useCorrelationMapStore(
74
- (state2) => state2.setHoveredColumn
75
- );
76
- const isManual = state.useCorrelationMapStore(
77
- (state2) => state2.selectionMode === "manual"
78
- );
79
- const hoveredRef = React.useRef(null);
80
- mapboxReact.useMapStyleOperator(
81
- (map) => {
82
- if (!isManual) return;
83
- const onClick = (e) => {
84
- const colID = e.features?.[0]?.properties?.col_id;
85
- if (colID != null) toggleColumn(colID);
86
- };
87
- map.on("click", columnLayers, onClick);
88
- return () => map.off("click", columnLayers, onClick);
89
- },
90
- [isManual, toggleColumn]
91
- );
92
- mapboxReact.useMapStyleOperator(
93
- (map) => {
94
- const clearHover = () => {
95
- if (hoveredRef.current != null) {
96
- map.setFeatureState(
97
- { source: "columns", id: hoveredRef.current },
98
- { hover: false }
99
- );
100
- hoveredRef.current = null;
101
- }
102
- };
103
- const onMove = (e) => {
104
- const f = e.features?.[0];
105
- if (f == null) return;
106
- if (hoveredRef.current !== f.id) {
107
- clearHover();
108
- map.setFeatureState({ source: "columns", id: f.id }, { hover: true });
109
- hoveredRef.current = f.id;
110
- }
111
- setHoveredColumn(f.properties?.col_id ?? null);
112
- map.getCanvas().style.cursor = "pointer";
113
- };
114
- const onLeave = () => {
115
- clearHover();
116
- setHoveredColumn(null);
117
- map.getCanvas().style.cursor = "";
118
- };
119
- map.on("mousemove", columnLayers, onMove);
120
- map.on("mouseleave", columnLayers, onLeave);
121
- return () => {
122
- map.off("mousemove", columnLayers, onMove);
123
- map.off("mouseleave", columnLayers, onLeave);
124
- clearHover();
125
- };
126
- },
127
- [setHoveredColumn]
128
- );
129
- return null;
130
- }
131
- function HoveredColumnHighlight() {
132
- const hoveredColumn = state.useCorrelationMapStore((state2) => state2.hoveredColumn);
133
- const columns2 = state.useCorrelationMapStore((state2) => state2.columns);
134
- const appliedRef = React.useRef(null);
135
- mapboxReact.useMapStyleOperator(
136
- (map) => {
137
- if (appliedRef.current != null) {
138
- map.setFeatureState(
139
- { source: "columns", id: appliedRef.current },
140
- { highlighted: false }
141
- );
142
- appliedRef.current = null;
143
- }
144
- if (hoveredColumn == null || columns2 == null) return;
145
- const col = columns2.find((c) => c.properties?.col_id === hoveredColumn);
146
- const id = col?.id ?? col?.properties?.col_id;
147
- if (id == null) return;
148
- map.setFeatureState({ source: "columns", id }, { highlighted: true });
149
- appliedRef.current = id;
150
- },
151
- [hoveredColumn, columns2]
152
- );
153
- return null;
154
- }
155
- function SelectedColumnsLayer() {
156
- mapboxReact.useOverlayStyle(() => selectedColumnsStyle, []);
157
- const focusedColumns = state.useCorrelationMapStore(
158
- (state2) => state2.focusedColumns
159
- );
160
- mapboxReact.useMapStyleOperator(
161
- (map) => {
162
- let features = focusedColumns;
163
- const data = {
164
- type: "FeatureCollection",
165
- features
166
- };
167
- const columnCentroidLine = {
168
- type: "Feature",
169
- geometry: {
170
- type: "LineString",
171
- coordinates: features.map(
172
- (col) => col.properties.centroid.geometry.coordinates
173
- )
174
- },
175
- properties: {}
176
- };
177
- mapboxUtils.setGeoJSON(map, "selected-columns", data);
178
- mapboxUtils.setGeoJSON(map, "selected-column-centroids", {
179
- type: "FeatureCollection",
180
- features: [columnCentroidLine]
181
- });
182
- },
183
- [focusedColumns]
184
- );
185
- return null;
186
- }
187
- function ColumnsLayer({ enabled = true, color }) {
188
- const columns$1 = state.useCorrelationMapStore((state2) => state2.columns);
189
- return h__default.default(columns.BaseColumnsLayer, { enabled, color, columns: columns$1 });
190
- }
191
- const selectedColumnsStyle = {
192
- version: 8,
193
- sources: {
194
- "selected-columns": mapboxUtils.buildGeoJSONSource(),
195
- "selected-column-centroids": mapboxUtils.buildGeoJSONSource()
196
- },
197
- layers: [
198
- {
199
- id: "selected-columns-fill",
200
- type: "fill",
201
- source: "selected-columns",
202
- paint: {
203
- "fill-color": "rgba(255, 0, 0, 0.1)"
204
- }
205
- },
206
- {
207
- id: "selected-column-centroids-line",
208
- type: "line",
209
- source: "selected-column-centroids",
210
- paint: {
211
- "line-color": "rgba(255, 0, 0, 0.8)",
212
- "line-width": 2,
213
- "line-dasharray": [2, 2]
214
- }
215
- },
216
- {
217
- id: "selected-column-centroids-points",
218
- type: "circle",
219
- source: "selected-column-centroids",
220
- paint: {
221
- "circle-radius": 4,
222
- "circle-color": "rgba(255, 0, 0, 0.8)"
223
- }
224
- }
225
- ]
226
- };
227
- const lineOfSectionStyle = {
228
- version: 8,
229
- sources: {
230
- elevationMarker: mapboxUtils.buildGeoJSONSource(),
231
- crossSectionLine: mapboxUtils.buildGeoJSONSource(),
232
- crossSectionEndpoints: mapboxUtils.buildGeoJSONSource()
233
- },
234
- layers: mapStyles.buildCrossSectionLayers()
235
- };
236
- function SectionLine({ padding }) {
237
- mapboxReact.useOverlayStyle(() => lineOfSectionStyle, []);
238
- const focusedLine = state.useCorrelationMapStore((state2) => state2.focusedLine);
239
- const focusedColumns = state.useCorrelationMapStore(
240
- (state2) => state2.focusedColumns
241
- );
242
- mapboxReact.useMapStyleOperator(
243
- (map) => {
244
- if (focusedLine == null) {
245
- mapboxUtils.setGeoJSON(map, "crossSectionLine", emptyFeatureCollection);
246
- mapboxUtils.setGeoJSON(map, "crossSectionEndpoints", emptyFeatureCollection);
247
- return;
248
- }
249
- const data = {
250
- type: "FeatureCollection",
251
- features: [
252
- {
253
- type: "Feature",
254
- geometry: focusedLine,
255
- properties: { id: "focusedLine" }
256
- }
257
- ]
258
- };
259
- mapboxUtils.setGeoJSON(map, "crossSectionLine", data);
260
- mapboxUtils.setGeoJSON(map, "crossSectionEndpoints", {
261
- type: "FeatureCollection",
262
- features: focusedLine.coordinates.map((coord) => ({
263
- type: "Feature",
264
- geometry: { type: "Point", coordinates: coord },
265
- properties: {}
266
- }))
267
- });
268
- },
269
- [focusedLine]
270
- );
271
- const bounds = React.useMemo(() => {
272
- const coords = focusedLine != null && focusedLine.coordinates.length >= 2 ? focusedLine.coordinates : focusedColumns.map((c) => c.properties.centroid.geometry.coordinates);
273
- if (coords.length < 2) return null;
274
- const bounds2 = new mapboxGl.LngLatBounds();
275
- for (const coord of coords) {
276
- bounds2.extend(coord);
277
- }
278
- return bounds2;
279
- }, [focusedLine, focusedColumns]);
280
- mapboxReact.useMapEaseTo({ bounds, padding, trackResize: true });
281
- return null;
282
- }
283
- const emptyFeatureCollection = {
284
- type: "FeatureCollection",
285
- features: []
286
- };
287
- exports.ColumnCorrelationMap = ColumnCorrelationMap;
288
- //# sourceMappingURL=core.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.cjs","sources":["../../../src/maps/column-correlation/core.ts"],"sourcesContent":["import {\n useMapClickHandler,\n useMapEaseTo,\n useMapStyleOperator,\n useOverlayStyle,\n} from \"@macrostrat/mapbox-react\";\nimport { LngLatBounds, Style } from \"mapbox-gl\";\nimport h from \"@macrostrat/hyper\";\nimport { Feature, FeatureCollection } from \"geojson\";\nimport { ReactNode, useMemo, useRef } from \"react\";\nimport { setGeoJSON, buildGeoJSONSource } from \"@macrostrat/mapbox-utils\";\n\nimport { useCorrelationMapStore } from \"./state\";\nimport { InsetMap, type InsetMapProps } from \"../inset-map\";\nimport { BaseColumnsLayer } from \"../layers\";\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 return h(\n InsetMap,\n {\n ...rest,\n boxZoom: false,\n dragRotate: false,\n },\n [\n h(ColumnsLayer, { color: columnColor }),\n h(SelectedColumnsLayer),\n h(MapClickHandler),\n h(ColumnInteractionHandler),\n h(HoveredColumnHighlight),\n h(ColumnZoomer, { padding }),\n h(SectionLine, { padding }),\n children,\n ],\n );\n}\n\nfunction ColumnZoomer({ padding }: { padding: number }) {\n /** Frame a single column when `zoomColumn` is set (e.g. header click). */\n const zoomColumn = useCorrelationMapStore((state) => state.zoomColumn);\n const zoomNonce = useCorrelationMapStore((state) => state.zoomNonce);\n const columns = useCorrelationMapStore((state) => state.columns);\n\n const bounds = useMemo(() => {\n if (zoomColumn == null || columns == null) return null;\n const col = columns.find((c) => c.properties?.col_id === zoomColumn);\n if (col?.geometry == null) return null;\n const b = new LngLatBounds();\n forEachCoordinate(col.geometry, (coord) => b.extend(coord as [number, number]));\n return b.isEmpty() ? null : b;\n // zoomNonce forces a fresh bounds object so repeat clicks re-frame\n }, [zoomColumn, zoomNonce, columns]);\n\n useMapEaseTo({ bounds, padding: padding * 2 });\n return null;\n}\n\nfunction forEachCoordinate(geometry: any, fn: (coord: number[]) => void) {\n const walk = (coords: any) => {\n if (typeof coords[0] === \"number\") {\n fn(coords);\n } else {\n for (const c of coords) walk(c);\n }\n };\n if (geometry?.coordinates != null) walk(geometry.coordinates);\n}\n\nconst columnLayers = [\"columns-fill\", \"columns-points\"];\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 ColumnInteractionHandler() {\n /** Per-column click (manual selection) and hover highlighting. */\n const toggleColumn = useCorrelationMapStore((state) => state.toggleColumn);\n const setHoveredColumn = useCorrelationMapStore(\n (state) => state.setHoveredColumn,\n );\n const isManual = useCorrelationMapStore(\n (state) => state.selectionMode === \"manual\",\n );\n const hoveredRef = useRef<number | string | null>(null);\n\n // Click a column to toggle it in/out of the selection (manual mode only)\n useMapStyleOperator(\n (map) => {\n if (!isManual) return;\n const onClick = (e) => {\n const colID = e.features?.[0]?.properties?.col_id;\n if (colID != null) toggleColumn(colID);\n };\n map.on(\"click\", columnLayers, onClick);\n return () => map.off(\"click\", columnLayers, onClick);\n },\n [isManual, toggleColumn],\n );\n\n // Hover highlighting (via the columns layer's `hover` feature-state)\n useMapStyleOperator(\n (map) => {\n const clearHover = () => {\n if (hoveredRef.current != null) {\n map.setFeatureState(\n { source: \"columns\", id: hoveredRef.current },\n { hover: false },\n );\n hoveredRef.current = null;\n }\n };\n const onMove = (e) => {\n const f = e.features?.[0];\n if (f == null) return;\n if (hoveredRef.current !== f.id) {\n clearHover();\n map.setFeatureState({ source: \"columns\", id: f.id }, { hover: true });\n hoveredRef.current = f.id;\n }\n setHoveredColumn(f.properties?.col_id ?? null);\n map.getCanvas().style.cursor = \"pointer\";\n };\n const onLeave = () => {\n clearHover();\n setHoveredColumn(null);\n map.getCanvas().style.cursor = \"\";\n };\n map.on(\"mousemove\", columnLayers, onMove);\n map.on(\"mouseleave\", columnLayers, onLeave);\n return () => {\n map.off(\"mousemove\", columnLayers, onMove);\n map.off(\"mouseleave\", columnLayers, onLeave);\n clearHover();\n };\n },\n [setHoveredColumn],\n );\n\n return null;\n}\n\nfunction HoveredColumnHighlight() {\n /** Reflects the store's `hoveredColumn` on the map (e.g. when a column is\n * hovered elsewhere in the UI) using the `highlighted` feature-state. */\n const hoveredColumn = useCorrelationMapStore((state) => state.hoveredColumn);\n const columns = useCorrelationMapStore((state) => state.columns);\n const appliedRef = useRef<number | string | null>(null);\n\n useMapStyleOperator(\n (map) => {\n if (appliedRef.current != null) {\n map.setFeatureState(\n { source: \"columns\", id: appliedRef.current },\n { highlighted: false },\n );\n appliedRef.current = null;\n }\n if (hoveredColumn == null || columns == null) return;\n const col = columns.find((c) => c.properties?.col_id === hoveredColumn);\n const id = (col as any)?.id ?? col?.properties?.col_id;\n if (id == null) return;\n map.setFeatureState({ source: \"columns\", id }, { highlighted: true });\n appliedRef.current = id;\n },\n [hoveredColumn, columns],\n );\n\n return null;\n}\n\nfunction SelectedColumnsLayer() {\n useOverlayStyle(() => selectedColumnsStyle, []);\n\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, color }) {\n const columns = useCorrelationMapStore((state) => state.columns);\n return h(BaseColumnsLayer, { enabled, color, columns });\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 useOverlayStyle(() => lineOfSectionStyle, []);\n const focusedLine = useCorrelationMapStore((state) => state.focusedLine);\n const focusedColumns = useCorrelationMapStore(\n (state) => state.focusedColumns,\n );\n\n // Setup focused line (only drawn in line-of-section mode)\n useMapStyleOperator(\n (map) => {\n if (focusedLine == null) {\n // Clear any previously-drawn line (e.g. after switching to manual mode)\n setGeoJSON(map, \"crossSectionLine\", emptyFeatureCollection);\n setGeoJSON(map, \"crossSectionEndpoints\", emptyFeatureCollection);\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 // In line mode, frame the line; in manual mode, frame the selected columns\n const coords: number[][] =\n focusedLine != null && focusedLine.coordinates.length >= 2\n ? focusedLine.coordinates\n : focusedColumns.map((c) => c.properties.centroid.geometry.coordinates);\n if (coords.length < 2) return null;\n const bounds = new LngLatBounds();\n for (const coord of coords) {\n bounds.extend(coord as [number, number]);\n }\n return bounds;\n }, [focusedLine, focusedColumns]);\n\n useMapEaseTo({ bounds, padding, trackResize: true });\n\n return null;\n}\n\nconst emptyFeatureCollection: FeatureCollection = {\n type: \"FeatureCollection\",\n features: [],\n};\n"],"names":["h","InsetMap","useCorrelationMapStore","state","columns","useMemo","LngLatBounds","useMapEaseTo","useMapClickHandler","useRef","useMapStyleOperator","useOverlayStyle","setGeoJSON","BaseColumnsLayer","buildGeoJSONSource","buildCrossSectionLayers","bounds"],"mappings":";;;;;;;;;;;;;AAwBO,SAAS,qBAAqB,OAA4B;AAC/D,QAAM,EAAE,UAAU,IAAI,UAAU,aAAa,WAAW,GAAG,SAAS;AAEpE,SAAOA,WAAAA;AAAAA,IACLC,MAAAA;AAAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,SAAS;AAAA,MACT,YAAY;AAAA,IAAA;AAAA,IAEd;AAAA,MACED,WAAAA,QAAE,cAAc,EAAE,OAAO,aAAa;AAAA,MACtCA,WAAAA,QAAE,oBAAoB;AAAA,MACtBA,WAAAA,QAAE,eAAe;AAAA,MACjBA,WAAAA,QAAE,wBAAwB;AAAA,MAC1BA,WAAAA,QAAE,sBAAsB;AAAA,MACxBA,mBAAE,cAAc,EAAE,SAAS;AAAA,MAC3BA,mBAAE,aAAa,EAAE,SAAS;AAAA,MAC1B;AAAA,IAAA;AAAA,EACF;AAEJ;AAEA,SAAS,aAAa,EAAE,WAAgC;AAEtD,QAAM,aAAaE,MAAAA,uBAAuB,CAACC,WAAUA,OAAM,UAAU;AACrE,QAAM,YAAYD,MAAAA,uBAAuB,CAACC,WAAUA,OAAM,SAAS;AACnE,QAAMC,WAAUF,MAAAA,uBAAuB,CAACC,WAAUA,OAAM,OAAO;AAE/D,QAAM,SAASE,MAAAA,QAAQ,MAAM;AAC3B,QAAI,cAAc,QAAQD,YAAW,KAAM,QAAO;AAClD,UAAM,MAAMA,SAAQ,KAAK,CAAC,MAAM,EAAE,YAAY,WAAW,UAAU;AACnE,QAAI,KAAK,YAAY,KAAM,QAAO;AAClC,UAAM,IAAI,IAAIE,sBAAA;AACd,sBAAkB,IAAI,UAAU,CAAC,UAAU,EAAE,OAAO,KAAyB,CAAC;AAC9E,WAAO,EAAE,YAAY,OAAO;AAAA,EAE9B,GAAG,CAAC,YAAY,WAAWF,QAAO,CAAC;AAEnCG,cAAAA,aAAa,EAAE,QAAQ,SAAS,UAAU,GAAG;AAC7C,SAAO;AACT;AAEA,SAAS,kBAAkB,UAAe,IAA+B;AACvE,QAAM,OAAO,CAAC,WAAgB;AAC5B,QAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AACjC,SAAG,MAAM;AAAA,IACX,OAAO;AACL,iBAAW,KAAK,OAAQ,MAAK,CAAC;AAAA,IAChC;AAAA,EACF;AACA,MAAI,UAAU,eAAe,KAAM,MAAK,SAAS,WAAW;AAC9D;AAEA,MAAM,eAAe,CAAC,gBAAgB,gBAAgB;AAEtD,SAAS,kBAAkB;AACzB,QAAM,aAAaL,MAAAA,uBAAuB,CAACC,WAAUA,OAAM,UAAU;AAErEK,cAAAA;AAAAA,IACE,CAAC,MAAM;AACL,iBAAW,GAAG,EAAE,MAAM,SAAS,aAAa,EAAE,OAAO,QAAA,GAAW;AAAA,IAClE;AAAA,IACA,CAAC,UAAU;AAAA,EAAA;AAGb,SAAO;AACT;AAEA,SAAS,2BAA2B;AAElC,QAAM,eAAeN,MAAAA,uBAAuB,CAACC,WAAUA,OAAM,YAAY;AACzE,QAAM,mBAAmBD,MAAAA;AAAAA,IACvB,CAACC,WAAUA,OAAM;AAAA,EAAA;AAEnB,QAAM,WAAWD,MAAAA;AAAAA,IACf,CAACC,WAAUA,OAAM,kBAAkB;AAAA,EAAA;AAErC,QAAM,aAAaM,MAAAA,OAA+B,IAAI;AAGtDC,cAAAA;AAAAA,IACE,CAAC,QAAQ;AACP,UAAI,CAAC,SAAU;AACf,YAAM,UAAU,CAAC,MAAM;AACrB,cAAM,QAAQ,EAAE,WAAW,CAAC,GAAG,YAAY;AAC3C,YAAI,SAAS,KAAM,cAAa,KAAK;AAAA,MACvC;AACA,UAAI,GAAG,SAAS,cAAc,OAAO;AACrC,aAAO,MAAM,IAAI,IAAI,SAAS,cAAc,OAAO;AAAA,IACrD;AAAA,IACA,CAAC,UAAU,YAAY;AAAA,EAAA;AAIzBA,cAAAA;AAAAA,IACE,CAAC,QAAQ;AACP,YAAM,aAAa,MAAM;AACvB,YAAI,WAAW,WAAW,MAAM;AAC9B,cAAI;AAAA,YACF,EAAE,QAAQ,WAAW,IAAI,WAAW,QAAA;AAAA,YACpC,EAAE,OAAO,MAAA;AAAA,UAAM;AAEjB,qBAAW,UAAU;AAAA,QACvB;AAAA,MACF;AACA,YAAM,SAAS,CAAC,MAAM;AACpB,cAAM,IAAI,EAAE,WAAW,CAAC;AACxB,YAAI,KAAK,KAAM;AACf,YAAI,WAAW,YAAY,EAAE,IAAI;AAC/B,qBAAA;AACA,cAAI,gBAAgB,EAAE,QAAQ,WAAW,IAAI,EAAE,GAAA,GAAM,EAAE,OAAO,KAAA,CAAM;AACpE,qBAAW,UAAU,EAAE;AAAA,QACzB;AACA,yBAAiB,EAAE,YAAY,UAAU,IAAI;AAC7C,YAAI,UAAA,EAAY,MAAM,SAAS;AAAA,MACjC;AACA,YAAM,UAAU,MAAM;AACpB,mBAAA;AACA,yBAAiB,IAAI;AACrB,YAAI,UAAA,EAAY,MAAM,SAAS;AAAA,MACjC;AACA,UAAI,GAAG,aAAa,cAAc,MAAM;AACxC,UAAI,GAAG,cAAc,cAAc,OAAO;AAC1C,aAAO,MAAM;AACX,YAAI,IAAI,aAAa,cAAc,MAAM;AACzC,YAAI,IAAI,cAAc,cAAc,OAAO;AAC3C,mBAAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB;AAAA,EAAA;AAGnB,SAAO;AACT;AAEA,SAAS,yBAAyB;AAGhC,QAAM,gBAAgBR,MAAAA,uBAAuB,CAACC,WAAUA,OAAM,aAAa;AAC3E,QAAMC,WAAUF,MAAAA,uBAAuB,CAACC,WAAUA,OAAM,OAAO;AAC/D,QAAM,aAAaM,MAAAA,OAA+B,IAAI;AAEtDC,cAAAA;AAAAA,IACE,CAAC,QAAQ;AACP,UAAI,WAAW,WAAW,MAAM;AAC9B,YAAI;AAAA,UACF,EAAE,QAAQ,WAAW,IAAI,WAAW,QAAA;AAAA,UACpC,EAAE,aAAa,MAAA;AAAA,QAAM;AAEvB,mBAAW,UAAU;AAAA,MACvB;AACA,UAAI,iBAAiB,QAAQN,YAAW,KAAM;AAC9C,YAAM,MAAMA,SAAQ,KAAK,CAAC,MAAM,EAAE,YAAY,WAAW,aAAa;AACtE,YAAM,KAAM,KAAa,MAAM,KAAK,YAAY;AAChD,UAAI,MAAM,KAAM;AAChB,UAAI,gBAAgB,EAAE,QAAQ,WAAW,MAAM,EAAE,aAAa,MAAM;AACpE,iBAAW,UAAU;AAAA,IACvB;AAAA,IACA,CAAC,eAAeA,QAAO;AAAA,EAAA;AAGzB,SAAO;AACT;AAEA,SAAS,uBAAuB;AAC9BO,8BAAgB,MAAM,sBAAsB,EAAE;AAE9C,QAAM,iBAAiBT,MAAAA;AAAAA,IACrB,CAACC,WAAUA,OAAM;AAAA,EAAA;AAGnBO,cAAAA;AAAAA,IACE,CAAC,QAAQ;AACP,UAAI,WAAW;AAEf,YAAM,OAA0B;AAAA,QAC9B,MAAM;AAAA,QACN;AAAA,MAAA;AAGF,YAAM,qBAA8B;AAAA,QAClC,MAAM;AAAA,QACN,UAAU;AAAA,UACR,MAAM;AAAA,UACN,aAAa,SAAS;AAAA,YACpB,CAAC,QAAQ,IAAI,WAAW,SAAS,SAAS;AAAA,UAAA;AAAA,QAC5C;AAAA,QAEF,YAAY,CAAA;AAAA,MAAC;AAGfE,6BAAW,KAAK,oBAAoB,IAAI;AACxCA,kBAAAA,WAAW,KAAK,6BAA6B;AAAA,QAC3C,MAAM;AAAA,QACN,UAAU,CAAC,kBAAkB;AAAA,MAAA,CAC9B;AAAA,IACH;AAAA,IACA,CAAC,cAAc;AAAA,EAAA;AAEjB,SAAO;AACT;AAEA,SAAS,aAAa,EAAE,UAAU,MAAM,SAAS;AAC/C,QAAMR,YAAUF,MAAAA,uBAAuB,CAACC,WAAUA,OAAM,OAAO;AAC/D,SAAOH,WAAAA,QAAEa,QAAAA,kBAAkB,EAAE,SAAS,OAAA,SAAOT,WAAS;AACxD;AAEA,MAAM,uBAA8B;AAAA,EAClC,SAAS;AAAA,EACT,SAAS;AAAA,IACP,oBAAoBU,YAAAA,mBAAA;AAAA,IACpB,6BAA6BA,YAAAA,mBAAA;AAAA,EAAmB;AAAA,EAElD,QAAQ;AAAA,IACN;AAAA,MACE,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,QACL,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,IAEF;AAAA,MACE,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,QACL,cAAc;AAAA,QACd,cAAc;AAAA,QACd,kBAAkB,CAAC,GAAG,CAAC;AAAA,MAAA;AAAA,IACzB;AAAA,IAEF;AAAA,MACE,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,MAAA;AAAA,IAClB;AAAA,EACF;AAEJ;AAEA,MAAM,qBAA4B;AAAA,EAChC,SAAS;AAAA,EACT,SAAS;AAAA,IACP,iBAAiBA,YAAAA,mBAAA;AAAA,IACjB,kBAAkBA,YAAAA,mBAAA;AAAA,IAClB,uBAAuBA,YAAAA,mBAAA;AAAA,EAAmB;AAAA,EAE5C,QAAQC,UAAAA,wBAAA;AACV;AAEA,SAAS,YAAY,EAAE,WAAgC;AACrDJ,8BAAgB,MAAM,oBAAoB,EAAE;AAC5C,QAAM,cAAcT,MAAAA,uBAAuB,CAACC,WAAUA,OAAM,WAAW;AACvE,QAAM,iBAAiBD,MAAAA;AAAAA,IACrB,CAACC,WAAUA,OAAM;AAAA,EAAA;AAInBO,cAAAA;AAAAA,IACE,CAAC,QAAQ;AACP,UAAI,eAAe,MAAM;AAEvBE,+BAAW,KAAK,oBAAoB,sBAAsB;AAC1DA,+BAAW,KAAK,yBAAyB,sBAAsB;AAC/D;AAAA,MACF;AACA,YAAM,OAA0B;AAAA,QAC9B,MAAM;AAAA,QACN,UAAU;AAAA,UACR;AAAA,YACE,MAAM;AAAA,YACN,UAAU;AAAA,YACV,YAAY,EAAE,IAAI,cAAA;AAAA,UAAc;AAAA,QAClC;AAAA,MACF;AAGFA,6BAAW,KAAK,oBAAoB,IAAI;AACxCA,kBAAAA,WAAW,KAAK,yBAAyB;AAAA,QACvC,MAAM;AAAA,QACN,UAAU,YAAY,YAAY,IAAI,CAAC,WAAW;AAAA,UAChD,MAAM;AAAA,UACN,UAAU,EAAE,MAAM,SAAS,aAAa,MAAA;AAAA,UACxC,YAAY,CAAA;AAAA,QAAC,EACb;AAAA,MAAA,CACH;AAAA,IACH;AAAA,IACA,CAAC,WAAW;AAAA,EAAA;AAGd,QAAM,SAASP,MAAAA,QAAQ,MAAM;AAE3B,UAAM,SACJ,eAAe,QAAQ,YAAY,YAAY,UAAU,IACrD,YAAY,cACZ,eAAe,IAAI,CAAC,MAAM,EAAE,WAAW,SAAS,SAAS,WAAW;AAC1E,QAAI,OAAO,SAAS,EAAG,QAAO;AAC9B,UAAMW,UAAS,IAAIV,sBAAA;AACnB,eAAW,SAAS,QAAQ;AAC1BU,cAAO,OAAO,KAAyB;AAAA,IACzC;AACA,WAAOA;AAAAA,EACT,GAAG,CAAC,aAAa,cAAc,CAAC;AAEhCT,cAAAA,aAAa,EAAE,QAAQ,SAAS,aAAa,MAAM;AAEnD,SAAO;AACT;AAEA,MAAM,yBAA4C;AAAA,EAChD,MAAM;AAAA,EACN,UAAU,CAAA;AACZ;;"}
@@ -1,9 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { InsetMapProps } from '../inset-map';
3
- export interface CorrelationMapProps extends InsetMapProps {
4
- padding?: number;
5
- children?: ReactNode;
6
- accessToken?: string;
7
- columnColor?: string;
8
- }
9
- export declare function ColumnCorrelationMap(props: CorrelationMapProps): import('react').FunctionComponentElement<InsetMapProps>;