@macrostrat/column-views 3.0.3 → 3.1.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 (84) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/data-provider/column-nav.js +1 -1
  3. package/dist/data-provider/index.d.ts +0 -2
  4. package/dist/data-provider/store.cjs +49 -6
  5. package/dist/data-provider/store.cjs.map +1 -1
  6. package/dist/data-provider/store.js +46 -3
  7. package/dist/data-provider/store.js.map +1 -1
  8. package/dist/data-provider/unit-selection.cjs +9 -9
  9. package/dist/data-provider/unit-selection.cjs.map +1 -1
  10. package/dist/data-provider/unit-selection.d.ts +1 -1
  11. package/dist/data-provider/unit-selection.js +2 -2
  12. package/dist/data-provider/unit-selection.js.map +1 -1
  13. package/dist/index.cjs +5 -24
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.js +4 -23
  16. package/dist/index.js.map +1 -1
  17. package/dist/maps/column-correlation/state.cjs +2 -2
  18. package/dist/maps/column-correlation/state.cjs.map +1 -1
  19. package/dist/maps/column-correlation/state.d.ts +1 -0
  20. package/dist/maps/column-correlation/state.js +1 -1
  21. package/dist/maps/column-correlation/state.js.map +1 -1
  22. package/dist/maps/column-navigation/mapbox/state.cjs +3 -3
  23. package/dist/maps/column-navigation/mapbox/state.cjs.map +1 -1
  24. package/dist/maps/column-navigation/mapbox/state.js +1 -1
  25. package/dist/maps/column-navigation/mapbox/state.js.map +1 -1
  26. package/dist/maps/column-navigation/svg/data-fetcher.cjs +25 -0
  27. package/dist/maps/column-navigation/svg/data-fetcher.cjs.map +1 -0
  28. package/dist/maps/column-navigation/svg/data-fetcher.d.ts +6 -0
  29. package/dist/maps/column-navigation/svg/data-fetcher.js +25 -0
  30. package/dist/maps/column-navigation/svg/data-fetcher.js.map +1 -0
  31. package/dist/maps/column-navigation/svg/layers.cjs +2 -3
  32. package/dist/maps/column-navigation/svg/layers.cjs.map +1 -1
  33. package/dist/maps/column-navigation/svg/layers.js +1 -2
  34. package/dist/maps/column-navigation/svg/layers.js.map +1 -1
  35. package/dist/section.cjs +3 -3
  36. package/dist/section.cjs.map +1 -1
  37. package/dist/section.js +2 -2
  38. package/dist/section.js.map +1 -1
  39. package/dist/unit-details/panel.cjs +76 -57
  40. package/dist/unit-details/panel.cjs.map +1 -1
  41. package/dist/unit-details/panel.js +72 -53
  42. package/dist/unit-details/panel.js.map +1 -1
  43. package/dist/units/boxes.cjs +1 -0
  44. package/dist/units/boxes.cjs.map +1 -1
  45. package/dist/units/boxes.js +1 -0
  46. package/dist/units/boxes.js.map +1 -1
  47. package/dist/units/index.cjs +4 -4
  48. package/dist/units/index.cjs.map +1 -1
  49. package/dist/units/index.js +1 -1
  50. package/dist/units/index.js.map +1 -1
  51. package/package.json +3 -2
  52. package/src/correlation-chart/stories/correlation-chart.stories.ts +29 -22
  53. package/src/data-provider/index.ts +0 -2
  54. package/src/data-provider/store.ts +51 -10
  55. package/src/data-provider/unit-selection.ts +4 -4
  56. package/src/maps/column-correlation/state.ts +2 -1
  57. package/src/maps/column-navigation/mapbox/state.ts +1 -1
  58. package/src/maps/column-navigation/svg/column-navigation-svg-map.stories.ts +1 -1
  59. package/src/maps/column-navigation/svg/data-fetcher.ts +34 -0
  60. package/src/maps/column-navigation/svg/layers.ts +1 -1
  61. package/src/section.ts +1 -1
  62. package/src/unit-details/panel.ts +97 -60
  63. package/src/units/boxes.ts +2 -1
  64. package/src/units/index.ts +1 -1
  65. package/dist/data-provider/base.cjs +0 -352
  66. package/dist/data-provider/base.cjs.map +0 -1
  67. package/dist/data-provider/base.d.ts +0 -65
  68. package/dist/data-provider/base.js +0 -349
  69. package/dist/data-provider/base.js.map +0 -1
  70. package/dist/data-provider/core.cjs +0 -58
  71. package/dist/data-provider/core.cjs.map +0 -1
  72. package/dist/data-provider/core.d.ts +0 -31
  73. package/dist/data-provider/core.js +0 -56
  74. package/dist/data-provider/core.js.map +0 -1
  75. package/dist/data-provider/fetch.cjs +0 -212
  76. package/dist/data-provider/fetch.cjs.map +0 -1
  77. package/dist/data-provider/fetch.d.ts +0 -27
  78. package/dist/data-provider/fetch.js +0 -210
  79. package/dist/data-provider/fetch.js.map +0 -1
  80. package/dist/data-provider/store.d.ts +0 -34
  81. package/dist/unit-details/panel.d.ts +0 -87
  82. package/src/data-provider/base.ts +0 -475
  83. package/src/data-provider/core.ts +0 -89
  84. package/src/data-provider/fetch.ts +0 -278
@@ -1,212 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const uiComponents = require("@macrostrat/ui-components");
4
- const crossFetch = require("cross-fetch");
5
- const topojsonClient = require("topojson-client");
6
- const d3Geo = require("d3-geo");
7
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
8
- const crossFetch__default = /* @__PURE__ */ _interopDefault(crossFetch);
9
- function createScopedFetch(baseURL) {
10
- return function(url, options = void 0) {
11
- return crossFetch__default.default(baseURL + url, options);
12
- };
13
- }
14
- const defaultFetch = createScopedFetch("https://macrostrat.org/api/v2");
15
- async function fetchAllColumns(options = {}) {
16
- const {
17
- apiBaseURL,
18
- projectID,
19
- format = "topojson",
20
- statusCode,
21
- fetch = crossFetch__default.default
22
- } = options;
23
- let args = { format };
24
- if (projectID != null) {
25
- args = { ...args, project_id: projectID };
26
- }
27
- let _statusCode = void 0;
28
- if (Array.isArray(statusCode)) {
29
- _statusCode = statusCode.join(",");
30
- } else if (statusCode != null) {
31
- _statusCode = statusCode;
32
- }
33
- args.statusCode = _statusCode;
34
- if (projectID == null) {
35
- args = { ...args, all: true };
36
- }
37
- let url = "/columns";
38
- if (apiBaseURL != null) {
39
- url = uiComponents.joinURL(apiBaseURL, url);
40
- }
41
- url = uiComponents.addQueryString(url, args);
42
- const res = await fetch(url, {
43
- method: "GET",
44
- headers: {
45
- "Content-Type": "application/json"
46
- }
47
- });
48
- if (res == null) {
49
- return null;
50
- }
51
- const data = await res.json();
52
- return postProcessColumns(columnProcessors[format](data));
53
- }
54
- function useColumnFeatures({
55
- apiRoute = "/columns",
56
- status_code,
57
- project_id,
58
- format = "geojson"
59
- }) {
60
- let all = void 0;
61
- if (status_code == null && project_id == null) {
62
- all = true;
63
- }
64
- const processor = columnProcessors[format];
65
- return uiComponents.useAPIResult(
66
- apiRoute,
67
- { format, all, status_code, project_id },
68
- processor
69
- );
70
- }
71
- function processGeoJSON(res) {
72
- return processGeoJSONBare(res?.success?.data);
73
- }
74
- function processGeoJSONBare(res) {
75
- return res?.features;
76
- }
77
- function processTopoJSON(res) {
78
- try {
79
- const { data } = res.success;
80
- const { features: f } = topojsonClient.feature(data, data.objects.output);
81
- return f;
82
- } catch (err) {
83
- console.error(err);
84
- return [];
85
- }
86
- }
87
- function postProcessColumns(columns) {
88
- return promoteColumnIDs(
89
- convertSmallAreasToPoints(removeFeaturesWithoutGeometry(columns))
90
- );
91
- }
92
- function promoteColumnIDs(features) {
93
- return features.map((f, i) => {
94
- return {
95
- id: f.properties?.col_id,
96
- ...f
97
- };
98
- });
99
- }
100
- function removeFeaturesWithoutGeometry(features) {
101
- return features.filter((f) => f.geometry != null);
102
- }
103
- function convertSmallAreasToPoints(features) {
104
- return features.map((f) => {
105
- if (d3Geo.geoArea(f.geometry) < 1e-8) {
106
- const centroid = f.geometry.coordinates[0][0];
107
- f.geometry = {
108
- type: "Point",
109
- coordinates: centroid
110
- };
111
- }
112
- return f;
113
- });
114
- }
115
- const columnProcessors = {
116
- topojson: processTopoJSON,
117
- geojson: processGeoJSON,
118
- geojson_bare: processGeoJSONBare
119
- };
120
- async function unwrapResponse(res) {
121
- if (res == null) {
122
- return null;
123
- }
124
- const resData = await res.json();
125
- return resData["success"]["data"];
126
- }
127
- async function fetchLithologies(fetch = defaultFetch) {
128
- const res = await fetch("/defs/lithologies?all");
129
- return await unwrapResponse(res);
130
- }
131
- async function fetchIntervals(timescaleID, fetch = defaultFetch) {
132
- let url = `/defs/intervals`;
133
- if (timescaleID != null) {
134
- url += `?timescale_id=${timescaleID}`;
135
- } else {
136
- url += "?all";
137
- }
138
- const res = await fetch(url);
139
- return await unwrapResponse(res);
140
- }
141
- async function fetchEnvironments(fetch = defaultFetch) {
142
- const res = await fetch("/defs/environments?all");
143
- return await unwrapResponse(res);
144
- }
145
- async function fetchRefs(refs, fetch = defaultFetch) {
146
- let url = `/defs/refs`;
147
- if (refs.length == 0) {
148
- return [];
149
- }
150
- url += "?ref_id=" + refs.join(",");
151
- const res = await fetch(url);
152
- return await unwrapResponse(res);
153
- }
154
- async function fetchStratNames(names, fetch = defaultFetch) {
155
- let url = `/defs/strat_names`;
156
- if (names.length == 0) {
157
- return [];
158
- }
159
- url += "?strat_name_id=" + names.join(",");
160
- const res = await fetch(url);
161
- return await unwrapResponse(res);
162
- }
163
- async function fetchUnits(columns, fetch = defaultFetch) {
164
- const params = new URLSearchParams();
165
- params.append("response", "long");
166
- if (columns.length == 0) {
167
- return [];
168
- }
169
- const col_string = columns.map((column) => column.toString()).join(",");
170
- params.append("col_id", col_string);
171
- const res = await fetch("/units?" + params.toString());
172
- const data = await res.json();
173
- if (!data.success) {
174
- throw new Error("Failed to fetch column units");
175
- }
176
- const units = data.success.data;
177
- const unitsMap = /* @__PURE__ */ new Map();
178
- for (const unit of units) {
179
- const colID = unit.col_id;
180
- if (!unitsMap.has(colID)) {
181
- unitsMap.set(colID, []);
182
- }
183
- unitsMap.get(colID).push(unit);
184
- }
185
- const result = [];
186
- for (const colID of columns) {
187
- result.push({ columnID: colID, units: unitsMap.get(colID) || [] });
188
- }
189
- return result;
190
- }
191
- async function fetchColumnUnits(col_id, fetch = defaultFetch) {
192
- const params = new URLSearchParams();
193
- params.append("response", "long");
194
- params.append("col_id", col_id.toString());
195
- const res = await fetch("/units?" + params.toString());
196
- const data = await res.json();
197
- if (!data.success) {
198
- throw new Error("Failed to fetch column units");
199
- }
200
- const units = data.success.data;
201
- return { columnID: col_id, units };
202
- }
203
- exports.fetchAllColumns = fetchAllColumns;
204
- exports.fetchColumnUnits = fetchColumnUnits;
205
- exports.fetchEnvironments = fetchEnvironments;
206
- exports.fetchIntervals = fetchIntervals;
207
- exports.fetchLithologies = fetchLithologies;
208
- exports.fetchRefs = fetchRefs;
209
- exports.fetchStratNames = fetchStratNames;
210
- exports.fetchUnits = fetchUnits;
211
- exports.useColumnFeatures = useColumnFeatures;
212
- //# sourceMappingURL=fetch.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch.cjs","sources":["../../src/data-provider/fetch.ts"],"sourcesContent":["import {\n ColumnGeoJSONRecord,\n ColumnGeoJSONRecordWithID,\n MacrostratRef,\n StratName,\n UnitLong,\n} from \"@macrostrat/api-types\";\nimport {\n addQueryString,\n joinURL,\n useAPIResult,\n} from \"@macrostrat/ui-components\";\nimport crossFetch from \"cross-fetch\";\nimport { feature } from \"topojson-client\";\nimport { geoArea } from \"d3-geo\";\n\nfunction createScopedFetch(baseURL: string) {\n return function (url: string, options: RequestInit | undefined = undefined) {\n return crossFetch(baseURL + url, options);\n };\n}\n\nconst defaultFetch = createScopedFetch(\"https://macrostrat.org/api/v2\");\n\nexport type ColumnStatusCode = \"in process\" | \"active\" | \"obsolete\";\n\nexport interface ColumnFetchOptions {\n apiBaseURL?: string;\n projectID?: number;\n statusCode?: ColumnStatusCode | ColumnStatusCode[];\n format?: \"geojson\" | \"topojson\" | \"geojson_bare\";\n fetch?: any;\n}\n\nexport async function fetchAllColumns(\n options: ColumnFetchOptions = {},\n): Promise<ColumnGeoJSONRecord[]> {\n const {\n apiBaseURL,\n projectID,\n format = \"topojson\",\n statusCode,\n fetch = crossFetch,\n } = options;\n\n let args: any = { format };\n if (projectID != null) {\n args = { ...args, project_id: projectID };\n }\n let _statusCode: string | undefined = undefined;\n if (Array.isArray(statusCode)) {\n _statusCode = statusCode.join(\",\");\n } else if (statusCode != null) {\n _statusCode = statusCode;\n }\n args.statusCode = _statusCode;\n\n if (projectID == null) {\n args = { ...args, all: true };\n }\n\n let url = \"/columns\";\n if (apiBaseURL != null) {\n url = joinURL(apiBaseURL, url);\n }\n\n // Try with fetch\n url = addQueryString(url, args);\n\n const res = await fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (res == null) {\n return null;\n }\n\n // Get JSON\n const data = await res.json();\n return postProcessColumns(columnProcessors[format](data));\n}\n\nexport function useColumnFeatures({\n apiRoute = \"/columns\",\n status_code,\n project_id,\n format = \"geojson\",\n}) {\n let all: boolean = undefined;\n if (status_code == null && project_id == null) {\n all = true;\n }\n\n const processor = columnProcessors[format];\n\n return useAPIResult(\n apiRoute,\n { format, all, status_code, project_id },\n processor,\n );\n}\n\nfunction processGeoJSON(res) {\n return processGeoJSONBare(res?.success?.data);\n}\n\nfunction processGeoJSONBare(res) {\n return res?.features;\n}\n\nfunction processTopoJSON(res) {\n try {\n const { data } = res.success;\n const { features: f } = feature(data, data.objects.output) as any;\n return f;\n } catch (err) {\n console.error(err);\n return [];\n }\n}\n\nfunction postProcessColumns(columns) {\n return promoteColumnIDs(\n convertSmallAreasToPoints(removeFeaturesWithoutGeometry(columns)),\n );\n}\n\nfunction promoteColumnIDs(\n features: ColumnGeoJSONRecord[],\n): ColumnGeoJSONRecordWithID[] {\n return features.map((f, i) => {\n return {\n id: f.properties?.col_id,\n ...f,\n };\n });\n}\n\nfunction removeFeaturesWithoutGeometry(features) {\n return features.filter((f) => f.geometry != null);\n}\n\nfunction convertSmallAreasToPoints(features) {\n return features.map((f) => {\n // GeoArea takes a long time to run. We are really more worried about points that are zero-area\n if (geoArea(f.geometry) < 1e-8) {\n const centroid = f.geometry.coordinates[0][0];\n f.geometry = {\n type: \"Point\",\n coordinates: centroid,\n };\n }\n return f;\n });\n}\n\nconst columnProcessors = {\n topojson: processTopoJSON,\n geojson: processGeoJSON,\n geojson_bare: processGeoJSONBare,\n};\n\nasync function unwrapResponse(res) {\n if (res == null) {\n return null;\n }\n const resData = await res.json();\n return resData[\"success\"][\"data\"];\n}\n\nexport async function fetchLithologies(fetch = defaultFetch) {\n const res = await fetch(\"/defs/lithologies?all\");\n return await unwrapResponse(res);\n}\n\nexport async function fetchIntervals(\n timescaleID: number | null,\n fetch = defaultFetch,\n) {\n let url = `/defs/intervals`;\n if (timescaleID != null) {\n url += `?timescale_id=${timescaleID}`;\n } else {\n url += \"?all\";\n }\n const res = await fetch(url);\n return await unwrapResponse(res);\n}\n\nexport async function fetchEnvironments(fetch = defaultFetch) {\n const res = await fetch(\"/defs/environments?all\");\n return await unwrapResponse(res);\n}\n\nexport async function fetchRefs(\n refs: number[],\n fetch = defaultFetch,\n): Promise<MacrostratRef[]> {\n let url = `/defs/refs`;\n if (refs.length == 0) {\n return [];\n }\n url += \"?ref_id=\" + refs.join(\",\");\n const res = await fetch(url);\n return await unwrapResponse(res);\n}\n\nexport async function fetchStratNames(\n names: number[],\n fetch = defaultFetch,\n): Promise<StratName[]> {\n let url = `/defs/strat_names`;\n if (names.length == 0) {\n return [];\n }\n url += \"?strat_name_id=\" + names.join(\",\");\n const res = await fetch(url);\n return await unwrapResponse(res);\n}\n\nexport type ColumnData = {\n units: UnitLong[];\n columnID: number;\n};\n\nexport async function fetchUnits(\n columns: number[],\n fetch = defaultFetch,\n): Promise<ColumnData[]> {\n const params = new URLSearchParams();\n params.append(\"response\", \"long\");\n\n if (columns.length == 0) {\n return [];\n }\n\n const col_string = columns.map((column) => column.toString()).join(\",\");\n params.append(\"col_id\", col_string);\n\n const res = await fetch(\"/units\" + \"?\" + params.toString());\n const data = await res.json();\n if (!data.success) {\n throw new Error(\"Failed to fetch column units\");\n }\n const units = data.success.data;\n const unitsMap = new Map<number, UnitLong[]>();\n for (const unit of units) {\n const colID = unit.col_id;\n if (!unitsMap.has(colID)) {\n unitsMap.set(colID, []);\n }\n unitsMap.get(colID).push(unit);\n }\n const result: ColumnData[] = [];\n for (const colID of columns) {\n result.push({ columnID: colID, units: unitsMap.get(colID) || [] });\n }\n return result;\n}\n\nexport async function fetchColumnUnits(\n col_id: number,\n fetch = defaultFetch,\n): Promise<ColumnData> {\n const params = new URLSearchParams();\n params.append(\"response\", \"long\");\n params.append(\"col_id\", col_id.toString());\n const res = await fetch(\"/units\" + \"?\" + params.toString());\n const data = await res.json();\n if (!data.success) {\n throw new Error(\"Failed to fetch column units\");\n }\n const units = data.success.data;\n return { columnID: col_id, units };\n}\n"],"names":["crossFetch","joinURL","addQueryString","useAPIResult","feature","geoArea"],"mappings":";;;;;;;;AAgBA,SAAS,kBAAkB,SAAiB;AAC1C,SAAO,SAAU,KAAa,UAAmC,QAAW;AAC1E,WAAOA,4BAAW,UAAU,KAAK,OAAO;AAAA,EAC1C;AACF;AAEA,MAAM,eAAe,kBAAkB,+BAA+B;AAYtE,eAAsB,gBACpB,UAA8B,IACE;AAChC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,QAAQA,oBAAAA;AAAAA,EAAA,IACN;AAEJ,MAAI,OAAY,EAAE,OAAA;AAClB,MAAI,aAAa,MAAM;AACrB,WAAO,EAAE,GAAG,MAAM,YAAY,UAAA;AAAA,EAChC;AACA,MAAI,cAAkC;AACtC,MAAI,MAAM,QAAQ,UAAU,GAAG;AAC7B,kBAAc,WAAW,KAAK,GAAG;AAAA,EACnC,WAAW,cAAc,MAAM;AAC7B,kBAAc;AAAA,EAChB;AACA,OAAK,aAAa;AAElB,MAAI,aAAa,MAAM;AACrB,WAAO,EAAE,GAAG,MAAM,KAAK,KAAA;AAAA,EACzB;AAEA,MAAI,MAAM;AACV,MAAI,cAAc,MAAM;AACtB,UAAMC,aAAAA,QAAQ,YAAY,GAAG;AAAA,EAC/B;AAGA,QAAMC,aAAAA,eAAe,KAAK,IAAI;AAE9B,QAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC3B,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,gBAAgB;AAAA,IAAA;AAAA,EAClB,CACD;AAED,MAAI,OAAO,MAAM;AACf,WAAO;AAAA,EACT;AAGA,QAAM,OAAO,MAAM,IAAI,KAAA;AACvB,SAAO,mBAAmB,iBAAiB,MAAM,EAAE,IAAI,CAAC;AAC1D;AAEO,SAAS,kBAAkB;AAAA,EAChC,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,SAAS;AACX,GAAG;AACD,MAAI,MAAe;AACnB,MAAI,eAAe,QAAQ,cAAc,MAAM;AAC7C,UAAM;AAAA,EACR;AAEA,QAAM,YAAY,iBAAiB,MAAM;AAEzC,SAAOC,aAAAA;AAAAA,IACL;AAAA,IACA,EAAE,QAAQ,KAAK,aAAa,WAAA;AAAA,IAC5B;AAAA,EAAA;AAEJ;AAEA,SAAS,eAAe,KAAK;AAC3B,SAAO,mBAAmB,KAAK,SAAS,IAAI;AAC9C;AAEA,SAAS,mBAAmB,KAAK;AAC/B,SAAO,KAAK;AACd;AAEA,SAAS,gBAAgB,KAAK;AAC5B,MAAI;AACF,UAAM,EAAE,SAAS,IAAI;AACrB,UAAM,EAAE,UAAU,MAAMC,eAAAA,QAAQ,MAAM,KAAK,QAAQ,MAAM;AACzD,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,YAAQ,MAAM,GAAG;AACjB,WAAO,CAAA;AAAA,EACT;AACF;AAEA,SAAS,mBAAmB,SAAS;AACnC,SAAO;AAAA,IACL,0BAA0B,8BAA8B,OAAO,CAAC;AAAA,EAAA;AAEpE;AAEA,SAAS,iBACP,UAC6B;AAC7B,SAAO,SAAS,IAAI,CAAC,GAAG,MAAM;AAC5B,WAAO;AAAA,MACL,IAAI,EAAE,YAAY;AAAA,MAClB,GAAG;AAAA,IAAA;AAAA,EAEP,CAAC;AACH;AAEA,SAAS,8BAA8B,UAAU;AAC/C,SAAO,SAAS,OAAO,CAAC,MAAM,EAAE,YAAY,IAAI;AAClD;AAEA,SAAS,0BAA0B,UAAU;AAC3C,SAAO,SAAS,IAAI,CAAC,MAAM;AAEzB,QAAIC,cAAQ,EAAE,QAAQ,IAAI,MAAM;AAC9B,YAAM,WAAW,EAAE,SAAS,YAAY,CAAC,EAAE,CAAC;AAC5C,QAAE,WAAW;AAAA,QACX,MAAM;AAAA,QACN,aAAa;AAAA,MAAA;AAAA,IAEjB;AACA,WAAO;AAAA,EACT,CAAC;AACH;AAEA,MAAM,mBAAmB;AAAA,EACvB,UAAU;AAAA,EACV,SAAS;AAAA,EACT,cAAc;AAChB;AAEA,eAAe,eAAe,KAAK;AACjC,MAAI,OAAO,MAAM;AACf,WAAO;AAAA,EACT;AACA,QAAM,UAAU,MAAM,IAAI,KAAA;AAC1B,SAAO,QAAQ,SAAS,EAAE,MAAM;AAClC;AAEA,eAAsB,iBAAiB,QAAQ,cAAc;AAC3D,QAAM,MAAM,MAAM,MAAM,uBAAuB;AAC/C,SAAO,MAAM,eAAe,GAAG;AACjC;AAEA,eAAsB,eACpB,aACA,QAAQ,cACR;AACA,MAAI,MAAM;AACV,MAAI,eAAe,MAAM;AACvB,WAAO,iBAAiB,WAAW;AAAA,EACrC,OAAO;AACL,WAAO;AAAA,EACT;AACA,QAAM,MAAM,MAAM,MAAM,GAAG;AAC3B,SAAO,MAAM,eAAe,GAAG;AACjC;AAEA,eAAsB,kBAAkB,QAAQ,cAAc;AAC5D,QAAM,MAAM,MAAM,MAAM,wBAAwB;AAChD,SAAO,MAAM,eAAe,GAAG;AACjC;AAEA,eAAsB,UACpB,MACA,QAAQ,cACkB;AAC1B,MAAI,MAAM;AACV,MAAI,KAAK,UAAU,GAAG;AACpB,WAAO,CAAA;AAAA,EACT;AACA,SAAO,aAAa,KAAK,KAAK,GAAG;AACjC,QAAM,MAAM,MAAM,MAAM,GAAG;AAC3B,SAAO,MAAM,eAAe,GAAG;AACjC;AAEA,eAAsB,gBACpB,OACA,QAAQ,cACc;AACtB,MAAI,MAAM;AACV,MAAI,MAAM,UAAU,GAAG;AACrB,WAAO,CAAA;AAAA,EACT;AACA,SAAO,oBAAoB,MAAM,KAAK,GAAG;AACzC,QAAM,MAAM,MAAM,MAAM,GAAG;AAC3B,SAAO,MAAM,eAAe,GAAG;AACjC;AAOA,eAAsB,WACpB,SACA,QAAQ,cACe;AACvB,QAAM,SAAS,IAAI,gBAAA;AACnB,SAAO,OAAO,YAAY,MAAM;AAEhC,MAAI,QAAQ,UAAU,GAAG;AACvB,WAAO,CAAA;AAAA,EACT;AAEA,QAAM,aAAa,QAAQ,IAAI,CAAC,WAAW,OAAO,SAAA,CAAU,EAAE,KAAK,GAAG;AACtE,SAAO,OAAO,UAAU,UAAU;AAElC,QAAM,MAAM,MAAM,MAAM,YAAiB,OAAO,UAAU;AAC1D,QAAM,OAAO,MAAM,IAAI,KAAA;AACvB,MAAI,CAAC,KAAK,SAAS;AACjB,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AACA,QAAM,QAAQ,KAAK,QAAQ;AAC3B,QAAM,+BAAe,IAAA;AACrB,aAAW,QAAQ,OAAO;AACxB,UAAM,QAAQ,KAAK;AACnB,QAAI,CAAC,SAAS,IAAI,KAAK,GAAG;AACxB,eAAS,IAAI,OAAO,EAAE;AAAA,IACxB;AACA,aAAS,IAAI,KAAK,EAAE,KAAK,IAAI;AAAA,EAC/B;AACA,QAAM,SAAuB,CAAA;AAC7B,aAAW,SAAS,SAAS;AAC3B,WAAO,KAAK,EAAE,UAAU,OAAO,OAAO,SAAS,IAAI,KAAK,KAAK,CAAA,GAAI;AAAA,EACnE;AACA,SAAO;AACT;AAEA,eAAsB,iBACpB,QACA,QAAQ,cACa;AACrB,QAAM,SAAS,IAAI,gBAAA;AACnB,SAAO,OAAO,YAAY,MAAM;AAChC,SAAO,OAAO,UAAU,OAAO,SAAA,CAAU;AACzC,QAAM,MAAM,MAAM,MAAM,YAAiB,OAAO,UAAU;AAC1D,QAAM,OAAO,MAAM,IAAI,KAAA;AACvB,MAAI,CAAC,KAAK,SAAS;AACjB,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AACA,QAAM,QAAQ,KAAK,QAAQ;AAC3B,SAAO,EAAE,UAAU,QAAQ,MAAA;AAC7B;;;;;;;;;;"}
@@ -1,27 +0,0 @@
1
- import { ColumnGeoJSONRecord, MacrostratRef, StratName, UnitLong } from '@macrostrat/api-types';
2
- export type ColumnStatusCode = "in process" | "active" | "obsolete";
3
- export interface ColumnFetchOptions {
4
- apiBaseURL?: string;
5
- projectID?: number;
6
- statusCode?: ColumnStatusCode | ColumnStatusCode[];
7
- format?: "geojson" | "topojson" | "geojson_bare";
8
- fetch?: any;
9
- }
10
- export declare function fetchAllColumns(options?: ColumnFetchOptions): Promise<ColumnGeoJSONRecord[]>;
11
- export declare function useColumnFeatures({ apiRoute, status_code, project_id, format, }: {
12
- apiRoute?: string;
13
- status_code: any;
14
- project_id: any;
15
- format?: string;
16
- }): unknown;
17
- export declare function fetchLithologies(fetch?: (url: string, options?: RequestInit | undefined) => Promise<Response>): Promise<any>;
18
- export declare function fetchIntervals(timescaleID: number | null, fetch?: (url: string, options?: RequestInit | undefined) => Promise<Response>): Promise<any>;
19
- export declare function fetchEnvironments(fetch?: (url: string, options?: RequestInit | undefined) => Promise<Response>): Promise<any>;
20
- export declare function fetchRefs(refs: number[], fetch?: (url: string, options?: RequestInit | undefined) => Promise<Response>): Promise<MacrostratRef[]>;
21
- export declare function fetchStratNames(names: number[], fetch?: (url: string, options?: RequestInit | undefined) => Promise<Response>): Promise<StratName[]>;
22
- export type ColumnData = {
23
- units: UnitLong[];
24
- columnID: number;
25
- };
26
- export declare function fetchUnits(columns: number[], fetch?: (url: string, options?: RequestInit | undefined) => Promise<Response>): Promise<ColumnData[]>;
27
- export declare function fetchColumnUnits(col_id: number, fetch?: (url: string, options?: RequestInit | undefined) => Promise<Response>): Promise<ColumnData>;
@@ -1,210 +0,0 @@
1
- import { joinURL, addQueryString, useAPIResult } from "@macrostrat/ui-components";
2
- import crossFetch from "cross-fetch";
3
- import { feature } from "topojson-client";
4
- import { geoArea } from "d3-geo";
5
- function createScopedFetch(baseURL) {
6
- return function(url, options = void 0) {
7
- return crossFetch(baseURL + url, options);
8
- };
9
- }
10
- const defaultFetch = createScopedFetch("https://macrostrat.org/api/v2");
11
- async function fetchAllColumns(options = {}) {
12
- const {
13
- apiBaseURL,
14
- projectID,
15
- format = "topojson",
16
- statusCode,
17
- fetch = crossFetch
18
- } = options;
19
- let args = { format };
20
- if (projectID != null) {
21
- args = { ...args, project_id: projectID };
22
- }
23
- let _statusCode = void 0;
24
- if (Array.isArray(statusCode)) {
25
- _statusCode = statusCode.join(",");
26
- } else if (statusCode != null) {
27
- _statusCode = statusCode;
28
- }
29
- args.statusCode = _statusCode;
30
- if (projectID == null) {
31
- args = { ...args, all: true };
32
- }
33
- let url = "/columns";
34
- if (apiBaseURL != null) {
35
- url = joinURL(apiBaseURL, url);
36
- }
37
- url = addQueryString(url, args);
38
- const res = await fetch(url, {
39
- method: "GET",
40
- headers: {
41
- "Content-Type": "application/json"
42
- }
43
- });
44
- if (res == null) {
45
- return null;
46
- }
47
- const data = await res.json();
48
- return postProcessColumns(columnProcessors[format](data));
49
- }
50
- function useColumnFeatures({
51
- apiRoute = "/columns",
52
- status_code,
53
- project_id,
54
- format = "geojson"
55
- }) {
56
- let all = void 0;
57
- if (status_code == null && project_id == null) {
58
- all = true;
59
- }
60
- const processor = columnProcessors[format];
61
- return useAPIResult(
62
- apiRoute,
63
- { format, all, status_code, project_id },
64
- processor
65
- );
66
- }
67
- function processGeoJSON(res) {
68
- return processGeoJSONBare(res?.success?.data);
69
- }
70
- function processGeoJSONBare(res) {
71
- return res?.features;
72
- }
73
- function processTopoJSON(res) {
74
- try {
75
- const { data } = res.success;
76
- const { features: f } = feature(data, data.objects.output);
77
- return f;
78
- } catch (err) {
79
- console.error(err);
80
- return [];
81
- }
82
- }
83
- function postProcessColumns(columns) {
84
- return promoteColumnIDs(
85
- convertSmallAreasToPoints(removeFeaturesWithoutGeometry(columns))
86
- );
87
- }
88
- function promoteColumnIDs(features) {
89
- return features.map((f, i) => {
90
- return {
91
- id: f.properties?.col_id,
92
- ...f
93
- };
94
- });
95
- }
96
- function removeFeaturesWithoutGeometry(features) {
97
- return features.filter((f) => f.geometry != null);
98
- }
99
- function convertSmallAreasToPoints(features) {
100
- return features.map((f) => {
101
- if (geoArea(f.geometry) < 1e-8) {
102
- const centroid = f.geometry.coordinates[0][0];
103
- f.geometry = {
104
- type: "Point",
105
- coordinates: centroid
106
- };
107
- }
108
- return f;
109
- });
110
- }
111
- const columnProcessors = {
112
- topojson: processTopoJSON,
113
- geojson: processGeoJSON,
114
- geojson_bare: processGeoJSONBare
115
- };
116
- async function unwrapResponse(res) {
117
- if (res == null) {
118
- return null;
119
- }
120
- const resData = await res.json();
121
- return resData["success"]["data"];
122
- }
123
- async function fetchLithologies(fetch = defaultFetch) {
124
- const res = await fetch("/defs/lithologies?all");
125
- return await unwrapResponse(res);
126
- }
127
- async function fetchIntervals(timescaleID, fetch = defaultFetch) {
128
- let url = `/defs/intervals`;
129
- if (timescaleID != null) {
130
- url += `?timescale_id=${timescaleID}`;
131
- } else {
132
- url += "?all";
133
- }
134
- const res = await fetch(url);
135
- return await unwrapResponse(res);
136
- }
137
- async function fetchEnvironments(fetch = defaultFetch) {
138
- const res = await fetch("/defs/environments?all");
139
- return await unwrapResponse(res);
140
- }
141
- async function fetchRefs(refs, fetch = defaultFetch) {
142
- let url = `/defs/refs`;
143
- if (refs.length == 0) {
144
- return [];
145
- }
146
- url += "?ref_id=" + refs.join(",");
147
- const res = await fetch(url);
148
- return await unwrapResponse(res);
149
- }
150
- async function fetchStratNames(names, fetch = defaultFetch) {
151
- let url = `/defs/strat_names`;
152
- if (names.length == 0) {
153
- return [];
154
- }
155
- url += "?strat_name_id=" + names.join(",");
156
- const res = await fetch(url);
157
- return await unwrapResponse(res);
158
- }
159
- async function fetchUnits(columns, fetch = defaultFetch) {
160
- const params = new URLSearchParams();
161
- params.append("response", "long");
162
- if (columns.length == 0) {
163
- return [];
164
- }
165
- const col_string = columns.map((column) => column.toString()).join(",");
166
- params.append("col_id", col_string);
167
- const res = await fetch("/units?" + params.toString());
168
- const data = await res.json();
169
- if (!data.success) {
170
- throw new Error("Failed to fetch column units");
171
- }
172
- const units = data.success.data;
173
- const unitsMap = /* @__PURE__ */ new Map();
174
- for (const unit of units) {
175
- const colID = unit.col_id;
176
- if (!unitsMap.has(colID)) {
177
- unitsMap.set(colID, []);
178
- }
179
- unitsMap.get(colID).push(unit);
180
- }
181
- const result = [];
182
- for (const colID of columns) {
183
- result.push({ columnID: colID, units: unitsMap.get(colID) || [] });
184
- }
185
- return result;
186
- }
187
- async function fetchColumnUnits(col_id, fetch = defaultFetch) {
188
- const params = new URLSearchParams();
189
- params.append("response", "long");
190
- params.append("col_id", col_id.toString());
191
- const res = await fetch("/units?" + params.toString());
192
- const data = await res.json();
193
- if (!data.success) {
194
- throw new Error("Failed to fetch column units");
195
- }
196
- const units = data.success.data;
197
- return { columnID: col_id, units };
198
- }
199
- export {
200
- fetchAllColumns,
201
- fetchColumnUnits,
202
- fetchEnvironments,
203
- fetchIntervals,
204
- fetchLithologies,
205
- fetchRefs,
206
- fetchStratNames,
207
- fetchUnits,
208
- useColumnFeatures
209
- };
210
- //# sourceMappingURL=fetch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch.js","sources":["../../src/data-provider/fetch.ts"],"sourcesContent":["import {\n ColumnGeoJSONRecord,\n ColumnGeoJSONRecordWithID,\n MacrostratRef,\n StratName,\n UnitLong,\n} from \"@macrostrat/api-types\";\nimport {\n addQueryString,\n joinURL,\n useAPIResult,\n} from \"@macrostrat/ui-components\";\nimport crossFetch from \"cross-fetch\";\nimport { feature } from \"topojson-client\";\nimport { geoArea } from \"d3-geo\";\n\nfunction createScopedFetch(baseURL: string) {\n return function (url: string, options: RequestInit | undefined = undefined) {\n return crossFetch(baseURL + url, options);\n };\n}\n\nconst defaultFetch = createScopedFetch(\"https://macrostrat.org/api/v2\");\n\nexport type ColumnStatusCode = \"in process\" | \"active\" | \"obsolete\";\n\nexport interface ColumnFetchOptions {\n apiBaseURL?: string;\n projectID?: number;\n statusCode?: ColumnStatusCode | ColumnStatusCode[];\n format?: \"geojson\" | \"topojson\" | \"geojson_bare\";\n fetch?: any;\n}\n\nexport async function fetchAllColumns(\n options: ColumnFetchOptions = {},\n): Promise<ColumnGeoJSONRecord[]> {\n const {\n apiBaseURL,\n projectID,\n format = \"topojson\",\n statusCode,\n fetch = crossFetch,\n } = options;\n\n let args: any = { format };\n if (projectID != null) {\n args = { ...args, project_id: projectID };\n }\n let _statusCode: string | undefined = undefined;\n if (Array.isArray(statusCode)) {\n _statusCode = statusCode.join(\",\");\n } else if (statusCode != null) {\n _statusCode = statusCode;\n }\n args.statusCode = _statusCode;\n\n if (projectID == null) {\n args = { ...args, all: true };\n }\n\n let url = \"/columns\";\n if (apiBaseURL != null) {\n url = joinURL(apiBaseURL, url);\n }\n\n // Try with fetch\n url = addQueryString(url, args);\n\n const res = await fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (res == null) {\n return null;\n }\n\n // Get JSON\n const data = await res.json();\n return postProcessColumns(columnProcessors[format](data));\n}\n\nexport function useColumnFeatures({\n apiRoute = \"/columns\",\n status_code,\n project_id,\n format = \"geojson\",\n}) {\n let all: boolean = undefined;\n if (status_code == null && project_id == null) {\n all = true;\n }\n\n const processor = columnProcessors[format];\n\n return useAPIResult(\n apiRoute,\n { format, all, status_code, project_id },\n processor,\n );\n}\n\nfunction processGeoJSON(res) {\n return processGeoJSONBare(res?.success?.data);\n}\n\nfunction processGeoJSONBare(res) {\n return res?.features;\n}\n\nfunction processTopoJSON(res) {\n try {\n const { data } = res.success;\n const { features: f } = feature(data, data.objects.output) as any;\n return f;\n } catch (err) {\n console.error(err);\n return [];\n }\n}\n\nfunction postProcessColumns(columns) {\n return promoteColumnIDs(\n convertSmallAreasToPoints(removeFeaturesWithoutGeometry(columns)),\n );\n}\n\nfunction promoteColumnIDs(\n features: ColumnGeoJSONRecord[],\n): ColumnGeoJSONRecordWithID[] {\n return features.map((f, i) => {\n return {\n id: f.properties?.col_id,\n ...f,\n };\n });\n}\n\nfunction removeFeaturesWithoutGeometry(features) {\n return features.filter((f) => f.geometry != null);\n}\n\nfunction convertSmallAreasToPoints(features) {\n return features.map((f) => {\n // GeoArea takes a long time to run. We are really more worried about points that are zero-area\n if (geoArea(f.geometry) < 1e-8) {\n const centroid = f.geometry.coordinates[0][0];\n f.geometry = {\n type: \"Point\",\n coordinates: centroid,\n };\n }\n return f;\n });\n}\n\nconst columnProcessors = {\n topojson: processTopoJSON,\n geojson: processGeoJSON,\n geojson_bare: processGeoJSONBare,\n};\n\nasync function unwrapResponse(res) {\n if (res == null) {\n return null;\n }\n const resData = await res.json();\n return resData[\"success\"][\"data\"];\n}\n\nexport async function fetchLithologies(fetch = defaultFetch) {\n const res = await fetch(\"/defs/lithologies?all\");\n return await unwrapResponse(res);\n}\n\nexport async function fetchIntervals(\n timescaleID: number | null,\n fetch = defaultFetch,\n) {\n let url = `/defs/intervals`;\n if (timescaleID != null) {\n url += `?timescale_id=${timescaleID}`;\n } else {\n url += \"?all\";\n }\n const res = await fetch(url);\n return await unwrapResponse(res);\n}\n\nexport async function fetchEnvironments(fetch = defaultFetch) {\n const res = await fetch(\"/defs/environments?all\");\n return await unwrapResponse(res);\n}\n\nexport async function fetchRefs(\n refs: number[],\n fetch = defaultFetch,\n): Promise<MacrostratRef[]> {\n let url = `/defs/refs`;\n if (refs.length == 0) {\n return [];\n }\n url += \"?ref_id=\" + refs.join(\",\");\n const res = await fetch(url);\n return await unwrapResponse(res);\n}\n\nexport async function fetchStratNames(\n names: number[],\n fetch = defaultFetch,\n): Promise<StratName[]> {\n let url = `/defs/strat_names`;\n if (names.length == 0) {\n return [];\n }\n url += \"?strat_name_id=\" + names.join(\",\");\n const res = await fetch(url);\n return await unwrapResponse(res);\n}\n\nexport type ColumnData = {\n units: UnitLong[];\n columnID: number;\n};\n\nexport async function fetchUnits(\n columns: number[],\n fetch = defaultFetch,\n): Promise<ColumnData[]> {\n const params = new URLSearchParams();\n params.append(\"response\", \"long\");\n\n if (columns.length == 0) {\n return [];\n }\n\n const col_string = columns.map((column) => column.toString()).join(\",\");\n params.append(\"col_id\", col_string);\n\n const res = await fetch(\"/units\" + \"?\" + params.toString());\n const data = await res.json();\n if (!data.success) {\n throw new Error(\"Failed to fetch column units\");\n }\n const units = data.success.data;\n const unitsMap = new Map<number, UnitLong[]>();\n for (const unit of units) {\n const colID = unit.col_id;\n if (!unitsMap.has(colID)) {\n unitsMap.set(colID, []);\n }\n unitsMap.get(colID).push(unit);\n }\n const result: ColumnData[] = [];\n for (const colID of columns) {\n result.push({ columnID: colID, units: unitsMap.get(colID) || [] });\n }\n return result;\n}\n\nexport async function fetchColumnUnits(\n col_id: number,\n fetch = defaultFetch,\n): Promise<ColumnData> {\n const params = new URLSearchParams();\n params.append(\"response\", \"long\");\n params.append(\"col_id\", col_id.toString());\n const res = await fetch(\"/units\" + \"?\" + params.toString());\n const data = await res.json();\n if (!data.success) {\n throw new Error(\"Failed to fetch column units\");\n }\n const units = data.success.data;\n return { columnID: col_id, units };\n}\n"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { CompositeColumnScale } from '../prepare-units/composite-scale';
3
- import { ColumnAxisType } from '@macrostrat/column-components';
4
- import { ExtUnit, PackageLayoutData } from '../prepare-units';
5
- import { UnitSelectionCallbacks } from './unit-selection';
6
- import { BaseUnit } from '@macrostrat/api-types';
7
- import { AtomMap } from './core';
8
- export interface ColumnStateProviderProps<T extends BaseUnit> extends Partial<UnitSelectionCallbacks> {
9
- children: ReactNode;
10
- units: T[];
11
- selectedUnit: number | null;
12
- allowUnitSelection?: boolean;
13
- }
14
- export declare function MacrostratColumnStateProvider<T extends BaseUnit>({ children, units, allowUnitSelection, onUnitSelected, selectedUnit, }: ColumnStateProviderProps<T>): import('react').FunctionComponentElement<{
15
- children: ReactNode;
16
- atoms?: AtomMap;
17
- shouldUpdateAtoms?: boolean;
18
- }>;
19
- export interface MacrostratColumnDataContext<T extends BaseUnit> {
20
- units: T[];
21
- sections: PackageLayoutData[];
22
- totalHeight?: number;
23
- axisType?: ColumnAxisType;
24
- allowUnitSelection?: boolean;
25
- }
26
- export interface ColumnDataProviderProps<T extends BaseUnit> extends MacrostratColumnDataContext<T>, ColumnStateProviderProps<T> {
27
- children: ReactNode;
28
- }
29
- export declare function MacrostratColumnDataProvider<T extends BaseUnit>({ children, units, sections, totalHeight, axisType, allowUnitSelection, onUnitSelected, selectedUnit, }: ColumnDataProviderProps<T>): import('react').FunctionComponentElement<ColumnStateProviderProps<BaseUnit>>;
30
- export declare function UnitSelectionProvider(props: ColumnStateProviderProps<any>): import('react').FunctionComponentElement<ColumnStateProviderProps<BaseUnit>>;
31
- export declare function useMacrostratColumnData(): MacrostratColumnDataContext<any>;
32
- export declare function useMacrostratUnits(): any;
33
- export declare function useColumnUnitsMap(): Map<number, ExtUnit> | null;
34
- export declare function useCompositeScale(): CompositeColumnScale;
@@ -1,87 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { LithologyTagFeature } from '@macrostrat/data-components';
3
- import { Environment, UnitLong, Lithology, Interval } from '@macrostrat/api-types';
4
- export interface UnitDetailsPanelProps {
5
- unit: any;
6
- onClose?: any;
7
- className?: string;
8
- actions?: ReactNode;
9
- hiddenActions?: ReactNode;
10
- features?: Set<UnitDetailsFeature>;
11
- lithologyFeatures?: Set<LithologyTagFeature>;
12
- onSelectUnit?: (unitID: number) => void;
13
- onClickItem?: MacrostratItemClickHandler;
14
- }
15
- export declare function UnitDetailsPanel({ unit, onClose, className, features, lithologyFeatures, actions, hiddenActions, onSelectUnit, onClickItem, }: UnitDetailsPanelProps): import('react').ReactElement<{
16
- className: string;
17
- }, string | import('react').JSXElementConstructor<any>>;
18
- export declare function LegendPanelHeader({ title, id, onClose, actions, hiddenActions, }: {
19
- title?: string | null;
20
- id?: number | null;
21
- onClose?: () => void;
22
- actions?: ReactNode | null;
23
- hiddenActions?: ReactNode | null;
24
- }): import('react').DOMElement<import('react').DOMAttributes<Element>, Element>;
25
- export declare enum UnitDetailsFeature {
26
- AdjacentUnits = "adjacent-units",
27
- Color = "color",
28
- OutcropType = "outcrop-type",
29
- JSONToggle = "json-toggle",
30
- DepthRange = "depth-range",
31
- ColumnName = "column-name"
32
- }
33
- export type MacrostratItemClickHandler = (event: MouseEvent, item: Lithology | Environment | UnitLong | Interval | {
34
- strat_name_id: number;
35
- }) => void;
36
- export declare function ReferencesField({ refs, className, ...rest }: {
37
- [x: string]: any;
38
- refs: any;
39
- className?: any;
40
- }): import('react').FunctionComponentElement<{
41
- label?: string;
42
- value?: any;
43
- inline?: boolean;
44
- showIfEmpty?: boolean;
45
- className?: string;
46
- children?: any;
47
- unit?: string;
48
- row?: boolean;
49
- }>;
50
- export declare function AgeLabel({ age, maximumFractionDigits, minimumFractionDigits, className, }: {
51
- age: number;
52
- className?: string;
53
- maximumFractionDigits?: number;
54
- minimumFractionDigits?: number;
55
- }): import('react').FunctionComponentElement<{
56
- value?: any;
57
- unit?: string;
58
- children?: any;
59
- className?: string;
60
- }>;
61
- export declare function Duration({ value, maximumFractionDigits, minimumFractionDigits, }: {
62
- value: any;
63
- maximumFractionDigits?: number;
64
- minimumFractionDigits?: number;
65
- }): import('react').FunctionComponentElement<{
66
- value?: any;
67
- unit?: string;
68
- children?: any;
69
- className?: string;
70
- }>;
71
- export declare function ClickableText({ onClick, className, children, }: {
72
- onClick: () => void;
73
- className?: string;
74
- children: ReactNode;
75
- }): import('react').DetailedReactHTMLElement<{
76
- onClick: () => void;
77
- className: string;
78
- }, HTMLElement>;
79
- export declare function Identifier({ id, onClick, className, }: {
80
- id: number | string;
81
- onClick?: (id: number | string) => void;
82
- className?: string;
83
- }): import('react').FunctionComponentElement<{
84
- onClick: () => void;
85
- className?: string;
86
- children: ReactNode;
87
- }>;