@macrostrat/column-views 1.0.1 → 1.0.2

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.
package/CHANGELOG.md CHANGED
@@ -1,8 +1,12 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to this project will be documented in this file.
4
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
3
+ All notable changes to this project will be documented in this file. The format
4
+ is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this
5
+ project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [1.0.2] - 2025-02-16
8
+
9
+ Improve column styles
6
10
 
7
11
  ## [1.0.1] - 2025-02-15
8
12
 
@@ -1,10 +1,10 @@
1
- import $bTsJU$columnmodule9b8ce99djs from "./column.module.9b8ce99d.js";
2
- import "./column.module.b5e18f0c.css";
1
+ import $bTsJU$columnmodulee632868ajs from "./column.module.e632868a.js";
2
+ import "./column.module.039d872c.css";
3
3
  import {TrackedLabeledUnit as $8c8238faa5cde49c$export$f613830566442374} from "./composite.608a4ca2.js";
4
4
  import {UnitSelectionProvider as $4d5d1c15f39f6a14$export$f19d75b1d4b676a4, useUnitSelectionDispatch as $4d5d1c15f39f6a14$export$77a278d5ca56e309, UnitKeyboardNavigation as $4d5d1c15f39f6a14$export$70f5ee19650fc7d1} from "./selection.bbf26d0e.js";
5
5
  import {UnitSelectionPopover as $80d4db83aa9ba807$export$db1115efab13710d} from "./selection-popover.17d1bd55.js";
6
6
  import {MacrostratUnitsProvider as $1fcb9b8d7da394a3$export$e5fe24ae4f287040} from "./store.25eaa168.js";
7
- import {Section as $7d0f52717c0de7e1$export$6e2c8f0811a474ce} from "./section.2513d610.js";
7
+ import {Section as $7d0f52717c0de7e1$export$6e2c8f0811a474ce} from "./section.cc1b1100.js";
8
8
  import {ensureArray as $2c60de495788ce61$export$d0c8ecbd4ed8940c, groupUnitsIntoSections as $2c60de495788ce61$export$dfbd00399d639b4c, _mergeOverlappingSections as $2c60de495788ce61$export$ec445c47b6e5d2d} from "./helpers.8a03cfc7.js";
9
9
  import {ColumnLayoutContext as $bTsJU$ColumnLayoutContext} from "@macrostrat/column-components";
10
10
  import {hyperStyled as $bTsJU$hyperStyled} from "@macrostrat/hyper";
@@ -27,7 +27,7 @@ function $parcel$interopDefault(a) {
27
27
 
28
28
 
29
29
 
30
- const $2118f0266dc7e955$var$h = (0, $bTsJU$hyperStyled)((0, ($parcel$interopDefault($bTsJU$columnmodule9b8ce99djs))));
30
+ const $2118f0266dc7e955$var$h = (0, $bTsJU$hyperStyled)((0, ($parcel$interopDefault($bTsJU$columnmodulee632868ajs))));
31
31
  function $2118f0266dc7e955$export$48a4cacf2b7a4441({ division: division, nColumns: nColumns = 2, ...rest }) {
32
32
  const { width: width } = (0, $bTsJU$useContext)((0, $bTsJU$ColumnLayoutContext));
33
33
  //const nCols = Math.min(nColumns, division.overlappingUnits.length+1)
@@ -146,4 +146,4 @@ function $2118f0266dc7e955$var$_Column(props) {
146
146
 
147
147
 
148
148
  export {$2118f0266dc7e955$export$48a4cacf2b7a4441 as UnitComponent, $2118f0266dc7e955$export$816b5d811295e6bc as Column};
149
- //# sourceMappingURL=column.97e31037.js.map
149
+ //# sourceMappingURL=column.8dd26e1a.js.map
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/column-views/src/column.ts"],"sourcesContent":["import {\n ColumnAxisType,\n ColumnLayoutContext,\n ColumnProvider,\n} from \"@macrostrat/column-components\";\nimport { hyperStyled } from \"@macrostrat/hyper\";\nimport { useDarkMode } from \"@macrostrat/ui-components\";\nimport classNames from \"classnames\";\nimport { createRef, RefObject, useContext, useMemo, useState } from \"react\";\nimport styles from \"./column.module.sass\";\nimport {\n TrackedLabeledUnit,\n UnitKeyboardNavigation,\n UnitSelectionProvider,\n useUnitSelectionDispatch,\n} from \"./units\";\nimport { SectionInfo } from \"./section\";\nimport { RectBounds } from \"./units/boxes\";\nimport { UnitSelectionPopover } from \"./selection-popover\";\nimport { MacrostratUnitsProvider } from \"./store\";\nimport { IColumnProps, Section } from \"./section\";\nimport {\n _mergeOverlappingSections,\n ensureArray,\n groupUnitsIntoSections,\n} from \"./helpers\";\n\nconst h = hyperStyled(styles);\n\nexport function UnitComponent({ division, nColumns = 2, ...rest }) {\n const { width } = useContext(ColumnLayoutContext);\n\n //const nCols = Math.min(nColumns, division.overlappingUnits.length+1)\n //console.log(division);\n return h(TrackedLabeledUnit, {\n division,\n ...rest,\n width: division.overlappingUnits.length > 0 ? width / nColumns : width,\n x: (division.column * width) / nColumns,\n });\n}\n\nfunction Unconformity({ upperUnits = [], lowerUnits = [], style }) {\n if (upperUnits.length == 0 || lowerUnits.length == 0) {\n return null;\n }\n\n const ageGap = lowerUnits[0].t_age - upperUnits[upperUnits.length - 1].b_age;\n\n return h(\"div.unconformity\", { style }, [\n h(\"div.unconformity-text\", `${ageGap.toFixed(1)} Ma`),\n ]);\n}\n\nfunction sectionClassName(section: SectionInfo) {\n return `section-${ensureArray(section.section_id).join(\"-\")}`;\n}\n\nexport interface ColumnProps extends IColumnProps {\n unconformityLabels?: boolean;\n className?: string;\n mergeOverlappingSections?: boolean;\n showLabelColumn?: boolean;\n columnRef?: RefObject<HTMLElement>;\n keyboardNavigation?: boolean;\n showUnitPopover?: boolean;\n t_age?: number;\n b_age?: number;\n}\n\nexport function Column(props: ColumnProps) {\n const { showUnitPopover = false, ...rest } = props;\n const ref = createRef<HTMLElement>();\n // Selected item position\n const [position, setPosition] = useState<RectBounds | null>(null);\n\n if (!showUnitPopover) {\n return h(_Column, rest);\n }\n\n return h(\n UnitSelectionProvider,\n {\n onUnitSelected: (unit, target: SVGElement | HTMLElement | null) => {\n if (!showUnitPopover) return;\n\n if (unit == null) {\n setPosition(null);\n return;\n }\n const el: HTMLElement = ref.current;\n if (el == null || target == null) return;\n const rect = el.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n setPosition({\n x: targetRect.left - rect.left,\n y: targetRect.top - rect.top,\n width: targetRect.width,\n height: targetRect.height,\n });\n },\n },\n h(\n _Column,\n { ...rest, columnRef: ref },\n h(UnitSelectionPopover, { position })\n )\n );\n}\n\nfunction _Column(props: Omit<ColumnProps, \"showUnitPopover\">) {\n const {\n data,\n unitComponent = UnitComponent,\n unconformityLabels = true,\n showLabels = true,\n width = 300,\n columnWidth = 150,\n className: baseClassName,\n showLabelColumn = true,\n mergeOverlappingSections = true,\n keyboardNavigation = false,\n columnRef,\n children,\n ...rest\n } = props;\n\n const darkMode = useDarkMode();\n const sectionGroups = useMemo(() => {\n let res = groupUnitsIntoSections(data);\n if (mergeOverlappingSections) {\n res = _mergeOverlappingSections(res);\n }\n return res;\n }, [data, mergeOverlappingSections]);\n\n const className = classNames(baseClassName, {\n \"dark-mode\": darkMode?.isEnabled ?? false,\n });\n\n // Clear unit selection on click outside of units, if we have a dispatch function\n const dispatch = useUnitSelectionDispatch();\n\n return h(\n \"div.column-container\",\n {\n className,\n onClick(evt) {\n dispatch?.(null, null, evt as any);\n },\n },\n h(MacrostratUnitsProvider, { units: data }, [\n h(\"div.column\", { ref: columnRef }, [\n h(\"div.age-axis-label\", \"Age (Ma)\"),\n h(\n \"div.main-column\",\n sectionGroups.map((group, i) => {\n const { section_id: id, units: data } = group;\n const lastGroup = sectionGroups[i - 1];\n return h([\n h.if(unconformityLabels)(Unconformity, {\n upperUnits: lastGroup?.units,\n lowerUnits: data,\n style: { width: showLabels ? columnWidth : width },\n }),\n h(`div.section`, { className: sectionClassName(group) }, [\n h(Section, {\n data,\n unitComponent,\n showLabels,\n width,\n columnWidth,\n showLabelColumn,\n ...rest,\n }),\n ]),\n ]);\n })\n ),\n h.if(keyboardNavigation)(UnitKeyboardNavigation, { units: data }),\n children,\n ]),\n ])\n );\n}\n"],"names":[],"version":3,"file":"column.97e31037.js.map"}
1
+ {"mappings":"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","sources":["packages/column-views/src/column.ts"],"sourcesContent":["import {\n ColumnAxisType,\n ColumnLayoutContext,\n ColumnProvider,\n} from \"@macrostrat/column-components\";\nimport { hyperStyled } from \"@macrostrat/hyper\";\nimport { useDarkMode } from \"@macrostrat/ui-components\";\nimport classNames from \"classnames\";\nimport { createRef, RefObject, useContext, useMemo, useState } from \"react\";\nimport styles from \"./column.module.sass\";\nimport {\n TrackedLabeledUnit,\n UnitKeyboardNavigation,\n UnitSelectionProvider,\n useUnitSelectionDispatch,\n} from \"./units\";\nimport { SectionInfo } from \"./section\";\nimport { RectBounds } from \"./units/boxes\";\nimport { UnitSelectionPopover } from \"./selection-popover\";\nimport { MacrostratUnitsProvider } from \"./store\";\nimport { IColumnProps, Section } from \"./section\";\nimport {\n _mergeOverlappingSections,\n ensureArray,\n groupUnitsIntoSections,\n} from \"./helpers\";\n\nconst h = hyperStyled(styles);\n\nexport function UnitComponent({ division, nColumns = 2, ...rest }) {\n const { width } = useContext(ColumnLayoutContext);\n\n //const nCols = Math.min(nColumns, division.overlappingUnits.length+1)\n //console.log(division);\n return h(TrackedLabeledUnit, {\n division,\n ...rest,\n width: division.overlappingUnits.length > 0 ? width / nColumns : width,\n x: (division.column * width) / nColumns,\n });\n}\n\nfunction Unconformity({ upperUnits = [], lowerUnits = [], style }) {\n if (upperUnits.length == 0 || lowerUnits.length == 0) {\n return null;\n }\n\n const ageGap = lowerUnits[0].t_age - upperUnits[upperUnits.length - 1].b_age;\n\n return h(\"div.unconformity\", { style }, [\n h(\"div.unconformity-text\", `${ageGap.toFixed(1)} Ma`),\n ]);\n}\n\nfunction sectionClassName(section: SectionInfo) {\n return `section-${ensureArray(section.section_id).join(\"-\")}`;\n}\n\nexport interface ColumnProps extends IColumnProps {\n unconformityLabels?: boolean;\n className?: string;\n mergeOverlappingSections?: boolean;\n showLabelColumn?: boolean;\n columnRef?: RefObject<HTMLElement>;\n keyboardNavigation?: boolean;\n showUnitPopover?: boolean;\n t_age?: number;\n b_age?: number;\n}\n\nexport function Column(props: ColumnProps) {\n const { showUnitPopover = false, ...rest } = props;\n const ref = createRef<HTMLElement>();\n // Selected item position\n const [position, setPosition] = useState<RectBounds | null>(null);\n\n if (!showUnitPopover) {\n return h(_Column, rest);\n }\n\n return h(\n UnitSelectionProvider,\n {\n onUnitSelected: (unit, target: SVGElement | HTMLElement | null) => {\n if (!showUnitPopover) return;\n\n if (unit == null) {\n setPosition(null);\n return;\n }\n const el: HTMLElement = ref.current;\n if (el == null || target == null) return;\n const rect = el.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n setPosition({\n x: targetRect.left - rect.left,\n y: targetRect.top - rect.top,\n width: targetRect.width,\n height: targetRect.height,\n });\n },\n },\n h(\n _Column,\n { ...rest, columnRef: ref },\n h(UnitSelectionPopover, { position })\n )\n );\n}\n\nfunction _Column(props: Omit<ColumnProps, \"showUnitPopover\">) {\n const {\n data,\n unitComponent = UnitComponent,\n unconformityLabels = true,\n showLabels = true,\n width = 300,\n columnWidth = 150,\n className: baseClassName,\n showLabelColumn = true,\n mergeOverlappingSections = true,\n keyboardNavigation = false,\n columnRef,\n children,\n ...rest\n } = props;\n\n const darkMode = useDarkMode();\n const sectionGroups = useMemo(() => {\n let res = groupUnitsIntoSections(data);\n if (mergeOverlappingSections) {\n res = _mergeOverlappingSections(res);\n }\n return res;\n }, [data, mergeOverlappingSections]);\n\n const className = classNames(baseClassName, {\n \"dark-mode\": darkMode?.isEnabled ?? false,\n });\n\n // Clear unit selection on click outside of units, if we have a dispatch function\n const dispatch = useUnitSelectionDispatch();\n\n return h(\n \"div.column-container\",\n {\n className,\n onClick(evt) {\n dispatch?.(null, null, evt as any);\n },\n },\n h(MacrostratUnitsProvider, { units: data }, [\n h(\"div.column\", { ref: columnRef }, [\n h(\"div.age-axis-label\", \"Age (Ma)\"),\n h(\n \"div.main-column\",\n sectionGroups.map((group, i) => {\n const { section_id: id, units: data } = group;\n const lastGroup = sectionGroups[i - 1];\n return h([\n h.if(unconformityLabels)(Unconformity, {\n upperUnits: lastGroup?.units,\n lowerUnits: data,\n style: { width: showLabels ? columnWidth : width },\n }),\n h(`div.section`, { className: sectionClassName(group) }, [\n h(Section, {\n data,\n unitComponent,\n showLabels,\n width,\n columnWidth,\n showLabelColumn,\n ...rest,\n }),\n ]),\n ]);\n })\n ),\n h.if(keyboardNavigation)(UnitKeyboardNavigation, { units: data }),\n children,\n ]),\n ])\n );\n}\n"],"names":[],"version":3,"file":"column.8dd26e1a.js.map"}
@@ -1,16 +1,41 @@
1
- .column-container_afc440 {
1
+ .column-container_afc440, body.light-mode .column-container_afc440 {
2
2
  --column-background-color: var(--background-color, #fff);
3
3
  --column-stroke-color: var(--text-color, #000);
4
4
  --column-text-color: var(--text-color, #000);
5
5
  }
6
6
 
7
7
  @media (prefers-color-scheme: dark) {
8
- .column-container_afc440 {
8
+ body:not(.light-mode) .column-container_afc440 {
9
9
  --column-background-color: var(--background-color, #000);
10
10
  --column-stroke-color: var(--text-color, #fff);
11
11
  --column-text-color: var(--text-color, #fff);
12
12
  color-scheme: dark;
13
+ color: var(--column-text-color);
13
14
  }
15
+
16
+ body:not(.light-mode) .column-container_afc440 .timescale {
17
+ color: #000;
18
+ }
19
+
20
+ body:not(.light-mode) .column-container_afc440 g.inner pattern image {
21
+ filter: invert(80%);
22
+ }
23
+ }
24
+
25
+ body.dark-mode .column-container_afc440 {
26
+ --column-background-color: var(--background-color, #000);
27
+ --column-stroke-color: var(--text-color, #fff);
28
+ --column-text-color: var(--text-color, #fff);
29
+ color-scheme: dark;
30
+ color: var(--column-text-color);
31
+ }
32
+
33
+ body.dark-mode .column-container_afc440 .timescale {
34
+ color: #000;
35
+ }
36
+
37
+ body.dark-mode .column-container_afc440 g.inner pattern image {
38
+ filter: invert(80%);
14
39
  }
15
40
 
16
41
  .column-container_afc440 .column {
@@ -123,16 +148,4 @@
123
148
  color: var(--column-stroke-color);
124
149
  transform: translateY(-.5em);
125
150
  }
126
-
127
- .column-container_afc440.dark-mode_afc440 {
128
- color: var(--column-text-color);
129
- }
130
-
131
- .column-container_afc440.dark-mode_afc440 .timescale {
132
- color: #000;
133
- }
134
-
135
- .column-container_afc440.dark-mode_afc440 g.inner pattern image {
136
- filter: invert(80%);
137
- }
138
- /*# sourceMappingURL=column.module.b5e18f0c.css.map */
151
+ /*# sourceMappingURL=column.module.039d872c.css.map */
@@ -0,0 +1 @@
1
+ {"mappings":"AAAA;;;;;;AAWE;EACE;;;;;;;;EAOI;;;;EAEA;;;;;AAIN;;;;;;;;AAOE;;;;AAIF;;;;;;;;;;AAUI;;;;;;;;;;AAUF;;;;;;AAMA;;;;;;;;;;;AASF;;;;;;;;;;;;AAUF;;;;AAGA;;;;AAIE;;;;AAGF;;;;;;;;;;;;;;;;;;;;;;;AAkBA;;;;AAGA;;;;;;;;AAOE;;;;;AAIF","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-color, #000)\n --column-text-color: var(--text-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-color, #fff)\n --column-text-color: var(--text-color, #fff)\n color-scheme: dark\n color: var(--column-text-color)\n :global\n .timescale\n color: #000\n g.inner pattern image\n filter: invert(80%)\n\nbody:global(.dark-mode) .column-container\n --column-background-color: var(--background-color, #000)\n --column-stroke-color: var(--text-color, #fff)\n --column-text-color: var(--text-color, #fff)\n color-scheme: dark\n color: var(--column-text-color)\n :global\n .timescale\n color: #000\n g.inner pattern image\n filter: invert(80%)\n\n.column-container :global\n .column\n display: flex\n flex-direction: row\n position: relative\n\n .age-axis-label\n writing-mode: vertical-lr\n transform: rotate(180deg)\n font-size: 12px\n text-align: center\n position: sticky\n top: 0\n max-height: 100vh\n\n .tick text\n text-anchor: middle\n font-weight: 400 !important\n transform: rotate(-90deg) translate(8px, -12px)\n\n rect.unit\n stroke: var(--column-stroke-color)\n stroke-width: 1px\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 margin-top: 3px\n padding: 2px\n padding-left: 3px\n line-height: 9px\n border-left: none !important\n\n.column-container :global g.height-range\n display: none\n\n.column-container :global .note-inner\n border: none\n\n.column-container :global .frame rect\n fill: transparent\n\n.column-container :global .labeled-unit .unit-overlay\n font-size: 10px\n font-style: italic\n display: flex\n align-items: center\n justify-content: center\n\n.column-container :global .labeled-unit .unit-overlay .unit-label\n display: block\n text-shadow: 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color)\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 div.section :global(.timescale)\n transform: translateY(0.5)\n\n.column-container :global .section .divisions .unit\n cursor: pointer\n\n.column-container :global rect.selection-overlay\n fill: rgba(255,0,0,0.5)\n\n.column-container :global div.timescale\n width: calc(6em + 4px)\n --timescale-level-size: 1.5em\n\n.unconformity\n height: 0px\n font-size: 10px\n font-style: italic\n text-align: center\n margin-left: calc(6em + 4px + 40px)\n\n.unconformity-text\n transform: translateY(-0.5em)\n width: var(--column-width)\n color: var(--column-stroke-color)\n"],"names":[],"version":3,"file":"column.module.039d872c.css.map"}
@@ -7,16 +7,13 @@ var $6cbea5de739af804$exports = {};
7
7
  $parcel$export($6cbea5de739af804$exports, "column-container", () => $6cbea5de739af804$export$e908cef0cccb98df, (v) => $6cbea5de739af804$export$e908cef0cccb98df = v);
8
8
  $parcel$export($6cbea5de739af804$exports, "unconformity", () => $6cbea5de739af804$export$7b4a6d978979c0fa, (v) => $6cbea5de739af804$export$7b4a6d978979c0fa = v);
9
9
  $parcel$export($6cbea5de739af804$exports, "unconformity-text", () => $6cbea5de739af804$export$925235908943319a, (v) => $6cbea5de739af804$export$925235908943319a = v);
10
- $parcel$export($6cbea5de739af804$exports, "dark-mode", () => $6cbea5de739af804$export$b02d999b8f804328, (v) => $6cbea5de739af804$export$b02d999b8f804328 = v);
11
10
  var $6cbea5de739af804$export$e908cef0cccb98df;
12
11
  var $6cbea5de739af804$export$7b4a6d978979c0fa;
13
12
  var $6cbea5de739af804$export$925235908943319a;
14
- var $6cbea5de739af804$export$b02d999b8f804328;
15
13
  $6cbea5de739af804$export$e908cef0cccb98df = "column-container_afc440";
16
14
  $6cbea5de739af804$export$7b4a6d978979c0fa = "unconformity_afc440";
17
15
  $6cbea5de739af804$export$925235908943319a = "unconformity-text_afc440";
18
- $6cbea5de739af804$export$b02d999b8f804328 = "dark-mode_afc440";
19
16
 
20
17
 
21
18
  export {$6cbea5de739af804$exports as default};
22
- //# sourceMappingURL=column.module.9b8ce99d.js.map
19
+ //# sourceMappingURL=column.module.e632868a.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;AAAA,IAAA;AACA,IAAA;AACA,IAAA;AAFA,4CAAqC;AACrC,4CAAiC;AACjC,4CAAsC","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-color, #000)\n --column-text-color: var(--text-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-color, #fff)\n --column-text-color: var(--text-color, #fff)\n color-scheme: dark\n color: var(--column-text-color)\n :global\n .timescale\n color: #000\n g.inner pattern image\n filter: invert(80%)\n\nbody:global(.dark-mode) .column-container\n --column-background-color: var(--background-color, #000)\n --column-stroke-color: var(--text-color, #fff)\n --column-text-color: var(--text-color, #fff)\n color-scheme: dark\n color: var(--column-text-color)\n :global\n .timescale\n color: #000\n g.inner pattern image\n filter: invert(80%)\n\n.column-container :global\n .column\n display: flex\n flex-direction: row\n position: relative\n\n .age-axis-label\n writing-mode: vertical-lr\n transform: rotate(180deg)\n font-size: 12px\n text-align: center\n position: sticky\n top: 0\n max-height: 100vh\n\n .tick text\n text-anchor: middle\n font-weight: 400 !important\n transform: rotate(-90deg) translate(8px, -12px)\n\n rect.unit\n stroke: var(--column-stroke-color)\n stroke-width: 1px\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 margin-top: 3px\n padding: 2px\n padding-left: 3px\n line-height: 9px\n border-left: none !important\n\n.column-container :global g.height-range\n display: none\n\n.column-container :global .note-inner\n border: none\n\n.column-container :global .frame rect\n fill: transparent\n\n.column-container :global .labeled-unit .unit-overlay\n font-size: 10px\n font-style: italic\n display: flex\n align-items: center\n justify-content: center\n\n.column-container :global .labeled-unit .unit-overlay .unit-label\n display: block\n text-shadow: 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color)\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 div.section :global(.timescale)\n transform: translateY(0.5)\n\n.column-container :global .section .divisions .unit\n cursor: pointer\n\n.column-container :global rect.selection-overlay\n fill: rgba(255,0,0,0.5)\n\n.column-container :global div.timescale\n width: calc(6em + 4px)\n --timescale-level-size: 1.5em\n\n.unconformity\n height: 0px\n font-size: 10px\n font-style: italic\n text-align: center\n margin-left: calc(6em + 4px + 40px)\n\n.unconformity-text\n transform: translateY(-0.5em)\n width: var(--column-width)\n color: var(--column-stroke-color)\n"],"names":[],"version":3,"file":"column.module.e632868a.js.map"}
package/dist/esm/index.js CHANGED
@@ -4,7 +4,7 @@ import {IsotopesDataset as $d5a3eba6c540ff58$export$c69bd0285aa5d775, IsotopesCo
4
4
  import {MacrostratColumnProvider as $29bf41d89292aad4$export$9e42f9b6e0d67c7d, MacrostratAPIProvider as $29bf41d89292aad4$export$3098013bc6cc316d} from "./providers.cd1e652f.js";
5
5
  import {extendDivision as $2c60de495788ce61$export$9f8a901d6936c6b6, preprocessUnits as $2c60de495788ce61$export$55543e159517d62d, groupUnitsIntoSections as $2c60de495788ce61$export$dfbd00399d639b4c, _mergeOverlappingSections as $2c60de495788ce61$export$ec445c47b6e5d2d, ensureArray as $2c60de495788ce61$export$d0c8ecbd4ed8940c} from "./helpers.8a03cfc7.js";
6
6
  import {ResizableMapFrame as $157bdadaa2bcfcf5$export$c4313db718750a5a, ColumnNavigatorMap as $157bdadaa2bcfcf5$export$d9144ecbc6b090c5, MeasurementsLayer as $347c34ac01fb689b$export$2254347cd20e6080, processTopoJSON as $347c34ac01fb689b$export$4ad66a3119e1afaa, ColumnFeatures as $347c34ac01fb689b$export$f177ff57c101017a, ColumnKeyboardNavigation as $347c34ac01fb689b$export$8c41dd563753848, useColumnData as $347c34ac01fb689b$export$6b70218db02fa4ce, Columns as $347c34ac01fb689b$export$f02cc02ad0e0bba3, ColumnCenters as $347c34ac01fb689b$export$4d8f6e6df85d9012, CurrentColumn as $347c34ac01fb689b$export$b9d912252344e099} from "./map.7aa26f17.js";
7
- import {UnitComponent as $2118f0266dc7e955$export$48a4cacf2b7a4441, Column as $2118f0266dc7e955$export$816b5d811295e6bc} from "./column.97e31037.js";
7
+ import {UnitComponent as $2118f0266dc7e955$export$48a4cacf2b7a4441, Column as $2118f0266dc7e955$export$816b5d811295e6bc} from "./column.8dd26e1a.js";
8
8
 
9
9
 
10
10
 
@@ -1,8 +1,8 @@
1
1
  import {CompositeUnitsColumn as $8c8238faa5cde49c$export$a6684360fef0406e} from "./composite.608a4ca2.js";
2
2
  import {AgeAxis as $43794af7643cdf40$export$25ce20521d0ab97d} from "./age-axis.64c509ee.js";
3
3
  import {MacrostratColumnProvider as $29bf41d89292aad4$export$9e42f9b6e0d67c7d} from "./providers.cd1e652f.js";
4
- import $7zu8d$columnmodule9b8ce99djs from "./column.module.9b8ce99d.js";
5
- import "./column.module.b5e18f0c.css";
4
+ import $7zu8d$columnmodulee632868ajs from "./column.module.e632868a.js";
5
+ import "./column.module.039d872c.css";
6
6
  import {useMemo as $7zu8d$useMemo} from "react";
7
7
  import {Timescale as $7zu8d$Timescale, TimescaleOrientation as $7zu8d$TimescaleOrientation} from "@macrostrat/timescale";
8
8
  import {ColumnSVG as $7zu8d$ColumnSVG} from "@macrostrat/column-components";
@@ -20,7 +20,7 @@ function $parcel$interopDefault(a) {
20
20
 
21
21
 
22
22
 
23
- const $7d0f52717c0de7e1$var$h = (0, $7zu8d$macrostrathyper).styled((0, ($parcel$interopDefault($7zu8d$columnmodule9b8ce99djs))));
23
+ const $7d0f52717c0de7e1$var$h = (0, $7zu8d$macrostrathyper).styled((0, ($parcel$interopDefault($7zu8d$columnmodulee632868ajs))));
24
24
  function $7d0f52717c0de7e1$export$6e2c8f0811a474ce(props) {
25
25
  // Section with "squishy" time scale
26
26
  const { data: data, range: _range, pixelScale: _pixelScale, unitComponent: unitComponent, showLabels: showLabels = true, targetUnitHeight: targetUnitHeight = 20, width: width = 300, columnWidth: columnWidth = 150, unitComponentProps: unitComponentProps, showLabelColumn: showLabelColumn = true } = props;
@@ -115,4 +115,4 @@ const $7d0f52717c0de7e1$var$timescaleLevels = [
115
115
 
116
116
 
117
117
  export {$7d0f52717c0de7e1$export$6e2c8f0811a474ce as Section};
118
- //# sourceMappingURL=section.2513d610.js.map
118
+ //# sourceMappingURL=section.cc1b1100.js.map
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;;;AASA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,wEAAK;AAuBrB,SAAS,0CAAQ,KAAmB;IACzC,oCAAoC;IACpC,MAAM,QACJ,IAAI,EACJ,OAAO,MAAM,EACb,YAAY,WAAW,iBACvB,aAAa,cACb,aAAa,wBACb,mBAAmB,WACnB,QAAQ,kBACR,cAAc,yBACd,kBAAkB,mBAClB,kBAAkB,MACnB,GAAG;IAEJ,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,IAAM,EAAE,KAAK;IACjD,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,IAAM,EAAE,KAAK;IAEjD,MAAM,QAAQ,CAAA,GAAA,cAAM,EAAE;QACpB,IAAI,UAAU,MACZ,OAAO;YAAC;YAAO;SAAM;QAEvB,OAAO;IACT,GAAG;QAAC;QAAQ;QAAO;KAAM;IAEzB,MAAM,OAAO,CAAA,GAAA,cAAM,EAAE,IAAM,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE;QAAC;KAAM;IAEvD,MAAM,aAAa,CAAA,GAAA,cAAM,EAAE;QACzB,IAAI,eAAe,MAAM,OAAO;QAChC,MAAM,eAAe,mBAAmB,KAAK,MAAM;QACnD,OAAO,KAAK,IAAI,CAAC,eAAe;IAClC,GAAG;QAAC;QAAa;QAAkB,KAAK,MAAM;QAAE;KAAK;IAErD,MAAM,SAAS,CAAA,GAAA,cAAM,EAAE,IAAM,OAAO,YAAY;QAAC;QAAM;KAAW;IAElE;;;GAGC,GACD,MAAM,sBAAsB,CAAA,GAAA,cAAM,EAAE;QAClC,OAAO;YACL,GAAG,kBAAkB;YACrB,UAAU,KAAK,GAAG,CAChB,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,IAAM,EAAE,MAAM,KAAK,GACzC,oBAAoB,YAAY;QAEpC;IACF,GAAG;QAAC;QAAM;KAAmB;IAE7B,OAAO,wBACL,CAAA,GAAA,yCAAuB,GACvB;QACE,WAAW;eACX;QACA,gBAAgB;IAClB,GACA;QACE,wBAAE,CAAA,GAAA,yCAAM,GAAG;YACT,OAAO;YACP,SAAS;YACT,UAAU;YACV,WAAW;QACb;QACA,wBAAE,2BAA2B;YAAE,OAAO;gBAAE,WAAW,CAAC,IAAI,CAAC;YAAC;QAAE,GAAG;YAC7D,wBAAE,CAAA,GAAA,gBAAQ,GAAG;gBACX,aAAa,CAAA,GAAA,2BAAmB,EAAE,QAAQ;gBAC1C,QAAQ;gBACR,QAAQ;gBACR,kBAAkB;gBAClB,aAAa;gBACb,UAAU;YACZ;SACD;QACD,wBACE,CAAA,GAAA,gBAAQ,GACR;YACE,YAAY,aAAa,QAAQ;YACjC,cAAc;YACd,aAAa;YACb,UAAU;YACV,aAAa;QACf,GACA,wBAAE,CAAA,GAAA,yCAAmB,GAAG;YACtB,iBAAiB;YACjB,OAAO,aAAa,QAAQ;yBAC5B;YACA,aAAa;wBACb;2BACA;YACA,oBAAoB;QACtB;KAEH;AAEL;AAEA,MAAM,wCAAkB;IAAC;IAAG;CAAE","sources":["packages/column-views/src/section.ts"],"sourcesContent":["import { CompositeUnitsColumn, IUnit } from \"./units\";\nimport { ReactNode, useMemo } from \"react\";\nimport { AgeAxis } from \"./age-axis\";\nimport { Timescale, TimescaleOrientation } from \"@macrostrat/timescale\";\nimport { ColumnSVG } from \"@macrostrat/column-components\";\nimport { MacrostratColumnProvider } from \"./index\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./column.module.sass\";\n\nconst h = hyper.styled(styles);\n\nexport interface SectionInfo {\n section_id: number | number[];\n t_age: number;\n b_age: number;\n units: IUnit[];\n}\n\nexport interface IColumnProps {\n data: IUnit[];\n pixelScale?: number;\n range?: [number, number];\n unitComponent?: React.FunctionComponent<any>;\n unitComponentProps?: any;\n showLabels?: boolean;\n width?: number;\n columnWidth?: number;\n targetUnitHeight?: number;\n children?: ReactNode;\n showLabelColumn?: boolean;\n}\n\nexport function Section(props: IColumnProps) {\n // Section with \"squishy\" time scale\n const {\n data,\n range: _range,\n pixelScale: _pixelScale,\n unitComponent,\n showLabels = true,\n targetUnitHeight = 20,\n width = 300,\n columnWidth = 150,\n unitComponentProps,\n showLabelColumn = true,\n } = props;\n\n const b_age = Math.max(...data.map((d) => d.b_age));\n const t_age = Math.min(...data.map((d) => d.t_age));\n\n const range = useMemo(() => {\n if (_range == null) {\n return [b_age, t_age];\n }\n return _range;\n }, [_range, b_age, t_age]);\n\n const dAge = useMemo(() => range[0] - range[1], [range]);\n\n const pixelScale = useMemo(() => {\n if (_pixelScale != null) return _pixelScale;\n const targetHeight = targetUnitHeight * data.length;\n return Math.ceil(targetHeight / dAge);\n }, [_pixelScale, targetUnitHeight, data.length, dAge]);\n\n const height = useMemo(() => dAge * pixelScale, [dAge, pixelScale]);\n\n /** Ensure that we can arrange units into the maximum number\n * of columns defined by unitComponentProps, but that we don't\n * use more than necessary.\n */\n const _unitComponentProps = useMemo(() => {\n return {\n ...unitComponentProps,\n nColumns: Math.min(\n Math.max(...data.map((d) => d.column)) + 1,\n unitComponentProps?.nColumns ?? 2\n ),\n };\n }, [data, unitComponentProps]);\n\n return h(\n MacrostratColumnProvider,\n {\n divisions: data,\n range,\n pixelsPerMeter: pixelScale, // Actually pixels per myr\n },\n [\n h(AgeAxis, {\n width: 20,\n padding: 0,\n paddingV: 10,\n showLabel: false,\n }),\n h(\"div.timescale-container\", { style: { marginTop: `10px` } }, [\n h(Timescale, {\n orientation: TimescaleOrientation.VERTICAL,\n length: height,\n levels: timescaleLevels as [number, number],\n absoluteAgeScale: true,\n showAgeAxis: false,\n ageRange: range as [number, number],\n }),\n ]),\n h(\n ColumnSVG,\n {\n innerWidth: showLabels ? width : columnWidth,\n paddingRight: 1,\n paddingLeft: 1,\n paddingV: 10,\n innerHeight: height,\n },\n h(CompositeUnitsColumn, {\n showLabelColumn: showLabelColumn,\n width: showLabels ? width : columnWidth,\n columnWidth,\n gutterWidth: 5,\n showLabels,\n unitComponent,\n unitComponentProps: _unitComponentProps,\n })\n ),\n ]\n );\n}\n\nconst timescaleLevels = [2, 5];\n"],"names":[],"version":3,"file":"section.2513d610.js.map"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;AASA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,wEAAK;AAuBrB,SAAS,0CAAQ,KAAmB;IACzC,oCAAoC;IACpC,MAAM,QACJ,IAAI,EACJ,OAAO,MAAM,EACb,YAAY,WAAW,iBACvB,aAAa,cACb,aAAa,wBACb,mBAAmB,WACnB,QAAQ,kBACR,cAAc,yBACd,kBAAkB,mBAClB,kBAAkB,MACnB,GAAG;IAEJ,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,IAAM,EAAE,KAAK;IACjD,MAAM,QAAQ,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,IAAM,EAAE,KAAK;IAEjD,MAAM,QAAQ,CAAA,GAAA,cAAM,EAAE;QACpB,IAAI,UAAU,MACZ,OAAO;YAAC;YAAO;SAAM;QAEvB,OAAO;IACT,GAAG;QAAC;QAAQ;QAAO;KAAM;IAEzB,MAAM,OAAO,CAAA,GAAA,cAAM,EAAE,IAAM,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE;QAAC;KAAM;IAEvD,MAAM,aAAa,CAAA,GAAA,cAAM,EAAE;QACzB,IAAI,eAAe,MAAM,OAAO;QAChC,MAAM,eAAe,mBAAmB,KAAK,MAAM;QACnD,OAAO,KAAK,IAAI,CAAC,eAAe;IAClC,GAAG;QAAC;QAAa;QAAkB,KAAK,MAAM;QAAE;KAAK;IAErD,MAAM,SAAS,CAAA,GAAA,cAAM,EAAE,IAAM,OAAO,YAAY;QAAC;QAAM;KAAW;IAElE;;;GAGC,GACD,MAAM,sBAAsB,CAAA,GAAA,cAAM,EAAE;QAClC,OAAO;YACL,GAAG,kBAAkB;YACrB,UAAU,KAAK,GAAG,CAChB,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,IAAM,EAAE,MAAM,KAAK,GACzC,oBAAoB,YAAY;QAEpC;IACF,GAAG;QAAC;QAAM;KAAmB;IAE7B,OAAO,wBACL,CAAA,GAAA,yCAAuB,GACvB;QACE,WAAW;eACX;QACA,gBAAgB;IAClB,GACA;QACE,wBAAE,CAAA,GAAA,yCAAM,GAAG;YACT,OAAO;YACP,SAAS;YACT,UAAU;YACV,WAAW;QACb;QACA,wBAAE,2BAA2B;YAAE,OAAO;gBAAE,WAAW,CAAC,IAAI,CAAC;YAAC;QAAE,GAAG;YAC7D,wBAAE,CAAA,GAAA,gBAAQ,GAAG;gBACX,aAAa,CAAA,GAAA,2BAAmB,EAAE,QAAQ;gBAC1C,QAAQ;gBACR,QAAQ;gBACR,kBAAkB;gBAClB,aAAa;gBACb,UAAU;YACZ;SACD;QACD,wBACE,CAAA,GAAA,gBAAQ,GACR;YACE,YAAY,aAAa,QAAQ;YACjC,cAAc;YACd,aAAa;YACb,UAAU;YACV,aAAa;QACf,GACA,wBAAE,CAAA,GAAA,yCAAmB,GAAG;YACtB,iBAAiB;YACjB,OAAO,aAAa,QAAQ;yBAC5B;YACA,aAAa;wBACb;2BACA;YACA,oBAAoB;QACtB;KAEH;AAEL;AAEA,MAAM,wCAAkB;IAAC;IAAG;CAAE","sources":["packages/column-views/src/section.ts"],"sourcesContent":["import { CompositeUnitsColumn, IUnit } from \"./units\";\nimport { ReactNode, useMemo } from \"react\";\nimport { AgeAxis } from \"./age-axis\";\nimport { Timescale, TimescaleOrientation } from \"@macrostrat/timescale\";\nimport { ColumnSVG } from \"@macrostrat/column-components\";\nimport { MacrostratColumnProvider } from \"./index\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./column.module.sass\";\n\nconst h = hyper.styled(styles);\n\nexport interface SectionInfo {\n section_id: number | number[];\n t_age: number;\n b_age: number;\n units: IUnit[];\n}\n\nexport interface IColumnProps {\n data: IUnit[];\n pixelScale?: number;\n range?: [number, number];\n unitComponent?: React.FunctionComponent<any>;\n unitComponentProps?: any;\n showLabels?: boolean;\n width?: number;\n columnWidth?: number;\n targetUnitHeight?: number;\n children?: ReactNode;\n showLabelColumn?: boolean;\n}\n\nexport function Section(props: IColumnProps) {\n // Section with \"squishy\" time scale\n const {\n data,\n range: _range,\n pixelScale: _pixelScale,\n unitComponent,\n showLabels = true,\n targetUnitHeight = 20,\n width = 300,\n columnWidth = 150,\n unitComponentProps,\n showLabelColumn = true,\n } = props;\n\n const b_age = Math.max(...data.map((d) => d.b_age));\n const t_age = Math.min(...data.map((d) => d.t_age));\n\n const range = useMemo(() => {\n if (_range == null) {\n return [b_age, t_age];\n }\n return _range;\n }, [_range, b_age, t_age]);\n\n const dAge = useMemo(() => range[0] - range[1], [range]);\n\n const pixelScale = useMemo(() => {\n if (_pixelScale != null) return _pixelScale;\n const targetHeight = targetUnitHeight * data.length;\n return Math.ceil(targetHeight / dAge);\n }, [_pixelScale, targetUnitHeight, data.length, dAge]);\n\n const height = useMemo(() => dAge * pixelScale, [dAge, pixelScale]);\n\n /** Ensure that we can arrange units into the maximum number\n * of columns defined by unitComponentProps, but that we don't\n * use more than necessary.\n */\n const _unitComponentProps = useMemo(() => {\n return {\n ...unitComponentProps,\n nColumns: Math.min(\n Math.max(...data.map((d) => d.column)) + 1,\n unitComponentProps?.nColumns ?? 2\n ),\n };\n }, [data, unitComponentProps]);\n\n return h(\n MacrostratColumnProvider,\n {\n divisions: data,\n range,\n pixelsPerMeter: pixelScale, // Actually pixels per myr\n },\n [\n h(AgeAxis, {\n width: 20,\n padding: 0,\n paddingV: 10,\n showLabel: false,\n }),\n h(\"div.timescale-container\", { style: { marginTop: `10px` } }, [\n h(Timescale, {\n orientation: TimescaleOrientation.VERTICAL,\n length: height,\n levels: timescaleLevels as [number, number],\n absoluteAgeScale: true,\n showAgeAxis: false,\n ageRange: range as [number, number],\n }),\n ]),\n h(\n ColumnSVG,\n {\n innerWidth: showLabels ? width : columnWidth,\n paddingRight: 1,\n paddingLeft: 1,\n paddingV: 10,\n innerHeight: height,\n },\n h(CompositeUnitsColumn, {\n showLabelColumn: showLabelColumn,\n width: showLabels ? width : columnWidth,\n columnWidth,\n gutterWidth: 5,\n showLabels,\n unitComponent,\n unitComponentProps: _unitComponentProps,\n })\n ),\n ]\n );\n}\n\nconst timescaleLevels = [2, 5];\n"],"names":[],"version":3,"file":"section.cc1b1100.js.map"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@macrostrat/column-views",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Data views for Macrostrat stratigraphic columns",
5
5
  "type": "module",
6
6
  "source": "src/index.ts",
@@ -30,13 +30,13 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "@macrostrat/api-types": "^1.0.0",
33
- "@macrostrat/column-components": "^1.0.2",
33
+ "@macrostrat/column-components": "^1.0.3",
34
34
  "@macrostrat/data-components": "^0.0.6",
35
35
  "@macrostrat/hyper": "^3.0.6",
36
36
  "@macrostrat/stratigraphy-utils": "^1.0.0",
37
37
  "@macrostrat/svg-map-components": "^1.0.3",
38
38
  "@macrostrat/timescale": "^2.1.1",
39
- "@macrostrat/ui-components": "^4.1.1",
39
+ "@macrostrat/ui-components": "^4.1.2",
40
40
  "@types/chroma-js": "^3",
41
41
  "@types/d3-format": "^3",
42
42
  "@types/d3-geo": "^3",
@@ -1,14 +1,37 @@
1
- .column-container
1
+ .column-container, body:global(.light-mode) .column-container
2
2
  --column-background-color: var(--background-color, #fff)
3
3
  --column-stroke-color: var(--text-color, #000)
4
4
  --column-text-color: var(--text-color, #000)
5
5
 
6
+ /* We have to duplicate the dark mode styles here
7
+ because we want to set them either if the preferred
8
+ color scheme is dark OR if dark mode is explicitly enabled.
9
+ If dark mode is explicitly enabled, we want to override
10
+ the media query. */
6
11
  @media (prefers-color-scheme: dark)
7
- .column-container
12
+ body:not(:global(.light-mode)) .column-container
8
13
  --column-background-color: var(--background-color, #000)
9
14
  --column-stroke-color: var(--text-color, #fff)
10
15
  --column-text-color: var(--text-color, #fff)
11
16
  color-scheme: dark
17
+ color: var(--column-text-color)
18
+ :global
19
+ .timescale
20
+ color: #000
21
+ g.inner pattern image
22
+ filter: invert(80%)
23
+
24
+ body:global(.dark-mode) .column-container
25
+ --column-background-color: var(--background-color, #000)
26
+ --column-stroke-color: var(--text-color, #fff)
27
+ --column-text-color: var(--text-color, #fff)
28
+ color-scheme: dark
29
+ color: var(--column-text-color)
30
+ :global
31
+ .timescale
32
+ color: #000
33
+ g.inner pattern image
34
+ filter: invert(80%)
12
35
 
13
36
  .column-container :global
14
37
  .column
@@ -102,13 +125,3 @@
102
125
  transform: translateY(-0.5em)
103
126
  width: var(--column-width)
104
127
  color: var(--column-stroke-color)
105
-
106
- .column-container.dark-mode :global
107
- color: var(--column-text-color)
108
-
109
- .column-container.dark-mode :global .timescale
110
- color: #000
111
-
112
- .column-container.dark-mode :global g.inner pattern image
113
- filter: invert(80%)
114
-
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;;AAAA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AAHA,4CAAqC;AACrC,4CAAiC;AACjC,4CAAsC;AACtC,4CAA8B","sources":["packages/column-views/src/column.module.sass"],"sourcesContent":[".column-container\n --column-background-color: var(--background-color, #fff)\n --column-stroke-color: var(--text-color, #000)\n --column-text-color: var(--text-color, #000)\n\n@media (prefers-color-scheme: dark)\n .column-container\n --column-background-color: var(--background-color, #000)\n --column-stroke-color: var(--text-color, #fff)\n --column-text-color: var(--text-color, #fff)\n color-scheme: dark\n\n.column-container :global\n .column\n display: flex\n flex-direction: row\n position: relative\n\n .age-axis-label\n writing-mode: vertical-lr\n transform: rotate(180deg)\n font-size: 12px\n text-align: center\n position: sticky\n top: 0\n max-height: 100vh\n\n .tick text\n text-anchor: middle\n font-weight: 400 !important\n transform: rotate(-90deg) translate(8px, -12px)\n\n rect.unit\n stroke: var(--column-stroke-color)\n stroke-width: 1px\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 margin-top: 3px\n padding: 2px\n padding-left: 3px\n line-height: 9px\n border-left: none !important\n\n.column-container :global g.height-range\n display: none\n\n.column-container :global .note-inner\n border: none\n\n.column-container :global .frame rect\n fill: transparent\n\n.column-container :global .labeled-unit .unit-overlay\n font-size: 10px\n font-style: italic\n display: flex\n align-items: center\n justify-content: center\n\n.column-container :global .labeled-unit .unit-overlay .unit-label\n display: block\n text-shadow: 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color)\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 div.section :global(.timescale)\n transform: translateY(0.5)\n\n.column-container :global .section .divisions .unit\n cursor: pointer\n\n.column-container :global rect.selection-overlay\n fill: rgba(255,0,0,0.5)\n\n.column-container :global div.timescale\n width: calc(6em + 4px)\n --timescale-level-size: 1.5em\n\n.unconformity\n height: 0px\n font-size: 10px\n font-style: italic\n text-align: center\n margin-left: calc(6em + 4px + 40px)\n\n.unconformity-text\n transform: translateY(-0.5em)\n width: var(--column-width)\n color: var(--column-stroke-color)\n\n.column-container.dark-mode :global\n color: var(--column-text-color)\n\n.column-container.dark-mode :global .timescale\n color: #000\n\n.column-container.dark-mode :global g.inner pattern image\n filter: invert(80%)\n\n"],"names":[],"version":3,"file":"column.module.9b8ce99d.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":"AAAA;;;;;;AAKA;EACE;;;;;;;;AAQE;;;;;;AAME;;;;;;;;;;AAUA;;;;;;AAMJ;;;;;;;;;;;AASA;;;;AAIA;;;;;;;;AAOA;;;;AAGA;;;;AAGA;;;;AAIA;;;;;;;;AAMF;;;;;AAIA;;;;;AAIA;;;;;AAIE;;;;AAGA;;;;AAGA;;;;AAGF;;;;;AAKE;;;;;;;;;;;;;;AAWA;;;;AAGA","sources":["packages/column-views/src/column.module.sass"],"sourcesContent":[".column-container\n --column-background-color: var(--background-color, #fff)\n --column-stroke-color: var(--text-color, #000)\n --column-text-color: var(--text-color, #000)\n\n@media (prefers-color-scheme: dark)\n .column-container\n --column-background-color: var(--background-color, #000)\n --column-stroke-color: var(--text-color, #fff)\n --column-text-color: var(--text-color, #fff)\n color-scheme: dark\n\n.column-container :global\n .column\n display: flex\n flex-direction: row\n position: relative\n\n .age-axis-label\n writing-mode: vertical-lr\n transform: rotate(180deg)\n font-size: 12px\n text-align: center\n position: sticky\n top: 0\n max-height: 100vh\n\n .tick text\n text-anchor: middle\n font-weight: 400 !important\n transform: rotate(-90deg) translate(8px, -12px)\n\n rect.unit\n stroke: var(--column-stroke-color)\n stroke-width: 1px\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 margin-top: 3px\n padding: 2px\n padding-left: 3px\n line-height: 9px\n border-left: none !important\n\n.column-container :global g.height-range\n display: none\n\n.column-container :global .note-inner\n border: none\n\n.column-container :global .frame rect\n fill: transparent\n\n.column-container :global .labeled-unit .unit-overlay\n font-size: 10px\n font-style: italic\n display: flex\n align-items: center\n justify-content: center\n\n.column-container :global .labeled-unit .unit-overlay .unit-label\n display: block\n text-shadow: 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color), 0px 0px 4px var(--column-background-color)\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 div.section :global(.timescale)\n transform: translateY(0.5)\n\n.column-container :global .section .divisions .unit\n cursor: pointer\n\n.column-container :global rect.selection-overlay\n fill: rgba(255,0,0,0.5)\n\n.column-container :global div.timescale\n width: calc(6em + 4px)\n --timescale-level-size: 1.5em\n\n.unconformity\n height: 0px\n font-size: 10px\n font-style: italic\n text-align: center\n margin-left: calc(6em + 4px + 40px)\n\n.unconformity-text\n transform: translateY(-0.5em)\n width: var(--column-width)\n color: var(--column-stroke-color)\n\n.column-container.dark-mode :global\n color: var(--column-text-color)\n\n.column-container.dark-mode :global .timescale\n color: #000\n\n.column-container.dark-mode :global g.inner pattern image\n filter: invert(80%)\n\n"],"names":[],"version":3,"file":"column.module.b5e18f0c.css.map"}