@macrostrat/column-views 2.1.3 → 2.1.4

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 (155) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/esm/{column-views.3b637517.js → column-views.02f3732a.js} +2 -2
  3. package/dist/esm/{column-views.3b637517.js.map → column-views.02f3732a.js.map} +1 -1
  4. package/dist/esm/{column-views.3729c372.js → column-views.0a159282.js} +2 -2
  5. package/dist/esm/{column-views.3729c372.js.map → column-views.0a159282.js.map} +1 -1
  6. package/dist/esm/{column-views.d099eaf9.js → column-views.1f7fb650.js} +2 -2
  7. package/dist/esm/{column-views.d099eaf9.js.map → column-views.1f7fb650.js.map} +1 -1
  8. package/dist/esm/{column-views.43fb819d.js → column-views.243da806.js} +3 -3
  9. package/dist/esm/{column-views.43fb819d.js.map → column-views.243da806.js.map} +1 -1
  10. package/dist/esm/{column-views.abe90091.js → column-views.2ff3dd8b.js} +2 -2
  11. package/dist/esm/{column-views.abe90091.js.map → column-views.2ff3dd8b.js.map} +1 -1
  12. package/dist/esm/column-views.38a305a0.js +13 -0
  13. package/dist/esm/{column-views.6d5e3098.js.map → column-views.38a305a0.js.map} +1 -1
  14. package/dist/esm/{column-views.a23b2c92.js → column-views.42b89c52.js} +7 -7
  15. package/dist/esm/{column-views.a23b2c92.js.map → column-views.42b89c52.js.map} +1 -1
  16. package/dist/esm/{column-views.57636733.css → column-views.448c0687.css} +5 -5
  17. package/dist/esm/column-views.448c0687.css.map +1 -0
  18. package/dist/esm/{column-views.07db2ab1.js → column-views.547b2730.js} +7 -7
  19. package/dist/esm/{column-views.07db2ab1.js.map → column-views.547b2730.js.map} +1 -1
  20. package/dist/esm/{column-views.53f4160e.js → column-views.676cb1d3.js} +3 -3
  21. package/dist/esm/{column-views.53f4160e.js.map → column-views.676cb1d3.js.map} +1 -1
  22. package/dist/esm/{column-views.ff031876.js → column-views.75ea6dbe.js} +2 -2
  23. package/dist/esm/{column-views.ff031876.js.map → column-views.75ea6dbe.js.map} +1 -1
  24. package/dist/esm/{column-views.6ca980ae.js → column-views.769fa0ee.js} +2 -2
  25. package/dist/esm/{column-views.6ca980ae.js.map → column-views.769fa0ee.js.map} +1 -1
  26. package/dist/esm/{column-views.a2cf8f33.js → column-views.775846c9.js} +2 -2
  27. package/dist/esm/{column-views.a2cf8f33.js.map → column-views.775846c9.js.map} +1 -1
  28. package/dist/esm/{column-views.0e06c069.js → column-views.77b49a43.js} +5 -5
  29. package/dist/esm/{column-views.0e06c069.js.map → column-views.77b49a43.js.map} +1 -1
  30. package/dist/esm/{column-views.49adc09e.js → column-views.78bd3f09.js} +2 -2
  31. package/dist/esm/{column-views.49adc09e.js.map → column-views.78bd3f09.js.map} +1 -1
  32. package/dist/esm/{column-views.34a1ac4f.js → column-views.7ca9e1cd.js} +2 -2
  33. package/dist/esm/{column-views.34a1ac4f.js.map → column-views.7ca9e1cd.js.map} +1 -1
  34. package/dist/esm/column-views.8703a35b.js +163 -0
  35. package/dist/esm/column-views.8703a35b.js.map +1 -0
  36. package/dist/esm/{column-views.b12a6374.css → column-views.8d4ce558.css} +5 -1
  37. package/dist/esm/column-views.8d4ce558.css.map +1 -0
  38. package/dist/esm/{column-views.6dc251d3.js → column-views.8e3dec90.js} +2 -2
  39. package/dist/esm/{column-views.6dc251d3.js.map → column-views.8e3dec90.js.map} +1 -1
  40. package/dist/esm/{column-views.103b1cb0.js → column-views.935ef6f7.js} +2 -2
  41. package/dist/esm/{column-views.103b1cb0.js.map → column-views.935ef6f7.js.map} +1 -1
  42. package/dist/esm/column-views.97d542eb.js +37 -0
  43. package/dist/esm/column-views.97d542eb.js.map +1 -0
  44. package/dist/esm/{column-views.a5c1bbf0.js → column-views.a195109e.js} +2 -2
  45. package/dist/esm/{column-views.a5c1bbf0.js.map → column-views.a195109e.js.map} +1 -1
  46. package/dist/esm/{column-views.3d001ab8.js → column-views.a6301a41.js} +4 -4
  47. package/dist/esm/{column-views.3d001ab8.js.map → column-views.a6301a41.js.map} +1 -1
  48. package/dist/esm/{column-views.7d47a72a.js → column-views.ab0380ed.js} +3 -3
  49. package/dist/esm/{column-views.7d47a72a.js.map → column-views.ab0380ed.js.map} +1 -1
  50. package/dist/esm/{column-views.1c92b88f.js → column-views.b3c1eb9e.js} +4 -4
  51. package/dist/esm/column-views.b3c1eb9e.js.map +1 -0
  52. package/dist/esm/{column-views.9771145a.js → column-views.cc5244c4.js} +2 -2
  53. package/dist/esm/{column-views.9771145a.js.map → column-views.cc5244c4.js.map} +1 -1
  54. package/dist/esm/column-views.cdadc5c2.js.map +1 -1
  55. package/dist/esm/{column-views.a8926321.js → column-views.e3b9a317.js} +2 -2
  56. package/dist/esm/{column-views.a8926321.js.map → column-views.e3b9a317.js.map} +1 -1
  57. package/dist/esm/{column-views.572b70fd.js → column-views.e7ab5af0.js} +2 -2
  58. package/dist/esm/{column-views.572b70fd.js.map → column-views.e7ab5af0.js.map} +1 -1
  59. package/dist/esm/{column-views.2e0ff311.js → column-views.f20eb583.js} +4 -55
  60. package/dist/esm/column-views.f20eb583.js.map +1 -0
  61. package/dist/esm/{column-views.323cad41.js → column-views.fbc7401f.js} +4 -4
  62. package/dist/esm/{column-views.323cad41.js.map → column-views.fbc7401f.js.map} +1 -1
  63. package/dist/esm/index.d.ts +29 -2
  64. package/dist/esm/index.d.ts.map +1 -1
  65. package/dist/esm/index.js +10 -10
  66. package/dist/node/column-views.085f4a51.js +2 -0
  67. package/dist/node/column-views.085f4a51.js.map +1 -0
  68. package/dist/node/{column-views.2ab1c2f8.js → column-views.0dfc7ef7.js} +2 -2
  69. package/dist/node/{column-views.2ab1c2f8.js.map → column-views.0dfc7ef7.js.map} +1 -1
  70. package/dist/node/column-views.2a6b842d.js +2 -0
  71. package/dist/node/column-views.2a6b842d.js.map +1 -0
  72. package/dist/node/{column-views.6c7a40e0.js → column-views.2ca669bc.js} +2 -2
  73. package/dist/node/{column-views.6c7a40e0.js.map → column-views.2ca669bc.js.map} +1 -1
  74. package/dist/node/column-views.2d957a97.js +2 -0
  75. package/dist/node/column-views.2d957a97.js.map +1 -0
  76. package/dist/node/column-views.307661d1.css +2 -0
  77. package/dist/node/column-views.307661d1.css.map +1 -0
  78. package/dist/node/{column-views.4381c411.js → column-views.45fab61b.js} +2 -2
  79. package/dist/node/{column-views.4381c411.js.map → column-views.45fab61b.js.map} +1 -1
  80. package/dist/node/{column-views.e4f18ff7.js → column-views.492b4917.js} +2 -2
  81. package/dist/node/{column-views.e4f18ff7.js.map → column-views.492b4917.js.map} +1 -1
  82. package/dist/node/{column-views.3f032518.js → column-views.4ca62e5d.js} +2 -2
  83. package/dist/node/{column-views.3f032518.js.map → column-views.4ca62e5d.js.map} +1 -1
  84. package/dist/node/{column-views.31f57130.js → column-views.51bc87ca.js} +2 -2
  85. package/dist/node/{column-views.31f57130.js.map → column-views.51bc87ca.js.map} +1 -1
  86. package/dist/node/{column-views.c18d5bf5.js → column-views.58d2f993.js} +2 -2
  87. package/dist/node/{column-views.c18d5bf5.js.map → column-views.58d2f993.js.map} +1 -1
  88. package/dist/node/{column-views.f17b6142.js → column-views.65f091ea.js} +2 -2
  89. package/dist/node/{column-views.f17b6142.js.map → column-views.65f091ea.js.map} +1 -1
  90. package/dist/node/{column-views.fc05616e.js → column-views.6f7a432f.js} +2 -2
  91. package/dist/node/{column-views.fc05616e.js.map → column-views.6f7a432f.js.map} +1 -1
  92. package/dist/node/{column-views.556e8f69.js → column-views.758b9bc1.js} +2 -2
  93. package/dist/node/{column-views.556e8f69.js.map → column-views.758b9bc1.js.map} +1 -1
  94. package/dist/node/column-views.80fcf105.js +2 -0
  95. package/dist/node/column-views.80fcf105.js.map +1 -0
  96. package/dist/node/{column-views.36094762.js → column-views.858b5cf4.js} +2 -2
  97. package/dist/node/{column-views.36094762.js.map → column-views.858b5cf4.js.map} +1 -1
  98. package/dist/node/{column-views.507635e2.js → column-views.91043465.js} +2 -2
  99. package/dist/node/{column-views.507635e2.js.map → column-views.91043465.js.map} +1 -1
  100. package/dist/node/{column-views.13c4ea85.js → column-views.976a829b.js} +2 -2
  101. package/dist/node/{column-views.13c4ea85.js.map → column-views.976a829b.js.map} +1 -1
  102. package/dist/node/{column-views.75b0a8f8.js → column-views.9b7a9ae1.js} +2 -2
  103. package/dist/node/{column-views.75b0a8f8.js.map → column-views.9b7a9ae1.js.map} +1 -1
  104. package/dist/node/{column-views.af275c48.js → column-views.9de31cdb.js} +2 -2
  105. package/dist/node/{column-views.af275c48.js.map → column-views.9de31cdb.js.map} +1 -1
  106. package/dist/node/{column-views.db5d74bd.js → column-views.a372c943.js} +2 -2
  107. package/dist/node/{column-views.db5d74bd.js.map → column-views.a372c943.js.map} +1 -1
  108. package/dist/node/column-views.a4e6d4ad.js +2 -0
  109. package/dist/node/column-views.a4e6d4ad.js.map +1 -0
  110. package/dist/node/{column-views.372bbee2.js → column-views.a7256aa7.js} +2 -2
  111. package/dist/node/{column-views.372bbee2.js.map → column-views.a7256aa7.js.map} +1 -1
  112. package/dist/node/column-views.c4b409e1.css +2 -0
  113. package/dist/node/column-views.c4b409e1.css.map +1 -0
  114. package/dist/node/{column-views.afbf351c.js → column-views.cef1b814.js} +2 -2
  115. package/dist/node/{column-views.afbf351c.js.map → column-views.cef1b814.js.map} +1 -1
  116. package/dist/node/{column-views.f15a6ed4.js → column-views.d9add589.js} +2 -2
  117. package/dist/node/{column-views.f15a6ed4.js.map → column-views.d9add589.js.map} +1 -1
  118. package/dist/node/{column-views.3d220e0c.js → column-views.df97f28e.js} +2 -2
  119. package/dist/node/{column-views.3d220e0c.js.map → column-views.df97f28e.js.map} +1 -1
  120. package/dist/node/{column-views.0bb1ec93.js → column-views.dfb2361a.js} +2 -2
  121. package/dist/node/{column-views.0bb1ec93.js.map → column-views.dfb2361a.js.map} +1 -1
  122. package/dist/node/{column-views.50034105.js → column-views.e3ba0594.js} +2 -2
  123. package/dist/node/{column-views.50034105.js.map → column-views.e3ba0594.js.map} +1 -1
  124. package/dist/node/{column-views.adf9e5b3.js → column-views.eeca917f.js} +2 -2
  125. package/dist/node/{column-views.adf9e5b3.js.map → column-views.eeca917f.js.map} +1 -1
  126. package/dist/node/index.js +1 -1
  127. package/dist/node/index.js.map +1 -1
  128. package/package.json +5 -5
  129. package/src/column.module.sass +3 -0
  130. package/src/data-provider/base.ts +1 -1
  131. package/src/facets/fossils/index.module.sass +1 -1
  132. package/src/facets/fossils/index.ts +104 -12
  133. package/src/facets/index.ts +1 -0
  134. package/src/facets/measurements/index.ts +39 -0
  135. package/src/facets/measurements/provider.ts +80 -0
  136. package/src/units/boxes.ts +1 -64
  137. package/dist/esm/column-views.1c92b88f.js.map +0 -1
  138. package/dist/esm/column-views.2e0ff311.js.map +0 -1
  139. package/dist/esm/column-views.57636733.css.map +0 -1
  140. package/dist/esm/column-views.60dc6bfc.js +0 -108
  141. package/dist/esm/column-views.60dc6bfc.js.map +0 -1
  142. package/dist/esm/column-views.6d5e3098.js +0 -11
  143. package/dist/esm/column-views.b12a6374.css.map +0 -1
  144. package/dist/node/column-views.226d0bdb.js +0 -2
  145. package/dist/node/column-views.226d0bdb.js.map +0 -1
  146. package/dist/node/column-views.3345cd7a.js +0 -2
  147. package/dist/node/column-views.3345cd7a.js.map +0 -1
  148. package/dist/node/column-views.5f05b73f.js +0 -2
  149. package/dist/node/column-views.5f05b73f.js.map +0 -1
  150. package/dist/node/column-views.b180e8c9.js +0 -2
  151. package/dist/node/column-views.b180e8c9.js.map +0 -1
  152. package/dist/node/column-views.cd468adb.css +0 -2
  153. package/dist/node/column-views.cd468adb.css.map +0 -1
  154. package/dist/node/column-views.e1a43131.css +0 -2
  155. package/dist/node/column-views.e1a43131.css.map +0 -1
@@ -0,0 +1,39 @@
1
+ import h from "@macrostrat/hyper";
2
+ import { useAPIResult } from "@macrostrat/ui-components";
3
+ import { BaseMeasurementsColumn, TruncatedList } from "../fossils";
4
+
5
+ function useSGPData({ col_id }) {
6
+ const res = useAPIResult(
7
+ "https://dev.macrostrat.org/api/pg/sgp_unit_matches",
8
+ {
9
+ col_id: `eq.${col_id}`,
10
+ },
11
+ (d) => d,
12
+ );
13
+
14
+ return res;
15
+ }
16
+
17
+ export function SGPMeasurementsColumn({ columnID, color = "magenta" }) {
18
+ const data = useSGPData({ col_id: columnID });
19
+
20
+ if (data == null) return null;
21
+
22
+ return h(BaseMeasurementsColumn, {
23
+ data,
24
+ noteComponent: SGPSamplesNote,
25
+ });
26
+ }
27
+
28
+ function SGPSamplesNote(props) {
29
+ const { note } = props;
30
+ const sgp_samples = note?.data?.sgp_samples;
31
+
32
+ if (sgp_samples == null || sgp_samples.length === 0) return null;
33
+
34
+ return h(TruncatedList, {
35
+ className: "sgp-samples",
36
+ data: sgp_samples,
37
+ itemRenderer: (p) => h("span", p.data.name),
38
+ });
39
+ }
@@ -0,0 +1,80 @@
1
+ import { group } from "d3-array";
2
+ import { createAPIContext, useAPIResult } from "@macrostrat/ui-components";
3
+
4
+ const responseUnwrapper = (d) => d.records;
5
+
6
+ const pbdbAPIContext = createAPIContext({
7
+ baseURL: "https://training.paleobiodb.org/data1.2",
8
+ unwrapResponse: responseUnwrapper,
9
+ });
10
+
11
+ export enum FossilDataType {
12
+ Occurrences = "occs",
13
+ Collections = "colls",
14
+ }
15
+
16
+ export function usePBDBFossilData(
17
+ type: FossilDataType,
18
+ { col_id },
19
+ ): any[] | null {
20
+ const params = {
21
+ ms_column: col_id,
22
+ show: "full,mslink",
23
+ };
24
+ return useAPIResult(`/${type}/list.json`, params, {
25
+ context: pbdbAPIContext,
26
+ });
27
+ }
28
+
29
+ export interface PBDBCollection {
30
+ unit_id: number;
31
+ col_id: number;
32
+ cltn_id: number;
33
+ cltn_name: string;
34
+ pbdb_occs: number;
35
+ t_age: number;
36
+ b_age: number;
37
+ [key: string]: any; // Allow for additional properties
38
+ }
39
+
40
+ function useMacrostratFossilData({ col_id }): PBDBCollection[] | null {
41
+ return useAPIResult("/fossils", { col_id });
42
+ }
43
+
44
+ function createMacrostratCollection(d): PBDBCollection {
45
+ let unit_id = null;
46
+ let col_id = null;
47
+ // Standardize names of Macrostrat units and columns
48
+ if (d.msu !== null) {
49
+ unit_id = parseInt(d.msu.replace(/^\w+:/, ""));
50
+ }
51
+ if (d.msc !== null) {
52
+ col_id = parseInt(d.msc.replace(/^\w+:/, ""));
53
+ }
54
+
55
+ return {
56
+ ...d,
57
+ unit_id,
58
+ col_id,
59
+ cltn_id: parseInt(d.oid.replace(/^col:/, "")),
60
+ cltn_name: d.nam,
61
+ t_age: d.t_age,
62
+ b_age: d.b_age,
63
+ };
64
+ }
65
+
66
+ export function useFossilData({ col_id }) {
67
+ // Fossil links are stored in both Macrostrat and PBDB, depending on how the link was assembled. Here
68
+ // we create a unified view of data over both sources.
69
+
70
+ const r1 = usePBDBFossilData(FossilDataType.Collections, { col_id });
71
+
72
+ const r2 = useMacrostratFossilData({ col_id });
73
+
74
+ if (r1 == null || r2 == null) return null;
75
+ const r1a = r1.map(createMacrostratCollection);
76
+
77
+ const data = [...r1a, ...r2];
78
+
79
+ return group(data, (d) => d.unit_id);
80
+ }
@@ -6,6 +6,7 @@ import {
6
6
  PatternDefsProvider,
7
7
  useColumn,
8
8
  useGeologicPattern,
9
+ zigZagBoxPath,
9
10
  } from "@macrostrat/column-components";
10
11
  import { SizeAwareLabel, Clickable } from "@macrostrat/ui-components";
11
12
  import hyper from "@macrostrat/hyper";
@@ -18,7 +19,6 @@ import classNames from "classnames";
18
19
  import { getUnitHeightRange } from "../prepare-units/utils";
19
20
  import { useLithologies } from "../data-provider";
20
21
  import { getMixedUnitColor } from "./colors";
21
- import { path } from "d3-path";
22
22
  import type { RectBounds } from "./types";
23
23
 
24
24
  const h = hyper.styled(styles);
@@ -236,69 +236,6 @@ const UnitRect = forwardRef((props: UnitRectProps, ref) => {
236
236
  }
237
237
  });
238
238
 
239
- function zigZagBoxPath(x, y, width, height, top: boolean, bottom: boolean) {
240
- const zigZagWidth = 10;
241
- const zigZagHeight = 4;
242
-
243
- const d = path();
244
-
245
- const nZigZags = Math.floor(width / zigZagWidth - 0.5);
246
- const _zigZagWidth = width / (nZigZags + 0.5);
247
-
248
- d.moveTo(x, y);
249
- let dy = zigZagHeight / 2;
250
- // Each zig-zag consists of a short outward motion
251
- let dx = _zigZagWidth / 4;
252
-
253
- let cx = x;
254
- let cy = y;
255
-
256
- const doZigZag = (last = false) => {
257
- cx += dx;
258
- cy -= dy;
259
- d.lineTo(cx, cy);
260
- let scalar = last ? 1 : 2;
261
- cx += dx * scalar;
262
- cy += dy * scalar;
263
- d.lineTo(cx, cy);
264
- cx += dx;
265
- cy -= dy;
266
- };
267
-
268
- if (top) {
269
- // Move to the offset
270
- //d.lineTo(cx, y);
271
- // Draw the zig-zags
272
- for (let i = 0; i < nZigZags; i++) {
273
- doZigZag();
274
- }
275
- // Draw the last half zig-zag
276
- doZigZag(true);
277
- }
278
- // Draw the right edge
279
- d.lineTo(x + width, y);
280
- d.lineTo(x + width, y + height);
281
-
282
- if (bottom) {
283
- dx = -dx;
284
- dy = -dy;
285
- cx = x + width;
286
- cy = y + height;
287
-
288
- for (let i = 0; i < nZigZags; i++) {
289
- doZigZag();
290
- }
291
- doZigZag(true);
292
- }
293
- // Draw the last line to the left edge
294
- d.lineTo(x, y + height);
295
- // Draw the left edge
296
- d.closePath();
297
-
298
- // Now render the path;
299
- return d.toString();
300
- }
301
-
302
239
  function LabeledUnit(props: LabeledUnitProps) {
303
240
  const {
304
241
  division,
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;AAAA,IAAA;AACA,IAAA;AADA,4CAAuC,CAAC,yBAAyB,CAAC;AAClE,4CAA6B,CAAC,eAAe,CAAC","sources":["packages/column-views/src/facets/fossils/index.module.sass"],"sourcesContent":[".fossil-collections\n padding-left: 0.2em\n font-size: 0.9em\n list-style: none\n border-left: 1px solid var(--column-stroke-color)\n margin: 1px 0\n li\n display: inline\n &:not(:last-child):after\n content: \", \"\n color: var(--secondary-color)\n li.too-many\n color: var(--secondary-color)\n font-style: italic\n"],"names":[],"version":3,"file":"column-views.1c92b88f.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["packages/column-views/src/units/boxes.ts"],"sourcesContent":["import {\n ColumnAxisType,\n ColumnContext,\n ColumnLayoutContext,\n ForeignObject,\n PatternDefsProvider,\n useColumn,\n useGeologicPattern,\n} from \"@macrostrat/column-components\";\nimport { SizeAwareLabel, Clickable } from \"@macrostrat/ui-components\";\nimport hyper from \"@macrostrat/hyper\";\nimport { forwardRef, ReactNode, useContext, useMemo } from \"react\";\nimport { resolveID, scalePattern } from \"./resolvers\";\nimport { useUnitSelectionTarget } from \"./selection\";\nimport { IUnit } from \"./types\";\nimport styles from \"./boxes.module.sass\";\nimport classNames from \"classnames\";\nimport { getUnitHeightRange } from \"../prepare-units/utils\";\nimport { useLithologies } from \"../data-provider\";\nimport { getMixedUnitColor } from \"./colors\";\nimport { path } from \"d3-path\";\nimport type { RectBounds } from \"./types\";\n\nconst h = hyper.styled(styles);\n\ninterface UnitRectOptions {\n widthFraction?: number;\n axisType?: ColumnAxisType;\n // Padding to create overflow for zig-zags or other ornamented edges\n padding?: number;\n}\n\ninterface UnitProps extends Clickable, Partial<RectBounds>, UnitRectOptions {\n division: IUnit;\n resolveID?(IUnit): string;\n UUID?: string;\n defaultFill?: string;\n widthFraction?: number;\n children?: ReactNode;\n className?: string;\n fill?: string;\n backgroundColor?: string;\n patternColor?: string;\n patternID?: string | number;\n}\n\nexport interface LabeledUnitProps\n extends UnitRectOptions,\n Clickable,\n Partial<RectBounds> {\n division: IUnit;\n patternID?: string | number;\n label: string;\n onLabelUpdated?(label: string, shown: boolean);\n halfWidth?: boolean;\n showLabel?: boolean;\n backgroundColor?: string;\n}\n\nfunction useUnitRect(\n division: IUnit,\n options: UnitRectOptions = {},\n): RectBounds {\n const {\n widthFraction = 1,\n axisType = ColumnAxisType.AGE,\n padding = 0,\n } = options;\n const { scale } = useContext(ColumnContext);\n const { width } = useContext(ColumnLayoutContext);\n\n const [bottomHeight, topHeight] = getUnitHeightRange(division, axisType);\n\n const y = scale(topHeight);\n const height = Math.abs(scale(bottomHeight) - y);\n\n return {\n x: width * (1 - widthFraction) - padding,\n y: y - padding,\n height: height + padding * 2,\n width: widthFraction * width + padding * 2,\n };\n}\n\nexport function MinimalUnit(props) {\n const {\n division: d,\n children,\n className,\n widthFraction = 1,\n axisType: _, // not sure why this is brought in...\n nColumns: __,\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n const lithMap = useLithologies();\n const bounds = {\n ...useUnitRect(d, { widthFraction, axisType }),\n ...baseBounds,\n };\n\n const backgroundColor = getMixedUnitColor(d, lithMap, null, false);\n\n const [ref, selected, onClick] = useUnitSelectionTarget(d);\n\n return h(\n \"g.unit\",\n {\n className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n \"--column-stroke-color\": backgroundColor,\n },\n },\n [\n h(\"rect.unit.background\", {\n ref,\n ...bounds,\n fill: backgroundColor,\n fillOpacity: 0.8,\n stroke: backgroundColor,\n onClick,\n }),\n h.if(selected)(\"rect.selection-overlay\", bounds),\n ],\n );\n}\n\nfunction Unit(props: UnitProps) {\n const {\n division: d,\n children,\n fill,\n defaultFill = \"transparent\",\n className,\n widthFraction = 1,\n backgroundColor,\n patternColor,\n patternID,\n axisType: _, // not sure why this is brought in...\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n\n const hasOverflowTop = d.t_clip_pos != null;\n const hasOverflowBottom = d.b_clip_pos != null;\n\n const bounds = {\n ...useUnitRect(d, { widthFraction, axisType }),\n ...baseBounds,\n overflowTop: hasOverflowTop,\n overflowBottom: hasOverflowBottom,\n };\n const _patternID = patternID ?? resolveID(d);\n let _fill = fill ?? useGeologicPattern(_patternID, defaultFill);\n\n const hasBackgroundColor = backgroundColor != null;\n\n const _className = classNames(className, { colored: hasBackgroundColor });\n\n const [ref, selected, onClick] = useUnitSelectionTarget(d);\n\n //const key = `unit-${d.unit_id}`;\n\n return h(\n \"g.unit\",\n {\n className: _className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n },\n },\n [\n h(UnitRect, {\n ...bounds,\n fill: backgroundColor,\n onClick,\n className: \"background\",\n }),\n h(UnitRect, {\n ref,\n ...bounds,\n fill: _fill,\n //mask,\n onClick,\n className: \"unit\",\n }),\n h.if(selected)(UnitRect, { ...bounds, className: \"selection-overlay\" }),\n //defs,\n children,\n ],\n );\n}\n\ninterface UnitRectProps {\n x: number;\n y: number;\n width: number;\n height: number;\n className: string;\n // Used to determine if the rect should have a zig-zag edge on the top or bottom\n overflowTop?: boolean;\n overflowBottom?: boolean;\n [key: string]: any;\n}\n\nconst UnitRect = forwardRef((props: UnitRectProps, ref) => {\n const {\n x,\n y,\n width,\n height,\n overflowTop = false,\n overflowBottom = false,\n ...rest\n } = props;\n\n if (!overflowTop && !overflowBottom) {\n return h(\"rect\", {\n x,\n y,\n width,\n height,\n ref,\n ...rest,\n });\n } else {\n const d = zigZagBoxPath(x, y, width, height, overflowTop, overflowBottom);\n return h(\"path\", {\n d,\n ref,\n ...rest,\n });\n }\n});\n\nfunction zigZagBoxPath(x, y, width, height, top: boolean, bottom: boolean) {\n const zigZagWidth = 10;\n const zigZagHeight = 4;\n\n const d = path();\n\n const nZigZags = Math.floor(width / zigZagWidth - 0.5);\n const _zigZagWidth = width / (nZigZags + 0.5);\n\n d.moveTo(x, y);\n let dy = zigZagHeight / 2;\n // Each zig-zag consists of a short outward motion\n let dx = _zigZagWidth / 4;\n\n let cx = x;\n let cy = y;\n\n const doZigZag = (last = false) => {\n cx += dx;\n cy -= dy;\n d.lineTo(cx, cy);\n let scalar = last ? 1 : 2;\n cx += dx * scalar;\n cy += dy * scalar;\n d.lineTo(cx, cy);\n cx += dx;\n cy -= dy;\n };\n\n if (top) {\n // Move to the offset\n //d.lineTo(cx, y);\n // Draw the zig-zags\n for (let i = 0; i < nZigZags; i++) {\n doZigZag();\n }\n // Draw the last half zig-zag\n doZigZag(true);\n }\n // Draw the right edge\n d.lineTo(x + width, y);\n d.lineTo(x + width, y + height);\n\n if (bottom) {\n dx = -dx;\n dy = -dy;\n cx = x + width;\n cy = y + height;\n\n for (let i = 0; i < nZigZags; i++) {\n doZigZag();\n }\n doZigZag(true);\n }\n // Draw the last line to the left edge\n d.lineTo(x, y + height);\n // Draw the left edge\n d.closePath();\n\n // Now render the path;\n return d.toString();\n}\n\nfunction LabeledUnit(props: LabeledUnitProps) {\n const {\n division,\n label,\n onLabelUpdated,\n widthFraction,\n showLabel = true,\n backgroundColor,\n patternID,\n axisType: _, // not sure why this is brought in...\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n const bounds = {\n ...useUnitRect(division, { widthFraction, axisType }),\n ...baseBounds,\n };\n const { width, height } = bounds;\n return h(\n Unit,\n {\n className: \"labeled-unit\",\n division,\n backgroundColor,\n patternID,\n ...bounds,\n },\n [\n h.if(showLabel)(\n ForeignObject,\n { ...bounds, className: \"unit-label-container\" },\n h(SizeAwareLabel, {\n className: \"unit-overlay\",\n labelClassName: \"unit-label\",\n style: { width, height },\n label,\n onVisibilityChanged(viz) {\n onLabelUpdated(label, viz);\n },\n }),\n ),\n ],\n );\n}\n\nfunction UnitBoxes<T>(props: {\n unitComponent: React.FunctionComponent<{ division: T }>;\n unitComponentProps?: any;\n transformDivisions?(divisions: T[]): T[];\n transformDivision?: (\n division: any,\n index: number,\n divisions: any[],\n ) => T | null;\n}) {\n const { unitComponent = Unit, unitComponentProps = {} } = props;\n const { divisions } = useContext(ColumnContext);\n\n if (divisions.length == 0) {\n console.warn(\"No divisions found in column context\");\n return null;\n }\n\n const children = useMemo(() => {\n return divisions.map((division: any, i) => {\n // @ts-ignore\n return h(unitComponent, {\n division,\n key: division.unit_id,\n ...unitComponentProps,\n });\n });\n }, [divisions, unitComponent, unitComponentProps]);\n\n return h(\n PatternDefsProvider,\n { resolveID, scalePattern },\n h(\"g.divisions\", children),\n );\n}\n\nexport { LabeledUnit, Unit, UnitBoxes, UnitProps };\n"],"names":[],"version":3,"file":"column-views.2e0ff311.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":"AAAA;;;;;;;;AAME;;;;AAEE;;;;;AAGF","sources":["packages/column-views/src/facets/fossils/index.module.sass"],"sourcesContent":[".fossil-collections\n padding-left: 0.2em\n font-size: 0.9em\n list-style: none\n border-left: 1px solid var(--column-stroke-color)\n margin: 1px 0\n li\n display: inline\n &:not(:last-child):after\n content: \", \"\n color: var(--secondary-color)\n li.too-many\n color: var(--secondary-color)\n font-style: italic\n"],"names":[],"version":3,"file":"column-views.57636733.css.map"}
@@ -1,108 +0,0 @@
1
- import {getUnitHeightRange as $b6657fba8924a702$export$70e712e2ac0237a} from "./column-views.39657bbf.js";
2
- import {useMacrostratColumnData as $d5074f164411387e$export$f8509b7cce386c7d} from "./column-views.1e055ed5.js";
3
- import {useFossilData as $a3ff7da576c02df0$export$e6af757fa9780077} from "./column-views.3048acc1.js";
4
- import {ColumnNotes as $9e52fe4012c88296$export$fc5babae10f3f77d} from "./column-views.572b70fd.js";
5
- import "./column-views.57636733.css";
6
- import $6u76g$columnviews1c92b88fjs from "./column-views.1c92b88f.js";
7
- import $6u76g$macrostrathyper from "@macrostrat/hyper";
8
- import {useMemo as $6u76g$useMemo} from "react";
9
-
10
-
11
- function $parcel$interopDefault(a) {
12
- return a && a.__esModule ? a.default : a;
13
- }
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
- const $b9286605a04210d4$var$h = (0, $6u76g$macrostrathyper).styled((0, ($parcel$interopDefault($6u76g$columnviews1c92b88fjs))));
22
- function $b9286605a04210d4$var$FossilInfo(props) {
23
- const { note: note, spacing: spacing } = props;
24
- const { data: data, unit: unit } = note;
25
- let d1 = data;
26
- let tooMany = null;
27
- if (data.length > 5) {
28
- const n = data.length - 5;
29
- d1 = data.slice(0, 5);
30
- tooMany = $b9286605a04210d4$var$h("li.too-many", `and ${n} more`);
31
- }
32
- return $b9286605a04210d4$var$h("ul.fossil-collections", [
33
- d1.map((d)=>{
34
- return $b9286605a04210d4$var$h("li.collection", {
35
- key: d.cltn_id
36
- }, [
37
- $b9286605a04210d4$var$h($b9286605a04210d4$var$PBDBCollectionLink, {
38
- collection: d
39
- })
40
- ]);
41
- }),
42
- tooMany
43
- ]);
44
- }
45
- function $b9286605a04210d4$var$PBDBCollectionLink({ collection: collection }) {
46
- return $b9286605a04210d4$var$h("a.link-id", {
47
- href: `https://paleobiodb.org/classic/basicCollectionSearch?collection_no=${collection.cltn_id}`
48
- }, collection.cltn_name);
49
- }
50
- const $b9286605a04210d4$var$matchingUnit = (dz)=>(d)=>d.unit_id == dz.unit_id;
51
- function $b9286605a04210d4$export$554267114407ef68({ columnID: columnID, color: color = "magenta" }) {
52
- const data = (0, $a3ff7da576c02df0$export$e6af757fa9780077)({
53
- col_id: columnID
54
- });
55
- const { axisType: axisType, units: units } = (0, $d5074f164411387e$export$f8509b7cce386c7d)();
56
- const notes = (0, $6u76g$useMemo)(()=>{
57
- if (data == null || units == null) return [];
58
- let unitRefData = Array.from(data.values()).map((d)=>{
59
- return {
60
- data: d,
61
- unit: units.find($b9286605a04210d4$var$matchingUnit(d[0]))
62
- };
63
- }).filter((d)=>d.unit != null);
64
- unitRefData.sort((a, b)=>{
65
- const v1 = units.indexOf(a.unit);
66
- const v2 = units.indexOf(b.unit);
67
- return v1 - v2;
68
- });
69
- return unitRefData.map((d)=>{
70
- const { unit: unit, data: data } = d;
71
- const heightRange = (0, $b6657fba8924a702$export$70e712e2ac0237a)(unit, axisType);
72
- return {
73
- top_height: heightRange[1],
74
- height: heightRange[0],
75
- data: data,
76
- unit: unit,
77
- id: unit.unit_id
78
- };
79
- });
80
- }, [
81
- data,
82
- units
83
- ]);
84
- const width = 500;
85
- const paddingLeft = 40;
86
- const noteComponent = (0, $6u76g$useMemo)(()=>{
87
- return (props)=>{
88
- return $b9286605a04210d4$var$h($b9286605a04210d4$var$FossilInfo, {
89
- color: color,
90
- ...props
91
- });
92
- };
93
- }, [
94
- width,
95
- color
96
- ]);
97
- if (data == null || units == null) return null;
98
- return $b9286605a04210d4$var$h("div.dz-spectra", $b9286605a04210d4$var$h((0, $9e52fe4012c88296$export$fc5babae10f3f77d), {
99
- width: width,
100
- paddingLeft: paddingLeft,
101
- notes: notes,
102
- noteComponent: noteComponent
103
- }));
104
- }
105
-
106
-
107
- export {$b9286605a04210d4$export$554267114407ef68 as PBDBFossilsColumn};
108
- //# sourceMappingURL=column-views.60dc6bfc.js.map
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;AAUA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,uEAAK;AAgB5B,SAAS,iCAAW,KAAsB;IACxC,MAAM,QAAE,IAAI,WAAE,OAAO,EAAE,GAAG;IAC1B,MAAM,QAAE,IAAI,QAAE,IAAI,EAAE,GAAG;IAEvB,IAAI,KAAK;IAET,IAAI,UAAU;IACd,IAAI,KAAK,MAAM,GAAG,GAAG;QACnB,MAAM,IAAI,KAAK,MAAM,GAAG;QACxB,KAAK,KAAK,KAAK,CAAC,GAAG;QACnB,UAAU,wBAAE,eAAe,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC;IAC5C;IAEA,OAAO,wBAAE,yBAAyB;QAChC,GAAG,GAAG,CAAC,CAAC;YACN,OAAO,wBAAE,iBAAiB;gBAAE,KAAK,EAAE,OAAO;YAAC,GAAG;gBAC5C,wBAAE,0CAAoB;oBAAE,YAAY;gBAAE;aACvC;QACH;QACA;KACD;AACH;AAEA,SAAS,yCAAmB,cAAE,UAAU,EAAkC;IACxE,OAAO,wBACL,aACA;QACE,MAAM,CAAC,mEAAmE,EAAE,WAAW,OAAO,EAAE;IAClG,GACA,WAAW,SAAS;AAExB;AAEA,MAAM,qCAAe,CAAC,KAAO,CAAC,IAAM,EAAE,OAAO,IAAI,GAAG,OAAO;AAEpD,SAAS,0CAAkB,YAAE,QAAQ,SAAE,QAAQ,WAAW;IAC/D,MAAM,OAAO,CAAA,GAAA,yCAAY,EAAE;QAAE,QAAQ;IAAS;IAC9C,MAAM,YAAE,QAAQ,SAAE,KAAK,EAAE,GAAG,CAAA,GAAA,yCAAsB;IAElD,MAAM,QAAe,CAAA,GAAA,cAAM,EAAE;QAC3B,IAAI,QAAQ,QAAQ,SAAS,MAAM,OAAO,EAAE;QAC5C,IAAI,cAAc,MAAM,IAAI,CAAC,KAAK,MAAM,IACrC,GAAG,CAAC,CAAC;YACJ,OAAO;gBACL,MAAM;gBACN,MAAM,MAAM,IAAI,CAAC,mCAAa,CAAC,CAAC,EAAE;YACpC;QACF,GACC,MAAM,CAAC,CAAC,IAAM,EAAE,IAAI,IAAI;QAE3B,YAAY,IAAI,CAAC,CAAC,GAAG;YACnB,MAAM,KAAK,MAAM,OAAO,CAAC,EAAE,IAAI;YAC/B,MAAM,KAAK,MAAM,OAAO,CAAC,EAAE,IAAI;YAC/B,OAAO,KAAK;QACd;QAEA,OAAO,YAAY,GAAG,CAAC,CAAC;YACtB,MAAM,QAAE,IAAI,QAAE,IAAI,EAAE,GAAG;YACvB,MAAM,cAAc,CAAA,GAAA,wCAAiB,EAAE,MAAM;YAE7C,OAAO;gBACL,YAAY,WAAW,CAAC,EAAE;gBAC1B,QAAQ,WAAW,CAAC,EAAE;sBACtB;sBACA;gBACA,IAAI,KAAK,OAAO;YAClB;QACF;IACF,GAAG;QAAC;QAAM;KAAM;IAEhB,MAAM,QAAQ;IACd,MAAM,cAAc;IAEpB,MAAM,gBAAgB,CAAA,GAAA,cAAM,EAAE;QAC5B,OAAO,CAAC;YACN,OAAO,wBAAE,kCAAY;uBACnB;gBACA,GAAG,KAAK;YACV;QACF;IACF,GAAG;QAAC;QAAO;KAAM;IAEjB,IAAI,QAAQ,QAAQ,SAAS,MAAM,OAAO;IAE1C,OAAO,wBACL,kBACA,wBAAE,CAAA,GAAA,yCAAU,GAAG;eACb;qBACA;eACA;uBACA;IACF;AAEJ","sources":["packages/column-views/src/facets/fossils/index.ts"],"sourcesContent":["import { getUnitHeightRange } from \"../../prepare-units\";\nimport { useMacrostratColumnData } from \"../../data-provider\";\nimport hyper from \"@macrostrat/hyper\";\nimport { PBDBCollection, useFossilData } from \"./provider\";\nimport { useMacrostratUnits } from \"../../data-provider\";\nimport { ColumnNotes } from \"../../notes\";\nimport { useMemo } from \"react\";\nimport type { IUnit } from \"../../units\";\nimport styles from \"./index.module.sass\";\n\nconst h = hyper.styled(styles);\n\ninterface FossilItemProps {\n note: {\n data: PBDBCollection[];\n unit?: IUnit;\n };\n spacing?: {\n below?: number;\n above?: number;\n };\n width?: number;\n height?: number;\n color?: string;\n}\n\nfunction FossilInfo(props: FossilItemProps) {\n const { note, spacing } = props;\n const { data, unit } = note;\n\n let d1 = data;\n\n let tooMany = null;\n if (data.length > 5) {\n const n = data.length - 5;\n d1 = data.slice(0, 5);\n tooMany = h(\"li.too-many\", `and ${n} more`);\n }\n\n return h(\"ul.fossil-collections\", [\n d1.map((d) => {\n return h(\"li.collection\", { key: d.cltn_id }, [\n h(PBDBCollectionLink, { collection: d }),\n ]);\n }),\n tooMany,\n ]);\n}\n\nfunction PBDBCollectionLink({ collection }: { collection: PBDBCollection }) {\n return h(\n \"a.link-id\",\n {\n href: `https://paleobiodb.org/classic/basicCollectionSearch?collection_no=${collection.cltn_id}`,\n },\n collection.cltn_name,\n );\n}\n\nconst matchingUnit = (dz) => (d) => d.unit_id == dz.unit_id;\n\nexport function PBDBFossilsColumn({ columnID, color = \"magenta\" }) {\n const data = useFossilData({ col_id: columnID });\n const { axisType, units } = useMacrostratColumnData();\n\n const notes: any[] = useMemo(() => {\n if (data == null || units == null) return [];\n let unitRefData = Array.from(data.values())\n .map((d) => {\n return {\n data: d,\n unit: units.find(matchingUnit(d[0])),\n };\n })\n .filter((d) => d.unit != null);\n\n unitRefData.sort((a, b) => {\n const v1 = units.indexOf(a.unit);\n const v2 = units.indexOf(b.unit);\n return v1 - v2;\n });\n\n return unitRefData.map((d) => {\n const { unit, data } = d;\n const heightRange = getUnitHeightRange(unit, axisType);\n\n return {\n top_height: heightRange[1],\n height: heightRange[0],\n data,\n unit,\n id: unit.unit_id,\n };\n });\n }, [data, units]);\n\n const width = 500;\n const paddingLeft = 40;\n\n const noteComponent = useMemo(() => {\n return (props) => {\n return h(FossilInfo, {\n color,\n ...props,\n });\n };\n }, [width, color]);\n\n if (data == null || units == null) return null;\n\n return h(\n \"div.dz-spectra\",\n h(ColumnNotes, {\n width,\n paddingLeft,\n notes,\n noteComponent,\n }),\n );\n}\n"],"names":[],"version":3,"file":"column-views.60dc6bfc.js.map"}
@@ -1,11 +0,0 @@
1
- import {PBDBFossilsColumn as $b9286605a04210d4$export$554267114407ef68} from "./column-views.60dc6bfc.js";
2
- import {DetritalGroup as $715dd5fedd79146a$export$1b3047373cd1c8c7, DetritalColumn as $715dd5fedd79146a$export$f176396e104db8d5} from "./column-views.abe90091.js";
3
- import {IsotopesDataset as $d71d096cfe00860f$export$c69bd0285aa5d775, IsotopesColumn as $d71d096cfe00860f$export$5d8aa8022c284748, MeasurementDataContext as $5dbb619f2c7bef60$export$c644ef985ce7a4c4, MeasurementDataProvider as $5dbb619f2c7bef60$export$5f01d5b342a89841, useMeasurementData as $5dbb619f2c7bef60$export$8a0335fd9ff72150} from "./column-views.86619334.js";
4
-
5
-
6
-
7
-
8
-
9
-
10
- export {$b9286605a04210d4$export$554267114407ef68 as PBDBFossilsColumn, $715dd5fedd79146a$export$1b3047373cd1c8c7 as DetritalGroup, $715dd5fedd79146a$export$f176396e104db8d5 as DetritalColumn, $d71d096cfe00860f$export$c69bd0285aa5d775 as IsotopesDataset, $d71d096cfe00860f$export$5d8aa8022c284748 as IsotopesColumn, $5dbb619f2c7bef60$export$c644ef985ce7a4c4 as MeasurementDataContext, $5dbb619f2c7bef60$export$5f01d5b342a89841 as MeasurementDataProvider, $5dbb619f2c7bef60$export$8a0335fd9ff72150 as useMeasurementData};
11
- //# sourceMappingURL=column-views.6d5e3098.js.map
@@ -1 +0,0 @@
1
- {"mappings":"AAAA;;;;;;AAWE;EACE;;;;;;;;EAOI;;;;EAEA;;;;;AAIN;;;;;;;;AAOE;;;;AAIF;;;;AAIE;;;;;;;AAOA;;;;;AAKA;;;;;AAIF;;;;;;AAKA;;;;AAGF;;;;;;;;;;;;;;;;;;;;AAgBE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BF;;;;;;;AAOE;;;;;;;;;;;;;;;AAWE;;;;;AAMF;;;;AAIA;;;;AAIA","sources":["packages/column-views/src/column.module.sass"],"sourcesContent":[".column-container, body:global(.light-mode) .column-container\n --column-background-color: var(--background-color, #fff)\n --column-stroke-color: var(--text-emphasized-color, #000)\n --column-text-color: var(--text-emphasized-color, #000)\n\n/* We have to duplicate the dark mode styles here\n because we want to set them either if the preferred\n color scheme is dark OR if dark mode is explicitly enabled.\n If dark mode is explicitly enabled, we want to override\n the media query. */\n@media (prefers-color-scheme: dark)\n body:not(:global(.light-mode)) .column-container\n --column-background-color: var(--background-color, #000)\n --column-stroke-color: var(--text-emphasized-color, #fff)\n --column-text-color: var(--text-emphasized-color, #fff)\n color-scheme: dark\n color: var(--column-text-color)\n :global\n .timescale\n color: #000\n svg pattern image\n filter: invert(100%)\n\nbody:global(.dark-mode) .column-container\n --column-background-color: var(--background-color, #000)\n --column-stroke-color: var(--text-emphasized-color, #fff)\n --column-text-color: var(--text-emphasized-color, #fff)\n color-scheme: dark\n color: var(--column-text-color)\n :global\n .timescale\n color: #000\n svg pattern image\n filter: invert(100%)\n\n.column-container :global\n .column\n display: flex\n flex-direction: row\n position: relative\n height: fit-content\n\n .unit\n stroke: var(--column-stroke-color)\n stroke-width: 1px\n\n .selection-overlay\n fill: var(--selection-overlay-color, red)\n fill-opacity: var(--selection-overlay-opacity, 0.5)\n\n g.lithology-column use.frame\n stroke: var(--column-stroke-color)\n stroke-width: 1.5px !important\n pointer-events: none\n\n.column-container :global .unit-label\n text-align: center\n\n.column-container :global .col-note-label\n font-size: 10px\n line-height: 9px\n border-left: none !important\n margin: 1px 0\n\n.column-container :global g.height-range\n display: none\n\n.column-container :global .note-inner\n border: none\n padding: 1px\n\n.column-container :global .frame rect\n fill: transparent\n\n.column-container :global .default-buttons\n width: 100%\n margin: 0 -10px\n\n.column-container :global div.section\n display: flex\n flex-direction: row\n\n.column-container :global .section .divisions .unit\n cursor: pointer\n\n.column-container :global(.timescale)\n width: calc(calc(1.5em + 1.5px) * var(--timescale-level-count, 4))\n --timescale-level-size: 1.5em\n\n.timescale-column\n position: relative\n\n.section-main\n position: relative\n margin-bottom: -4px\n\n.section-units-container\n position: relative\n\n.main-column\n position: relative\n\n.unconformity-labels\n position: absolute\n top: 0\n left: 0\n pointer-events: none\n\n\n.unconformity\n text-align: center\n position: absolute\n top: 0px\n display: flex\n justify-content: center\n align-items: center\n font-size: 0.8em\n &.giga\n font-weight: 800\n font-size: 1em\n &.mega\n font-weight: 600\n font-weight: 700\n font-size: 0.9em\n &.large\n font-weight: 600\n &.small\n font-weight: 300\n\n\n.unconformity-text\n width: var(--column-width)\n color: var(--column-stroke-color)\n --unit-font-style: normal\n\n\n.column-title-row\n display: flex\n flex-direction: row\n gap: 1em\n justify-content: space-between\n align-items: baseline\n"],"names":[],"version":3,"file":"column-views.b12a6374.css.map"}
@@ -1,2 +0,0 @@
1
- import"./column-views.5f05b73f.js";import"./column-views.f15a6ed4.js";import"./column-views.7010a03b.js";function e(e,a){return Object.keys(a).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:function(){return a[r]}})}),e}var a=globalThis,r={},t={},o=a.parcelRequirea149;null==o&&((o=function(e){if(e in r)return r[e].exports;if(e in t){var a=t[e];delete t[e];var o={id:e,exports:{}};return r[e]=o,a.call(o.exports,o,o.exports),o.exports}var f=Error("Cannot find module '"+e+"'");throw f.code="MODULE_NOT_FOUND",f}).register=function(e,a){t[e]=a},a.parcelRequirea149=o),o.register;var f={},c=o("3S9SB"),s=o("7kahb"),n=o("28PcI");e(f,c),e(f,s),e(f,n);export{$ea2f112131e22f14$export$554267114407ef68 as PBDBFossilsColumn,$68f55e74a5c97233$export$1b3047373cd1c8c7 as DetritalGroup,$68f55e74a5c97233$export$f176396e104db8d5 as DetritalColumn,$5ccf8f2b270f7458$export$c69bd0285aa5d775 as IsotopesDataset,$5ccf8f2b270f7458$export$5d8aa8022c284748 as IsotopesColumn,$5cb80f5b33baeaea$export$c644ef985ce7a4c4 as MeasurementDataContext,$5cb80f5b33baeaea$export$5f01d5b342a89841 as MeasurementDataProvider,$5cb80f5b33baeaea$export$8a0335fd9ff72150 as useMeasurementData};
2
- //# sourceMappingURL=column-views.226d0bdb.js.map
@@ -1 +0,0 @@
1
- {"mappings":"A,M,6C,A,O,6C,A,O,6C,C,S,E,C,C,C,E,O,O,I,C,G,O,C,S,C,E,Y,G,A,e,G,O,S,C,c,C,I,C,E,I,O,c,C,E,E,C,W,C,E,I,W,O,C,C,E,A,C,E,G,C,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,C,E,E,E,S,E,E,S,E,E,S,E,E,G,E,E,G,E,E,U,6C,iB,C,6C,a,C,6C,c,C,6C,e,C,6C,c,C,6C,sB,C,6C,uB,C,6C,kB","sources":["<anon>","packages/column-views/src/facets/index.ts"],"sourcesContent":["import \"./column-views.5f05b73f.js\";\nimport \"./column-views.f15a6ed4.js\";\nimport \"./column-views.7010a03b.js\";\n\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n }\n });\n });\n\n return dest;\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nvar $a66a583913c03b09$exports = {};\n\nvar $3S9SB = parcelRequire(\"3S9SB\");\n\nvar $7kahb = parcelRequire(\"7kahb\");\n\nvar $28PcI = parcelRequire(\"28PcI\");\n$parcel$exportWildcard($a66a583913c03b09$exports, $3S9SB);\n$parcel$exportWildcard($a66a583913c03b09$exports, $7kahb);\n$parcel$exportWildcard($a66a583913c03b09$exports, $28PcI);\n\n\nexport {$ea2f112131e22f14$export$554267114407ef68 as PBDBFossilsColumn, $68f55e74a5c97233$export$1b3047373cd1c8c7 as DetritalGroup, $68f55e74a5c97233$export$f176396e104db8d5 as DetritalColumn, $5ccf8f2b270f7458$export$c69bd0285aa5d775 as IsotopesDataset, $5ccf8f2b270f7458$export$5d8aa8022c284748 as IsotopesColumn, $5cb80f5b33baeaea$export$c644ef985ce7a4c4 as MeasurementDataContext, $5cb80f5b33baeaea$export$5f01d5b342a89841 as MeasurementDataProvider, $5cb80f5b33baeaea$export$8a0335fd9ff72150 as useMeasurementData};\n//# sourceMappingURL=column-views.226d0bdb.js.map\n","export * from \"./fossils\";\nexport * from \"./detrital-zircon\";\nexport * from \"./carbon-isotopes\";\n"],"names":["$parcel$exportWildcard","dest","source","Object","keys","forEach","key","prototype","hasOwnProperty","call","defineProperty","enumerable","get","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","err","Error","code","register","$a66a583913c03b09$exports","$3S9SB","$7kahb","$28PcI","$ea2f112131e22f14$export$554267114407ef68","PBDBFossilsColumn","$68f55e74a5c97233$export$1b3047373cd1c8c7","DetritalGroup","$68f55e74a5c97233$export$f176396e104db8d5","DetritalColumn","$5ccf8f2b270f7458$export$c69bd0285aa5d775","IsotopesDataset","$5ccf8f2b270f7458$export$5d8aa8022c284748","IsotopesColumn","$5cb80f5b33baeaea$export$c644ef985ce7a4c4","MeasurementDataContext","$5cb80f5b33baeaea$export$5f01d5b342a89841","MeasurementDataProvider","$5cb80f5b33baeaea$export$8a0335fd9ff72150","useMeasurementData"],"version":3,"file":"column-views.226d0bdb.js.map","sourceRoot":"../../../../"}
@@ -1,2 +0,0 @@
1
- function e(e,o,t,a){Object.defineProperty(e,o,{get:t,set:a,enumerable:!0,configurable:!0})}var o,t,a={};e(a,"fossil-collections",()=>o,e=>o=e),e(a,"too-many",()=>t,e=>t=e),o="VC2fja_fossil-collections",t="VC2fja_too-many";export{a as default};
2
- //# sourceMappingURL=column-views.3345cd7a.js.map
@@ -1 +0,0 @@
1
- {"mappings":"A,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,ICAA,EACA,E,E,C,E,E,E,qB,I,E,A,G,E,G,E,E,W,I,E,A,G,E,GADA,EAAuC,4BACvC,EAA6B,yB,K,O","sources":["<anon>","packages/column-views/src/facets/fossils/index.module.sass"],"sourcesContent":["\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $e4bc3df6e06d50e7$exports = {};\n\n$parcel$export($e4bc3df6e06d50e7$exports, \"fossil-collections\", () => $e4bc3df6e06d50e7$export$33464f7dff3aaa69, (v) => $e4bc3df6e06d50e7$export$33464f7dff3aaa69 = v);\n$parcel$export($e4bc3df6e06d50e7$exports, \"too-many\", () => $e4bc3df6e06d50e7$export$76144d85d033d82a, (v) => $e4bc3df6e06d50e7$export$76144d85d033d82a = v);\nvar $e4bc3df6e06d50e7$export$33464f7dff3aaa69;\nvar $e4bc3df6e06d50e7$export$76144d85d033d82a;\n$e4bc3df6e06d50e7$export$33464f7dff3aaa69 = `VC2fja_fossil-collections`;\n$e4bc3df6e06d50e7$export$76144d85d033d82a = `VC2fja_too-many`;\n\n\nexport {$e4bc3df6e06d50e7$exports as default};\n//# sourceMappingURL=column-views.3345cd7a.js.map\n",null],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$e4bc3df6e06d50e7$export$33464f7dff3aaa69","$e4bc3df6e06d50e7$export$76144d85d033d82a","$e4bc3df6e06d50e7$exports","default"],"version":3,"file":"column-views.3345cd7a.js.map","sourceRoot":"../../../../"}
@@ -1,2 +0,0 @@
1
- import"./column-views.8cfed88b.js";import"./column-views.78d3f3c5.js";import"./column-views.a501cea0.js";import"./column-views.c18d5bf5.js";import"./column-views.3345cd7a.js";import e from"@macrostrat/hyper";import{useMemo as t}from"react";var n=globalThis,i={},o={},l=n.parcelRequirea149;null==l&&((l=function(e){if(e in i)return i[e].exports;if(e in o){var t=o[e];delete o[e];var n={id:e,exports:{}};return i[e]=n,t.call(n.exports,n,n.exports),n.exports}var l=Error("Cannot find module '"+e+"'");throw l.code="MODULE_NOT_FOUND",l}).register=function(e,t){o[e]=t},n.parcelRequirea149=l),l.register,Object.defineProperty({},"PBDBFossilsColumn",{get:()=>p,set:void 0,enumerable:!0,configurable:!0});var r=l("iWhRv"),a=l("wtIgl"),u=l("dx7no"),s=l("6KYbn"),c=l("jDygK");let d=e.styled(c&&c.__esModule?c.default:c);function f(e){let{note:t,spacing:n}=e,{data:i,unit:o}=t,l=i,r=null;if(i.length>5){let e=i.length-5;l=i.slice(0,5),r=d("li.too-many",`and ${e} more`)}return d("ul.fossil-collections",[l.map(e=>d("li.collection",{key:e.cltn_id},[d(m,{collection:e})])),r])}function m({collection:e}){return d("a.link-id",{href:`https://paleobiodb.org/classic/basicCollectionSearch?collection_no=${e.cltn_id}`},e.cltn_name)}function p({columnID:e,color:n="magenta"}){let i=(0,u.useFossilData)({col_id:e}),{axisType:o,units:l}=(0,a.useMacrostratColumnData)(),c=t(()=>{if(null==i||null==l)return[];let e=Array.from(i.values()).map(e=>{let t;return{data:e,unit:l.find((t=e[0],e=>e.unit_id==t.unit_id))}}).filter(e=>null!=e.unit);return e.sort((e,t)=>l.indexOf(e.unit)-l.indexOf(t.unit)),e.map(e=>{let{unit:t,data:n}=e,i=(0,r.getUnitHeightRange)(t,o);return{top_height:i[1],height:i[0],data:n,unit:t,id:t.unit_id}})},[i,l]),m=t(()=>e=>d(f,{color:n,...e}),[500,n]);return null==i||null==l?null:d("div.dz-spectra",d(s.ColumnNotes,{width:500,paddingLeft:40,notes:c,noteComponent:m}))}export{p as PBDBFossilsColumn};
2
- //# sourceMappingURL=column-views.5f05b73f.js.map
@@ -1 +0,0 @@
1
- {"mappings":"A,M,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,Q,M,mB,A,Q,W,C,K,O,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,O,c,C,C,E,oB,C,I,I,E,I,K,E,W,C,E,a,C,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCUA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAgBvB,SAAS,EAAW,CAAsB,EACxC,GAAM,CAAA,KAAE,CAAI,CAAA,QAAE,CAAO,CAAE,CAAG,EACpB,CAAA,KAAE,CAAI,CAAA,KAAE,CAAI,CAAE,CAAG,EAEnB,EAAK,EAEL,EAAU,KACd,GAAI,EAAK,MAAM,CAAG,EAAG,CACnB,IAAM,EAAI,EAAK,MAAM,CAAG,EACxB,EAAK,EAAK,KAAK,CAAC,EAAG,GACnB,EAAU,EAAE,cAAe,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAC5C,CAEA,OAAO,EAAE,wBAAyB,CAChC,EAAG,GAAG,CAAC,AAAC,GACC,EAAE,gBAAiB,CAAE,IAAK,EAAE,OAAO,AAAC,EAAG,CAC5C,EAAE,EAAoB,CAAE,WAAY,CAAE,GACvC,GAEH,EACD,CACH,CAEA,SAAS,EAAmB,CAAA,WAAE,CAAU,CAAkC,EACxE,OAAO,EACL,YACA,CACE,KAAM,CAAC,mEAAmE,EAAE,EAAW,OAAO,CAAA,CAAE,AAClG,EACA,EAAW,SAAS,CAExB,CAIO,SAAS,EAAkB,CAAA,SAAE,CAAQ,CAAA,MAAE,EAAQ,SAAA,CAAW,EAC/D,IAAM,EAAO,AAAA,CAAA,EAAA,EAAA,aAAY,AAAZ,EAAc,CAAE,OAAQ,CAAS,GACxC,CAAA,SAAE,CAAQ,CAAA,MAAE,CAAK,CAAE,CAAG,AAAA,CAAA,EAAA,EAAA,uBAAsB,AAAtB,IAEtB,EAAe,AAAA,EAAQ,KAC3B,GAAI,AAAQ,MAAR,GAAgB,AAAS,MAAT,EAAe,MAAO,EAAE,CAC5C,IAAI,EAAc,MAAM,IAAI,CAAC,EAAK,MAAM,IACrC,GAAG,CAAC,AAAC,QATU,QAUP,CACL,KAAM,EACN,KAAM,EAAM,IAAI,EAZJ,EAYkB,CAAC,CAAC,EAAE,CAZf,AAAC,GAAM,EAAE,OAAO,EAAI,EAAG,OAAO,EAanD,IAED,MAAM,CAAC,AAAC,GAAM,AAAU,MAAV,EAAE,IAAI,EAQvB,OANA,EAAY,IAAI,CAAC,CAAC,EAAG,IAGZ,AAFI,EAAM,OAAO,CAAC,EAAE,IAAI,EACpB,EAAM,OAAO,CAAC,EAAE,IAAI,GAI1B,EAAY,GAAG,CAAC,AAAC,IACtB,GAAM,CAAA,KAAE,CAAI,CAAA,KAAE,CAAI,CAAE,CAAG,EACjB,EAAc,AAAA,CAAA,EAAA,EAAA,kBAAiB,AAAjB,EAAmB,EAAM,GAE7C,MAAO,CACL,WAAY,CAAW,CAAC,EAAE,CAC1B,OAAQ,CAAW,CAAC,EAAE,CACtB,KAAA,EACA,KAAA,EACA,GAAI,EAAK,OAAO,AAClB,CACF,EACF,EAAG,CAAC,EAAM,EAAM,EAKV,EAAgB,AAAA,EAAQ,IACrB,AAAC,GACC,EAAE,EAAY,CACnB,MAAA,EACA,GAAG,CAAK,AACV,GAED,CAVW,IAUH,EAAM,SAEjB,AAAI,AAAQ,MAAR,GAAgB,AAAS,MAAT,EAAsB,KAEnC,EACL,iBACA,EAAE,EAAA,WAAU,CAAG,CACb,MAjBU,IAkBV,YAjBgB,GAkBhB,MAAA,EACA,cAAA,CACF,GAEJ,Q,K,iB","sources":["<anon>","packages/column-views/src/facets/fossils/index.ts"],"sourcesContent":["import \"./column-views.8cfed88b.js\";\nimport \"./column-views.78d3f3c5.js\";\nimport \"./column-views.a501cea0.js\";\nimport \"./column-views.c18d5bf5.js\";\nimport \"./column-views.3345cd7a.js\";\nimport $2jHE4$macrostrathyper from \"@macrostrat/hyper\";\nimport {useMemo as $2jHE4$useMemo} from \"react\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nvar $ea2f112131e22f14$exports = {};\n\n$parcel$export($ea2f112131e22f14$exports, \"PBDBFossilsColumn\", () => $ea2f112131e22f14$export$554267114407ef68);\n\nvar $iWhRv = parcelRequire(\"iWhRv\");\n\nvar $wtIgl = parcelRequire(\"wtIgl\");\n\n\nvar $dx7no = parcelRequire(\"dx7no\");\n\nvar $6KYbn = parcelRequire(\"6KYbn\");\n\n\nvar $jDygK = parcelRequire(\"jDygK\");\nconst $ea2f112131e22f14$var$h = (0, $2jHE4$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($jDygK))));\nfunction $ea2f112131e22f14$var$FossilInfo(props) {\n const { note: note, spacing: spacing } = props;\n const { data: data, unit: unit } = note;\n let d1 = data;\n let tooMany = null;\n if (data.length > 5) {\n const n = data.length - 5;\n d1 = data.slice(0, 5);\n tooMany = $ea2f112131e22f14$var$h(\"li.too-many\", `and ${n} more`);\n }\n return $ea2f112131e22f14$var$h(\"ul.fossil-collections\", [\n d1.map((d)=>{\n return $ea2f112131e22f14$var$h(\"li.collection\", {\n key: d.cltn_id\n }, [\n $ea2f112131e22f14$var$h($ea2f112131e22f14$var$PBDBCollectionLink, {\n collection: d\n })\n ]);\n }),\n tooMany\n ]);\n}\nfunction $ea2f112131e22f14$var$PBDBCollectionLink({ collection: collection }) {\n return $ea2f112131e22f14$var$h(\"a.link-id\", {\n href: `https://paleobiodb.org/classic/basicCollectionSearch?collection_no=${collection.cltn_id}`\n }, collection.cltn_name);\n}\nconst $ea2f112131e22f14$var$matchingUnit = (dz)=>(d)=>d.unit_id == dz.unit_id;\nfunction $ea2f112131e22f14$export$554267114407ef68({ columnID: columnID, color: color = \"magenta\" }) {\n const data = (0, $dx7no.useFossilData)({\n col_id: columnID\n });\n const { axisType: axisType, units: units } = (0, $wtIgl.useMacrostratColumnData)();\n const notes = (0, $2jHE4$useMemo)(()=>{\n if (data == null || units == null) return [];\n let unitRefData = Array.from(data.values()).map((d)=>{\n return {\n data: d,\n unit: units.find($ea2f112131e22f14$var$matchingUnit(d[0]))\n };\n }).filter((d)=>d.unit != null);\n unitRefData.sort((a, b)=>{\n const v1 = units.indexOf(a.unit);\n const v2 = units.indexOf(b.unit);\n return v1 - v2;\n });\n return unitRefData.map((d)=>{\n const { unit: unit, data: data } = d;\n const heightRange = (0, $iWhRv.getUnitHeightRange)(unit, axisType);\n return {\n top_height: heightRange[1],\n height: heightRange[0],\n data: data,\n unit: unit,\n id: unit.unit_id\n };\n });\n }, [\n data,\n units\n ]);\n const width = 500;\n const paddingLeft = 40;\n const noteComponent = (0, $2jHE4$useMemo)(()=>{\n return (props)=>{\n return $ea2f112131e22f14$var$h($ea2f112131e22f14$var$FossilInfo, {\n color: color,\n ...props\n });\n };\n }, [\n width,\n color\n ]);\n if (data == null || units == null) return null;\n return $ea2f112131e22f14$var$h(\"div.dz-spectra\", $ea2f112131e22f14$var$h((0, $6KYbn.ColumnNotes), {\n width: width,\n paddingLeft: paddingLeft,\n notes: notes,\n noteComponent: noteComponent\n }));\n}\n\n\nexport {$ea2f112131e22f14$export$554267114407ef68 as PBDBFossilsColumn};\n//# sourceMappingURL=column-views.5f05b73f.js.map\n","import { getUnitHeightRange } from \"../../prepare-units\";\nimport { useMacrostratColumnData } from \"../../data-provider\";\nimport hyper from \"@macrostrat/hyper\";\nimport { PBDBCollection, useFossilData } from \"./provider\";\nimport { useMacrostratUnits } from \"../../data-provider\";\nimport { ColumnNotes } from \"../../notes\";\nimport { useMemo } from \"react\";\nimport type { IUnit } from \"../../units\";\nimport styles from \"./index.module.sass\";\n\nconst h = hyper.styled(styles);\n\ninterface FossilItemProps {\n note: {\n data: PBDBCollection[];\n unit?: IUnit;\n };\n spacing?: {\n below?: number;\n above?: number;\n };\n width?: number;\n height?: number;\n color?: string;\n}\n\nfunction FossilInfo(props: FossilItemProps) {\n const { note, spacing } = props;\n const { data, unit } = note;\n\n let d1 = data;\n\n let tooMany = null;\n if (data.length > 5) {\n const n = data.length - 5;\n d1 = data.slice(0, 5);\n tooMany = h(\"li.too-many\", `and ${n} more`);\n }\n\n return h(\"ul.fossil-collections\", [\n d1.map((d) => {\n return h(\"li.collection\", { key: d.cltn_id }, [\n h(PBDBCollectionLink, { collection: d }),\n ]);\n }),\n tooMany,\n ]);\n}\n\nfunction PBDBCollectionLink({ collection }: { collection: PBDBCollection }) {\n return h(\n \"a.link-id\",\n {\n href: `https://paleobiodb.org/classic/basicCollectionSearch?collection_no=${collection.cltn_id}`,\n },\n collection.cltn_name,\n );\n}\n\nconst matchingUnit = (dz) => (d) => d.unit_id == dz.unit_id;\n\nexport function PBDBFossilsColumn({ columnID, color = \"magenta\" }) {\n const data = useFossilData({ col_id: columnID });\n const { axisType, units } = useMacrostratColumnData();\n\n const notes: any[] = useMemo(() => {\n if (data == null || units == null) return [];\n let unitRefData = Array.from(data.values())\n .map((d) => {\n return {\n data: d,\n unit: units.find(matchingUnit(d[0])),\n };\n })\n .filter((d) => d.unit != null);\n\n unitRefData.sort((a, b) => {\n const v1 = units.indexOf(a.unit);\n const v2 = units.indexOf(b.unit);\n return v1 - v2;\n });\n\n return unitRefData.map((d) => {\n const { unit, data } = d;\n const heightRange = getUnitHeightRange(unit, axisType);\n\n return {\n top_height: heightRange[1],\n height: heightRange[0],\n data,\n unit,\n id: unit.unit_id,\n };\n });\n }, [data, units]);\n\n const width = 500;\n const paddingLeft = 40;\n\n const noteComponent = useMemo(() => {\n return (props) => {\n return h(FossilInfo, {\n color,\n ...props,\n });\n };\n }, [width, color]);\n\n if (data == null || units == null) return null;\n\n return h(\n \"div.dz-spectra\",\n h(ColumnNotes, {\n width,\n paddingLeft,\n notes,\n noteComponent,\n }),\n );\n}\n"],"names":["$2jHE4$macrostrathyper","useMemo","$2jHE4$useMemo","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","Object","defineProperty","get","$ea2f112131e22f14$export$554267114407ef68","set","s","enumerable","configurable","$iWhRv","$wtIgl","$dx7no","$6KYbn","$jDygK","$ea2f112131e22f14$var$h","styled","a","__esModule","default","$ea2f112131e22f14$var$FossilInfo","props","note","spacing","data","unit","d1","tooMany","length","n","slice","map","d","key","cltn_id","$ea2f112131e22f14$var$PBDBCollectionLink","collection","href","cltn_name","columnID","color","useFossilData","col_id","axisType","units","useMacrostratColumnData","notes","unitRefData","Array","from","values","dz","find","unit_id","filter","sort","b","v1","indexOf","heightRange","getUnitHeightRange","top_height","height","noteComponent","ColumnNotes","width","paddingLeft","PBDBFossilsColumn"],"version":3,"file":"column-views.5f05b73f.js.map","sourceRoot":"../../../../"}
@@ -1,2 +0,0 @@
1
- import"./column-views.e7e26765.js";import"./column-views.3eeac38d.js";import"./column-views.cdcce702.js";import"./column-views.8cfed88b.js";import"./column-views.af275c48.js";import"./column-views.6bba8c57.js";import{ColumnAxisType as e,ColumnContext as t,ColumnLayoutContext as o,useColumn as i,useGeologicPattern as a,ForeignObject as n,PatternDefsProvider as l}from"@macrostrat/column-components";import{SizeAwareLabel as r}from"@macrostrat/ui-components";import s from"@macrostrat/hyper";import{useContext as c,forwardRef as u,useMemo as d}from"react";import m from"classnames";import{path as p}from"d3-path";var f=globalThis,b={},h={},g=f.parcelRequirea149;null==g&&((g=function(e){if(e in b)return b[e].exports;if(e in h){var t=h[e];delete h[e];var o={id:e,exports:{}};return b[e]=o,t.call(o.exports,o,o.exports),o.exports}var i=Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,t){h[e]=t},f.parcelRequirea149=g),g.register;var v=g("5VyZI"),x=g("a3mb1"),w=g("klU0I"),y=g("iWhRv"),T=g("lgTAP"),C=g("bfmPX");let _=s.styled(w&&w.__esModule?w.default:w);function F(i,a={}){let{widthFraction:n=1,axisType:l=e.AGE,padding:r=0}=a,{scale:s}=c(t),{width:u}=c(o),[d,m]=(0,y.getUnitHeightRange)(i,l),p=s(m),f=Math.abs(s(d)-p);return{x:u*(1-n)-r,y:p-r,height:f+2*r,width:n*u+2*r}}function k(e){let{division:t,children:o,className:a,widthFraction:n=1,axisType:l,nColumns:r,...s}=e,{axisType:c}=i(),u=(0,T.useLithologies)(),d={...F(t,{widthFraction:n,axisType:c}),...s},m=(0,C.getMixedUnitColor)(t,u,null,!1),[p,f,b]=(0,x.useUnitSelectionTarget)(t);return _("g.unit",{className:a,style:{"--column-unit-background-color":m,"--column-stroke-color":m}},[_("rect.unit.background",{ref:p,...d,fill:m,fillOpacity:.8,stroke:m,onClick:b}),_.if(f)("rect.selection-overlay",d)])}function N(e){let{division:t,children:o,fill:n,defaultFill:l="transparent",className:r,widthFraction:s=1,backgroundColor:c,patternColor:u,patternID:d,axisType:p,...f}=e,{axisType:b}=i(),h=null!=t.t_clip_pos,g=null!=t.b_clip_pos,w={...F(t,{widthFraction:s,axisType:b}),...f,overflowTop:h,overflowBottom:g},y=d??(0,v.resolveID)(t),T=n??a(y,l),C=m(r,{colored:null!=c}),[k,N,U]=(0,x.useUnitSelectionTarget)(t);return _("g.unit",{className:C,style:{"--column-unit-background-color":c}},[_(H,{...w,fill:c,onClick:U,className:"background"}),_(H,{ref:k,...w,fill:T,onClick:U,className:"unit"}),_.if(N)(H,{...w,className:"selection-overlay"}),o])}let H=u((e,t)=>{let{x:o,y:i,width:a,height:n,overflowTop:l=!1,overflowBottom:r=!1,...s}=e;return l||r?_("path",{d:function(e,t,o,i,a,n){let l=p(),r=Math.floor(o/10-.5);l.moveTo(e,t);let s=2,c=o/(r+.5)/4,u=e,d=t,m=(e=!1)=>{u+=c,d-=s,l.lineTo(u,d);let t=e?1:2;u+=c*t,d+=s*t,l.lineTo(u,d),u+=c,d-=s};if(a){for(let e=0;e<r;e++)m();m(!0)}if(l.lineTo(e+o,t),l.lineTo(e+o,t+i),n){c=-c,s=-s,u=e+o,d=t+i;for(let e=0;e<r;e++)m();m(!0)}return l.lineTo(e,t+i),l.closePath(),l.toString()}(o,i,a,n,l,r),ref:t,...s}):_("rect",{x:o,y:i,width:a,height:n,ref:t,...s})});function U(e){let{division:t,label:o,onLabelUpdated:a,widthFraction:l,showLabel:s=!0,backgroundColor:c,patternID:u,axisType:d,...m}=e,{axisType:p}=i(),f={...F(t,{widthFraction:l,axisType:p}),...m},{width:b,height:h}=f;return _(N,{className:"labeled-unit",division:t,backgroundColor:c,patternID:u,...f},[_.if(s)(n,{...f,className:"unit-label-container"},_(r,{className:"unit-overlay",labelClassName:"unit-label",style:{width:b,height:h},label:o,onVisibilityChanged(e){a(o,e)}}))])}function $(e){let{unitComponent:o=N,unitComponentProps:i={}}=e,{divisions:a}=c(t);if(0==a.length)return console.warn("No divisions found in column context"),null;let n=d(()=>a.map((e,t)=>_(o,{division:e,key:e.unit_id,...i})),[a,o,i]);return _(l,{resolveID:v.resolveID,scalePattern:v.scalePattern},_("g.divisions",n))}export{k as MinimalUnit,N as Unit,U as LabeledUnit,$ as UnitBoxes};
2
- //# sourceMappingURL=column-views.b180e8c9.js.map
@@ -1 +0,0 @@
1
- {"mappings":"A,M,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,Q,kB,C,C,iB,C,C,uB,C,C,a,C,C,sB,C,C,iB,C,C,uB,C,K,+B,A,Q,kB,C,K,2B,A,Q,M,mB,A,Q,c,C,C,c,C,C,W,C,K,O,A,Q,M,Y,A,Q,Q,C,K,S,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCuBA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAoCvB,SAAS,EACP,CAAe,CACf,EAA2B,CAAC,CAAC,EAE7B,GAAM,CAAA,cACJ,EAAgB,CAAA,CAAA,SAChB,EAAW,AAAA,EAAe,GAAG,CAAA,QAC7B,EAAU,CAAA,CACX,CAAG,EACE,CAAA,MAAE,CAAK,CAAE,CAAG,AAAA,EAAW,GACvB,CAAA,MAAE,CAAK,CAAE,CAAG,AAAA,EAAW,GAEvB,CAAC,EAAc,EAAU,CAAG,AAAA,CAAA,EAAA,EAAA,kBAAiB,AAAjB,EAAmB,EAAU,GAEzD,EAAI,EAAM,GACV,EAAS,KAAK,GAAG,CAAC,EAAM,GAAgB,GAE9C,MAAO,CACL,EAAG,EAAS,CAAA,EAAI,CAAA,EAAiB,EACjC,EAAG,EAAI,EACP,OAAQ,EAAS,AAAU,EAAV,EACjB,MAAO,EAAgB,EAAQ,AAAU,EAAV,CACjC,CACF,CAEO,SAAS,EAAY,CAAK,EAC/B,GAAM,CACJ,SAAU,CAAC,CAAA,SACX,CAAQ,CAAA,UACR,CAAS,CAAA,cACT,EAAgB,CAAA,CAChB,SAAU,CAAC,CACX,SAAU,CAAE,CACZ,GAAG,EACJ,CAAG,EAEE,CAAA,SAAE,CAAQ,CAAE,CAAG,AAAA,IACf,EAAU,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,IACV,EAAS,CACb,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","sources":["<anon>","packages/column-views/src/units/boxes.ts"],"sourcesContent":["import \"./column-views.e7e26765.js\";\nimport \"./column-views.3eeac38d.js\";\nimport \"./column-views.cdcce702.js\";\nimport \"./column-views.8cfed88b.js\";\nimport \"./column-views.af275c48.js\";\nimport \"./column-views.6bba8c57.js\";\nimport {ColumnAxisType as $jfrfr$ColumnAxisType, ColumnContext as $jfrfr$ColumnContext, ColumnLayoutContext as $jfrfr$ColumnLayoutContext, useColumn as $jfrfr$useColumn, useGeologicPattern as $jfrfr$useGeologicPattern, ForeignObject as $jfrfr$ForeignObject, PatternDefsProvider as $jfrfr$PatternDefsProvider} from \"@macrostrat/column-components\";\nimport {SizeAwareLabel as $jfrfr$SizeAwareLabel} from \"@macrostrat/ui-components\";\nimport $jfrfr$macrostrathyper from \"@macrostrat/hyper\";\nimport {useContext as $jfrfr$useContext, forwardRef as $jfrfr$forwardRef, useMemo as $jfrfr$useMemo} from \"react\";\nimport $jfrfr$classnames from \"classnames\";\nimport {path as $jfrfr$path} from \"d3-path\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\n\n\n\n\n\nvar $5VyZI = parcelRequire(\"5VyZI\");\n\nvar $a3mb1 = parcelRequire(\"a3mb1\");\n\nvar $klU0I = parcelRequire(\"klU0I\");\n\n\nvar $iWhRv = parcelRequire(\"iWhRv\");\n\nvar $lgTAP = parcelRequire(\"lgTAP\");\n\nvar $bfmPX = parcelRequire(\"bfmPX\");\n\nconst $82e068a44c11e855$var$h = (0, $jfrfr$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($klU0I))));\nfunction $82e068a44c11e855$var$useUnitRect(division, options = {}) {\n const { widthFraction: widthFraction = 1, axisType: axisType = (0, $jfrfr$ColumnAxisType).AGE, padding: padding = 0 } = options;\n const { scale: scale } = (0, $jfrfr$useContext)((0, $jfrfr$ColumnContext));\n const { width: width } = (0, $jfrfr$useContext)((0, $jfrfr$ColumnLayoutContext));\n const [bottomHeight, topHeight] = (0, $iWhRv.getUnitHeightRange)(division, axisType);\n const y = scale(topHeight);\n const height = Math.abs(scale(bottomHeight) - y);\n return {\n x: width * (1 - widthFraction) - padding,\n y: y - padding,\n height: height + padding * 2,\n width: widthFraction * width + padding * 2\n };\n}\nfunction $82e068a44c11e855$export$d54fdbabca27e53(props) {\n const { division: d, children: children, className: className, widthFraction: widthFraction = 1, axisType: _, nColumns: __, ...baseBounds } = props;\n const { axisType: axisType } = (0, $jfrfr$useColumn)();\n const lithMap = (0, $lgTAP.useLithologies)();\n const bounds = {\n ...$82e068a44c11e855$var$useUnitRect(d, {\n widthFraction: widthFraction,\n axisType: axisType\n }),\n ...baseBounds\n };\n const backgroundColor = (0, $bfmPX.getMixedUnitColor)(d, lithMap, null, false);\n const [ref, selected, onClick] = (0, $a3mb1.useUnitSelectionTarget)(d);\n return $82e068a44c11e855$var$h(\"g.unit\", {\n className: className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n \"--column-stroke-color\": backgroundColor\n }\n }, [\n $82e068a44c11e855$var$h(\"rect.unit.background\", {\n ref: ref,\n ...bounds,\n fill: backgroundColor,\n fillOpacity: 0.8,\n stroke: backgroundColor,\n onClick: onClick\n }),\n $82e068a44c11e855$var$h.if(selected)(\"rect.selection-overlay\", bounds)\n ]);\n}\nfunction $82e068a44c11e855$export$1d8b9ae22d404866(props) {\n const { division: d, children: children, fill: fill, defaultFill: defaultFill = \"transparent\", className: className, widthFraction: widthFraction = 1, backgroundColor: backgroundColor, patternColor: patternColor, patternID: patternID, axisType: _, ...baseBounds } = props;\n const { axisType: axisType } = (0, $jfrfr$useColumn)();\n const hasOverflowTop = d.t_clip_pos != null;\n const hasOverflowBottom = d.b_clip_pos != null;\n const bounds = {\n ...$82e068a44c11e855$var$useUnitRect(d, {\n widthFraction: widthFraction,\n axisType: axisType\n }),\n ...baseBounds,\n overflowTop: hasOverflowTop,\n overflowBottom: hasOverflowBottom\n };\n const _patternID = patternID ?? (0, $5VyZI.resolveID)(d);\n let _fill = fill ?? (0, $jfrfr$useGeologicPattern)(_patternID, defaultFill);\n const hasBackgroundColor = backgroundColor != null;\n const _className = (0, $jfrfr$classnames)(className, {\n colored: hasBackgroundColor\n });\n const [ref, selected, onClick] = (0, $a3mb1.useUnitSelectionTarget)(d);\n //const key = `unit-${d.unit_id}`;\n return $82e068a44c11e855$var$h(\"g.unit\", {\n className: _className,\n style: {\n \"--column-unit-background-color\": backgroundColor\n }\n }, [\n $82e068a44c11e855$var$h($82e068a44c11e855$var$UnitRect, {\n ...bounds,\n fill: backgroundColor,\n onClick: onClick,\n className: \"background\"\n }),\n $82e068a44c11e855$var$h($82e068a44c11e855$var$UnitRect, {\n ref: ref,\n ...bounds,\n fill: _fill,\n onClick: //mask,\n onClick,\n className: \"unit\"\n }),\n $82e068a44c11e855$var$h.if(selected)($82e068a44c11e855$var$UnitRect, {\n ...bounds,\n className: \"selection-overlay\"\n }),\n //defs,\n children\n ]);\n}\nconst $82e068a44c11e855$var$UnitRect = (0, $jfrfr$forwardRef)((props, ref)=>{\n const { x: x, y: y, width: width, height: height, overflowTop: overflowTop = false, overflowBottom: overflowBottom = false, ...rest } = props;\n if (!overflowTop && !overflowBottom) return $82e068a44c11e855$var$h(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n ref: ref,\n ...rest\n });\n else {\n const d = $82e068a44c11e855$var$zigZagBoxPath(x, y, width, height, overflowTop, overflowBottom);\n return $82e068a44c11e855$var$h(\"path\", {\n d: d,\n ref: ref,\n ...rest\n });\n }\n});\nfunction $82e068a44c11e855$var$zigZagBoxPath(x, y, width, height, top, bottom) {\n const zigZagWidth = 10;\n const zigZagHeight = 4;\n const d = (0, $jfrfr$path)();\n const nZigZags = Math.floor(width / zigZagWidth - 0.5);\n const _zigZagWidth = width / (nZigZags + 0.5);\n d.moveTo(x, y);\n let dy = zigZagHeight / 2;\n // Each zig-zag consists of a short outward motion\n let dx = _zigZagWidth / 4;\n let cx = x;\n let cy = y;\n const doZigZag = (last = false)=>{\n cx += dx;\n cy -= dy;\n d.lineTo(cx, cy);\n let scalar = last ? 1 : 2;\n cx += dx * scalar;\n cy += dy * scalar;\n d.lineTo(cx, cy);\n cx += dx;\n cy -= dy;\n };\n if (top) {\n // Move to the offset\n //d.lineTo(cx, y);\n // Draw the zig-zags\n for(let i = 0; i < nZigZags; i++)doZigZag();\n // Draw the last half zig-zag\n doZigZag(true);\n }\n // Draw the right edge\n d.lineTo(x + width, y);\n d.lineTo(x + width, y + height);\n if (bottom) {\n dx = -dx;\n dy = -dy;\n cx = x + width;\n cy = y + height;\n for(let i = 0; i < nZigZags; i++)doZigZag();\n doZigZag(true);\n }\n // Draw the last line to the left edge\n d.lineTo(x, y + height);\n // Draw the left edge\n d.closePath();\n // Now render the path;\n return d.toString();\n}\nfunction $82e068a44c11e855$export$b4f0ca233b98f9af(props) {\n const { division: division, label: label, onLabelUpdated: onLabelUpdated, widthFraction: widthFraction, showLabel: showLabel = true, backgroundColor: backgroundColor, patternID: patternID, axisType: _, ...baseBounds } = props;\n const { axisType: axisType } = (0, $jfrfr$useColumn)();\n const bounds = {\n ...$82e068a44c11e855$var$useUnitRect(division, {\n widthFraction: widthFraction,\n axisType: axisType\n }),\n ...baseBounds\n };\n const { width: width, height: height } = bounds;\n return $82e068a44c11e855$var$h($82e068a44c11e855$export$1d8b9ae22d404866, {\n className: \"labeled-unit\",\n division: division,\n backgroundColor: backgroundColor,\n patternID: patternID,\n ...bounds\n }, [\n $82e068a44c11e855$var$h.if(showLabel)((0, $jfrfr$ForeignObject), {\n ...bounds,\n className: \"unit-label-container\"\n }, $82e068a44c11e855$var$h((0, $jfrfr$SizeAwareLabel), {\n className: \"unit-overlay\",\n labelClassName: \"unit-label\",\n style: {\n width: width,\n height: height\n },\n label: label,\n onVisibilityChanged (viz) {\n onLabelUpdated(label, viz);\n }\n }))\n ]);\n}\nfunction $82e068a44c11e855$export$5d1cdfabe8dc8085(props) {\n const { unitComponent: unitComponent = $82e068a44c11e855$export$1d8b9ae22d404866, unitComponentProps: unitComponentProps = {} } = props;\n const { divisions: divisions } = (0, $jfrfr$useContext)((0, $jfrfr$ColumnContext));\n if (divisions.length == 0) {\n console.warn(\"No divisions found in column context\");\n return null;\n }\n const children = (0, $jfrfr$useMemo)(()=>{\n return divisions.map((division, i)=>{\n // @ts-ignore\n return $82e068a44c11e855$var$h(unitComponent, {\n division: division,\n key: division.unit_id,\n ...unitComponentProps\n });\n });\n }, [\n divisions,\n unitComponent,\n unitComponentProps\n ]);\n return $82e068a44c11e855$var$h((0, $jfrfr$PatternDefsProvider), {\n resolveID: $5VyZI.resolveID,\n scalePattern: $5VyZI.scalePattern\n }, $82e068a44c11e855$var$h(\"g.divisions\", children));\n}\n\n\nexport {$82e068a44c11e855$export$d54fdbabca27e53 as MinimalUnit, $82e068a44c11e855$export$1d8b9ae22d404866 as Unit, $82e068a44c11e855$export$b4f0ca233b98f9af as LabeledUnit, $82e068a44c11e855$export$5d1cdfabe8dc8085 as UnitBoxes};\n//# sourceMappingURL=column-views.b180e8c9.js.map\n","import {\n ColumnAxisType,\n ColumnContext,\n ColumnLayoutContext,\n ForeignObject,\n PatternDefsProvider,\n useColumn,\n useGeologicPattern,\n} from \"@macrostrat/column-components\";\nimport { SizeAwareLabel, Clickable } from \"@macrostrat/ui-components\";\nimport hyper from \"@macrostrat/hyper\";\nimport { forwardRef, ReactNode, useContext, useMemo } from \"react\";\nimport { resolveID, scalePattern } from \"./resolvers\";\nimport { useUnitSelectionTarget } from \"./selection\";\nimport { IUnit } from \"./types\";\nimport styles from \"./boxes.module.sass\";\nimport classNames from \"classnames\";\nimport { getUnitHeightRange } from \"../prepare-units/utils\";\nimport { useLithologies } from \"../data-provider\";\nimport { getMixedUnitColor } from \"./colors\";\nimport { path } from \"d3-path\";\nimport type { RectBounds } from \"./types\";\n\nconst h = hyper.styled(styles);\n\ninterface UnitRectOptions {\n widthFraction?: number;\n axisType?: ColumnAxisType;\n // Padding to create overflow for zig-zags or other ornamented edges\n padding?: number;\n}\n\ninterface UnitProps extends Clickable, Partial<RectBounds>, UnitRectOptions {\n division: IUnit;\n resolveID?(IUnit): string;\n UUID?: string;\n defaultFill?: string;\n widthFraction?: number;\n children?: ReactNode;\n className?: string;\n fill?: string;\n backgroundColor?: string;\n patternColor?: string;\n patternID?: string | number;\n}\n\nexport interface LabeledUnitProps\n extends UnitRectOptions,\n Clickable,\n Partial<RectBounds> {\n division: IUnit;\n patternID?: string | number;\n label: string;\n onLabelUpdated?(label: string, shown: boolean);\n halfWidth?: boolean;\n showLabel?: boolean;\n backgroundColor?: string;\n}\n\nfunction useUnitRect(\n division: IUnit,\n options: UnitRectOptions = {},\n): RectBounds {\n const {\n widthFraction = 1,\n axisType = ColumnAxisType.AGE,\n padding = 0,\n } = options;\n const { scale } = useContext(ColumnContext);\n const { width } = useContext(ColumnLayoutContext);\n\n const [bottomHeight, topHeight] = getUnitHeightRange(division, axisType);\n\n const y = scale(topHeight);\n const height = Math.abs(scale(bottomHeight) - y);\n\n return {\n x: width * (1 - widthFraction) - padding,\n y: y - padding,\n height: height + padding * 2,\n width: widthFraction * width + padding * 2,\n };\n}\n\nexport function MinimalUnit(props) {\n const {\n division: d,\n children,\n className,\n widthFraction = 1,\n axisType: _, // not sure why this is brought in...\n nColumns: __,\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n const lithMap = useLithologies();\n const bounds = {\n ...useUnitRect(d, { widthFraction, axisType }),\n ...baseBounds,\n };\n\n const backgroundColor = getMixedUnitColor(d, lithMap, null, false);\n\n const [ref, selected, onClick] = useUnitSelectionTarget(d);\n\n return h(\n \"g.unit\",\n {\n className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n \"--column-stroke-color\": backgroundColor,\n },\n },\n [\n h(\"rect.unit.background\", {\n ref,\n ...bounds,\n fill: backgroundColor,\n fillOpacity: 0.8,\n stroke: backgroundColor,\n onClick,\n }),\n h.if(selected)(\"rect.selection-overlay\", bounds),\n ],\n );\n}\n\nfunction Unit(props: UnitProps) {\n const {\n division: d,\n children,\n fill,\n defaultFill = \"transparent\",\n className,\n widthFraction = 1,\n backgroundColor,\n patternColor,\n patternID,\n axisType: _, // not sure why this is brought in...\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n\n const hasOverflowTop = d.t_clip_pos != null;\n const hasOverflowBottom = d.b_clip_pos != null;\n\n const bounds = {\n ...useUnitRect(d, { widthFraction, axisType }),\n ...baseBounds,\n overflowTop: hasOverflowTop,\n overflowBottom: hasOverflowBottom,\n };\n const _patternID = patternID ?? resolveID(d);\n let _fill = fill ?? useGeologicPattern(_patternID, defaultFill);\n\n const hasBackgroundColor = backgroundColor != null;\n\n const _className = classNames(className, { colored: hasBackgroundColor });\n\n const [ref, selected, onClick] = useUnitSelectionTarget(d);\n\n //const key = `unit-${d.unit_id}`;\n\n return h(\n \"g.unit\",\n {\n className: _className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n },\n },\n [\n h(UnitRect, {\n ...bounds,\n fill: backgroundColor,\n onClick,\n className: \"background\",\n }),\n h(UnitRect, {\n ref,\n ...bounds,\n fill: _fill,\n //mask,\n onClick,\n className: \"unit\",\n }),\n h.if(selected)(UnitRect, { ...bounds, className: \"selection-overlay\" }),\n //defs,\n children,\n ],\n );\n}\n\ninterface UnitRectProps {\n x: number;\n y: number;\n width: number;\n height: number;\n className: string;\n // Used to determine if the rect should have a zig-zag edge on the top or bottom\n overflowTop?: boolean;\n overflowBottom?: boolean;\n [key: string]: any;\n}\n\nconst UnitRect = forwardRef((props: UnitRectProps, ref) => {\n const {\n x,\n y,\n width,\n height,\n overflowTop = false,\n overflowBottom = false,\n ...rest\n } = props;\n\n if (!overflowTop && !overflowBottom) {\n return h(\"rect\", {\n x,\n y,\n width,\n height,\n ref,\n ...rest,\n });\n } else {\n const d = zigZagBoxPath(x, y, width, height, overflowTop, overflowBottom);\n return h(\"path\", {\n d,\n ref,\n ...rest,\n });\n }\n});\n\nfunction zigZagBoxPath(x, y, width, height, top: boolean, bottom: boolean) {\n const zigZagWidth = 10;\n const zigZagHeight = 4;\n\n const d = path();\n\n const nZigZags = Math.floor(width / zigZagWidth - 0.5);\n const _zigZagWidth = width / (nZigZags + 0.5);\n\n d.moveTo(x, y);\n let dy = zigZagHeight / 2;\n // Each zig-zag consists of a short outward motion\n let dx = _zigZagWidth / 4;\n\n let cx = x;\n let cy = y;\n\n const doZigZag = (last = false) => {\n cx += dx;\n cy -= dy;\n d.lineTo(cx, cy);\n let scalar = last ? 1 : 2;\n cx += dx * scalar;\n cy += dy * scalar;\n d.lineTo(cx, cy);\n cx += dx;\n cy -= dy;\n };\n\n if (top) {\n // Move to the offset\n //d.lineTo(cx, y);\n // Draw the zig-zags\n for (let i = 0; i < nZigZags; i++) {\n doZigZag();\n }\n // Draw the last half zig-zag\n doZigZag(true);\n }\n // Draw the right edge\n d.lineTo(x + width, y);\n d.lineTo(x + width, y + height);\n\n if (bottom) {\n dx = -dx;\n dy = -dy;\n cx = x + width;\n cy = y + height;\n\n for (let i = 0; i < nZigZags; i++) {\n doZigZag();\n }\n doZigZag(true);\n }\n // Draw the last line to the left edge\n d.lineTo(x, y + height);\n // Draw the left edge\n d.closePath();\n\n // Now render the path;\n return d.toString();\n}\n\nfunction LabeledUnit(props: LabeledUnitProps) {\n const {\n division,\n label,\n onLabelUpdated,\n widthFraction,\n showLabel = true,\n backgroundColor,\n patternID,\n axisType: _, // not sure why this is brought in...\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n const bounds = {\n ...useUnitRect(division, { widthFraction, axisType }),\n ...baseBounds,\n };\n const { width, height } = bounds;\n return h(\n Unit,\n {\n className: \"labeled-unit\",\n division,\n backgroundColor,\n patternID,\n ...bounds,\n },\n [\n h.if(showLabel)(\n ForeignObject,\n { ...bounds, className: \"unit-label-container\" },\n h(SizeAwareLabel, {\n className: \"unit-overlay\",\n labelClassName: \"unit-label\",\n style: { width, height },\n label,\n onVisibilityChanged(viz) {\n onLabelUpdated(label, viz);\n },\n }),\n ),\n ],\n );\n}\n\nfunction UnitBoxes<T>(props: {\n unitComponent: React.FunctionComponent<{ division: T }>;\n unitComponentProps?: any;\n transformDivisions?(divisions: T[]): T[];\n transformDivision?: (\n division: any,\n index: number,\n divisions: any[],\n ) => T | null;\n}) {\n const { unitComponent = Unit, unitComponentProps = {} } = props;\n const { divisions } = useContext(ColumnContext);\n\n if (divisions.length == 0) {\n console.warn(\"No divisions found in column context\");\n return null;\n }\n\n const children = useMemo(() => {\n return divisions.map((division: any, i) => {\n // @ts-ignore\n return h(unitComponent, {\n division,\n key: division.unit_id,\n ...unitComponentProps,\n });\n });\n }, [divisions, unitComponent, unitComponentProps]);\n\n return h(\n PatternDefsProvider,\n { resolveID, scalePattern },\n h(\"g.divisions\", children),\n );\n}\n\nexport { LabeledUnit, Unit, UnitBoxes, UnitProps };\n"],"names":["ColumnAxisType","$jfrfr$ColumnAxisType","ColumnContext","$jfrfr$ColumnContext","ColumnLayoutContext","$jfrfr$ColumnLayoutContext","useColumn","$jfrfr$useColumn","useGeologicPattern","$jfrfr$useGeologicPattern","ForeignObject","$jfrfr$ForeignObject","PatternDefsProvider","$jfrfr$PatternDefsProvider","SizeAwareLabel","$jfrfr$SizeAwareLabel","$jfrfr$macrostrathyper","useContext","$jfrfr$useContext","forwardRef","$jfrfr$forwardRef","useMemo","$jfrfr$useMemo","$jfrfr$classnames","path","$jfrfr$path","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$5VyZI","$a3mb1","$klU0I","$iWhRv","$lgTAP","$bfmPX","$82e068a44c11e855$var$h","styled","a","__esModule","default","$82e068a44c11e855$var$useUnitRect","division","options","widthFraction","axisType","AGE","padding","scale","width","bottomHeight","topHeight","getUnitHeightRange","y","height","Math","abs","x","$82e068a44c11e855$export$d54fdbabca27e53","props","d","children","className","_","nColumns","__","baseBounds","lithMap","useLithologies","bounds","backgroundColor","getMixedUnitColor","ref","selected","onClick","useUnitSelectionTarget","style","fill","fillOpacity","stroke","if","$82e068a44c11e855$export$1d8b9ae22d404866","defaultFill","patternColor","patternID","hasOverflowTop","t_clip_pos","hasOverflowBottom","b_clip_pos","overflowTop","overflowBottom","_patternID","resolveID","_fill","_className","colored","$82e068a44c11e855$var$UnitRect","rest","$82e068a44c11e855$var$zigZagBoxPath","top","bottom","nZigZags","floor","moveTo","dy","zigZagHeight","dx","_zigZagWidth","cx","cy","doZigZag","last","lineTo","scalar","i","closePath","toString","$82e068a44c11e855$export$b4f0ca233b98f9af","label","onLabelUpdated","showLabel","labelClassName","onVisibilityChanged","viz","$82e068a44c11e855$export$5d1cdfabe8dc8085","unitComponent","unitComponentProps","divisions","length","console","warn","map","key","unit_id","scalePattern","MinimalUnit","Unit","LabeledUnit","UnitBoxes"],"version":3,"file":"column-views.b180e8c9.js.map","sourceRoot":"../../../../"}
@@ -1,2 +0,0 @@
1
- .VC2fja_fossil-collections{border-left:1px solid var(--column-stroke-color);margin:1px 0;padding-left:.2em;font-size:.9em;list-style:none}.VC2fja_fossil-collections li{display:inline}.VC2fja_fossil-collections li:not(:last-child):after{content:", ";color:var(--secondary-color)}.VC2fja_fossil-collections li.VC2fja_too-many{color:var(--secondary-color);font-style:italic}
2
- /*# sourceMappingURL=column-views.cd468adb.css.map */
@@ -1 +0,0 @@
1
- {"mappings":"ACAA,0IAME,6CAEE,+FAGF","sources":["column-views.cd468adb.css","packages/column-views/src/facets/fossils/index.module.sass"],"sourcesContent":[".VC2fja_fossil-collections {\n border-left: 1px solid var(--column-stroke-color);\n margin: 1px 0;\n padding-left: .2em;\n font-size: .9em;\n list-style: none;\n}\n\n.VC2fja_fossil-collections li {\n display: inline;\n}\n\n.VC2fja_fossil-collections li:not(:last-child):after {\n content: \", \";\n color: var(--secondary-color);\n}\n\n.VC2fja_fossil-collections li.VC2fja_too-many {\n color: var(--secondary-color);\n font-style: italic;\n}\n/*# sourceMappingURL=column-views.cd468adb.css.map */\n",".fossil-collections\n padding-left: 0.2em\n font-size: 0.9em\n list-style: none\n border-left: 1px solid var(--column-stroke-color)\n margin: 1px 0\n li\n display: inline\n &:not(:last-child):after\n content: \", \"\n color: var(--secondary-color)\n li.too-many\n color: var(--secondary-color)\n font-style: italic\n"],"names":[],"version":3,"file":"column-views.cd468adb.css.map","sourceRoot":"../../../../"}
@@ -1,2 +0,0 @@
1
- .column-container_afc440,body.light-mode .column-container_afc440{--column-background-color:var(--background-color,#fff);--column-stroke-color:var(--text-emphasized-color,#000);--column-text-color:var(--text-emphasized-color,#000)}@media (prefers-color-scheme:dark){body:not(.light-mode) .column-container_afc440{--column-background-color:var(--background-color,#000);--column-stroke-color:var(--text-emphasized-color,#fff);--column-text-color:var(--text-emphasized-color,#fff);color-scheme:dark;color:var(--column-text-color)}body:not(.light-mode) .column-container_afc440 .timescale{color:#000}body:not(.light-mode) .column-container_afc440 svg pattern image{filter:invert()}}body.dark-mode .column-container_afc440{--column-background-color:var(--background-color,#000);--column-stroke-color:var(--text-emphasized-color,#fff);--column-text-color:var(--text-emphasized-color,#fff);color-scheme:dark;color:var(--column-text-color)}body.dark-mode .column-container_afc440 .timescale{color:#000}body.dark-mode .column-container_afc440 svg pattern image{filter:invert()}.column-container_afc440 .column{flex-direction:row;height:fit-content;display:flex;position:relative}.column-container_afc440 .unit{stroke:var(--column-stroke-color);stroke-width:1px}.column-container_afc440 .selection-overlay{fill:var(--selection-overlay-color,red);fill-opacity:var(--selection-overlay-opacity,.5)}.column-container_afc440 g.lithology-column use.frame{stroke:var(--column-stroke-color);pointer-events:none;stroke-width:1.5px!important}.column-container_afc440 .unit-label{text-align:center}.column-container_afc440 .col-note-label{margin:1px 0;font-size:10px;line-height:9px;border-left:none!important}.column-container_afc440 g.height-range{display:none}.column-container_afc440 .note-inner{border:none;padding:1px}.column-container_afc440 .frame rect{fill:#0000}.column-container_afc440 .default-buttons{width:100%;margin:0 -10px}.column-container_afc440 div.section{flex-direction:row;display:flex}.column-container_afc440 .section .divisions .unit{cursor:pointer}.column-container_afc440 .timescale{width:calc((1.5em + 1.5px)*var(--timescale-level-count,4));--timescale-level-size:1.5em}.timescale-column_afc440{position:relative}.section-main_afc440{margin-bottom:-4px;position:relative}.section-units-container_afc440,.main-column_afc440{position:relative}.unconformity-labels_afc440{pointer-events:none;position:absolute;top:0;left:0}.unconformity_afc440{text-align:center;justify-content:center;align-items:center;font-size:.8em;display:flex;position:absolute;top:0}.unconformity_afc440.giga_afc440{font-size:1em;font-weight:800}.unconformity_afc440.mega_afc440{font-size:.9em;font-weight:700}.unconformity_afc440.large_afc440{font-weight:600}.unconformity_afc440.small_afc440{font-weight:300}.unconformity-text_afc440{width:var(--column-width);color:var(--column-stroke-color);--unit-font-style:normal}.column-title-row_afc440{flex-direction:row;justify-content:space-between;align-items:baseline;gap:1em;display:flex}
2
- /*# sourceMappingURL=column-views.e1a43131.css.map */
@@ -1 +0,0 @@
1
- {"mappings":"ACAA,uOAWE,mCACE,qQAOI,qEAEA,kFAIN,8PAOE,8DAIF,0EAIE,sGAOA,kFAKA,qIAIF,yIAKA,uDAGF,gH,qD,6D,gDAgBE,oE,qE,kE,4H,2C,0D,sEA6BF,+EAOE,qI,+DAWE,gEAMF,kDAIA,kDAIA,8G","sources":["column-views.e1a43131.css","packages/column-views/src/column.module.sass"],"sourcesContent":[".column-container_afc440, body.light-mode .column-container_afc440 {\n --column-background-color: var(--background-color, #fff);\n --column-stroke-color: var(--text-emphasized-color, #000);\n --column-text-color: var(--text-emphasized-color, #000);\n}\n\n@media (prefers-color-scheme: dark) {\n body:not(.light-mode) .column-container_afc440 {\n --column-background-color: var(--background-color, #000);\n --column-stroke-color: var(--text-emphasized-color, #fff);\n --column-text-color: var(--text-emphasized-color, #fff);\n color-scheme: dark;\n color: var(--column-text-color);\n }\n\n body:not(.light-mode) .column-container_afc440 .timescale {\n color: #000;\n }\n\n body:not(.light-mode) .column-container_afc440 svg pattern image {\n filter: invert();\n }\n}\n\nbody.dark-mode .column-container_afc440 {\n --column-background-color: var(--background-color, #000);\n --column-stroke-color: var(--text-emphasized-color, #fff);\n --column-text-color: var(--text-emphasized-color, #fff);\n color-scheme: dark;\n color: var(--column-text-color);\n}\n\nbody.dark-mode .column-container_afc440 .timescale {\n color: #000;\n}\n\nbody.dark-mode .column-container_afc440 svg pattern image {\n filter: invert();\n}\n\n.column-container_afc440 .column {\n flex-direction: row;\n height: fit-content;\n display: flex;\n position: relative;\n}\n\n.column-container_afc440 .unit {\n stroke: var(--column-stroke-color);\n stroke-width: 1px;\n}\n\n.column-container_afc440 .selection-overlay {\n fill: var(--selection-overlay-color, red);\n fill-opacity: var(--selection-overlay-opacity, .5);\n}\n\n.column-container_afc440 g.lithology-column use.frame {\n stroke: var(--column-stroke-color);\n pointer-events: none;\n stroke-width: 1.5px !important;\n}\n\n.column-container_afc440 .unit-label {\n text-align: center;\n}\n\n.column-container_afc440 .col-note-label {\n margin: 1px 0;\n font-size: 10px;\n line-height: 9px;\n border-left: none !important;\n}\n\n.column-container_afc440 g.height-range {\n display: none;\n}\n\n.column-container_afc440 .note-inner {\n border: none;\n padding: 1px;\n}\n\n.column-container_afc440 .frame rect {\n fill: #0000;\n}\n\n.column-container_afc440 .default-buttons {\n width: 100%;\n margin: 0 -10px;\n}\n\n.column-container_afc440 div.section {\n flex-direction: row;\n display: flex;\n}\n\n.column-container_afc440 .section .divisions .unit {\n cursor: pointer;\n}\n\n.column-container_afc440 .timescale {\n width: calc((1.5em + 1.5px) * var(--timescale-level-count, 4));\n --timescale-level-size: 1.5em;\n}\n\n.timescale-column_afc440 {\n position: relative;\n}\n\n.section-main_afc440 {\n margin-bottom: -4px;\n position: relative;\n}\n\n.section-units-container_afc440, .main-column_afc440 {\n position: relative;\n}\n\n.unconformity-labels_afc440 {\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.unconformity_afc440 {\n text-align: center;\n justify-content: center;\n align-items: center;\n font-size: .8em;\n display: flex;\n position: absolute;\n top: 0;\n}\n\n.unconformity_afc440.giga_afc440 {\n font-size: 1em;\n font-weight: 800;\n}\n\n.unconformity_afc440.mega_afc440 {\n font-size: .9em;\n font-weight: 700;\n}\n\n.unconformity_afc440.large_afc440 {\n font-weight: 600;\n}\n\n.unconformity_afc440.small_afc440 {\n font-weight: 300;\n}\n\n.unconformity-text_afc440 {\n width: var(--column-width);\n color: var(--column-stroke-color);\n --unit-font-style: normal;\n}\n\n.column-title-row_afc440 {\n flex-direction: row;\n justify-content: space-between;\n align-items: baseline;\n gap: 1em;\n display: flex;\n}\n/*# sourceMappingURL=column-views.e1a43131.css.map */\n",".column-container, body:global(.light-mode) .column-container\n --column-background-color: var(--background-color, #fff)\n --column-stroke-color: var(--text-emphasized-color, #000)\n --column-text-color: var(--text-emphasized-color, #000)\n\n/* We have to duplicate the dark mode styles here\n because we want to set them either if the preferred\n color scheme is dark OR if dark mode is explicitly enabled.\n If dark mode is explicitly enabled, we want to override\n the media query. */\n@media (prefers-color-scheme: dark)\n body:not(:global(.light-mode)) .column-container\n --column-background-color: var(--background-color, #000)\n --column-stroke-color: var(--text-emphasized-color, #fff)\n --column-text-color: var(--text-emphasized-color, #fff)\n color-scheme: dark\n color: var(--column-text-color)\n :global\n .timescale\n color: #000\n svg pattern image\n filter: invert(100%)\n\nbody:global(.dark-mode) .column-container\n --column-background-color: var(--background-color, #000)\n --column-stroke-color: var(--text-emphasized-color, #fff)\n --column-text-color: var(--text-emphasized-color, #fff)\n color-scheme: dark\n color: var(--column-text-color)\n :global\n .timescale\n color: #000\n svg pattern image\n filter: invert(100%)\n\n.column-container :global\n .column\n display: flex\n flex-direction: row\n position: relative\n height: fit-content\n\n .unit\n stroke: var(--column-stroke-color)\n stroke-width: 1px\n\n .selection-overlay\n fill: var(--selection-overlay-color, red)\n fill-opacity: var(--selection-overlay-opacity, 0.5)\n\n g.lithology-column use.frame\n stroke: var(--column-stroke-color)\n stroke-width: 1.5px !important\n pointer-events: none\n\n.column-container :global .unit-label\n text-align: center\n\n.column-container :global .col-note-label\n font-size: 10px\n line-height: 9px\n border-left: none !important\n margin: 1px 0\n\n.column-container :global g.height-range\n display: none\n\n.column-container :global .note-inner\n border: none\n padding: 1px\n\n.column-container :global .frame rect\n fill: transparent\n\n.column-container :global .default-buttons\n width: 100%\n margin: 0 -10px\n\n.column-container :global div.section\n display: flex\n flex-direction: row\n\n.column-container :global .section .divisions .unit\n cursor: pointer\n\n.column-container :global(.timescale)\n width: calc(calc(1.5em + 1.5px) * var(--timescale-level-count, 4))\n --timescale-level-size: 1.5em\n\n.timescale-column\n position: relative\n\n.section-main\n position: relative\n margin-bottom: -4px\n\n.section-units-container\n position: relative\n\n.main-column\n position: relative\n\n.unconformity-labels\n position: absolute\n top: 0\n left: 0\n pointer-events: none\n\n\n.unconformity\n text-align: center\n position: absolute\n top: 0px\n display: flex\n justify-content: center\n align-items: center\n font-size: 0.8em\n &.giga\n font-weight: 800\n font-size: 1em\n &.mega\n font-weight: 600\n font-weight: 700\n font-size: 0.9em\n &.large\n font-weight: 600\n &.small\n font-weight: 300\n\n\n.unconformity-text\n width: var(--column-width)\n color: var(--column-stroke-color)\n --unit-font-style: normal\n\n\n.column-title-row\n display: flex\n flex-direction: row\n gap: 1em\n justify-content: space-between\n align-items: baseline\n"],"names":[],"version":3,"file":"column-views.e1a43131.css.map","sourceRoot":"../../../../"}