@macrostrat/column-views 3.8.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 (173) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/dist/animated-age-window.cjs +51 -0
  3. package/dist/animated-age-window.cjs.map +1 -0
  4. package/dist/animated-age-window.d.ts +51 -0
  5. package/dist/animated-age-window.js +51 -0
  6. package/dist/animated-age-window.js.map +1 -0
  7. package/dist/column.cjs +11 -1
  8. package/dist/column.cjs.map +1 -1
  9. package/dist/column.d.ts +11 -0
  10. package/dist/column.js +11 -1
  11. package/dist/column.js.map +1 -1
  12. package/dist/correlation-chart/main.cjs +24 -12
  13. package/dist/correlation-chart/main.cjs.map +1 -1
  14. package/dist/correlation-chart/main.d.ts +8 -1
  15. package/dist/correlation-chart/main.js +24 -12
  16. package/dist/correlation-chart/main.js.map +1 -1
  17. package/dist/data-provider/store.cjs +17 -4
  18. package/dist/data-provider/store.cjs.map +1 -1
  19. package/dist/data-provider/store.d.ts +6 -1
  20. package/dist/data-provider/store.js +17 -4
  21. package/dist/data-provider/store.js.map +1 -1
  22. package/dist/index.cjs +17 -42
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.ts +3 -1
  25. package/dist/index.js +3 -34
  26. package/dist/index.js.map +1 -1
  27. package/dist/prepare-units/composite-scale.cjs +94 -8
  28. package/dist/prepare-units/composite-scale.cjs.map +1 -1
  29. package/dist/prepare-units/composite-scale.d.ts +39 -0
  30. package/dist/prepare-units/composite-scale.js +96 -10
  31. package/dist/prepare-units/composite-scale.js.map +1 -1
  32. package/dist/prepare-units/helpers.cjs +0 -1
  33. package/dist/prepare-units/helpers.cjs.map +1 -1
  34. package/dist/prepare-units/helpers.js +0 -1
  35. package/dist/prepare-units/helpers.js.map +1 -1
  36. package/dist/prepare-units/index.cjs +33 -12
  37. package/dist/prepare-units/index.cjs.map +1 -1
  38. package/dist/prepare-units/index.js +34 -13
  39. package/dist/prepare-units/index.js.map +1 -1
  40. package/dist/prepare-units/types.cjs.map +1 -1
  41. package/dist/prepare-units/types.d.ts +13 -0
  42. package/dist/prepare-units/types.js.map +1 -1
  43. package/dist/section.cjs +4 -2
  44. package/dist/section.cjs.map +1 -1
  45. package/dist/section.d.ts +4 -1
  46. package/dist/section.js +4 -2
  47. package/dist/section.js.map +1 -1
  48. package/dist/units/boxes.cjs +22 -39
  49. package/dist/units/boxes.cjs.map +1 -1
  50. package/dist/units/boxes.js +24 -41
  51. package/dist/units/boxes.js.map +1 -1
  52. package/dist/units/composite.cjs +12 -12
  53. package/dist/units/composite.cjs.map +1 -1
  54. package/dist/units/composite.js +12 -12
  55. package/dist/units/composite.js.map +1 -1
  56. package/dist/units/index.cjs +7 -11
  57. package/dist/units/index.cjs.map +1 -1
  58. package/dist/units/index.d.ts +0 -1
  59. package/dist/units/index.js +4 -9
  60. package/dist/units/index.js.map +1 -1
  61. package/package.json +10 -31
  62. package/src/animated-age-window.ts +120 -0
  63. package/src/column.ts +24 -0
  64. package/src/correlation-chart/main.ts +30 -8
  65. package/src/data-provider/store.ts +21 -2
  66. package/src/index.ts +4 -1
  67. package/src/prepare-units/composite-scale.ts +210 -10
  68. package/src/prepare-units/helpers.ts +0 -2
  69. package/src/prepare-units/index.ts +68 -14
  70. package/src/prepare-units/types.ts +13 -0
  71. package/src/section.ts +6 -0
  72. package/src/units/boxes.ts +37 -56
  73. package/src/units/composite.ts +21 -12
  74. package/src/units/index.ts +9 -26
  75. package/dist/maps/column-correlation/core.cjs +0 -288
  76. package/dist/maps/column-correlation/core.cjs.map +0 -1
  77. package/dist/maps/column-correlation/core.d.ts +0 -9
  78. package/dist/maps/column-correlation/core.js +0 -286
  79. package/dist/maps/column-correlation/core.js.map +0 -1
  80. package/dist/maps/column-correlation/index.d.ts +0 -2
  81. package/dist/maps/column-correlation/state.cjs +0 -193
  82. package/dist/maps/column-correlation/state.cjs.map +0 -1
  83. package/dist/maps/column-correlation/state.d.ts +0 -62
  84. package/dist/maps/column-correlation/state.js +0 -190
  85. package/dist/maps/column-correlation/state.js.map +0 -1
  86. package/dist/maps/column-navigation/index.d.ts +0 -2
  87. package/dist/maps/column-navigation/mapbox/index.cjs +0 -215
  88. package/dist/maps/column-navigation/mapbox/index.cjs.map +0 -1
  89. package/dist/maps/column-navigation/mapbox/index.d.ts +0 -38
  90. package/dist/maps/column-navigation/mapbox/index.js +0 -213
  91. package/dist/maps/column-navigation/mapbox/index.js.map +0 -1
  92. package/dist/maps/column-navigation/mapbox/keyboard-navigation.cjs +0 -105
  93. package/dist/maps/column-navigation/mapbox/keyboard-navigation.cjs.map +0 -1
  94. package/dist/maps/column-navigation/mapbox/keyboard-navigation.d.ts +0 -8
  95. package/dist/maps/column-navigation/mapbox/keyboard-navigation.js +0 -105
  96. package/dist/maps/column-navigation/mapbox/keyboard-navigation.js.map +0 -1
  97. package/dist/maps/column-navigation/mapbox/state.cjs +0 -73
  98. package/dist/maps/column-navigation/mapbox/state.cjs.map +0 -1
  99. package/dist/maps/column-navigation/mapbox/state.d.ts +0 -23
  100. package/dist/maps/column-navigation/mapbox/state.js +0 -71
  101. package/dist/maps/column-navigation/mapbox/state.js.map +0 -1
  102. package/dist/maps/column-navigation/svg/animated.d.ts +0 -1
  103. package/dist/maps/column-navigation/svg/data-fetcher.cjs +0 -25
  104. package/dist/maps/column-navigation/svg/data-fetcher.cjs.map +0 -1
  105. package/dist/maps/column-navigation/svg/data-fetcher.d.ts +0 -6
  106. package/dist/maps/column-navigation/svg/data-fetcher.js +0 -25
  107. package/dist/maps/column-navigation/svg/data-fetcher.js.map +0 -1
  108. package/dist/maps/column-navigation/svg/index.cjs +0 -94
  109. package/dist/maps/column-navigation/svg/index.cjs.map +0 -1
  110. package/dist/maps/column-navigation/svg/index.d.ts +0 -9
  111. package/dist/maps/column-navigation/svg/index.js +0 -93
  112. package/dist/maps/column-navigation/svg/index.js.map +0 -1
  113. package/dist/maps/column-navigation/svg/layers.cjs +0 -177
  114. package/dist/maps/column-navigation/svg/layers.cjs.map +0 -1
  115. package/dist/maps/column-navigation/svg/layers.d.ts +0 -54
  116. package/dist/maps/column-navigation/svg/layers.js +0 -174
  117. package/dist/maps/column-navigation/svg/layers.js.map +0 -1
  118. package/dist/maps/column-navigation/utils/keyboard-navigation.cjs +0 -50
  119. package/dist/maps/column-navigation/utils/keyboard-navigation.cjs.map +0 -1
  120. package/dist/maps/column-navigation/utils/keyboard-navigation.d.ts +0 -10
  121. package/dist/maps/column-navigation/utils/keyboard-navigation.js +0 -50
  122. package/dist/maps/column-navigation/utils/keyboard-navigation.js.map +0 -1
  123. package/dist/maps/index.d.ts +0 -4
  124. package/dist/maps/inset-map/index.cjs +0 -71
  125. package/dist/maps/inset-map/index.cjs.map +0 -1
  126. package/dist/maps/inset-map/index.d.ts +0 -16
  127. package/dist/maps/inset-map/index.js +0 -69
  128. package/dist/maps/inset-map/index.js.map +0 -1
  129. package/dist/maps/layers/columns.cjs +0 -165
  130. package/dist/maps/layers/columns.cjs.map +0 -1
  131. package/dist/maps/layers/columns.d.ts +0 -28
  132. package/dist/maps/layers/columns.js +0 -165
  133. package/dist/maps/layers/columns.js.map +0 -1
  134. package/dist/maps/layers/index.d.ts +0 -2
  135. package/dist/maps/layers/units.cjs +0 -207
  136. package/dist/maps/layers/units.cjs.map +0 -1
  137. package/dist/maps/layers/units.d.ts +0 -14
  138. package/dist/maps/layers/units.js +0 -204
  139. package/dist/maps/layers/units.js.map +0 -1
  140. package/dist/units/colors.cjs +0 -115
  141. package/dist/units/colors.cjs.map +0 -1
  142. package/dist/units/colors.d.ts +0 -20
  143. package/dist/units/colors.js +0 -113
  144. package/dist/units/colors.js.map +0 -1
  145. package/dist/units/resolvers.cjs +0 -125
  146. package/dist/units/resolvers.cjs.map +0 -1
  147. package/dist/units/resolvers.d.ts +0 -8
  148. package/dist/units/resolvers.js +0 -125
  149. package/dist/units/resolvers.js.map +0 -1
  150. package/src/maps/column-correlation/column-correlation-map.stories.ts +0 -108
  151. package/src/maps/column-correlation/core.ts +0 -342
  152. package/src/maps/column-correlation/index.ts +0 -2
  153. package/src/maps/column-correlation/state.ts +0 -315
  154. package/src/maps/column-navigation/index.ts +0 -2
  155. package/src/maps/column-navigation/mapbox/column-navigation-map.stories.ts +0 -278
  156. package/src/maps/column-navigation/mapbox/index.ts +0 -276
  157. package/src/maps/column-navigation/mapbox/keyboard-navigation.ts +0 -133
  158. package/src/maps/column-navigation/mapbox/state.ts +0 -119
  159. package/src/maps/column-navigation/svg/animated.ts +0 -78
  160. package/src/maps/column-navigation/svg/column-navigation-svg-map.stories.ts +0 -46
  161. package/src/maps/column-navigation/svg/data-fetcher.ts +0 -34
  162. package/src/maps/column-navigation/svg/index.ts +0 -96
  163. package/src/maps/column-navigation/svg/layers.ts +0 -233
  164. package/src/maps/column-navigation/utils/keyboard-navigation.ts +0 -58
  165. package/src/maps/index.ts +0 -4
  166. package/src/maps/inset-map/index.ts +0 -87
  167. package/src/maps/inset-map/inset-map.stories.ts +0 -20
  168. package/src/maps/layers/columns.ts +0 -216
  169. package/src/maps/layers/index.ts +0 -2
  170. package/src/maps/layers/units.ts +0 -286
  171. package/src/maps/unit-map.stories.ts +0 -79
  172. package/src/units/colors.ts +0 -183
  173. package/src/units/resolvers.ts +0 -141
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.js","sources":["../../../../src/maps/column-navigation/mapbox/state.ts"],"sourcesContent":["import { create, StoreApi, useStore } from \"zustand\";\nimport type { ColumnGeoJSONRecordWithID } from \"@macrostrat/api-types\";\nimport {\n createContext,\n useState,\n useContext,\n ReactNode,\n useEffect,\n useMemo,\n} from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport {\n useMacrostratColumns,\n useMacrostratStore,\n} from \"@macrostrat/data-provider\";\n\nexport interface NavigationStore {\n columns: ColumnGeoJSONRecordWithID[];\n selectedColumn: number | null;\n hoveredColumn: number | null;\n selectColumn: (columnID: number | null) => void;\n setHoveredColumn: (columnID: number | null) => void;\n}\n\nexport interface NavigationProviderProps {\n projectID?: number;\n inProcess?: boolean;\n selectedColumn?: number | null;\n hoveredColumn?: number | null;\n columns?: ColumnGeoJSONRecordWithID[] | null;\n columnIDs?: number[] | null;\n children: ReactNode;\n onSelectColumn?: (col_id: number | null, column: any) => void;\n onHoverColumn?: (col_id: number | null, column: any) => void;\n}\n\nconst NavigationStoreContext = createContext<StoreApi<NavigationStore> | null>(\n null,\n);\n\nexport function ColumnNavigationProvider({\n children,\n columns,\n columnIDs,\n selectedColumn,\n projectID,\n inProcess,\n onSelectColumn,\n onHoverColumn,\n}: NavigationProviderProps) {\n const getColumns = useMacrostratStore((s) => s.getColumns);\n\n const [store] = useState(() => {\n return create<NavigationStore>((set, get): NavigationStore => {\n return {\n columns: null,\n selectedColumn: null,\n hoveredColumn: null,\n selectColumn(columnID: number | null) {\n set({ selectedColumn: columnID, hoveredColumn: null });\n const { columns } = get();\n const column = columns?.find((d) => d.id == columnID);\n onSelectColumn?.(columnID, column);\n },\n setHoveredColumn(columnID: number | null) {\n set({ hoveredColumn: columnID });\n const { columns } = get();\n const column = columns?.find((d) => d.id == columnID);\n onHoverColumn?.(columnID, column);\n },\n };\n });\n });\n\n // Set up the store\n /** TODO: unify handling of columns between parts of application */\n // useAsyncEffect(async () => {\n // let _columns = columns ?? (await getColumns(projectID, inProcess));\n // store.setState({ columns: _columns, selectedColumn });\n // }, [projectID, inProcess, columns, getColumns]);\n\n let _columns = columns ?? useMacrostratColumns(projectID, inProcess);\n\n // filter columns if specified\n if (columnIDs?.length > 0) {\n _columns = useMemo(() => {\n return _columns?.filter((d) => columnIDs.includes(d.properties.col_id));\n }, [columnIDs, _columns]);\n }\n\n useEffect(() => {\n if (_columns?.length > 0) {\n store.setState({ columns: _columns, selectedColumn });\n }\n }, [_columns]);\n // Update selected column if it is changed externally\n\n // Kind of an awkward way to do this but we need to allow the selector to run\n useEffect(() => {\n const { selectColumn, selectedColumn: _internalSelectedColumn } =\n store.getState();\n if (selectedColumn == _internalSelectedColumn) {\n return;\n }\n selectColumn(selectedColumn);\n }, [selectedColumn]);\n\n return h(NavigationStoreContext.Provider, { value: store }, children);\n}\n\nexport function useColumnNavigationStore(\n selector: (state: NavigationStore) => any,\n) {\n const storeApi = useContext(NavigationStoreContext);\n if (storeApi == null) {\n throw new Error(\"Missing ColumnNavigationProvider\");\n }\n return useStore(storeApi, selector);\n}\n"],"names":["columns"],"mappings":";;;;AAoCA,MAAM,yBAAyB;AAAA,EAC7B;AACF;AAEO,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA4B;AACP,qBAAmB,CAAC,MAAM,EAAE,UAAU;AAEzD,QAAM,CAAC,KAAK,IAAI,SAAS,MAAM;AAC7B,WAAO,OAAwB,CAAC,KAAK,QAAyB;AAC5D,aAAO;AAAA,QACL,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACf,aAAa,UAAyB;AACpC,cAAI,EAAE,gBAAgB,UAAU,eAAe,MAAM;AACrD,gBAAM,EAAE,SAAAA,SAAAA,IAAY,IAAA;AACpB,gBAAM,SAASA,UAAS,KAAK,CAAC,MAAM,EAAE,MAAM,QAAQ;AACpD,2BAAiB,UAAU,MAAM;AAAA,QACnC;AAAA,QACA,iBAAiB,UAAyB;AACxC,cAAI,EAAE,eAAe,UAAU;AAC/B,gBAAM,EAAE,SAAAA,SAAAA,IAAY,IAAA;AACpB,gBAAM,SAASA,UAAS,KAAK,CAAC,MAAM,EAAE,MAAM,QAAQ;AACpD,0BAAgB,UAAU,MAAM;AAAA,QAClC;AAAA,MAAA;AAAA,IAEJ,CAAC;AAAA,EACH,CAAC;AASD,MAAI,WAAW,WAAW,qBAAqB,WAAW,SAAS;AAGnE,MAAI,WAAW,SAAS,GAAG;AACzB,eAAW,QAAQ,MAAM;AACvB,aAAO,UAAU,OAAO,CAAC,MAAM,UAAU,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,IACxE,GAAG,CAAC,WAAW,QAAQ,CAAC;AAAA,EAC1B;AAEA,YAAU,MAAM;AACd,QAAI,UAAU,SAAS,GAAG;AACxB,YAAM,SAAS,EAAE,SAAS,UAAU,gBAAgB;AAAA,IACtD;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAIb,YAAU,MAAM;AACd,UAAM,EAAE,cAAc,gBAAgB,wBAAA,IACpC,MAAM,SAAA;AACR,QAAI,kBAAkB,yBAAyB;AAC7C;AAAA,IACF;AACA,iBAAa,cAAc;AAAA,EAC7B,GAAG,CAAC,cAAc,CAAC;AAEnB,SAAO,EAAE,uBAAuB,UAAU,EAAE,OAAO,MAAA,GAAS,QAAQ;AACtE;AAEO,SAAS,yBACd,UACA;AACA,QAAM,WAAW,WAAW,sBAAsB;AAClD,MAAI,YAAY,MAAM;AACpB,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AACA,SAAO,SAAS,UAAU,QAAQ;AACpC;"}
@@ -1 +0,0 @@
1
- export declare const AnimatedMapView: (props: any) => import('react').FunctionComponentElement<any>;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const dataProvider = require("@macrostrat/data-provider");
4
- const uiComponents = require("@macrostrat/ui-components");
5
- function useColumnFeatures({
6
- status_code,
7
- project_id,
8
- format = "geojson"
9
- }) {
10
- const fetch = dataProvider.useMacrostratFetch();
11
- let statusCode = ["active"];
12
- if (status_code == "in process") {
13
- statusCode.push("in process");
14
- }
15
- return uiComponents.useAsyncMemo(async () => {
16
- return await dataProvider.fetchAllColumns({
17
- projectID: project_id,
18
- statusCode,
19
- format,
20
- fetch
21
- });
22
- }, [project_id, status_code, format]);
23
- }
24
- exports.useColumnFeatures = useColumnFeatures;
25
- //# sourceMappingURL=data-fetcher.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-fetcher.cjs","sources":["../../../../src/maps/column-navigation/svg/data-fetcher.ts"],"sourcesContent":["import {\n ColumnStatusCode,\n fetchAllColumns,\n useMacrostratFetch,\n} from \"@macrostrat/data-provider\";\nimport { useAsyncMemo } from \"@macrostrat/ui-components\";\n\nexport function useColumnFeatures({\n status_code,\n project_id,\n format = \"geojson\",\n}: {\n apiRoute?: string;\n status_code?: string;\n project_id?: number;\n format?: \"geojson\" | \"topojson\" | \"geojson_bare\";\n}) {\n /** Legacy fetcher for column features */\n const fetch = useMacrostratFetch();\n\n let statusCode: ColumnStatusCode[] = [\"active\"];\n if (status_code == \"in process\") {\n statusCode.push(\"in process\");\n }\n\n return useAsyncMemo(async () => {\n return await fetchAllColumns({\n projectID: project_id,\n statusCode: statusCode,\n format,\n fetch,\n });\n }, [project_id, status_code, format]);\n}\n"],"names":["useMacrostratFetch","useAsyncMemo","fetchAllColumns"],"mappings":";;;;AAOO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA,SAAS;AACX,GAKG;AAED,QAAM,QAAQA,aAAAA,mBAAA;AAEd,MAAI,aAAiC,CAAC,QAAQ;AAC9C,MAAI,eAAe,cAAc;AAC/B,eAAW,KAAK,YAAY;AAAA,EAC9B;AAEA,SAAOC,aAAAA,aAAa,YAAY;AAC9B,WAAO,MAAMC,aAAAA,gBAAgB;AAAA,MAC3B,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EACH,GAAG,CAAC,YAAY,aAAa,MAAM,CAAC;AACtC;;"}
@@ -1,6 +0,0 @@
1
- export declare function useColumnFeatures({ status_code, project_id, format, }: {
2
- apiRoute?: string;
3
- status_code?: string;
4
- project_id?: number;
5
- format?: "geojson" | "topojson" | "geojson_bare";
6
- }): import('@macrostrat/api-types').ColumnGeoJSONRecord[] | null;
@@ -1,25 +0,0 @@
1
- import { useMacrostratFetch, fetchAllColumns } from "@macrostrat/data-provider";
2
- import { useAsyncMemo } from "@macrostrat/ui-components";
3
- function useColumnFeatures({
4
- status_code,
5
- project_id,
6
- format = "geojson"
7
- }) {
8
- const fetch = useMacrostratFetch();
9
- let statusCode = ["active"];
10
- if (status_code == "in process") {
11
- statusCode.push("in process");
12
- }
13
- return useAsyncMemo(async () => {
14
- return await fetchAllColumns({
15
- projectID: project_id,
16
- statusCode,
17
- format,
18
- fetch
19
- });
20
- }, [project_id, status_code, format]);
21
- }
22
- export {
23
- useColumnFeatures
24
- };
25
- //# sourceMappingURL=data-fetcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-fetcher.js","sources":["../../../../src/maps/column-navigation/svg/data-fetcher.ts"],"sourcesContent":["import {\n ColumnStatusCode,\n fetchAllColumns,\n useMacrostratFetch,\n} from \"@macrostrat/data-provider\";\nimport { useAsyncMemo } from \"@macrostrat/ui-components\";\n\nexport function useColumnFeatures({\n status_code,\n project_id,\n format = \"geojson\",\n}: {\n apiRoute?: string;\n status_code?: string;\n project_id?: number;\n format?: \"geojson\" | \"topojson\" | \"geojson_bare\";\n}) {\n /** Legacy fetcher for column features */\n const fetch = useMacrostratFetch();\n\n let statusCode: ColumnStatusCode[] = [\"active\"];\n if (status_code == \"in process\") {\n statusCode.push(\"in process\");\n }\n\n return useAsyncMemo(async () => {\n return await fetchAllColumns({\n projectID: project_id,\n statusCode: statusCode,\n format,\n fetch,\n });\n }, [project_id, status_code, format]);\n}\n"],"names":[],"mappings":";;AAOO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA,SAAS;AACX,GAKG;AAED,QAAM,QAAQ,mBAAA;AAEd,MAAI,aAAiC,CAAC,QAAQ;AAC9C,MAAI,eAAe,cAAc;AAC/B,eAAW,KAAK,YAAY;AAAA,EAC9B;AAEA,SAAO,aAAa,YAAY;AAC9B,WAAO,MAAM,gBAAgB;AAAA,MAC3B,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EACH,GAAG,CAAC,YAAY,aAAa,MAAM,CAAC;AACtC;"}
@@ -1,94 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const React = require("react");
4
- const h = require("@macrostrat/hyper");
5
- const svgMapComponents = require("@macrostrat/svg-map-components");
6
- const d3Geo = require("d3-geo");
7
- const uiComponents = require("@macrostrat/ui-components");
8
- const layers = require("./layers.cjs");
9
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
10
- const h__default = /* @__PURE__ */ _interopDefault(h);
11
- function ResizableMapFrame(props) {
12
- const { center, children, style, margin, className, allowZoom, ...rest } = props;
13
- let { scale } = props;
14
- const ref = React.useRef(null);
15
- const sz = uiComponents.useElementSize(ref);
16
- const { width, height } = sz ?? { width: 0, height: 0 };
17
- if (scale == null) {
18
- scale = Math.min(width, height) + 2 * margin;
19
- }
20
- let zoomScaleExtent = null;
21
- if (allowZoom) {
22
- zoomScaleExtent = [
23
- 0.1 * Math.min(width, height),
24
- 2 * Math.max(width, height)
25
- ];
26
- }
27
- return h__default.default("div.map-area", { ref, style, className }, [
28
- h__default.default(
29
- svgMapComponents.Globe,
30
- {
31
- width,
32
- height,
33
- margin,
34
- center,
35
- allowDrag: true,
36
- allowZoom,
37
- keepNorthUp: true,
38
- zoomScaleExtent,
39
- ...rest,
40
- scale
41
- },
42
- [h__default.default(svgMapComponents.LandLayer), children]
43
- )
44
- ]);
45
- }
46
- function ColumnNavigationSVGMap(props) {
47
- const {
48
- currentColumn,
49
- setCurrentColumn,
50
- children,
51
- style,
52
- margin = 10,
53
- scale,
54
- className,
55
- showInProcessColumns = false,
56
- showDebugLayers = false,
57
- center,
58
- ...rest
59
- } = props;
60
- let _center = center ?? [-100, 38];
61
- if (currentColumn != null) {
62
- _center = d3Geo.geoCentroid(currentColumn);
63
- }
64
- return h__default.default(
65
- ResizableMapFrame,
66
- { center: _center, style, margin, scale, className },
67
- [
68
- children,
69
- h__default.default(layers.Columns, {
70
- onChange: setCurrentColumn,
71
- col_id: currentColumn?.properties.col_id,
72
- showDebugLayers,
73
- ...rest
74
- }),
75
- h__default.default.if(showInProcessColumns)(layers.Columns, {
76
- onChange: setCurrentColumn,
77
- col_id: currentColumn?.properties.col_id,
78
- status_code: "in process",
79
- color: "rgba(200,150,150, 0.5)",
80
- ...rest
81
- }),
82
- h__default.default.if(currentColumn != null)(layers.CurrentColumn, { feature: currentColumn })
83
- ]
84
- );
85
- }
86
- exports.ColumnCenters = layers.ColumnCenters;
87
- exports.ColumnFeatures = layers.ColumnFeatures;
88
- exports.ColumnKeyboardNavigation = layers.ColumnKeyboardNavigation;
89
- exports.Columns = layers.Columns;
90
- exports.CurrentColumn = layers.CurrentColumn;
91
- exports.MeasurementsLayer = layers.MeasurementsLayer;
92
- exports.ColumnNavigationSVGMap = ColumnNavigationSVGMap;
93
- exports.ResizableMapFrame = ResizableMapFrame;
94
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
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;;;;;;;;;"}
@@ -1,9 +0,0 @@
1
- export declare function ResizableMapFrame(props: any): import('react').ReactElement<{
2
- ref: import('react').RefObject<null>;
3
- style: any;
4
- className: any;
5
- }, string | import('react').JSXElementConstructor<any>>;
6
- type ColumnNavigationSVGMapProps = any;
7
- export type { ColumnNavigationSVGMapProps };
8
- export declare function ColumnNavigationSVGMap(props: any): import('react').FunctionComponentElement<any>;
9
- export * from './layers';
@@ -1,93 +0,0 @@
1
- import { useRef } from "react";
2
- import h from "@macrostrat/hyper";
3
- import { Globe, LandLayer } from "@macrostrat/svg-map-components";
4
- import { geoCentroid } from "d3-geo";
5
- import { useElementSize } from "@macrostrat/ui-components";
6
- import { Columns, CurrentColumn } from "./layers.js";
7
- import { ColumnCenters, ColumnFeatures, ColumnKeyboardNavigation, MeasurementsLayer } from "./layers.js";
8
- function ResizableMapFrame(props) {
9
- const { center, children, style, margin, className, allowZoom, ...rest } = props;
10
- let { scale } = props;
11
- const ref = useRef(null);
12
- const sz = useElementSize(ref);
13
- const { width, height } = sz ?? { width: 0, height: 0 };
14
- if (scale == null) {
15
- scale = Math.min(width, height) + 2 * margin;
16
- }
17
- let zoomScaleExtent = null;
18
- if (allowZoom) {
19
- zoomScaleExtent = [
20
- 0.1 * Math.min(width, height),
21
- 2 * Math.max(width, height)
22
- ];
23
- }
24
- return h("div.map-area", { ref, style, className }, [
25
- h(
26
- Globe,
27
- {
28
- width,
29
- height,
30
- margin,
31
- center,
32
- allowDrag: true,
33
- allowZoom,
34
- keepNorthUp: true,
35
- zoomScaleExtent,
36
- ...rest,
37
- scale
38
- },
39
- [h(LandLayer), children]
40
- )
41
- ]);
42
- }
43
- function ColumnNavigationSVGMap(props) {
44
- const {
45
- currentColumn,
46
- setCurrentColumn,
47
- children,
48
- style,
49
- margin = 10,
50
- scale,
51
- className,
52
- showInProcessColumns = false,
53
- showDebugLayers = false,
54
- center,
55
- ...rest
56
- } = props;
57
- let _center = center ?? [-100, 38];
58
- if (currentColumn != null) {
59
- _center = geoCentroid(currentColumn);
60
- }
61
- return h(
62
- ResizableMapFrame,
63
- { center: _center, style, margin, scale, className },
64
- [
65
- children,
66
- h(Columns, {
67
- onChange: setCurrentColumn,
68
- col_id: currentColumn?.properties.col_id,
69
- showDebugLayers,
70
- ...rest
71
- }),
72
- h.if(showInProcessColumns)(Columns, {
73
- onChange: setCurrentColumn,
74
- col_id: currentColumn?.properties.col_id,
75
- status_code: "in process",
76
- color: "rgba(200,150,150, 0.5)",
77
- ...rest
78
- }),
79
- h.if(currentColumn != null)(CurrentColumn, { feature: currentColumn })
80
- ]
81
- );
82
- }
83
- export {
84
- ColumnCenters,
85
- ColumnFeatures,
86
- ColumnKeyboardNavigation,
87
- ColumnNavigationSVGMap,
88
- Columns,
89
- CurrentColumn,
90
- MeasurementsLayer,
91
- ResizableMapFrame
92
- };
93
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/maps/column-navigation/svg/index.ts"],"sourcesContent":["import { useRef } from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport { Globe, LandLayer } from \"@macrostrat/svg-map-components\";\nimport { geoCentroid } from \"d3-geo\";\nimport { useElementSize } from \"@macrostrat/ui-components\";\nimport { Columns, CurrentColumn } from \"./layers\";\nimport type { LngLatLike } from \"mapbox-gl\";\n\nexport function ResizableMapFrame(props) {\n const { center, children, style, margin, className, allowZoom, ...rest } =\n props;\n let { scale } = props;\n const ref = useRef(null);\n const sz = useElementSize(ref);\n const { width, height } = sz ?? { width: 0, height: 0 };\n if (scale == null) {\n scale = Math.min(width, height) + 2 * margin;\n }\n\n let zoomScaleExtent = null;\n\n if (allowZoom) {\n zoomScaleExtent = [\n 0.1 * Math.min(width, height),\n 2 * Math.max(width, height),\n ];\n }\n\n return h(\"div.map-area\", { ref, style, className }, [\n h(\n Globe,\n {\n width,\n height,\n margin,\n center,\n allowDrag: true,\n allowZoom,\n keepNorthUp: true,\n zoomScaleExtent,\n ...rest,\n scale,\n },\n [h(LandLayer), children],\n ),\n ]);\n}\n\ntype ColumnNavigationSVGMapProps = any;\nexport type { ColumnNavigationSVGMapProps };\n\nexport function ColumnNavigationSVGMap(props) {\n const {\n currentColumn,\n setCurrentColumn,\n children,\n style,\n margin = 10,\n scale,\n className,\n showInProcessColumns = false,\n showDebugLayers = false,\n center,\n ...rest\n } = props;\n\n let _center: LngLatLike | null = center ?? [-100, 38];\n // Override center if currentColumn is set\n if (currentColumn != null) {\n _center = geoCentroid(currentColumn);\n }\n\n return h(\n ResizableMapFrame,\n { center: _center, style, margin, scale, className },\n [\n children,\n h(Columns, {\n onChange: setCurrentColumn,\n col_id: currentColumn?.properties.col_id,\n showDebugLayers,\n ...rest,\n }),\n h.if(showInProcessColumns)(Columns, {\n onChange: setCurrentColumn,\n col_id: currentColumn?.properties.col_id,\n status_code: \"in process\",\n color: \"rgba(200,150,150, 0.5)\",\n ...rest,\n }),\n h.if(currentColumn != null)(CurrentColumn, { feature: currentColumn }),\n ],\n );\n}\n\nexport * from \"./layers\";\n"],"names":[],"mappings":";;;;;;;AAQO,SAAS,kBAAkB,OAAO;AACvC,QAAM,EAAE,QAAQ,UAAU,OAAO,QAAQ,WAAW,WAAW,GAAG,KAAA,IAChE;AACF,MAAI,EAAE,UAAU;AAChB,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,KAAK,eAAe,GAAG;AAC7B,QAAM,EAAE,OAAO,WAAW,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAA;AACpD,MAAI,SAAS,MAAM;AACjB,YAAQ,KAAK,IAAI,OAAO,MAAM,IAAI,IAAI;AAAA,EACxC;AAEA,MAAI,kBAAkB;AAEtB,MAAI,WAAW;AACb,sBAAkB;AAAA,MAChB,MAAM,KAAK,IAAI,OAAO,MAAM;AAAA,MAC5B,IAAI,KAAK,IAAI,OAAO,MAAM;AAAA,IAAA;AAAA,EAE9B;AAEA,SAAO,EAAE,gBAAgB,EAAE,KAAK,OAAO,aAAa;AAAA,IAClD;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,aAAa;AAAA,QACb;AAAA,QACA,GAAG;AAAA,QACH;AAAA,MAAA;AAAA,MAEF,CAAC,EAAE,SAAS,GAAG,QAAQ;AAAA,IAAA;AAAA,EACzB,CACD;AACH;AAKO,SAAS,uBAAuB,OAAO;AAC5C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,uBAAuB;AAAA,IACvB,kBAAkB;AAAA,IAClB;AAAA,IACA,GAAG;AAAA,EAAA,IACD;AAEJ,MAAI,UAA6B,UAAU,CAAC,MAAM,EAAE;AAEpD,MAAI,iBAAiB,MAAM;AACzB,cAAU,YAAY,aAAa;AAAA,EACrC;AAEA,SAAO;AAAA,IACL;AAAA,IACA,EAAE,QAAQ,SAAS,OAAO,QAAQ,OAAO,UAAA;AAAA,IACzC;AAAA,MACE;AAAA,MACA,EAAE,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ,eAAe,WAAW;AAAA,QAClC;AAAA,QACA,GAAG;AAAA,MAAA,CACJ;AAAA,MACD,EAAE,GAAG,oBAAoB,EAAE,SAAS;AAAA,QAClC,UAAU;AAAA,QACV,QAAQ,eAAe,WAAW;AAAA,QAClC,aAAa;AAAA,QACb,OAAO;AAAA,QACP,GAAG;AAAA,MAAA,CACJ;AAAA,MACD,EAAE,GAAG,iBAAiB,IAAI,EAAE,eAAe,EAAE,SAAS,cAAA,CAAe;AAAA,IAAA;AAAA,EACvE;AAEJ;"}
@@ -1,177 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const h = require("@macrostrat/hyper");
4
- const svgMapComponents = require("@macrostrat/svg-map-components");
5
- const uiComponents = require("@macrostrat/ui-components");
6
- const chroma = require("chroma-js");
7
- const React = require("react");
8
- const dataFetcher = require("./data-fetcher.cjs");
9
- const keyboardNavigation = require("../utils/keyboard-navigation.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);
13
- const defaultStyle = {
14
- fill: "rgb(239, 180, 249)",
15
- stroke: "magenta"
16
- };
17
- function MeasurementsLayer(props) {
18
- const { style = defaultStyle, ...params } = props;
19
- const res = uiComponents.useAPIResult("/measurements", {
20
- ...params,
21
- format: "geojson",
22
- response: "light"
23
- });
24
- if (res == null) return null;
25
- return h__default.default(svgMapComponents.FeatureLayer, {
26
- useCanvas: false,
27
- style,
28
- features: res.features?.filter((d) => d.properties.unit_id != null) ?? []
29
- });
30
- }
31
- function ColumnFeatures(props) {
32
- const {
33
- features,
34
- onClick,
35
- color = "rgba(150,150,150, 1)",
36
- singleFeature = true
37
- } = props;
38
- const c = chroma__default.default(color);
39
- return h__default.default(
40
- svgMapComponents.FeatureLayer,
41
- {
42
- className: "columns",
43
- useCanvas: onClick == null,
44
- style: {
45
- fill: c.alpha(0.2).css(),
46
- stroke: c.alpha(0.4).css()
47
- }
48
- },
49
- features?.map((f) => {
50
- return h__default.default(svgMapComponents.Feature, {
51
- id: f.id ?? f.properties.col_id,
52
- onClick,
53
- feature: f
54
- });
55
- })
56
- );
57
- }
58
- function ColumnKeyboardNavigation(props) {
59
- const {
60
- features = [],
61
- col_id = null,
62
- onChange,
63
- showLayers = false,
64
- ...projectArgs
65
- } = props;
66
- const { projection } = React.useContext(svgMapComponents.MapContext);
67
- const { centroids, tri } = React.useMemo(
68
- () => keyboardNavigation.buildTriangulation(features),
69
- [features]
70
- );
71
- const currentIndex = React.useMemo(() => {
72
- return features.findIndex((d) => d.properties.col_id == col_id);
73
- }, [features, col_id]);
74
- const neighbors = tri.delaunay.neighbors[currentIndex];
75
- const keyMapping = React.useMemo(() => {
76
- return keyboardNavigation.buildKeyMapping(neighbors, centroids, currentIndex, projection);
77
- }, [neighbors, currentIndex]);
78
- uiComponents.useKeyHandler(
79
- (event) => {
80
- const nextColumnIx = keyMapping[event.keyCode];
81
- if (nextColumnIx == null) return;
82
- onChange(features[nextColumnIx]);
83
- },
84
- [keyMapping]
85
- );
86
- if (neighbors == null) return null;
87
- const neighborFeatures = neighbors.map((d) => features[d]);
88
- return h__default.default.if(showLayers)([
89
- h__default.default(svgMapComponents.FeatureLayer, {
90
- features: tri.links().features,
91
- useCanvas: false,
92
- style: {
93
- stroke: "purple",
94
- fill: "transparent"
95
- }
96
- }),
97
- h__default.default(svgMapComponents.FeatureLayer, {
98
- features: neighborFeatures,
99
- useCanvas: false,
100
- style: {
101
- stroke: "rgb(93, 101, 212)",
102
- strokeWidth: 3,
103
- fill: "rgba(93, 101, 212, 0.5)"
104
- }
105
- }),
106
- h__default.default(svgMapComponents.FeatureLayer, {
107
- features: [
108
- {
109
- type: "Feature",
110
- geometry: {
111
- type: "MultiPoint",
112
- coordinates: centroids
113
- }
114
- }
115
- ],
116
- useCanvas: false,
117
- style: {
118
- r: 1,
119
- fill: "purple"
120
- }
121
- })
122
- ]);
123
- }
124
- const Columns = (props) => {
125
- const {
126
- apiRoute = "/columns",
127
- onChange,
128
- col_id = null,
129
- status_code,
130
- project_id,
131
- color,
132
- filterColumns,
133
- showDebugLayers = false,
134
- format = "topojson"
135
- } = props;
136
- let features = dataFetcher.useColumnFeatures({
137
- status_code,
138
- project_id,
139
- format
140
- });
141
- if (features == null) return null;
142
- if (filterColumns != null) {
143
- features = features.filter(filterColumns);
144
- }
145
- return h__default.default([
146
- h__default.default(ColumnKeyboardNavigation, {
147
- features,
148
- col_id,
149
- onChange,
150
- status_code,
151
- project_id,
152
- showLayers: showDebugLayers
153
- }),
154
- h__default.default(ColumnFeatures, { features, onClick: onChange, color })
155
- ]);
156
- };
157
- const ColumnCenters = (props) => {
158
- return h__default.default(Columns, { apiRoute: "/defs/columns", ...props });
159
- };
160
- const CurrentColumn = (props) => {
161
- const { feature } = props;
162
- return h__default.default(svgMapComponents.FeatureLayer, {
163
- features: [feature],
164
- style: {
165
- fill: "rgba(255,0,0,0.4)",
166
- stroke: "rgba(255,0,0,0.6)",
167
- strokeWidth: 2
168
- }
169
- });
170
- };
171
- exports.ColumnCenters = ColumnCenters;
172
- exports.ColumnFeatures = ColumnFeatures;
173
- exports.ColumnKeyboardNavigation = ColumnKeyboardNavigation;
174
- exports.Columns = Columns;
175
- exports.CurrentColumn = CurrentColumn;
176
- exports.MeasurementsLayer = MeasurementsLayer;
177
- //# sourceMappingURL=layers.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layers.cjs","sources":["../../../../src/maps/column-navigation/svg/layers.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport {\n Feature,\n FeatureLayer,\n MapContext,\n} from \"@macrostrat/svg-map-components\";\nimport { useAPIResult, useKeyHandler } from \"@macrostrat/ui-components\";\nimport chroma from \"chroma-js\";\nimport { ExtendedFeature } from \"d3-geo\";\nimport { Polygon } from \"geojson\";\nimport { useContext, useMemo } from \"react\";\nimport { useColumnFeatures } from \"./data-fetcher\";\nimport {\n buildKeyMapping,\n buildTriangulation,\n} from \"../utils/keyboard-navigation\";\n\nconst defaultStyle = {\n fill: \"rgb(239, 180, 249)\",\n stroke: \"magenta\",\n};\n\nexport function MeasurementsLayer(props) {\n const { style = defaultStyle, ...params } = props;\n const res: any = useAPIResult(\"/measurements\", {\n ...params,\n format: \"geojson\",\n response: \"light\",\n });\n if (res == null) return null;\n\n return h(FeatureLayer, {\n useCanvas: false,\n style,\n features: res.features?.filter((d) => d.properties.unit_id != null) ?? [],\n });\n}\n\ntype ColumnProps = { col_id: number };\n\ntype ColumnFeature = ExtendedFeature<Polygon, ColumnProps>;\n\nfunction ColumnFeatures(props) {\n const {\n features,\n onClick,\n color = \"rgba(150,150,150, 1)\",\n singleFeature = true,\n } = props;\n\n const c = chroma(color);\n\n return h(\n FeatureLayer,\n {\n className: \"columns\",\n useCanvas: onClick == null,\n style: {\n fill: c.alpha(0.2).css(),\n stroke: c.alpha(0.4).css(),\n },\n },\n features?.map((f) => {\n return h(Feature, {\n id: f.id ?? f.properties.col_id,\n onClick,\n feature: f,\n });\n }),\n );\n}\n\nenum MacrostratStatusCode {\n InProcess = \"in process\",\n}\n\ninterface ColumnNavProps {\n col_id: number;\n status_code?: MacrostratStatusCode;\n project_id?: number;\n onChange(col_id: number): void;\n}\n\ninterface KeyboardNavProps extends ColumnNavProps {\n features: ColumnFeature[];\n showLayers: boolean;\n}\n\nfunction ColumnKeyboardNavigation(props: KeyboardNavProps) {\n /** Keyboard navigation of columns using a Delaunay triangulation */\n const {\n features = [],\n col_id = null,\n onChange,\n showLayers = false,\n ...projectArgs\n } = props;\n const { projection } = useContext(MapContext);\n const { centroids, tri } = useMemo(\n () => buildTriangulation(features),\n [features],\n );\n\n const currentIndex = useMemo(() => {\n return features.findIndex((d) => d.properties.col_id == col_id);\n }, [features, col_id]);\n\n const neighbors = tri.delaunay.neighbors[currentIndex];\n\n const keyMapping = useMemo(() => {\n return buildKeyMapping(neighbors, centroids, currentIndex, projection);\n }, [neighbors, currentIndex]);\n\n useKeyHandler(\n (event) => {\n const nextColumnIx = keyMapping[event.keyCode];\n if (nextColumnIx == null) return;\n // @ts-ignore\n onChange(features[nextColumnIx]);\n },\n [keyMapping],\n );\n\n if (neighbors == null) return null;\n const neighborFeatures = neighbors.map((d) => features[d]);\n\n return h.if(showLayers)([\n h(FeatureLayer, {\n features: tri.links().features,\n useCanvas: false,\n style: {\n stroke: \"purple\",\n fill: \"transparent\",\n },\n }),\n h(FeatureLayer, {\n features: neighborFeatures,\n useCanvas: false,\n style: {\n stroke: \"rgb(93, 101, 212)\",\n strokeWidth: 3,\n fill: \"rgba(93, 101, 212, 0.5)\",\n },\n }),\n h(FeatureLayer, {\n features: [\n {\n type: \"Feature\",\n geometry: {\n type: \"MultiPoint\",\n coordinates: centroids,\n },\n },\n ],\n useCanvas: false,\n style: {\n r: 1,\n fill: \"purple\",\n },\n }),\n ]);\n}\n\ninterface ColumnExtraInfo {\n apiRoute?: string;\n color?: string;\n filterColumns?(d: ColumnFeature): boolean;\n showDebugLayers?: boolean;\n format?: \"topojson\" | \"geojson\";\n}\n\nconst Columns = (props: ColumnNavProps & ColumnExtraInfo) => {\n const {\n apiRoute = \"/columns\",\n onChange,\n col_id = null,\n status_code,\n project_id,\n color,\n filterColumns,\n showDebugLayers = false,\n format = \"topojson\",\n } = props;\n\n let features: any[] = useColumnFeatures({\n apiRoute,\n status_code,\n project_id,\n format,\n }) as any;\n\n if (features == null) return null;\n\n if (filterColumns != null) {\n features = features.filter(filterColumns);\n }\n\n return h([\n h(ColumnKeyboardNavigation, {\n features,\n col_id,\n onChange,\n status_code,\n project_id,\n showLayers: showDebugLayers,\n }),\n h(ColumnFeatures, { features, onClick: onChange, color }),\n ]);\n};\n\nconst ColumnCenters = (props: ColumnNavProps) => {\n return h(Columns, { apiRoute: \"/defs/columns\", ...props });\n};\n\nconst CurrentColumn = (props) => {\n const { feature } = props;\n return h(FeatureLayer, {\n features: [feature],\n style: {\n fill: \"rgba(255,0,0,0.4)\",\n stroke: \"rgba(255,0,0,0.6)\",\n strokeWidth: 2,\n },\n });\n};\n\nexport {\n Columns,\n CurrentColumn,\n ColumnCenters,\n ColumnFeatures,\n ColumnKeyboardNavigation,\n};\n"],"names":["useAPIResult","h","FeatureLayer","chroma","Feature","useContext","MapContext","useMemo","buildTriangulation","buildKeyMapping","useKeyHandler","useColumnFeatures"],"mappings":";;;;;;;;;;;;AAiBA,MAAM,eAAe;AAAA,EACnB,MAAM;AAAA,EACN,QAAQ;AACV;AAEO,SAAS,kBAAkB,OAAO;AACvC,QAAM,EAAE,QAAQ,cAAc,GAAG,WAAW;AAC5C,QAAM,MAAWA,aAAAA,aAAa,iBAAiB;AAAA,IAC7C,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,UAAU;AAAA,EAAA,CACX;AACD,MAAI,OAAO,KAAM,QAAO;AAExB,SAAOC,WAAAA,QAAEC,iBAAAA,cAAc;AAAA,IACrB,WAAW;AAAA,IACX;AAAA,IACA,UAAU,IAAI,UAAU,OAAO,CAAC,MAAM,EAAE,WAAW,WAAW,IAAI,KAAK,CAAA;AAAA,EAAC,CACzE;AACH;AAMA,SAAS,eAAe,OAAO;AAC7B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,gBAAgB;AAAA,EAAA,IACd;AAEJ,QAAM,IAAIC,gBAAAA,QAAO,KAAK;AAEtB,SAAOF,WAAAA;AAAAA,IACLC,iBAAAA;AAAAA,IACA;AAAA,MACE,WAAW;AAAA,MACX,WAAW,WAAW;AAAA,MACtB,OAAO;AAAA,QACL,MAAM,EAAE,MAAM,GAAG,EAAE,IAAA;AAAA,QACnB,QAAQ,EAAE,MAAM,GAAG,EAAE,IAAA;AAAA,MAAI;AAAA,IAC3B;AAAA,IAEF,UAAU,IAAI,CAAC,MAAM;AACnB,aAAOD,WAAAA,QAAEG,iBAAAA,SAAS;AAAA,QAChB,IAAI,EAAE,MAAM,EAAE,WAAW;AAAA,QACzB;AAAA,QACA,SAAS;AAAA,MAAA,CACV;AAAA,IACH,CAAC;AAAA,EAAA;AAEL;AAkBA,SAAS,yBAAyB,OAAyB;AAEzD,QAAM;AAAA,IACJ,WAAW,CAAA;AAAA,IACX,SAAS;AAAA,IACT;AAAA,IACA,aAAa;AAAA,IACb,GAAG;AAAA,EAAA,IACD;AACJ,QAAM,EAAE,WAAA,IAAeC,MAAAA,WAAWC,2BAAU;AAC5C,QAAM,EAAE,WAAW,IAAA,IAAQC,MAAAA;AAAAA,IACzB,MAAMC,mBAAAA,mBAAmB,QAAQ;AAAA,IACjC,CAAC,QAAQ;AAAA,EAAA;AAGX,QAAM,eAAeD,MAAAA,QAAQ,MAAM;AACjC,WAAO,SAAS,UAAU,CAAC,MAAM,EAAE,WAAW,UAAU,MAAM;AAAA,EAChE,GAAG,CAAC,UAAU,MAAM,CAAC;AAErB,QAAM,YAAY,IAAI,SAAS,UAAU,YAAY;AAErD,QAAM,aAAaA,MAAAA,QAAQ,MAAM;AAC/B,WAAOE,mBAAAA,gBAAgB,WAAW,WAAW,cAAc,UAAU;AAAA,EACvE,GAAG,CAAC,WAAW,YAAY,CAAC;AAE5BC,eAAAA;AAAAA,IACE,CAAC,UAAU;AACT,YAAM,eAAe,WAAW,MAAM,OAAO;AAC7C,UAAI,gBAAgB,KAAM;AAE1B,eAAS,SAAS,YAAY,CAAC;AAAA,IACjC;AAAA,IACA,CAAC,UAAU;AAAA,EAAA;AAGb,MAAI,aAAa,KAAM,QAAO;AAC9B,QAAM,mBAAmB,UAAU,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;AAEzD,SAAOT,WAAAA,QAAE,GAAG,UAAU,EAAE;AAAA,IACtBA,WAAAA,QAAEC,iBAAAA,cAAc;AAAA,MACd,UAAU,IAAI,MAAA,EAAQ;AAAA,MACtB,WAAW;AAAA,MACX,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,IACR,CACD;AAAA,IACDD,WAAAA,QAAEC,iBAAAA,cAAc;AAAA,MACd,UAAU;AAAA,MACV,WAAW;AAAA,MACX,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,MAAM;AAAA,MAAA;AAAA,IACR,CACD;AAAA,IACDD,WAAAA,QAAEC,iBAAAA,cAAc;AAAA,MACd,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,UAAU;AAAA,YACR,MAAM;AAAA,YACN,aAAa;AAAA,UAAA;AAAA,QACf;AAAA,MACF;AAAA,MAEF,WAAW;AAAA,MACX,OAAO;AAAA,QACL,GAAG;AAAA,QACH,MAAM;AAAA,MAAA;AAAA,IACR,CACD;AAAA,EAAA,CACF;AACH;AAUA,MAAM,UAAU,CAAC,UAA4C;AAC3D,QAAM;AAAA,IACJ,WAAW;AAAA,IACX;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,IAClB,SAAS;AAAA,EAAA,IACP;AAEJ,MAAI,WAAkBS,YAAAA,kBAAkB;AAAA,IAEtC;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAED,MAAI,YAAY,KAAM,QAAO;AAE7B,MAAI,iBAAiB,MAAM;AACzB,eAAW,SAAS,OAAO,aAAa;AAAA,EAC1C;AAEA,SAAOV,mBAAE;AAAA,IACPA,WAAAA,QAAE,0BAA0B;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,IAAA,CACb;AAAA,IACDA,WAAAA,QAAE,gBAAgB,EAAE,UAAU,SAAS,UAAU,OAAO;AAAA,EAAA,CACzD;AACH;AAEA,MAAM,gBAAgB,CAAC,UAA0B;AAC/C,SAAOA,WAAAA,QAAE,SAAS,EAAE,UAAU,iBAAiB,GAAG,OAAO;AAC3D;AAEA,MAAM,gBAAgB,CAAC,UAAU;AAC/B,QAAM,EAAE,YAAY;AACpB,SAAOA,WAAAA,QAAEC,iBAAAA,cAAc;AAAA,IACrB,UAAU,CAAC,OAAO;AAAA,IAClB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,aAAa;AAAA,IAAA;AAAA,EACf,CACD;AACH;;;;;;;"}
@@ -1,54 +0,0 @@
1
- import { ExtendedFeature } from 'd3-geo';
2
- import { Polygon } from 'geojson';
3
- export declare function MeasurementsLayer(props: any): import('react').FunctionComponentElement<{
4
- [k: string]: any;
5
- geometry?: object;
6
- features?: import('@macrostrat/svg-map-components').IFeature[];
7
- useCanvas?: boolean;
8
- } & {
9
- children?: import('react').ReactNode | undefined;
10
- }> | null;
11
- type ColumnProps = {
12
- col_id: number;
13
- };
14
- type ColumnFeature = ExtendedFeature<Polygon, ColumnProps>;
15
- declare function ColumnFeatures(props: any): import('react').FunctionComponentElement<{
16
- [k: string]: any;
17
- geometry?: object;
18
- features?: import('@macrostrat/svg-map-components').IFeature[];
19
- useCanvas?: boolean;
20
- } & {
21
- children?: import('react').ReactNode | undefined;
22
- }>;
23
- declare enum MacrostratStatusCode {
24
- InProcess = "in process"
25
- }
26
- interface ColumnNavProps {
27
- col_id: number;
28
- status_code?: MacrostratStatusCode;
29
- project_id?: number;
30
- onChange(col_id: number): void;
31
- }
32
- interface KeyboardNavProps extends ColumnNavProps {
33
- features: ColumnFeature[];
34
- showLayers: boolean;
35
- }
36
- declare function ColumnKeyboardNavigation(props: KeyboardNavProps): import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | null;
37
- interface ColumnExtraInfo {
38
- apiRoute?: string;
39
- color?: string;
40
- filterColumns?(d: ColumnFeature): boolean;
41
- showDebugLayers?: boolean;
42
- format?: "topojson" | "geojson";
43
- }
44
- declare const Columns: (props: ColumnNavProps & ColumnExtraInfo) => import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | null;
45
- declare const ColumnCenters: (props: ColumnNavProps) => import('react').FunctionComponentElement<ColumnNavProps & ColumnExtraInfo>;
46
- declare const CurrentColumn: (props: any) => import('react').FunctionComponentElement<{
47
- [k: string]: any;
48
- geometry?: object;
49
- features?: import('@macrostrat/svg-map-components').IFeature[];
50
- useCanvas?: boolean;
51
- } & {
52
- children?: import('react').ReactNode | undefined;
53
- }>;
54
- export { Columns, CurrentColumn, ColumnCenters, ColumnFeatures, ColumnKeyboardNavigation, };